summaryrefslogtreecommitdiff
path: root/dev-lang/php
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-07-31 04:44:07 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-07-31 04:44:07 +0100
commit358368569cfce7dc6be9a6faed29805babe0e371 (patch)
tree174e69d79cb877a860b4768fd7ba8def89e271d3 /dev-lang/php
parent3b4199328e240d392ef1f03900219cb88bdafcff (diff)
gentoo auto-resync : 31:07:2023 - 04:44:07
Diffstat (limited to 'dev-lang/php')
-rw-r--r--dev-lang/php/Manifest3
-rw-r--r--dev-lang/php/files/php-8.2.8-openssl-tests.patch21
-rw-r--r--dev-lang/php/php-8.2.8-r2.ebuild (renamed from dev-lang/php/php-8.2.8.ebuild)200
3 files changed, 157 insertions, 67 deletions
diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest
index c9709a4757ec..e3f174f212b6 100644
--- a/dev-lang/php/Manifest
+++ b/dev-lang/php/Manifest
@@ -4,6 +4,7 @@ AUX php-7.4.33-CVE-2022-31631.patch 1836 BLAKE2B 63a250c6ec5c1b3608f5e2b61118d89
AUX php-7.4.33-CVE-2023-0567.patch 2780 BLAKE2B a35b8f7d24cfb8a325f65e465bd440930876f4b188d1ea5c12d616da39ec75809c13f9e37d08dc5245c7412f21899018f867681ecf89213fc5e7a1b01cb0dd41 SHA512 cdbbe235791027b804c8bbc71a203f954628cbf27af99be34c750dab3c8bf8e3928af87adb87ffe09b2d011c19ed5b339e345d5a55a7053fc82d4c72ba08e8b7
AUX php-7.4.33-CVE-2023-0568.patch 1327 BLAKE2B ab7ad1f83bfeef8da091f159d41371d0f89e3dbcb79c1b7bec7bb76b329c60d2d10e0c6ef9c5c959a57846466a778345e697099e5c2a9555733918cc2faf41f4 SHA512 6015f6025e4e5e29aa699ef9a4b4b28a8f756cca0e83a4e2311c1735f25ef89395d4ea2c143ec45b375128f66b99a4b788e8bfb28d9ee74566345696a1a3c2f0
AUX php-7.4.33-CVE-2023-0662.patch 1992 BLAKE2B d436b763a0131c1992e69821df1f8c5d7cfdc151c9470671189dd76acdf295d3108030a273d2c3314bf97c0e06a286541a64312a95d6b9bdea0c912a90db7e0d SHA512 71cda55f019b7dd3d74c598dc93e81674bf6954bee4fb37c325ca4b8449b6a1340d61ccd1f9b9f0ba86b9cb3069221614f9b50a01de674c157bf47d7906e25a7
+AUX php-8.2.8-openssl-tests.patch 790 BLAKE2B fcfa6f361470f2baa65d2bbbde7c9629841546a560aa6f88d85b68727004e24949f9516340eba0339e575dcf06077d08540a7a6d58a0cda42d5cd26bf48d9e46 SHA512 d29b5334abee8bcbef62c88c01c9eaf887f25901763db75e754f6690e24138c9e45783943d32402f693bd7e4564d737521a8b0b8034d5401bac73ff30f453050
AUX php-capstone-optional.patch 2497 BLAKE2B f23236130be88d28d933d5482f1925c4e32e09c5022544ac2dec62465e9296baabe64f57fedd7ccb9f4499d354bd466d10cfb66596e8be029be6fa4f82dbc1a1 SHA512 a9000d789a7bc54d4b6cf8ed287dcfd71958dfc85c6417737dcd66b9461be5b1aa2568a19f5a9cd29927fe9d955ac24d04e2f64f1c4018110a8f81a6eb4813c5
AUX php-fpm_at-simple.service 316 BLAKE2B 0ba10f3e3b004fbf14956e1e4f04f59b8a127e6717fe6b92c09b9f931033a11551c75fbbee9010f6b694c5a8758ca0eec9eed457ae304ba0dea8f2c256c3b8d4 SHA512 7367a3f8d3874f8e0c76f331ba613a0250db02f60ad9f87affaf448dcb5bc34bcecb91d88f415764a12b24b46ae3d1b738a002af9f77a4b707e916e83a0021fd
AUX php-fpm_at.service 317 BLAKE2B f13fc38fcc0575a8517ee8d07b120efda37eabd2355061d0fdc303604c6b02ad42d7301180d86c977d5e585f5dd685343c592e37a6e0f44933707be79e0b77e0 SHA512 27982f9e2d958bfa75c89c7d3531e48d17fc388b1cdcbc8e09051b236b1184ee2baabdfcc567c19d9fcd067d4b3b86f171015616d8da42fccdabd89432d865e8
@@ -28,5 +29,5 @@ EBUILD php-8.1.12.ebuild 21815 BLAKE2B c1610ff5a4e439954b228744cd0223a4205dd1b53
EBUILD php-8.1.16.ebuild 21818 BLAKE2B 1782dc5c71cef2ac3ca067f4d53fcf64e61850044384dfe9bc0e64a025ab1dcf328a455b2aadbd17dd8c92cc65029337598763e3644f488122cde39a913d3343 SHA512 2215fb5851cfd28ffff620ffe86b0d924f61e9a24ff724fa019be7c788fb7de3c53f23489d21553fd81670887cd463b959f9f9857a53cc872e72f70478e330d9
EBUILD php-8.1.20-r1.ebuild 21914 BLAKE2B 5c44d372707fb544587f2f854fec25b07d54ffb6faebed85520803da507d56b0177020a938f7589a869098e8327bc24ff328a79384e9c3b793a30c02249bedfe SHA512 1764f5a1b4bc74c2a03df4a7712226412a47d1f23549547f97447714f381110ceae7aa01183e844931a25cc8cf06627f8ed645e27b45878470170c1596042264
EBUILD php-8.1.21.ebuild 21917 BLAKE2B 87783761a2113250800e1999e517319622b6ab82ca7fca86259e61683a567771e7c7b0a269326a341cc26ba0559ccf6c80c71265f5ac1d791f016b30d1f8f314 SHA512 dc1bfef40b29e5a161b500e8f8162c45446c49295b97254cac48e8373410c4df861768f7e06207136dcdeb8cca891ed761f4993624b09390c798d1e01b5c88ed
-EBUILD php-8.2.8.ebuild 21957 BLAKE2B 3b0d77db4e42d852c92888ea93cf8a7b35344ca9d9e0e80c184edec509e68bb3e6e7ea82234f629b26367e2fd4c173f1c31a44da9e1d603ddf149ab7175fc1aa SHA512 ccb6a15c480874521d510331f5b7a5d375380a5f8275e605cd292aea5e42dfce819c07e775bfaf3aea7d4dc9f2859426815e271653648f34614afbcedd08e353
+EBUILD php-8.2.8-r2.ebuild 24720 BLAKE2B 76cf420b8095415621e82e2447baf3bb9224a61491a20685e73016498a15cf5e5cb2e486191b73f033db2304b8195bdcf7cd4a7a892dbfd5962cdcce4a1c2bc0 SHA512 428716e470348b046da8fbe8c83380dde37c8afcf94049aed4ce13cef239507d904f3e9627d1b9963f48db5522bdf368e860c6fa79dab1094323de222488c382
MISC metadata.xml 4018 BLAKE2B a2413be53cf35069736693b31b2ef8d4277c25c1cb4ea75d949e3a50809e77b9fae2dceeb8a71bcd0ea4c74131cfcaeaefa09ca67f312bd7eb934c2e07156502 SHA512 ba8385d8596d5e71d6b5cc7e225d2afbbed0cde36ea1b49a43efd16c03141d63baa26b440ddfeb39dea04313467077353c5ac6b8b75307bb64ea0c09fe456933
diff --git a/dev-lang/php/files/php-8.2.8-openssl-tests.patch b/dev-lang/php/files/php-8.2.8-openssl-tests.patch
new file mode 100644
index 000000000000..ebade4c0cd45
--- /dev/null
+++ b/dev-lang/php/files/php-8.2.8-openssl-tests.patch
@@ -0,0 +1,21 @@
+commit 5a4083181b970411d6f3b1c1e3bdd199d5cd1a5e
+Author: Jakub Holubansky <jakub.holubansky@team.bumble.com>
+Date: Fri Mar 31 17:20:35 2023 +0200
+
+ ext/openssl: pass ini options to extra processes in tests
+
+diff --git a/ext/openssl/tests/ServerClientTestCase.inc b/ext/openssl/tests/ServerClientTestCase.inc
+index 753366df6f..1b140b63f6 100644
+--- a/ext/openssl/tests/ServerClientTestCase.inc
++++ b/ext/openssl/tests/ServerClientTestCase.inc
+@@ -72,8 +72,9 @@ class ServerClientTestCase
+ );
+ } else {
+ $cmd = sprintf(
+- '%s "%s" %s %s',
++ '%s %s "%s" %s %s',
+ PHP_BINARY,
++ getenv('TEST_PHP_EXTRA_ARGS'),
+ __FILE__,
+ WORKER_ARGV_VALUE,
+ $worker
diff --git a/dev-lang/php/php-8.2.8.ebuild b/dev-lang/php/php-8.2.8-r2.ebuild
index 11169ef1de48..98c074915afd 100644
--- a/dev-lang/php/php-8.2.8.ebuild
+++ b/dev-lang/php/php-8.2.8-r2.ebuild
@@ -31,7 +31,7 @@ IUSE="${IUSE}
threads"
IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar
- cdb cjk coverage +ctype curl debug
+ cdb cjk +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
@@ -39,8 +39,8 @@ IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar
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"
+ sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode
+ valgrind 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.
@@ -67,6 +67,7 @@ REQUIRED_USE="
mysql? ( || ( mysqli pdo ) )
firebird? ( pdo )
mssql? ( pdo )
+ test? ( cli )
"
RESTRICT="!test? ( test )"
@@ -85,7 +86,6 @@ COMMON_DEPEND="
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:= )
@@ -118,6 +118,7 @@ COMMON_DEPEND="
tokyocabinet? ( dev-db/tokyocabinet )
truetype? ( =media-libs/freetype-2* )
unicode? ( dev-libs/oniguruma:= )
+ valgrind? ( dev-util/valgrind )
webp? ( media-libs/libwebp:0= )
xml? ( >=dev-libs/libxml2-2.9.0 )
xpm? ( x11-libs/libXpm )
@@ -148,6 +149,7 @@ PHP_MV="$(ver_cut 1)"
PATCHES=(
"${FILESDIR}/php-iodbc-header-location.patch"
"${FILESDIR}/php-capstone-optional.patch"
+ "${FILESDIR}/php-8.2.8-openssl-tests.patch"
)
php_install_ini() {
@@ -224,19 +226,85 @@ src_prepare() {
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
+ # missing skipif; fixed upstream already
+ rm sapi/cgi/tests/005.phpt || die
+ # These three get BORKED on no-ipv6 systems,
+ #
+ # https://github.com/php/php-src/pull/11651
+ #
+ rm ext/sockets/tests/mcast_ipv6_recv.phpt \
+ ext/sockets/tests/mcast_ipv6_recv_limited.phpt \
+ ext/sockets/tests/mcast_ipv6_send.phpt \
+ || die
+
+ # fails in a network sandbox,
+ #
+ # https://github.com/php/php-src/issues/11662
+ #
+ rm ext/sockets/tests/bug63000.phpt || die
+
+ # expected output needs to be updated,
+ #
+ # https://github.com/php/php-src/pull/11648
+ #
+ rm ext/dba/tests/dba_tcadb.phpt || die
+
+ # Two IMAP tests missing SKIPIFs,
+ #
+ # https://github.com/php/php-src/pull/11654
+ #
+ rm ext/imap/tests/imap_mutf7_to_utf8.phpt \
+ ext/imap/tests/imap_utf8_to_mutf7_basic.phpt \
+ || die
+
+ # broken upstream with icu-73.x,
+ #
+ # https://github.com/php/php-src/issues/11128
+ #
+ rm ext/intl/tests/calendar_clear_variation1.phpt || die
+
+ # overly sensitive to INI values; fixes sent upstream:
+ #
+ # https://github.com/php/php-src/pull/11631
+ #
+ rm ext/session/tests/{bug74514,bug74936,gh7787}.phpt || die
+
+ # This is sensitive to the current "nice" level:
+ #
+ # https://github.com/php/php-src/issues/11630
+ #
+ rm ext/standard/tests/general_functions/proc_nice_basic.phpt || die
+
+ # Tests ignoring the "-n" flag we pass to run-tests.php,
+ #
+ # https://github.com/php/php-src/pull/11669
+ #
+ rm ext/standard/tests/file/bug60120.phpt \
+ ext/standard/tests/general_functions/proc_open_null.phpt \
+ ext/standard/tests/general_functions/proc_open_redirect.phpt \
+ ext/standard/tests/general_functions/proc_open_sockets1.phpt \
+ ext/standard/tests/general_functions/proc_open_sockets2.phpt \
+ ext/standard/tests/general_functions/proc_open_sockets3.phpt \
+ ext/standard/tests/ini_info/php_ini_loaded_file.phpt \
+ sapi/cli/tests/016.phpt \
+ sapi/cli/tests/023.phpt \
+ sapi/cli/tests/bug65275.phpt \
+ sapi/cli/tests/bug74600.phpt \
+ sapi/cli/tests/bug78323.phpt \
+ || die
+
+ # Same TEST_PHP_EXTRA_ARGS (-n) issue with this one, but it's
+ # already been fixed upstream.
+ rm sapi/cli/tests/017.phpt || die
+
+ # Most Oracle tests are borked,
+ #
+ # * https://github.com/php/php-src/issues/11804
+ # * https://github.com/php/php-src/pull/11820
+ # * https://github.com/php/php-src/issues/11819
+ #
+ rm ext/oci8/tests/*.phpt || die
}
src_configure() {
@@ -245,6 +313,11 @@ src_configure() {
PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+ # Don't allow ./configure to detect and use an existing version
+ # of PHP; this can lead to all sorts of weird unpredictability
+ # as in bug 900210.
+ export ac_cv_prog_PHP=""
+
# 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=(
@@ -267,7 +340,6 @@ src_configure() {
$(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)
@@ -314,6 +386,7 @@ src_configure() {
$(use_with zip)
$(use_with zlib zlib "${EPREFIX}/usr")
$(use_enable debug)
+ $(use_with valgrind)
)
# DBA support
@@ -442,9 +515,16 @@ src_configure() {
# Support the Apache2 extras, they must be set globally for all
# SAPIs to work correctly, especially for external PHP extensions
+ # Create separate build trees for each enabled SAPI. The upstream
+ # build system doesn't do this, but we have to do it to use a
+ # different php.ini for each SAPI (see --with-config-file-path and
+ # --with-config-file-scan-dir below). The path winds up define'd
+ # in main/build-defs.h which is included in main/php.h which is
+ # included by basically everything; so, avoiding a rebuild after
+ # changing it is not an easy job.
local one_sapi
local sapi
- mkdir -p "${WORKDIR}/sapis-build" || die
+ mkdir "${WORKDIR}/sapis-build" || die
for one_sapi in $SAPIS ; do
use "${one_sapi}" || continue
php_set_ini_dir "${one_sapi}"
@@ -454,7 +534,6 @@ src_configure() {
# 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}"
@@ -493,6 +572,7 @@ src_configure() {
myeconfargs+=( "${sapi_conf[@]}" )
pushd "${BUILD_DIR}" > /dev/null || die
+ einfo "Running econf in ${BUILD_DIR}"
econf "${myeconfargs[@]}"
popd > /dev/null || die
done
@@ -503,13 +583,20 @@ src_compile() {
addpredict /usr/share/snmp/mibs/.index #nowarn
addpredict /var/lib/net-snmp/mib_indexes #nowarn
+ if use oci8-instant-client && use kerberos && use imap && use phar; then
+ # A conspiracy takes place when the first three of these flags
+ # are set together, causing the newly-built "php" to open
+ # /dev/urandom with mode rw when it starts. That's not actually
+ # a problem... unless you also have USE=phar, which runs that
+ # "php" to build some phar thingy in src_compile(). Later in
+ # src_test(), portage (at least) sets "addpredict /" so the
+ # problem does not repeat.
+ addpredict /dev/urandom #nowarn
+ fi
+
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
+ use "${sapi}" && emake -C "${WORKDIR}/sapis-build/${sapi}"
done
}
@@ -632,14 +719,13 @@ src_install() {
}
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
+ export TEST_PHP_EXECUTABLE="${WORKDIR}/sapis-build/cli/sapi/cli/php"
+
+ # Sometimes when the sub-php launches a sub-sub-php, it uses these.
+ # Without an "-n" in all instances, the *live* php.ini can be loaded,
+ # pulling in *live* zend extensions. And those can be incompatible
+ # with the thing we just built.
+ export TEST_PHP_EXTRA_ARGS="-n"
if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then
export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi"
@@ -649,40 +735,22 @@ src_test() {
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
+ # The sendmail override prevents ext/imap/tests/bug77020.phpt from
+ # actually trying to send mail, and will be fixed upstream soon:
+ #
+ # https://github.com/php/php-src/issues/11629
+ #
+ # The IO capture tests need to be disabled because they fail when
+ # std{in,out,err} are redirected (as they are within portage).
+ #
+ # One -n applies to the top-level "php", while the other applies
+ # to any sub-php that get invoked by the test runner.
+ SKIP_IO_CAPTURE_TESTS=1 SKIP_PERF_SENSITIVE=1 REPORT_EXIT_STATUS=1 \
+ "${TEST_PHP_EXECUTABLE}" -n \
+ "${WORKDIR}/sapis-build/cli/run-tests.php" --offline -n -q \
+ -d "session.save_path=${T}" \
+ -d "sendmail_path=echo >/dev/null" \
+ || die "tests failed"
}
pkg_postinst() {