diff options
author | Claude Bing <cbing@cybernetics.com> | 2021-11-16 09:21:39 -0500 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2021-11-16 09:11:31 -0800 |
commit | 265bab83c9acbfa97117103dd5c35bbd8a9814d6 (patch) | |
tree | 1c7aeaec30a0b7f110e1d6934695656410212baa /meta-oe/recipes-devtools/php | |
parent | ab1057d1b5e4c68ef54123ba053f2441dab1021f (diff) | |
download | meta-openembedded-265bab83c9acbfa97117103dd5c35bbd8a9814d6.tar.gz |
php: use qemu wrapper to build minilua
minilua, by default, is compiled by the host machine as a
dependency for compiling the JIT/opcache extension. To
successfully cross-compile, this needs to be run under QEMU to
match the target architecture.
According to the [RFC](https://wiki.php.net/rfc/jit), only
x86 and x86_64 targets are supported.
Signed-off-by: Ashley Cox <ashleyc@cybernetics.com>
Signed-off-by: Claude Bing <cbing@cybernetics.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe/recipes-devtools/php')
3 files changed, 25 insertions, 23 deletions
diff --git a/meta-oe/recipes-devtools/php/php/0011-use-qemuwrapper-for-minilua.patch b/meta-oe/recipes-devtools/php/php/0011-use-qemuwrapper-for-minilua.patch new file mode 100644 index 0000000000..892a0460cf --- /dev/null +++ b/meta-oe/recipes-devtools/php/php/0011-use-qemuwrapper-for-minilua.patch | |||
@@ -0,0 +1,11 @@ | |||
1 | --- a/ext/opcache/jit/Makefile.frag 2021-10-19 06:34:32.000000000 -0400 | ||
2 | +++ b/ext/opcache/jit/Makefile.frag 2021-11-15 15:10:41.437289836 -0500 | ||
3 | @@ -3,7 +3,7 @@ $(builddir)/minilua: $(srcdir)/jit/dynas | ||
4 | $(CC) $(srcdir)/jit/dynasm/minilua.c -lm -o $@ | ||
5 | |||
6 | $(builddir)/jit/zend_jit_x86.c: $(srcdir)/jit/zend_jit_x86.dasc $(srcdir)/jit/dynasm/*.lua $(builddir)/minilua | ||
7 | - $(builddir)/minilua $(srcdir)/jit/dynasm/dynasm.lua $(DASM_FLAGS) -o $@ $(srcdir)/jit/zend_jit_x86.dasc | ||
8 | + $(top_srcdir)/qemuwrapper $(builddir)/minilua $(srcdir)/jit/dynasm/dynasm.lua $(DASM_FLAGS) -o $@ $(srcdir)/jit/zend_jit_x86.dasc | ||
9 | |||
10 | $(builddir)/jit/zend_jit.lo: \ | ||
11 | $(builddir)/jit/zend_jit_x86.c \ | ||
diff --git a/meta-oe/recipes-devtools/php/php/1010-Fix-opcache-jit-minilua-compiling.patch b/meta-oe/recipes-devtools/php/php/1010-Fix-opcache-jit-minilua-compiling.patch deleted file mode 100644 index 6f134fabb8..0000000000 --- a/meta-oe/recipes-devtools/php/php/1010-Fix-opcache-jit-minilua-compiling.patch +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | From 73ea1d44c1e6b063bfa02e12919ec8a9de3709d8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Heimpold <mhei@heimpold.de> | ||
3 | Date: Wed, 3 Feb 2021 22:51:34 +0100 | ||
4 | Subject: [PATCH] Fix opcache jit minilua compiling | ||
5 | |||
6 | Signed-off-by: Michael Heimpold <mhei@heimpold.de> | ||
7 | --- | ||
8 | ext/opcache/jit/Makefile.frag | 2 +- | ||
9 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
10 | |||
11 | --- a/ext/opcache/jit/Makefile.frag | ||
12 | +++ b/ext/opcache/jit/Makefile.frag | ||
13 | @@ -1,6 +1,6 @@ | ||
14 | |||
15 | $(builddir)/minilua: $(srcdir)/jit/dynasm/minilua.c | ||
16 | - $(CC) $(srcdir)/jit/dynasm/minilua.c -lm -o $@ | ||
17 | + $(HOSTCC) $(srcdir)/jit/dynasm/minilua.c -lm -o $@ | ||
18 | |||
19 | $(builddir)/jit/zend_jit_x86.c: $(srcdir)/jit/zend_jit_x86.dasc $(srcdir)/jit/dynasm/*.lua $(builddir)/minilua | ||
20 | $(builddir)/minilua $(srcdir)/jit/dynasm/dynasm.lua $(DASM_FLAGS) -o $@ $(srcdir)/jit/zend_jit_x86.dasc | ||
diff --git a/meta-oe/recipes-devtools/php/php_8.0.12.bb b/meta-oe/recipes-devtools/php/php_8.0.12.bb index 8d24c187ef..4f484179cc 100644 --- a/meta-oe/recipes-devtools/php/php_8.0.12.bb +++ b/meta-oe/recipes-devtools/php/php_8.0.12.bb | |||
@@ -6,7 +6,7 @@ LICENSE = "PHP-3.0" | |||
6 | LIC_FILES_CHKSUM = "file://LICENSE;md5=99532e0f6620bc9bca34f12fadaee33c" | 6 | LIC_FILES_CHKSUM = "file://LICENSE;md5=99532e0f6620bc9bca34f12fadaee33c" |
7 | 7 | ||
8 | BBCLASSEXTEND = "native" | 8 | BBCLASSEXTEND = "native" |
9 | DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native" | 9 | DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native qemu-native" |
10 | DEPENDS:class-native = "zlib-native libxml2-native" | 10 | DEPENDS:class-native = "zlib-native libxml2-native" |
11 | 11 | ||
12 | PHP_MAJOR_VERSION = "${@d.getVar('PV').split('.')[0]}" | 12 | PHP_MAJOR_VERSION = "${@d.getVar('PV').split('.')[0]}" |
@@ -25,7 +25,7 @@ SRC_URI:append:class-target = " \ | |||
25 | file://0006-ext-phar-Makefile.frag-Fix-phar-packaging.patch \ | 25 | file://0006-ext-phar-Makefile.frag-Fix-phar-packaging.patch \ |
26 | file://0007-sapi-cli-config.m4-fix-build-directory.patch \ | 26 | file://0007-sapi-cli-config.m4-fix-build-directory.patch \ |
27 | file://0008-ext-imap-config.m4-fix-include-paths.patch \ | 27 | file://0008-ext-imap-config.m4-fix-include-paths.patch \ |
28 | file://1010-Fix-opcache-jit-minilua-compiling.patch \ | 28 | file://0011-use-qemuwrapper-for-minilua.patch \ |
29 | file://php-fpm.conf \ | 29 | file://php-fpm.conf \ |
30 | file://php-fpm-apache.conf \ | 30 | file://php-fpm-apache.conf \ |
31 | file://70_mod_php${PHP_MAJOR_VERSION}.conf \ | 31 | file://70_mod_php${PHP_MAJOR_VERSION}.conf \ |
@@ -36,7 +36,7 @@ S = "${WORKDIR}/php-${PV}" | |||
36 | SRC_URI[sha256sum] = "b4886db1df322dc8fb128d8b34ae7e94f6fc682ecb29ff4f5a591d4de9feadbf" | 36 | SRC_URI[sha256sum] = "b4886db1df322dc8fb128d8b34ae7e94f6fc682ecb29ff4f5a591d4de9feadbf" |
37 | 37 | ||
38 | 38 | ||
39 | inherit autotools pkgconfig python3native gettext | 39 | inherit autotools pkgconfig python3native gettext qemu |
40 | 40 | ||
41 | # phpize is not scanned for absolute paths by default (but php-config is). | 41 | # phpize is not scanned for absolute paths by default (but php-config is). |
42 | # | 42 | # |
@@ -128,6 +128,17 @@ do_configure:prepend () { | |||
128 | find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_SBINDIR_NATIVE}/httpd!' | 128 | find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_SBINDIR_NATIVE}/httpd!' |
129 | } | 129 | } |
130 | 130 | ||
131 | do_configure:prepend:class-target () { | ||
132 | # Write out a qemu wrapper that will be used by the makefile | ||
133 | # so that it can run minilua through that. | ||
134 | qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" | ||
135 | cat > ${S}/qemuwrapper << EOF | ||
136 | #!/bin/sh | ||
137 | $qemu_binary "\$@" | ||
138 | EOF | ||
139 | chmod +x ${S}/qemuwrapper | ||
140 | } | ||
141 | |||
131 | do_configure:append() { | 142 | do_configure:append() { |
132 | # No, libtool, we really don't want rpath set... | 143 | # No, libtool, we really don't want rpath set... |
133 | sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' ${HOST_SYS}-libtool | 144 | sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' ${HOST_SYS}-libtool |