From db70871b2044b9bfde346d6f4027dafb0a013c4c Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 15 Jun 2023 13:38:09 +0100 Subject: gentoo auto-resync : 15:06:2023 - 13:38:09 --- dev-lang/Manifest.gz | Bin 19495 -> 19502 bytes dev-lang/php/Manifest | 8 +- dev-lang/php/php-8.1.18-r1.ebuild | 761 --------------------- dev-lang/php/php-8.1.20.ebuild | 761 +++++++++++++++++++++ dev-lang/php/php-8.2.5-r1.ebuild | 763 ---------------------- dev-lang/php/php-8.2.7.ebuild | 763 ++++++++++++++++++++++ dev-lang/python/Manifest | 22 +- dev-lang/python/python-3.10.11.ebuild | 1 + dev-lang/python/python-3.10.12.ebuild | 3 +- dev-lang/python/python-3.11.3.ebuild | 1 + dev-lang/python/python-3.11.4.ebuild | 3 +- dev-lang/python/python-3.12.0_beta1.ebuild | 1 + dev-lang/python/python-3.12.0_beta1_p1.ebuild | 1 + dev-lang/python/python-3.12.0_beta1_p3.ebuild | 1 + dev-lang/python/python-3.12.0_beta1_p4.ebuild | 1 + dev-lang/python/python-3.12.0_beta2.ebuild | 1 + dev-lang/python/python-3.9.16_p3-r1.ebuild | 1 + dev-lang/python/python-3.9.17.ebuild | 1 + dev-lang/spidermonkey/Manifest | 5 - dev-lang/spidermonkey/spidermonkey-102.8.0.ebuild | 411 ------------ dev-lang/spidermonkey/spidermonkey-102.9.0.ebuild | 418 ------------ 21 files changed, 1552 insertions(+), 2375 deletions(-) delete mode 100644 dev-lang/php/php-8.1.18-r1.ebuild create mode 100644 dev-lang/php/php-8.1.20.ebuild delete mode 100644 dev-lang/php/php-8.2.5-r1.ebuild create mode 100644 dev-lang/php/php-8.2.7.ebuild delete mode 100644 dev-lang/spidermonkey/spidermonkey-102.8.0.ebuild delete mode 100644 dev-lang/spidermonkey/spidermonkey-102.9.0.ebuild (limited to 'dev-lang') diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz index 004671667376..a10642e36235 100644 Binary files a/dev-lang/Manifest.gz and b/dev-lang/Manifest.gz differ diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest index cbfdc7bbebbb..08701bcac5cd 100644 --- a/dev-lang/php/Manifest +++ b/dev-lang/php/Manifest @@ -14,14 +14,14 @@ DIST php-8.0.25.tar.xz 10802888 BLAKE2B c1f283613c43551cccd52955deaae364781fffd4 DIST php-8.0.28.tar.xz 10801568 BLAKE2B de03f5ad262e830c70d24b9e2dd997897e5613d8bbc998ab7e59df703db89d587c6c8955e6f82f0cf6630eed82f33e21567ccf7a873ca07f4d0659f7bf4bd974 SHA512 d66e41cdccc332fccaf03bb24356652b17be5267cba5a47d80f1b74732b674f6a23c91e4a151ca442e629de8e8bcf6daecf0b34cbcbc9e33f53b8da9f06dc6b9 DIST php-8.1.12.tar.xz 11747176 BLAKE2B 0505794826fb0fc92b04be5f7162af8aa92d782bb228243348d85b46866cd47089fcb7febd6886a8179babf64cb227bcdbf5d5f60d44dfefe1c947a3a708e3c1 SHA512 437b6a8146b58479f4d1acb7b35d68954f1f7bc13a8f3dddc66e1677d7e9b6a11154861f9e894cbd59b9c28d4df3fd5422f9b5553004e9fc8d0320ab59b9f907 DIST php-8.1.16.tar.xz 11760948 BLAKE2B ac0d352dae05115197852092b9b3c0b5091528326806c70eb34e0aba6007f718e927e67045d65976cb2104e4737a475b2224d4f05ff89ddf8c3066e0240c38e1 SHA512 4515da38803272abfafb069d1684c66dbb5086987b148c48dd7d8acf8f5316d255cf321ec57d6fbffe914a35551a533446ac13c34bb7c984e0d109247e8e64da -DIST php-8.1.18.tar.xz 11782240 BLAKE2B fc3355e34427198d87c51aaa5d5f02cb590859892d3d04fe067af555c7ad4e1e6908836faf534c29c720d2b9cfee1f3ed9de559d49902edef45520955d6c7f81 SHA512 e30dba23ab8711a04c21ad040d69807f479760a20f363fe3f91a297e9e6463d9558299b15231e00e2b1c95d03309e03bde8cbbe4043fce3e1b965236ece1d0f3 -DIST php-8.2.5.tar.xz 12001192 BLAKE2B 9c404801a9c3fefcc5bf166de257617e5fb34e76a01147e7778ebf09a97e2499f79fec1f4e7ee1945aa8083f8e7a33acbd4d9cdecdf215cb9dcb240c927d6c22 SHA512 ae8aac35a58b342fbfb725044eecdb1065690c461b26e4225445bda3a1719e43eacc4ad5536ccce326cf56a18c20d424b85b1a53277100c7186fc4d54b2d77f0 +DIST php-8.1.20.tar.xz 11793228 BLAKE2B ecdaf43278b69e039e5440b441a89d02ea53e8246515a89f430d7affbaefa3e1637a6830f91dc9062961719ba5bf7c56993f3b47db96b56c14111f77c74a3096 SHA512 d93767c6ff4d305c209e1a0fcb17f19b1d417fa872b002413ebe7883e93900c210e8f122410ac54da373b9d10dd2f522ea2bafc9b66214fb466314d64907a558 +DIST php-8.2.7.tar.xz 12016940 BLAKE2B c80dcdf7b862b25ff1219688ee648938125d52aa8efa6c74b8d08a038222a411851642744872a5684dbaf2c2762f950c0e4190337ef63fb905671361f1418e6a SHA512 8533c0d7b6b0cbca8d01238342edebe1f123b093ab8f3cf5efab40b133989c3288214176b9e2a213b260b07b6bf140711f9b9580c2515a093f586bedc81d8a44 EBUILD php-7.4.33-r2.ebuild 21559 BLAKE2B 67c3ed1964c4d84ba6ddd1a8f5d65d4037c150c951700ac62583bfa7330bf096f7dea9f2ab35fa59826c16353b1d37fca2dc9a8db939c6b7031f05688f65d50d SHA512 b659397022e4c23bb9b41c86737496d159ba77b3dd5145ee30de33eacd5c34d1782c60e6ae1fff86d9f2974d7ca3f0be530e31dad65a8c65e6bbabc1da1e01e0 EBUILD php-7.4.33.ebuild 21371 BLAKE2B 1a1f130cec31dac7fea7b6aa38473eb7ac19b1194c2c2a76023b09043261f73e516a3ba5d21d1da5e3354d6abf3ac606dfb2f27bc0fe1ab1aa162f7c05f95522 SHA512 4ffaae2b5e4724860c40d789f920a3e06455a0efe5ed5d628d74a7012aa57b352188bd577a8e4707ce01be9f3e26534ba1524dfbc4218a93927c6417277cc2e4 EBUILD php-8.0.25.ebuild 21880 BLAKE2B 966f8b33f46767a4456686cd788f0b3c1b8fd4049f2022b1136a8530ef3a5021efb393db45de6ce60aa77ba029c384858838e576a6d2799808246fbc2645730f SHA512 2ba7d167b4075b89e6aac2feb387103ae3fca4dc0be4d6791d23995f4eeb1ca65941664374c52e48b07a8815ccdc7bf1c79b9f2da910bbae8c7c3c373b856ab5 EBUILD php-8.0.28.ebuild 21883 BLAKE2B b0c23c162b11e652a57ec6218a26b6792baf81190168a6ac6c279d682bfa4a7a36b02598d063f9fd69f503bf463a97660b7c6ccdcfe637dc8a24cf097909f459 SHA512 2c8326ec110c74729a8daad7cfcb1a3c58d86ef741d6164e9248d68519dde26739e5c2c1bef89819fa641ed4c07f7566dfced4361ece573789a5752a3b9d9136 EBUILD php-8.1.12.ebuild 21815 BLAKE2B c1610ff5a4e439954b228744cd0223a4205dd1b53e6cff7a48535db414b6d20d307ba1b31c96ea6ab60b2ed1f811eb612c80e245b49acdf9659a6f8b2bb94b08 SHA512 73b766c5dec9b7231f1149b279b47e8621e527bbce2e1606bafdf1e6cd3f647ca30b2fcd16e1d9c3160c4a50c464fdeefbd05e1102f9debe7b79abd68fbceb4d EBUILD php-8.1.16.ebuild 21818 BLAKE2B 1782dc5c71cef2ac3ca067f4d53fcf64e61850044384dfe9bc0e64a025ab1dcf328a455b2aadbd17dd8c92cc65029337598763e3644f488122cde39a913d3343 SHA512 2215fb5851cfd28ffff620ffe86b0d924f61e9a24ff724fa019be7c788fb7de3c53f23489d21553fd81670887cd463b959f9f9857a53cc872e72f70478e330d9 -EBUILD php-8.1.18-r1.ebuild 21949 BLAKE2B bade18fc56eddf467ef96b77d932673bbac81ef3c34d1075af998b78a89f6bec107adca6abe63d8b9c915f5a75c30fe7b9b735e7e98d1449a91359c964c8a90d SHA512 d5eee5a0898a3706bc71287722e9792713833a386adead7d5a2f975f487d81ecb6a32456630702aa659a419243f5a0075d21acc89d097c442a16d1a5409e3ee7 -EBUILD php-8.2.5-r1.ebuild 22056 BLAKE2B e97f7984e46f09ba39ae473b4475e040ff52ee88d6c4f6e09e5eb3e971be1e930d25a9c2323cc33ae56cdac4dc383cd71caa6f060eaaccd799128ccb9f17e2d2 SHA512 d4684b697ea16b008d2fd0f44ac5a2b5bed400704b594b31229ffef392e58734f6d9d106a7dabcd3115dac7012484c98c9c4d8a894d683f7479fc3596417ae82 +EBUILD php-8.1.20.ebuild 21949 BLAKE2B bade18fc56eddf467ef96b77d932673bbac81ef3c34d1075af998b78a89f6bec107adca6abe63d8b9c915f5a75c30fe7b9b735e7e98d1449a91359c964c8a90d SHA512 d5eee5a0898a3706bc71287722e9792713833a386adead7d5a2f975f487d81ecb6a32456630702aa659a419243f5a0075d21acc89d097c442a16d1a5409e3ee7 +EBUILD php-8.2.7.ebuild 22056 BLAKE2B e97f7984e46f09ba39ae473b4475e040ff52ee88d6c4f6e09e5eb3e971be1e930d25a9c2323cc33ae56cdac4dc383cd71caa6f060eaaccd799128ccb9f17e2d2 SHA512 d4684b697ea16b008d2fd0f44ac5a2b5bed400704b594b31229ffef392e58734f6d9d106a7dabcd3115dac7012484c98c9c4d8a894d683f7479fc3596417ae82 MISC metadata.xml 4018 BLAKE2B a2413be53cf35069736693b31b2ef8d4277c25c1cb4ea75d949e3a50809e77b9fae2dceeb8a71bcd0ea4c74131cfcaeaefa09ca67f312bd7eb934c2e07156502 SHA512 ba8385d8596d5e71d6b5cc7e225d2afbbed0cde36ea1b49a43efd16c03141d63baa26b440ddfeb39dea04313467077353c5ac6b8b75307bb64ea0c09fe456933 diff --git a/dev-lang/php/php-8.1.18-r1.ebuild b/dev-lang/php/php-8.1.18-r1.ebuild deleted file mode 100644 index c0e72501cd78..000000000000 --- a/dev-lang/php/php-8.1.18-r1.ebuild +++ /dev/null @@ -1,761 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -WANT_AUTOMAKE="none" - -inherit flag-o-matic multilib systemd autotools - -MY_PV=${PV/_rc/RC} -DESCRIPTION="The PHP language runtime engine" -HOMEPAGE="https://www.php.net/" -SRC_URI="https://www.php.net/distributions/${P}.tar.xz" - -LICENSE="PHP-3.01 - BSD - Zend-2.0 - bcmath? ( LGPL-2.1+ ) - fpm? ( BSD-2 ) - gd? ( gd ) - unicode? ( BSD-2 LGPL-2.1 )" - -SLOT="$(ver_cut 1-2)" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" - -S="${WORKDIR}/${PN}-${MY_PV}" - -# We can build the following SAPIs in the given order -SAPIS="embed cli cgi fpm apache2 phpdbg" - -# SAPIs and SAPI-specific USE flags (cli SAPI is default on): -IUSE="${IUSE} - ${SAPIS/cli/+cli} - threads" - -IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar - cdb cjk coverage +ctype curl debug - enchant exif ffi +fileinfo +filter firebird - +flatfile ftp gd gdbm gmp +iconv imap inifile - intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb - mhash mssql mysql mysqli nls - oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm - readline selinux +session session-mm sharedmem - +simplexml snmp soap sockets sodium spell sqlite ssl - sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode webp - +xml xmlreader xmlwriter xpm xslt zip zlib" - -# Without USE=readline or libedit, the interactive "php -a" CLI will hang. -# The Oracle instant client provides its own incompatible ldap library. -REQUIRED_USE=" - || ( cli cgi fpm apache2 embed phpdbg ) - avif? ( gd zlib ) - cli? ( ^^ ( readline libedit ) ) - !cli? ( ?? ( readline libedit ) ) - truetype? ( gd zlib ) - webp? ( gd zlib ) - cjk? ( gd zlib ) - exif? ( gd zlib ) - xpm? ( gd zlib ) - gd? ( zlib ) - simplexml? ( xml ) - soap? ( xml ) - xmlreader? ( xml ) - xmlwriter? ( xml ) - xslt? ( xml ) - ldap-sasl? ( ldap ) - oci8-instant-client? ( !ldap ) - qdbm? ( !gdbm ) - session-mm? ( session !threads ) - mysql? ( || ( mysqli pdo ) ) - firebird? ( pdo ) - mssql? ( pdo ) -" - -RESTRICT="!test? ( test )" - -# The supported (that is, autodetected) versions of BDB are listed in -# the ./configure script. Other versions *work*, but we need to stick to -# the ones that can be detected to avoid a repeat of bug #564824. -COMMON_DEPEND=" - >=app-eselect/eselect-php-0.9.7[apache2?,fpm?] - >=dev-libs/libpcre2-10.30[jit?,unicode] - fpm? ( acl? ( sys-apps/acl ) apparmor? ( sys-libs/libapparmor ) ) - apache2? ( www-servers/apache[apache2_modules_unixd(+),threads=] ) - argon2? ( app-crypt/argon2:= ) - avif? ( media-libs/libavif:= ) - berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:4.8 ) ) - bzip2? ( app-arch/bzip2:0= ) - cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) - coverage? ( dev-util/lcov ) - curl? ( >=net-misc/curl-7.29.0 ) - enchant? ( app-text/enchant:2 ) - ffi? ( >=dev-libs/libffi-3.0.11:= ) - firebird? ( dev-db/firebird ) - gd? ( media-libs/libjpeg-turbo:0= media-libs/libpng:0= ) - gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) - gmp? ( dev-libs/gmp:0= ) - iconv? ( virtual/libiconv ) - imap? ( net-libs/c-client[kerberos=,ssl=] ) - intl? ( dev-libs/icu:= ) - kerberos? ( virtual/krb5 ) - ldap? ( >=net-nds/openldap-1.2.11:= ) - ldap-sasl? ( dev-libs/cyrus-sasl ) - libedit? ( dev-libs/libedit ) - lmdb? ( dev-db/lmdb:= ) - mssql? ( dev-db/freetds[mssql] ) - nls? ( sys-devel/gettext ) - oci8-instant-client? ( dev-db/oracle-instantclient[sdk] ) - odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( >=dev-db/unixODBC-1.8.13 ) ) - postgres? ( >=dev-db/postgresql-9.1:* ) - qdbm? ( dev-db/qdbm ) - readline? ( sys-libs/readline:0= ) - session-mm? ( dev-libs/mm ) - snmp? ( >=net-analyzer/net-snmp-5.2 ) - sodium? ( dev-libs/libsodium:=[-minimal] ) - spell? ( >=app-text/aspell-0.50 ) - sqlite? ( >=dev-db/sqlite-3.7.6.3 ) - ssl? ( >=dev-libs/openssl-1.0.2:0= ) - tidy? ( app-text/htmltidy ) - tokyocabinet? ( dev-db/tokyocabinet ) - truetype? ( =media-libs/freetype-2* ) - unicode? ( dev-libs/oniguruma:= ) - webp? ( media-libs/libwebp:0= ) - xml? ( >=dev-libs/libxml2-2.9.0 ) - xpm? ( x11-libs/libXpm ) - xslt? ( dev-libs/libxslt ) - zip? ( >=dev-libs/libzip-1.2.0:= ) - zlib? ( >=sys-libs/zlib-1.2.0.4:0= ) -" - -IDEPEND=">=app-eselect/eselect-php-0.9.7[apache2?,fpm?]" - -RDEPEND="${COMMON_DEPEND} - virtual/mta - fpm? ( - selinux? ( sec-policy/selinux-phpfpm ) - systemd? ( sys-apps/systemd ) )" - -# Bison isn't actually needed when building from a release tarball -# However, the configure script will warn if it's absent or if you -# have an incompatible version installed. See bug 593278. -DEPEND="${COMMON_DEPEND} - app-arch/xz-utils - >=sys-devel/bison-3.0.1" - -BDEPEND="virtual/pkgconfig" - -PHP_MV="$(ver_cut 1)" - -PATCHES=( - "${FILESDIR}/php-iodbc-header-location.patch" - "${FILESDIR}/php-capstone-optional.patch" -) - -php_install_ini() { - local phpsapi="${1}" - - # work out where we are installing the ini file - php_set_ini_dir "${phpsapi}" - - # Always install the production INI file, bug 611214. - local phpinisrc="php.ini-production-${phpsapi}" - cp php.ini-production "${phpinisrc}" || die - - # default to /tmp for save_path, bug #282768 - sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die - - # Set the extension dir - sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \ - -i "${phpinisrc}" || die - - # Set the include path to point to where we want to find PEAR packages - sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die - - insinto "${PHP_INI_DIR#${EPREFIX}}" - newins "${phpinisrc}" php.ini - - elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}" - elog - - dodir "${PHP_EXT_INI_DIR#${EPREFIX}}" - dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}" - - if use opcache; then - elog "Adding opcache to $PHP_EXT_INI_DIR" - echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \ - "${D}/${PHP_EXT_INI_DIR}"/opcache.ini - dosym "../ext/opcache.ini" \ - "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini" - fi - - # SAPI-specific handling - if [[ "${sapi}" == "fpm" ]] ; then - einfo "Installing FPM config files php-fpm.conf and www.conf" - insinto "${PHP_INI_DIR#${EPREFIX}}" - doins sapi/fpm/php-fpm.conf - insinto "${PHP_INI_DIR#${EPREFIX}}/fpm.d" - doins sapi/fpm/www.conf - fi - - dodoc php.ini-{development,production} -} - -php_set_ini_dir() { - PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}" - PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext" - PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active" -} - -src_prepare() { - default - - # In php-7.x, the FPM pool configuration files have been split off - # of the main config. By default the pool config files go in - # e.g. /etc/php-fpm.d, which isn't slotted. So here we move the - # include directory to a subdirectory "fpm.d" of $PHP_INI_DIR. Later - # we'll install the pool configuration file "www.conf" there. - php_set_ini_dir fpm - sed -i "s~^include=.*$~include=${PHP_INI_DIR}/fpm.d/*.conf~" \ - sapi/fpm/php-fpm.conf.in \ - || die 'failed to move the include directory in php-fpm.conf' - - # Emulate buildconf to support cross-compilation - rm -fr aclocal.m4 autom4te.cache config.cache \ - configure main/php_config.h.in || die - eautoconf --force - eautoheader - - # Remove false positive test failures - # stream_isatty fails due to portage redirects - # curl tests here fail for network sandbox issues - # session tests here fail because we set the session directory to $T - rm tests/output/stream_isatty_err.phpt \ - tests/output/stream_isatty_out-err.phpt \ - tests/output/stream_isatty_out.phpt \ - ext/curl/tests/bug76675.phpt \ - ext/curl/tests/bug77535.phpt \ - ext/curl/tests/curl_error_basic.phpt \ - ext/session/tests/bug74514.phpt \ - ext/session/tests/bug74936.phpt || die - -} - -src_configure() { - addpredict /usr/share/snmp/mibs/.index #nowarn - addpredict /var/lib/net-snmp/mib_indexes #nowarn - - PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}" - - # The php-fpm config file wants localstatedir to be ${EPREFIX}/var - # and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002. - local our_conf=( - --prefix="${PHP_DESTDIR}" - --mandir="${PHP_DESTDIR}/man" - --infodir="${PHP_DESTDIR}/info" - --libdir="${PHP_DESTDIR}/lib" - --with-libdir="$(get_libdir)" - --localstatedir="${EPREFIX}/var" - --without-pear - --without-valgrind - $(use_enable threads zts) - ) - - our_conf+=( - $(use_with apparmor fpm-apparmor) - $(use_with argon2 password-argon2 "${EPREFIX}/usr") - $(use_with avif) - $(use_enable bcmath) - $(use_with bzip2 bz2 "${EPREFIX}/usr") - $(use_enable calendar) - $(use_enable coverage gcov) - $(use_enable ctype) - $(use_with curl) - $(use_enable xml dom) - $(use_with enchant) - $(use_enable exif) - $(use_with ffi) - $(use_enable fileinfo) - $(use_enable filter) - $(use_enable ftp) - $(use_with nls gettext "${EPREFIX}/usr") - $(use_with gmp gmp "${EPREFIX}/usr") - $(use_with mhash mhash "${EPREFIX}/usr") - $(use_with iconv iconv \ - $(use elibc_glibc || use elibc_musl || echo "${EPREFIX}/usr")) - $(use_enable intl) - $(use_enable ipv6) - $(use_with kerberos) - $(use_with xml libxml) - $(use_enable unicode mbstring) - $(use_with ssl openssl) - $(use_enable pcntl) - $(use_enable phar) - $(use_enable pdo) - $(use_enable opcache) - $(use_with postgres pgsql "${EPREFIX}/usr") - $(use_enable posix) - $(use_with spell pspell "${EPREFIX}/usr") - $(use_enable simplexml) - $(use_enable sharedmem shmop) - $(use_with snmp snmp "${EPREFIX}/usr") - $(use_enable soap) - $(use_enable sockets) - $(use_with sodium) - $(use_with sqlite sqlite3) - $(use_enable sysvipc sysvmsg) - $(use_enable sysvipc sysvsem) - $(use_enable sysvipc sysvshm) - $(use_with tidy tidy "${EPREFIX}/usr") - $(use_enable tokenizer) - $(use_enable xml) - $(use_enable xmlreader) - $(use_enable xmlwriter) - $(use_with xslt xsl) - $(use_with zip) - $(use_with zlib zlib "${EPREFIX}/usr") - $(use_enable debug) - ) - - # DBA support - if use cdb || use berkdb || use flatfile || use gdbm || use inifile \ - || use qdbm || use lmdb || use tokyocabinet ; then - our_conf+=( "--enable-dba" ) - fi - - # DBA drivers support - our_conf+=( - $(use_with cdb) - $(use_with berkdb db4 "${EPREFIX}/usr") - $(use_enable flatfile) - $(use_with gdbm gdbm "${EPREFIX}/usr") - $(use_enable inifile) - $(use_with qdbm qdbm "${EPREFIX}/usr") - $(use_with tokyocabinet tcadb "${EPREFIX}/usr") - $(use_with lmdb lmdb "${EPREFIX}/usr") - ) - - # Support for the GD graphics library - our_conf+=( - $(use_with truetype freetype) - $(use_enable cjk gd-jis-conv) - $(use_with gd jpeg) - $(use_with xpm) - $(use_with webp) - ) - # enable gd last, so configure can pick up the previous settings - our_conf+=( $(use_enable gd) ) - - # IMAP support - if use imap ; then - our_conf+=( - $(use_with imap imap "${EPREFIX}/usr") - $(use_with ssl imap-ssl "${EPREFIX}/usr") - ) - fi - - # LDAP support - if use ldap ; then - our_conf+=( - $(use_with ldap ldap "${EPREFIX}/usr") - $(use_with ldap-sasl) - ) - fi - - # MySQL support - our_conf+=( $(use_with mysqli mysqli "mysqlnd") ) - - local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock" - if use mysql || use mysqli ; then - our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") ) - fi - - # ODBC support - if use odbc && use iodbc ; then - our_conf+=( - --without-unixODBC - --with-iodbc - $(use_with pdo pdo-odbc "iODBC,${EPREFIX}/usr") - ) - elif use odbc ; then - our_conf+=( - --with-unixODBC="${EPREFIX}/usr" - --without-iodbc - $(use_with pdo pdo-odbc "unixODBC,${EPREFIX}/usr") - ) - else - our_conf+=( - --without-unixODBC - --without-iodbc - --without-pdo-odbc - ) - fi - - # Oracle support - our_conf+=( $(use_with oci8-instant-client oci8) ) - - # PDO support - if use pdo ; then - our_conf+=( - $(use_with mssql pdo-dblib "${EPREFIX}/usr") - $(use_with mysql pdo-mysql "mysqlnd") - $(use_with postgres pdo-pgsql) - $(use_with sqlite pdo-sqlite) - $(use_with firebird pdo-firebird "${EPREFIX}/usr") - $(use_with oci8-instant-client pdo-oci) - ) - fi - - # readline/libedit support - our_conf+=( - $(use_with readline readline "${EPREFIX}/usr") - $(use_with libedit) - ) - - # Session support - if use session ; then - our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") ) - else - our_conf+=( $(use_enable session) ) - fi - - # Use pic for shared modules such as apache2's mod_php - our_conf+=( --with-pic ) - - # we use the system copy of pcre - # --with-external-pcre affects ext/pcre - our_conf+=( - --with-external-pcre - $(use_with jit pcre-jit) - ) - - # Catch CFLAGS problems - # Fixes bug #14067. - # Changed order to run it in reverse for bug #32022 and #12021. - replace-cpu-flags "k6*" "i586" - - # Cache the ./configure test results between SAPIs. - our_conf+=( --cache-file="${T}/config.cache" ) - - # Support user-passed configuration parameters - our_conf+=( ${EXTRA_ECONF:-} ) - - # Support the Apache2 extras, they must be set globally for all - # SAPIs to work correctly, especially for external PHP extensions - - local one_sapi - local sapi - mkdir -p "${WORKDIR}/sapis-build" || die - for one_sapi in $SAPIS ; do - use "${one_sapi}" || continue - php_set_ini_dir "${one_sapi}" - - # The BUILD_DIR variable is used to determine where to output - # the files that autotools creates. This was all originally - # based on the autotools-utils eclass. - BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}" - cp -a "${S}" "${BUILD_DIR}" || die - cd "${BUILD_DIR}" || die - - local sapi_conf=( - --with-config-file-path="${PHP_INI_DIR}" - --with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}" - ) - - for sapi in $SAPIS ; do - case "$sapi" in - cli|cgi|embed|fpm|phpdbg) - if [[ "${one_sapi}" == "${sapi}" ]] ; then - sapi_conf+=( "--enable-${sapi}" ) - if [[ "fpm" == "${sapi}" ]] ; then - sapi_conf+=( - $(use_with acl fpm-acl) - $(use_with systemd fpm-systemd) - ) - fi - else - sapi_conf+=( "--disable-${sapi}" ) - fi - ;; - - apache2) - if [[ "${one_sapi}" == "${sapi}" ]] ; then - sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" ) - else - sapi_conf+=( --without-apxs2 ) - fi - ;; - esac - done - - # Construct the $myeconfargs array by concatenating $our_conf - # (the common args) and $sapi_conf (the SAPI-specific args). - local myeconfargs=( "${our_conf[@]}" ) - myeconfargs+=( "${sapi_conf[@]}" ) - - pushd "${BUILD_DIR}" > /dev/null || die - econf "${myeconfargs[@]}" - popd > /dev/null || die - done -} - -src_compile() { - # snmp seems to run during src_compile, too (bug #324739) - addpredict /usr/share/snmp/mibs/.index #nowarn - addpredict /var/lib/net-snmp/mib_indexes #nowarn - - local sapi - for sapi in ${SAPIS} ; do - if use "${sapi}"; then - cd "${WORKDIR}/sapis-build/$sapi" || \ - die "Failed to change dir to ${WORKDIR}/sapis-build/$1" - emake - fi - done -} - -src_install() { - # see bug #324739 for what happens when we don't have that - addpredict /usr/share/snmp/mibs/.index #nowarn - - # grab the first SAPI that got built and install common files from there - local first_sapi="", sapi="" - for sapi in $SAPIS ; do - if use $sapi ; then - first_sapi=$sapi - break - fi - done - - # Makefile forgets to create this before trying to write to it... - dodir "${PHP_DESTDIR#${EPREFIX}}/bin" - - # Install php environment (without any sapis) - cd "${WORKDIR}/sapis-build/$first_sapi" || die - emake INSTALL_ROOT="${D}" \ - install-build install-headers install-programs - - local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)" - - # Create the directory where we'll put version-specific php scripts - keepdir "/usr/share/php${PHP_MV}" - - local file="" - local sapi_list="" - - for sapi in ${SAPIS}; do - if use "${sapi}" ; then - einfo "Installing SAPI: ${sapi}" - cd "${WORKDIR}/sapis-build/${sapi}" || die - - if [[ "${sapi}" == "apache2" ]] ; then - # We're specifically not using emake install-sapi as libtool - # may cause unnecessary relink failures (see bug #351266) - insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/" - newins ".libs/libphp$(get_libname)" \ - "libphp${PHP_MV}$(get_libname)" - keepdir "/usr/$(get_libdir)/apache2/modules" - else - # needed each time, php_install_ini would reset it - local dest="${PHP_DESTDIR#${EPREFIX}}" - into "${dest}" - case "$sapi" in - cli) - source="sapi/cli/php" - # Install the "phar" archive utility. - if use phar ; then - emake INSTALL_ROOT="${D}" install-pharcmd - dosym "..${dest#/usr}/bin/phar" "/usr/bin/phar${SLOT}" - fi - ;; - cgi) - source="sapi/cgi/php-cgi" - ;; - fpm) - source="sapi/fpm/php-fpm" - ;; - embed) - source="libs/libphp$(get_libname)" - ;; - phpdbg) - source="sapi/phpdbg/phpdbg" - ;; - *) - die "unhandled sapi in src_install" - ;; - esac - - if [[ "${source}" == *"$(get_libname)" ]]; then - dolib.so "${source}" - else - dobin "${source}" - local name="$(basename ${source})" - dosym "..${dest#/usr}/bin/${name}" "/usr/bin/${name}${SLOT}" - fi - fi - - php_install_ini "${sapi}" - - # construct correct SAPI string for php-config - # thanks to ferringb for the bash voodoo - if [[ "${sapi}" == "apache2" ]]; then - sapi_list="${sapi_list:+${sapi_list} }apache2handler" - else - sapi_list="${sapi_list:+${sapi_list} }${sapi}" - fi - fi - done - - # Installing opcache module - if use opcache ; then - into "${PHP_DESTDIR#${EPREFIX}}" - dolib.so "modules/opcache$(get_libname)" - fi - - # Install env.d files - newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}" - sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die - sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die - - # set php-config variable correctly (bug #278439) - sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \ - "${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die - - if use fpm ; then - if use systemd; then - systemd_newunit "${FILESDIR}/php-fpm_at.service" \ - "php-fpm@${SLOT}.service" - else - systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \ - "php-fpm@${SLOT}.service" - fi - fi -} - -src_test() { - echo ">>> Test phase [test]: ${CATEGORY}/${PF}" - PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php" - if [[ ! -x "${PHP_BIN}" ]] ; then - ewarn "Test phase requires USE=cli, skipping" - return - else - export TEST_PHP_EXECUTABLE="${PHP_BIN}" - fi - - if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then - export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" - fi - - if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then - export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" - fi - - SKIP_ONLINE_TESTS=1 REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \ - "session.save_path=${T}" \ - "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \ - "session.save_path=${T}" - - for name in ${EXPECTED_TEST_FAILURES}; do - mv "${name}.out" "${name}.out.orig" 2>/dev/null || die - done - - local failed="$(find -name '*.out')" - if [[ ${failed} != "" ]] ; then - ewarn "The following test cases failed unexpectedly:" - for name in ${failed}; do - ewarn " ${name/.out/}" - done - else - einfo "No unexpected test failures, all fine" - fi - - if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then - local passed="" - for name in ${EXPECTED_TEST_FAILURES}; do - [[ -f "${name}.diff" ]] && continue - passed="${passed} ${name}" - done - if [[ ${passed} != "" ]] ; then - einfo "The following test cases passed unexpectedly:" - for name in ${passed}; do - ewarn " ${passed}" - done - else - einfo "None of the known-to-fail tests passed, all fine" - fi - fi -} - -pkg_postinst() { - # Output some general info to the user - if use apache2 ; then - elog - elog "To enable PHP in apache, you will need to add \"-D PHP\" to" - elog "your apache2 command. OpenRC users can append that string to" - elog "APACHE2_OPTS in /etc/conf.d/apache2." - elog - elog "The apache module configuration file 70_mod_php.conf is" - elog "provided (and maintained) by eselect-php." - elog - fi - - # Create the symlinks for php - local m - for m in ${SAPIS}; do - [[ ${m} == 'embed' ]] && continue; - if use $m ; then - local ci=$(eselect php show $m) - if [[ -z $ci ]]; then - eselect php set $m php${SLOT} || die - einfo "Switched ${m} to use php:${SLOT}" - einfo - elif [[ $ci != "php${SLOT}" ]] ; then - elog "To switch $m to use php:${SLOT}, run" - elog " eselect php set $m php${SLOT}" - elog - fi - fi - done - - # Remove dead symlinks for SAPIs that were just disabled. For - # example, if the user has the cgi SAPI enabled, then he has an - # eselect-php symlink for it. If he later reinstalls PHP with - # USE="-cgi", that symlink will break. This call to eselect is - # supposed to remove that dead link per bug 572436. - eselect php cleanup || die - - if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then - elog "To build extensions for this version of PHP, you will need to" - elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable." - elog - fi - - # Warn about the removal of PHP_INI_VERSION if the user has it set. - if [[ -n "${PHP_INI_VERSION}" ]]; then - ewarn 'The PHP_INI_VERSION variable has been phased out. You may' - ewarn 'remove it from your configuration at your convenience. See' - ewarn - ewarn ' https://bugs.gentoo.org/611214' - ewarn - ewarn 'for more information.' - fi - - elog "For details on how version slotting works, please see" - elog "the wiki:" - elog - elog " https://wiki.gentoo.org/wiki/PHP" - elog -} - -pkg_postrm() { - # This serves two purposes. First, if we have just removed the last - # installed version of PHP, then this will remove any dead symlinks - # belonging to eselect-php. Second, if a user upgrades slots from - # (say) 5.6 to 7.0 and depcleans the old slot, then this will update - # his existing symlinks to point to the new 7.0 installation. The - # latter is bug 432962. - # - # Note: the eselect-php package may not be installed at this point, - # so we can't die() if this command fails. - eselect php cleanup -} diff --git a/dev-lang/php/php-8.1.20.ebuild b/dev-lang/php/php-8.1.20.ebuild new file mode 100644 index 000000000000..c0e72501cd78 --- /dev/null +++ b/dev-lang/php/php-8.1.20.ebuild @@ -0,0 +1,761 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +WANT_AUTOMAKE="none" + +inherit flag-o-matic multilib systemd autotools + +MY_PV=${PV/_rc/RC} +DESCRIPTION="The PHP language runtime engine" +HOMEPAGE="https://www.php.net/" +SRC_URI="https://www.php.net/distributions/${P}.tar.xz" + +LICENSE="PHP-3.01 + BSD + Zend-2.0 + bcmath? ( LGPL-2.1+ ) + fpm? ( BSD-2 ) + gd? ( gd ) + unicode? ( BSD-2 LGPL-2.1 )" + +SLOT="$(ver_cut 1-2)" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" + +S="${WORKDIR}/${PN}-${MY_PV}" + +# We can build the following SAPIs in the given order +SAPIS="embed cli cgi fpm apache2 phpdbg" + +# SAPIs and SAPI-specific USE flags (cli SAPI is default on): +IUSE="${IUSE} + ${SAPIS/cli/+cli} + threads" + +IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar + cdb cjk coverage +ctype curl debug + enchant exif ffi +fileinfo +filter firebird + +flatfile ftp gd gdbm gmp +iconv imap inifile + intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb + mhash mssql mysql mysqli nls + oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm + readline selinux +session session-mm sharedmem + +simplexml snmp soap sockets sodium spell sqlite ssl + sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode webp + +xml xmlreader xmlwriter xpm xslt zip zlib" + +# Without USE=readline or libedit, the interactive "php -a" CLI will hang. +# The Oracle instant client provides its own incompatible ldap library. +REQUIRED_USE=" + || ( cli cgi fpm apache2 embed phpdbg ) + avif? ( gd zlib ) + cli? ( ^^ ( readline libedit ) ) + !cli? ( ?? ( readline libedit ) ) + truetype? ( gd zlib ) + webp? ( gd zlib ) + cjk? ( gd zlib ) + exif? ( gd zlib ) + xpm? ( gd zlib ) + gd? ( zlib ) + simplexml? ( xml ) + soap? ( xml ) + xmlreader? ( xml ) + xmlwriter? ( xml ) + xslt? ( xml ) + ldap-sasl? ( ldap ) + oci8-instant-client? ( !ldap ) + qdbm? ( !gdbm ) + session-mm? ( session !threads ) + mysql? ( || ( mysqli pdo ) ) + firebird? ( pdo ) + mssql? ( pdo ) +" + +RESTRICT="!test? ( test )" + +# The supported (that is, autodetected) versions of BDB are listed in +# the ./configure script. Other versions *work*, but we need to stick to +# the ones that can be detected to avoid a repeat of bug #564824. +COMMON_DEPEND=" + >=app-eselect/eselect-php-0.9.7[apache2?,fpm?] + >=dev-libs/libpcre2-10.30[jit?,unicode] + fpm? ( acl? ( sys-apps/acl ) apparmor? ( sys-libs/libapparmor ) ) + apache2? ( www-servers/apache[apache2_modules_unixd(+),threads=] ) + argon2? ( app-crypt/argon2:= ) + avif? ( media-libs/libavif:= ) + berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:4.8 ) ) + bzip2? ( app-arch/bzip2:0= ) + cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) + coverage? ( dev-util/lcov ) + curl? ( >=net-misc/curl-7.29.0 ) + enchant? ( app-text/enchant:2 ) + ffi? ( >=dev-libs/libffi-3.0.11:= ) + firebird? ( dev-db/firebird ) + gd? ( media-libs/libjpeg-turbo:0= media-libs/libpng:0= ) + gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) + gmp? ( dev-libs/gmp:0= ) + iconv? ( virtual/libiconv ) + imap? ( net-libs/c-client[kerberos=,ssl=] ) + intl? ( dev-libs/icu:= ) + kerberos? ( virtual/krb5 ) + ldap? ( >=net-nds/openldap-1.2.11:= ) + ldap-sasl? ( dev-libs/cyrus-sasl ) + libedit? ( dev-libs/libedit ) + lmdb? ( dev-db/lmdb:= ) + mssql? ( dev-db/freetds[mssql] ) + nls? ( sys-devel/gettext ) + oci8-instant-client? ( dev-db/oracle-instantclient[sdk] ) + odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( >=dev-db/unixODBC-1.8.13 ) ) + postgres? ( >=dev-db/postgresql-9.1:* ) + qdbm? ( dev-db/qdbm ) + readline? ( sys-libs/readline:0= ) + session-mm? ( dev-libs/mm ) + snmp? ( >=net-analyzer/net-snmp-5.2 ) + sodium? ( dev-libs/libsodium:=[-minimal] ) + spell? ( >=app-text/aspell-0.50 ) + sqlite? ( >=dev-db/sqlite-3.7.6.3 ) + ssl? ( >=dev-libs/openssl-1.0.2:0= ) + tidy? ( app-text/htmltidy ) + tokyocabinet? ( dev-db/tokyocabinet ) + truetype? ( =media-libs/freetype-2* ) + unicode? ( dev-libs/oniguruma:= ) + webp? ( media-libs/libwebp:0= ) + xml? ( >=dev-libs/libxml2-2.9.0 ) + xpm? ( x11-libs/libXpm ) + xslt? ( dev-libs/libxslt ) + zip? ( >=dev-libs/libzip-1.2.0:= ) + zlib? ( >=sys-libs/zlib-1.2.0.4:0= ) +" + +IDEPEND=">=app-eselect/eselect-php-0.9.7[apache2?,fpm?]" + +RDEPEND="${COMMON_DEPEND} + virtual/mta + fpm? ( + selinux? ( sec-policy/selinux-phpfpm ) + systemd? ( sys-apps/systemd ) )" + +# Bison isn't actually needed when building from a release tarball +# However, the configure script will warn if it's absent or if you +# have an incompatible version installed. See bug 593278. +DEPEND="${COMMON_DEPEND} + app-arch/xz-utils + >=sys-devel/bison-3.0.1" + +BDEPEND="virtual/pkgconfig" + +PHP_MV="$(ver_cut 1)" + +PATCHES=( + "${FILESDIR}/php-iodbc-header-location.patch" + "${FILESDIR}/php-capstone-optional.patch" +) + +php_install_ini() { + local phpsapi="${1}" + + # work out where we are installing the ini file + php_set_ini_dir "${phpsapi}" + + # Always install the production INI file, bug 611214. + local phpinisrc="php.ini-production-${phpsapi}" + cp php.ini-production "${phpinisrc}" || die + + # default to /tmp for save_path, bug #282768 + sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die + + # Set the extension dir + sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \ + -i "${phpinisrc}" || die + + # Set the include path to point to where we want to find PEAR packages + sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die + + insinto "${PHP_INI_DIR#${EPREFIX}}" + newins "${phpinisrc}" php.ini + + elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}" + elog + + dodir "${PHP_EXT_INI_DIR#${EPREFIX}}" + dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}" + + if use opcache; then + elog "Adding opcache to $PHP_EXT_INI_DIR" + echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \ + "${D}/${PHP_EXT_INI_DIR}"/opcache.ini + dosym "../ext/opcache.ini" \ + "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini" + fi + + # SAPI-specific handling + if [[ "${sapi}" == "fpm" ]] ; then + einfo "Installing FPM config files php-fpm.conf and www.conf" + insinto "${PHP_INI_DIR#${EPREFIX}}" + doins sapi/fpm/php-fpm.conf + insinto "${PHP_INI_DIR#${EPREFIX}}/fpm.d" + doins sapi/fpm/www.conf + fi + + dodoc php.ini-{development,production} +} + +php_set_ini_dir() { + PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}" + PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext" + PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active" +} + +src_prepare() { + default + + # In php-7.x, the FPM pool configuration files have been split off + # of the main config. By default the pool config files go in + # e.g. /etc/php-fpm.d, which isn't slotted. So here we move the + # include directory to a subdirectory "fpm.d" of $PHP_INI_DIR. Later + # we'll install the pool configuration file "www.conf" there. + php_set_ini_dir fpm + sed -i "s~^include=.*$~include=${PHP_INI_DIR}/fpm.d/*.conf~" \ + sapi/fpm/php-fpm.conf.in \ + || die 'failed to move the include directory in php-fpm.conf' + + # Emulate buildconf to support cross-compilation + rm -fr aclocal.m4 autom4te.cache config.cache \ + configure main/php_config.h.in || die + eautoconf --force + eautoheader + + # Remove false positive test failures + # stream_isatty fails due to portage redirects + # curl tests here fail for network sandbox issues + # session tests here fail because we set the session directory to $T + rm tests/output/stream_isatty_err.phpt \ + tests/output/stream_isatty_out-err.phpt \ + tests/output/stream_isatty_out.phpt \ + ext/curl/tests/bug76675.phpt \ + ext/curl/tests/bug77535.phpt \ + ext/curl/tests/curl_error_basic.phpt \ + ext/session/tests/bug74514.phpt \ + ext/session/tests/bug74936.phpt || die + +} + +src_configure() { + addpredict /usr/share/snmp/mibs/.index #nowarn + addpredict /var/lib/net-snmp/mib_indexes #nowarn + + PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}" + + # The php-fpm config file wants localstatedir to be ${EPREFIX}/var + # and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002. + local our_conf=( + --prefix="${PHP_DESTDIR}" + --mandir="${PHP_DESTDIR}/man" + --infodir="${PHP_DESTDIR}/info" + --libdir="${PHP_DESTDIR}/lib" + --with-libdir="$(get_libdir)" + --localstatedir="${EPREFIX}/var" + --without-pear + --without-valgrind + $(use_enable threads zts) + ) + + our_conf+=( + $(use_with apparmor fpm-apparmor) + $(use_with argon2 password-argon2 "${EPREFIX}/usr") + $(use_with avif) + $(use_enable bcmath) + $(use_with bzip2 bz2 "${EPREFIX}/usr") + $(use_enable calendar) + $(use_enable coverage gcov) + $(use_enable ctype) + $(use_with curl) + $(use_enable xml dom) + $(use_with enchant) + $(use_enable exif) + $(use_with ffi) + $(use_enable fileinfo) + $(use_enable filter) + $(use_enable ftp) + $(use_with nls gettext "${EPREFIX}/usr") + $(use_with gmp gmp "${EPREFIX}/usr") + $(use_with mhash mhash "${EPREFIX}/usr") + $(use_with iconv iconv \ + $(use elibc_glibc || use elibc_musl || echo "${EPREFIX}/usr")) + $(use_enable intl) + $(use_enable ipv6) + $(use_with kerberos) + $(use_with xml libxml) + $(use_enable unicode mbstring) + $(use_with ssl openssl) + $(use_enable pcntl) + $(use_enable phar) + $(use_enable pdo) + $(use_enable opcache) + $(use_with postgres pgsql "${EPREFIX}/usr") + $(use_enable posix) + $(use_with spell pspell "${EPREFIX}/usr") + $(use_enable simplexml) + $(use_enable sharedmem shmop) + $(use_with snmp snmp "${EPREFIX}/usr") + $(use_enable soap) + $(use_enable sockets) + $(use_with sodium) + $(use_with sqlite sqlite3) + $(use_enable sysvipc sysvmsg) + $(use_enable sysvipc sysvsem) + $(use_enable sysvipc sysvshm) + $(use_with tidy tidy "${EPREFIX}/usr") + $(use_enable tokenizer) + $(use_enable xml) + $(use_enable xmlreader) + $(use_enable xmlwriter) + $(use_with xslt xsl) + $(use_with zip) + $(use_with zlib zlib "${EPREFIX}/usr") + $(use_enable debug) + ) + + # DBA support + if use cdb || use berkdb || use flatfile || use gdbm || use inifile \ + || use qdbm || use lmdb || use tokyocabinet ; then + our_conf+=( "--enable-dba" ) + fi + + # DBA drivers support + our_conf+=( + $(use_with cdb) + $(use_with berkdb db4 "${EPREFIX}/usr") + $(use_enable flatfile) + $(use_with gdbm gdbm "${EPREFIX}/usr") + $(use_enable inifile) + $(use_with qdbm qdbm "${EPREFIX}/usr") + $(use_with tokyocabinet tcadb "${EPREFIX}/usr") + $(use_with lmdb lmdb "${EPREFIX}/usr") + ) + + # Support for the GD graphics library + our_conf+=( + $(use_with truetype freetype) + $(use_enable cjk gd-jis-conv) + $(use_with gd jpeg) + $(use_with xpm) + $(use_with webp) + ) + # enable gd last, so configure can pick up the previous settings + our_conf+=( $(use_enable gd) ) + + # IMAP support + if use imap ; then + our_conf+=( + $(use_with imap imap "${EPREFIX}/usr") + $(use_with ssl imap-ssl "${EPREFIX}/usr") + ) + fi + + # LDAP support + if use ldap ; then + our_conf+=( + $(use_with ldap ldap "${EPREFIX}/usr") + $(use_with ldap-sasl) + ) + fi + + # MySQL support + our_conf+=( $(use_with mysqli mysqli "mysqlnd") ) + + local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock" + if use mysql || use mysqli ; then + our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") ) + fi + + # ODBC support + if use odbc && use iodbc ; then + our_conf+=( + --without-unixODBC + --with-iodbc + $(use_with pdo pdo-odbc "iODBC,${EPREFIX}/usr") + ) + elif use odbc ; then + our_conf+=( + --with-unixODBC="${EPREFIX}/usr" + --without-iodbc + $(use_with pdo pdo-odbc "unixODBC,${EPREFIX}/usr") + ) + else + our_conf+=( + --without-unixODBC + --without-iodbc + --without-pdo-odbc + ) + fi + + # Oracle support + our_conf+=( $(use_with oci8-instant-client oci8) ) + + # PDO support + if use pdo ; then + our_conf+=( + $(use_with mssql pdo-dblib "${EPREFIX}/usr") + $(use_with mysql pdo-mysql "mysqlnd") + $(use_with postgres pdo-pgsql) + $(use_with sqlite pdo-sqlite) + $(use_with firebird pdo-firebird "${EPREFIX}/usr") + $(use_with oci8-instant-client pdo-oci) + ) + fi + + # readline/libedit support + our_conf+=( + $(use_with readline readline "${EPREFIX}/usr") + $(use_with libedit) + ) + + # Session support + if use session ; then + our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") ) + else + our_conf+=( $(use_enable session) ) + fi + + # Use pic for shared modules such as apache2's mod_php + our_conf+=( --with-pic ) + + # we use the system copy of pcre + # --with-external-pcre affects ext/pcre + our_conf+=( + --with-external-pcre + $(use_with jit pcre-jit) + ) + + # Catch CFLAGS problems + # Fixes bug #14067. + # Changed order to run it in reverse for bug #32022 and #12021. + replace-cpu-flags "k6*" "i586" + + # Cache the ./configure test results between SAPIs. + our_conf+=( --cache-file="${T}/config.cache" ) + + # Support user-passed configuration parameters + our_conf+=( ${EXTRA_ECONF:-} ) + + # Support the Apache2 extras, they must be set globally for all + # SAPIs to work correctly, especially for external PHP extensions + + local one_sapi + local sapi + mkdir -p "${WORKDIR}/sapis-build" || die + for one_sapi in $SAPIS ; do + use "${one_sapi}" || continue + php_set_ini_dir "${one_sapi}" + + # The BUILD_DIR variable is used to determine where to output + # the files that autotools creates. This was all originally + # based on the autotools-utils eclass. + BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}" + cp -a "${S}" "${BUILD_DIR}" || die + cd "${BUILD_DIR}" || die + + local sapi_conf=( + --with-config-file-path="${PHP_INI_DIR}" + --with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}" + ) + + for sapi in $SAPIS ; do + case "$sapi" in + cli|cgi|embed|fpm|phpdbg) + if [[ "${one_sapi}" == "${sapi}" ]] ; then + sapi_conf+=( "--enable-${sapi}" ) + if [[ "fpm" == "${sapi}" ]] ; then + sapi_conf+=( + $(use_with acl fpm-acl) + $(use_with systemd fpm-systemd) + ) + fi + else + sapi_conf+=( "--disable-${sapi}" ) + fi + ;; + + apache2) + if [[ "${one_sapi}" == "${sapi}" ]] ; then + sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" ) + else + sapi_conf+=( --without-apxs2 ) + fi + ;; + esac + done + + # Construct the $myeconfargs array by concatenating $our_conf + # (the common args) and $sapi_conf (the SAPI-specific args). + local myeconfargs=( "${our_conf[@]}" ) + myeconfargs+=( "${sapi_conf[@]}" ) + + pushd "${BUILD_DIR}" > /dev/null || die + econf "${myeconfargs[@]}" + popd > /dev/null || die + done +} + +src_compile() { + # snmp seems to run during src_compile, too (bug #324739) + addpredict /usr/share/snmp/mibs/.index #nowarn + addpredict /var/lib/net-snmp/mib_indexes #nowarn + + local sapi + for sapi in ${SAPIS} ; do + if use "${sapi}"; then + cd "${WORKDIR}/sapis-build/$sapi" || \ + die "Failed to change dir to ${WORKDIR}/sapis-build/$1" + emake + fi + done +} + +src_install() { + # see bug #324739 for what happens when we don't have that + addpredict /usr/share/snmp/mibs/.index #nowarn + + # grab the first SAPI that got built and install common files from there + local first_sapi="", sapi="" + for sapi in $SAPIS ; do + if use $sapi ; then + first_sapi=$sapi + break + fi + done + + # Makefile forgets to create this before trying to write to it... + dodir "${PHP_DESTDIR#${EPREFIX}}/bin" + + # Install php environment (without any sapis) + cd "${WORKDIR}/sapis-build/$first_sapi" || die + emake INSTALL_ROOT="${D}" \ + install-build install-headers install-programs + + local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)" + + # Create the directory where we'll put version-specific php scripts + keepdir "/usr/share/php${PHP_MV}" + + local file="" + local sapi_list="" + + for sapi in ${SAPIS}; do + if use "${sapi}" ; then + einfo "Installing SAPI: ${sapi}" + cd "${WORKDIR}/sapis-build/${sapi}" || die + + if [[ "${sapi}" == "apache2" ]] ; then + # We're specifically not using emake install-sapi as libtool + # may cause unnecessary relink failures (see bug #351266) + insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/" + newins ".libs/libphp$(get_libname)" \ + "libphp${PHP_MV}$(get_libname)" + keepdir "/usr/$(get_libdir)/apache2/modules" + else + # needed each time, php_install_ini would reset it + local dest="${PHP_DESTDIR#${EPREFIX}}" + into "${dest}" + case "$sapi" in + cli) + source="sapi/cli/php" + # Install the "phar" archive utility. + if use phar ; then + emake INSTALL_ROOT="${D}" install-pharcmd + dosym "..${dest#/usr}/bin/phar" "/usr/bin/phar${SLOT}" + fi + ;; + cgi) + source="sapi/cgi/php-cgi" + ;; + fpm) + source="sapi/fpm/php-fpm" + ;; + embed) + source="libs/libphp$(get_libname)" + ;; + phpdbg) + source="sapi/phpdbg/phpdbg" + ;; + *) + die "unhandled sapi in src_install" + ;; + esac + + if [[ "${source}" == *"$(get_libname)" ]]; then + dolib.so "${source}" + else + dobin "${source}" + local name="$(basename ${source})" + dosym "..${dest#/usr}/bin/${name}" "/usr/bin/${name}${SLOT}" + fi + fi + + php_install_ini "${sapi}" + + # construct correct SAPI string for php-config + # thanks to ferringb for the bash voodoo + if [[ "${sapi}" == "apache2" ]]; then + sapi_list="${sapi_list:+${sapi_list} }apache2handler" + else + sapi_list="${sapi_list:+${sapi_list} }${sapi}" + fi + fi + done + + # Installing opcache module + if use opcache ; then + into "${PHP_DESTDIR#${EPREFIX}}" + dolib.so "modules/opcache$(get_libname)" + fi + + # Install env.d files + newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}" + sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die + sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die + + # set php-config variable correctly (bug #278439) + sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \ + "${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die + + if use fpm ; then + if use systemd; then + systemd_newunit "${FILESDIR}/php-fpm_at.service" \ + "php-fpm@${SLOT}.service" + else + systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \ + "php-fpm@${SLOT}.service" + fi + fi +} + +src_test() { + echo ">>> Test phase [test]: ${CATEGORY}/${PF}" + PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php" + if [[ ! -x "${PHP_BIN}" ]] ; then + ewarn "Test phase requires USE=cli, skipping" + return + else + export TEST_PHP_EXECUTABLE="${PHP_BIN}" + fi + + if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then + export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" + fi + + if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then + export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" + fi + + SKIP_ONLINE_TESTS=1 REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \ + "session.save_path=${T}" \ + "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \ + "session.save_path=${T}" + + for name in ${EXPECTED_TEST_FAILURES}; do + mv "${name}.out" "${name}.out.orig" 2>/dev/null || die + done + + local failed="$(find -name '*.out')" + if [[ ${failed} != "" ]] ; then + ewarn "The following test cases failed unexpectedly:" + for name in ${failed}; do + ewarn " ${name/.out/}" + done + else + einfo "No unexpected test failures, all fine" + fi + + if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then + local passed="" + for name in ${EXPECTED_TEST_FAILURES}; do + [[ -f "${name}.diff" ]] && continue + passed="${passed} ${name}" + done + if [[ ${passed} != "" ]] ; then + einfo "The following test cases passed unexpectedly:" + for name in ${passed}; do + ewarn " ${passed}" + done + else + einfo "None of the known-to-fail tests passed, all fine" + fi + fi +} + +pkg_postinst() { + # Output some general info to the user + if use apache2 ; then + elog + elog "To enable PHP in apache, you will need to add \"-D PHP\" to" + elog "your apache2 command. OpenRC users can append that string to" + elog "APACHE2_OPTS in /etc/conf.d/apache2." + elog + elog "The apache module configuration file 70_mod_php.conf is" + elog "provided (and maintained) by eselect-php." + elog + fi + + # Create the symlinks for php + local m + for m in ${SAPIS}; do + [[ ${m} == 'embed' ]] && continue; + if use $m ; then + local ci=$(eselect php show $m) + if [[ -z $ci ]]; then + eselect php set $m php${SLOT} || die + einfo "Switched ${m} to use php:${SLOT}" + einfo + elif [[ $ci != "php${SLOT}" ]] ; then + elog "To switch $m to use php:${SLOT}, run" + elog " eselect php set $m php${SLOT}" + elog + fi + fi + done + + # Remove dead symlinks for SAPIs that were just disabled. For + # example, if the user has the cgi SAPI enabled, then he has an + # eselect-php symlink for it. If he later reinstalls PHP with + # USE="-cgi", that symlink will break. This call to eselect is + # supposed to remove that dead link per bug 572436. + eselect php cleanup || die + + if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then + elog "To build extensions for this version of PHP, you will need to" + elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable." + elog + fi + + # Warn about the removal of PHP_INI_VERSION if the user has it set. + if [[ -n "${PHP_INI_VERSION}" ]]; then + ewarn 'The PHP_INI_VERSION variable has been phased out. You may' + ewarn 'remove it from your configuration at your convenience. See' + ewarn + ewarn ' https://bugs.gentoo.org/611214' + ewarn + ewarn 'for more information.' + fi + + elog "For details on how version slotting works, please see" + elog "the wiki:" + elog + elog " https://wiki.gentoo.org/wiki/PHP" + elog +} + +pkg_postrm() { + # This serves two purposes. First, if we have just removed the last + # installed version of PHP, then this will remove any dead symlinks + # belonging to eselect-php. Second, if a user upgrades slots from + # (say) 5.6 to 7.0 and depcleans the old slot, then this will update + # his existing symlinks to point to the new 7.0 installation. The + # latter is bug 432962. + # + # Note: the eselect-php package may not be installed at this point, + # so we can't die() if this command fails. + eselect php cleanup +} diff --git a/dev-lang/php/php-8.2.5-r1.ebuild b/dev-lang/php/php-8.2.5-r1.ebuild deleted file mode 100644 index 7da6cd162462..000000000000 --- a/dev-lang/php/php-8.2.5-r1.ebuild +++ /dev/null @@ -1,763 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -WANT_AUTOMAKE="none" - -inherit flag-o-matic multilib systemd autotools - -MY_PV=${PV/_rc/RC} -DESCRIPTION="The PHP language runtime engine" -HOMEPAGE="https://www.php.net/" -SRC_URI="https://www.php.net/distributions/${P}.tar.xz" -#SRC_URI="https://downloads.php.net/~pierrick/php-${MY_PV}.tar.xz" - -LICENSE="PHP-3.01 - BSD - Zend-2.0 - bcmath? ( LGPL-2.1+ ) - fpm? ( BSD-2 ) - gd? ( gd ) - unicode? ( BSD-2 LGPL-2.1 )" - -SLOT="$(ver_cut 1-2)" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" - -S="${WORKDIR}/${PN}-${MY_PV}" - -# We can build the following SAPIs in the given order -SAPIS="embed cli cgi fpm apache2 phpdbg" - -# SAPIs and SAPI-specific USE flags (cli SAPI is default on): -IUSE="${IUSE} - ${SAPIS/cli/+cli} - threads" - -IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar - cdb cjk coverage +ctype curl debug - enchant exif ffi +fileinfo +filter firebird - +flatfile ftp gd gdbm gmp +iconv imap inifile - intl iodbc +jit kerberos ldap ldap-sasl libedit lmdb - mhash mssql mysql mysqli nls - oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm - readline selinux +session session-mm sharedmem - +simplexml snmp soap sockets sodium spell sqlite ssl - sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode webp - +xml xmlreader xmlwriter xpm xslt zip zlib" - -# Without USE=readline or libedit, the interactive "php -a" CLI will hang. -# The Oracle instant client provides its own incompatible ldap library. -REQUIRED_USE=" - || ( cli cgi fpm apache2 embed phpdbg ) - avif? ( gd zlib ) - cli? ( ^^ ( readline libedit ) ) - !cli? ( ?? ( readline libedit ) ) - truetype? ( gd zlib ) - webp? ( gd zlib ) - cjk? ( gd zlib ) - exif? ( gd zlib ) - xpm? ( gd zlib ) - gd? ( zlib ) - simplexml? ( xml ) - soap? ( xml ) - xmlreader? ( xml ) - xmlwriter? ( xml ) - xslt? ( xml ) - ldap-sasl? ( ldap ) - oci8-instant-client? ( !ldap ) - qdbm? ( !gdbm ) - session-mm? ( session !threads ) - mysql? ( || ( mysqli pdo ) ) - firebird? ( pdo ) - mssql? ( pdo ) -" - -RESTRICT="!test? ( test )" - -# The supported (that is, autodetected) versions of BDB are listed in -# the ./configure script. Other versions *work*, but we need to stick to -# the ones that can be detected to avoid a repeat of bug #564824. -COMMON_DEPEND=" - >=app-eselect/eselect-php-0.9.7[apache2?,fpm?] - >=dev-libs/libpcre2-10.30[jit?,unicode] - fpm? ( acl? ( sys-apps/acl ) apparmor? ( sys-libs/libapparmor ) selinux? ( sys-libs/libselinux ) ) - apache2? ( www-servers/apache[apache2_modules_unixd(+),threads=] ) - argon2? ( app-crypt/argon2:= ) - avif? ( media-libs/libavif:= ) - berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:4.8 ) ) - bzip2? ( app-arch/bzip2:0= ) - cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) - coverage? ( dev-util/lcov ) - curl? ( >=net-misc/curl-7.29.0 ) - enchant? ( app-text/enchant:2 ) - ffi? ( >=dev-libs/libffi-3.0.11:= ) - firebird? ( dev-db/firebird ) - gd? ( media-libs/libjpeg-turbo:0= media-libs/libpng:0= ) - gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) - gmp? ( dev-libs/gmp:0= ) - iconv? ( virtual/libiconv ) - imap? ( net-libs/c-client[kerberos=,ssl=] ) - intl? ( dev-libs/icu:= ) - kerberos? ( virtual/krb5 ) - ldap? ( >=net-nds/openldap-1.2.11:= ) - ldap-sasl? ( dev-libs/cyrus-sasl ) - libedit? ( dev-libs/libedit ) - lmdb? ( dev-db/lmdb:= ) - mssql? ( dev-db/freetds[mssql] ) - nls? ( sys-devel/gettext ) - oci8-instant-client? ( dev-db/oracle-instantclient[sdk] ) - odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( >=dev-db/unixODBC-1.8.13 ) ) - postgres? ( >=dev-db/postgresql-9.1:* ) - qdbm? ( dev-db/qdbm ) - readline? ( sys-libs/readline:0= ) - session-mm? ( dev-libs/mm ) - snmp? ( >=net-analyzer/net-snmp-5.2 ) - sodium? ( dev-libs/libsodium:=[-minimal] ) - spell? ( >=app-text/aspell-0.50 ) - sqlite? ( >=dev-db/sqlite-3.7.6.3 ) - ssl? ( >=dev-libs/openssl-1.0.2:0= ) - tidy? ( app-text/htmltidy ) - tokyocabinet? ( dev-db/tokyocabinet ) - truetype? ( =media-libs/freetype-2* ) - unicode? ( dev-libs/oniguruma:= ) - webp? ( media-libs/libwebp:0= ) - xml? ( >=dev-libs/libxml2-2.9.0 ) - xpm? ( x11-libs/libXpm ) - xslt? ( dev-libs/libxslt ) - zip? ( >=dev-libs/libzip-1.2.0:= ) - zlib? ( >=sys-libs/zlib-1.2.0.4:0= ) -" - -IDEPEND=">=app-eselect/eselect-php-0.9.7[apache2?,fpm?]" - -RDEPEND="${COMMON_DEPEND} - virtual/mta - fpm? ( - selinux? ( sec-policy/selinux-phpfpm ) - systemd? ( sys-apps/systemd ) )" - -# Bison isn't actually needed when building from a release tarball -# However, the configure script will warn if it's absent or if you -# have an incompatible version installed. See bug 593278. -DEPEND="${COMMON_DEPEND} - app-arch/xz-utils - >=sys-devel/bison-3.0.1" - -BDEPEND="virtual/pkgconfig" - -PHP_MV="$(ver_cut 1)" - -PATCHES=( - "${FILESDIR}/php-iodbc-header-location.patch" - "${FILESDIR}/php-capstone-optional.patch" -) - -php_install_ini() { - local phpsapi="${1}" - - # work out where we are installing the ini file - php_set_ini_dir "${phpsapi}" - - # Always install the production INI file, bug 611214. - local phpinisrc="php.ini-production-${phpsapi}" - cp php.ini-production "${phpinisrc}" || die - - # default to /tmp for save_path, bug #282768 - sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die - - # Set the extension dir - sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \ - -i "${phpinisrc}" || die - - # Set the include path to point to where we want to find PEAR packages - sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die - - insinto "${PHP_INI_DIR#${EPREFIX}}" - newins "${phpinisrc}" php.ini - - elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}" - elog - - dodir "${PHP_EXT_INI_DIR#${EPREFIX}}" - dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}" - - if use opcache; then - elog "Adding opcache to $PHP_EXT_INI_DIR" - echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \ - "${D}/${PHP_EXT_INI_DIR}"/opcache.ini - dosym "../ext/opcache.ini" \ - "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini" - fi - - # SAPI-specific handling - if [[ "${sapi}" == "fpm" ]] ; then - einfo "Installing FPM config files php-fpm.conf and www.conf" - insinto "${PHP_INI_DIR#${EPREFIX}}" - doins sapi/fpm/php-fpm.conf - insinto "${PHP_INI_DIR#${EPREFIX}}/fpm.d" - doins sapi/fpm/www.conf - fi - - dodoc php.ini-{development,production} -} - -php_set_ini_dir() { - PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}" - PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext" - PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active" -} - -src_prepare() { - default - - # In php-7.x, the FPM pool configuration files have been split off - # of the main config. By default the pool config files go in - # e.g. /etc/php-fpm.d, which isn't slotted. So here we move the - # include directory to a subdirectory "fpm.d" of $PHP_INI_DIR. Later - # we'll install the pool configuration file "www.conf" there. - php_set_ini_dir fpm - sed -i "s~^include=.*$~include=${PHP_INI_DIR}/fpm.d/*.conf~" \ - sapi/fpm/php-fpm.conf.in \ - || die 'failed to move the include directory in php-fpm.conf' - - # Emulate buildconf to support cross-compilation - rm -fr aclocal.m4 autom4te.cache config.cache \ - configure main/php_config.h.in || die - eautoconf --force - eautoheader - - # Remove false positive test failures - # stream_isatty fails due to portage redirects - # curl tests here fail for network sandbox issues - # session tests here fail because we set the session directory to $T - rm tests/output/stream_isatty_err.phpt \ - tests/output/stream_isatty_out-err.phpt \ - tests/output/stream_isatty_out.phpt \ - ext/curl/tests/bug76675.phpt \ - ext/curl/tests/bug77535.phpt \ - ext/curl/tests/curl_error_basic.phpt \ - ext/session/tests/bug74514.phpt \ - ext/session/tests/bug74936.phpt || die - -} - -src_configure() { - addpredict /usr/share/snmp/mibs/.index #nowarn - addpredict /var/lib/net-snmp/mib_indexes #nowarn - - PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}" - - # The php-fpm config file wants localstatedir to be ${EPREFIX}/var - # and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002. - local our_conf=( - --prefix="${PHP_DESTDIR}" - --mandir="${PHP_DESTDIR}/man" - --infodir="${PHP_DESTDIR}/info" - --libdir="${PHP_DESTDIR}/lib" - --with-libdir="$(get_libdir)" - --localstatedir="${EPREFIX}/var" - --without-pear - --without-valgrind - --enable-ipv6 - $(use_enable threads zts) - ) - - our_conf+=( - $(use_with apparmor fpm-apparmor) - $(use_with argon2 password-argon2 "${EPREFIX}/usr") - $(use_with avif) - $(use_enable bcmath) - $(use_with bzip2 bz2 "${EPREFIX}/usr") - $(use_enable calendar) - $(use_enable coverage gcov) - $(use_enable ctype) - $(use_with curl) - $(use_enable xml dom) - $(use_with enchant) - $(use_enable exif) - $(use_with ffi) - $(use_enable fileinfo) - $(use_enable filter) - $(use_enable ftp) - $(use_with nls gettext "${EPREFIX}/usr") - $(use_with gmp gmp "${EPREFIX}/usr") - $(use_with mhash mhash "${EPREFIX}/usr") - $(use_with iconv iconv \ - $(use elibc_glibc || use elibc_musl || echo "${EPREFIX}/usr")) - $(use_enable intl) - $(use_with kerberos) - $(use_with xml libxml) - $(use_enable unicode mbstring) - $(use_with ssl openssl) - $(use_enable pcntl) - $(use_enable phar) - $(use_enable pdo) - $(use_enable opcache) - $(use_with postgres pgsql "${EPREFIX}/usr") - $(use_enable posix) - $(use_with selinux fpm-selinux) - $(use_with spell pspell "${EPREFIX}/usr") - $(use_enable simplexml) - $(use_enable sharedmem shmop) - $(use_with snmp snmp "${EPREFIX}/usr") - $(use_enable soap) - $(use_enable sockets) - $(use_with sodium) - $(use_with sqlite sqlite3) - $(use_enable sysvipc sysvmsg) - $(use_enable sysvipc sysvsem) - $(use_enable sysvipc sysvshm) - $(use_with tidy tidy "${EPREFIX}/usr") - $(use_enable tokenizer) - $(use_enable xml) - $(use_enable xmlreader) - $(use_enable xmlwriter) - $(use_with xslt xsl) - $(use_with zip) - $(use_with zlib zlib "${EPREFIX}/usr") - $(use_enable debug) - ) - - # DBA support - if use cdb || use berkdb || use flatfile || use gdbm || use inifile \ - || use qdbm || use lmdb || use tokyocabinet ; then - our_conf+=( "--enable-dba" ) - fi - - # DBA drivers support - our_conf+=( - $(use_with cdb) - $(use_with berkdb db4 "${EPREFIX}/usr") - $(use_enable flatfile) - $(use_with gdbm gdbm "${EPREFIX}/usr") - $(use_enable inifile) - $(use_with qdbm qdbm "${EPREFIX}/usr") - $(use_with tokyocabinet tcadb "${EPREFIX}/usr") - $(use_with lmdb lmdb "${EPREFIX}/usr") - ) - - # Support for the GD graphics library - our_conf+=( - $(use_with truetype freetype) - $(use_enable cjk gd-jis-conv) - $(use_with gd jpeg) - $(use_with xpm) - $(use_with webp) - ) - # enable gd last, so configure can pick up the previous settings - our_conf+=( $(use_enable gd) ) - - # IMAP support - if use imap ; then - our_conf+=( - $(use_with imap imap "${EPREFIX}/usr") - $(use_with ssl imap-ssl "${EPREFIX}/usr") - ) - fi - - # LDAP support - if use ldap ; then - our_conf+=( - $(use_with ldap ldap "${EPREFIX}/usr") - $(use_with ldap-sasl) - ) - fi - - # MySQL support - our_conf+=( $(use_with mysqli) ) - - local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock" - if use mysql || use mysqli ; then - our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") ) - fi - - # ODBC support - if use odbc && use iodbc ; then - our_conf+=( - --without-unixODBC - --with-iodbc - $(use_with pdo pdo-odbc "iODBC,${EPREFIX}/usr") - ) - elif use odbc ; then - our_conf+=( - --with-unixODBC="${EPREFIX}/usr" - --without-iodbc - $(use_with pdo pdo-odbc "unixODBC,${EPREFIX}/usr") - ) - else - our_conf+=( - --without-unixODBC - --without-iodbc - --without-pdo-odbc - ) - fi - - # Oracle support - our_conf+=( $(use_with oci8-instant-client oci8) ) - - # PDO support - if use pdo ; then - our_conf+=( - $(use_with mssql pdo-dblib "${EPREFIX}/usr") - $(use_with mysql pdo-mysql "mysqlnd") - $(use_with postgres pdo-pgsql) - $(use_with sqlite pdo-sqlite) - $(use_with firebird pdo-firebird "${EPREFIX}/usr") - $(use_with oci8-instant-client pdo-oci) - ) - fi - - # readline/libedit support - our_conf+=( - $(use_with readline readline "${EPREFIX}/usr") - $(use_with libedit) - ) - - # Session support - if use session ; then - our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") ) - else - our_conf+=( $(use_enable session) ) - fi - - # Use pic for shared modules such as apache2's mod_php - our_conf+=( --with-pic ) - - # we use the system copy of pcre - # --with-external-pcre affects ext/pcre - our_conf+=( - --with-external-pcre - $(use_with jit pcre-jit) - ) - - # Catch CFLAGS problems - # Fixes bug #14067. - # Changed order to run it in reverse for bug #32022 and #12021. - replace-cpu-flags "k6*" "i586" - - # Cache the ./configure test results between SAPIs. - our_conf+=( --cache-file="${T}/config.cache" ) - - # Support user-passed configuration parameters - our_conf+=( ${EXTRA_ECONF:-} ) - - # Support the Apache2 extras, they must be set globally for all - # SAPIs to work correctly, especially for external PHP extensions - - local one_sapi - local sapi - mkdir -p "${WORKDIR}/sapis-build" || die - for one_sapi in $SAPIS ; do - use "${one_sapi}" || continue - php_set_ini_dir "${one_sapi}" - - # The BUILD_DIR variable is used to determine where to output - # the files that autotools creates. This was all originally - # based on the autotools-utils eclass. - BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}" - cp -a "${S}" "${BUILD_DIR}" || die - cd "${BUILD_DIR}" || die - - local sapi_conf=( - --with-config-file-path="${PHP_INI_DIR}" - --with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}" - ) - - for sapi in $SAPIS ; do - case "$sapi" in - cli|cgi|embed|fpm|phpdbg) - if [[ "${one_sapi}" == "${sapi}" ]] ; then - sapi_conf+=( "--enable-${sapi}" ) - if [[ "fpm" == "${sapi}" ]] ; then - sapi_conf+=( - $(use_with acl fpm-acl) - $(use_with systemd fpm-systemd) - ) - fi - else - sapi_conf+=( "--disable-${sapi}" ) - fi - ;; - - apache2) - if [[ "${one_sapi}" == "${sapi}" ]] ; then - sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" ) - else - sapi_conf+=( --without-apxs2 ) - fi - ;; - esac - done - - # Construct the $myeconfargs array by concatenating $our_conf - # (the common args) and $sapi_conf (the SAPI-specific args). - local myeconfargs=( "${our_conf[@]}" ) - myeconfargs+=( "${sapi_conf[@]}" ) - - pushd "${BUILD_DIR}" > /dev/null || die - econf "${myeconfargs[@]}" - popd > /dev/null || die - done -} - -src_compile() { - # snmp seems to run during src_compile, too (bug #324739) - addpredict /usr/share/snmp/mibs/.index #nowarn - addpredict /var/lib/net-snmp/mib_indexes #nowarn - - local sapi - for sapi in ${SAPIS} ; do - if use "${sapi}"; then - cd "${WORKDIR}/sapis-build/$sapi" || \ - die "Failed to change dir to ${WORKDIR}/sapis-build/$1" - emake - fi - done -} - -src_install() { - # see bug #324739 for what happens when we don't have that - addpredict /usr/share/snmp/mibs/.index #nowarn - - # grab the first SAPI that got built and install common files from there - local first_sapi="", sapi="" - for sapi in $SAPIS ; do - if use $sapi ; then - first_sapi=$sapi - break - fi - done - - # Makefile forgets to create this before trying to write to it... - dodir "${PHP_DESTDIR#${EPREFIX}}/bin" - - # Install php environment (without any sapis) - cd "${WORKDIR}/sapis-build/$first_sapi" || die - emake INSTALL_ROOT="${D}" \ - install-build install-headers install-programs - - local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)" - - # Create the directory where we'll put version-specific php scripts - keepdir "/usr/share/php${PHP_MV}" - - local file="" - local sapi_list="" - - for sapi in ${SAPIS}; do - if use "${sapi}" ; then - einfo "Installing SAPI: ${sapi}" - cd "${WORKDIR}/sapis-build/${sapi}" || die - - if [[ "${sapi}" == "apache2" ]] ; then - # We're specifically not using emake install-sapi as libtool - # may cause unnecessary relink failures (see bug #351266) - insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/" - newins ".libs/libphp$(get_libname)" \ - "libphp${PHP_MV}$(get_libname)" - keepdir "/usr/$(get_libdir)/apache2/modules" - else - # needed each time, php_install_ini would reset it - local dest="${PHP_DESTDIR#${EPREFIX}}" - into "${dest}" - case "$sapi" in - cli) - source="sapi/cli/php" - # Install the "phar" archive utility. - if use phar ; then - emake INSTALL_ROOT="${D}" install-pharcmd - dosym "..${dest#/usr}/bin/phar" "/usr/bin/phar${SLOT}" - fi - ;; - cgi) - source="sapi/cgi/php-cgi" - ;; - fpm) - source="sapi/fpm/php-fpm" - ;; - embed) - source="libs/libphp$(get_libname)" - ;; - phpdbg) - source="sapi/phpdbg/phpdbg" - ;; - *) - die "unhandled sapi in src_install" - ;; - esac - - if [[ "${source}" == *"$(get_libname)" ]]; then - dolib.so "${source}" - else - dobin "${source}" - local name="$(basename ${source})" - dosym "..${dest#/usr}/bin/${name}" "/usr/bin/${name}${SLOT}" - fi - fi - - php_install_ini "${sapi}" - - # construct correct SAPI string for php-config - # thanks to ferringb for the bash voodoo - if [[ "${sapi}" == "apache2" ]]; then - sapi_list="${sapi_list:+${sapi_list} }apache2handler" - else - sapi_list="${sapi_list:+${sapi_list} }${sapi}" - fi - fi - done - - # Installing opcache module - if use opcache ; then - into "${PHP_DESTDIR#${EPREFIX}}" - dolib.so "modules/opcache$(get_libname)" - fi - - # Install env.d files - newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}" - sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die - sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die - - # set php-config variable correctly (bug #278439) - sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \ - "${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die - - if use fpm ; then - if use systemd; then - systemd_newunit "${FILESDIR}/php-fpm_at.service" \ - "php-fpm@${SLOT}.service" - else - systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \ - "php-fpm@${SLOT}.service" - fi - fi -} - -src_test() { - echo ">>> Test phase [test]: ${CATEGORY}/${PF}" - PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php" - if [[ ! -x "${PHP_BIN}" ]] ; then - ewarn "Test phase requires USE=cli, skipping" - return - else - export TEST_PHP_EXECUTABLE="${PHP_BIN}" - fi - - if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then - export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" - fi - - if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then - export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" - fi - - SKIP_ONLINE_TESTS=1 REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \ - "session.save_path=${T}" \ - "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \ - "session.save_path=${T}" - - for name in ${EXPECTED_TEST_FAILURES}; do - mv "${name}.out" "${name}.out.orig" 2>/dev/null || die - done - - local failed="$(find -name '*.out')" - if [[ ${failed} != "" ]] ; then - ewarn "The following test cases failed unexpectedly:" - for name in ${failed}; do - ewarn " ${name/.out/}" - done - else - einfo "No unexpected test failures, all fine" - fi - - if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then - local passed="" - for name in ${EXPECTED_TEST_FAILURES}; do - [[ -f "${name}.diff" ]] && continue - passed="${passed} ${name}" - done - if [[ ${passed} != "" ]] ; then - einfo "The following test cases passed unexpectedly:" - for name in ${passed}; do - ewarn " ${passed}" - done - else - einfo "None of the known-to-fail tests passed, all fine" - fi - fi -} - -pkg_postinst() { - # Output some general info to the user - if use apache2 ; then - elog - elog "To enable PHP in apache, you will need to add \"-D PHP\" to" - elog "your apache2 command. OpenRC users can append that string to" - elog "APACHE2_OPTS in /etc/conf.d/apache2." - elog - elog "The apache module configuration file 70_mod_php.conf is" - elog "provided (and maintained) by eselect-php." - elog - fi - - # Create the symlinks for php - local m - for m in ${SAPIS}; do - [[ ${m} == 'embed' ]] && continue; - if use $m ; then - local ci=$(eselect php show $m) - if [[ -z $ci ]]; then - eselect php set $m php${SLOT} || die - einfo "Switched ${m} to use php:${SLOT}" - einfo - elif [[ $ci != "php${SLOT}" ]] ; then - elog "To switch $m to use php:${SLOT}, run" - elog " eselect php set $m php${SLOT}" - elog - fi - fi - done - - # Remove dead symlinks for SAPIs that were just disabled. For - # example, if the user has the cgi SAPI enabled, then he has an - # eselect-php symlink for it. If he later reinstalls PHP with - # USE="-cgi", that symlink will break. This call to eselect is - # supposed to remove that dead link per bug 572436. - eselect php cleanup || die - - if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then - elog "To build extensions for this version of PHP, you will need to" - elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable." - elog - fi - - # Warn about the removal of PHP_INI_VERSION if the user has it set. - if [[ -n "${PHP_INI_VERSION}" ]]; then - ewarn 'The PHP_INI_VERSION variable has been phased out. You may' - ewarn 'remove it from your configuration at your convenience. See' - ewarn - ewarn ' https://bugs.gentoo.org/611214' - ewarn - ewarn 'for more information.' - fi - - elog "For details on how version slotting works, please see" - elog "the wiki:" - elog - elog " https://wiki.gentoo.org/wiki/PHP" - elog -} - -pkg_postrm() { - # This serves two purposes. First, if we have just removed the last - # installed version of PHP, then this will remove any dead symlinks - # belonging to eselect-php. Second, if a user upgrades slots from - # (say) 5.6 to 7.0 and depcleans the old slot, then this will update - # his existing symlinks to point to the new 7.0 installation. The - # latter is bug 432962. - # - # Note: the eselect-php package may not be installed at this point, - # so we can't die() if this command fails. - eselect php cleanup -} diff --git a/dev-lang/php/php-8.2.7.ebuild b/dev-lang/php/php-8.2.7.ebuild new file mode 100644 index 000000000000..7da6cd162462 --- /dev/null +++ b/dev-lang/php/php-8.2.7.ebuild @@ -0,0 +1,763 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +WANT_AUTOMAKE="none" + +inherit flag-o-matic multilib systemd autotools + +MY_PV=${PV/_rc/RC} +DESCRIPTION="The PHP language runtime engine" +HOMEPAGE="https://www.php.net/" +SRC_URI="https://www.php.net/distributions/${P}.tar.xz" +#SRC_URI="https://downloads.php.net/~pierrick/php-${MY_PV}.tar.xz" + +LICENSE="PHP-3.01 + BSD + Zend-2.0 + bcmath? ( LGPL-2.1+ ) + fpm? ( BSD-2 ) + gd? ( gd ) + unicode? ( BSD-2 LGPL-2.1 )" + +SLOT="$(ver_cut 1-2)" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" + +S="${WORKDIR}/${PN}-${MY_PV}" + +# We can build the following SAPIs in the given order +SAPIS="embed cli cgi fpm apache2 phpdbg" + +# SAPIs and SAPI-specific USE flags (cli SAPI is default on): +IUSE="${IUSE} + ${SAPIS/cli/+cli} + threads" + +IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar + cdb cjk coverage +ctype curl debug + enchant exif ffi +fileinfo +filter firebird + +flatfile ftp gd gdbm gmp +iconv imap inifile + intl iodbc +jit kerberos ldap ldap-sasl libedit lmdb + mhash mssql mysql mysqli nls + oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm + readline selinux +session session-mm sharedmem + +simplexml snmp soap sockets sodium spell sqlite ssl + sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode webp + +xml xmlreader xmlwriter xpm xslt zip zlib" + +# Without USE=readline or libedit, the interactive "php -a" CLI will hang. +# The Oracle instant client provides its own incompatible ldap library. +REQUIRED_USE=" + || ( cli cgi fpm apache2 embed phpdbg ) + avif? ( gd zlib ) + cli? ( ^^ ( readline libedit ) ) + !cli? ( ?? ( readline libedit ) ) + truetype? ( gd zlib ) + webp? ( gd zlib ) + cjk? ( gd zlib ) + exif? ( gd zlib ) + xpm? ( gd zlib ) + gd? ( zlib ) + simplexml? ( xml ) + soap? ( xml ) + xmlreader? ( xml ) + xmlwriter? ( xml ) + xslt? ( xml ) + ldap-sasl? ( ldap ) + oci8-instant-client? ( !ldap ) + qdbm? ( !gdbm ) + session-mm? ( session !threads ) + mysql? ( || ( mysqli pdo ) ) + firebird? ( pdo ) + mssql? ( pdo ) +" + +RESTRICT="!test? ( test )" + +# The supported (that is, autodetected) versions of BDB are listed in +# the ./configure script. Other versions *work*, but we need to stick to +# the ones that can be detected to avoid a repeat of bug #564824. +COMMON_DEPEND=" + >=app-eselect/eselect-php-0.9.7[apache2?,fpm?] + >=dev-libs/libpcre2-10.30[jit?,unicode] + fpm? ( acl? ( sys-apps/acl ) apparmor? ( sys-libs/libapparmor ) selinux? ( sys-libs/libselinux ) ) + apache2? ( www-servers/apache[apache2_modules_unixd(+),threads=] ) + argon2? ( app-crypt/argon2:= ) + avif? ( media-libs/libavif:= ) + berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:4.8 ) ) + bzip2? ( app-arch/bzip2:0= ) + cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) + coverage? ( dev-util/lcov ) + curl? ( >=net-misc/curl-7.29.0 ) + enchant? ( app-text/enchant:2 ) + ffi? ( >=dev-libs/libffi-3.0.11:= ) + firebird? ( dev-db/firebird ) + gd? ( media-libs/libjpeg-turbo:0= media-libs/libpng:0= ) + gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) + gmp? ( dev-libs/gmp:0= ) + iconv? ( virtual/libiconv ) + imap? ( net-libs/c-client[kerberos=,ssl=] ) + intl? ( dev-libs/icu:= ) + kerberos? ( virtual/krb5 ) + ldap? ( >=net-nds/openldap-1.2.11:= ) + ldap-sasl? ( dev-libs/cyrus-sasl ) + libedit? ( dev-libs/libedit ) + lmdb? ( dev-db/lmdb:= ) + mssql? ( dev-db/freetds[mssql] ) + nls? ( sys-devel/gettext ) + oci8-instant-client? ( dev-db/oracle-instantclient[sdk] ) + odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( >=dev-db/unixODBC-1.8.13 ) ) + postgres? ( >=dev-db/postgresql-9.1:* ) + qdbm? ( dev-db/qdbm ) + readline? ( sys-libs/readline:0= ) + session-mm? ( dev-libs/mm ) + snmp? ( >=net-analyzer/net-snmp-5.2 ) + sodium? ( dev-libs/libsodium:=[-minimal] ) + spell? ( >=app-text/aspell-0.50 ) + sqlite? ( >=dev-db/sqlite-3.7.6.3 ) + ssl? ( >=dev-libs/openssl-1.0.2:0= ) + tidy? ( app-text/htmltidy ) + tokyocabinet? ( dev-db/tokyocabinet ) + truetype? ( =media-libs/freetype-2* ) + unicode? ( dev-libs/oniguruma:= ) + webp? ( media-libs/libwebp:0= ) + xml? ( >=dev-libs/libxml2-2.9.0 ) + xpm? ( x11-libs/libXpm ) + xslt? ( dev-libs/libxslt ) + zip? ( >=dev-libs/libzip-1.2.0:= ) + zlib? ( >=sys-libs/zlib-1.2.0.4:0= ) +" + +IDEPEND=">=app-eselect/eselect-php-0.9.7[apache2?,fpm?]" + +RDEPEND="${COMMON_DEPEND} + virtual/mta + fpm? ( + selinux? ( sec-policy/selinux-phpfpm ) + systemd? ( sys-apps/systemd ) )" + +# Bison isn't actually needed when building from a release tarball +# However, the configure script will warn if it's absent or if you +# have an incompatible version installed. See bug 593278. +DEPEND="${COMMON_DEPEND} + app-arch/xz-utils + >=sys-devel/bison-3.0.1" + +BDEPEND="virtual/pkgconfig" + +PHP_MV="$(ver_cut 1)" + +PATCHES=( + "${FILESDIR}/php-iodbc-header-location.patch" + "${FILESDIR}/php-capstone-optional.patch" +) + +php_install_ini() { + local phpsapi="${1}" + + # work out where we are installing the ini file + php_set_ini_dir "${phpsapi}" + + # Always install the production INI file, bug 611214. + local phpinisrc="php.ini-production-${phpsapi}" + cp php.ini-production "${phpinisrc}" || die + + # default to /tmp for save_path, bug #282768 + sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die + + # Set the extension dir + sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \ + -i "${phpinisrc}" || die + + # Set the include path to point to where we want to find PEAR packages + sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die + + insinto "${PHP_INI_DIR#${EPREFIX}}" + newins "${phpinisrc}" php.ini + + elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}" + elog + + dodir "${PHP_EXT_INI_DIR#${EPREFIX}}" + dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}" + + if use opcache; then + elog "Adding opcache to $PHP_EXT_INI_DIR" + echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \ + "${D}/${PHP_EXT_INI_DIR}"/opcache.ini + dosym "../ext/opcache.ini" \ + "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini" + fi + + # SAPI-specific handling + if [[ "${sapi}" == "fpm" ]] ; then + einfo "Installing FPM config files php-fpm.conf and www.conf" + insinto "${PHP_INI_DIR#${EPREFIX}}" + doins sapi/fpm/php-fpm.conf + insinto "${PHP_INI_DIR#${EPREFIX}}/fpm.d" + doins sapi/fpm/www.conf + fi + + dodoc php.ini-{development,production} +} + +php_set_ini_dir() { + PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}" + PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext" + PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active" +} + +src_prepare() { + default + + # In php-7.x, the FPM pool configuration files have been split off + # of the main config. By default the pool config files go in + # e.g. /etc/php-fpm.d, which isn't slotted. So here we move the + # include directory to a subdirectory "fpm.d" of $PHP_INI_DIR. Later + # we'll install the pool configuration file "www.conf" there. + php_set_ini_dir fpm + sed -i "s~^include=.*$~include=${PHP_INI_DIR}/fpm.d/*.conf~" \ + sapi/fpm/php-fpm.conf.in \ + || die 'failed to move the include directory in php-fpm.conf' + + # Emulate buildconf to support cross-compilation + rm -fr aclocal.m4 autom4te.cache config.cache \ + configure main/php_config.h.in || die + eautoconf --force + eautoheader + + # Remove false positive test failures + # stream_isatty fails due to portage redirects + # curl tests here fail for network sandbox issues + # session tests here fail because we set the session directory to $T + rm tests/output/stream_isatty_err.phpt \ + tests/output/stream_isatty_out-err.phpt \ + tests/output/stream_isatty_out.phpt \ + ext/curl/tests/bug76675.phpt \ + ext/curl/tests/bug77535.phpt \ + ext/curl/tests/curl_error_basic.phpt \ + ext/session/tests/bug74514.phpt \ + ext/session/tests/bug74936.phpt || die + +} + +src_configure() { + addpredict /usr/share/snmp/mibs/.index #nowarn + addpredict /var/lib/net-snmp/mib_indexes #nowarn + + PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}" + + # The php-fpm config file wants localstatedir to be ${EPREFIX}/var + # and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002. + local our_conf=( + --prefix="${PHP_DESTDIR}" + --mandir="${PHP_DESTDIR}/man" + --infodir="${PHP_DESTDIR}/info" + --libdir="${PHP_DESTDIR}/lib" + --with-libdir="$(get_libdir)" + --localstatedir="${EPREFIX}/var" + --without-pear + --without-valgrind + --enable-ipv6 + $(use_enable threads zts) + ) + + our_conf+=( + $(use_with apparmor fpm-apparmor) + $(use_with argon2 password-argon2 "${EPREFIX}/usr") + $(use_with avif) + $(use_enable bcmath) + $(use_with bzip2 bz2 "${EPREFIX}/usr") + $(use_enable calendar) + $(use_enable coverage gcov) + $(use_enable ctype) + $(use_with curl) + $(use_enable xml dom) + $(use_with enchant) + $(use_enable exif) + $(use_with ffi) + $(use_enable fileinfo) + $(use_enable filter) + $(use_enable ftp) + $(use_with nls gettext "${EPREFIX}/usr") + $(use_with gmp gmp "${EPREFIX}/usr") + $(use_with mhash mhash "${EPREFIX}/usr") + $(use_with iconv iconv \ + $(use elibc_glibc || use elibc_musl || echo "${EPREFIX}/usr")) + $(use_enable intl) + $(use_with kerberos) + $(use_with xml libxml) + $(use_enable unicode mbstring) + $(use_with ssl openssl) + $(use_enable pcntl) + $(use_enable phar) + $(use_enable pdo) + $(use_enable opcache) + $(use_with postgres pgsql "${EPREFIX}/usr") + $(use_enable posix) + $(use_with selinux fpm-selinux) + $(use_with spell pspell "${EPREFIX}/usr") + $(use_enable simplexml) + $(use_enable sharedmem shmop) + $(use_with snmp snmp "${EPREFIX}/usr") + $(use_enable soap) + $(use_enable sockets) + $(use_with sodium) + $(use_with sqlite sqlite3) + $(use_enable sysvipc sysvmsg) + $(use_enable sysvipc sysvsem) + $(use_enable sysvipc sysvshm) + $(use_with tidy tidy "${EPREFIX}/usr") + $(use_enable tokenizer) + $(use_enable xml) + $(use_enable xmlreader) + $(use_enable xmlwriter) + $(use_with xslt xsl) + $(use_with zip) + $(use_with zlib zlib "${EPREFIX}/usr") + $(use_enable debug) + ) + + # DBA support + if use cdb || use berkdb || use flatfile || use gdbm || use inifile \ + || use qdbm || use lmdb || use tokyocabinet ; then + our_conf+=( "--enable-dba" ) + fi + + # DBA drivers support + our_conf+=( + $(use_with cdb) + $(use_with berkdb db4 "${EPREFIX}/usr") + $(use_enable flatfile) + $(use_with gdbm gdbm "${EPREFIX}/usr") + $(use_enable inifile) + $(use_with qdbm qdbm "${EPREFIX}/usr") + $(use_with tokyocabinet tcadb "${EPREFIX}/usr") + $(use_with lmdb lmdb "${EPREFIX}/usr") + ) + + # Support for the GD graphics library + our_conf+=( + $(use_with truetype freetype) + $(use_enable cjk gd-jis-conv) + $(use_with gd jpeg) + $(use_with xpm) + $(use_with webp) + ) + # enable gd last, so configure can pick up the previous settings + our_conf+=( $(use_enable gd) ) + + # IMAP support + if use imap ; then + our_conf+=( + $(use_with imap imap "${EPREFIX}/usr") + $(use_with ssl imap-ssl "${EPREFIX}/usr") + ) + fi + + # LDAP support + if use ldap ; then + our_conf+=( + $(use_with ldap ldap "${EPREFIX}/usr") + $(use_with ldap-sasl) + ) + fi + + # MySQL support + our_conf+=( $(use_with mysqli) ) + + local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock" + if use mysql || use mysqli ; then + our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") ) + fi + + # ODBC support + if use odbc && use iodbc ; then + our_conf+=( + --without-unixODBC + --with-iodbc + $(use_with pdo pdo-odbc "iODBC,${EPREFIX}/usr") + ) + elif use odbc ; then + our_conf+=( + --with-unixODBC="${EPREFIX}/usr" + --without-iodbc + $(use_with pdo pdo-odbc "unixODBC,${EPREFIX}/usr") + ) + else + our_conf+=( + --without-unixODBC + --without-iodbc + --without-pdo-odbc + ) + fi + + # Oracle support + our_conf+=( $(use_with oci8-instant-client oci8) ) + + # PDO support + if use pdo ; then + our_conf+=( + $(use_with mssql pdo-dblib "${EPREFIX}/usr") + $(use_with mysql pdo-mysql "mysqlnd") + $(use_with postgres pdo-pgsql) + $(use_with sqlite pdo-sqlite) + $(use_with firebird pdo-firebird "${EPREFIX}/usr") + $(use_with oci8-instant-client pdo-oci) + ) + fi + + # readline/libedit support + our_conf+=( + $(use_with readline readline "${EPREFIX}/usr") + $(use_with libedit) + ) + + # Session support + if use session ; then + our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") ) + else + our_conf+=( $(use_enable session) ) + fi + + # Use pic for shared modules such as apache2's mod_php + our_conf+=( --with-pic ) + + # we use the system copy of pcre + # --with-external-pcre affects ext/pcre + our_conf+=( + --with-external-pcre + $(use_with jit pcre-jit) + ) + + # Catch CFLAGS problems + # Fixes bug #14067. + # Changed order to run it in reverse for bug #32022 and #12021. + replace-cpu-flags "k6*" "i586" + + # Cache the ./configure test results between SAPIs. + our_conf+=( --cache-file="${T}/config.cache" ) + + # Support user-passed configuration parameters + our_conf+=( ${EXTRA_ECONF:-} ) + + # Support the Apache2 extras, they must be set globally for all + # SAPIs to work correctly, especially for external PHP extensions + + local one_sapi + local sapi + mkdir -p "${WORKDIR}/sapis-build" || die + for one_sapi in $SAPIS ; do + use "${one_sapi}" || continue + php_set_ini_dir "${one_sapi}" + + # The BUILD_DIR variable is used to determine where to output + # the files that autotools creates. This was all originally + # based on the autotools-utils eclass. + BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}" + cp -a "${S}" "${BUILD_DIR}" || die + cd "${BUILD_DIR}" || die + + local sapi_conf=( + --with-config-file-path="${PHP_INI_DIR}" + --with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}" + ) + + for sapi in $SAPIS ; do + case "$sapi" in + cli|cgi|embed|fpm|phpdbg) + if [[ "${one_sapi}" == "${sapi}" ]] ; then + sapi_conf+=( "--enable-${sapi}" ) + if [[ "fpm" == "${sapi}" ]] ; then + sapi_conf+=( + $(use_with acl fpm-acl) + $(use_with systemd fpm-systemd) + ) + fi + else + sapi_conf+=( "--disable-${sapi}" ) + fi + ;; + + apache2) + if [[ "${one_sapi}" == "${sapi}" ]] ; then + sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" ) + else + sapi_conf+=( --without-apxs2 ) + fi + ;; + esac + done + + # Construct the $myeconfargs array by concatenating $our_conf + # (the common args) and $sapi_conf (the SAPI-specific args). + local myeconfargs=( "${our_conf[@]}" ) + myeconfargs+=( "${sapi_conf[@]}" ) + + pushd "${BUILD_DIR}" > /dev/null || die + econf "${myeconfargs[@]}" + popd > /dev/null || die + done +} + +src_compile() { + # snmp seems to run during src_compile, too (bug #324739) + addpredict /usr/share/snmp/mibs/.index #nowarn + addpredict /var/lib/net-snmp/mib_indexes #nowarn + + local sapi + for sapi in ${SAPIS} ; do + if use "${sapi}"; then + cd "${WORKDIR}/sapis-build/$sapi" || \ + die "Failed to change dir to ${WORKDIR}/sapis-build/$1" + emake + fi + done +} + +src_install() { + # see bug #324739 for what happens when we don't have that + addpredict /usr/share/snmp/mibs/.index #nowarn + + # grab the first SAPI that got built and install common files from there + local first_sapi="", sapi="" + for sapi in $SAPIS ; do + if use $sapi ; then + first_sapi=$sapi + break + fi + done + + # Makefile forgets to create this before trying to write to it... + dodir "${PHP_DESTDIR#${EPREFIX}}/bin" + + # Install php environment (without any sapis) + cd "${WORKDIR}/sapis-build/$first_sapi" || die + emake INSTALL_ROOT="${D}" \ + install-build install-headers install-programs + + local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)" + + # Create the directory where we'll put version-specific php scripts + keepdir "/usr/share/php${PHP_MV}" + + local file="" + local sapi_list="" + + for sapi in ${SAPIS}; do + if use "${sapi}" ; then + einfo "Installing SAPI: ${sapi}" + cd "${WORKDIR}/sapis-build/${sapi}" || die + + if [[ "${sapi}" == "apache2" ]] ; then + # We're specifically not using emake install-sapi as libtool + # may cause unnecessary relink failures (see bug #351266) + insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/" + newins ".libs/libphp$(get_libname)" \ + "libphp${PHP_MV}$(get_libname)" + keepdir "/usr/$(get_libdir)/apache2/modules" + else + # needed each time, php_install_ini would reset it + local dest="${PHP_DESTDIR#${EPREFIX}}" + into "${dest}" + case "$sapi" in + cli) + source="sapi/cli/php" + # Install the "phar" archive utility. + if use phar ; then + emake INSTALL_ROOT="${D}" install-pharcmd + dosym "..${dest#/usr}/bin/phar" "/usr/bin/phar${SLOT}" + fi + ;; + cgi) + source="sapi/cgi/php-cgi" + ;; + fpm) + source="sapi/fpm/php-fpm" + ;; + embed) + source="libs/libphp$(get_libname)" + ;; + phpdbg) + source="sapi/phpdbg/phpdbg" + ;; + *) + die "unhandled sapi in src_install" + ;; + esac + + if [[ "${source}" == *"$(get_libname)" ]]; then + dolib.so "${source}" + else + dobin "${source}" + local name="$(basename ${source})" + dosym "..${dest#/usr}/bin/${name}" "/usr/bin/${name}${SLOT}" + fi + fi + + php_install_ini "${sapi}" + + # construct correct SAPI string for php-config + # thanks to ferringb for the bash voodoo + if [[ "${sapi}" == "apache2" ]]; then + sapi_list="${sapi_list:+${sapi_list} }apache2handler" + else + sapi_list="${sapi_list:+${sapi_list} }${sapi}" + fi + fi + done + + # Installing opcache module + if use opcache ; then + into "${PHP_DESTDIR#${EPREFIX}}" + dolib.so "modules/opcache$(get_libname)" + fi + + # Install env.d files + newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}" + sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die + sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die + + # set php-config variable correctly (bug #278439) + sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \ + "${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die + + if use fpm ; then + if use systemd; then + systemd_newunit "${FILESDIR}/php-fpm_at.service" \ + "php-fpm@${SLOT}.service" + else + systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \ + "php-fpm@${SLOT}.service" + fi + fi +} + +src_test() { + echo ">>> Test phase [test]: ${CATEGORY}/${PF}" + PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php" + if [[ ! -x "${PHP_BIN}" ]] ; then + ewarn "Test phase requires USE=cli, skipping" + return + else + export TEST_PHP_EXECUTABLE="${PHP_BIN}" + fi + + if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then + export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" + fi + + if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then + export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" + fi + + SKIP_ONLINE_TESTS=1 REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \ + "session.save_path=${T}" \ + "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \ + "session.save_path=${T}" + + for name in ${EXPECTED_TEST_FAILURES}; do + mv "${name}.out" "${name}.out.orig" 2>/dev/null || die + done + + local failed="$(find -name '*.out')" + if [[ ${failed} != "" ]] ; then + ewarn "The following test cases failed unexpectedly:" + for name in ${failed}; do + ewarn " ${name/.out/}" + done + else + einfo "No unexpected test failures, all fine" + fi + + if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then + local passed="" + for name in ${EXPECTED_TEST_FAILURES}; do + [[ -f "${name}.diff" ]] && continue + passed="${passed} ${name}" + done + if [[ ${passed} != "" ]] ; then + einfo "The following test cases passed unexpectedly:" + for name in ${passed}; do + ewarn " ${passed}" + done + else + einfo "None of the known-to-fail tests passed, all fine" + fi + fi +} + +pkg_postinst() { + # Output some general info to the user + if use apache2 ; then + elog + elog "To enable PHP in apache, you will need to add \"-D PHP\" to" + elog "your apache2 command. OpenRC users can append that string to" + elog "APACHE2_OPTS in /etc/conf.d/apache2." + elog + elog "The apache module configuration file 70_mod_php.conf is" + elog "provided (and maintained) by eselect-php." + elog + fi + + # Create the symlinks for php + local m + for m in ${SAPIS}; do + [[ ${m} == 'embed' ]] && continue; + if use $m ; then + local ci=$(eselect php show $m) + if [[ -z $ci ]]; then + eselect php set $m php${SLOT} || die + einfo "Switched ${m} to use php:${SLOT}" + einfo + elif [[ $ci != "php${SLOT}" ]] ; then + elog "To switch $m to use php:${SLOT}, run" + elog " eselect php set $m php${SLOT}" + elog + fi + fi + done + + # Remove dead symlinks for SAPIs that were just disabled. For + # example, if the user has the cgi SAPI enabled, then he has an + # eselect-php symlink for it. If he later reinstalls PHP with + # USE="-cgi", that symlink will break. This call to eselect is + # supposed to remove that dead link per bug 572436. + eselect php cleanup || die + + if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then + elog "To build extensions for this version of PHP, you will need to" + elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable." + elog + fi + + # Warn about the removal of PHP_INI_VERSION if the user has it set. + if [[ -n "${PHP_INI_VERSION}" ]]; then + ewarn 'The PHP_INI_VERSION variable has been phased out. You may' + ewarn 'remove it from your configuration at your convenience. See' + ewarn + ewarn ' https://bugs.gentoo.org/611214' + ewarn + ewarn 'for more information.' + fi + + elog "For details on how version slotting works, please see" + elog "the wiki:" + elog + elog " https://wiki.gentoo.org/wiki/PHP" + elog +} + +pkg_postrm() { + # This serves two purposes. First, if we have just removed the last + # installed version of PHP, then this will remove any dead symlinks + # belonging to eselect-php. Second, if a user upgrades slots from + # (say) 5.6 to 7.0 and depcleans the old slot, then this will update + # his existing symlinks to point to the new 7.0 installation. The + # latter is bug 432962. + # + # Note: the eselect-php package may not be installed at this point, + # so we can't die() if this command fails. + eselect php cleanup +} diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest index b2e1b2e07827..25fa2ad820b9 100644 --- a/dev-lang/python/Manifest +++ b/dev-lang/python/Manifest @@ -37,17 +37,17 @@ DIST python-gentoo-patches-3.8.17.tar.xz 32424 BLAKE2B d992f6b1c971583000086175d DIST python-gentoo-patches-3.9.16_p3.tar.xz 27160 BLAKE2B 5a41a6ff135c3aca02b19cf9a61f554ca224173854274b872ce85e8c71f25c678604e50b87bae40d4b5ac082731c143338fcc6ef47acebad2b59ce0b1d600f5d SHA512 1ace0a9e929769c29082fdec6845a476c07c13fbbff8726a7a592fda09da8b50c996638b4e4e40acccb15630a796074329adbcc9a004c4305952fa5b0dc4146c DIST python-gentoo-patches-3.9.17.tar.xz 25048 BLAKE2B da19105dfa2fda7b422ac368f85c97d7541be74a6f9b9170a19ceac901e026ab39baef83c610172ecba1f70cce6e2832e956c2e4c87387b0e21c79c2c633b116 SHA512 ce9d3c62c675bceccaac21fd467c54322a55a1c8af9be3a6dcfd7a892c03b39b38dc35ba570e3dd9fc984a5f3eeabb3cc564ba2d7f935dbf6df829264cb32b2f EBUILD python-2.7.18_p16-r1.ebuild 8612 BLAKE2B f6c315dcdc3df5d88b456823a2f18cc5fb9e63d8e7b3686a25a814e6222a0787a0b0e1a9373297b14eea9706aa68b6fa36c49a3a4ecf42d3967bf09ca4ca872a SHA512 8234c63e15aa33327bf9cf86f08621b319ba0d7e0826c1159a53b030eab02cf64cd13f1ddce4c250c291eca7a853e0cc420bb549085fd2d11a4dabc0a9d61543 -EBUILD python-3.10.11.ebuild 14078 BLAKE2B 3de1a751782976b1adfc4950658e0f012e48076d91edb6f28bf4f9287931c98c3e9a27b6675f8d30e6a24e49b5c3fa5080c9bb2c2e25b4580bf1bd5fd7c7a5f2 SHA512 6d40f5d4b2e892d120e9449a77ba64f31254f5598b4b97556108f42dfc9a1408e472a3b6a67cc0a136cb8a514deb704a043a86dbc09c80b2a5f80a6ab6255acf -EBUILD python-3.10.12.ebuild 14082 BLAKE2B bc54b15ce127560c5b8f4692ee38a4370ee724299b765338bafb86e32eb90773d79c20f08cff37bc0921615878fe5c183487a96c7e261e65c59a1ae9f4a42609 SHA512 bf801b7ca4fc679b3cc806bea6df0a5f356c6bbd53e4e21aecf22e44db16c0b8f5c7070384bf13406b1886a7814d667f389ba644c13b3f5ecd62a22d4bca69c6 -EBUILD python-3.11.3.ebuild 14977 BLAKE2B 612ba968eb676969985c92cf764ba2a112fa17d0dda437439b2c4c3f0f79712c1328039ddee1d5e6c75be23556459c2bcb66a976612887e1f1ebc0d535e5cd36 SHA512 3d506ec64d0d17921db1a81f7606633b38f5aabc06d01b10cdbdd2022eb830d3985c75079314846a52ebf4e62bd26b2c0cd2d59b23dd2c75a4f9a7ccc1a54a58 -EBUILD python-3.11.4.ebuild 14983 BLAKE2B 2dfa7d86c0572dca4c2dd97aa3617b003e8628c44753334e6818d726701014008c9dbeaa1c7c4d31bf24f98d5ded33301ec8d12cf96490a23db6118f81c00091 SHA512 7b3fb2b9ff9ac1fb44f4820089c9601e55d2cf7a7b055ca749be08d87473fff2765c1f63a7789edc4aa63837c435a1231cdc38e467b53b77e128cb477a4a5cdc -EBUILD python-3.12.0_beta1.ebuild 14786 BLAKE2B c21bd83543ce5c9c518e3f4ec121713b4b9765b747a403723237ad8652ad589a29c3f54a04b5929038fa9670a1d55d3cd77e33b8f1f5c0707385df59bd30fc98 SHA512 f0a6c86de64676b3db36e2b11f3e145dc52f6245644260d3c6b16601fe5c8e12410c2d2fd0bfb6a93a9fad59b4b5780136444d8902fedd7bc2ff7c9ac149cc2e -EBUILD python-3.12.0_beta1_p1.ebuild 14786 BLAKE2B c21bd83543ce5c9c518e3f4ec121713b4b9765b747a403723237ad8652ad589a29c3f54a04b5929038fa9670a1d55d3cd77e33b8f1f5c0707385df59bd30fc98 SHA512 f0a6c86de64676b3db36e2b11f3e145dc52f6245644260d3c6b16601fe5c8e12410c2d2fd0bfb6a93a9fad59b4b5780136444d8902fedd7bc2ff7c9ac149cc2e -EBUILD python-3.12.0_beta1_p3.ebuild 14786 BLAKE2B c21bd83543ce5c9c518e3f4ec121713b4b9765b747a403723237ad8652ad589a29c3f54a04b5929038fa9670a1d55d3cd77e33b8f1f5c0707385df59bd30fc98 SHA512 f0a6c86de64676b3db36e2b11f3e145dc52f6245644260d3c6b16601fe5c8e12410c2d2fd0bfb6a93a9fad59b4b5780136444d8902fedd7bc2ff7c9ac149cc2e -EBUILD python-3.12.0_beta1_p4.ebuild 14786 BLAKE2B c21bd83543ce5c9c518e3f4ec121713b4b9765b747a403723237ad8652ad589a29c3f54a04b5929038fa9670a1d55d3cd77e33b8f1f5c0707385df59bd30fc98 SHA512 f0a6c86de64676b3db36e2b11f3e145dc52f6245644260d3c6b16601fe5c8e12410c2d2fd0bfb6a93a9fad59b4b5780136444d8902fedd7bc2ff7c9ac149cc2e -EBUILD python-3.12.0_beta2.ebuild 14786 BLAKE2B c21bd83543ce5c9c518e3f4ec121713b4b9765b747a403723237ad8652ad589a29c3f54a04b5929038fa9670a1d55d3cd77e33b8f1f5c0707385df59bd30fc98 SHA512 f0a6c86de64676b3db36e2b11f3e145dc52f6245644260d3c6b16601fe5c8e12410c2d2fd0bfb6a93a9fad59b4b5780136444d8902fedd7bc2ff7c9ac149cc2e +EBUILD python-3.10.11.ebuild 14096 BLAKE2B 56239d09fe6e89a66f2d369fc351d048a0702e6628ba7a5742b85f45207fd4f62808fa6c66ec1a3a7b1bf3b30a94e1962162f6bb94a5b5c0dcb5f78973d31060 SHA512 1fad970178dc06873b54b349c3faef4f8593772c7e533f9a9b664f921eb57065f275bc28d03a9d1aed20576e048b8fed9ce9cf15ad5eea5876d9467c2038be0e +EBUILD python-3.10.12.ebuild 14099 BLAKE2B 1fe15553d67b1b110b2f49ad1e197e453155c034f9d7f985dbfee088277f6799162791d665bce1e59b0de9b84464fc9e4e147c894ec0b59ca3d97e0402b2fb70 SHA512 35432cdfb741ce47eec040bac825ee2cbac14957e012775b01f3de4f2abebd454833a91267e9d1785b470c8713bc55fea49f8fe80880c7dbba2faca06b0ffaae +EBUILD python-3.11.3.ebuild 14995 BLAKE2B 30607787937eeb3df47816b0f7ae3c60aa25bc18fa741e4c97d7c6b07ce3648cff5f7ccde5055c793b302455622c836dfbfd9d6238eab8628585acdc1166e834 SHA512 85be8dcdd4988572ff9378663977ada69577bcdaaf99a02f0f352088b6895e1e69a864ca5df67c70a39cfa2942894e09b2f2fd2b36ad2e229b05ce87ded63c67 +EBUILD python-3.11.4.ebuild 15000 BLAKE2B 2f12d05c7bc2d4b9e7ce595a0f5c1a25d4d5aa783e02b5d021eb920c0bc507f71639a89924b3bf2aaac7cd172233965b59f0bf4380edeeb4e7294b6bb72492d9 SHA512 78d6178445ff078a6c55cc552e9e50599896ea267fcf6446ed779a49e0bc57b524abd53e6510f5df65888a06e28190a948f2e99f006bccb807620f43b47ca1b6 +EBUILD python-3.12.0_beta1.ebuild 14804 BLAKE2B 312121a0d299e5f6c446d3315ea363120f91ea065ee173117d71284533cf53a738b10564b0199c1725d58e55c12f5e99d2f5d9d9459f8491b4e51c785e29299c SHA512 e209833e6745fe7c8c13e90bfe56258f54225448671699e5e8abb3de4b16952fa422ac6d1ab2abccad48bf7aba486a8d5bae64aba7eef5fd30923252dd48d413 +EBUILD python-3.12.0_beta1_p1.ebuild 14804 BLAKE2B 312121a0d299e5f6c446d3315ea363120f91ea065ee173117d71284533cf53a738b10564b0199c1725d58e55c12f5e99d2f5d9d9459f8491b4e51c785e29299c SHA512 e209833e6745fe7c8c13e90bfe56258f54225448671699e5e8abb3de4b16952fa422ac6d1ab2abccad48bf7aba486a8d5bae64aba7eef5fd30923252dd48d413 +EBUILD python-3.12.0_beta1_p3.ebuild 14804 BLAKE2B 312121a0d299e5f6c446d3315ea363120f91ea065ee173117d71284533cf53a738b10564b0199c1725d58e55c12f5e99d2f5d9d9459f8491b4e51c785e29299c SHA512 e209833e6745fe7c8c13e90bfe56258f54225448671699e5e8abb3de4b16952fa422ac6d1ab2abccad48bf7aba486a8d5bae64aba7eef5fd30923252dd48d413 +EBUILD python-3.12.0_beta1_p4.ebuild 14804 BLAKE2B 312121a0d299e5f6c446d3315ea363120f91ea065ee173117d71284533cf53a738b10564b0199c1725d58e55c12f5e99d2f5d9d9459f8491b4e51c785e29299c SHA512 e209833e6745fe7c8c13e90bfe56258f54225448671699e5e8abb3de4b16952fa422ac6d1ab2abccad48bf7aba486a8d5bae64aba7eef5fd30923252dd48d413 +EBUILD python-3.12.0_beta2.ebuild 14804 BLAKE2B 312121a0d299e5f6c446d3315ea363120f91ea065ee173117d71284533cf53a738b10564b0199c1725d58e55c12f5e99d2f5d9d9459f8491b4e51c785e29299c SHA512 e209833e6745fe7c8c13e90bfe56258f54225448671699e5e8abb3de4b16952fa422ac6d1ab2abccad48bf7aba486a8d5bae64aba7eef5fd30923252dd48d413 EBUILD python-3.8.16_p4.ebuild 12195 BLAKE2B 7dcc6fb88eb5a36747eeca7bffb25ca8924969e1c024704f18159d9bb02e24a8ba95caa9a0e001c1e01f3953ffcf6f5414ee86d3f9e8666ccb317c26c045f150 SHA512 884acc58a6b77594ac0aa11d79d0d09c8dfbd317834f11ca1b2041eea5a4c1d0a5cc7710e6902b8e83ec3cba858beed5f7a82563eba5af6243fcf1583c6cac7f EBUILD python-3.8.17.ebuild 12199 BLAKE2B 2fb9f37a4f07e4271f6c705aab69ef57730bcb642604486fca78e3ef4a692dfdd189129aef9269386d690ced8f6e28f0144d355241327d01ab560a1cec029293 SHA512 536e576faf3e9a83994ef7bcd75712124f16d1a1e7720e79de7b6140015f18a058155967365d741fef0290701fdb6d9c90de660b63c2300f7c04d23fa8769568 -EBUILD python-3.9.16_p3-r1.ebuild 13678 BLAKE2B 9a072504fe4fdd3c2fc1a92a2378b81d2edc3e02bac9059a1ef493c01306182c49cce813f8570935872fc8dd552899f236f18eadc8dd4643583812177e611a89 SHA512 09a31e35ab91f5ad3445e982b8b2c71a0fbb74b91d53513ea461d5e22c374fe16984664b216f4428730a9839c728f8925a1e1145fe999874693dcd795eeaf12d -EBUILD python-3.9.17.ebuild 13683 BLAKE2B 995c885df2c2883eff02e5a063a7ea1f15bdf6cd05e10e3e77405292dd600cd484e46401c82755ef745ab7f9f0fecacc167fd99eb5991e185504086f53f5935d SHA512 6a7efce2f19b62207c7efef3b95af5ee6121679ce883d2521daec5041f22cc1eaf13b85517aa268846ef1af465fd79d4df12a524a4f62d886abe81f8a9f7c9e5 +EBUILD python-3.9.16_p3-r1.ebuild 13696 BLAKE2B b4ed34e15ef72dd0daa606eb558ae73747fda1a9d445cd6d12b28ee2b16a8a0be9ce3b4af059b2a75f493648a5b9da05046fff8264831dede27df072e6c3ebec SHA512 58fe67c0a629571f6969eb6a9743cbc9b59aeb14cff4a4c8a42b273f3afeb676208b1d0007dab0d0887939e107a57ea262c8e5d1cb05ef83b1999ede005e83bb +EBUILD python-3.9.17.ebuild 13701 BLAKE2B a452142a2c753d886062d5b8065d4fe73acb7c11f6a2843a8f9ccce3d96df16660f2aebfeca66bd571754ba45b1142b483ef416c377109d5b226470a36276031 SHA512 1eb191ebdf44747063bb84a126ec10595e96343c737f5b57035e8f46c7bd859383614e26ae8202a363a1e9e07ac57612892199cee609b408c63b7a7adb09868e MISC metadata.xml 1436 BLAKE2B fd5ebcef153bc74aae02f8930dba67736ce44b1dd23418448e7d5bd22391845f5edf0ba8cdf3f43af9254c68734b95fbac9ee891f09c4584c9272ac4233eede6 SHA512 124a1e743cef7236f7936aa843d3aae739a420b1b6173f02c2ef787745616891142724446320d887aeecb95fac09e3620a9666e8e3e32085d79019fe71ff7da5 diff --git a/dev-lang/python/python-3.10.11.ebuild b/dev-lang/python/python-3.10.11.ebuild index b30e6ea4d97f..5b06497f4210 100644 --- a/dev-lang/python/python-3.10.11.ebuild +++ b/dev-lang/python/python-3.10.11.ebuild @@ -187,6 +187,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.10.12.ebuild b/dev-lang/python/python-3.10.12.ebuild index 3c243581ddc8..184b5ace1359 100644 --- a/dev-lang/python/python-3.10.12.ebuild +++ b/dev-lang/python/python-3.10.12.ebuild @@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}" LICENSE="PSF-2" SLOT="${PYVER}" -KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc ~x86" +KEYWORDS="~alpha ~amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc ~x86" IUSE=" bluetooth build debug +ensurepip examples gdbm hardened libedit lto +ncurses pgo +readline +sqlite +ssl test tk valgrind +xml @@ -187,6 +187,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.11.3.ebuild b/dev-lang/python/python-3.11.3.ebuild index 389e56a6a6f4..da75820e95cd 100644 --- a/dev-lang/python/python-3.11.3.ebuild +++ b/dev-lang/python/python-3.11.3.ebuild @@ -174,6 +174,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.11.4.ebuild b/dev-lang/python/python-3.11.4.ebuild index 4beb23611cfe..dea412c1830f 100644 --- a/dev-lang/python/python-3.11.4.ebuild +++ b/dev-lang/python/python-3.11.4.ebuild @@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}" LICENSE="PSF-2" SLOT="${PYVER}" -KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86" +KEYWORDS="~alpha ~amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86" IUSE=" bluetooth build debug +ensurepip examples gdbm hardened libedit lto +ncurses pgo +readline +sqlite +ssl test tk valgrind @@ -174,6 +174,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.12.0_beta1.ebuild b/dev-lang/python/python-3.12.0_beta1.ebuild index e79715cc645a..2f7f75bf906e 100644 --- a/dev-lang/python/python-3.12.0_beta1.ebuild +++ b/dev-lang/python/python-3.12.0_beta1.ebuild @@ -169,6 +169,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.12.0_beta1_p1.ebuild b/dev-lang/python/python-3.12.0_beta1_p1.ebuild index e79715cc645a..2f7f75bf906e 100644 --- a/dev-lang/python/python-3.12.0_beta1_p1.ebuild +++ b/dev-lang/python/python-3.12.0_beta1_p1.ebuild @@ -169,6 +169,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.12.0_beta1_p3.ebuild b/dev-lang/python/python-3.12.0_beta1_p3.ebuild index e79715cc645a..2f7f75bf906e 100644 --- a/dev-lang/python/python-3.12.0_beta1_p3.ebuild +++ b/dev-lang/python/python-3.12.0_beta1_p3.ebuild @@ -169,6 +169,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.12.0_beta1_p4.ebuild b/dev-lang/python/python-3.12.0_beta1_p4.ebuild index e79715cc645a..2f7f75bf906e 100644 --- a/dev-lang/python/python-3.12.0_beta1_p4.ebuild +++ b/dev-lang/python/python-3.12.0_beta1_p4.ebuild @@ -169,6 +169,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.12.0_beta2.ebuild b/dev-lang/python/python-3.12.0_beta2.ebuild index e79715cc645a..2f7f75bf906e 100644 --- a/dev-lang/python/python-3.12.0_beta2.ebuild +++ b/dev-lang/python/python-3.12.0_beta2.ebuild @@ -169,6 +169,7 @@ src_configure() { --timeout 1200 -x test_gdb + -x test_dtrace # All of these seem to occasionally hang for PGO inconsistently # They'll even hang here but be fine in src_test sometimes. diff --git a/dev-lang/python/python-3.9.16_p3-r1.ebuild b/dev-lang/python/python-3.9.16_p3-r1.ebuild index e9ff013485fb..592e2685f905 100644 --- a/dev-lang/python/python-3.9.16_p3-r1.ebuild +++ b/dev-lang/python/python-3.9.16_p3-r1.ebuild @@ -176,6 +176,7 @@ src_configure() { "-j$(makeopts_jobs)" --pgo-extended -x test_gdb + -x test_dtrace -u-network # All of these seem to occasionally hang for PGO inconsistently diff --git a/dev-lang/python/python-3.9.17.ebuild b/dev-lang/python/python-3.9.17.ebuild index af2e30057ade..449a5f90b94d 100644 --- a/dev-lang/python/python-3.9.17.ebuild +++ b/dev-lang/python/python-3.9.17.ebuild @@ -176,6 +176,7 @@ src_configure() { "-j$(makeopts_jobs)" --pgo-extended -x test_gdb + -x test_dtrace -u-network # All of these seem to occasionally hang for PGO inconsistently diff --git a/dev-lang/spidermonkey/Manifest b/dev-lang/spidermonkey/Manifest index 6544d7111a9d..7fb8f4c6f2f3 100644 --- a/dev-lang/spidermonkey/Manifest +++ b/dev-lang/spidermonkey/Manifest @@ -4,10 +4,7 @@ DIST firefox-102.10.0esr.source.tar.xz 479026088 BLAKE2B b4d8eaa6d72b009d12b4357 DIST firefox-102.11.0esr.source.tar.xz 477769716 BLAKE2B b19db1b35e6c652e2cd44ec5219bd5c42aacd55987962dbcaf50b5ec54d2ac5066290264f938ba3d45ef111779b9f27b06736ae7df11fa62478ab2179acfe723 SHA512 fdfed404c87f33001c0ab50f9899fa80c897fac645be8ed832e426f412aafbf1468b1c8301bad463b3f5535b6d6f2005a96a748b6e2d6bf5afbc3b5bc10983d6 DIST firefox-102.12.0esr.source.tar.xz 483008152 BLAKE2B ef5dcf7c7e6a46389a94b81f28d6b996bd56bc0a110f1e52dfbe00e5c766dad59a91494c3c2f2552a0cb1fef14c19bef6dcb6629e03f9e48d5163e75c59676b2 SHA512 2a85cf1e1c83a862c2886a63dcf3e3e8bca9dd3ed72c5d0223db52387fff3796bc0dcbb508adb8c10a30729f20554c5aac37f8ad045b0088a593d28e39d77fe5 DIST firefox-102.6.0esr.source.tar.xz 478856656 BLAKE2B 2094bbb3ba00fc2d726a620e9946ca1ec98ad4c930ed611486ac92a7c74aa84da9c15b1353603eb36ce0a9098bd1f311dea2bea255f2bb6dd06fafbc7808d52c SHA512 c0f0160bea612d0ae74c29dd44beb7fd9a1c292694b8cd5c4faf2e54feb5c27684eee821b67dd40df714d69866a4e3a8b19e22182d9bc3023050d2d96b02d308 -DIST firefox-102.8.0esr.source.tar.xz 479172816 BLAKE2B 0b4cbf11028abc73a8479fb94670e98f0a293fc12381b1eccbadd64a33db068ab7434357abbe3ce0773382c7c90b8fe4d2258cc55abe8bdc2f551bba1dc2b797 SHA512 93ea87997b66088b94c6e943b6e99e9a71d1908444d096c0f65b6876d2c584e55ff6120266f3851f986b664bd1f12fa31206b03479c2b751e7c3ca097ac14275 -DIST firefox-102.9.0esr.source.tar.xz 484308672 BLAKE2B dffd3928c268562802b9d9788cc83203ca932c85758b822c344e54259d81ef84668231149f3452cec3c2bf32c654db321303bcb9f81f8ccaac477ad2499ce346 SHA512 3923212ce4b7d1f589129025961ff1b380b8aaf1dd074674f3bd63cf14e9a44ff051bda556b7796c25634e153de00ce62243ece15a520f63dd0791a19b2a6685 DIST firefox-102esr-patches-07j.tar.xz 23012 BLAKE2B 41b706f5ae8695ddd33e971cf1aa99317382a57618cf19163c5bca09ed5d430dba672ac51b7ab3072360452cc89ac50397bb7992882a61a3adda37022239e654 SHA512 7048353ea5504e34d9d3950e3e5e3125f631f95269d5c9e422ca052173a316718fdd4b57ea7980a452139b1192805cb598f47f398fb148a426a85a5e979c6cdd -DIST firefox-102esr-patches-09j.tar.xz 20236 BLAKE2B 35431fbc56c5470dac2839fd218d2a589558cf964eab2373f2db7a01e6e0dfee329b1b63f6a421bfd4c9bf8c3ed9877067cdc462742a1cc59d78d1d10264ebac SHA512 7fb82ff3ef2cbca339ab05ac07f0409088a87dfe37314d31d441bae1beb181cbea799dcd63dd560d0ccde24b665379118e5e99a1c1a2385d859378901593089b DIST firefox-102esr-patches-10j.tar.xz 21744 BLAKE2B 326f206dfcd5b6ea2f06f5f537505e23d358f6d7930f7e72fd8e54af88d97172170999c246af888278143810df42be9414541e47feb48b60732565a4ee38579e SHA512 5efa50b221abedbb84c1b3d19d8ac089ac5752448e8c90c6aed9f43bf3eee876b7e7050a1678bca65f6b23734c4945b016bf059a3921ad7290b0150538111bbd DIST firefox-78.15.0esr.source.tar.xz 330819568 BLAKE2B dc8785613c2f72c55d484642c89c2545765a9efbd609bc7c2cf57b4a3a06a2ea22e6959e42b5b8af867db782e8b2097a67dec858796b744e47008a8e575e2316 SHA512 ac3de735b246ce4f0e1619cd2664321ffa374240ce6843e785d79a350dc30c967996bbcc5e3b301cb3d822ca981cbea116758fc4122f1738d75ddfd1165b6378 DIST firefox-78esr-patches-19.tar.xz 88424 BLAKE2B fdc7bf8f28b3e799551a70f1cec7a695f52c4712f3b28733648fcd7dac5a599613f4c3d2cfa169266dc62b65619b7f28c0e06d32317adb8ec0056ca79c87e9f6 SHA512 3c81dadc9bf74207c4e361605127ef6141d77700c5c54f1f9cd5ad3be13df9f73c6eec2f51d779558e4bdad1e7395c6aa8943a93415bd1786d461042bc03550a @@ -21,8 +18,6 @@ EBUILD spidermonkey-102.10.0.ebuild 11512 BLAKE2B 64971b45c9c3c63ca58979d983f129 EBUILD spidermonkey-102.11.0.ebuild 11263 BLAKE2B 6db6f27d247c151a2b36f610fdc88ec8d7a5f3aca3ec7f146dcde051e032c28d2658f80902be77673f12644c45230d86cce69c6ebdc5b0d0d52bf9dd0ebe7000 SHA512 891676ce1090bb3e0fe4d12bc0dc9fbbb7121eaa74ac3aa659758943d86e87f0ef3bc5a43c14fb7b5857c6145beca914de30dab20d8368357d41a8c8a81881c1 EBUILD spidermonkey-102.12.0.ebuild 11263 BLAKE2B 6db6f27d247c151a2b36f610fdc88ec8d7a5f3aca3ec7f146dcde051e032c28d2658f80902be77673f12644c45230d86cce69c6ebdc5b0d0d52bf9dd0ebe7000 SHA512 891676ce1090bb3e0fe4d12bc0dc9fbbb7121eaa74ac3aa659758943d86e87f0ef3bc5a43c14fb7b5857c6145beca914de30dab20d8368357d41a8c8a81881c1 EBUILD spidermonkey-102.6.0.ebuild 11294 BLAKE2B 03ab2e77a5b35ae1daa33c958ad2318d72d7a8a0ad75ee6f63eb6b72ee1b3c35ed6ec9c21dcd1f85fb477d71c5d5a62ae18db95aec1c62dc04ed4f85b93471d5 SHA512 4028151d1aa5a46d365250ecdf513265f3c784c03bddf1250cbeeefd25bb9c5df3f5baeac1a5dd62e3ae3b860659e3ed750f8d5003e580bcbf0480b7a2168b94 -EBUILD spidermonkey-102.8.0.ebuild 11173 BLAKE2B 31a73de3f92ee13786d26b9d257333abfb665e7c172b6bcaeaeb75ffc71993781d2a88f0e3d44d3347b5a2ab2c24295c55839f273d8d2079314a47427795c655 SHA512 0c63f2cfa3c78e53810ace109b06412bd0b93e8b6b85a69b448e18f9c0fe12c4ad85ecf3e3c13b1f2ab98f2f1ecb1d2f8cf7ef9e8c4d002d51fa3d5a1e7fc601 -EBUILD spidermonkey-102.9.0.ebuild 11513 BLAKE2B 795b6aad193494239acae2bcff42959697ab7c8166c8718281a5a8f55c759a5400bbc9d414a8e7d8be4c9ee77b6de6d96d0807b60bba615e4dd815e900961cd9 SHA512 f6eee807acd0e11620f8130254ac3721c14c73e8dab0e2d6eeec81e6ac142017cfd5919e7c0873cb310ed736d2299cd5f45ad1c892af9b454d71cc14c989c6de EBUILD spidermonkey-78.15.0.ebuild 13112 BLAKE2B 6d9174edbdffd08974c015b2e8d2f26ae386422e732de28bd9f8c5f58755e3785d18025d508a795a78210e99035929ba42b72b7a0182110552d2ea5c24573643 SHA512 cda61f308cf4d6a67bd6f2510a430643da4629cc7622f9f0897102091862a6064fe3bae5eac7fb1382f07c7a6a61e889135a810f983cc57f7cd08842d8a79454 EBUILD spidermonkey-91.13.0-r1.ebuild 15292 BLAKE2B f30309c1590ed7ba56c2563bc20163781a04cb45d0ad5dea46442709d505d30f98f6f9d8c6fe1ba115c1e3895f44cd05d9e634e635c669e43f71e4a06283a8b3 SHA512 affe566c6ac89baef29b5b610a0d4db8fb98a42ce040eff5f30e6c0217adbd40129d0280589bef63c0a788364285d8921e7dda05d4a1f1d2c179e6cd3b14cabf MISC metadata.xml 575 BLAKE2B e7f3717d36ba723ed41a6dc5adc798390ec98cbd018447b52b4b59a692cea93a4430524a3d545649e08057210e3d5427943d15e97aa5e33da859d8b8e352274d SHA512 9fc1545caf99002b574a675fdf8b8ee0cfa2791129109dcb40e01e658d3de283848d63958876208ff1c384ca6041b20d4e6d34b84a445521df3e240c9ea9dfe2 diff --git a/dev-lang/spidermonkey/spidermonkey-102.8.0.ebuild b/dev-lang/spidermonkey/spidermonkey-102.8.0.ebuild deleted file mode 100644 index b23bf89b8208..000000000000 --- a/dev-lang/spidermonkey/spidermonkey-102.8.0.ebuild +++ /dev/null @@ -1,411 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -# Patch version -FIREFOX_PATCHSET="firefox-102esr-patches-09j.tar.xz" -SPIDERMONKEY_PATCHSET="spidermonkey-102-patches-04j.tar.xz" - -LLVM_MAX_SLOT=15 - -PYTHON_COMPAT=( python3_{9..11} ) -PYTHON_REQ_USE="ssl,xml(+)" - -WANT_AUTOCONF="2.1" - -inherit autotools check-reqs flag-o-matic llvm multiprocessing prefix python-any-r1 toolchain-funcs - -MY_PN="mozjs" -MY_PV="${PV/_pre*}" # Handle Gentoo pre-releases - -MY_MAJOR=$(ver_cut 1) - -MOZ_ESR=yes - -MOZ_PV=${PV} -MOZ_PV_SUFFIX= -if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then - MOZ_PV_SUFFIX=${BASH_REMATCH[1]} - - # Convert the ebuild version to the upstream Mozilla version - MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI - MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI - MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI -fi - -if [[ -n ${MOZ_ESR} ]] ; then - # ESR releases have slightly different version numbers - MOZ_PV="${MOZ_PV}esr" -fi - -MOZ_PN="firefox" -MOZ_P="${MOZ_PN}-${MOZ_PV}" -MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" -MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" - -MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" - -if [[ ${PV} == *_rc* ]] ; then - MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" -fi - -PATCH_URIS=( - https://dev.gentoo.org/~{juippis,whissi}/mozilla/patchsets/${FIREFOX_PATCHSET} - https://dev.gentoo.org/~{juippis,whissi}/mozilla/patchsets/${SPIDERMONKEY_PATCHSET} -) - -SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz - ${PATCH_URIS[@]}" - -DESCRIPTION="SpiderMonkey is Mozilla's JavaScript engine written in C and C++" -HOMEPAGE="https://spidermonkey.dev https://firefox-source-docs.mozilla.org/js/index.html " - -KEYWORDS="amd64 arm arm64 ~mips ~ppc ppc64 ~riscv ~sparc x86" - -SLOT="$(ver_cut 1)" -LICENSE="MPL-2.0" -IUSE="clang cpu_flags_arm_neon debug +jit lto test" - -#RESTRICT="test" -RESTRICT="!test? ( test )" - -BDEPEND="${PYTHON_DEPS} - || ( - ( - sys-devel/llvm:15 - clang? ( - sys-devel/clang:15 - virtual/rust:0/llvm-15 - lto? ( sys-devel/lld:15 ) - ) - ) - ( - sys-devel/llvm:14 - clang? ( - sys-devel/clang:14 - virtual/rust:0/llvm-14 - lto? ( sys-devel/lld:14 ) - ) - ) - ) - !clang? ( virtual/rust ) - virtual/pkgconfig - test? ( - $(python_gen_any_dep 'dev-python/six[${PYTHON_USEDEP}]') - )" -DEPEND=">=dev-libs/icu-71.1:= - dev-libs/nspr - sys-libs/readline:0= - sys-libs/zlib" -RDEPEND="${DEPEND}" - -S="${WORKDIR}/firefox-${MY_PV}/js/src" - -llvm_check_deps() { - if ! has_version -b "sys-devel/llvm:${LLVM_SLOT}" ; then - einfo "sys-devel/llvm:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if use clang ; then - if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then - einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then - einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if use lto ; then - if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then - einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - fi - fi - - einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 -} - -python_check_deps() { - if use test ; then - python_has_version "dev-python/six[${PYTHON_USEDEP}]" - fi -} - -pkg_pretend() { - if use test ; then - CHECKREQS_DISK_BUILD="7000M" - else - CHECKREQS_DISK_BUILD="6000M" - fi - - check-reqs_pkg_pretend -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use test ; then - CHECKREQS_DISK_BUILD="7000M" - else - CHECKREQS_DISK_BUILD="6000M" - fi - - check-reqs_pkg_setup - - llvm_pkg_setup - - if use clang && use lto ; then - local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') - [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") - [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" - - local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') - [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") - [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" - - if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then - eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." - eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" - eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" - eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" - eerror " - Build ${CATEGORY}/${PN} without USE=lto" - eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " - eerror " llvm/clang/lld/rust chain depending on your @world updates)" - die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" - fi - fi - - python-any-r1_pkg_setup - - # Build system is using /proc/self/oom_score_adj, bug #604394 - addpredict /proc/self/oom_score_adj - - if ! mountpoint -q /dev/shm ; then - # If /dev/shm is not available, configure is known to fail with - # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py - ewarn "/dev/shm is not mounted -- expect build failures!" - fi - - # Ensure we use C locale when building, bug #746215 - export LC_ALL=C - fi -} - -src_prepare() { - pushd ../.. &>/dev/null || die - - use lto && rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch - - eapply "${WORKDIR}"/firefox-patches - eapply "${WORKDIR}"/spidermonkey-patches - - default - - # Make cargo respect MAKEOPTS - export CARGO_BUILD_JOBS="$(makeopts_jobs)" - - # sed-in toolchain prefix - sed -i \ - -e "s/objdump/${CHOST}-objdump/" \ - python/mozbuild/mozbuild/configure/check_debug_ranges.py \ - || die "sed failed to set toolchain prefix" - - # use prefix shell in wrapper linker scripts, bug #789660 - hprefixify "${S}"/../../build/cargo-{,host-}linker - - einfo "Removing pre-built binaries ..." - find third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die - - MOZJS_BUILDDIR="${WORKDIR}/build" - mkdir "${MOZJS_BUILDDIR}" || die - - popd &>/dev/null || die - eautoconf -} - -src_configure() { - # Show flags set at the beginning - einfo "Current CFLAGS: ${CFLAGS}" - einfo "Current CXXFLAGS: ${CXXFLAGS}" - einfo "Current LDFLAGS: ${LDFLAGS}" - einfo "Current RUSTFLAGS: ${RUSTFLAGS}" - - local have_switched_compiler= - if use clang; then - # Force clang - einfo "Enforcing the use of clang due to USE=clang ..." - if tc-is-gcc; then - have_switched_compiler=yes - fi - AR=llvm-ar - CC=${CHOST}-clang - CXX=${CHOST}-clang++ - NM=llvm-nm - RANLIB=llvm-ranlib - elif ! use clang && ! tc-is-gcc ; then - # Force gcc - have_switched_compiler=yes - einfo "Enforcing the use of gcc due to USE=-clang ..." - AR=gcc-ar - CC=${CHOST}-gcc - CXX=${CHOST}-g++ - NM=gcc-nm - RANLIB=gcc-ranlib - fi - - if [[ -n "${have_switched_compiler}" ]] ; then - # Because we switched active compiler we have to ensure - # that no unsupported flags are set - strip-unsupported-flags - fi - - # Ensure we use correct toolchain - export HOST_CC="$(tc-getBUILD_CC)" - export HOST_CXX="$(tc-getBUILD_CXX)" - export AS="$(tc-getCC) -c" - tc-export CC CXX LD AR AS NM OBJDUMP RANLIB PKG_CONFIG - - cd "${MOZJS_BUILDDIR}" || die - - # ../python/mach/mach/mixin/process.py fails to detect SHELL - export SHELL="${EPREFIX}/bin/bash" - - local -a myeconfargs=( - --host="${CBUILD:-${CHOST}}" - --target="${CHOST}" - - --disable-ctype - --disable-jemalloc - --disable-smoosh - --disable-strip - - --enable-readline - --enable-release - --enable-shared-js - - --with-intl-api - --with-system-icu - --with-system-nspr - --with-system-zlib - --with-toolchain-prefix="${CHOST}-" - - $(use_enable debug) - $(use_enable jit) - $(use_enable test tests) - ) - - if use debug; then - myeconfargs+=( --disable-optimize ) - else - myeconfargs+=( --enable-optimize ) - fi - - if ! use x86 && [[ ${CHOST} != armv*h* ]] ; then - myeconfargs+=( --enable-rust-simd ) - fi - - # Modifications to better support ARM, bug 717344 - if use cpu_flags_arm_neon ; then - myeconfargs+=( --with-fpu=neon ) - - if ! tc-is-clang ; then - # thumb options aren't supported when using clang, bug 666966 - myeconfargs+=( --with-thumb=yes ) - myeconfargs+=( --with-thumb-interwork=no ) - fi - fi - - # Tell build system that we want to use LTO - if use lto ; then - if use clang ; then - myeconfargs+=( --enable-linker=lld ) - myeconfargs+=( --enable-lto=cross ) - else - myeconfargs+=( --enable-linker=bfd ) - myeconfargs+=( --enable-lto=full ) - fi - fi - - # LTO flag was handled via configure - filter-flags '-flto*' - - # Use system's Python environment - export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" - export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach - - # Show flags we will use - einfo "Build CFLAGS: ${CFLAGS}" - einfo "Build CXXFLAGS: ${CXXFLAGS}" - einfo "Build LDFLAGS: ${LDFLAGS}" - einfo "Build RUSTFLAGS: ${RUSTFLAGS}" - - # Forcing system-icu allows us to skip patching bundled ICU for PPC - # and other minor arches - ECONF_SOURCE="${S}" \ - econf \ - ${myeconfargs[@]} \ - XARGS="${EPREFIX}/usr/bin/xargs" -} - -src_compile() { - cd "${MOZJS_BUILDDIR}" || die - default -} - -src_test() { - if "${MOZJS_BUILDDIR}/js/src/js" -e 'print("Hello world!")'; then - einfo "Smoke-test successful, continuing with full test suite" - else - die "Smoke-test failed: did interpreter initialization fail?" - fi - - cp "${FILESDIR}"/spidermonkey-${SLOT}-known-test-failures.txt "${T}"/known_failures.list || die - - if [[ $(tc-endian) == "big" ]] ; then - echo "non262/extensions/clone-errors.js" >> "${T}"/known_failures.list - echo "test262/built-ins/Date/UTC/fp-evaluation-order.js" >> "${T}"/known_failures.list - echo "test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js" >> "${T}"/known_failures.list - fi - - ${EPYTHON} \ - "${S}"/tests/jstests.py -d -s -t 1800 --wpt=disabled --no-progress \ - --exclude-file="${T}"/known_failures.list \ - "${MOZJS_BUILDDIR}"/js/src/js \ - || die - - if use jit ; then - ${EPYTHON} \ - "${S}"/tests/jstests.py -d -s -t 1800 --wpt=disabled --no-progress \ - --exclude-file="${T}"/known_failures.list \ - "${MOZJS_BUILDDIR}"/js/src/js basic \ - || die - fi -} - -src_install() { - cd "${MOZJS_BUILDDIR}" || die - default - - # fix soname links - pushd "${ED}"/usr/$(get_libdir) &>/dev/null || die - mv lib${MY_PN}-${MY_MAJOR}.so lib${MY_PN}-${MY_MAJOR}.so.0.0.0 || die - ln -s lib${MY_PN}-${MY_MAJOR}.so.0.0.0 lib${MY_PN}-${MY_MAJOR}.so.0 || die - ln -s lib${MY_PN}-${MY_MAJOR}.so.0 lib${MY_PN}-${MY_MAJOR}.so || die - popd &>/dev/null || die - - # remove unneeded files - rm \ - "${ED}"/usr/bin/js${MY_MAJOR}-config \ - "${ED}"/usr/$(get_libdir)/libjs_static.ajs \ - || die - - # fix permissions - chmod -x \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc \ - "${ED}"/usr/include/mozjs-${MY_MAJOR}/js-config.h \ - || die -} diff --git a/dev-lang/spidermonkey/spidermonkey-102.9.0.ebuild b/dev-lang/spidermonkey/spidermonkey-102.9.0.ebuild deleted file mode 100644 index 119e336940d7..000000000000 --- a/dev-lang/spidermonkey/spidermonkey-102.9.0.ebuild +++ /dev/null @@ -1,418 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -# Patch version -FIREFOX_PATCHSET="firefox-102esr-patches-09j.tar.xz" -SPIDERMONKEY_PATCHSET="spidermonkey-102-patches-05j.tar.xz" - -LLVM_MAX_SLOT=15 - -PYTHON_COMPAT=( python3_{9..11} ) -PYTHON_REQ_USE="ssl,xml(+)" - -WANT_AUTOCONF="2.1" - -inherit autotools check-reqs flag-o-matic llvm multiprocessing prefix python-any-r1 toolchain-funcs - -MY_PN="mozjs" -MY_PV="${PV/_pre*}" # Handle Gentoo pre-releases - -MY_MAJOR=$(ver_cut 1) - -MOZ_ESR=yes - -MOZ_PV=${PV} -MOZ_PV_SUFFIX= -if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then - MOZ_PV_SUFFIX=${BASH_REMATCH[1]} - - # Convert the ebuild version to the upstream Mozilla version - MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI - MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI - MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI -fi - -if [[ -n ${MOZ_ESR} ]] ; then - # ESR releases have slightly different version numbers - MOZ_PV="${MOZ_PV}esr" -fi - -MOZ_PN="firefox" -MOZ_P="${MOZ_PN}-${MOZ_PV}" -MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" -MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" - -MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" - -if [[ ${PV} == *_rc* ]] ; then - MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" -fi - -PATCH_URIS=( - https://dev.gentoo.org/~{juippis,whissi}/mozilla/patchsets/${FIREFOX_PATCHSET} - https://dev.gentoo.org/~{juippis,whissi}/mozilla/patchsets/${SPIDERMONKEY_PATCHSET} -) - -SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz - ${PATCH_URIS[@]}" - -DESCRIPTION="SpiderMonkey is Mozilla's JavaScript engine written in C and C++" -HOMEPAGE="https://spidermonkey.dev https://firefox-source-docs.mozilla.org/js/index.html " - -KEYWORDS="amd64 ~arm arm64 ~mips ~ppc ppc64 ~riscv ~sparc x86" - -SLOT="$(ver_cut 1)" -LICENSE="MPL-2.0" -IUSE="clang cpu_flags_arm_neon debug +jit lto test" - -#RESTRICT="test" -RESTRICT="!test? ( test )" - -BDEPEND="${PYTHON_DEPS} - || ( - ( - sys-devel/llvm:15 - clang? ( - sys-devel/clang:15 - virtual/rust:0/llvm-15 - lto? ( sys-devel/lld:15 ) - ) - ) - ( - sys-devel/llvm:14 - clang? ( - sys-devel/clang:14 - virtual/rust:0/llvm-14 - lto? ( sys-devel/lld:14 ) - ) - ) - ) - !clang? ( virtual/rust ) - virtual/pkgconfig - test? ( - $(python_gen_any_dep 'dev-python/six[${PYTHON_USEDEP}]') - )" -DEPEND=">=dev-libs/icu-71.1:= - dev-libs/nspr - sys-libs/readline:0= - sys-libs/zlib" -RDEPEND="${DEPEND}" - -S="${WORKDIR}/firefox-${MY_PV}/js/src" - -llvm_check_deps() { - if ! has_version -b "sys-devel/llvm:${LLVM_SLOT}" ; then - einfo "sys-devel/llvm:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if use clang ; then - if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then - einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if ! has_version -b "virtual/rust:0/llvm-${LLVM_SLOT}" ; then - einfo "virtual/rust:0/llvm-${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if use lto ; then - if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then - einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - fi - fi - - einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 -} - -python_check_deps() { - if use test ; then - python_has_version "dev-python/six[${PYTHON_USEDEP}]" - fi -} - -pkg_pretend() { - if use test ; then - CHECKREQS_DISK_BUILD="7000M" - else - CHECKREQS_DISK_BUILD="6000M" - fi - - check-reqs_pkg_pretend -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use test ; then - CHECKREQS_DISK_BUILD="7000M" - else - CHECKREQS_DISK_BUILD="6000M" - fi - - check-reqs_pkg_setup - - llvm_pkg_setup - - if use clang && use lto ; then - local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') - [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") - [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" - - local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') - [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") - [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" - - if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then - eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." - eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" - eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" - eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" - eerror " - Build ${CATEGORY}/${PN} without USE=lto" - eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " - eerror " llvm/clang/lld/rust chain depending on your @world updates)" - die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" - fi - fi - - python-any-r1_pkg_setup - - # Build system is using /proc/self/oom_score_adj, bug #604394 - addpredict /proc/self/oom_score_adj - - if ! mountpoint -q /dev/shm ; then - # If /dev/shm is not available, configure is known to fail with - # a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py - ewarn "/dev/shm is not mounted -- expect build failures!" - fi - - # Ensure we use C locale when building, bug #746215 - export LC_ALL=C - fi -} - -src_prepare() { - pushd ../.. &>/dev/null || die - - use lto && rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch - - eapply "${WORKDIR}"/firefox-patches - eapply "${WORKDIR}"/spidermonkey-patches - - default - - # Make cargo respect MAKEOPTS - export CARGO_BUILD_JOBS="$(makeopts_jobs)" - - # sed-in toolchain prefix - sed -i \ - -e "s/objdump/${CHOST}-objdump/" \ - python/mozbuild/mozbuild/configure/check_debug_ranges.py \ - || die "sed failed to set toolchain prefix" - - # use prefix shell in wrapper linker scripts, bug #789660 - hprefixify "${S}"/../../build/cargo-{,host-}linker - - einfo "Removing pre-built binaries ..." - find third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die - - MOZJS_BUILDDIR="${WORKDIR}/build" - mkdir "${MOZJS_BUILDDIR}" || die - - popd &>/dev/null || die - eautoconf -} - -src_configure() { - # Show flags set at the beginning - einfo "Current CFLAGS: ${CFLAGS}" - einfo "Current CXXFLAGS: ${CXXFLAGS}" - einfo "Current LDFLAGS: ${LDFLAGS}" - einfo "Current RUSTFLAGS: ${RUSTFLAGS}" - - local have_switched_compiler= - if use clang; then - # Force clang - einfo "Enforcing the use of clang due to USE=clang ..." - if tc-is-gcc; then - have_switched_compiler=yes - fi - AR=llvm-ar - CC=${CHOST}-clang - CXX=${CHOST}-clang++ - NM=llvm-nm - RANLIB=llvm-ranlib - elif ! use clang && ! tc-is-gcc ; then - # Force gcc - have_switched_compiler=yes - einfo "Enforcing the use of gcc due to USE=-clang ..." - AR=gcc-ar - CC=${CHOST}-gcc - CXX=${CHOST}-g++ - NM=gcc-nm - RANLIB=gcc-ranlib - fi - - if [[ -n "${have_switched_compiler}" ]] ; then - # Because we switched active compiler we have to ensure - # that no unsupported flags are set - strip-unsupported-flags - fi - - # Ensure we use correct toolchain - export HOST_CC="$(tc-getBUILD_CC)" - export HOST_CXX="$(tc-getBUILD_CXX)" - export AS="$(tc-getCC) -c" - tc-export CC CXX LD AR AS NM OBJDUMP RANLIB PKG_CONFIG - - cd "${MOZJS_BUILDDIR}" || die - - # ../python/mach/mach/mixin/process.py fails to detect SHELL - export SHELL="${EPREFIX}/bin/bash" - - local -a myeconfargs=( - --host="${CBUILD:-${CHOST}}" - --target="${CHOST}" - - --disable-ctype - --disable-jemalloc - --disable-smoosh - --disable-strip - - --enable-readline - --enable-release - --enable-shared-js - - --with-intl-api - --with-system-icu - --with-system-nspr - --with-system-zlib - --with-toolchain-prefix="${CHOST}-" - - $(use_enable debug) - $(use_enable jit) - $(use_enable test tests) - ) - - if use debug; then - myeconfargs+=( --disable-optimize ) - else - myeconfargs+=( --enable-optimize ) - fi - - if ! use x86 && [[ ${CHOST} != armv*h* ]] ; then - myeconfargs+=( --enable-rust-simd ) - fi - - # Modifications to better support ARM, bug 717344 - if use cpu_flags_arm_neon ; then - myeconfargs+=( --with-fpu=neon ) - - if ! tc-is-clang ; then - # thumb options aren't supported when using clang, bug 666966 - myeconfargs+=( --with-thumb=yes ) - myeconfargs+=( --with-thumb-interwork=no ) - fi - fi - - # Tell build system that we want to use LTO - if use lto ; then - if use clang ; then - myeconfargs+=( --enable-linker=lld ) - myeconfargs+=( --enable-lto=cross ) - else - myeconfargs+=( --enable-linker=bfd ) - myeconfargs+=( --enable-lto=full ) - fi - fi - - # LTO flag was handled via configure - filter-flags '-flto*' - - # Use system's Python environment - export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" - export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach - - # Show flags we will use - einfo "Build CFLAGS: ${CFLAGS}" - einfo "Build CXXFLAGS: ${CXXFLAGS}" - einfo "Build LDFLAGS: ${LDFLAGS}" - einfo "Build RUSTFLAGS: ${RUSTFLAGS}" - - # Forcing system-icu allows us to skip patching bundled ICU for PPC - # and other minor arches - ECONF_SOURCE="${S}" \ - econf \ - ${myeconfargs[@]} \ - XARGS="${EPREFIX}/usr/bin/xargs" -} - -src_compile() { - cd "${MOZJS_BUILDDIR}" || die - default -} - -src_test() { - if "${MOZJS_BUILDDIR}/js/src/js" -e 'print("Hello world!")'; then - einfo "Smoke-test successful, continuing with full test suite" - else - die "Smoke-test failed: did interpreter initialization fail?" - fi - - cp "${FILESDIR}"/spidermonkey-${SLOT}-known-test-failures.txt "${T}"/known_failures.list || die - - if use x86; then - echo "test262/language/types/number/S8.5_A2.1.js" >> "${T}"/known_failures.list - echo "test262/language/types/number/S8.5_A2.2.js" >> "${T}"/known_failures.list - echo "test262/built-ins/Date/UTC/fp-evaluation-order.js" >> "${T}"/known_failures.list - echo "non262/Date/timeclip.js" >> "${T}"/known_failures.list - fi - - if [[ $(tc-endian) == "big" ]] ; then - echo "non262/extensions/clone-errors.js" >> "${T}"/known_failures.list - echo "test262/built-ins/Date/UTC/fp-evaluation-order.js" >> "${T}"/known_failures.list - echo "test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js" >> "${T}"/known_failures.list - fi - - ${EPYTHON} \ - "${S}"/tests/jstests.py -d -s -t 1800 --wpt=disabled --no-progress \ - --exclude-file="${T}"/known_failures.list \ - "${MOZJS_BUILDDIR}"/js/src/js \ - || die - - if use jit ; then - ${EPYTHON} \ - "${S}"/tests/jstests.py -d -s -t 1800 --wpt=disabled --no-progress \ - --exclude-file="${T}"/known_failures.list \ - "${MOZJS_BUILDDIR}"/js/src/js basic \ - || die - fi -} - -src_install() { - cd "${MOZJS_BUILDDIR}" || die - default - - # fix soname links - pushd "${ED}"/usr/$(get_libdir) &>/dev/null || die - mv lib${MY_PN}-${MY_MAJOR}.so lib${MY_PN}-${MY_MAJOR}.so.0.0.0 || die - ln -s lib${MY_PN}-${MY_MAJOR}.so.0.0.0 lib${MY_PN}-${MY_MAJOR}.so.0 || die - ln -s lib${MY_PN}-${MY_MAJOR}.so.0 lib${MY_PN}-${MY_MAJOR}.so || die - popd &>/dev/null || die - - # remove unneeded files - rm \ - "${ED}"/usr/bin/js${MY_MAJOR}-config \ - "${ED}"/usr/$(get_libdir)/libjs_static.ajs \ - || die - - # fix permissions - chmod -x \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc \ - "${ED}"/usr/include/mozjs-${MY_MAJOR}/js-config.h \ - || die -} -- cgit v1.2.3