From 4d6e1311ded368813dc93f130293f64148e22c45 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 17 Aug 2024 12:23:44 +0100 Subject: gentoo auto-resync : 17:08:2024 - 12:23:44 --- dev-lang/php/Manifest | 8 +- .../files/php-8.3.10-optional-png-testfixen.patch | 1249 +++++++++++++++++++ .../files/php-8.3.9-optional-png-testfixen.patch | 1277 -------------------- dev-lang/php/php-8.2.22.ebuild | 888 ++++++++++++++ dev-lang/php/php-8.3.10.ebuild | 816 +++++++++++++ dev-lang/php/php-8.3.9.ebuild | 816 ------------- 6 files changed, 2958 insertions(+), 2096 deletions(-) create mode 100644 dev-lang/php/files/php-8.3.10-optional-png-testfixen.patch delete mode 100644 dev-lang/php/files/php-8.3.9-optional-png-testfixen.patch create mode 100644 dev-lang/php/php-8.2.22.ebuild create mode 100644 dev-lang/php/php-8.3.10.ebuild delete mode 100644 dev-lang/php/php-8.3.9.ebuild (limited to 'dev-lang/php') diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest index 40d67d8c2438..97e90194ed1c 100644 --- a/dev-lang/php/Manifest +++ b/dev-lang/php/Manifest @@ -4,16 +4,18 @@ AUX php-8.1.27-gcc14-libxml.patch 1982 BLAKE2B dcb329e5bae787aa0d47f70e7d60f5a18 AUX php-8.1.27-implicit-decls.patch 2163 BLAKE2B 0164d973ae9b6851014bcccd0deb92add72fa92d9a7c830695841768fb1998c2b49d649503ca324d9735f893974884438b922deab5a4c6c46275057a139ee3ea SHA512 f02d9668ceea39be7b4a6a9c3026d3d0e5230e74aadab09a454a2447a93ea1a4098982d714353c64ec1beb69fe387e9b3575c60fc14e4749298ea674f81401c2 AUX php-8.2.20-implicit-printf.patch 2226 BLAKE2B 859cd38c6687b517a372973a8d282494f43bc5739ffa00c829de4a43ad72a752195657ededc7d4705699c0bd1ab249e588a74f6be85e1937c55de00d2844213d SHA512 95e4f535066b72e1497673dd633aa33beaf49c5a967ca2ad04e837ddea546f935717b3095d61cef8310138d77a3d18372139af3f979030b25b9ec2dc38318fb0 AUX php-8.2.8-openssl-tests.patch 790 BLAKE2B fcfa6f361470f2baa65d2bbbde7c9629841546a560aa6f88d85b68727004e24949f9516340eba0339e575dcf06077d08540a7a6d58a0cda42d5cd26bf48d9e46 SHA512 d29b5334abee8bcbef62c88c01c9eaf887f25901763db75e754f6690e24138c9e45783943d32402f693bd7e4564d737521a8b0b8034d5401bac73ff30f453050 +AUX php-8.3.10-optional-png-testfixen.patch 39081 BLAKE2B 7b21cdc8cf557144eee2455d540b834e583f919ffec3bb37ddf446cbd57e8835145f988d4b53c6341313e6e4001a7d879ad8c933677db9818a17b026694da230 SHA512 74b1d84b2e10073d32c79a2a6c73a0a6d198ad84190be2f4ecf752a338bbb1ba8353799b2c0fb9ff7e9513bbf2f849b8359c62db92631d4919d99bf97688376e AUX php-8.3.9-gd-cachevars.patch 2287 BLAKE2B 7e9fe2192937dfcd000bdb0a8f0236582e95e97c6f7c1e5973a9bc48e8d0d1ae71c2fb4be3c507dae977d0fae96503b3bb02825a334581aca70d97cdd0545627 SHA512 3ec68bff7fd365307f41a04835c80f3acdd053924fde3e09e301349079db161318f68ac226ae1d99eaf14ee7527abe5226a0e3a7b601e0a804019b2ce8c099d8 -AUX php-8.3.9-optional-png-testfixen.patch 39893 BLAKE2B 8ae371db716ee433570024cdfa41bd93c022d615ac582eff7596e8498eda37c4552e85b74bdabda3180c0691a1701d78d9ce97df6ada0ef7d86ed20bd42a65af SHA512 51b903fca04a98d41fd30f4e183efe71d21ab839d817f9482fad029ed37d25ed7af4cff3f57a298d9f0539dcd5a10dceb4ce7b77b11d575417cd91c34388d2ab 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 AUX php-iodbc-header-location.patch 481 BLAKE2B 9ea6a5d529dc7a8c78eeee800900372bc14309a05e352b2838da32e1384b61b507fdb623c9400094aa5b637eb1a87da92c72600eff79b18b8989ef90af56a0fa SHA512 86469f657d8807f005c28fd2149770c881add8f243fdfea087956c7987277597fe400a7af23f624f26da270356604717ed9cd04771154d7cf2ffe7237972372b DIST php-8.1.29.tar.xz 11826292 BLAKE2B 471f85504531c61e534c857a854de2ce9935b263e002deee19c4508390f6b2a11f89a02f55a90d660ee8d537b22a45db057e24373fb17fd2edf45f6e458f0196 SHA512 fd4f75224f71111a4cc40b3015ae70ac57a623326a3299da9ab8bd9dfad4ea27ff345d0eb75f1407d183207e763d372d738bbd8d217d01ec1414d29a547e8ba7 DIST php-8.2.20.tar.xz 12097568 BLAKE2B 1e38e48ea9c28abfe2c3bd860bc5d959fbe327669c007f2e2a665ae14f5a045f6ad8a0a972f32618f88ea1ff3636c2692504478b5b094b48404d6c4a214f863b SHA512 c659ed4809b6507aa428b483c85c7322815ac9d7d8e4bfe575513a5e69c5a680b8d089fd98a19f83d3a00df3de61468809f21408455913aa24d519776e44abc5 -DIST php-8.3.9.tar.xz 12470616 BLAKE2B 44cc360c91b121f6fe1c768134d2e5e355fe1ab23ebefb98e60e878755e79b0bd31fa46a435eb5c3dabf034fb7b4bd785db014dc63f40331a6b168a14d849571 SHA512 f6291b71cf2c66f9effc2a8a7b0365364481cd5532551161194376893074f1f20dc7e9dbd628727e3b07460ac63b6d38bf4871bf4976e2b3b290f230b0111360 +DIST php-8.2.22.tar.xz 12099476 BLAKE2B 8c6c664f0d48ce839971e5316b6c6619434babdf26013709589b2c5e91a63d79eddc3d716762ff1714620e7e5e35cf24f06eb270931dc6f15603e233c34728af SHA512 b72df5bf8bde09571a965f512b970e2403f1c9b26fbf9efc4d1aeb5940def10e4088e5c7dbb06087b2f5206d711e34849b0726af6a81b0c3b6d9bcbd14f5172d +DIST php-8.3.10.tar.xz 12484660 BLAKE2B a2cb60f83eea13aff7c907f322733a78f3d02bc334666a5350d795a84433252e0b27468f23eecc654fcfe882464da2699669bed247b7f4eaf40138bfb3773656 SHA512 99dc53cef802304dba455b7e1e54183e780fa21a58ec044ee5eac34d24fc9e5a1390447c18a3ef0035ef3dc531fc817016b47edab5b2e90af1233a73b59517be EBUILD php-8.1.29.ebuild 22547 BLAKE2B b087d99d25da6da7a6cea1619782fc66f926b8f06ae2fca802b9a4ab63699578bccfd46f50bfd9a916df68f2028b6267694a46c423c580ed836de9f1a054f7a7 SHA512 e46a9f3a296c8052a0ef7db8de88ee69837065cfb91c51f2639ebc2b49260d4894b83d1f27dbcb259f82d6e9daa93d86ec06656af49868ff9ffeb0b9a0840384 EBUILD php-8.2.20.ebuild 26562 BLAKE2B 37bf48f7beb96e95c97504adb1db1f2f9baefc726728d15676e42789bee44480084c6bc24caa07ec89b7e551a1fdc36cdea56b6c933c292cfcc89c2398ab6a9b SHA512 96801bf89f12256b192d646e439c3fdf43eb4420d6c207cf6387cadb6c1f75a72f75c36758710000a023e38f40fecb4e4e654356f381318486d1303bdbf1a30a -EBUILD php-8.3.9.ebuild 24491 BLAKE2B c15272414cfb9a9ac441881f2d9b213fdabcaf8191086338e39bbc8d0f16bc04e055b28ad737872b5d01c83e0dfdaa72485f5eda1baa48b5a24284db0589b98c SHA512 edf6fab8192fd2ea7f4bb26a92270deaf7c64951e6f30dda6bf7d1df9a6acf71dc298099f943118f10ce590c05934406b23483513a005616b3b1b5116b4fc9c1 +EBUILD php-8.2.22.ebuild 26569 BLAKE2B aa1f70b3a03c2ba61de8b690badede9b6f76e18bc294ff1f6eddae6b0b269a4767893544c442e62ebb2fd7604d6858a3a10cb4ff10cd5c524fedfbd692f0c80c SHA512 6aef01b5b27d08cf8a12d56bea8f48cb4d28731e4203533a25c18737c2597ce76ff7984c2d5e6c68f279d872ed53efea2ec17e89a4045a989e59074921ad3099 +EBUILD php-8.3.10.ebuild 24492 BLAKE2B 837a042bcf8934f63650976259edc82bf9617ba1bc5dfc3c13dd884a7a29ee8d409ac9c89626420847843a62ad59937ae55b72351dadf08054fa1532ee388300 SHA512 36b752fddccba455d1313c2c425c610268a62993e9854e41a4c609afea2fd971779ddb823e0dd04fe78d036c0991ed8be1847d4ac0071ff12257dac89541abf2 MISC metadata.xml 4249 BLAKE2B 11f9270fbc0cae280ec3ec62c9e6acfc643f4c7952822537664e8bcdbdfed64805b0e83fcbfb83111123745fadf64b276b51e1e27c9b5eb38ef8ffc30965d12b SHA512 39c59d31de21a66ca55a4816bebd901c8f2b28b7d1340605845c535cc979bca4d8641280bf45782d5d3eb94820e054e7f52491a23a4d1cf692774e11becc55c1 diff --git a/dev-lang/php/files/php-8.3.10-optional-png-testfixen.patch b/dev-lang/php/files/php-8.3.10-optional-png-testfixen.patch new file mode 100644 index 000000000000..def26884ef2f --- /dev/null +++ b/dev-lang/php/files/php-8.3.10-optional-png-testfixen.patch @@ -0,0 +1,1249 @@ +From e25636b087c507bf12922c8faf9f526aa87153a6 Mon Sep 17 00:00:00 2001 +From: Michael Orlitzky +Date: Wed, 23 Aug 2023 18:42:17 -0400 +Subject: [PATCH 1/3] ext/gd/tests: fix three misleading die() messages + +Three of our gd tests could be skipped with a message about requiring +bundled GD, but those tests don't actually require bundled GD. We +update the messages to mention the specific functions that are +required. +--- + ext/gd/tests/bug24155.phpt | 2 +- + ext/gd/tests/bug39366.phpt | 2 +- + ext/gd/tests/imagefilter.phpt | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ext/gd/tests/bug24155.phpt b/ext/gd/tests/bug24155.phpt +index 42c5e3d7926f5..7c12c38a1a6d7 100644 +--- a/ext/gd/tests/bug24155.phpt ++++ b/ext/gd/tests/bug24155.phpt +@@ -4,7 +4,7 @@ Bug #24155 (gdImageRotate270 rotation problem). + gd + --SKIPIF-- + + --FILE-- + 45) + gd + --SKIPIF-- + + --FILE-- + + --FILE-- + +Date: Wed, 23 Aug 2023 19:56:10 -0400 +Subject: [PATCH 2/3] ext/gd/tests: add SKIPIF stanzas for missing PNG support + +The bundled libgd always has PNG support, but an external one may not. +--- + ext/gd/tests/bug22544-mb.phpt | 6 ++++++ + ext/gd/tests/bug22544.phpt | 6 ++++++ + ext/gd/tests/bug24155.phpt | 3 +++ + ext/gd/tests/bug27582_1.phpt | 6 ++++++ + ext/gd/tests/bug39780_extern.phpt | 3 +++ + ext/gd/tests/bug43073.phpt | 3 +++ + ext/gd/tests/bug43475.phpt | 3 +++ + ext/gd/tests/bug43828.phpt | 3 +++ + ext/gd/tests/bug45799.phpt | 6 ++++++ + ext/gd/tests/bug47946.phpt | 3 +++ + ext/gd/tests/bug48732-mb.phpt | 3 +++ + ext/gd/tests/bug48732.phpt | 4 ++++ + ext/gd/tests/bug50194.phpt | 4 +++- + ext/gd/tests/bug51498.phpt | 3 +++ + ext/gd/tests/bug52070.phpt | 6 ++++++ + ext/gd/tests/bug53504.phpt | 3 +++ + ext/gd/tests/bug64641.phpt | 3 +++ + ext/gd/tests/bug66005.phpt | 6 ++++++ + ext/gd/tests/bug72482_2.phpt | 6 ++++++ + ext/gd/tests/bug72604.phpt | 6 ++++++ + ext/gd/tests/bug72913.phpt | 6 ++++++ + ext/gd/tests/bug73213.phpt | 6 ++++++ + ext/gd/tests/bug73272.phpt | 6 ++++++ + ext/gd/tests/bug73549.phpt | 6 ++++++ + ext/gd/tests/bug73614.phpt | 3 +++ + ext/gd/tests/bug74031.phpt | 6 ++++++ + ext/gd/tests/bug75124.phpt | 3 +++ + ext/gd/tests/bug77943.phpt | 6 ++++++ + ext/gd/tests/bug79945.phpt | 3 +++ + ext/gd/tests/imagearc_basic.phpt | 6 ++++++ + ext/gd/tests/imagearc_variation1.phpt | 6 ++++++ + ext/gd/tests/imagearc_variation2.phpt | 6 ++++++ + ext/gd/tests/imagechar_basic.phpt | 6 ++++++ + ext/gd/tests/imagecharup_basic.phpt | 6 ++++++ + ext/gd/tests/imagecolorallocatealpha_basic.phpt | 3 +++ + ext/gd/tests/imagecolorset_basic.phpt | 6 ++++++ + ext/gd/tests/imageconvolution_basic.phpt | 6 ++++++ + ext/gd/tests/imagecopyresampled_basic.phpt | 6 ++++++ + ext/gd/tests/imagecreatefrombmp_basic.phpt | 3 +++ + ext/gd/tests/imagecreatefromstring_bmp.phpt | 3 +++ + ext/gd/tests/imagecreatefromtga_basic.phpt | 3 +++ + ext/gd/tests/imagecreatefromtga_variation.phpt | 3 +++ + ext/gd/tests/imagecreatetruecolor_basic.phpt | 3 +++ + ext/gd/tests/imagecrop_auto.phpt | 3 +++ + ext/gd/tests/imagedashedline_basic.phpt | 3 +++ + ext/gd/tests/imageellipse_basic.phpt | 6 ++++++ + ext/gd/tests/imagefilledarc_basic.phpt | 3 +++ + ext/gd/tests/imagefilledarc_variation1.phpt | 3 +++ + ext/gd/tests/imagefilledarc_variation2.phpt | 3 +++ + ext/gd/tests/imagefilledellipse_basic.phpt | 6 ++++++ + ext/gd/tests/imagefilledpolygon_basic.phpt | 3 +++ + ext/gd/tests/imagefilltoborder_basic.phpt | 6 ++++++ + ext/gd/tests/imagefilter.phpt | 3 +++ + ext/gd/tests/imagegammacorrect_basic.phpt | 3 +++ + ext/gd/tests/imagegammacorrect_variation1.phpt | 3 +++ + ext/gd/tests/imagegammacorrect_variation2.phpt | 6 ++++++ + ext/gd/tests/imageopenpolygon_basic.phpt | 6 ++++++ + ext/gd/tests/imagepolygon_aa.phpt | 6 ++++++ + ext/gd/tests/imagepolygon_basic.phpt | 3 +++ + ext/gd/tests/imagerectangle_basic.phpt | 6 ++++++ + ext/gd/tests/imageresolution_png.phpt | 6 ++++++ + ext/gd/tests/imagesetbrush_basic.phpt | 6 ++++++ + ext/gd/tests/imagesetthickness_basic.phpt | 3 +++ + ext/gd/tests/imagestring_basic.phpt | 6 ++++++ + ext/gd/tests/imagestringup_basic.phpt | 6 ++++++ + ext/gd/tests/imagetruecolortopalette_basic.phpt | 3 +++ + ext/gd/tests/libgd00086_extern.phpt | 3 +++ + ext/gd/tests/test_image_equals_file_palette.phpt | 6 ++++++ + 68 files changed, 307 insertions(+), 1 deletion(-) + +diff --git a/ext/gd/tests/bug22544-mb.phpt b/ext/gd/tests/bug22544-mb.phpt +index b67478e558c47..f99307df1212b 100644 +--- a/ext/gd/tests/bug22544-mb.phpt ++++ b/ext/gd/tests/bug22544-mb.phpt +@@ -2,6 +2,12 @@ + Bug #22544 (TrueColor transparency in PNG images). + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + = 2.2.5'); + } ++if (!(imagetypes() & IMG_PNG)) { ++ die("skip No PNG support"); ++} + ?> + --FILE-- + + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + #testfest PHPSP on 2009-06-30 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + + #testfest PHPSP on 2009-06-30 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + #testfest PHPSP on 2009-06-20 + --EXTENSIONS-- + gd ++--SKIPIF-- ++ + --FILE-- + + --FILE-- + + --FILE-- + + --FILE-- + +Date: Sat, 30 Dec 2023 16:13:40 -0500 +Subject: [PATCH 3/3] ext/gd/tests: imagerotate() is always available + +Following 59ec80c5, the imagerotate() function is always available. We +may therefore remove its function_exists() checks without harm. +--- + ext/gd/tests/bug24155.phpt | 1 - + ext/gd/tests/bug39366.phpt | 4 ---- + ext/gd/tests/imagerotate_overflow.phpt | 6 ------ + 3 files changed, 11 deletions(-) + +diff --git a/ext/gd/tests/bug24155.phpt b/ext/gd/tests/bug24155.phpt +index d78ee9b77816f..c93c3bbbcb586 100644 +--- a/ext/gd/tests/bug24155.phpt ++++ b/ext/gd/tests/bug24155.phpt +@@ -4,7 +4,6 @@ Bug #24155 (gdImageRotate270 rotation problem). + gd + --SKIPIF-- + 45) + --EXTENSIONS-- + gd +---SKIPIF-- +- + --FILE-- + + --FILE-- + -Date: Wed, 23 Aug 2023 18:42:17 -0400 -Subject: [PATCH 1/3] ext/gd/tests: fix three misleading die() messages - -Three of our gd tests could be skipped with a message about requiring -bundled GD, but those tests don't actually require bundled GD. We -update the messages to mention the specific functions that are -required. ---- - ext/gd/tests/bug24155.phpt | 2 +- - ext/gd/tests/bug39366.phpt | 2 +- - ext/gd/tests/imagefilter.phpt | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ext/gd/tests/bug24155.phpt b/ext/gd/tests/bug24155.phpt -index 42c5e3d7926f5..7c12c38a1a6d7 100644 ---- a/ext/gd/tests/bug24155.phpt -+++ b/ext/gd/tests/bug24155.phpt -@@ -4,7 +4,7 @@ Bug #24155 (gdImageRotate270 rotation problem). - gd - --SKIPIF-- - - --FILE-- - 45) - gd - --SKIPIF-- - - --FILE-- - - --FILE-- - -Date: Wed, 23 Aug 2023 19:56:10 -0400 -Subject: [PATCH 2/3] ext/gd/tests: add SKIPIF stanzas for missing PNG support - -The bundled libgd always has PNG support, but an external one may not. ---- - ext/gd/tests/bug22544-mb.phpt | 6 ++++++ - ext/gd/tests/bug22544.phpt | 6 ++++++ - ext/gd/tests/bug24155.phpt | 3 +++ - ext/gd/tests/bug27582_1.phpt | 6 ++++++ - ext/gd/tests/bug39780_extern.phpt | 3 +++ - ext/gd/tests/bug43073.phpt | 3 +++ - ext/gd/tests/bug43475.phpt | 3 +++ - ext/gd/tests/bug43828.phpt | 3 +++ - ext/gd/tests/bug45799.phpt | 6 ++++++ - ext/gd/tests/bug47946.phpt | 3 +++ - ext/gd/tests/bug48732-mb.phpt | 3 +++ - ext/gd/tests/bug48732.phpt | 4 ++++ - ext/gd/tests/bug50194.phpt | 4 +++- - ext/gd/tests/bug51498.phpt | 3 +++ - ext/gd/tests/bug52070.phpt | 6 ++++++ - ext/gd/tests/bug53504.phpt | 3 +++ - ext/gd/tests/bug64641.phpt | 3 +++ - ext/gd/tests/bug66005.phpt | 6 ++++++ - ext/gd/tests/bug72482_2.phpt | 6 ++++++ - ext/gd/tests/bug72604.phpt | 6 ++++++ - ext/gd/tests/bug72913.phpt | 6 ++++++ - ext/gd/tests/bug73213.phpt | 6 ++++++ - ext/gd/tests/bug73272.phpt | 6 ++++++ - ext/gd/tests/bug73549.phpt | 6 ++++++ - ext/gd/tests/bug73614.phpt | 3 +++ - ext/gd/tests/bug74031.phpt | 6 ++++++ - ext/gd/tests/bug75124.phpt | 3 +++ - ext/gd/tests/bug77943.phpt | 6 ++++++ - ext/gd/tests/bug79945.phpt | 3 +++ - ext/gd/tests/imagearc_basic.phpt | 6 ++++++ - ext/gd/tests/imagearc_variation1.phpt | 6 ++++++ - ext/gd/tests/imagearc_variation2.phpt | 6 ++++++ - ext/gd/tests/imagechar_basic.phpt | 6 ++++++ - ext/gd/tests/imagecharup_basic.phpt | 6 ++++++ - ext/gd/tests/imagecolorallocatealpha_basic.phpt | 3 +++ - ext/gd/tests/imagecolorset_basic.phpt | 6 ++++++ - ext/gd/tests/imageconvolution_basic.phpt | 6 ++++++ - ext/gd/tests/imagecopyresampled_basic.phpt | 6 ++++++ - ext/gd/tests/imagecreatefrombmp_basic.phpt | 3 +++ - ext/gd/tests/imagecreatefromstring_bmp.phpt | 3 +++ - ext/gd/tests/imagecreatefromtga_basic.phpt | 3 +++ - ext/gd/tests/imagecreatefromtga_variation.phpt | 3 +++ - ext/gd/tests/imagecreatetruecolor_basic.phpt | 3 +++ - ext/gd/tests/imagecrop_auto.phpt | 3 +++ - ext/gd/tests/imagedashedline_basic.phpt | 3 +++ - ext/gd/tests/imageellipse_basic.phpt | 6 ++++++ - ext/gd/tests/imagefilledarc_basic.phpt | 3 +++ - ext/gd/tests/imagefilledarc_variation1.phpt | 3 +++ - ext/gd/tests/imagefilledarc_variation2.phpt | 3 +++ - ext/gd/tests/imagefilledellipse_basic.phpt | 6 ++++++ - ext/gd/tests/imagefilledpolygon_basic.phpt | 3 +++ - ext/gd/tests/imagefilltoborder_basic.phpt | 6 ++++++ - ext/gd/tests/imagefilter.phpt | 3 +++ - ext/gd/tests/imagegammacorrect_basic.phpt | 3 +++ - ext/gd/tests/imagegammacorrect_variation1.phpt | 3 +++ - ext/gd/tests/imagegammacorrect_variation2.phpt | 6 ++++++ - ext/gd/tests/imageopenpolygon_basic.phpt | 6 ++++++ - ext/gd/tests/imagepolygon_aa.phpt | 6 ++++++ - ext/gd/tests/imagepolygon_basic.phpt | 3 +++ - ext/gd/tests/imagerectangle_basic.phpt | 6 ++++++ - ext/gd/tests/imageresolution_png.phpt | 6 ++++++ - ext/gd/tests/imagesetbrush_basic.phpt | 6 ++++++ - ext/gd/tests/imagesetthickness_basic.phpt | 3 +++ - ext/gd/tests/imagestring_basic.phpt | 6 ++++++ - ext/gd/tests/imagestringup_basic.phpt | 6 ++++++ - ext/gd/tests/imagetruecolortopalette_basic.phpt | 3 +++ - ext/gd/tests/libgd00086_extern.phpt | 3 +++ - ext/gd/tests/test_image_equals_file_palette.phpt | 6 ++++++ - 68 files changed, 307 insertions(+), 1 deletion(-) - -diff --git a/ext/gd/tests/bug22544-mb.phpt b/ext/gd/tests/bug22544-mb.phpt -index b67478e558c47..f99307df1212b 100644 ---- a/ext/gd/tests/bug22544-mb.phpt -+++ b/ext/gd/tests/bug22544-mb.phpt -@@ -2,6 +2,12 @@ - Bug #22544 (TrueColor transparency in PNG images). - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - = 2.2.5'); - } -+if (!(imagetypes() & IMG_PNG)) { -+ die("skip No PNG support"); -+} - ?> - --FILE-- - - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - #testfest PHPSP on 2009-06-30 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - - #testfest PHPSP on 2009-06-30 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - #testfest PHPSP on 2009-06-20 - --EXTENSIONS-- - gd -+--SKIPIF-- -+ - --FILE-- - - --FILE-- - - --FILE-- - - --FILE-- - -Date: Sat, 30 Dec 2023 16:13:40 -0500 -Subject: [PATCH 3/3] ext/gd/tests: imagerotate() is always available - -Following 59ec80c5, the imagerotate() function is always available. We -may therefore remove its function_exists() checks without harm. ---- - ext/gd/tests/bug24155.phpt | 1 - - ext/gd/tests/bug39366.phpt | 4 ---- - ext/gd/tests/imagerotate_overflow.phpt | 6 ------ - 3 files changed, 11 deletions(-) - -diff --git a/ext/gd/tests/bug24155.phpt b/ext/gd/tests/bug24155.phpt -index d78ee9b77816f..c93c3bbbcb586 100644 ---- a/ext/gd/tests/bug24155.phpt -+++ b/ext/gd/tests/bug24155.phpt -@@ -4,7 +4,6 @@ Bug #24155 (gdImageRotate270 rotation problem). - gd - --SKIPIF-- - 45) - --EXTENSIONS-- - gd ----SKIPIF-- -- - --FILE-- - - --FILE-- - -Date: Wed, 10 Jul 2024 08:20:31 -0400 -Subject: [PATCH 1/1] ext/gd/tests/gh10614.phpt: skip if no PNG support - -This test uses imagecreatefrompng(), which won't be there if libgd was -built without PNG support. ---- - ext/gd/tests/gh10614.phpt | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/ext/gd/tests/gh10614.phpt b/ext/gd/tests/gh10614.phpt -index c068914183..1b91115d74 100644 ---- a/ext/gd/tests/gh10614.phpt -+++ b/ext/gd/tests/gh10614.phpt -@@ -5,6 +5,9 @@ - --SKIPIF-- - =')) die("skip test requires GD 2.3.4 or older"); -+if (!(imagetypes() & IMG_PNG)) { -+ die("skip No PNG support"); -+} - ?> - --FILE-- - =app-eselect/eselect-php-0.9.7[apache2?,fpm?] + >=dev-libs/libpcre2-10.30[jit?,unicode] + virtual/libcrypt:= + 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 ) ) + 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:= ) + valgrind? ( dev-debug/valgrind ) + 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" + "${FILESDIR}/php-8.2.8-openssl-tests.patch" + "${FILESDIR}/php-8.2.20-implicit-printf.patch" +) + +# ARM/Windows functions (bug 923335) +QA_CONFIG_IMPL_DECL_SKIP=( + __crc32d + _controlfp + _controlfp_s +) + +# Functions from alternate iconv implementations (bug 925268) +QA_CONFIG_IMPL_DECL_SKIP+=( + iconv_ccs_init + cstoccsid +) + +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 + + # 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 + + # https://github.com/php/php-src/issues/12801 + rm ext/pcre/tests/gh11374.phpt || die + + # This is a memory usage test with hard-coded limits. Whenever the + # limits are surpassed... they get increased... but in the meantime, + # the tests fail. This is not really a test that end users should + # be running pre-install, in my opinion. Bug 927461. + rm ext/fileinfo/tests/bug78987.phpt || die + + # glibc-2.39 compatibility, fixed upstream in + # https://github.com/php/php-src/pull/14097 + rm ext/standard/tests/strings/setlocale_variation3.phpt || die + + # The expected warnings aren't triggered in this test because we + # define session.save_path on the CLI: + # + # https://github.com/php/php-src/issues/14368 + # + rm ext/session/tests/gh13856.phpt || die + + # Bug 935382, fixed eventually by + # + # - https://github.com/php/php-src/pull/14788 + # - https://github.com/php/php-src/pull/14814 + # + rm ext/standard/tests/strings/chunk_split_variation1_32bit.phpt || die + rm ext/standard/tests/strings/wordwrap_memory_limit.phpt || die + + # Bug 935379, not yet fixed upstream but looks harmless (ordering + # of keys isn't guaranteed AFAICS): + # + # - https://github.com/php/php-src/issues/14786 + # + rm ext/dba/tests/dba_gdbm.phpt || die + + # https://github.com/php/php-src/pull/14439 + rm ext/openssl/tests/bug74341.phpt || die +} + +src_configure() { + addpredict /usr/share/snmp/mibs/.index #nowarn + addpredict /var/lib/net-snmp/mib_indexes #nowarn + + # https://bugs.gentoo.org/866683, https://bugs.gentoo.org/913527 + filter-lto + + 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=( + --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 + --with-external-libcrypt + $(use_enable threads zts) + ) + + # The slotted man/info pages will be missed by the default list of + # docompress paths. + docompress "${PHP_DESTDIR}/man" "${PHP_DESTDIR}/info" + + 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 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 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) + $(use_with valgrind) + ) + + # 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 + + # 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 "${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 + + 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 + einfo "Running econf in ${BUILD_DIR}" + 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 + + 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 + use "${sapi}" && emake -C "${WORKDIR}/sapis-build/${sapi}" + 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() { + 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" + fi + + if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then + export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" + 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() { + # 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.3.10.ebuild b/dev-lang/php/php-8.3.10.ebuild new file mode 100644 index 000000000000..5abc04930731 --- /dev/null +++ b/dev-lang/php/php-8.3.10.ebuild @@ -0,0 +1,816 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +WANT_AUTOMAKE="none" + +inherit autotools flag-o-matic multilib systemd + +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 ) + 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" + +# 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 + capstone cdb +ctype curl debug + enchant exif ffi +fileinfo +filter firebird + +flatfile ftp gd gdbm gmp +iconv imap inifile + intl iodbc ipv6 +jit jpeg kerberos ldap ldap-sasl libedit lmdb + mhash mssql mysql mysqli nls + odbc +opcache +opcache-jit pcntl pdo +phar +posix postgres png + qdbm readline selinux +session session-mm sharedmem + +simplexml snmp soap sockets sodium spell sqlite ssl + 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. +REQUIRED_USE=" + || ( cli cgi fpm apache2 embed phpdbg ) + cli? ( ^^ ( readline libedit ) ) + !cli? ( ?? ( readline libedit ) ) + gd? ( zlib ) + simplexml? ( xml ) + soap? ( xml ) + xmlreader? ( xml ) + xmlwriter? ( xml ) + xslt? ( xml ) + ldap-sasl? ( ldap ) + qdbm? ( !gdbm ) + session-mm? ( session !threads ) + mysql? ( || ( mysqli pdo ) ) + firebird? ( pdo ) + mssql? ( pdo ) + test? ( cli ) +" + +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[apache2?,fpm?] + dev-libs/libpcre2[jit?,unicode] + virtual/libcrypt:= + 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:= ) + berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:4.8 ) ) + bzip2? ( app-arch/bzip2:0= ) + capstone? ( dev-libs/capstone ) + cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) + curl? ( net-misc/curl ) + enchant? ( app-text/enchant:2 ) + ffi? ( dev-libs/libffi:= ) + firebird? ( dev-db/firebird ) + gd? ( + >=media-libs/gd-2.3.3-r4[avif?,jpeg?,png?,truetype?,webp?,xpm?] + ) + gdbm? ( sys-libs/gdbm: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:= ) + ldap-sasl? ( dev-libs/cyrus-sasl ) + libedit? ( dev-libs/libedit ) + lmdb? ( dev-db/lmdb:= ) + mssql? ( dev-db/freetds[mssql] ) + nls? ( sys-devel/gettext ) + odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( dev-db/unixODBC ) ) + postgres? ( dev-db/postgresql:* ) + qdbm? ( dev-db/qdbm ) + readline? ( sys-libs/readline:0= ) + session-mm? ( dev-libs/mm ) + snmp? ( net-analyzer/net-snmp ) + sodium? ( dev-libs/libsodium:=[-minimal(-)] ) + spell? ( app-text/aspell ) + sqlite? ( dev-db/sqlite ) + ssl? ( dev-libs/openssl:0= ) + tidy? ( app-text/htmltidy ) + tokyocabinet? ( dev-db/tokyocabinet ) + truetype? ( media-libs/freetype ) + unicode? ( dev-libs/oniguruma:= ) + valgrind? ( dev-debug/valgrind ) + xml? ( >=dev-libs/libxml2-2.12.5 ) + xslt? ( dev-libs/libxslt ) + zip? ( dev-libs/libzip:= ) + zlib? ( sys-libs/zlib:0= ) +" + +IDEPEND="app-eselect/eselect-php[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" + +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/php-8.3.10-optional-png-testfixen.patch" + "${FILESDIR}/php-8.3.9-gd-cachevars.patch" +) + +PHP_MV="$(ver_cut 1)" + +# ARM/Windows functions (bug 923335) +QA_CONFIG_IMPL_DECL_SKIP=( + __crc32d + _controlfp + _controlfp_s +) + +# Functions from alternate iconv implementations (bug 925268) +QA_CONFIG_IMPL_DECL_SKIP+=( + iconv_ccs_init + cstoccsid +) + +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 + + # Set the include path to point to where we want to find PEAR + # packages + local sed_src='^;include_path = ".:/php.*' + local include_path="." + include_path+=":${EPREFIX}/usr/share/php${PHP_MV}" + include_path+=":${EPREFIX}/usr/share/php" + local sed_dst="include_path = \"${include_path}\"" + sed -e "s|${sed_src}|${sed_dst}|" -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 = 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' + + # fails in a network sandbox, + # + # https://github.com/php/php-src/issues/11662 + # + rm ext/sockets/tests/bug63000.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 + + # This is a memory usage test with hard-coded limits. Whenever the + # limits are surpassed... they get increased... but in the meantime, + # the tests fail. This is not really a test that end users should + # be running pre-install, in my opinion. Bug 927461. + rm ext/fileinfo/tests/bug78987.phpt || die + + # Bug 935382, fixed eventually by + # + # - https://github.com/php/php-src/pull/14788 + # - https://github.com/php/php-src/pull/14814 + # + rm ext/standard/tests/strings/chunk_split_variation1_32bit.phpt || die + rm ext/standard/tests/strings/wordwrap_memory_limit.phpt || die + + # Bug 935379, not yet fixed upstream but looks harmless (ordering + # of keys isn't guaranteed AFAICS): + # + # - https://github.com/php/php-src/issues/14786 + # + rm ext/dba/tests/dba_gdbm.phpt || die + + # Most tests failing with an external libgd have been fixed, + # but there are a few stragglers: + # + # * https://github.com/php/php-src/issues/11252 + # + rm ext/gd/tests/bug43073.phpt \ + ext/gd/tests/bug48732.phpt \ + ext/gd/tests/bug48732-mb.phpt \ + ext/gd/tests/bug48801.phpt \ + ext/gd/tests/bug48801-mb.phpt \ + ext/gd/tests/bug53504.phpt \ + ext/gd/tests/bug65148.phpt \ + ext/gd/tests/bug73272.phpt \ + || die + + # One-off, somebody forgot to update a version constant + rm ext/reflection/tests/ReflectionZendExtension.phpt || die + + eautoconf --force +} + +src_configure() { + addpredict /usr/share/snmp/mibs/.index #nowarn + addpredict /var/lib/net-snmp/mib_indexes #nowarn + + # https://bugs.gentoo.org/866683, https://bugs.gentoo.org/913527 + filter-lto + + 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=( + --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 + --with-external-libcrypt + $(use_enable threads zts) + ) + + # The slotted man/info pages will be missed by the default list of + # docompress paths. + docompress "${PHP_DESTDIR}/man" "${PHP_DESTDIR}/info" + + our_conf+=( + $(use_with apparmor fpm-apparmor) + $(use_with argon2 password-argon2 "${EPREFIX}/usr") + $(use_enable bcmath) + $(use_with bzip2 bz2 "${EPREFIX}/usr") + $(use_enable calendar) + $(use_with capstone) + $(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_enable opcache-jit) + $(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) + $(use_with valgrind) + ) + + # Override autoconf cache variables for libcrypt algorithms.These + # otherwise cannot be detected when cross-compiling. Bug 931884. + our_conf+=( + ac_cv_crypt_blowfish=yes + ac_cv_crypt_des=yes + ac_cv_crypt_ext_des=yes + ac_cv_crypt_md5=yes + ac_cv_crypt_sha512=yes + ac_cv_crypt_sha256=yes + ) + + # 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") + ) + + # Use the system copy of GD. The autoconf cache variable overrides + # allow cross-compilation to proceed since the corresponding + # features cannot be detected by running a program. + our_conf+=( + $(use_enable gd gd) + $(use_with gd external-gd) + php_cv_lib_gd_gdImageCreateFromAvif=$(usex avif) + php_cv_lib_gd_gdImageCreateFromBmp=yes + php_cv_lib_gd_gdImageCreateFromJpeg=$(usex jpeg) + php_cv_lib_gd_gdImageCreateFromPng=$(usex png) + php_cv_lib_gd_gdImageCreateFromTga=yes + php_cv_lib_gd_gdImageCreateFromWebp=$(usex webp) + php_cv_lib_gd_gdImageCreateFromXpm=$(usex xpm) + ) + + # 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 + # Obtain the correct -l and -I flags for the actual build from + # pkg-config. We use the "generic" library type to avoid the + # (wrong) hard-coded include dir for iodbc. + # + # We set the pdo_odbc_def_incdir variable because the + # ./configure script checks for the headers using "test -f" and + # ignores your CFLAGS... and pdo_odbc_def_libdir prevents the + # build system from appending a nonsense -L flag. + local iodbc_ldflags=$(pkg-config --libs libiodbc) + local iodbc_cflags=$(pkg-config --cflags libiodbc) + our_conf+=( + pdo_odbc_def_libdir="${EPREFIX}/usr/$(get_libdir)" + pdo_odbc_def_incdir="${EPREFIX}/usr/include/iodbc" + --without-unixODBC + --with-iodbc + $(use_with pdo pdo-odbc "generic,,iodbc,${iodbc_ldlags},${iodbc_cflags}") + ) + 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 + + # 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") + ) + 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 + + # 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. + # + # The upstream build system also does not support building the + # apache2 and embed SAPIs at the same time, presumably because they + # both produce a libphp.so. + local one_sapi + local sapi + mkdir "${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 + + 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 + einfo "Running econf in ${BUILD_DIR}" + 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 + use "${sapi}" && emake -C "${WORKDIR}/sapis-build/${sapi}" + 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 + + # Install SAPI-independent targets + cd "${WORKDIR}/sapis-build/$first_sapi" || die + emake INSTALL_ROOT="${D}" \ + install-build install-headers install-programs + use opcache && emake INSTALL_ROOT="${D}" install-modules + + # Create the directory where we'll put version-specific php scripts + keepdir "/usr/share/php${PHP_MV}" + + 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 + + # 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() { + 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" + fi + + if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then + export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" + fi + + # 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}" \ + || die "tests failed" +} + +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.3.9.ebuild b/dev-lang/php/php-8.3.9.ebuild deleted file mode 100644 index f0b4e07fb29d..000000000000 --- a/dev-lang/php/php-8.3.9.ebuild +++ /dev/null @@ -1,816 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -WANT_AUTOMAKE="none" - -inherit autotools flag-o-matic multilib systemd - -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 ) - 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" - -# 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 - capstone cdb +ctype curl debug - enchant exif ffi +fileinfo +filter firebird - +flatfile ftp gd gdbm gmp +iconv imap inifile - intl iodbc ipv6 +jit jpeg kerberos ldap ldap-sasl libedit lmdb - mhash mssql mysql mysqli nls - odbc +opcache +opcache-jit pcntl pdo +phar +posix postgres png - qdbm readline selinux +session session-mm sharedmem - +simplexml snmp soap sockets sodium spell sqlite ssl - 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. -REQUIRED_USE=" - || ( cli cgi fpm apache2 embed phpdbg ) - cli? ( ^^ ( readline libedit ) ) - !cli? ( ?? ( readline libedit ) ) - gd? ( zlib ) - simplexml? ( xml ) - soap? ( xml ) - xmlreader? ( xml ) - xmlwriter? ( xml ) - xslt? ( xml ) - ldap-sasl? ( ldap ) - qdbm? ( !gdbm ) - session-mm? ( session !threads ) - mysql? ( || ( mysqli pdo ) ) - firebird? ( pdo ) - mssql? ( pdo ) - test? ( cli ) -" - -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[apache2?,fpm?] - dev-libs/libpcre2[jit?,unicode] - virtual/libcrypt:= - 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:= ) - berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:4.8 ) ) - bzip2? ( app-arch/bzip2:0= ) - capstone? ( dev-libs/capstone ) - cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) - curl? ( net-misc/curl ) - enchant? ( app-text/enchant:2 ) - ffi? ( dev-libs/libffi:= ) - firebird? ( dev-db/firebird ) - gd? ( - >=media-libs/gd-2.3.3-r4[avif?,jpeg?,png?,truetype?,webp?,xpm?] - ) - gdbm? ( sys-libs/gdbm: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:= ) - ldap-sasl? ( dev-libs/cyrus-sasl ) - libedit? ( dev-libs/libedit ) - lmdb? ( dev-db/lmdb:= ) - mssql? ( dev-db/freetds[mssql] ) - nls? ( sys-devel/gettext ) - odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( dev-db/unixODBC ) ) - postgres? ( dev-db/postgresql:* ) - qdbm? ( dev-db/qdbm ) - readline? ( sys-libs/readline:0= ) - session-mm? ( dev-libs/mm ) - snmp? ( net-analyzer/net-snmp ) - sodium? ( dev-libs/libsodium:=[-minimal(-)] ) - spell? ( app-text/aspell ) - sqlite? ( dev-db/sqlite ) - ssl? ( dev-libs/openssl:0= ) - tidy? ( app-text/htmltidy ) - tokyocabinet? ( dev-db/tokyocabinet ) - truetype? ( media-libs/freetype ) - unicode? ( dev-libs/oniguruma:= ) - valgrind? ( dev-debug/valgrind ) - xml? ( >=dev-libs/libxml2-2.12.5 ) - xslt? ( dev-libs/libxslt ) - zip? ( dev-libs/libzip:= ) - zlib? ( sys-libs/zlib:0= ) -" - -IDEPEND="app-eselect/eselect-php[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" - -BDEPEND="virtual/pkgconfig" - -PATCHES=( - "${FILESDIR}/php-8.3.9-optional-png-testfixen.patch" - "${FILESDIR}/php-8.3.9-gd-cachevars.patch" -) - -PHP_MV="$(ver_cut 1)" - -# ARM/Windows functions (bug 923335) -QA_CONFIG_IMPL_DECL_SKIP=( - __crc32d - _controlfp - _controlfp_s -) - -# Functions from alternate iconv implementations (bug 925268) -QA_CONFIG_IMPL_DECL_SKIP+=( - iconv_ccs_init - cstoccsid -) - -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 - - # Set the include path to point to where we want to find PEAR - # packages - local sed_src='^;include_path = ".:/php.*' - local include_path="." - include_path+=":${EPREFIX}/usr/share/php${PHP_MV}" - include_path+=":${EPREFIX}/usr/share/php" - local sed_dst="include_path = \"${include_path}\"" - sed -e "s|${sed_src}|${sed_dst}|" -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 = 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' - - # fails in a network sandbox, - # - # https://github.com/php/php-src/issues/11662 - # - rm ext/sockets/tests/bug63000.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 - - # This is a memory usage test with hard-coded limits. Whenever the - # limits are surpassed... they get increased... but in the meantime, - # the tests fail. This is not really a test that end users should - # be running pre-install, in my opinion. Bug 927461. - rm ext/fileinfo/tests/bug78987.phpt || die - - # Bug 935382, fixed eventually by - # - # - https://github.com/php/php-src/pull/14788 - # - https://github.com/php/php-src/pull/14814 - # - rm ext/standard/tests/strings/chunk_split_variation1_32bit.phpt || die - rm ext/standard/tests/strings/wordwrap_memory_limit.phpt || die - - # Bug 935379, not yet fixed upstream but looks harmless (ordering - # of keys isn't guaranteed AFAICS): - # - # - https://github.com/php/php-src/issues/14786 - # - rm ext/dba/tests/dba_gdbm.phpt || die - - # Most tests failing with an external libgd have been fixed, - # but there are a few stragglers: - # - # * https://github.com/php/php-src/issues/11252 - # - rm ext/gd/tests/bug43073.phpt \ - ext/gd/tests/bug48732.phpt \ - ext/gd/tests/bug48732-mb.phpt \ - ext/gd/tests/bug48801.phpt \ - ext/gd/tests/bug48801-mb.phpt \ - ext/gd/tests/bug53504.phpt \ - ext/gd/tests/bug65148.phpt \ - ext/gd/tests/bug73272.phpt \ - || die - - # One-off, somebody forgot to update a version constant - rm ext/reflection/tests/ReflectionZendExtension.phpt || die - - eautoconf --force -} - -src_configure() { - addpredict /usr/share/snmp/mibs/.index #nowarn - addpredict /var/lib/net-snmp/mib_indexes #nowarn - - # https://bugs.gentoo.org/866683, https://bugs.gentoo.org/913527 - filter-lto - - 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=( - --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 - --with-external-libcrypt - $(use_enable threads zts) - ) - - # The slotted man/info pages will be missed by the default list of - # docompress paths. - docompress "${PHP_DESTDIR}/man" "${PHP_DESTDIR}/info" - - our_conf+=( - $(use_with apparmor fpm-apparmor) - $(use_with argon2 password-argon2 "${EPREFIX}/usr") - $(use_enable bcmath) - $(use_with bzip2 bz2 "${EPREFIX}/usr") - $(use_enable calendar) - $(use_with capstone) - $(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_enable opcache-jit) - $(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) - $(use_with valgrind) - ) - - # Override autoconf cache variables for libcrypt algorithms.These - # otherwise cannot be detected when cross-compiling. Bug 931884. - our_conf+=( - ac_cv_crypt_blowfish=yes - ac_cv_crypt_des=yes - ac_cv_crypt_ext_des=yes - ac_cv_crypt_md5=yes - ac_cv_crypt_sha512=yes - ac_cv_crypt_sha256=yes - ) - - # 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") - ) - - # Use the system copy of GD. The autoconf cache variable overrides - # allow cross-compilation to proceed since the corresponding - # features cannot be detected by running a program. - our_conf+=( - $(use_enable gd gd) - $(use_with gd external-gd) - php_cv_lib_gd_gdImageCreateFromAvif=$(usex avif) - php_cv_lib_gd_gdImageCreateFromBmp=yes - php_cv_lib_gd_gdImageCreateFromJpeg=$(usex jpeg) - php_cv_lib_gd_gdImageCreateFromPng=$(usex png) - php_cv_lib_gd_gdImageCreateFromTga=yes - php_cv_lib_gd_gdImageCreateFromWebp=$(usex webp) - php_cv_lib_gd_gdImageCreateFromXpm=$(usex xpm) - ) - - # 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 - # Obtain the correct -l and -I flags for the actual build from - # pkg-config. We use the "generic" library type to avoid the - # (wrong) hard-coded include dir for iodbc. - # - # We set the pdo_odbc_def_incdir variable because the - # ./configure script checks for the headers using "test -f" and - # ignores your CFLAGS... and pdo_odbc_def_libdir prevents the - # build system from appending a nonsense -L flag. - local iodbc_ldflags=$(pkg-config --libs libiodbc) - local iodbc_cflags=$(pkg-config --cflags libiodbc) - our_conf+=( - pdo_odbc_def_libdir="${EPREFIX}/usr/$(get_libdir)" - pdo_odbc_def_incdir="${EPREFIX}/usr/include/iodbc" - --without-unixODBC - --with-iodbc - $(use_with pdo pdo-odbc "generic,,iodbc,${iodbc_ldlags},${iodbc_cflags}") - ) - 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 - - # 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") - ) - 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 - - # 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. - # - # The upstream build system also does not support building the - # apache2 and embed SAPIs at the same time, presumably because they - # both produce a libphp.so. - local one_sapi - local sapi - mkdir "${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 - - 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 - einfo "Running econf in ${BUILD_DIR}" - 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 - use "${sapi}" && emake -C "${WORKDIR}/sapis-build/${sapi}" - 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 - - # Install SAPI-independent targets - cd "${WORKDIR}/sapis-build/$first_sapi" || die - emake INSTALL_ROOT="${D}" \ - install-build install-headers install-programs - use opcache && emake INSTALL_ROOT="${D}" install-modules - - # Create the directory where we'll put version-specific php scripts - keepdir "/usr/share/php${PHP_MV}" - - 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 - - # 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() { - 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" - fi - - if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then - export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" - fi - - # 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}" \ - || die "tests failed" -} - -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 -} -- cgit v1.2.3