summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools/php/php_8.4.15.bb
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-devtools/php/php_8.4.15.bb')
-rw-r--r--meta-oe/recipes-devtools/php/php_8.4.15.bb294
1 files changed, 294 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/php/php_8.4.15.bb b/meta-oe/recipes-devtools/php/php_8.4.15.bb
new file mode 100644
index 0000000000..629eef0519
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php_8.4.15.bb
@@ -0,0 +1,294 @@
1SUMMARY = "A server-side, HTML-embedded scripting language"
2HOMEPAGE = "https://www.php.net"
3SECTION = "console/network"
4
5LICENSE = "PHP-3.0"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=fd469cce1a919f0cc95bab7afb28d19d"
7
8BBCLASSEXTEND = "native"
9DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native"
10DEPENDS:append:libc-musl = " libucontext"
11DEPENDS:class-native = "zlib-native libxml2-native"
12
13PHP_MAJOR_VERSION = "${@d.getVar('PV').split('.')[0]}"
14
15SRC_URI = "http://php.net/distributions/php-${PV}.tar.bz2 \
16 file://0001-configure.ac-don-t-include-build-libtool.m4.patch \
17 file://0002-ext-phar-Makefile.frag-Fix-phar-packaging.patch \
18 "
19
20SRC_URI:append:class-target = " \
21 file://0003-iconv-fix-detection.patch \
22 file://0004-pear-fix-Makefile.frag-for-Yocto.patch \
23 file://0005-explicitly-not-generate-phar.php-during-cross-compil.patch \
24 file://php-fpm.conf \
25 file://php-fpm-apache.conf \
26 file://70_mod_php${PHP_MAJOR_VERSION}.conf \
27 file://php-fpm.service \
28 "
29
30UPSTREAM_CHECK_URI = "https://github.com/php/php-src/releases"
31UPSTREAM_CHECK_REGEX = "releases/tag/php-(?P<pver>\d+(\.\d+)+)"
32
33S = "${UNPACKDIR}/php-${PV}"
34
35SRC_URI[sha256sum] = "b7155bdd498d60d63e4bc320dc224863976d31b5bd9339699726c961255a3197"
36
37CVE_STATUS_GROUPS += "CVE_STATUS_PHP"
38CVE_STATUS_PHP[status] = "fixed-version: The name of this product is exactly the same as github.com/emlog/emlog. CVE can be safely ignored."
39CVE_STATUS_PHP = " \
40 CVE-2007-2728 \
41 CVE-2007-3205 \
42 CVE-2007-4596 \
43"
44CVE_STATUS[CVE-2022-4900] = "cpe-incorrect: The current version (8.2.20) is not affected."
45CVE_STATUS[CVE-2024-3566] = "not-applicable-platform: Issue only applies on Windows"
46
47inherit autotools pkgconfig python3native gettext multilib_header multilib_script systemd
48
49# phpize is not scanned for absolute paths by default (but php-config is).
50#
51SSTATE_SCAN_FILES += "phpize"
52SSTATE_SCAN_FILES += "build-defs.h"
53
54export PHP_UNAME = "Linux"
55
56PHP_LIBDIR = "${libdir}/php${PHP_MAJOR_VERSION}"
57
58# Common EXTRA_OECONF
59COMMON_EXTRA_OECONF = "--enable-sockets \
60 --enable-pcntl \
61 --enable-shared \
62 --disable-rpath \
63 --with-pic \
64 --libdir=${PHP_LIBDIR} \
65"
66EXTRA_OECONF = "--enable-mbstring \
67 --enable-fpm \
68 --with-libdir=${baselib} \
69 --with-gettext=${STAGING_LIBDIR}/.. \
70 --with-zlib=${STAGING_LIBDIR}/.. \
71 --with-iconv=${STAGING_LIBDIR}/.. \
72 --with-bz2=${STAGING_DIR_TARGET}${exec_prefix} \
73 --with-config-file-path=${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION} \
74 ${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'ac_cv_c_bigendian_php=no', 'ac_cv_c_bigendian_php=yes', d)} \
75 ${COMMON_EXTRA_OECONF} \
76"
77
78# Set these values directly to avoid AC_RUN_IFELSE which does not work in cross compilation environment
79CACHED_CONFIGUREVARS += "ac_cv_php_cv_shm_ipc=yes ac_cv_php_cv_shm_mmap_anon=yes ac_cv_php_cv_shm_mmap_posix=yes"
80
81EXTRA_OECONF:append:riscv64 = " --with-pcre-jit=no"
82EXTRA_OECONF:append:riscv32 = " --with-pcre-jit=no"
83# Needs fibers assembly implemented for rv32
84# for example rv64 implementation is below
85# see https://github.com/php/php-src/commit/70b02d75f2abe3a292d49c4a4e9e4f850c2fee68
86EXTRA_OECONF:append:riscv32:libc-musl = " --disable-fiber-asm"
87
88EXTRA_OECONF:class-native = " \
89 --with-zlib=${STAGING_LIBDIR_NATIVE}/.. \
90 --without-iconv \
91 ${COMMON_EXTRA_OECONF} \
92"
93
94PACKAGECONFIG ??= "mysql sqlite3 opcache openssl \
95 ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} \
96"
97PACKAGECONFIG:class-native = ""
98
99PACKAGECONFIG[apache2] = "--with-apxs2=${STAGING_BINDIR_CROSS}/apxs,,apache2-native apache2"
100PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
101PACKAGECONFIG[mbregex] = "--enable-mbregex, --disable-mbregex, oniguruma"
102PACKAGECONFIG[mbstring] = "--enable-mbstring,,"
103PACKAGECONFIG[mysql] = "--with-mysqli=mysqlnd \
104 --with-pdo-mysql=mysqlnd \
105 ,--without-mysqli --without-pdo-mysql \
106 ,mysql5"
107PACKAGECONFIG[opcache] = "--enable-opcache,--disable-opcache"
108PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl"
109PACKAGECONFIG[pam] = ",,libpam"
110PACKAGECONFIG[pgsql] = "--with-pgsql=${STAGING_DIR_TARGET}${exec_prefix},--without-pgsql,postgresql"
111PACKAGECONFIG[soap] = "--enable-soap, --disable-soap, libxml2"
112PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
113 --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
114 ,--without-sqlite3 --without-pdo-sqlite \
115 ,sqlite3"
116PACKAGECONFIG[valgrind] = "--with-valgrind=${STAGING_DIR_TARGET}/usr,--with-valgrind=no,valgrind"
117PACKAGECONFIG[zip] = "--with-zip,,libzip"
118
119export HOSTCC = "${BUILD_CC}"
120export PHP_NATIVE_DIR = "${STAGING_BINDIR_NATIVE}"
121export PHP_PEAR_PHP_BIN = "${STAGING_BINDIR_NATIVE}/php"
122CFLAGS += " -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED -I${STAGING_INCDIR}/apache2"
123
124# Adding these flags enables dynamic library support, which is disabled by
125# default when cross compiling
126# See https://bugs.php.net/bug.php?id=60109
127CFLAGS += " -DHAVE_LIBDL "
128LDFLAGS += " -ldl "
129LDFLAGS:append:libc-musl = " -lucontext "
130LDFLAGS:append:riscv64 = " -latomic"
131
132EXTRA_OEMAKE = "INSTALL_ROOT=${D}"
133
134do_configure:prepend () {
135 rm -f ${S}/build/libtool.m4 ${S}/ltmain.sh ${S}/aclocal.m4
136 find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_SBINDIR_NATIVE}/httpd!'
137}
138
139do_configure:append() {
140 # No, libtool, we really don't want rpath set...
141 sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
142 sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
143 sed -i -e's@${RECIPE_SYSROOT}@@g' \
144 -e's@-ffile-prefix-map=[^ ]*[ ]*@@g' \
145 -e's@-fdebug-prefix-map=[^ ]*[ ]*@@g' \
146 -e's@-ffile-prefix-map=[^ ]*[ ]*@@g' \
147 -e's@-fmacro-prefix-map=[^ ]*[ ]*@@g' \
148 ${B}/main/build-defs.h \
149 ${B}/scripts/php-config
150}
151
152do_install:append:class-native() {
153 rm -rf ${D}/${PHP_LIBDIR}/php/.registry
154 rm -rf ${D}/${PHP_LIBDIR}/php/.channels
155 rm -rf ${D}/${PHP_LIBDIR}/php/.[a-z]*
156}
157
158do_install:prepend() {
159 cat ${STAGING_DATADIR}/aclocal/libtool.m4 \
160 ${STAGING_DATADIR}/aclocal/lt~obsolete.m4 \
161 ${STAGING_DATADIR}/aclocal/ltoptions.m4 \
162 ${STAGING_DATADIR}/aclocal/ltsugar.m4 \
163 ${STAGING_DATADIR}/aclocal/ltversion.m4 > ${S}/build/libtool.m4
164}
165
166do_install:prepend:class-target() {
167 if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
168 # Install dummy config file so apxs doesn't fail
169 install -d ${D}${sysconfdir}/apache2
170 printf "\nLoadModule dummy_module modules/mod_dummy.so\n" > ${D}${sysconfdir}/apache2/httpd.conf
171 fi
172}
173
174# fixme
175do_install:append:class-target() {
176 install -d ${D}${sysconfdir}/
177 rm -rf ${D}/.registry
178 rm -rf ${D}/.channels
179 rm -rf ${D}/.[a-z]*
180 rm -rf ${D}/var
181 rm -f ${D}/${sysconfdir}/php-fpm.conf.default
182 install -m 0644 ${UNPACKDIR}/php-fpm.conf ${D}/${sysconfdir}/php-fpm.conf
183 install -d ${D}/${sysconfdir}/apache2/conf.d
184 install -m 0644 ${UNPACKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
185 install -d ${D}${sysconfdir}/init.d
186 sed -i 's:=/usr/sbin:=${sbindir}:g' ${B}/sapi/fpm/init.d.php-fpm
187 sed -i 's:=/etc:=${sysconfdir}:g' ${B}/sapi/fpm/init.d.php-fpm
188 sed -i 's:=/var:=${localstatedir}:g' ${B}/sapi/fpm/init.d.php-fpm
189 install -m 0755 ${B}/sapi/fpm/init.d.php-fpm ${D}${sysconfdir}/init.d/php-fpm
190 install -m 0644 ${UNPACKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
191
192 if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
193 install -d ${D}${systemd_system_unitdir}
194 install -m 0644 ${UNPACKDIR}/php-fpm.service ${D}${systemd_system_unitdir}/php-fpm.service
195 sed -i -e 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_system_unitdir}/php-fpm.service
196 sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/php-fpm.service
197 sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/php-fpm.service
198 fi
199
200 if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
201 install -d ${D}${sysconfdir}/apache2/modules.d
202 install -d ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}
203 install -m 644 ${UNPACKDIR}/70_mod_php${PHP_MAJOR_VERSION}.conf ${D}${sysconfdir}/apache2/modules.d
204 sed -i s,lib/,${libexecdir}/, ${D}${sysconfdir}/apache2/modules.d/70_mod_php${PHP_MAJOR_VERSION}.conf
205 cat ${S}/php.ini-production | \
206 sed -e 's,extension_dir = \"\./\",extension_dir = \"/usr/lib/extensions\",' \
207 > ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}/php.ini
208 rm -f ${D}${sysconfdir}/apache2/httpd.conf*
209 fi
210}
211
212MULTILIB_SCRIPTS += "${PN}:${bindir}/php-config \
213 ${PN}:${bindir}/phpize \
214"
215
216do_install:append () {
217 oe_multilib_header php/main/build-defs.h php/main/php_config.h
218}
219
220SYSROOT_PREPROCESS_FUNCS += "php_sysroot_preprocess"
221
222php_sysroot_preprocess () {
223 install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
224 install -m 755 ${D}${bindir}/phpize ${SYSROOT_DESTDIR}${bindir_crossscripts}/
225 install -m 755 ${D}${bindir}/php-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
226
227 sed -i 's!eval echo /!eval echo ${STAGING_DIR_HOST}/!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/phpize
228 sed -i 's!^include_dir=.*!include_dir=${STAGING_INCDIR}/php!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/php-config
229}
230
231MODPHP_PACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', '${PN}-modphp', '', d)}"
232
233PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-phpdbg ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-opcache ${PN}"
234
235RDEPENDS:${PN} += "libgcc"
236RDEPENDS:${PN}-pear = "${PN}"
237RDEPENDS:${PN}-cli = "${PN}"
238RDEPENDS:${PN}-modphp = "${PN} apache2"
239RDEPENDS:${PN}-opcache = "${PN}"
240
241ALLOW_EMPTY:${PN} = "1"
242
243INITSCRIPT_PACKAGES = "${PN}-fpm"
244inherit update-rc.d
245
246# WARNING: lib32-php-8.0.12-r0 do_package_qa: QA Issue: lib32-php: ELF binary /usr/libexec/apache2/modules/libphp.so has relocations in .text [textrel]
247#WARNING: lib32-php-8.0.12-r0 do_package_qa: QA Issue: lib32-php-opcache: ELF binary /usr/lib/php8/extensions/no-debug-zts-20200930/opcache.so has relocations in .text [textrel]
248INSANE_SKIP:${PN}:append:x86 = " textrel"
249INSANE_SKIP:${PN}-opcache:append:x86 = " textrel"
250
251FILES:${PN}-dbg =+ "${bindir}/.debug \
252 ${libexecdir}/apache2/modules/.debug"
253FILES:${PN}-doc += "${PHP_LIBDIR}/php/doc"
254FILES:${PN}-cli = "${bindir}/php"
255FILES:${PN}-phpdbg = "${bindir}/phpdbg"
256FILES:${PN}-cgi = "${bindir}/php-cgi"
257FILES:${PN}-fpm = "${sbindir}/php-fpm ${sysconfdir}/php-fpm.conf ${datadir}/fpm ${sysconfdir}/init.d/php-fpm ${sysconfdir}/php-fpm.d/www.conf.default"
258FILES:${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
259CONFFILES:${PN}-fpm = "${sysconfdir}/php-fpm.conf"
260CONFFILES:${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
261INITSCRIPT_NAME:${PN}-fpm = "php-fpm"
262INITSCRIPT_PARAMS:${PN}-fpm = "defaults 60"
263FILES:${PN}-pear = "${bindir}/pear* ${bindir}/pecl ${PHP_LIBDIR}/php/PEAR \
264 ${PHP_LIBDIR}/php/PEAR*.php ${PHP_LIBDIR}/php/System.php \
265 ${PHP_LIBDIR}/php/peclcmd.php ${PHP_LIBDIR}/php/pearcmd.php \
266 ${PHP_LIBDIR}/php/.channels ${PHP_LIBDIR}/php/.channels/.alias \
267 ${PHP_LIBDIR}/php/.registry ${PHP_LIBDIR}/php/Archive/Tar.php \
268 ${PHP_LIBDIR}/php/Console/Getopt.php ${PHP_LIBDIR}/php/OS/Guess.php \
269 ${PHP_LIBDIR}/php/data/PEAR \
270 ${sysconfdir}/pear.conf"
271FILES:${PN}-dev = "${includedir}/php ${PHP_LIBDIR}/build ${bindir}/phpize \
272 ${bindir}/php-config ${PHP_LIBDIR}/php/.depdb \
273 ${PHP_LIBDIR}/php/.depdblock ${PHP_LIBDIR}/php/.filemap \
274 ${PHP_LIBDIR}/php/.lock ${PHP_LIBDIR}/php/test"
275FILES:${PN}-staticdev += "${PHP_LIBDIR}/extensions/*/*.a"
276FILES:${PN}-opcache = "${PHP_LIBDIR}/extensions/*/opcache${SOLIBSDEV}"
277FILES:${PN} = "${PHP_LIBDIR}/php"
278FILES:${PN} += "${bindir} ${libexecdir}/apache2"
279
280SUMMARY:${PN}-modphp = "PHP module for the Apache HTTP server"
281FILES:${PN}-modphp = "${libdir}/apache2 ${sysconfdir}"
282
283MODPHP_OLDPACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'modphp', '', d)}"
284RPROVIDES:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
285RREPLACES:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
286RCONFLICTS:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
287
288SYSTEMD_SERVICE:${PN}-fpm = "php-fpm.service"
289SYSTEMD_PACKAGES += "${PN}-fpm"
290
291do_install:append:class-native() {
292 create_wrapper ${D}${bindir}/php \
293 PHP_PEAR_SYSCONF_DIR=${sysconfdir}/
294}