From 7fa8a1e3f149eea4c844c47cfe26136ed7614c58 Mon Sep 17 00:00:00 2001
From: V3n3RiX <venerix@koprulu.sector>
Date: Mon, 15 Apr 2024 12:04:03 +0100
Subject: gentoo auto-resync : 15:04:2024 - 12:04:02

---
 dev-lang/Manifest.gz                               | Bin 21999 -> 21996 bytes
 dev-lang/boogie/Manifest                           |   8 +-
 dev-lang/boogie/boogie-3.0.11.ebuild               | 300 -------
 dev-lang/boogie/boogie-3.0.12.ebuild               | 296 -------
 dev-lang/boogie/boogie-3.1.1.ebuild                | 295 -------
 dev-lang/boogie/boogie-3.1.4.ebuild                | 303 ++++++++
 dev-lang/crystal/Manifest                          |   6 +-
 dev-lang/crystal/crystal-1.12.0.ebuild             | 120 ---
 dev-lang/crystal/crystal-1.12.1.ebuild             | 120 +++
 dev-lang/elixir/Manifest                           |   5 +-
 dev-lang/elixir/elixir-1.16.1.ebuild               |  39 -
 dev-lang/elixir/elixir-1.16.2.ebuild               |  40 +
 ...r-1.16.1-skip-tests-requiring-erlang-docs.patch |  90 +++
 dev-lang/fennel/Manifest                           |   4 +-
 dev-lang/fennel/fennel-1.4.0-r1.ebuild             |  52 --
 dev-lang/fennel/fennel-1.4.0-r2.ebuild             |  56 ++
 dev-lang/fennel/fennel-1.4.2-r1.ebuild             |  56 ++
 dev-lang/fennel/fennel-1.4.2.ebuild                |  52 --
 dev-lang/gprolog/Manifest                          |   2 +-
 dev-lang/gprolog/gprolog-1.5.0-r1.ebuild           |  88 +++
 dev-lang/gprolog/gprolog-1.5.0.ebuild              |  86 ---
 dev-lang/orc/Manifest                              |   2 +-
 dev-lang/orc/orc-0.4.38.ebuild                     |   2 +-
 dev-lang/php/Manifest                              |  12 +-
 dev-lang/php/php-8.1.27-r2.ebuild                  | 782 -------------------
 dev-lang/php/php-8.1.28.ebuild                     | 782 +++++++++++++++++++
 dev-lang/php/php-8.2.17.ebuild                     | 860 ---------------------
 dev-lang/php/php-8.2.18.ebuild                     | 859 ++++++++++++++++++++
 dev-lang/php/php-8.3.4.ebuild                      | 784 -------------------
 dev-lang/php/php-8.3.6.ebuild                      | 784 +++++++++++++++++++
 dev-lang/python-exec/Manifest                      |   2 +-
 dev-lang/python-exec/python-exec-2.4.10.ebuild     |  18 +-
 32 files changed, 3211 insertions(+), 3694 deletions(-)
 delete mode 100644 dev-lang/boogie/boogie-3.0.11.ebuild
 delete mode 100644 dev-lang/boogie/boogie-3.0.12.ebuild
 delete mode 100644 dev-lang/boogie/boogie-3.1.1.ebuild
 create mode 100644 dev-lang/boogie/boogie-3.1.4.ebuild
 delete mode 100644 dev-lang/crystal/crystal-1.12.0.ebuild
 create mode 100644 dev-lang/crystal/crystal-1.12.1.ebuild
 delete mode 100644 dev-lang/elixir/elixir-1.16.1.ebuild
 create mode 100644 dev-lang/elixir/elixir-1.16.2.ebuild
 create mode 100644 dev-lang/elixir/files/elixir-1.16.1-skip-tests-requiring-erlang-docs.patch
 delete mode 100644 dev-lang/fennel/fennel-1.4.0-r1.ebuild
 create mode 100644 dev-lang/fennel/fennel-1.4.0-r2.ebuild
 create mode 100644 dev-lang/fennel/fennel-1.4.2-r1.ebuild
 delete mode 100644 dev-lang/fennel/fennel-1.4.2.ebuild
 create mode 100644 dev-lang/gprolog/gprolog-1.5.0-r1.ebuild
 delete mode 100644 dev-lang/gprolog/gprolog-1.5.0.ebuild
 delete mode 100644 dev-lang/php/php-8.1.27-r2.ebuild
 create mode 100644 dev-lang/php/php-8.1.28.ebuild
 delete mode 100644 dev-lang/php/php-8.2.17.ebuild
 create mode 100644 dev-lang/php/php-8.2.18.ebuild
 delete mode 100644 dev-lang/php/php-8.3.4.ebuild
 create mode 100644 dev-lang/php/php-8.3.6.ebuild

(limited to 'dev-lang')

diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz
index e9140e80002d..e8fadbae1160 100644
Binary files a/dev-lang/Manifest.gz and b/dev-lang/Manifest.gz differ
diff --git a/dev-lang/boogie/Manifest b/dev-lang/boogie/Manifest
index e66dcbf6fd95..c0c6fd50172e 100644
--- a/dev-lang/boogie/Manifest
+++ b/dev-lang/boogie/Manifest
@@ -1,9 +1,7 @@
 AUX boogie-3.0.4-disable-analyzers.patch 764 BLAKE2B 965f6a8007a4324aa95b165109dcbc85f7bba5696d04772c53cfb1e456d0c60d2d3dce9103df641fe7f565d2a2d4e04a5d02aba43ac1ccc4527dcaae90b7b28b SHA512 b8c7b9172cd2f45be84058babd33c75f37dcb08f6c1a0b7c79b0ae2bd8afec70b29886f23d0a5553a00e1d3761a7788db0444d06788ee32aed2d1c2cd7cb9554
-DIST boogie-3.0.11.tar.gz 2044740 BLAKE2B b8c1cde7ad4b10deabb9ca9edbf226f580512a3817e9a19a947c7bd5d26808c08e907237aad2209ec06e645fa7ef40c8d73fec812437585b27adf4e125d5b1a0 SHA512 fe59fb1ed2708a5d988a569dd14148e308966ca6382da8502a2c679d67121b39f60e03e9ed6f7efa80c079c818db008c99e1f5e6bc28ba617fe33ae6289c2cce
-DIST boogie-3.0.12.tar.gz 2044818 BLAKE2B 0d11cb1288933b1046b46ea3b93336fe08b9897a4aaf42228971e280be2c648b2110d20aaf6533e6d95e51b0a86c1fe507da05eaa908dc0ed885192e9480d0e7 SHA512 e2c1d4faad1bb448dd3cd9f6dbd4c70fa913584ef1bedd4938298498850bc6a0b6017924a55d9b48c82189253c2ac8c84a2564afa2d9b237434ad40ea286fbec
-DIST boogie-3.1.1.tar.gz 2038688 BLAKE2B ea720665dd9d830de0639b3b2fe08c452e80375e98b8ff9ced473c4beb540a2cb3908415bfbb1582edac9043c17dcbfc014d2dd1dcc3ce0877db436c13a639bd SHA512 704990ebd9b55e4f617249a5e2b4c74a615c61a51da41485eddd8c1b8159f16afd5da13e93f684a97d87c2e1273549977e04180423909c22b026e975d07a0ceb
 DIST boogie-3.1.2.tar.gz 2038757 BLAKE2B 5e20b8c4d02fb623a9b7ae053677ae148d1d5db8a3a7530088a56f25fed1708946ca9bf9f2509fecfe994963b65c52a83238870d5060e7a787d2330b2cf98628 SHA512 218dbdcc979de6d8fb871596906a5403935b9dd06b8ad74eab2face0c7a1d04946b692fbe635e23bbad4b0a9e74de6159c53c38069be627ab6a916a09050a282
 DIST boogie-3.1.3.tar.gz 2038898 BLAKE2B 4a5604d6b00ca81393ccf37c542bfed3f3983453b1fd390fc466e37c7133030f1b453c61f2907bb399fe2891e134dcf3dc86b1ac562cd4ed34b634625320497d SHA512 2ae4bd267ea4636c4f52cb7aae0907db9b8411d6f19d35a9338237ef7820f6cf03ebe9939497fe34a646e8b1f69da0882a5765bcc1224bb8cdfd2a7f999d8862
+DIST boogie-3.1.4.tar.gz 2050762 BLAKE2B 01a8faa38a3a7d134d8f5d54f2b8e0a6a2a07b11d46469c8dbd65d80987e3292cd61937437321e6f79ab55895f6dbe5cfdf410d311f314ab7ed69f684a48d98b SHA512 76a9a4cb2ae2ac49db7fdbca049f797c1272b19e1a783541a74cd310b085c8bab5360fee4293d4f1478371ae26368751e2f658965023a4d7a7dc6b9d25489edb
 DIST microsoft.bcl.asyncinterfaces.6.0.0.nupkg 76354 BLAKE2B aca3f5db71e4037dbdd604aeaebcd0962ccc171915b77b4c409ab744bf0a469c7d588f9504fc7fa49e3863e9593b66b4083235cb49e812d1f87b3dadb32e6003 SHA512 221a05a0c910f7a87b620d8f3831ed392b4eb95d112bee274d35f27009ad2a26445de9d7cd235fe6fb4a03f2550874bda3be3dddd96edaf9c0852a9c23d7b099
 DIST microsoft.codecoverage.16.2.0.nupkg 3133582 BLAKE2B 418cf403247d594cde0d827f8ca8690019a7631525f07993937085f4bbf8473364b4c99aea6e8b7b0020208d15fe0da63f0f4e69c273493c51ae011e8bd82667 SHA512 91f1d43fc038a20f5367d9aab669105dc7514dfbe749260b52789c09a75abcc6bdc000ee0c7f432231d4cc09e99bf5b863dd6289d813342f74d9dad23a651625
 DIST microsoft.csharp.4.0.1.nupkg 462346 BLAKE2B 209ccebc9103b803d26ea1f0232245c3cd231078b03a83a0011a2a79a1a8a324a72c5b3fda94b2686fff170932f366e165f81a36a70df590a39c45d70778e4be SHA512 c0e75a9162f28ba4c4572c8fac4fd4c8c97d6d3505a37683646ba5f7e5f6ac0da69d5200d2646054de90e8e08f893a10e514591b69b8273640842b2cf90bddec
@@ -194,9 +192,7 @@ DIST system.xml.xpath.4.0.1.nupkg 250135 BLAKE2B d6f211f98f33f6b8959b918cff8e676
 DIST system.xml.xpath.4.3.0.nupkg 250182 BLAKE2B 8a4177d47af56bc7a6289ed8f2cac41d504dee212a858ed221277b3f523b1ce38ccb47bc3ce4d59a2c7cfd77f00f3c9693a9c257c90adb38096ee77a860f10cc SHA512 2bd0979a2020579fb32ad374b89929a272e763ee1233ed9a215408c0a1f9f82a5fdb74330c1c55a6102e0dfdb8b7b59ed25fdf6454bf3de146152ea779f366e0
 DIST system.xml.xpath.xmldocument.4.0.1.nupkg 86933 BLAKE2B 4c03b5a9433c2c954e75d212f9026885aa7514574b73a54880c3d55baee6bd5517abb46b67b22b9b6e63de92a8bc5ab4ff37e3f7e6454a5c5137ae2be6574b75 SHA512 81041a08d3b9158c43dfb48d42f13ec9950d7c2b7f63e1600a779a77786edfb46c522c32d9cc6a44358fbfe11efba0e539e578ef169261867a1905b8121a045d
 DIST system.xml.xpath.xmldocument.4.3.0.nupkg 138523 BLAKE2B ba53f3b5ac0f2d1d1e9120940b302e6960690ed4a44b96ba15b03e16f9159f2c57d6004aa55b796ba2327009d23fc2f10d4d09e948b88eb6af36efa5f76e401b SHA512 f75b6f7c75874ab6053e8942c1662a6e9a3561aa01502437b8d67f3bfcebd1ebf906792801326889ed7acb094c55469766d7d27cd10bc61b46ddaaa94dfc11e3
-EBUILD boogie-3.0.11.ebuild 9257 BLAKE2B 96f5e3a404392ba026fc3e6c89aaf160e43b59f416ebb05d962f8410cfbbe197454e8125064c6fa4e7094e2b7089972111046f9b3431364b3efb3e3fe8492cb4 SHA512 ddfc00b75fe2d70da8e4a79f0531688a91ba0f0cd1c7d40534beed508db1909deb818f45e00d3945bc83ca2aed56e3cf5fa9582cfb46771accce9e4d6b87a185
-EBUILD boogie-3.0.12.ebuild 9144 BLAKE2B d73d45ef2a1ea2b1268e890c9042c070643369e8db7e77a0bd62ec9048eb5928a4f7c2eb8086614330da4a15c634376c1df761beb3af5aaf9c27dcbb68e1b267 SHA512 35a535086472d7e585ac021172dc8f2f192181b6cf07ec7bbe72ceb6a3a90e7a6dfa495a213a80b1fcf4e2bd147cf8bd9287cb5ad5e69bbca4ec406fa21dd1cb
-EBUILD boogie-3.1.1.ebuild 9097 BLAKE2B ab846dc8d1207491d22765745f9cb93cd41fe2d864a9ecf67ce091a3dcdf5b7e48b687574f30598ef713a821eeea385979981e40941ac446997c991bd110c1b0 SHA512 f844a8ff192a1c86509d05626e4054be6052206f26ae81436f6a20e421700768c1886e7d15d5d8fc9ae74fa66e72430df67f1251dab6a9e1c3bcb77c0cb81ee0
 EBUILD boogie-3.1.2.ebuild 9318 BLAKE2B 5b979a6e77f86729ac49a7faa04836e5f2f1cdf1644b3b567c4f9e625abcc0e167aac7e171c0c77194989c8a72b8f3d69b5bf29cf25a5a981d36166bad452bc2 SHA512 18df1494f3651cd39a5edcbefc33257e38086eca3a5d9057f65f36b7c8efccc8467ff0aed7dde553b692418821b094d42e563d9fa522c121d87349fdc17543d3
 EBUILD boogie-3.1.3.ebuild 9371 BLAKE2B e2ad13decab6ffbd414b8776b1471b9a92bb8da659ab6db9aab830da47918ac51cd3109d13902679f4a456d078fdc19215f8dc51a495297baa841141ca448ae4 SHA512 e0d9cf21afcab3b8a59392ba173ef307de9f77b0b4d0bd25483fe5337f5fa7163e71b9260afd193f430ee053c5a624f6dfad00f66e80f6e1c11eb4eb9fc834b2
+EBUILD boogie-3.1.4.ebuild 9371 BLAKE2B e2ad13decab6ffbd414b8776b1471b9a92bb8da659ab6db9aab830da47918ac51cd3109d13902679f4a456d078fdc19215f8dc51a495297baa841141ca448ae4 SHA512 e0d9cf21afcab3b8a59392ba173ef307de9f77b0b4d0bd25483fe5337f5fa7163e71b9260afd193f430ee053c5a624f6dfad00f66e80f6e1c11eb4eb9fc834b2
 MISC metadata.xml 1102 BLAKE2B 215544658792715aae72787f7c949ed89df9c05ceab5a919a861c02b7938c0d1ee228e0ede55008287b616faf70992a8c1f2854e6e5e1fc909718ae682996bb8 SHA512 b6a626c485e2a5db3390da62c629507a60417eda8b508d7ed8d1c017ac337743d2c4fe0e8554b103f989176dcd2969cc8579e91532b07a22c1b66328ef241e8d
diff --git a/dev-lang/boogie/boogie-3.0.11.ebuild b/dev-lang/boogie/boogie-3.0.11.ebuild
deleted file mode 100644
index 86a1c4aef664..000000000000
--- a/dev-lang/boogie/boogie-3.0.11.ebuild
+++ /dev/null
@@ -1,300 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DOTNET_PKG_COMPAT=8.0
-NUGETS="
-microsoft.bcl.asyncinterfaces@6.0.0
-microsoft.codecoverage@16.2.0
-microsoft.csharp@4.0.1
-microsoft.dotnet.internalabstractions@1.0.0
-microsoft.net.test.sdk@16.2.0
-microsoft.netcore.platforms@1.0.1
-microsoft.netcore.platforms@1.1.0
-microsoft.netcore.targets@1.0.1
-microsoft.netcore.targets@1.1.0
-microsoft.testplatform.objectmodel@16.2.0
-microsoft.testplatform.testhost@16.2.0
-microsoft.win32.primitives@4.0.1
-microsoft.win32.primitives@4.3.0
-microsoft.win32.registry@4.0.0
-microsoft.win32.registry@4.3.0
-microsoft.win32.systemevents@6.0.0
-netstandard.library@1.6.0
-netstandard.library@2.0.0
-newtonsoft.json@9.0.1
-nunit@3.12.0
-nunit3testadapter@3.15.1
-runtime.any.system.collections@4.3.0
-runtime.any.system.diagnostics.tools@4.3.0
-runtime.any.system.diagnostics.tracing@4.3.0
-runtime.any.system.globalization.calendars@4.3.0
-runtime.any.system.globalization@4.3.0
-runtime.any.system.io@4.3.0
-runtime.any.system.reflection.extensions@4.3.0
-runtime.any.system.reflection.primitives@4.3.0
-runtime.any.system.reflection@4.3.0
-runtime.any.system.resources.resourcemanager@4.3.0
-runtime.any.system.runtime.handles@4.3.0
-runtime.any.system.runtime.interopservices@4.3.0
-runtime.any.system.runtime@4.3.0
-runtime.any.system.text.encoding.extensions@4.3.0
-runtime.any.system.text.encoding@4.3.0
-runtime.any.system.threading.tasks@4.3.0
-runtime.any.system.threading.timer@4.3.0
-runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.native.system.io.compression@4.1.0
-runtime.native.system.net.http@4.0.1
-runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.native.system.security.cryptography@4.0.0
-runtime.native.system@4.0.0
-runtime.native.system@4.3.0
-runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.unix.microsoft.win32.primitives@4.3.0
-runtime.unix.system.console@4.3.0
-runtime.unix.system.diagnostics.debug@4.3.0
-runtime.unix.system.io.filesystem@4.3.0
-runtime.unix.system.net.primitives@4.3.0
-runtime.unix.system.net.sockets@4.3.0
-runtime.unix.system.private.uri@4.3.0
-runtime.unix.system.runtime.extensions@4.3.0
-system.appcontext@4.1.0
-system.buffers@4.0.0
-system.buffers@4.3.0
-system.collections.concurrent@4.0.12
-system.collections.immutable@1.2.0
-system.collections.nongeneric@4.0.1
-system.collections.nongeneric@4.3.0
-system.collections.specialized@4.0.1
-system.collections.specialized@4.3.0
-system.collections@4.0.11
-system.collections@4.3.0
-system.componentmodel.eventbasedasync@4.0.11
-system.componentmodel.eventbasedasync@4.3.0
-system.componentmodel.primitives@4.1.0
-system.componentmodel.primitives@4.3.0
-system.componentmodel.typeconverter@4.1.0
-system.componentmodel.typeconverter@4.3.0
-system.componentmodel@4.0.1
-system.componentmodel@4.3.0
-system.configuration.configurationmanager@6.0.0
-system.console@4.0.0
-system.diagnostics.debug@4.0.11
-system.diagnostics.debug@4.3.0
-system.diagnostics.diagnosticsource@4.0.0
-system.diagnostics.process@4.1.0
-system.diagnostics.process@4.3.0
-system.diagnostics.textwritertracelistener@4.0.0
-system.diagnostics.tools@4.0.1
-system.diagnostics.tracesource@4.0.0
-system.diagnostics.tracing@4.1.0
-system.diagnostics.tracing@4.3.0
-system.drawing.common@6.0.0
-system.dynamic.runtime@4.0.11
-system.globalization.calendars@4.0.1
-system.globalization.extensions@4.0.1
-system.globalization.extensions@4.3.0
-system.globalization@4.0.11
-system.globalization@4.3.0
-system.io.compression.zipfile@4.0.1
-system.io.compression@4.1.0
-system.io.filesystem.primitives@4.0.1
-system.io.filesystem.primitives@4.3.0
-system.io.filesystem@4.0.1
-system.io.filesystem@4.3.0
-system.io@4.1.0
-system.io@4.3.0
-system.linq.async@6.0.1
-system.linq.expressions@4.1.0
-system.linq@4.1.0
-system.linq@4.3.0
-system.net.http@4.1.0
-system.net.nameresolution@4.3.0
-system.net.primitives@4.0.11
-system.net.sockets@4.1.0
-system.objectmodel@4.0.12
-system.private.datacontractserialization@4.1.1
-system.private.uri@4.3.0
-system.reactive@4.4.1
-system.reflection.emit.ilgeneration@4.0.1
-system.reflection.emit.lightweight@4.0.1
-system.reflection.emit@4.0.1
-system.reflection.extensions@4.0.1
-system.reflection.extensions@4.3.0
-system.reflection.metadata@1.3.0
-system.reflection.primitives@4.0.1
-system.reflection.primitives@4.3.0
-system.reflection.typeextensions@4.1.0
-system.reflection.typeextensions@4.3.0
-system.reflection@4.1.0
-system.reflection@4.3.0
-system.resources.resourcemanager@4.0.1
-system.resources.resourcemanager@4.3.0
-system.runtime.caching@6.0.0
-system.runtime.extensions@4.1.0
-system.runtime.extensions@4.3.0
-system.runtime.handles@4.0.1
-system.runtime.handles@4.3.0
-system.runtime.interopservices.runtimeinformation@4.0.0
-system.runtime.interopservices.runtimeinformation@4.3.0
-system.runtime.interopservices@4.1.0
-system.runtime.interopservices@4.3.0
-system.runtime.loader@4.0.0
-system.runtime.numerics@4.0.1
-system.runtime.serialization.json@4.0.2
-system.runtime.serialization.primitives@4.1.1
-system.runtime@4.1.0
-system.runtime@4.3.0
-system.security.accesscontrol@6.0.0
-system.security.claims@4.3.0
-system.security.cryptography.algorithms@4.2.0
-system.security.cryptography.cng@4.2.0
-system.security.cryptography.csp@4.0.0
-system.security.cryptography.encoding@4.0.0
-system.security.cryptography.openssl@4.0.0
-system.security.cryptography.primitives@4.0.0
-system.security.cryptography.protecteddata@6.0.0
-system.security.cryptography.x509certificates@4.1.0
-system.security.permissions@6.0.0
-system.security.principal.windows@4.3.0
-system.security.principal@4.3.0
-system.text.encoding.extensions@4.0.11
-system.text.encoding.extensions@4.3.0
-system.text.encoding@4.0.11
-system.text.encoding@4.3.0
-system.text.regularexpressions@4.1.0
-system.text.regularexpressions@4.3.0
-system.threading.tasks.extensions@4.0.0
-system.threading.tasks.extensions@4.3.0
-system.threading.tasks@4.0.11
-system.threading.tasks@4.3.0
-system.threading.thread@4.0.0
-system.threading.thread@4.3.0
-system.threading.threadpool@4.0.10
-system.threading.threadpool@4.3.0
-system.threading.timer@4.0.1
-system.threading@4.0.11
-system.threading@4.3.0
-system.windows.extensions@6.0.0
-system.xml.readerwriter@4.0.11
-system.xml.readerwriter@4.3.0
-system.xml.xdocument@4.0.11
-system.xml.xmldocument@4.0.1
-system.xml.xmldocument@4.3.0
-system.xml.xmlserializer@4.0.11
-system.xml.xpath.xmldocument@4.0.1
-system.xml.xpath.xmldocument@4.3.0
-system.xml.xpath@4.0.1
-system.xml.xpath@4.3.0
-"
-
-inherit check-reqs dotnet-pkg edo multiprocessing
-
-DESCRIPTION="SMT-based program verifier"
-HOMEPAGE="https://github.com/boogie-org/boogie/"
-
-if [[ "${PV}" == *9999* ]] ; then
-	inherit git-r3
-
-	EGIT_REPO_URI="https://github.com/boogie-org/${PN}.git"
-else
-	SRC_URI="https://github.com/boogie-org/${PN}/archive/v${PV}.tar.gz
-		-> ${P}.tar.gz"
-
-	KEYWORDS="amd64"
-fi
-
-SRC_URI+=" ${NUGET_URIS} "
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
-	sci-mathematics/z3
-"
-BDEPEND="
-	${RDEPEND}
-	test? (
-		dev-python/lit
-		dev-python/OutputCheck
-	)
-"
-
-PATCHES=( "${FILESDIR}/${PN}-3.0.4-disable-analyzers.patch" )
-
-CHECKREQS_DISK_BUILD="2G"
-DOTNET_PKG_PROJECTS=( Source/BoogieDriver/BoogieDriver.csproj )
-DOTNET_PKG_BUILD_EXTRA_ARGS=( -p:RollForward=Major )
-
-pkg_setup() {
-	check-reqs_pkg_setup
-	dotnet-pkg_pkg_setup
-}
-
-src_unpack() {
-	dotnet-pkg_src_unpack
-
-	if [[ -n "${EGIT_REPO_URI}" ]] ; then
-		git-r3_src_unpack
-	fi
-}
-
-src_prepare() {
-	# Remove bad tests.
-	local -a bad_tests=(
-		civl/inductive-sequentialization/BroadcastConsensus.bpl
-		civl/inductive-sequentialization/PingPong.bpl
-		civl/inductive-sequentialization/paxos/is.sh
-		livevars/bla1.bpl
-		prover/cvc5-offline.bpl
-		prover/cvc5.bpl
-		prover/exitcode.bpl
-		prover/z3-hard-timeout.bpl
-		prover/z3mutl.bpl
-		test0/MaxKeepGoingSplits.bpl
-		test15/CaptureInlineUnroll.bpl
-		test15/CaptureState.bpl
-		test15/CommonVariablesPruning.bpl
-		test21/InterestingExamples4.bpl
-		test21/issue-735.bpl
-	)
-	local bad_test
-	for bad_test in "${bad_tests[@]}" ; do
-		rm "${S}/Test/${bad_test}" || die
-	done
-
-	# Update the boogieBinary variable.
-	sed "/^boogieBinary/s|= .*|= '${DOTNET_PKG_OUTPUT}/BoogieDriver.dll'|" \
-		-i "${S}/Test/lit.site.cfg" || die "failed to update lit.site.cfg"
-
-	dotnet-pkg_src_prepare
-}
-
-src_test() {
-	einfo "Starting tests using the lit test tool."
-	local -a lit_opts=(
-		--order=lexical
-		--time-tests
-		--verbose
-		--workers="$(makeopts_jobs)"
-	)
-	edob lit "${lit_opts[@]}" "${S}/Test"
-}
-
-src_install() {
-	dotnet-pkg-base_install
-	dotnet-pkg-base_dolauncher "/usr/share/${P}/BoogieDriver" boogie
-
-	einstalldocs
-}
diff --git a/dev-lang/boogie/boogie-3.0.12.ebuild b/dev-lang/boogie/boogie-3.0.12.ebuild
deleted file mode 100644
index af645fd84b5b..000000000000
--- a/dev-lang/boogie/boogie-3.0.12.ebuild
+++ /dev/null
@@ -1,296 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DOTNET_PKG_COMPAT=8.0
-NUGETS="
-microsoft.bcl.asyncinterfaces@6.0.0
-microsoft.codecoverage@16.2.0
-microsoft.csharp@4.0.1
-microsoft.dotnet.internalabstractions@1.0.0
-microsoft.net.test.sdk@16.2.0
-microsoft.netcore.platforms@1.0.1
-microsoft.netcore.platforms@1.1.0
-microsoft.netcore.targets@1.0.1
-microsoft.netcore.targets@1.1.0
-microsoft.testplatform.objectmodel@16.2.0
-microsoft.testplatform.testhost@16.2.0
-microsoft.win32.primitives@4.0.1
-microsoft.win32.primitives@4.3.0
-microsoft.win32.registry@4.0.0
-microsoft.win32.registry@4.3.0
-microsoft.win32.systemevents@6.0.0
-netstandard.library@1.6.0
-netstandard.library@2.0.0
-newtonsoft.json@9.0.1
-nunit@3.12.0
-nunit3testadapter@3.15.1
-runtime.any.system.collections@4.3.0
-runtime.any.system.diagnostics.tools@4.3.0
-runtime.any.system.diagnostics.tracing@4.3.0
-runtime.any.system.globalization.calendars@4.3.0
-runtime.any.system.globalization@4.3.0
-runtime.any.system.io@4.3.0
-runtime.any.system.reflection.extensions@4.3.0
-runtime.any.system.reflection.primitives@4.3.0
-runtime.any.system.reflection@4.3.0
-runtime.any.system.resources.resourcemanager@4.3.0
-runtime.any.system.runtime.handles@4.3.0
-runtime.any.system.runtime.interopservices@4.3.0
-runtime.any.system.runtime@4.3.0
-runtime.any.system.text.encoding.extensions@4.3.0
-runtime.any.system.text.encoding@4.3.0
-runtime.any.system.threading.tasks@4.3.0
-runtime.any.system.threading.timer@4.3.0
-runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.native.system.io.compression@4.1.0
-runtime.native.system.net.http@4.0.1
-runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.native.system.security.cryptography@4.0.0
-runtime.native.system@4.0.0
-runtime.native.system@4.3.0
-runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.unix.microsoft.win32.primitives@4.3.0
-runtime.unix.system.console@4.3.0
-runtime.unix.system.diagnostics.debug@4.3.0
-runtime.unix.system.io.filesystem@4.3.0
-runtime.unix.system.net.primitives@4.3.0
-runtime.unix.system.net.sockets@4.3.0
-runtime.unix.system.private.uri@4.3.0
-runtime.unix.system.runtime.extensions@4.3.0
-system.appcontext@4.1.0
-system.buffers@4.0.0
-system.buffers@4.3.0
-system.collections.concurrent@4.0.12
-system.collections.immutable@1.2.0
-system.collections.nongeneric@4.0.1
-system.collections.nongeneric@4.3.0
-system.collections.specialized@4.0.1
-system.collections.specialized@4.3.0
-system.collections@4.0.11
-system.collections@4.3.0
-system.componentmodel.eventbasedasync@4.0.11
-system.componentmodel.eventbasedasync@4.3.0
-system.componentmodel.primitives@4.1.0
-system.componentmodel.primitives@4.3.0
-system.componentmodel.typeconverter@4.1.0
-system.componentmodel.typeconverter@4.3.0
-system.componentmodel@4.0.1
-system.componentmodel@4.3.0
-system.configuration.configurationmanager@6.0.0
-system.console@4.0.0
-system.diagnostics.debug@4.0.11
-system.diagnostics.debug@4.3.0
-system.diagnostics.diagnosticsource@4.0.0
-system.diagnostics.process@4.1.0
-system.diagnostics.process@4.3.0
-system.diagnostics.textwritertracelistener@4.0.0
-system.diagnostics.tools@4.0.1
-system.diagnostics.tracesource@4.0.0
-system.diagnostics.tracing@4.1.0
-system.diagnostics.tracing@4.3.0
-system.drawing.common@6.0.0
-system.dynamic.runtime@4.0.11
-system.globalization.calendars@4.0.1
-system.globalization.extensions@4.0.1
-system.globalization.extensions@4.3.0
-system.globalization@4.0.11
-system.globalization@4.3.0
-system.io.compression.zipfile@4.0.1
-system.io.compression@4.1.0
-system.io.filesystem.primitives@4.0.1
-system.io.filesystem.primitives@4.3.0
-system.io.filesystem@4.0.1
-system.io.filesystem@4.3.0
-system.io@4.1.0
-system.io@4.3.0
-system.linq.async@6.0.1
-system.linq.expressions@4.1.0
-system.linq@4.1.0
-system.linq@4.3.0
-system.net.http@4.1.0
-system.net.nameresolution@4.3.0
-system.net.primitives@4.0.11
-system.net.sockets@4.1.0
-system.objectmodel@4.0.12
-system.private.datacontractserialization@4.1.1
-system.private.uri@4.3.0
-system.reactive@4.4.1
-system.reflection.emit.ilgeneration@4.0.1
-system.reflection.emit.lightweight@4.0.1
-system.reflection.emit@4.0.1
-system.reflection.extensions@4.0.1
-system.reflection.extensions@4.3.0
-system.reflection.metadata@1.3.0
-system.reflection.primitives@4.0.1
-system.reflection.primitives@4.3.0
-system.reflection.typeextensions@4.1.0
-system.reflection.typeextensions@4.3.0
-system.reflection@4.1.0
-system.reflection@4.3.0
-system.resources.resourcemanager@4.0.1
-system.resources.resourcemanager@4.3.0
-system.runtime.caching@6.0.0
-system.runtime.extensions@4.1.0
-system.runtime.extensions@4.3.0
-system.runtime.handles@4.0.1
-system.runtime.handles@4.3.0
-system.runtime.interopservices.runtimeinformation@4.0.0
-system.runtime.interopservices.runtimeinformation@4.3.0
-system.runtime.interopservices@4.1.0
-system.runtime.interopservices@4.3.0
-system.runtime.loader@4.0.0
-system.runtime.numerics@4.0.1
-system.runtime.serialization.json@4.0.2
-system.runtime.serialization.primitives@4.1.1
-system.runtime@4.1.0
-system.runtime@4.3.0
-system.security.accesscontrol@6.0.0
-system.security.claims@4.3.0
-system.security.cryptography.algorithms@4.2.0
-system.security.cryptography.cng@4.2.0
-system.security.cryptography.csp@4.0.0
-system.security.cryptography.encoding@4.0.0
-system.security.cryptography.openssl@4.0.0
-system.security.cryptography.primitives@4.0.0
-system.security.cryptography.protecteddata@6.0.0
-system.security.cryptography.x509certificates@4.1.0
-system.security.permissions@6.0.0
-system.security.principal.windows@4.3.0
-system.security.principal@4.3.0
-system.text.encoding.extensions@4.0.11
-system.text.encoding.extensions@4.3.0
-system.text.encoding@4.0.11
-system.text.encoding@4.3.0
-system.text.regularexpressions@4.1.0
-system.text.regularexpressions@4.3.0
-system.threading.tasks.extensions@4.0.0
-system.threading.tasks.extensions@4.3.0
-system.threading.tasks@4.0.11
-system.threading.tasks@4.3.0
-system.threading.thread@4.0.0
-system.threading.thread@4.3.0
-system.threading.threadpool@4.0.10
-system.threading.threadpool@4.3.0
-system.threading.timer@4.0.1
-system.threading@4.0.11
-system.threading@4.3.0
-system.windows.extensions@6.0.0
-system.xml.readerwriter@4.0.11
-system.xml.readerwriter@4.3.0
-system.xml.xdocument@4.0.11
-system.xml.xmldocument@4.0.1
-system.xml.xmldocument@4.3.0
-system.xml.xmlserializer@4.0.11
-system.xml.xpath.xmldocument@4.0.1
-system.xml.xpath.xmldocument@4.3.0
-system.xml.xpath@4.0.1
-system.xml.xpath@4.3.0
-"
-
-inherit check-reqs dotnet-pkg edo multiprocessing
-
-DESCRIPTION="SMT-based program verifier"
-HOMEPAGE="https://github.com/boogie-org/boogie/"
-
-if [[ "${PV}" == *9999* ]] ; then
-	inherit git-r3
-
-	EGIT_REPO_URI="https://github.com/boogie-org/${PN}.git"
-else
-	SRC_URI="https://github.com/boogie-org/${PN}/archive/v${PV}.tar.gz
-		-> ${P}.tar.gz"
-
-	KEYWORDS="~amd64"
-fi
-
-SRC_URI+=" ${NUGET_URIS} "
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
-	sci-mathematics/z3
-"
-BDEPEND="
-	${RDEPEND}
-	test? (
-		dev-python/lit
-		dev-python/OutputCheck
-	)
-"
-
-PATCHES=( "${FILESDIR}/${PN}-3.0.4-disable-analyzers.patch" )
-
-CHECKREQS_DISK_BUILD="2G"
-DOTNET_PKG_PROJECTS=( Source/BoogieDriver/BoogieDriver.csproj )
-DOTNET_PKG_BUILD_EXTRA_ARGS=( -p:RollForward=Major )
-
-pkg_setup() {
-	check-reqs_pkg_setup
-	dotnet-pkg_pkg_setup
-}
-
-src_unpack() {
-	dotnet-pkg_src_unpack
-
-	if [[ -n "${EGIT_REPO_URI}" ]] ; then
-		git-r3_src_unpack
-	fi
-}
-
-src_prepare() {
-	# Remove bad tests.
-	local -a bad_tests=(
-		civl/inductive-sequentialization/BroadcastConsensus.bpl
-		civl/inductive-sequentialization/PingPong.bpl
-		civl/inductive-sequentialization/paxos/is.sh
-		prover/cvc5-offline.bpl
-		prover/cvc5.bpl
-		prover/exitcode.bpl
-		prover/z3-hard-timeout.bpl
-		prover/z3mutl.bpl
-		test15/CaptureInlineUnroll.bpl
-		test2/Timeouts0.bpl
-		test21/InterestingExamples4.bpl
-	)
-	local bad_test
-	for bad_test in "${bad_tests[@]}" ; do
-		rm "${S}/Test/${bad_test}" || die
-	done
-
-	# Update the boogieBinary variable.
-	sed "/^boogieBinary/s|= .*|= '${DOTNET_PKG_OUTPUT}/BoogieDriver.dll'|" \
-		-i "${S}/Test/lit.site.cfg" || die "failed to update lit.site.cfg"
-
-	dotnet-pkg_src_prepare
-}
-
-src_test() {
-	einfo "Starting tests using the lit test tool."
-	local -a lit_opts=(
-		--order=lexical
-		--time-tests
-		--verbose
-		--workers="$(makeopts_jobs)"
-	)
-	edob lit "${lit_opts[@]}" "${S}/Test"
-}
-
-src_install() {
-	dotnet-pkg-base_install
-	dotnet-pkg-base_dolauncher "/usr/share/${P}/BoogieDriver" boogie
-
-	einstalldocs
-}
diff --git a/dev-lang/boogie/boogie-3.1.1.ebuild b/dev-lang/boogie/boogie-3.1.1.ebuild
deleted file mode 100644
index 412d21a3c9d6..000000000000
--- a/dev-lang/boogie/boogie-3.1.1.ebuild
+++ /dev/null
@@ -1,295 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DOTNET_PKG_COMPAT=8.0
-NUGETS="
-microsoft.bcl.asyncinterfaces@6.0.0
-microsoft.codecoverage@16.2.0
-microsoft.csharp@4.0.1
-microsoft.dotnet.internalabstractions@1.0.0
-microsoft.net.test.sdk@16.2.0
-microsoft.netcore.platforms@1.0.1
-microsoft.netcore.platforms@1.1.0
-microsoft.netcore.targets@1.0.1
-microsoft.netcore.targets@1.1.0
-microsoft.testplatform.objectmodel@16.2.0
-microsoft.testplatform.testhost@16.2.0
-microsoft.win32.primitives@4.0.1
-microsoft.win32.primitives@4.3.0
-microsoft.win32.registry@4.0.0
-microsoft.win32.registry@4.3.0
-microsoft.win32.systemevents@6.0.0
-netstandard.library@1.6.0
-netstandard.library@2.0.0
-newtonsoft.json@9.0.1
-nunit@3.12.0
-nunit3testadapter@3.15.1
-runtime.any.system.collections@4.3.0
-runtime.any.system.diagnostics.tools@4.3.0
-runtime.any.system.diagnostics.tracing@4.3.0
-runtime.any.system.globalization.calendars@4.3.0
-runtime.any.system.globalization@4.3.0
-runtime.any.system.io@4.3.0
-runtime.any.system.reflection.extensions@4.3.0
-runtime.any.system.reflection.primitives@4.3.0
-runtime.any.system.reflection@4.3.0
-runtime.any.system.resources.resourcemanager@4.3.0
-runtime.any.system.runtime.handles@4.3.0
-runtime.any.system.runtime.interopservices@4.3.0
-runtime.any.system.runtime@4.3.0
-runtime.any.system.text.encoding.extensions@4.3.0
-runtime.any.system.text.encoding@4.3.0
-runtime.any.system.threading.tasks@4.3.0
-runtime.any.system.threading.timer@4.3.0
-runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.native.system.io.compression@4.1.0
-runtime.native.system.net.http@4.0.1
-runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.native.system.security.cryptography@4.0.0
-runtime.native.system@4.0.0
-runtime.native.system@4.3.0
-runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
-runtime.unix.microsoft.win32.primitives@4.3.0
-runtime.unix.system.console@4.3.0
-runtime.unix.system.diagnostics.debug@4.3.0
-runtime.unix.system.io.filesystem@4.3.0
-runtime.unix.system.net.primitives@4.3.0
-runtime.unix.system.net.sockets@4.3.0
-runtime.unix.system.private.uri@4.3.0
-runtime.unix.system.runtime.extensions@4.3.0
-system.appcontext@4.1.0
-system.buffers@4.0.0
-system.buffers@4.3.0
-system.collections.concurrent@4.0.12
-system.collections.immutable@1.2.0
-system.collections.nongeneric@4.0.1
-system.collections.nongeneric@4.3.0
-system.collections.specialized@4.0.1
-system.collections.specialized@4.3.0
-system.collections@4.0.11
-system.collections@4.3.0
-system.componentmodel.eventbasedasync@4.0.11
-system.componentmodel.eventbasedasync@4.3.0
-system.componentmodel.primitives@4.1.0
-system.componentmodel.primitives@4.3.0
-system.componentmodel.typeconverter@4.1.0
-system.componentmodel.typeconverter@4.3.0
-system.componentmodel@4.0.1
-system.componentmodel@4.3.0
-system.configuration.configurationmanager@6.0.0
-system.console@4.0.0
-system.diagnostics.debug@4.0.11
-system.diagnostics.debug@4.3.0
-system.diagnostics.diagnosticsource@4.0.0
-system.diagnostics.process@4.1.0
-system.diagnostics.process@4.3.0
-system.diagnostics.textwritertracelistener@4.0.0
-system.diagnostics.tools@4.0.1
-system.diagnostics.tracesource@4.0.0
-system.diagnostics.tracing@4.1.0
-system.diagnostics.tracing@4.3.0
-system.drawing.common@6.0.0
-system.dynamic.runtime@4.0.11
-system.globalization.calendars@4.0.1
-system.globalization.extensions@4.0.1
-system.globalization.extensions@4.3.0
-system.globalization@4.0.11
-system.globalization@4.3.0
-system.io.compression.zipfile@4.0.1
-system.io.compression@4.1.0
-system.io.filesystem.primitives@4.0.1
-system.io.filesystem.primitives@4.3.0
-system.io.filesystem@4.0.1
-system.io.filesystem@4.3.0
-system.io@4.1.0
-system.io@4.3.0
-system.linq.async@6.0.1
-system.linq.expressions@4.1.0
-system.linq@4.1.0
-system.linq@4.3.0
-system.net.http@4.1.0
-system.net.nameresolution@4.3.0
-system.net.primitives@4.0.11
-system.net.sockets@4.1.0
-system.objectmodel@4.0.12
-system.private.datacontractserialization@4.1.1
-system.private.uri@4.3.0
-system.reactive@4.4.1
-system.reflection.emit.ilgeneration@4.0.1
-system.reflection.emit.lightweight@4.0.1
-system.reflection.emit@4.0.1
-system.reflection.extensions@4.0.1
-system.reflection.extensions@4.3.0
-system.reflection.metadata@1.3.0
-system.reflection.primitives@4.0.1
-system.reflection.primitives@4.3.0
-system.reflection.typeextensions@4.1.0
-system.reflection.typeextensions@4.3.0
-system.reflection@4.1.0
-system.reflection@4.3.0
-system.resources.resourcemanager@4.0.1
-system.resources.resourcemanager@4.3.0
-system.runtime.caching@6.0.0
-system.runtime.extensions@4.1.0
-system.runtime.extensions@4.3.0
-system.runtime.handles@4.0.1
-system.runtime.handles@4.3.0
-system.runtime.interopservices.runtimeinformation@4.0.0
-system.runtime.interopservices.runtimeinformation@4.3.0
-system.runtime.interopservices@4.1.0
-system.runtime.interopservices@4.3.0
-system.runtime.loader@4.0.0
-system.runtime.numerics@4.0.1
-system.runtime.serialization.json@4.0.2
-system.runtime.serialization.primitives@4.1.1
-system.runtime@4.1.0
-system.runtime@4.3.0
-system.security.accesscontrol@6.0.0
-system.security.claims@4.3.0
-system.security.cryptography.algorithms@4.2.0
-system.security.cryptography.cng@4.2.0
-system.security.cryptography.csp@4.0.0
-system.security.cryptography.encoding@4.0.0
-system.security.cryptography.openssl@4.0.0
-system.security.cryptography.primitives@4.0.0
-system.security.cryptography.protecteddata@6.0.0
-system.security.cryptography.x509certificates@4.1.0
-system.security.permissions@6.0.0
-system.security.principal.windows@4.3.0
-system.security.principal@4.3.0
-system.text.encoding.extensions@4.0.11
-system.text.encoding.extensions@4.3.0
-system.text.encoding@4.0.11
-system.text.encoding@4.3.0
-system.text.regularexpressions@4.1.0
-system.text.regularexpressions@4.3.0
-system.threading.tasks.extensions@4.0.0
-system.threading.tasks.extensions@4.3.0
-system.threading.tasks@4.0.11
-system.threading.tasks@4.3.0
-system.threading.thread@4.0.0
-system.threading.thread@4.3.0
-system.threading.threadpool@4.0.10
-system.threading.threadpool@4.3.0
-system.threading.timer@4.0.1
-system.threading@4.0.11
-system.threading@4.3.0
-system.windows.extensions@6.0.0
-system.xml.readerwriter@4.0.11
-system.xml.readerwriter@4.3.0
-system.xml.xdocument@4.0.11
-system.xml.xmldocument@4.0.1
-system.xml.xmldocument@4.3.0
-system.xml.xmlserializer@4.0.11
-system.xml.xpath.xmldocument@4.0.1
-system.xml.xpath.xmldocument@4.3.0
-system.xml.xpath@4.0.1
-system.xml.xpath@4.3.0
-"
-
-inherit check-reqs dotnet-pkg edo multiprocessing
-
-DESCRIPTION="SMT-based program verifier"
-HOMEPAGE="https://github.com/boogie-org/boogie/"
-
-if [[ "${PV}" == *9999* ]] ; then
-	inherit git-r3
-
-	EGIT_REPO_URI="https://github.com/boogie-org/${PN}.git"
-else
-	SRC_URI="https://github.com/boogie-org/${PN}/archive/v${PV}.tar.gz
-		-> ${P}.tar.gz"
-
-	KEYWORDS="~amd64"
-fi
-
-SRC_URI+=" ${NUGET_URIS} "
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
-	sci-mathematics/z3
-"
-BDEPEND="
-	${RDEPEND}
-	test? (
-		dev-python/lit
-		dev-python/OutputCheck
-	)
-"
-
-PATCHES=( "${FILESDIR}/${PN}-3.0.4-disable-analyzers.patch" )
-
-CHECKREQS_DISK_BUILD="2G"
-DOTNET_PKG_PROJECTS=( Source/BoogieDriver/BoogieDriver.csproj )
-DOTNET_PKG_BUILD_EXTRA_ARGS=( -p:RollForward=Major )
-
-pkg_setup() {
-	check-reqs_pkg_setup
-	dotnet-pkg_pkg_setup
-}
-
-src_unpack() {
-	dotnet-pkg_src_unpack
-
-	if [[ -n "${EGIT_REPO_URI}" ]] ; then
-		git-r3_src_unpack
-	fi
-}
-
-src_prepare() {
-	# Remove bad tests.
-	local -a bad_tests=(
-		civl/inductive-sequentialization/BroadcastConsensus.bpl
-		civl/inductive-sequentialization/PingPong.bpl
-		prover/cvc5-offline.bpl
-		prover/cvc5.bpl
-		prover/exitcode.bpl
-		prover/z3-hard-timeout.bpl
-		prover/z3mutl.bpl
-		test15/CaptureInlineUnroll.bpl
-		test2/Timeouts0.bpl
-		test21/InterestingExamples4.bpl
-	)
-	local bad_test
-	for bad_test in "${bad_tests[@]}" ; do
-		rm "${S}/Test/${bad_test}" || die
-	done
-
-	# Update the boogieBinary variable.
-	sed "/^boogieBinary/s|= .*|= '${DOTNET_PKG_OUTPUT}/BoogieDriver.dll'|" \
-		-i "${S}/Test/lit.site.cfg" || die "failed to update lit.site.cfg"
-
-	dotnet-pkg_src_prepare
-}
-
-src_test() {
-	einfo "Starting tests using the lit test tool."
-	local -a lit_opts=(
-		--order=lexical
-		--time-tests
-		--verbose
-		--workers="$(makeopts_jobs)"
-	)
-	edob lit "${lit_opts[@]}" "${S}/Test"
-}
-
-src_install() {
-	dotnet-pkg-base_install
-	dotnet-pkg-base_dolauncher "/usr/share/${P}/BoogieDriver" boogie
-
-	einstalldocs
-}
diff --git a/dev-lang/boogie/boogie-3.1.4.ebuild b/dev-lang/boogie/boogie-3.1.4.ebuild
new file mode 100644
index 000000000000..d7ab20c085a9
--- /dev/null
+++ b/dev-lang/boogie/boogie-3.1.4.ebuild
@@ -0,0 +1,303 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_PKG_COMPAT=8.0
+NUGETS="
+microsoft.bcl.asyncinterfaces@6.0.0
+microsoft.codecoverage@16.2.0
+microsoft.csharp@4.0.1
+microsoft.dotnet.internalabstractions@1.0.0
+microsoft.net.test.sdk@16.2.0
+microsoft.netcore.platforms@1.0.1
+microsoft.netcore.platforms@1.1.0
+microsoft.netcore.targets@1.0.1
+microsoft.netcore.targets@1.1.0
+microsoft.testplatform.objectmodel@16.2.0
+microsoft.testplatform.testhost@16.2.0
+microsoft.win32.primitives@4.0.1
+microsoft.win32.primitives@4.3.0
+microsoft.win32.registry@4.0.0
+microsoft.win32.registry@4.3.0
+microsoft.win32.systemevents@6.0.0
+netstandard.library@1.6.0
+netstandard.library@2.0.0
+newtonsoft.json@9.0.1
+nunit@3.12.0
+nunit3testadapter@3.15.1
+runtime.any.system.collections@4.3.0
+runtime.any.system.diagnostics.tools@4.3.0
+runtime.any.system.diagnostics.tracing@4.3.0
+runtime.any.system.globalization.calendars@4.3.0
+runtime.any.system.globalization@4.3.0
+runtime.any.system.io@4.3.0
+runtime.any.system.reflection.extensions@4.3.0
+runtime.any.system.reflection.primitives@4.3.0
+runtime.any.system.reflection@4.3.0
+runtime.any.system.resources.resourcemanager@4.3.0
+runtime.any.system.runtime.handles@4.3.0
+runtime.any.system.runtime.interopservices@4.3.0
+runtime.any.system.runtime@4.3.0
+runtime.any.system.text.encoding.extensions@4.3.0
+runtime.any.system.text.encoding@4.3.0
+runtime.any.system.threading.tasks@4.3.0
+runtime.any.system.threading.timer@4.3.0
+runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.native.system.io.compression@4.1.0
+runtime.native.system.net.http@4.0.1
+runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.native.system.security.cryptography@4.0.0
+runtime.native.system@4.0.0
+runtime.native.system@4.3.0
+runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl@4.3.0
+runtime.unix.microsoft.win32.primitives@4.3.0
+runtime.unix.system.console@4.3.0
+runtime.unix.system.diagnostics.debug@4.3.0
+runtime.unix.system.io.filesystem@4.3.0
+runtime.unix.system.net.primitives@4.3.0
+runtime.unix.system.net.sockets@4.3.0
+runtime.unix.system.private.uri@4.3.0
+runtime.unix.system.runtime.extensions@4.3.0
+system.appcontext@4.1.0
+system.buffers@4.0.0
+system.buffers@4.3.0
+system.collections.concurrent@4.0.12
+system.collections.immutable@1.2.0
+system.collections.nongeneric@4.0.1
+system.collections.nongeneric@4.3.0
+system.collections.specialized@4.0.1
+system.collections.specialized@4.3.0
+system.collections@4.0.11
+system.collections@4.3.0
+system.componentmodel.eventbasedasync@4.0.11
+system.componentmodel.eventbasedasync@4.3.0
+system.componentmodel.primitives@4.1.0
+system.componentmodel.primitives@4.3.0
+system.componentmodel.typeconverter@4.1.0
+system.componentmodel.typeconverter@4.3.0
+system.componentmodel@4.0.1
+system.componentmodel@4.3.0
+system.configuration.configurationmanager@6.0.0
+system.console@4.0.0
+system.diagnostics.debug@4.0.11
+system.diagnostics.debug@4.3.0
+system.diagnostics.diagnosticsource@4.0.0
+system.diagnostics.process@4.1.0
+system.diagnostics.process@4.3.0
+system.diagnostics.textwritertracelistener@4.0.0
+system.diagnostics.tools@4.0.1
+system.diagnostics.tracesource@4.0.0
+system.diagnostics.tracing@4.1.0
+system.diagnostics.tracing@4.3.0
+system.drawing.common@6.0.0
+system.dynamic.runtime@4.0.11
+system.globalization.calendars@4.0.1
+system.globalization.extensions@4.0.1
+system.globalization.extensions@4.3.0
+system.globalization@4.0.11
+system.globalization@4.3.0
+system.io.compression.zipfile@4.0.1
+system.io.compression@4.1.0
+system.io.filesystem.primitives@4.0.1
+system.io.filesystem.primitives@4.3.0
+system.io.filesystem@4.0.1
+system.io.filesystem@4.3.0
+system.io@4.1.0
+system.io@4.3.0
+system.linq.async@6.0.1
+system.linq.expressions@4.1.0
+system.linq@4.1.0
+system.linq@4.3.0
+system.net.http@4.1.0
+system.net.nameresolution@4.3.0
+system.net.primitives@4.0.11
+system.net.sockets@4.1.0
+system.objectmodel@4.0.12
+system.private.datacontractserialization@4.1.1
+system.private.uri@4.3.0
+system.reactive@4.4.1
+system.reflection.emit.ilgeneration@4.0.1
+system.reflection.emit.lightweight@4.0.1
+system.reflection.emit@4.0.1
+system.reflection.extensions@4.0.1
+system.reflection.extensions@4.3.0
+system.reflection.metadata@1.3.0
+system.reflection.primitives@4.0.1
+system.reflection.primitives@4.3.0
+system.reflection.typeextensions@4.1.0
+system.reflection.typeextensions@4.3.0
+system.reflection@4.1.0
+system.reflection@4.3.0
+system.resources.resourcemanager@4.0.1
+system.resources.resourcemanager@4.3.0
+system.runtime.caching@6.0.0
+system.runtime.extensions@4.1.0
+system.runtime.extensions@4.3.0
+system.runtime.handles@4.0.1
+system.runtime.handles@4.3.0
+system.runtime.interopservices.runtimeinformation@4.0.0
+system.runtime.interopservices.runtimeinformation@4.3.0
+system.runtime.interopservices@4.1.0
+system.runtime.interopservices@4.3.0
+system.runtime.loader@4.0.0
+system.runtime.numerics@4.0.1
+system.runtime.serialization.json@4.0.2
+system.runtime.serialization.primitives@4.1.1
+system.runtime@4.1.0
+system.runtime@4.3.0
+system.security.accesscontrol@6.0.0
+system.security.claims@4.3.0
+system.security.cryptography.algorithms@4.2.0
+system.security.cryptography.cng@4.2.0
+system.security.cryptography.csp@4.0.0
+system.security.cryptography.encoding@4.0.0
+system.security.cryptography.openssl@4.0.0
+system.security.cryptography.primitives@4.0.0
+system.security.cryptography.protecteddata@6.0.0
+system.security.cryptography.x509certificates@4.1.0
+system.security.permissions@6.0.0
+system.security.principal.windows@4.3.0
+system.security.principal@4.3.0
+system.text.encoding.extensions@4.0.11
+system.text.encoding.extensions@4.3.0
+system.text.encoding@4.0.11
+system.text.encoding@4.3.0
+system.text.regularexpressions@4.1.0
+system.text.regularexpressions@4.3.0
+system.threading.tasks.extensions@4.0.0
+system.threading.tasks.extensions@4.3.0
+system.threading.tasks@4.0.11
+system.threading.tasks@4.3.0
+system.threading.thread@4.0.0
+system.threading.thread@4.3.0
+system.threading.threadpool@4.0.10
+system.threading.threadpool@4.3.0
+system.threading.timer@4.0.1
+system.threading@4.0.11
+system.threading@4.3.0
+system.windows.extensions@6.0.0
+system.xml.readerwriter@4.0.11
+system.xml.readerwriter@4.3.0
+system.xml.xdocument@4.0.11
+system.xml.xmldocument@4.0.1
+system.xml.xmldocument@4.3.0
+system.xml.xmlserializer@4.0.11
+system.xml.xpath.xmldocument@4.0.1
+system.xml.xpath.xmldocument@4.3.0
+system.xml.xpath@4.0.1
+system.xml.xpath@4.3.0
+"
+
+inherit check-reqs dotnet-pkg edo multiprocessing
+
+DESCRIPTION="SMT-based program verifier"
+HOMEPAGE="https://github.com/boogie-org/boogie/"
+
+if [[ "${PV}" == *9999* ]] ; then
+	inherit git-r3
+
+	EGIT_REPO_URI="https://github.com/boogie-org/${PN}.git"
+else
+	SRC_URI="https://github.com/boogie-org/${PN}/archive/v${PV}.tar.gz
+		-> ${P}.tar.gz"
+
+	KEYWORDS="~amd64"
+fi
+
+SRC_URI+=" ${NUGET_URIS} "
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+	sci-mathematics/z3
+"
+BDEPEND="
+	${RDEPEND}
+	test? (
+		dev-python/OutputCheck
+		dev-python/lit
+		dev-python/psutil
+	)
+"
+
+PATCHES=( "${FILESDIR}/${PN}-3.0.4-disable-analyzers.patch" )
+
+CHECKREQS_DISK_BUILD="2G"
+DOTNET_PKG_PROJECTS=( Source/BoogieDriver/BoogieDriver.csproj )
+DOTNET_PKG_BUILD_EXTRA_ARGS=( -p:RollForward=Major )
+
+pkg_setup() {
+	check-reqs_pkg_setup
+	dotnet-pkg_pkg_setup
+}
+
+src_unpack() {
+	dotnet-pkg_src_unpack
+
+	if [[ -n "${EGIT_REPO_URI}" ]] ; then
+		git-r3_src_unpack
+	fi
+}
+
+src_prepare() {
+	# Remove bad tests.
+	local -a bad_tests=(
+		civl/inductive-sequentialization/BroadcastConsensus.bpl
+		civl/inductive-sequentialization/ChangRoberts.bpl
+		civl/inductive-sequentialization/PingPong.bpl
+		civl/large-samples/GC.bpl
+		civl/paxos/is.sh
+		civl/samples/reserve.bpl
+		inst/vector-generic.bpl
+		livevars/stack_overflow.bpl
+		prover/cvc5-offline.bpl
+		prover/cvc5.bpl
+		prover/exitcode.bpl
+		prover/z3-hard-timeout.bpl
+		prover/z3mutl.bpl
+		test15/CaptureInlineUnroll.bpl
+		test2/Timeouts0.bpl
+		test21/InterestingExamples4.bpl
+	)
+	local bad_test
+	for bad_test in "${bad_tests[@]}" ; do
+		rm "${S}/Test/${bad_test}" || die
+	done
+
+	# Update the boogieBinary variable.
+	sed "/^boogieBinary/s|= .*|= '${DOTNET_PKG_OUTPUT}/BoogieDriver.dll'|" \
+		-i "${S}/Test/lit.site.cfg" || die "failed to update lit.site.cfg"
+
+	dotnet-pkg_src_prepare
+}
+
+src_test() {
+	einfo "Starting tests using the lit test tool."
+	local -a lit_opts=(
+		--order=lexical
+		--time-tests
+		--timeout 1800          # Let one test take no mere than half a hour.
+		--verbose
+		--workers="$(makeopts_jobs)"
+	)
+	edob lit "${lit_opts[@]}" "${S}/Test"
+}
+
+src_install() {
+	dotnet-pkg-base_install
+	dotnet-pkg-base_dolauncher "/usr/share/${P}/BoogieDriver" boogie
+
+	einstalldocs
+}
diff --git a/dev-lang/crystal/Manifest b/dev-lang/crystal/Manifest
index 61653bc99c1f..cdbc661c791c 100644
--- a/dev-lang/crystal/Manifest
+++ b/dev-lang/crystal/Manifest
@@ -3,8 +3,8 @@ AUX crystal-0.27.0-gentoo-tests-long-unix.patch 3317 BLAKE2B df1040abdb587ac3fff
 AUX crystal-1.7.2-extra-spec-flags.patch 1080 BLAKE2B 3054e38d4e7d114f1b0a08b367f9a5b366bbe269c75b9195abf9dc39231b32428a108c4254abd0bdb29b2ac6a94d6d256eccc68ca69f80a273cd17e0c0115fc7 SHA512 3c3fd6a42b291a42f76ec76101d669011eb02d4d17f35c8ad31c5a49aa3655a2315999e2401af7f3bc26445f74f432430a44b021846238d345d9c14b1009fdc5
 DIST crystal-1.11.2-1-linux-x86_64.tar.gz 46947860 BLAKE2B c3f08d8a399c139f2eb465857142ad6faaf6925459318d5e6b5b5b879974cc63f43c99f8b2d1fa852fe239a81c0341e24c84023b8b8113bc2bfe9e4fe03c8346 SHA512 54cf8e24d5bd87602a65d22dfa0bbe3520b49cedb430d0652066caf2f47d1cea1bafdb852133a886f3c3b324826212dfa82ac15475ef044016b4b8210e20da39
 DIST crystal-1.11.2.tar.gz 3620048 BLAKE2B 3838f43897ba74a3c7f5717ba795f38cfd4265bbcbe11fa5a155d196afae40c60f7b5789c5d97e94eea1a1affb2cbd5c7fa9208e74a0fa7fa932b013e6124923 SHA512 e9b828539359fbae93799654f39b75c0c72764348ae279da326ac4ff4d2fa8e693c01956f5bc7ce1fff1504156049bf2b261c8defbde9cb690e1e84c13c8a296
-DIST crystal-1.12.0-1-linux-x86_64.tar.gz 47041886 BLAKE2B bdcfc974a8e37889455b07d3c9689a16ff72909819055a47167d5d1e6bd6f58ca6a89c395b7e8d9316a9db5df239586027b4c26b57f225a000a4b2697ff751af SHA512 fbfc096f0f879614e6f38a40477eb8c2749eb29fe1b988a4eed30a8ea706cbc6a8bf61840396b9c918cada857fb3a095d9c713615c5eb072e08bf82f633561d6
-DIST crystal-1.12.0.tar.gz 3655308 BLAKE2B 49f0d22cba830fefb3261c7411978eff6f2bb8845688d86c62b89376f5a5f2a5540ac97c6166e86553da93ad0cf2174853ca1bb0d7bc5af1df81adc1fce3f983 SHA512 69b2be677b6bda00e18054c1a18227feb3905fc7f5f235d7d70da6ce5463d0e0f3aa7cf57e7e986db6721753218235218aa3fd670cfdef3fbd71ebf43c6f25fa
+DIST crystal-1.12.1-1-linux-x86_64.tar.gz 47041074 BLAKE2B 7e5d4a422144902de4b187947d55f9e8069d55f51013e10236fcf79b142ff96fc39973c883f5a633fbd10180553b6c82bdea824bff09d355fa171e4f5e308b68 SHA512 3256dc2340ed7b783bdf7e5f3d5c03cf981655ac2f50921aa53ada13cc72315d5a70515adb1c511f0f6e37c09310a963773b4f57eaeffe34c68e539edaaa7726
+DIST crystal-1.12.1.tar.gz 3657963 BLAKE2B 42cf32dca63a2bdd2925b4970e2277cb163ddcdbcbc997b7c72b155024f642d03c5a565e82dfc8a2b1aed0d3f877633beb9d128eb592485c034bfdcbc3f5baab SHA512 bd0c085d44a473b86797fa64ce9a5c66c7d3eda44bdba929faee490b635aef45bdf84b45baaa5dfea8e2b6fd218d1ae7fbdf117d3924b04b284075d4a500e55c
 EBUILD crystal-1.11.2.ebuild 2629 BLAKE2B f3f307224f2c46fd96ed84663102894fa340db5976fbf2eecaa9a2f6dae13aaa2b866fff42fe8c3a7790c5672422894d79da78565742ab309bb5936bed537f0f SHA512 eb084e916cddcf5c8f4d555ab5a9f4efc236247d6824a892da68567f3869f092e1db72bcc43703e285d4a64f7ea07818dfb5d2c26dfed3a955067dbddbb712e2
-EBUILD crystal-1.12.0.ebuild 2630 BLAKE2B a940cead1eedbe0926149c7d5daa3e34ab61a98bc8fe4f07df56e66759e2bb107fca49e1e28c0038cb1e7d05e8d6323b427c30fbdd8ed5d41345ccd79aa0b447 SHA512 155a50c6af61b0ab13affaf29d02f2e7fbf81ebfae900e622a777133020452f8d9356688fe7e7bb11eaac946b05a2a0cbad25cf4662f63d3f29e6f53dc67c63e
+EBUILD crystal-1.12.1.ebuild 2630 BLAKE2B a940cead1eedbe0926149c7d5daa3e34ab61a98bc8fe4f07df56e66759e2bb107fca49e1e28c0038cb1e7d05e8d6323b427c30fbdd8ed5d41345ccd79aa0b447 SHA512 155a50c6af61b0ab13affaf29d02f2e7fbf81ebfae900e622a777133020452f8d9356688fe7e7bb11eaac946b05a2a0cbad25cf4662f63d3f29e6f53dc67c63e
 MISC metadata.xml 762 BLAKE2B 591f38c882318a6564501cc61abe6222264b65adeaffaf3b23d959ee86b83bae33eaf99029229705f92070fa539fd6d63d8242afc38475904483a9a0b997effd SHA512 ea223d568a3c336a43b183efc61bd1f1a9d1e5e0e8d963275e0b23ee879551bc7d8aae797b1e2edba49d119ad306692599eb535c5d164ebee0c6721dfeab78dc
diff --git a/dev-lang/crystal/crystal-1.12.0.ebuild b/dev-lang/crystal/crystal-1.12.0.ebuild
deleted file mode 100644
index 02631f5f838f..000000000000
--- a/dev-lang/crystal/crystal-1.12.0.ebuild
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-BV="${PV}-1"
-BV_AMD64="${BV}-linux-x86_64"
-
-LLVM_MAX_SLOT=17
-
-inherit bash-completion-r1 llvm multiprocessing toolchain-funcs
-
-DESCRIPTION="The Crystal Programming Language"
-HOMEPAGE="https://crystal-lang.org/
-	https://github.com/crystal-lang/crystal/"
-SRC_URI="
-	https://github.com/crystal-lang/crystal/archive/${PV}.tar.gz
-		-> ${P}.tar.gz
-	amd64? (
-		https://github.com/crystal-lang/crystal/releases/download/${BV/-*}/crystal-${BV_AMD64}.tar.gz
-	)
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="doc debug llvm-libunwind"
-
-# Upstream test suite not reliable
-RESTRICT="test"
-
-DEPEND="
-	<sys-devel/llvm-$((${LLVM_MAX_SLOT} + 1)):=
-	dev-libs/boehm-gc:=[threads]
-	dev-libs/gmp:=
-	dev-libs/libatomic_ops:=
-	dev-libs/libevent:=
-	dev-libs/libpcre2:=[unicode]
-	dev-libs/pcl:=
-	llvm-libunwind? (
-		sys-libs/llvm-libunwind:=
-	)
-	!llvm-libunwind? (
-		sys-libs/libunwind:=
-	)
-"
-RDEPEND="
-	${DEPEND}
-	dev-libs/libxml2
-	dev-libs/libyaml
-"
-
-PATCHES=(
-	"${FILESDIR}/${PN}-1.7.2-extra-spec-flags.patch"
-	"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix.patch"
-	"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix-2.patch"
-)
-
-src_configure() {
-	local bootstrap_path="${WORKDIR}/${PN}-${BV}/bin"
-	if [[ ! -d "${bootstrap_path}" ]] ; then
-		eerror "Binary tarball does not contain expected directory:"
-		die "'${bootstrap_path}' path does not exist."
-	fi
-
-	# crystal uses 'LLVM_TARGETS' to override default list of targets
-	unset LLVM_TARGETS
-
-	MY_EMAKE_COMMON_ARGS=(
-		PATH="${bootstrap_path}:${PATH}"
-
-		CRYSTAL_CONFIG_VERSION="${PV}"
-		CRYSTAL_CONFIG_PATH="lib:${EPREFIX}/usr/$(get_libdir)/crystal"
-
-		$(usex debug "" release=1)
-		progress=true
-		stats=1
-		threads="$(makeopts_jobs)"
-		verbose=1
-
-		AR="$(tc-getAR)"
-		CC="$(tc-getCC)"
-		CXX="$(tc-getCXX)"
-		LLVM_CONFIG="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-	)
-}
-
-src_compile() {
-	emake "${MY_EMAKE_COMMON_ARGS[@]}"
-
-	use doc && emake docs "${MY_EMAKE_COMMON_ARGS[@]}"
-}
-
-src_test() {
-	# EXTRA_SPEC_FLAGS is useful to debug individual tests
-	# as part of full build:
-	#    USE=debug EXTRA_SPEC_FLAGS='-e parse_set_cookie' emerge -1 crystal
-	emake std_spec \
-		"${MY_EMAKE_COMMON_ARGS[@]}" "EXTRA_SPEC_FLAGS=${EXTRA_SPEC_FLAGS}"
-}
-
-src_install() {
-	insinto "/usr/$(get_libdir)/crystal"
-	doins -r src/.
-
-	exeinto /usr/bin
-	doexe .build/crystal
-
-	insinto /usr/share/zsh/site-functions
-	newins etc/completion.zsh _crystal
-
-	dodoc -r samples
-	doman "man/${PN}.1"
-	newbashcomp etc/completion.bash "${PN}"
-
-	if use doc ; then
-		docinto api
-		dodoc -r docs/.
-	fi
-}
diff --git a/dev-lang/crystal/crystal-1.12.1.ebuild b/dev-lang/crystal/crystal-1.12.1.ebuild
new file mode 100644
index 000000000000..02631f5f838f
--- /dev/null
+++ b/dev-lang/crystal/crystal-1.12.1.ebuild
@@ -0,0 +1,120 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+BV="${PV}-1"
+BV_AMD64="${BV}-linux-x86_64"
+
+LLVM_MAX_SLOT=17
+
+inherit bash-completion-r1 llvm multiprocessing toolchain-funcs
+
+DESCRIPTION="The Crystal Programming Language"
+HOMEPAGE="https://crystal-lang.org/
+	https://github.com/crystal-lang/crystal/"
+SRC_URI="
+	https://github.com/crystal-lang/crystal/archive/${PV}.tar.gz
+		-> ${P}.tar.gz
+	amd64? (
+		https://github.com/crystal-lang/crystal/releases/download/${BV/-*}/crystal-${BV_AMD64}.tar.gz
+	)
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="doc debug llvm-libunwind"
+
+# Upstream test suite not reliable
+RESTRICT="test"
+
+DEPEND="
+	<sys-devel/llvm-$((${LLVM_MAX_SLOT} + 1)):=
+	dev-libs/boehm-gc:=[threads]
+	dev-libs/gmp:=
+	dev-libs/libatomic_ops:=
+	dev-libs/libevent:=
+	dev-libs/libpcre2:=[unicode]
+	dev-libs/pcl:=
+	llvm-libunwind? (
+		sys-libs/llvm-libunwind:=
+	)
+	!llvm-libunwind? (
+		sys-libs/libunwind:=
+	)
+"
+RDEPEND="
+	${DEPEND}
+	dev-libs/libxml2
+	dev-libs/libyaml
+"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-1.7.2-extra-spec-flags.patch"
+	"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix.patch"
+	"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix-2.patch"
+)
+
+src_configure() {
+	local bootstrap_path="${WORKDIR}/${PN}-${BV}/bin"
+	if [[ ! -d "${bootstrap_path}" ]] ; then
+		eerror "Binary tarball does not contain expected directory:"
+		die "'${bootstrap_path}' path does not exist."
+	fi
+
+	# crystal uses 'LLVM_TARGETS' to override default list of targets
+	unset LLVM_TARGETS
+
+	MY_EMAKE_COMMON_ARGS=(
+		PATH="${bootstrap_path}:${PATH}"
+
+		CRYSTAL_CONFIG_VERSION="${PV}"
+		CRYSTAL_CONFIG_PATH="lib:${EPREFIX}/usr/$(get_libdir)/crystal"
+
+		$(usex debug "" release=1)
+		progress=true
+		stats=1
+		threads="$(makeopts_jobs)"
+		verbose=1
+
+		AR="$(tc-getAR)"
+		CC="$(tc-getCC)"
+		CXX="$(tc-getCXX)"
+		LLVM_CONFIG="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+	)
+}
+
+src_compile() {
+	emake "${MY_EMAKE_COMMON_ARGS[@]}"
+
+	use doc && emake docs "${MY_EMAKE_COMMON_ARGS[@]}"
+}
+
+src_test() {
+	# EXTRA_SPEC_FLAGS is useful to debug individual tests
+	# as part of full build:
+	#    USE=debug EXTRA_SPEC_FLAGS='-e parse_set_cookie' emerge -1 crystal
+	emake std_spec \
+		"${MY_EMAKE_COMMON_ARGS[@]}" "EXTRA_SPEC_FLAGS=${EXTRA_SPEC_FLAGS}"
+}
+
+src_install() {
+	insinto "/usr/$(get_libdir)/crystal"
+	doins -r src/.
+
+	exeinto /usr/bin
+	doexe .build/crystal
+
+	insinto /usr/share/zsh/site-functions
+	newins etc/completion.zsh _crystal
+
+	dodoc -r samples
+	doman "man/${PN}.1"
+	newbashcomp etc/completion.bash "${PN}"
+
+	if use doc ; then
+		docinto api
+		dodoc -r docs/.
+	fi
+}
diff --git a/dev-lang/elixir/Manifest b/dev-lang/elixir/Manifest
index aeee8c7cf968..73eca6ca0586 100644
--- a/dev-lang/elixir/Manifest
+++ b/dev-lang/elixir/Manifest
@@ -2,18 +2,19 @@ AUX elixir-1.10.3-epmd-daemon.patch 512 BLAKE2B c767cf4336214396d953efe568f0302d
 AUX elixir-1.10.3-no-Q.patch 355 BLAKE2B 903e5a7149f6e7f7030a533ae437b0e40b97c82c6baa7f90c1dff37fedf96c2e821e98529007e2300a92b8b3e9284428d91d6ee45888da7d79b18d35dfd89e58 SHA512 21d28b63fee2877337c0df095cfa200ae11ec2f0c76556e971957bb92e2b8e9d811c939b1efa458c633b61d3525f47a8b04d1b6f23df04e50ffb3ed5225f7c18
 AUX elixir-1.14.1-make44-parallel-build.patch 1026 BLAKE2B d5ba9c3721b34df0e8c707d285f0e06804ef11ea20327637846d8542b0ddd0093bffc36e09a6c4f4ef528a44996fb68f4d0f6b25f016b8317bc3d0c91b3443a2 SHA512 06fb8a0729f1507d9faaed69e87ff39930b1893dc77f6dbc75c6f15c5cf6cb153f4db5283da3028e6248960f23a76c9248ee5169a3e3cdc4d052db25393c05b5
 AUX elixir-1.14.5-otp26-tests.patch 3908 BLAKE2B 7c21440ee45af54859ca8c60dccef0dc3c8f6f0e6e05becc18cfd1a91767926b6f0da0f8e4c3afcfe2b599407e848b9ba5a2f5bfa6b27ff79530155d875243c8 SHA512 a2d84084882e9f11e9c1df1e0bb9190b038f12762e5c4084f9ccd5c961a0901ba30462f968bce49ada57268e47502ea5e3107e25a6d13ea1925eadd19c593728
+AUX elixir-1.16.1-skip-tests-requiring-erlang-docs.patch 3398 BLAKE2B 5f8467cfeb4f9d4da1190b6c90ba17155921fc59aea38dcba2f39fa78cf9845e51ff52abda3f4547fad8dc4d35c108583f4c8c9f843b2567ee1878fe68999e07 SHA512 d36b9ff086b1745f66f748b1f8749673fa0e4bc0b8fd77a59e22d2a2043651edb0246d4ee02bed099c2b1e4fd5774c13b57343b228397794cfaff286af1b4fa7
 AUX elixir-1.9.1-disable-network-tests.patch 569 BLAKE2B fda6b9b99f80e81883723280de31933c1740167d41ef4783dc663bad277cf58b8782326abc4a72e0d989c513afb9cdf4494e7d79754b18d62baf75255a74aa45 SHA512 465831a389891680412d51d9209497d5b750ff0a5ff72d45807a7dba6ec7757156ee96048bbc81f46c9c24a5b13cdd5161539fdeb4ffcea655c407e29f6675fc
 DIST elixir-1.13.4.tar.gz 2912984 BLAKE2B 3849e7be7d1ba54ac3f96690f158b60a3b7da720e85a6c2ef38b078da795c1debaff319133eae6d5e77a7159f452b2ee6a7ad9ebbf7339391e4ee9ae8838d848 SHA512 cd3a28cd227bf60f09500563b7ad4700b2688e0361f975268d5fa81b530aee80ed4f8640335bf08a8c544a2f5d79dbf96c97f281bd3bf4582466a73a9d2edbec
 DIST elixir-1.14.3.tar.gz 3086297 BLAKE2B b162ea35a762bc1e151c7844237f3167c97da9aae44bca9fe022d09cde6f6909103b383e67b2133b68e76c061c4ed05cdd081070bdbb48be85bbc0ed067fadfd SHA512 eec1e161364f823e26d79596d18b0ff7e6ade1c2c1f6f9ca84eb34d20fd90f434bbd29ef74cd41096e8f25e71d9cd1da0ec6f0a4f24c485124f9525b1ae2c4e0
 DIST elixir-1.14.5.tar.gz 3076366 BLAKE2B cf1487c269b4f09c5a7771339782ddc5f6dc2d5f31bd098486824e1f50040462a55a6135e76a7d635461b8d61ce8ab45be2d1da86d60ecf0bc3c86c98b86531d SHA512 589482fb080eb9f71319b7927312ee255dab0376a8fb781533bc97b6a75dd71ec43cd022bb2eff12eca205cdeaf9a6d629f754c555c17cd6222e05912ff3d960
 DIST elixir-1.15.6.tar.gz 3150339 BLAKE2B c42571f0482add17d7b03c55ca0721569c5c54026b89d49c6d868410d817b348c1d82f615ecc084f7f8fe87633b3050e0f87c78184eb201fca1ceae939a605c7 SHA512 f41ada8b54faa8b070ad26b3cf05dd40fd66f952c1945c869d925f14f036f245341d0857815f58ba69acb7a519c06a5c2c166d41a6f637f1d0027d35b828e960
 DIST elixir-1.15.7.tar.gz 3151775 BLAKE2B 62dc5e390f7b704fdab2be91b36faabc62aed097ec1a077476fee0e50717cfe527322d8eaf2afd90035bf1b4fb48803112ef4c7fded20f133b64cea3bee43c6d SHA512 a46f0569cbff342f15a04776f8d57cf2554867546004adabd9b9dff36c184ec56a78f2df2fc6c0855e65c11277662f694f5e6a8c6e1716cf4e22d8fdd5e1d4ae
-DIST elixir-1.16.1.tar.gz 3353282 BLAKE2B 795c8778fb5d5d29e2c1b85d1ad2d9c0c96418010c69e692dc0bcb44ffb4a22e4a67489d991717c548eb3f9ea7173ff71d73a055543f477cf1460b1282259f58 SHA512 2663c04ab3abe577884535e681989610131be0f4f0e55997956b9d4cb87c1a3c0cfd3bf453cf61dbc66f3aa20cdf46bc683df1bfe9292771b5445c164e5197ce
+DIST elixir-1.16.2.tar.gz 3357093 BLAKE2B 61ba738542d33e827f7352b7f0a27aa76fc06f037d35c56efd96be1c26e28be90b6f2998cd2cac0090e5da771f6c45ad12d68644e36a214de36c9e26d4ac9686 SHA512 1e90adcd5d0512d4b394276e431f3987fc61a3f6191cd5c1d0f7fdd82baba99747aa553a3583e0813ffb5a48a32ce02a24e27b641f86a61e421722a802a850c1
 EBUILD elixir-1.13.4-r1.ebuild 1075 BLAKE2B 4c180f7c602d5be7ab0f7902b69c2b06a3d92b1a85114ea9ff3dde5e1cf2d092c3b5447207fc0d460c159a97ae404521463b6739ec6ed9fca42e0bc3ba40c0c5 SHA512 31098830265c9deef4b600c13ee1bc5510a69239e07d9dee6012d8db30abe691c00b49dc03f336fbd415a9f2ec16dcacd3b040fe61f628df4e480c66e24a12f7
 EBUILD elixir-1.14.3-r1.ebuild 1075 BLAKE2B f04a8d220a207098a8f529a26522984c0188d776bd9225c29570583dc7bff5a0ed30c1122b3218189ca44591ecc70cf4912a2f470bcc40307404df37481b701c SHA512 c903f901958468f0cbc14a6b55e88276196c998d83950f5dff94fe699e2cf8414c6dcf47df9d9b3668b3ff34dc49ee98e2d8351c88f9bdb9510aca365b8694e8
 EBUILD elixir-1.14.5-r1.ebuild 1080 BLAKE2B f2ec7a8c04fc85938f0681e7b6d797f1a6fa35b05b3d950689dcb295248e4ff41062a603a057a9b411eda7af461b8ac4b0dd6405194b3f7e81011c634199b5f9 SHA512 c34c112ba9fcea7b5f24dad4f3575fc58495fca55a5f3a123abb12926cdeee439c1b2f2ac47b2dfdc1f74bb4081704065ae75286912107f1f9d30eac2ebff92b
 EBUILD elixir-1.14.5-r2.ebuild 1124 BLAKE2B 9e2db53b75ba926cd48a945155b0688774f344a68237010eeb712d5884504b7156600e97e6ef68ff930a7068de34bc974374cffc5ed857ca3e1e5acbc31be77a SHA512 c26275434d77a2004ab24b0e989f2cf1ffded9e5718b54eeb57e7314b5109c6b5ee50b10f84013157a71867ecab7e60f6a55dfa65dff8ff51c3c32d94b471412
 EBUILD elixir-1.15.6.ebuild 1024 BLAKE2B 23f476a6d1a6b863b5d051844ff42742140c47d7d219e6f8ed6cc1a797a4bd8748cb6e4249c48466128a71d755397b0ed890fb4fabdb3b4472b8f3fd67757935 SHA512 5bcb5ee8f9e4a83f3eaf0db84dfef44eb45a9117f3dfb07d42128f7f2864cac49343c699ee3ce39d41340ecd4d1b534bf2e41d6233f3b1f4a33427629ae790f6
 EBUILD elixir-1.15.7.ebuild 1022 BLAKE2B 39dcca698a60d83057297aeee72f45fce2751851de8c46fdf8d1b3b6a807204dabce74ec15953575b1a98d6c7221c63ad9e1a2079d888baca716ac8f120d7abd SHA512 10bebf96befc825277ed193fc4a4c5e331f385bbeb51d31790b3d1b326b22b45978d0daa60776f12ae95fdf6fddcbd339789190aefd9b650651bd2ebb3ec3e15
-EBUILD elixir-1.16.1.ebuild 1008 BLAKE2B 8fd43a3908bd041ff4eac297e9b0483af41485186ec01ae7284bff9eee428c87b60d48b14dd22e7a4a61436fed74f456cb598639859359cca06479dc52838e7e SHA512 a3d6f6fae136a2a6abdbd52dc158d865c85ce4eabc229b9cfb199059a9bd05123314691db088c39c44d9a733317cfae0f679eaead5a03b862483327e6394b1fd
+EBUILD elixir-1.16.2.ebuild 1075 BLAKE2B ca9d87e6aae7a136196498371425b218ac92bf6650b8d4ee93818f008e89493efefc72090b45a86e7ffebe651d12fbef54ef8e73b1e995a767498e45fd36bffc SHA512 1494c60ebb5073dac82c4d87dd9715869149f6962c7fd5c14cec9ba75c64f2b6973463bc7e13003d7c067ef3373121704ab37802a7b59b8947cce3ec65b32ca5
 MISC metadata.xml 724 BLAKE2B ae59dba7153a9cdbeb0ed45acf54cf733f07ebc1b43896f88ff09686ecbdd56553e92f7733e5f556d01e622cadb85a24da879799b0f742d7e257425db1f300b4 SHA512 43cc4435aa89e2ba8edaf8f4cead814c514fac07a7c0500f3f7dfe35d2da6f75f835df0d21d862be6dcbffbd9c6e5ea32b21296048ec903c1491ccfd4854316b
diff --git a/dev-lang/elixir/elixir-1.16.1.ebuild b/dev-lang/elixir/elixir-1.16.1.ebuild
deleted file mode 100644
index e471f6ed3900..000000000000
--- a/dev-lang/elixir/elixir-1.16.1.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DESCRIPTION="Elixir programming language"
-HOMEPAGE="https://elixir-lang.org"
-SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="Apache-2.0 ErlPL-1.1"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~riscv ~sparc ~x86"
-IUSE="test"
-
-RESTRICT="!test? ( test )"
-
-# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp
-DEPEND="
-	>=dev-lang/erlang-24:0=[ssl]
-	<dev-lang/erlang-27
-"
-# 'mix' tool collides with sci-biology/phylip, bug #537514
-RDEPEND="${DEPEND}
-	!!sci-biology/phylip
-"
-DEPEND+="
-	test? ( dev-vcs/git )
-"
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch
-	"${FILESDIR}"/${PN}-1.10.3-no-Q.patch
-	"${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch
-)
-
-src_install() {
-	emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install
-	dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md
-}
diff --git a/dev-lang/elixir/elixir-1.16.2.ebuild b/dev-lang/elixir/elixir-1.16.2.ebuild
new file mode 100644
index 000000000000..429d175339cf
--- /dev/null
+++ b/dev-lang/elixir/elixir-1.16.2.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Elixir programming language"
+HOMEPAGE="https://elixir-lang.org"
+SRC_URI="https://github.com/elixir-lang/elixir/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0 ErlPL-1.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~riscv ~sparc ~x86"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+# https://hexdocs.pm/elixir/compatibility-and-deprecations.html#between-elixir-and-erlang-otp
+DEPEND="
+	>=dev-lang/erlang-24:0=[ssl]
+	<dev-lang/erlang-27
+"
+# 'mix' tool collides with sci-biology/phylip, bug #537514
+RDEPEND="${DEPEND}
+	!!sci-biology/phylip
+"
+DEPEND+="
+	test? ( dev-vcs/git )
+"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-1.9.1-disable-network-tests.patch
+	"${FILESDIR}"/${PN}-1.10.3-no-Q.patch
+	"${FILESDIR}"/${PN}-1.10.3-epmd-daemon.patch
+	"${FILESDIR}"/${PN}-1.16.1-skip-tests-requiring-erlang-docs.patch
+)
+
+src_install() {
+	emake DESTDIR="${D}" LIBDIR="$(get_libdir)" PREFIX="${EPREFIX}/usr" install
+	dodoc README.md CHANGELOG.md CODE_OF_CONDUCT.md
+}
diff --git a/dev-lang/elixir/files/elixir-1.16.1-skip-tests-requiring-erlang-docs.patch b/dev-lang/elixir/files/elixir-1.16.1-skip-tests-requiring-erlang-docs.patch
new file mode 100644
index 000000000000..187c45a7d902
--- /dev/null
+++ b/dev-lang/elixir/files/elixir-1.16.1-skip-tests-requiring-erlang-docs.patch
@@ -0,0 +1,90 @@
+Upstream-Commit: https://github.com/elixir-lang/elixir/commit/c50863615c0e8ac957e22ae01a6f9af23978c3f9
+
+From c50863615c0e8ac957e22ae01a6f9af23978c3f9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@dashbit.co>
+Date: Thu, 8 Feb 2024 08:08:03 +0100
+Subject: [PATCH] Skip tests if Erlang was compiled without docs, closes #13322
+
+---
+ lib/iex/test/iex/helpers_test.exs | 12 +++++++++---
+ lib/iex/test/test_helper.exs      | 10 +++++++++-
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/lib/iex/test/iex/helpers_test.exs b/lib/iex/test/iex/helpers_test.exs
+index 54f946516ce..171acc72abc 100644
+--- a/lib/iex/test/iex/helpers_test.exs
++++ b/lib/iex/test/iex/helpers_test.exs
+@@ -332,17 +332,20 @@ defmodule IEx.HelpersTest do
+       assert help =~ "Welcome to Interactive Elixir"
+     end
+ 
++    @tag :erlang_doc
+     test "prints Erlang module documentation" do
+       captured = capture_io(fn -> h(:timer) end)
+       assert captured =~ "This module provides useful functions related to time."
+     end
+ 
++    @tag :erlang_doc
+     test "prints Erlang module function specs" do
+       captured = capture_io(fn -> h(:timer.sleep() / 1) end)
+       assert captured =~ ":timer.sleep/1"
+       assert captured =~ "-spec sleep(Time) -> ok when Time :: timeout()."
+     end
+ 
++    @tag :erlang_doc
+     test "handles non-existing Erlang module function" do
+       captured = capture_io(fn -> h(:timer.baz() / 1) end)
+       assert captured =~ "No documentation for :timer.baz was found"
+@@ -1008,13 +1011,15 @@ defmodule IEx.HelpersTest do
+       cleanup_modules([TypeSample])
+     end
+ 
+-    test "prints all types in erlang module" do
++    @tag :erlang_doc
++    test "prints all types in Erlang module" do
+       captured = capture_io(fn -> t(:queue) end)
+       assert captured =~ "-type queue() :: queue(_)"
+       assert captured =~ "-opaque queue(Item)"
+     end
+ 
+-    test "prints single type from erlang module" do
++    @tag :erlang_doc
++    test "prints single type from Erlang module" do
+       captured = capture_io(fn -> t(:erlang.iovec()) end)
+       assert captured =~ "-type iovec() :: [binary()]"
+       assert captured =~ "A list of binaries."
+@@ -1024,7 +1029,8 @@ defmodule IEx.HelpersTest do
+       assert captured =~ "A list of binaries."
+     end
+ 
+-    test "handles non-existing types from erlang module" do
++    @tag :erlang_doc
++    test "handles non-existing types from Erlang module" do
+       captured = capture_io(fn -> t(:erlang.foo()) end)
+       assert captured =~ "No type information for :erlang.foo was found or :erlang.foo is private"
+ 
+diff --git a/lib/iex/test/test_helper.exs b/lib/iex/test/test_helper.exs
+index f5a55f0aa80..b32c8be4e91 100644
+--- a/lib/iex/test/test_helper.exs
++++ b/lib/iex/test/test_helper.exs
+@@ -7,11 +7,19 @@ IEx.configure(colors: [enabled: false])
+ {line_exclude, line_include} =
+   if line = System.get_env("LINE"), do: {[:test], [line: line]}, else: {[], []}
+ 
++erlang_doc_exclude =
++  if match?({:docs_v1, _, _, _, _, _, _}, Code.fetch_docs(:array)) do
++    []
++  else
++    IO.puts("Erlang/OTP compiled without docs, some tests are excluded...")
++    [:erlang_doc]
++  end
++
+ ExUnit.start(
+   assert_receive_timeout: assert_timeout,
+   trace: !!System.get_env("TRACE"),
+   include: line_include,
+-  exclude: line_exclude
++  exclude: line_exclude ++ erlang_doc_exclude
+ )
+ 
+ defmodule IEx.Case do
diff --git a/dev-lang/fennel/Manifest b/dev-lang/fennel/Manifest
index 6915c0a90d01..221c2e1d1835 100644
--- a/dev-lang/fennel/Manifest
+++ b/dev-lang/fennel/Manifest
@@ -1,5 +1,5 @@
 DIST fennel-1.4.0.tar.gz 299561 BLAKE2B a94bb15c04b69154dbea1bc562347cef0b9ddd9ec3c3994bf5999593ef89422338f54dfb0bbd6c8e6f487eeb6d1178cc916ed8a92ec7755c43108ff58d3a842e SHA512 0c92496db478eb5445d95057433b54a945c38a40541c6891c1d887a296ce3c89468c688702249488b34192ce1783b4891e292b9b1702a0620e51cc103602694a
 DIST fennel-1.4.2.tar.gz 301195 BLAKE2B f5a124725b4d2573275f179090b0400ed07dcc50d6ae661dd588887b8774a2cb48ab9f720dfb7bc7049d1e353f430e75da48e9a08b716cc1a80e4e09bf269bc7 SHA512 13b6020314d010566c7521b85065a446e09f8a0cfec9b9cb4bc2e23fe59369d105538bcb8a3a7cd865c399742d98a1742da932f8bde993c1136422f803069071
-EBUILD fennel-1.4.0-r1.ebuild 971 BLAKE2B 287bee454929eadecd11f4021b583ab9848c191b2ee53aeaa74f87ead821b47fa70e71e3b7f4448c8f61b6269c0ab67c19b8446cd6e387ce35af30502214e6fe SHA512 bfecff7762c9f422dd3b59a171e55298cff65feea182c5e7b2ab7f2d18b22ce65ab8e8c80602a5007639c2f7a37a098c7421eb1159840647281b13e71812a22d
-EBUILD fennel-1.4.2.ebuild 972 BLAKE2B 257a5f322c77219a216a8719ec482553547c2e6d3d189c013f8795eefd6ccac41062dc7ba3def26615b5deb4917f05704944d95ae87d880649ae40e6ffefdd77 SHA512 c87811d9aad3fe62d5f2f1475ff0dffa8cee428c0aa0d0a923d2976b6a35aa26d29df1256d2c038fdb4aa357a688b3563c427ae2787a96c70ddb4ea12ed823d9
+EBUILD fennel-1.4.0-r2.ebuild 1090 BLAKE2B 74a02106decb97dc192f7447d83f164508d41232c74c235320cddf4bf0f3d06eea3edd36f5749bdc1fd7a725842561a4f04631cd55e43add20c9e4c612a10f60 SHA512 733d00292745a9cd078a3b56ee09ec92f7c0a46e9d075ccdb46dcff6126a9aba4e225afb23fdcb5bc2ae6ec460357aa57035d992f6a74e015e2628f2eb0b6f64
+EBUILD fennel-1.4.2-r1.ebuild 1091 BLAKE2B f6819320331322058c265b066ce5e6f6f390f073e50145db541469317039ccc666f3e2a4b8c4a507aa204b23070bdbea9b91469eb144c9058f118116107acd6d SHA512 a06afb8fb1bd039a13513c136b532faba916a17a1f03b0c239a73197a6811b10546660531cf3c3f8a9b63fe80240560ef4da4f2a93290f13f7f36a52c0668554
 MISC metadata.xml 1061 BLAKE2B 49ef84fd44f2efd7526055bfc6fd1a37fa0d426a0746d769844ad6fd4ae1efc7dcc541f61fe6f3d8e0e92cb324c6bdfb061312c15ed1d696cf1985aa4cb4097d SHA512 3381a38c5c2ae6482325e6aeea556db767cc6166e89280511d0597c06fbc532a6592d526954f8b1fd40badcac7a951eece9f6aeaf18802f85ca16ccb5da4510d
diff --git a/dev-lang/fennel/fennel-1.4.0-r1.ebuild b/dev-lang/fennel/fennel-1.4.0-r1.ebuild
deleted file mode 100644
index 367c7a62e82d..000000000000
--- a/dev-lang/fennel/fennel-1.4.0-r1.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Fails to build with with "lua5-1".
-LUA_COMPAT=( lua5-{3,4} )
-
-inherit lua-single
-
-DESCRIPTION="Lisp-like language that compiles to Lua"
-HOMEPAGE="https://fennel-lang.org/
-	https://sr.ht/~technomancy/fennel/"
-
-if [[ "${PV}" == *9999* ]] ; then
-	inherit git-r3
-
-	EGIT_REPO_URI="https://git.sr.ht/~technomancy/${PN}"
-else
-	SRC_URI="https://git.sr.ht/~technomancy/${PN}/archive/${PV}.tar.gz
-		-> ${P}.tar.gz"
-
-	KEYWORDS="amd64 ~arm ~arm64 ~ppc ~x86"
-fi
-
-LICENSE="MIT"
-SLOT="0/${PV}"
-REQUIRED_USE="${LUA_REQUIRED_USE}"
-
-RDEPEND="
-	${LUA_DEPS}
-"
-BDEPEND="
-	${RDEPEND}
-"
-
-src_prepare() {
-	default
-
-	# Turn off failing tests. bug https://bugs.gentoo.org/906351
-	sed -e 's|"failures",||' -e 's|"repl",||' -i test/init.lua || die
-}
-
-src_test() {
-	emake test
-}
-
-src_install() {
-	emake LUA_LIB_DIR="${ED}/$(lua_get_lmod_dir)" PREFIX="${ED}/usr" install
-
-	dodoc *.md
-}
diff --git a/dev-lang/fennel/fennel-1.4.0-r2.ebuild b/dev-lang/fennel/fennel-1.4.0-r2.ebuild
new file mode 100644
index 000000000000..68ee8a548f2b
--- /dev/null
+++ b/dev-lang/fennel/fennel-1.4.0-r2.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Fails to build with with "lua5-1".
+LUA_COMPAT=( lua5-{3,4} luajit )
+
+inherit lua-single
+
+DESCRIPTION="Lisp-like language that compiles to Lua"
+HOMEPAGE="https://fennel-lang.org/
+	https://sr.ht/~technomancy/fennel/"
+
+if [[ "${PV}" == *9999* ]] ; then
+	inherit git-r3
+
+	EGIT_REPO_URI="https://git.sr.ht/~technomancy/${PN}"
+else
+	SRC_URI="https://git.sr.ht/~technomancy/${PN}/archive/${PV}.tar.gz
+		-> ${P}.tar.gz"
+
+	KEYWORDS="amd64 ~arm ~arm64 ~ppc ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+RDEPEND="
+	${LUA_DEPS}
+"
+BDEPEND="
+	${RDEPEND}
+"
+
+src_prepare() {
+	default
+
+	# Turn off failing tests. bug https://bugs.gentoo.org/906351
+	sed -e 's|"failures",||' -e 's|"repl",||' -i test/init.lua || die
+
+	# Remove bad tests, bug #923281
+	rm test/macro.fnl || die
+	sed -i test/init.lua -e 's|"test.macro",||' || die
+}
+
+src_test() {
+	emake test
+}
+
+src_install() {
+	emake LUA_LIB_DIR="${ED}/$(lua_get_lmod_dir)" PREFIX="${ED}/usr" install
+
+	dodoc *.md
+}
diff --git a/dev-lang/fennel/fennel-1.4.2-r1.ebuild b/dev-lang/fennel/fennel-1.4.2-r1.ebuild
new file mode 100644
index 000000000000..71f067aa7941
--- /dev/null
+++ b/dev-lang/fennel/fennel-1.4.2-r1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Fails to build with with "lua5-1".
+LUA_COMPAT=( lua5-{3,4} luajit )
+
+inherit lua-single
+
+DESCRIPTION="Lisp-like language that compiles to Lua"
+HOMEPAGE="https://fennel-lang.org/
+	https://sr.ht/~technomancy/fennel/"
+
+if [[ "${PV}" == *9999* ]] ; then
+	inherit git-r3
+
+	EGIT_REPO_URI="https://git.sr.ht/~technomancy/${PN}"
+else
+	SRC_URI="https://git.sr.ht/~technomancy/${PN}/archive/${PV}.tar.gz
+		-> ${P}.tar.gz"
+
+	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+RDEPEND="
+	${LUA_DEPS}
+"
+BDEPEND="
+	${RDEPEND}
+"
+
+src_prepare() {
+	default
+
+	# Turn off failing tests. bug https://bugs.gentoo.org/906351
+	sed -e 's|"failures",||' -e 's|"repl",||' -i test/init.lua || die
+
+	# Remove bad tests, bug #923281
+	rm test/macro.fnl || die
+	sed -i test/init.lua -e 's|"test.macro",||' || die
+}
+
+src_test() {
+	emake test
+}
+
+src_install() {
+	emake LUA_LIB_DIR="${ED}/$(lua_get_lmod_dir)" PREFIX="${ED}/usr" install
+
+	dodoc *.md
+}
diff --git a/dev-lang/fennel/fennel-1.4.2.ebuild b/dev-lang/fennel/fennel-1.4.2.ebuild
deleted file mode 100644
index 2970b228386f..000000000000
--- a/dev-lang/fennel/fennel-1.4.2.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Fails to build with with "lua5-1".
-LUA_COMPAT=( lua5-{3,4} )
-
-inherit lua-single
-
-DESCRIPTION="Lisp-like language that compiles to Lua"
-HOMEPAGE="https://fennel-lang.org/
-	https://sr.ht/~technomancy/fennel/"
-
-if [[ "${PV}" == *9999* ]] ; then
-	inherit git-r3
-
-	EGIT_REPO_URI="https://git.sr.ht/~technomancy/${PN}"
-else
-	SRC_URI="https://git.sr.ht/~technomancy/${PN}/archive/${PV}.tar.gz
-		-> ${P}.tar.gz"
-
-	KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
-fi
-
-LICENSE="MIT"
-SLOT="0/${PV}"
-REQUIRED_USE="${LUA_REQUIRED_USE}"
-
-RDEPEND="
-	${LUA_DEPS}
-"
-BDEPEND="
-	${RDEPEND}
-"
-
-src_prepare() {
-	default
-
-	# Turn off failing tests. bug https://bugs.gentoo.org/906351
-	sed -e 's|"failures",||' -e 's|"repl",||' -i test/init.lua || die
-}
-
-src_test() {
-	emake test
-}
-
-src_install() {
-	emake LUA_LIB_DIR="${ED}/$(lua_get_lmod_dir)" PREFIX="${ED}/usr" install
-
-	dodoc *.md
-}
diff --git a/dev-lang/gprolog/Manifest b/dev-lang/gprolog/Manifest
index e2a89d96bcce..3645f262fd09 100644
--- a/dev-lang/gprolog/Manifest
+++ b/dev-lang/gprolog/Manifest
@@ -11,5 +11,5 @@ AUX gprolog-1.5.0-llvm-as.patch 1507 BLAKE2B 658033e193191722236e2b67b99ac045c27
 DIST gprolog-1.4.5.tar.gz 3587361 BLAKE2B c0c73ce249d7c26b914a3f831c6ac93aeb884bded6c5ebbe51223f0685de0be2e746533aade1633a953b93e88a30796fa52ecd5e609d05bc051363cbf34e0477 SHA512 425103bc9e5bdbdb4ae331f5be0cf49524fbdb4f5e2809fb973360de9e7ad9935c1b28f3603e0be696a647153d9f0d3dacdc87251098ac99faf7d0b3c652fc60
 DIST gprolog-1.5.0.tar.gz 3813899 BLAKE2B e1d82393f122f37b1e139732c1b954b8a407feac4973b56c2e39dcf907424acca67bd10ea0e833ebbd6764a47b075911a29e05b51c37d3751a5d5fc751a08789 SHA512 7ef1a3555ffa58d3fb0db2b55ffc1d00868021f0f9f3d63dd1f43b5b833e6e00ecc74abfc0573828a3d53f20c134dffaf7fe79ab21b3e16dccfca8c73b5dfb8d
 EBUILD gprolog-1.4.5.ebuild 1938 BLAKE2B 65bbebccf772394fed4dc8aa5dced5e95991ec77297e3e4d26dcaefb943dc1666e49d4af15982121c6da662a5b799ba5f04833007d5de311d39618269fc56b16 SHA512 9ba3eacaed57ae38b71176793acc61820135f836decdf6397cadef568d3f8b5b6e32aa5433f07a8450bacb1dedd5afedd7e6a3ccc7348965d9a1b2515080bde0
-EBUILD gprolog-1.5.0.ebuild 1848 BLAKE2B 68d8d22e082a1bc014a8063d61a888840e3a51d9e7995fa997ccddf997c2f5834e309bc2289f333338761414ba17aee4fda068a28e9d56225ac4b53feaa3ebe3 SHA512 7e574355faa454dfb9bb90e0cc022eaf4f89e3d40fcf99a797e148ba1b50c4445aa5a2f89957927b88313cb43d03d6d659e0b2e39e72f4c19856a092180de930
+EBUILD gprolog-1.5.0-r1.ebuild 1882 BLAKE2B b9e56331b9e2d591e4a00fda4336963e8699710dd64fdabfcb90fe84c45be25a2b896308765ccea1071a23f9ed6903abf6e87e93f24c765676dd231704ab199f SHA512 afa91982f0673188f8db28971286256b2c0d11c139c0040174ec57b8785f5a41bb41796f0ca0413843a1b7cbe4ca7b9be510ce9430aa63c2efab9e6f9f99ccbf
 MISC metadata.xml 316 BLAKE2B 618fb8e9262c5a1761a107e6b1d79153b8275f6f50942693c29fc07635228292c08fefa6fce4618d0b6ada2fe3707904c95c39c027faee5645aa2fd94db1daf5 SHA512 b4514895fd49ab20e90bdade573a0bade67ebf59c1afe47747e2558fa5c309be0e0a94e4c8ba3abf140ee209f5582ab632a7258b21d09921222591b7ab2c77cb
diff --git a/dev-lang/gprolog/gprolog-1.5.0-r1.ebuild b/dev-lang/gprolog/gprolog-1.5.0-r1.ebuild
new file mode 100644
index 000000000000..29233aa9547b
--- /dev/null
+++ b/dev-lang/gprolog/gprolog-1.5.0-r1.ebuild
@@ -0,0 +1,88 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools flag-o-matic toolchain-funcs
+
+DESCRIPTION="Native Prolog compiler with constraint solving over finite domains (FD)"
+HOMEPAGE="http://www.gprolog.org/"
+SRC_URI="http://www.gprolog.org/${P}.tar.gz"
+S="${WORKDIR}"/${P}
+
+LICENSE="|| ( GPL-2+ LGPL-3+ )"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="debug doc examples"
+
+PATCHES=(
+	"${FILESDIR}"/${P}-ldflags.patch
+	"${FILESDIR}"/${P}-links.patch
+	"${FILESDIR}"/${P}-destdir.patch
+	"${FILESDIR}"/${P}-llvm-as.patch
+)
+
+src_prepare() {
+	default
+
+	cd "${S}"/src || die
+	eautoconf
+}
+
+src_configure() {
+	CFLAGS_MACHINE="$(get-flag -march) $(get-flag -mcpu) $(get-flag -mtune)"
+
+	use debug && append-flags -DDEBUG
+
+	if tc-enables-pie; then
+		# gplc generates its own native ASM; disable PIE
+		append-ldflags -no-pie
+	fi
+
+	if tc-is-gcc && ! use x86; then
+		gprolog_use_regs=yes
+	else
+		gprolog_use_regs=no
+	fi
+
+	if tc-is-clang; then
+		AS=$(tc-getCC)
+	else
+		AS=$(tc-getAS)
+	fi
+
+	cd "${S}"/src || die
+	local myeconfargs=(
+		AS="${AS}"
+		CFLAGS_MACHINE="${CFLAGS_MACHINE}"
+		--with-c-flags="${CFLAGS}"
+		--with-install-dir="${EPREFIX}"/usr/$(get_libdir)/${P}
+		--with-links-dir="${EPREFIX}"/usr/bin
+		--enable-regs=${gprolog_use_regs}
+		$(use_with doc doc-dir "${EPREFIX}"/usr/share/doc/${PF})
+		$(use_with doc html-dir "${EPREFIX}"/usr/share/doc/${PF}/html)
+		$(use_with examples examples-dir "${EPREFIX}"/usr/share/doc/${PF}/examples)
+	)
+	econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+	cd "${S}"/src || die
+
+	# gprolog is compiled using gplc which cannot be run in parallel
+	emake -j1
+}
+
+src_test() {
+	cd "${S}"/src || die
+
+	emake -j1 check
+}
+
+src_install() {
+	cd "${S}"/src || die
+	emake DESTDIR="${D}" TXT_FILES= install
+
+	cd "${S}" || die
+	dodoc ChangeLog NEWS PROBLEMS README
+}
diff --git a/dev-lang/gprolog/gprolog-1.5.0.ebuild b/dev-lang/gprolog/gprolog-1.5.0.ebuild
deleted file mode 100644
index e5959b8c30f4..000000000000
--- a/dev-lang/gprolog/gprolog-1.5.0.ebuild
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit autotools flag-o-matic toolchain-funcs
-
-DESCRIPTION="A native Prolog compiler with constraint solving over finite domains (FD)"
-HOMEPAGE="http://www.gprolog.org/"
-SRC_URI="http://www.gprolog.org/${P}.tar.gz"
-S="${WORKDIR}"/${P}
-
-LICENSE="|| ( GPL-2+ LGPL-3+ )"
-SLOT="0"
-KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
-IUSE="debug doc examples"
-
-PATCHES=(
-	"${FILESDIR}"/${P}-ldflags.patch
-	"${FILESDIR}"/${P}-links.patch
-	"${FILESDIR}"/${P}-destdir.patch
-	"${FILESDIR}"/${P}-llvm-as.patch
-)
-
-src_prepare() {
-	default
-
-	cd "${S}"/src
-	eautoconf
-}
-
-src_configure() {
-	CFLAGS_MACHINE="`get-flag -march` `get-flag -mcpu` `get-flag -mtune`"
-
-	use debug && append-flags -DDEBUG
-
-	if tc-enables-pie; then
-		# gplc generates its own native ASM; disable PIE
-		append-ldflags -no-pie
-	fi
-
-	if tc-is-gcc && ! use x86; then
-		gprolog_use_regs=yes
-	else
-		gprolog_use_regs=no
-	fi
-
-	if tc-is-clang; then
-		AS=$(tc-getCC)
-	else
-		AS=$(tc-getAS)
-	fi
-
-	cd "${S}"/src || die
-	econf \
-		AS="${AS}" \
-		CFLAGS_MACHINE="${CFLAGS_MACHINE}" \
-		--with-c-flags="${CFLAGS}" \
-		--with-install-dir="${EPREFIX}"/usr/$(get_libdir)/${P} \
-		--with-links-dir="${EPREFIX}"/usr/bin \
-		--enable-regs=${gprolog_use_regs} \
-		$(use_with doc doc-dir "${EPREFIX}"/usr/share/doc/${PF}) \
-		$(use_with doc html-dir "${EPREFIX}"/usr/share/doc/${PF}/html) \
-		$(use_with examples examples-dir "${EPREFIX}"/usr/share/doc/${PF}/examples)
-}
-
-src_compile() {
-	cd "${S}"/src || die
-
-	# gprolog is compiled using gplc which cannot be run in parallel
-	emake -j1
-}
-
-src_test() {
-	cd "${S}"/src || die
-
-	emake -j1 check
-}
-
-src_install() {
-	cd "${S}"/src || die
-	emake DESTDIR="${D}" TXT_FILES= install
-
-	cd "${S}" || die
-	dodoc ChangeLog NEWS PROBLEMS README
-}
diff --git a/dev-lang/orc/Manifest b/dev-lang/orc/Manifest
index 7522545fdcda..0c788e38a053 100644
--- a/dev-lang/orc/Manifest
+++ b/dev-lang/orc/Manifest
@@ -3,5 +3,5 @@ DIST orc-0.4.34.tar.xz 202628 BLAKE2B b741e9bd5c0f0f3e56fad2f8a9bc10ce4a503a936e
 DIST orc-0.4.38.tar.xz 227152 BLAKE2B f7babfec5f4d792fb52eb0ca23743b6c06a12625edcf0cecbf8e3cb88c13171a760c6874061a3e55a43df5389346b3c3d0ba3463d6e1ef32f685162f7478e631 SHA512 49f34be85f6980e4b5e94f848016f5788b658323f3a120110bc237722ac99938c02976efbe96022d148054330432899533305d4dd21be8fab76fd1995179339a
 EBUILD orc-0.4.33.ebuild 1138 BLAKE2B f556e7b863e269abd5983b9471225a3d5832968b0d862bde69b34fe81eb113f636214e09a4dc00b0fa6513a106ba796e4dd2b3a90e51e0611d7ed0607de67790 SHA512 d7e965a474e2ebce37599a52e70324f99e3ea9d77413551a4a3cc972eda97e4532b9f65f88b5268e0e8333593a82bd670a07a192ad7a55c892ebd0aac8113a92
 EBUILD orc-0.4.34.ebuild 1079 BLAKE2B 2a78cb75810dbee6b36e7730bd1528c6a6a03849d499a4eb85fc40c7005f36c52d3eaa3329443059f602807f0e4e4b04434f762a039dee15ea5a9ad5291146fb SHA512 2a387efec038e0ad3dcd63aed18a2b3c9994b89b29fc9b8f6e084ef997da2bb66e10bf4a1580592b43e5c87ebe854cb9d2bce83b2a3ef6972efc05f813dca98d
-EBUILD orc-0.4.38.ebuild 1120 BLAKE2B e34671ebde868dcb92f44668f6d99b94e0a4c4079829706af5e75d5ad669434a04457042764099294328dca3b2f42810c011470ceebd3bfd026d87c916056181 SHA512 430937523438919bd502ebd5badaa567788a79ec81a623bd3e7ced2bf1db0e309fe66a37c62c04a6a16e1066d77f2c41335ae829700b34f4a52fb646eccc61ae
+EBUILD orc-0.4.38.ebuild 1116 BLAKE2B 2fe9a826c55c9c029c1fa1e2f5a6cfeddeac6ffade1ad8f1c8bb03b867a08139551ff923ef559bda919ab979efbf5ca685ed7637bf079da83ae0c558af755f78 SHA512 2cffc928728b1bec28c10cbc0b8d7684eee7b74232c6253ed2126043fa43486b1c278c476936df9fd0525a4f21d01af3387ba7bc6862bd08886dabc24c661f76
 MISC metadata.xml 265 BLAKE2B 15de31a2337fe8b9175ffe3fd29cb1eb24148d7463f772b18a7fe8b38bd4edb05005df1ce6996cf23dad21db879c18b95d245fa9d096a002b95155c01088f516 SHA512 78a0c7a2a820f7032f384cf68d2affdd92d6f1466778f879909d0acfcc1cdc3bd64eee700ba06979f561583981033aae59b5d61eb4cfd01fc71fc13e4433305f
diff --git a/dev-lang/orc/orc-0.4.38.ebuild b/dev-lang/orc/orc-0.4.38.ebuild
index d24ae2205ccd..071890b81342 100644
--- a/dev-lang/orc/orc-0.4.38.ebuild
+++ b/dev-lang/orc/orc-0.4.38.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://gstreamer.freedesktop.org/src/${PN}/${P}.tar.xz"
 
 LICENSE="BSD BSD-2"
 SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
 RESTRICT="!test? ( test )"
 IUSE="gtk-doc static-libs test"
 
diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest
index 48a746a75c7a..f2c554b1bbce 100644
--- a/dev-lang/php/Manifest
+++ b/dev-lang/php/Manifest
@@ -8,13 +8,13 @@ AUX php-fpm_at-simple.service 316 BLAKE2B 0ba10f3e3b004fbf14956e1e4f04f59b8a127e
 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.26.tar.xz 11809448 BLAKE2B e1d50f1de572580a207586b3c3b57081f7b9f1b680ffe8f9e82c88c9285af117dd7e9e2576fcb13119176cb9cd02b39481b6f40e9a1df81aa90b8c4d3e59e4b1 SHA512 5bc40077e57c0fccdf17810d688baea416f22ac248bb01b73d2e2590fc4cfabc7001c1c3833281a60870c74178f7b06cbc85474eba695aabf969ad0081a98417
-DIST php-8.1.27.tar.xz 11915228 BLAKE2B 83f4f3c25435b26dc526dc1fd7aff44cd03157349f9bb6454e216525a16c2bbc3bfac47cce6b5ea8bfdfcf3c7f27e342fc602ca7d2491fe89db06ea93f686f0e SHA512 07fb2b8e10e2487635e26bfd8a27949a26b85f76bc3984ad8599224bb7a7f9498d84299335ae5a0bba16599275e9747ab141f73f4f2076ddf49ebec8e76fd0ed
+DIST php-8.1.28.tar.xz 11848504 BLAKE2B a5deb596176bcd69c33f239e752ac75e2da1538efe6d2b321802c50ea250214c6d9b59e8a5cb74f97f37c917159ef4fde4ccda4403d6e0a6fe751a19b7687472 SHA512 d56ecac164e00e9514cd3c6c8c453598b323118dc7d7ae7cc14ba0847d50a2e455b2391f52e0d81af325b02d8f73a7d2ed66bf66d068dac4a496d777c83a398f
 DIST php-8.2.15.tar.xz 12075384 BLAKE2B cef15868968538e232093bd66d862a88f0960325f2274eaf53a3d114d01787c58844aa3bce8bc09a723acd95801e1935a60e79fc189317e7f1ba19196dbfcdc4 SHA512 56c94bcafe07cf4bf5eb5fc6c67fcf16654c44a262ffb18188fc3ffac5e9bb11d39093bfb26c26bc8d2dec7e530d1a175180909262c9b5c30130cf5a4a293166
-DIST php-8.2.17.tar.xz 12092404 BLAKE2B 352ad673c6eb4e827982b822c0d2f50f62b047e759bb056224f83f939b26a2348a36c3fea3950f3c55df2845a5eb56c103ffef5a81f192c07f02fb2cbaefa7a4 SHA512 113cd8c6a481770aba7e21f1bc22500c93dfa41ff85a7b54e1abbfd5b5a32f51501c91eb45c29a5e2d8ec5f61861060c193a96e27224c97f8cad7979f378bde8
-DIST php-8.3.4.tar.xz 12443980 BLAKE2B b3e7c491583081cc24cef24a1adaee91da4454518e6feb1320e3c2fe474c1e84b8cc861d3706976cee0df011da734321ae4ea5336fc17f9c799a6728eb74de44 SHA512 7254421c57de6c8f9f84079212ead38b397e053ad2dc202bd4e0c9d63aa5d9884a6a856fb93fcdbc9e671051436814188439bc5de480979e53fdcb5488cdc321
+DIST php-8.2.18.tar.xz 12089400 BLAKE2B 82a4ef0aee7fa66018cb528e6fc2da40f67be2a75449ed85c54881e6725cfa9fe82d6d5655c12d2e92f3fd685479367b7c038df5af0d7a0a122d627c78c50514 SHA512 8bdd6e5aa19dac80745d258a43f7330a3096d47dc66cbef0054b8f9eb9ace5e87d841a4001185a783241a416975753c922425e977f50b2716ce643b6a7bf351f
+DIST php-8.3.6.tar.xz 12468116 BLAKE2B 33d318058123544cbfd95ca65bd75b1eda64757f07af1d0c49eeb98c1ea5f803f1a27f5fe32c983ecdf6f789cef8afc564b384b8537b0a11525cf3ec38373e04 SHA512 fa0b6734e34af90b67bdb991726faa02f7ddd7f31adf73d0b96762452a652690ef5fbae2f6cb941fbd41533b1d6870a78192433e78d5a16a8b5f55b3a5fdf44a
 EBUILD php-8.1.26-r1.ebuild 21992 BLAKE2B 6a2d19aefc689f44603bf95a14b21e345ae739a5dd66a620a065f36e4b72233753a8144f41434211de28ee49ac0e3c0dda3dd712749215a721007126104cddfc SHA512 928b5d071618a69d398c15223c8885924c5dbe6581bacc93f041a27c6caf4384ae43e0aeeb6f2bf31582b5d1838a6656a8e6cb24d18ddddf44e9df1e18694c93
-EBUILD php-8.1.27-r2.ebuild 22554 BLAKE2B 3e698a3daaacd7711cbb76934bea9f14393f2c663676655d516e35e607cbf7de4760ffb621592f1d7c427ddec0efd87c06c738af0634dfe35bbeebff51c8254b SHA512 f8271124ed5d10cf3640da3e7c7d55d04e1d4cfebf75d87667ba1c6dbab2c7f86f930a051fe2a5b3417a9174e4ea3d2ab0ac64f041e7e165569a71bec2dd5fc2
+EBUILD php-8.1.28.ebuild 22552 BLAKE2B a3a9272f8ee8f9402ae230be8b560e611a5efdb95250b39a37338443a8c7fd1808759f3eb035c826b68403cba92d9daae2c192c943f33c77adb9d9312bcc875b SHA512 8e1a399d048420583ed0b8203adb95b83155878b6c08ad9d446a0551ad85bb8329e07586b03534275201813679d0098f9fcdcc1bf07e83d98fbbf0a7acf3a596
 EBUILD php-8.2.15.ebuild 25371 BLAKE2B 6550892391829deccde5acda3d0ebc2945781a832176e2ae30bd35db2dc349e6be755c795ef2568bbd3aaa65fe58acf3367ffcdf73d246ab891af19a7210d7d0 SHA512 50fccc0065eaf1718ecde49be74f191412f72c03fe616a0ebb9606310ff46b65acf9a016e71799206dd7e724a6bfae9e8cf8951e0b64e957232a99c610848bc0
-EBUILD php-8.2.17.ebuild 25681 BLAKE2B f3d1f1f45d6088dcbb2d40d43504e8a02ffd53344dbc7ed7659902ffeab4761af10211426f360099409220a1d93ba4681084a3500a0b88554668953f971b8e4a SHA512 bec11d5ba24876ec6d77449061c3f6951e825f09ff7aae9493296e779b1880337ca135cae086d7205fc61e1a828220ce6cd138f660d0261e487afedaee1984bf
-EBUILD php-8.3.4.ebuild 23023 BLAKE2B 8adf89bc0cd8033e31cdfb8a1adc6614b717ac149718797449cf4cbf9b3106c3ed7fce94ee23e1e8465675860086a2575dbee82749294a99c6d9561d9ddabb5a SHA512 26e53ba4402102bf8595c43f5ff26db402d0b2d7834b4a8287d59db39c8c9f3a4de84fbb5c3442e17fe70d66a3a6bece825d89c80811e8da00418bf3faa5e7ca
+EBUILD php-8.2.18.ebuild 25632 BLAKE2B b1d004ea2bece91e7b364fe14c23a47c8c7c4580e883a7e20bf1f54f210938c5b90e429ae830bc31306cc43471bdc1bd1070762265ae2739cba57ece166fe389 SHA512 db1850609a53942f410fd8047d1f55ce6b287d5c1df157cc8d2eaccc7ae08e41a75aadc8c873b1035cb73f136ee4a7d263677fffb72524c3340aac073062cc90
+EBUILD php-8.3.6.ebuild 23023 BLAKE2B 8adf89bc0cd8033e31cdfb8a1adc6614b717ac149718797449cf4cbf9b3106c3ed7fce94ee23e1e8465675860086a2575dbee82749294a99c6d9561d9ddabb5a SHA512 26e53ba4402102bf8595c43f5ff26db402d0b2d7834b4a8287d59db39c8c9f3a4de84fbb5c3442e17fe70d66a3a6bece825d89c80811e8da00418bf3faa5e7ca
 MISC metadata.xml 4134 BLAKE2B 62c1c5052c50db537586edc1db639fa94e24609ea027208177566ae7f7f9199103bb3ef5b636766508027e8e7aacb8451d25b57e981b582bc42299e199696a68 SHA512 b059c7552c18dfcabe82170c1ae5978421284f3ea9ea9505359c1441ccc76b668a5555919251c6ca55f1f450da9363a8ac7b30c393a8506921f790e0f4197dbb
diff --git a/dev-lang/php/php-8.1.27-r2.ebuild b/dev-lang/php/php-8.1.27-r2.ebuild
deleted file mode 100644
index f434f0df4366..000000000000
--- a/dev-lang/php/php-8.1.27-r2.ebuild
+++ /dev/null
@@ -1,782 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-WANT_AUTOMAKE="none"
-
-inherit flag-o-matic multilib systemd autotools
-
-DESCRIPTION="The PHP language runtime engine"
-HOMEPAGE="https://www.php.net/"
-SRC_URI="https://www.php.net/distributions/${P}.tar.xz"
-
-LICENSE="PHP-3.01
-	BSD
-	Zend-2.0
-	bcmath? ( LGPL-2.1+ )
-	fpm? ( BSD-2 )
-	gd? ( gd )
-	unicode? ( BSD-2 LGPL-2.1 )"
-
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
-
-# We can build the following SAPIs in the given order
-SAPIS="embed cli cgi fpm apache2 phpdbg"
-
-# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
-IUSE="${IUSE}
-	${SAPIS/cli/+cli}
-	threads"
-
-IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar
-	cdb cjk coverage +ctype curl debug
-	enchant exif ffi +fileinfo +filter firebird
-	+flatfile ftp gd gdbm gmp +iconv imap inifile
-	intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb
-	mhash mssql mysql mysqli nls
-	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
-	readline selinux +session session-mm sharedmem
-	+simplexml snmp soap sockets sodium spell sqlite ssl
-	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode webp
-	+xml xmlreader xmlwriter xpm xslt zip zlib"
-
-# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
-# The Oracle instant client provides its own incompatible ldap library.
-REQUIRED_USE="
-	|| ( cli cgi fpm apache2 embed phpdbg )
-	avif? ( gd zlib )
-	cli? ( ^^ ( readline libedit ) )
-	!cli? ( ?? ( readline libedit ) )
-	truetype? ( gd zlib )
-	webp? ( gd zlib )
-	cjk? ( gd zlib )
-	exif? ( gd zlib )
-	xpm? ( gd zlib )
-	gd? ( zlib )
-	simplexml? ( xml )
-	soap? ( xml )
-	xmlreader? ( xml )
-	xmlwriter? ( xml )
-	xslt? ( xml )
-	ldap-sasl? ( ldap )
-	oci8-instant-client? ( !ldap )
-	qdbm? ( !gdbm )
-	session-mm? ( session !threads )
-	mysql? ( || ( mysqli pdo ) )
-	firebird? ( pdo )
-	mssql? ( pdo )
-"
-
-RESTRICT="!test? ( test )"
-
-# The supported (that is, autodetected) versions of BDB are listed in
-# the ./configure script. Other versions *work*, but we need to stick to
-# the ones that can be detected to avoid a repeat of bug #564824.
-COMMON_DEPEND="
-	>=app-eselect/eselect-php-0.9.7[apache2?,fpm?]
-	>=dev-libs/libpcre2-10.30[jit?,unicode]
-	virtual/libcrypt:=
-	fpm? ( acl? ( sys-apps/acl ) apparmor? ( sys-libs/libapparmor ) )
-	apache2? ( www-servers/apache[apache2_modules_unixd(+),threads=] )
-	argon2? ( app-crypt/argon2:= )
-	avif? ( media-libs/libavif:= )
-	berkdb? ( || (	sys-libs/db:5.3 sys-libs/db:4.8 ) )
-	bzip2? ( app-arch/bzip2:0= )
-	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
-	coverage? ( dev-util/lcov )
-	curl? ( >=net-misc/curl-7.29.0 )
-	enchant? ( app-text/enchant:2 )
-	ffi? ( >=dev-libs/libffi-3.0.11:= )
-	firebird? ( dev-db/firebird )
-	gd? ( media-libs/libjpeg-turbo:0= media-libs/libpng:0= )
-	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
-	gmp? ( dev-libs/gmp:0= )
-	iconv? ( virtual/libiconv )
-	imap? ( net-libs/c-client[kerberos=,ssl=] )
-	intl? ( dev-libs/icu:= )
-	kerberos? ( virtual/krb5 )
-	ldap? ( >=net-nds/openldap-1.2.11:= )
-	ldap-sasl? ( dev-libs/cyrus-sasl )
-	libedit? ( dev-libs/libedit )
-	lmdb? ( dev-db/lmdb:= )
-	mssql? ( dev-db/freetds[mssql] )
-	nls? ( sys-devel/gettext )
-	oci8-instant-client? ( dev-db/oracle-instantclient[sdk] )
-	odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( >=dev-db/unixODBC-1.8.13 ) )
-	postgres? ( >=dev-db/postgresql-9.1:* )
-	qdbm? ( dev-db/qdbm )
-	readline? ( sys-libs/readline:0= )
-	session-mm? ( dev-libs/mm )
-	snmp? ( >=net-analyzer/net-snmp-5.2 )
-	sodium? ( dev-libs/libsodium:=[-minimal(-)] )
-	spell? ( >=app-text/aspell-0.50 )
-	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
-	ssl? ( >=dev-libs/openssl-1.0.2:0= )
-	tidy? ( app-text/htmltidy )
-	tokyocabinet? ( dev-db/tokyocabinet )
-	truetype? ( =media-libs/freetype-2* )
-	unicode? ( dev-libs/oniguruma:= )
-	webp? ( media-libs/libwebp:0= )
-	xml? ( >=dev-libs/libxml2-2.9.0 )
-	xpm? ( x11-libs/libXpm )
-	xslt? ( dev-libs/libxslt )
-	zip? ( >=dev-libs/libzip-1.2.0:= )
-	zlib? ( >=sys-libs/zlib-1.2.0.4:0= )
-"
-
-IDEPEND=">=app-eselect/eselect-php-0.9.7[apache2?,fpm?]"
-
-RDEPEND="${COMMON_DEPEND}
-	virtual/mta
-	fpm? (
-		selinux? ( sec-policy/selinux-phpfpm )
-		systemd? ( sys-apps/systemd ) )"
-
-# Bison isn't actually needed when building from a release tarball
-# However, the configure script will warn if it's absent or if you
-# have an incompatible version installed. See bug 593278.
-DEPEND="${COMMON_DEPEND}
-	app-arch/xz-utils
-	>=sys-devel/bison-3.0.1"
-
-BDEPEND="virtual/pkgconfig"
-
-PHP_MV="$(ver_cut 1)"
-
-PATCHES=(
-	"${FILESDIR}/php-iodbc-header-location.patch"
-	"${FILESDIR}/php-capstone-optional.patch"
-	"${FILESDIR}/php-8.1.27-gcc14-libxml.patch"
-	"${FILESDIR}/php-8.1.27-implicit-decls.patch"
-	"${FILESDIR}/fix-musl-llvm.patch"
-)
-
-# ARM/Windows functions that are expected to be undefined.
-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
-
-	# Remove false positive test failures
-	# stream_isatty fails due to portage redirects
-	# curl tests here fail for network sandbox issues
-	# session tests here fail because we set the session directory to $T
-	rm tests/output/stream_isatty_err.phpt \
-	   tests/output/stream_isatty_out-err.phpt \
-	   tests/output/stream_isatty_out.phpt \
-	   ext/curl/tests/bug76675.phpt \
-	   ext/curl/tests/bug77535.phpt \
-	   ext/curl/tests/curl_error_basic.phpt \
-	   ext/session/tests/bug74514.phpt \
-	   ext/session/tests/bug74936.phpt \
-	   ext/fileinfo/tests/bug78987.phpt || die
-}
-
-src_configure() {
-	addpredict /usr/share/snmp/mibs/.index #nowarn
-	addpredict /var/lib/net-snmp/mib_indexes #nowarn
-
-	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
-
-	# https://bugs.gentoo.org/866683, https://bugs.gentoo.org/913527
-	filter-lto
-
-	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
-	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
-	local our_conf=(
-		--prefix="${PHP_DESTDIR}"
-		--mandir="${PHP_DESTDIR}/man"
-		--infodir="${PHP_DESTDIR}/info"
-		--libdir="${PHP_DESTDIR}/lib"
-		--with-libdir="$(get_libdir)"
-		--localstatedir="${EPREFIX}/var"
-		--without-pear
-		--without-valgrind
-		$(use_enable threads zts)
-	)
-
-	# 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 coverage gcov)
-		$(use_enable ctype)
-		$(use_with curl)
-		$(use_enable xml dom)
-		$(use_with enchant)
-		$(use_enable exif)
-		$(use_with ffi)
-		$(use_enable fileinfo)
-		$(use_enable filter)
-		$(use_enable ftp)
-		$(use_with nls gettext "${EPREFIX}/usr")
-		$(use_with gmp gmp "${EPREFIX}/usr")
-		$(use_with mhash mhash "${EPREFIX}/usr")
-		$(use_with iconv iconv \
-			$(use elibc_glibc || use elibc_musl || echo "${EPREFIX}/usr"))
-		$(use_enable intl)
-		$(use_enable ipv6)
-		$(use_with kerberos)
-		$(use_with xml libxml)
-		$(use_enable unicode mbstring)
-		$(use_with ssl openssl)
-		$(use_enable pcntl)
-		$(use_enable phar)
-		$(use_enable pdo)
-		$(use_enable opcache)
-		$(use_with postgres pgsql "${EPREFIX}/usr")
-		$(use_enable posix)
-		$(use_with spell pspell "${EPREFIX}/usr")
-		$(use_enable simplexml)
-		$(use_enable sharedmem shmop)
-		$(use_with snmp snmp "${EPREFIX}/usr")
-		$(use_enable soap)
-		$(use_enable sockets)
-		$(use_with sodium)
-		$(use_with sqlite sqlite3)
-		$(use_enable sysvipc sysvmsg)
-		$(use_enable sysvipc sysvsem)
-		$(use_enable sysvipc sysvshm)
-		$(use_with tidy tidy "${EPREFIX}/usr")
-		$(use_enable tokenizer)
-		$(use_enable xml)
-		$(use_enable xmlreader)
-		$(use_enable xmlwriter)
-		$(use_with xslt xsl)
-		$(use_with zip)
-		$(use_with zlib zlib "${EPREFIX}/usr")
-		$(use_enable debug)
-	)
-
-	# DBA support
-	if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
-		|| use qdbm || use lmdb || use tokyocabinet ; then
-		our_conf+=( "--enable-dba" )
-	fi
-
-	# DBA drivers support
-	our_conf+=(
-		$(use_with cdb)
-		$(use_with berkdb db4 "${EPREFIX}/usr")
-		$(use_enable flatfile)
-		$(use_with gdbm gdbm "${EPREFIX}/usr")
-		$(use_enable inifile)
-		$(use_with qdbm qdbm "${EPREFIX}/usr")
-		$(use_with tokyocabinet tcadb "${EPREFIX}/usr")
-		$(use_with lmdb lmdb "${EPREFIX}/usr")
-	)
-
-	# Support for the GD graphics library
-	our_conf+=(
-		$(use_with truetype freetype)
-		$(use_enable cjk gd-jis-conv)
-		$(use_with gd jpeg)
-		$(use_with xpm)
-		$(use_with webp)
-	)
-	# enable gd last, so configure can pick up the previous settings
-	our_conf+=( $(use_enable gd) )
-
-	# IMAP support
-	if use imap ; then
-		our_conf+=(
-			$(use_with imap imap "${EPREFIX}/usr")
-			$(use_with ssl imap-ssl "${EPREFIX}/usr")
-		)
-	fi
-
-	# LDAP support
-	if use ldap ; then
-		our_conf+=(
-			$(use_with ldap ldap "${EPREFIX}/usr")
-			$(use_with ldap-sasl)
-		)
-	fi
-
-	# MySQL support
-	our_conf+=( $(use_with mysqli mysqli "mysqlnd") )
-
-	local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock"
-	if use mysql || use mysqli ; then
-		our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") )
-	fi
-
-	# ODBC support
-	if use odbc && use iodbc ; then
-		our_conf+=(
-			--without-unixODBC
-			--with-iodbc
-			$(use_with pdo pdo-odbc "iODBC,${EPREFIX}/usr")
-		)
-	elif use odbc ; then
-		our_conf+=(
-			--with-unixODBC="${EPREFIX}/usr"
-			--without-iodbc
-			$(use_with pdo pdo-odbc "unixODBC,${EPREFIX}/usr")
-		)
-	else
-		our_conf+=(
-			--without-unixODBC
-			--without-iodbc
-			--without-pdo-odbc
-		)
-	fi
-
-	# Oracle support
-	our_conf+=( $(use_with oci8-instant-client oci8) )
-
-	# PDO support
-	if use pdo ; then
-		our_conf+=(
-			$(use_with mssql pdo-dblib "${EPREFIX}/usr")
-			$(use_with mysql pdo-mysql "mysqlnd")
-			$(use_with postgres pdo-pgsql)
-			$(use_with sqlite pdo-sqlite)
-			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
-			$(use_with oci8-instant-client pdo-oci)
-		)
-	fi
-
-	# readline/libedit support
-	our_conf+=(
-		$(use_with readline readline "${EPREFIX}/usr")
-		$(use_with libedit)
-	)
-
-	# Session support
-	if use session ; then
-		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
-	else
-		our_conf+=( $(use_enable session) )
-	fi
-
-	# Use pic for shared modules such as apache2's mod_php
-	our_conf+=( --with-pic )
-
-	# we use the system copy of pcre
-	# --with-external-pcre affects ext/pcre
-	our_conf+=(
-		--with-external-pcre
-		$(use_with jit pcre-jit)
-	)
-
-	# Catch CFLAGS problems
-	# Fixes bug #14067.
-	# Changed order to run it in reverse for bug #32022 and #12021.
-	replace-cpu-flags "k6*" "i586"
-
-	# Cache the ./configure test results between SAPIs.
-	our_conf+=( --cache-file="${T}/config.cache" )
-
-	# Support user-passed configuration parameters
-	our_conf+=( ${EXTRA_ECONF:-} )
-
-	# Support the Apache2 extras, they must be set globally for all
-	# SAPIs to work correctly, especially for external PHP extensions
-
-	local one_sapi
-	local sapi
-	mkdir -p "${WORKDIR}/sapis-build" || die
-	for one_sapi in $SAPIS ; do
-		use "${one_sapi}" || continue
-		php_set_ini_dir "${one_sapi}"
-
-		# The BUILD_DIR variable is used to determine where to output
-		# the files that autotools creates. This was all originally
-		# based on the autotools-utils eclass.
-		BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}"
-		cp -a "${S}" "${BUILD_DIR}" || die
-		cd "${BUILD_DIR}" || die
-
-		local sapi_conf=(
-			--with-config-file-path="${PHP_INI_DIR}"
-			--with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}"
-		)
-
-		for sapi in $SAPIS ; do
-			case "$sapi" in
-				cli|cgi|embed|fpm|phpdbg)
-					if [[ "${one_sapi}" == "${sapi}" ]] ; then
-						sapi_conf+=( "--enable-${sapi}" )
-						if [[ "fpm" == "${sapi}" ]] ; then
-							sapi_conf+=(
-								$(use_with acl fpm-acl)
-								$(use_with systemd fpm-systemd)
-							)
-						fi
-					else
-						sapi_conf+=( "--disable-${sapi}" )
-					fi
-					;;
-
-				apache2)
-					if [[ "${one_sapi}" == "${sapi}" ]] ; then
-						sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" )
-					else
-						sapi_conf+=( --without-apxs2 )
-					fi
-					;;
-			esac
-		done
-
-		# Construct the $myeconfargs array by concatenating $our_conf
-		# (the common args) and $sapi_conf (the SAPI-specific args).
-		local myeconfargs=( "${our_conf[@]}" )
-		myeconfargs+=( "${sapi_conf[@]}" )
-
-		pushd "${BUILD_DIR}" > /dev/null || die
-		econf "${myeconfargs[@]}"
-		popd > /dev/null || die
-	done
-}
-
-src_compile() {
-	# snmp seems to run during src_compile, too (bug #324739)
-	addpredict /usr/share/snmp/mibs/.index #nowarn
-	addpredict /var/lib/net-snmp/mib_indexes #nowarn
-
-	local sapi
-	for sapi in ${SAPIS} ; do
-		if use "${sapi}"; then
-			cd "${WORKDIR}/sapis-build/$sapi" || \
-				die "Failed to change dir to ${WORKDIR}/sapis-build/$1"
-			emake
-		fi
-	done
-}
-
-src_install() {
-	# see bug #324739 for what happens when we don't have that
-	addpredict /usr/share/snmp/mibs/.index #nowarn
-
-	# grab the first SAPI that got built and install common files from there
-	local first_sapi="", sapi=""
-	for sapi in $SAPIS ; do
-		if use $sapi ; then
-			first_sapi=$sapi
-			break
-		fi
-	done
-
-	# Makefile forgets to create this before trying to write to it...
-	dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
-
-	# Install php environment (without any sapis)
-	cd "${WORKDIR}/sapis-build/$first_sapi" || die
-	emake INSTALL_ROOT="${D}" \
-		install-build install-headers install-programs
-
-	local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
-
-	# Create the directory where we'll put version-specific php scripts
-	keepdir "/usr/share/php${PHP_MV}"
-
-	local file=""
-	local sapi_list=""
-
-	for sapi in ${SAPIS}; do
-		if use "${sapi}" ; then
-			einfo "Installing SAPI: ${sapi}"
-			cd "${WORKDIR}/sapis-build/${sapi}" || die
-
-			if [[ "${sapi}" == "apache2" ]] ; then
-				# We're specifically not using emake install-sapi as libtool
-				# may cause unnecessary relink failures (see bug #351266)
-				insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
-				newins ".libs/libphp$(get_libname)" \
-					   "libphp${PHP_MV}$(get_libname)"
-				keepdir "/usr/$(get_libdir)/apache2/modules"
-			else
-				# needed each time, php_install_ini would reset it
-				local dest="${PHP_DESTDIR#${EPREFIX}}"
-				into "${dest}"
-				case "$sapi" in
-					cli)
-						source="sapi/cli/php"
-						# Install the "phar" archive utility.
-						if use phar ; then
-							emake INSTALL_ROOT="${D}" install-pharcmd
-							dosym "..${dest#/usr}/bin/phar" "/usr/bin/phar${SLOT}"
-						fi
-						;;
-					cgi)
-						source="sapi/cgi/php-cgi"
-						;;
-					fpm)
-						source="sapi/fpm/php-fpm"
-						;;
-					embed)
-						source="libs/libphp$(get_libname)"
-						;;
-					phpdbg)
-						source="sapi/phpdbg/phpdbg"
-						;;
-					*)
-						die "unhandled sapi in src_install"
-						;;
-				esac
-
-				if [[ "${source}" == *"$(get_libname)" ]]; then
-					dolib.so "${source}"
-				else
-					dobin "${source}"
-					local name="$(basename ${source})"
-					dosym "..${dest#/usr}/bin/${name}" "/usr/bin/${name}${SLOT}"
-				fi
-			fi
-
-			php_install_ini "${sapi}"
-
-			# construct correct SAPI string for php-config
-			# thanks to ferringb for the bash voodoo
-			if [[ "${sapi}" == "apache2" ]]; then
-				sapi_list="${sapi_list:+${sapi_list} }apache2handler"
-			else
-				sapi_list="${sapi_list:+${sapi_list} }${sapi}"
-			fi
-		fi
-	done
-
-	# Installing opcache module
-	if use opcache ; then
-		into "${PHP_DESTDIR#${EPREFIX}}"
-		dolib.so "modules/opcache$(get_libname)"
-	fi
-
-	# Install env.d files
-	newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}"
-	sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
-	sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
-
-	# set php-config variable correctly (bug #278439)
-	sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
-		"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die
-
-	if use fpm ; then
-		if use systemd; then
-			systemd_newunit "${FILESDIR}/php-fpm_at.service" \
-							"php-fpm@${SLOT}.service"
-		else
-			systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \
-							"php-fpm@${SLOT}.service"
-		fi
-	fi
-}
-
-src_test() {
-	echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
-	PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
-	if [[ ! -x "${PHP_BIN}" ]] ; then
-		ewarn "Test phase requires USE=cli, skipping"
-		return
-	else
-		export TEST_PHP_EXECUTABLE="${PHP_BIN}"
-	fi
-
-	if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then
-		export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi"
-	fi
-
-	if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then
-		export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg"
-	fi
-
-	SKIP_ONLINE_TESTS=1 REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n  -d \
-					  "session.save_path=${T}" \
-					  "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \
-					  "session.save_path=${T}"
-
-	for name in ${EXPECTED_TEST_FAILURES}; do
-		mv "${name}.out" "${name}.out.orig" 2>/dev/null || die
-	done
-
-	local failed="$(find -name '*.out')"
-	if [[ ${failed} != "" ]] ; then
-		ewarn "The following test cases failed unexpectedly:"
-		for name in ${failed}; do
-			ewarn "  ${name/.out/}"
-		done
-	else
-		einfo "No unexpected test failures, all fine"
-	fi
-
-	if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
-		local passed=""
-		for name in ${EXPECTED_TEST_FAILURES}; do
-			[[ -f "${name}.diff" ]] && continue
-			passed="${passed} ${name}"
-		done
-		if [[ ${passed} != "" ]] ; then
-			einfo "The following test cases passed unexpectedly:"
-			for name in ${passed}; do
-				ewarn "  ${passed}"
-			done
-		else
-			einfo "None of the known-to-fail tests passed, all fine"
-		fi
-	fi
-}
-
-pkg_postinst() {
-	# Output some general info to the user
-	if use apache2 ; then
-		elog
-		elog "To enable PHP in apache, you will need to add \"-D PHP\" to"
-		elog "your apache2 command. OpenRC users can append that string to"
-		elog "APACHE2_OPTS in /etc/conf.d/apache2."
-		elog
-		elog "The apache module configuration file 70_mod_php.conf is"
-		elog "provided (and maintained) by eselect-php."
-		elog
-	fi
-
-	# Create the symlinks for php
-	local m
-	for m in ${SAPIS}; do
-		[[ ${m} == 'embed' ]] && continue;
-		if use $m ; then
-			local ci=$(eselect php show $m)
-			if [[ -z $ci ]]; then
-				eselect php set $m php${SLOT} || die
-				einfo "Switched ${m} to use php:${SLOT}"
-				einfo
-			elif [[ $ci != "php${SLOT}" ]] ; then
-				elog "To switch $m to use php:${SLOT}, run"
-				elog "    eselect php set $m php${SLOT}"
-				elog
-			fi
-		fi
-	done
-
-	# Remove dead symlinks for SAPIs that were just disabled. For
-	# example, if the user has the cgi SAPI enabled, then he has an
-	# eselect-php symlink for it. If he later reinstalls PHP with
-	# USE="-cgi", that symlink will break. This call to eselect is
-	# supposed to remove that dead link per bug 572436.
-	eselect php cleanup || die
-
-	if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then
-	   elog "To build extensions for this version of PHP, you will need to"
-	   elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
-	   elog
-	fi
-
-	# Warn about the removal of PHP_INI_VERSION if the user has it set.
-	if [[ -n "${PHP_INI_VERSION}" ]]; then
-		ewarn 'The PHP_INI_VERSION variable has been phased out. You may'
-		ewarn 'remove it from your configuration at your convenience. See'
-		ewarn
-		ewarn '  https://bugs.gentoo.org/611214'
-		ewarn
-		ewarn 'for more information.'
-	fi
-
-	elog "For details on how version slotting works, please see"
-	elog "the wiki:"
-	elog
-	elog "  https://wiki.gentoo.org/wiki/PHP"
-	elog
-}
-
-pkg_postrm() {
-	# This serves two purposes. First, if we have just removed the last
-	# installed version of PHP, then this will remove any dead symlinks
-	# belonging to eselect-php. Second, if a user upgrades slots from
-	# (say) 5.6 to 7.0 and depcleans the old slot, then this will update
-	# his existing symlinks to point to the new 7.0 installation. The
-	# latter is bug 432962.
-	#
-	# Note: the eselect-php package may not be installed at this point,
-	# so we can't die() if this command fails.
-	eselect php cleanup
-}
diff --git a/dev-lang/php/php-8.1.28.ebuild b/dev-lang/php/php-8.1.28.ebuild
new file mode 100644
index 000000000000..64589a10d000
--- /dev/null
+++ b/dev-lang/php/php-8.1.28.ebuild
@@ -0,0 +1,782 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+WANT_AUTOMAKE="none"
+
+inherit flag-o-matic multilib systemd autotools
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://www.php.net/"
+SRC_URI="https://www.php.net/distributions/${P}.tar.xz"
+
+LICENSE="PHP-3.01
+	BSD
+	Zend-2.0
+	bcmath? ( LGPL-2.1+ )
+	fpm? ( BSD-2 )
+	gd? ( gd )
+	unicode? ( BSD-2 LGPL-2.1 )"
+
+SLOT="$(ver_cut 1-2)"
+KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+# We can build the following SAPIs in the given order
+SAPIS="embed cli cgi fpm apache2 phpdbg"
+
+# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
+IUSE="${IUSE}
+	${SAPIS/cli/+cli}
+	threads"
+
+IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar
+	cdb cjk coverage +ctype curl debug
+	enchant exif ffi +fileinfo +filter firebird
+	+flatfile ftp gd gdbm gmp +iconv imap inifile
+	intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb
+	mhash mssql mysql mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline selinux +session session-mm sharedmem
+	+simplexml snmp soap sockets sodium spell sqlite ssl
+	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode webp
+	+xml xmlreader xmlwriter xpm xslt zip zlib"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+# The Oracle instant client provides its own incompatible ldap library.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed phpdbg )
+	avif? ( gd zlib )
+	cli? ( ^^ ( readline libedit ) )
+	!cli? ( ?? ( readline libedit ) )
+	truetype? ( gd zlib )
+	webp? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	xmlreader? ( xml )
+	xmlwriter? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	oci8-instant-client? ( !ldap )
+	qdbm? ( !gdbm )
+	session-mm? ( session !threads )
+	mysql? ( || ( mysqli pdo ) )
+	firebird? ( pdo )
+	mssql? ( pdo )
+"
+
+RESTRICT="!test? ( test )"
+
+# The supported (that is, autodetected) versions of BDB are listed in
+# the ./configure script. Other versions *work*, but we need to stick to
+# the ones that can be detected to avoid a repeat of bug #564824.
+COMMON_DEPEND="
+	>=app-eselect/eselect-php-0.9.7[apache2?,fpm?]
+	>=dev-libs/libpcre2-10.30[jit?,unicode]
+	virtual/libcrypt:=
+	fpm? ( acl? ( sys-apps/acl ) apparmor? ( sys-libs/libapparmor ) )
+	apache2? ( www-servers/apache[apache2_modules_unixd(+),threads=] )
+	argon2? ( app-crypt/argon2:= )
+	avif? ( media-libs/libavif:= )
+	berkdb? ( || (	sys-libs/db:5.3 sys-libs/db:4.8 ) )
+	bzip2? ( app-arch/bzip2:0= )
+	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+	coverage? ( dev-util/lcov )
+	curl? ( >=net-misc/curl-7.29.0 )
+	enchant? ( app-text/enchant:2 )
+	ffi? ( >=dev-libs/libffi-3.0.11:= )
+	firebird? ( dev-db/firebird )
+	gd? ( media-libs/libjpeg-turbo:0= media-libs/libpng:0= )
+	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
+	gmp? ( dev-libs/gmp:0= )
+	iconv? ( virtual/libiconv )
+	imap? ( net-libs/c-client[kerberos=,ssl=] )
+	intl? ( dev-libs/icu:= )
+	kerberos? ( virtual/krb5 )
+	ldap? ( >=net-nds/openldap-1.2.11:= )
+	ldap-sasl? ( dev-libs/cyrus-sasl )
+	libedit? ( dev-libs/libedit )
+	lmdb? ( dev-db/lmdb:= )
+	mssql? ( dev-db/freetds[mssql] )
+	nls? ( sys-devel/gettext )
+	oci8-instant-client? ( dev-db/oracle-instantclient[sdk] )
+	odbc? ( iodbc? ( dev-db/libiodbc ) !iodbc? ( >=dev-db/unixODBC-1.8.13 ) )
+	postgres? ( >=dev-db/postgresql-9.1:* )
+	qdbm? ( dev-db/qdbm )
+	readline? ( sys-libs/readline:0= )
+	session-mm? ( dev-libs/mm )
+	snmp? ( >=net-analyzer/net-snmp-5.2 )
+	sodium? ( dev-libs/libsodium:=[-minimal(-)] )
+	spell? ( >=app-text/aspell-0.50 )
+	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+	ssl? ( >=dev-libs/openssl-1.0.2:0= )
+	tidy? ( app-text/htmltidy )
+	tokyocabinet? ( dev-db/tokyocabinet )
+	truetype? ( =media-libs/freetype-2* )
+	unicode? ( dev-libs/oniguruma:= )
+	webp? ( media-libs/libwebp:0= )
+	xml? ( >=dev-libs/libxml2-2.9.0 )
+	xpm? ( x11-libs/libXpm )
+	xslt? ( dev-libs/libxslt )
+	zip? ( >=dev-libs/libzip-1.2.0:= )
+	zlib? ( >=sys-libs/zlib-1.2.0.4:0= )
+"
+
+IDEPEND=">=app-eselect/eselect-php-0.9.7[apache2?,fpm?]"
+
+RDEPEND="${COMMON_DEPEND}
+	virtual/mta
+	fpm? (
+		selinux? ( sec-policy/selinux-phpfpm )
+		systemd? ( sys-apps/systemd ) )"
+
+# Bison isn't actually needed when building from a release tarball
+# However, the configure script will warn if it's absent or if you
+# have an incompatible version installed. See bug 593278.
+DEPEND="${COMMON_DEPEND}
+	app-arch/xz-utils
+	>=sys-devel/bison-3.0.1"
+
+BDEPEND="virtual/pkgconfig"
+
+PHP_MV="$(ver_cut 1)"
+
+PATCHES=(
+	"${FILESDIR}/php-iodbc-header-location.patch"
+	"${FILESDIR}/php-capstone-optional.patch"
+	"${FILESDIR}/php-8.1.27-gcc14-libxml.patch"
+	"${FILESDIR}/php-8.1.27-implicit-decls.patch"
+	"${FILESDIR}/fix-musl-llvm.patch"
+)
+
+# ARM/Windows functions that are expected to be undefined.
+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
+
+	# Remove false positive test failures
+	# stream_isatty fails due to portage redirects
+	# curl tests here fail for network sandbox issues
+	# session tests here fail because we set the session directory to $T
+	rm tests/output/stream_isatty_err.phpt \
+	   tests/output/stream_isatty_out-err.phpt \
+	   tests/output/stream_isatty_out.phpt \
+	   ext/curl/tests/bug76675.phpt \
+	   ext/curl/tests/bug77535.phpt \
+	   ext/curl/tests/curl_error_basic.phpt \
+	   ext/session/tests/bug74514.phpt \
+	   ext/session/tests/bug74936.phpt \
+	   ext/fileinfo/tests/bug78987.phpt || die
+}
+
+src_configure() {
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+	# https://bugs.gentoo.org/866683, https://bugs.gentoo.org/913527
+	filter-lto
+
+	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
+	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
+	local our_conf=(
+		--prefix="${PHP_DESTDIR}"
+		--mandir="${PHP_DESTDIR}/man"
+		--infodir="${PHP_DESTDIR}/info"
+		--libdir="${PHP_DESTDIR}/lib"
+		--with-libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--without-pear
+		--without-valgrind
+		$(use_enable threads zts)
+	)
+
+	# 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 coverage gcov)
+		$(use_enable ctype)
+		$(use_with curl)
+		$(use_enable xml dom)
+		$(use_with enchant)
+		$(use_enable exif)
+		$(use_with ffi)
+		$(use_enable fileinfo)
+		$(use_enable filter)
+		$(use_enable ftp)
+		$(use_with nls gettext "${EPREFIX}/usr")
+		$(use_with gmp gmp "${EPREFIX}/usr")
+		$(use_with mhash mhash "${EPREFIX}/usr")
+		$(use_with iconv iconv \
+			$(use elibc_glibc || use elibc_musl || echo "${EPREFIX}/usr"))
+		$(use_enable intl)
+		$(use_enable ipv6)
+		$(use_with kerberos)
+		$(use_with xml libxml)
+		$(use_enable unicode mbstring)
+		$(use_with ssl openssl)
+		$(use_enable pcntl)
+		$(use_enable phar)
+		$(use_enable pdo)
+		$(use_enable opcache)
+		$(use_with postgres pgsql "${EPREFIX}/usr")
+		$(use_enable posix)
+		$(use_with spell pspell "${EPREFIX}/usr")
+		$(use_enable simplexml)
+		$(use_enable sharedmem shmop)
+		$(use_with snmp snmp "${EPREFIX}/usr")
+		$(use_enable soap)
+		$(use_enable sockets)
+		$(use_with sodium)
+		$(use_with sqlite sqlite3)
+		$(use_enable sysvipc sysvmsg)
+		$(use_enable sysvipc sysvsem)
+		$(use_enable sysvipc sysvshm)
+		$(use_with tidy tidy "${EPREFIX}/usr")
+		$(use_enable tokenizer)
+		$(use_enable xml)
+		$(use_enable xmlreader)
+		$(use_enable xmlwriter)
+		$(use_with xslt xsl)
+		$(use_with zip)
+		$(use_with zlib zlib "${EPREFIX}/usr")
+		$(use_enable debug)
+	)
+
+	# DBA support
+	if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+		|| use qdbm || use lmdb || use tokyocabinet ; then
+		our_conf+=( "--enable-dba" )
+	fi
+
+	# DBA drivers support
+	our_conf+=(
+		$(use_with cdb)
+		$(use_with berkdb db4 "${EPREFIX}/usr")
+		$(use_enable flatfile)
+		$(use_with gdbm gdbm "${EPREFIX}/usr")
+		$(use_enable inifile)
+		$(use_with qdbm qdbm "${EPREFIX}/usr")
+		$(use_with tokyocabinet tcadb "${EPREFIX}/usr")
+		$(use_with lmdb lmdb "${EPREFIX}/usr")
+	)
+
+	# Support for the GD graphics library
+	our_conf+=(
+		$(use_with truetype freetype)
+		$(use_enable cjk gd-jis-conv)
+		$(use_with gd jpeg)
+		$(use_with xpm)
+		$(use_with webp)
+	)
+	# enable gd last, so configure can pick up the previous settings
+	our_conf+=( $(use_enable gd) )
+
+	# IMAP support
+	if use imap ; then
+		our_conf+=(
+			$(use_with imap imap "${EPREFIX}/usr")
+			$(use_with ssl imap-ssl "${EPREFIX}/usr")
+		)
+	fi
+
+	# LDAP support
+	if use ldap ; then
+		our_conf+=(
+			$(use_with ldap ldap "${EPREFIX}/usr")
+			$(use_with ldap-sasl)
+		)
+	fi
+
+	# MySQL support
+	our_conf+=( $(use_with mysqli mysqli "mysqlnd") )
+
+	local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock"
+	if use mysql || use mysqli ; then
+		our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") )
+	fi
+
+	# ODBC support
+	if use odbc && use iodbc ; then
+		our_conf+=(
+			--without-unixODBC
+			--with-iodbc
+			$(use_with pdo pdo-odbc "iODBC,${EPREFIX}/usr")
+		)
+	elif use odbc ; then
+		our_conf+=(
+			--with-unixODBC="${EPREFIX}/usr"
+			--without-iodbc
+			$(use_with pdo pdo-odbc "unixODBC,${EPREFIX}/usr")
+		)
+	else
+		our_conf+=(
+			--without-unixODBC
+			--without-iodbc
+			--without-pdo-odbc
+		)
+	fi
+
+	# Oracle support
+	our_conf+=( $(use_with oci8-instant-client oci8) )
+
+	# PDO support
+	if use pdo ; then
+		our_conf+=(
+			$(use_with mssql pdo-dblib "${EPREFIX}/usr")
+			$(use_with mysql pdo-mysql "mysqlnd")
+			$(use_with postgres pdo-pgsql)
+			$(use_with sqlite pdo-sqlite)
+			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
+			$(use_with oci8-instant-client pdo-oci)
+		)
+	fi
+
+	# readline/libedit support
+	our_conf+=(
+		$(use_with readline readline "${EPREFIX}/usr")
+		$(use_with libedit)
+	)
+
+	# Session support
+	if use session ; then
+		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
+	else
+		our_conf+=( $(use_enable session) )
+	fi
+
+	# Use pic for shared modules such as apache2's mod_php
+	our_conf+=( --with-pic )
+
+	# we use the system copy of pcre
+	# --with-external-pcre affects ext/pcre
+	our_conf+=(
+		--with-external-pcre
+		$(use_with jit pcre-jit)
+	)
+
+	# Catch CFLAGS problems
+	# Fixes bug #14067.
+	# Changed order to run it in reverse for bug #32022 and #12021.
+	replace-cpu-flags "k6*" "i586"
+
+	# Cache the ./configure test results between SAPIs.
+	our_conf+=( --cache-file="${T}/config.cache" )
+
+	# Support user-passed configuration parameters
+	our_conf+=( ${EXTRA_ECONF:-} )
+
+	# Support the Apache2 extras, they must be set globally for all
+	# SAPIs to work correctly, especially for external PHP extensions
+
+	local one_sapi
+	local sapi
+	mkdir -p "${WORKDIR}/sapis-build" || die
+	for one_sapi in $SAPIS ; do
+		use "${one_sapi}" || continue
+		php_set_ini_dir "${one_sapi}"
+
+		# The BUILD_DIR variable is used to determine where to output
+		# the files that autotools creates. This was all originally
+		# based on the autotools-utils eclass.
+		BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}"
+		cp -a "${S}" "${BUILD_DIR}" || die
+		cd "${BUILD_DIR}" || die
+
+		local sapi_conf=(
+			--with-config-file-path="${PHP_INI_DIR}"
+			--with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}"
+		)
+
+		for sapi in $SAPIS ; do
+			case "$sapi" in
+				cli|cgi|embed|fpm|phpdbg)
+					if [[ "${one_sapi}" == "${sapi}" ]] ; then
+						sapi_conf+=( "--enable-${sapi}" )
+						if [[ "fpm" == "${sapi}" ]] ; then
+							sapi_conf+=(
+								$(use_with acl fpm-acl)
+								$(use_with systemd fpm-systemd)
+							)
+						fi
+					else
+						sapi_conf+=( "--disable-${sapi}" )
+					fi
+					;;
+
+				apache2)
+					if [[ "${one_sapi}" == "${sapi}" ]] ; then
+						sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" )
+					else
+						sapi_conf+=( --without-apxs2 )
+					fi
+					;;
+			esac
+		done
+
+		# Construct the $myeconfargs array by concatenating $our_conf
+		# (the common args) and $sapi_conf (the SAPI-specific args).
+		local myeconfargs=( "${our_conf[@]}" )
+		myeconfargs+=( "${sapi_conf[@]}" )
+
+		pushd "${BUILD_DIR}" > /dev/null || die
+		econf "${myeconfargs[@]}"
+		popd > /dev/null || die
+	done
+}
+
+src_compile() {
+	# snmp seems to run during src_compile, too (bug #324739)
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	local sapi
+	for sapi in ${SAPIS} ; do
+		if use "${sapi}"; then
+			cd "${WORKDIR}/sapis-build/$sapi" || \
+				die "Failed to change dir to ${WORKDIR}/sapis-build/$1"
+			emake
+		fi
+	done
+}
+
+src_install() {
+	# see bug #324739 for what happens when we don't have that
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+
+	# grab the first SAPI that got built and install common files from there
+	local first_sapi="", sapi=""
+	for sapi in $SAPIS ; do
+		if use $sapi ; then
+			first_sapi=$sapi
+			break
+		fi
+	done
+
+	# Makefile forgets to create this before trying to write to it...
+	dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
+
+	# Install php environment (without any sapis)
+	cd "${WORKDIR}/sapis-build/$first_sapi" || die
+	emake INSTALL_ROOT="${D}" \
+		install-build install-headers install-programs
+
+	local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
+
+	# Create the directory where we'll put version-specific php scripts
+	keepdir "/usr/share/php${PHP_MV}"
+
+	local file=""
+	local sapi_list=""
+
+	for sapi in ${SAPIS}; do
+		if use "${sapi}" ; then
+			einfo "Installing SAPI: ${sapi}"
+			cd "${WORKDIR}/sapis-build/${sapi}" || die
+
+			if [[ "${sapi}" == "apache2" ]] ; then
+				# We're specifically not using emake install-sapi as libtool
+				# may cause unnecessary relink failures (see bug #351266)
+				insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
+				newins ".libs/libphp$(get_libname)" \
+					   "libphp${PHP_MV}$(get_libname)"
+				keepdir "/usr/$(get_libdir)/apache2/modules"
+			else
+				# needed each time, php_install_ini would reset it
+				local dest="${PHP_DESTDIR#${EPREFIX}}"
+				into "${dest}"
+				case "$sapi" in
+					cli)
+						source="sapi/cli/php"
+						# Install the "phar" archive utility.
+						if use phar ; then
+							emake INSTALL_ROOT="${D}" install-pharcmd
+							dosym "..${dest#/usr}/bin/phar" "/usr/bin/phar${SLOT}"
+						fi
+						;;
+					cgi)
+						source="sapi/cgi/php-cgi"
+						;;
+					fpm)
+						source="sapi/fpm/php-fpm"
+						;;
+					embed)
+						source="libs/libphp$(get_libname)"
+						;;
+					phpdbg)
+						source="sapi/phpdbg/phpdbg"
+						;;
+					*)
+						die "unhandled sapi in src_install"
+						;;
+				esac
+
+				if [[ "${source}" == *"$(get_libname)" ]]; then
+					dolib.so "${source}"
+				else
+					dobin "${source}"
+					local name="$(basename ${source})"
+					dosym "..${dest#/usr}/bin/${name}" "/usr/bin/${name}${SLOT}"
+				fi
+			fi
+
+			php_install_ini "${sapi}"
+
+			# construct correct SAPI string for php-config
+			# thanks to ferringb for the bash voodoo
+			if [[ "${sapi}" == "apache2" ]]; then
+				sapi_list="${sapi_list:+${sapi_list} }apache2handler"
+			else
+				sapi_list="${sapi_list:+${sapi_list} }${sapi}"
+			fi
+		fi
+	done
+
+	# Installing opcache module
+	if use opcache ; then
+		into "${PHP_DESTDIR#${EPREFIX}}"
+		dolib.so "modules/opcache$(get_libname)"
+	fi
+
+	# Install env.d files
+	newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}"
+	sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
+	sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
+
+	# set php-config variable correctly (bug #278439)
+	sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
+		"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die
+
+	if use fpm ; then
+		if use systemd; then
+			systemd_newunit "${FILESDIR}/php-fpm_at.service" \
+							"php-fpm@${SLOT}.service"
+		else
+			systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \
+							"php-fpm@${SLOT}.service"
+		fi
+	fi
+}
+
+src_test() {
+	echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
+	PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
+	if [[ ! -x "${PHP_BIN}" ]] ; then
+		ewarn "Test phase requires USE=cli, skipping"
+		return
+	else
+		export TEST_PHP_EXECUTABLE="${PHP_BIN}"
+	fi
+
+	if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then
+		export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi"
+	fi
+
+	if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then
+		export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg"
+	fi
+
+	SKIP_ONLINE_TESTS=1 REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n  -d \
+					  "session.save_path=${T}" \
+					  "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \
+					  "session.save_path=${T}"
+
+	for name in ${EXPECTED_TEST_FAILURES}; do
+		mv "${name}.out" "${name}.out.orig" 2>/dev/null || die
+	done
+
+	local failed="$(find -name '*.out')"
+	if [[ ${failed} != "" ]] ; then
+		ewarn "The following test cases failed unexpectedly:"
+		for name in ${failed}; do
+			ewarn "  ${name/.out/}"
+		done
+	else
+		einfo "No unexpected test failures, all fine"
+	fi
+
+	if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
+		local passed=""
+		for name in ${EXPECTED_TEST_FAILURES}; do
+			[[ -f "${name}.diff" ]] && continue
+			passed="${passed} ${name}"
+		done
+		if [[ ${passed} != "" ]] ; then
+			einfo "The following test cases passed unexpectedly:"
+			for name in ${passed}; do
+				ewarn "  ${passed}"
+			done
+		else
+			einfo "None of the known-to-fail tests passed, all fine"
+		fi
+	fi
+}
+
+pkg_postinst() {
+	# Output some general info to the user
+	if use apache2 ; then
+		elog
+		elog "To enable PHP in apache, you will need to add \"-D PHP\" to"
+		elog "your apache2 command. OpenRC users can append that string to"
+		elog "APACHE2_OPTS in /etc/conf.d/apache2."
+		elog
+		elog "The apache module configuration file 70_mod_php.conf is"
+		elog "provided (and maintained) by eselect-php."
+		elog
+	fi
+
+	# Create the symlinks for php
+	local m
+	for m in ${SAPIS}; do
+		[[ ${m} == 'embed' ]] && continue;
+		if use $m ; then
+			local ci=$(eselect php show $m)
+			if [[ -z $ci ]]; then
+				eselect php set $m php${SLOT} || die
+				einfo "Switched ${m} to use php:${SLOT}"
+				einfo
+			elif [[ $ci != "php${SLOT}" ]] ; then
+				elog "To switch $m to use php:${SLOT}, run"
+				elog "    eselect php set $m php${SLOT}"
+				elog
+			fi
+		fi
+	done
+
+	# Remove dead symlinks for SAPIs that were just disabled. For
+	# example, if the user has the cgi SAPI enabled, then he has an
+	# eselect-php symlink for it. If he later reinstalls PHP with
+	# USE="-cgi", that symlink will break. This call to eselect is
+	# supposed to remove that dead link per bug 572436.
+	eselect php cleanup || die
+
+	if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then
+	   elog "To build extensions for this version of PHP, you will need to"
+	   elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
+	   elog
+	fi
+
+	# Warn about the removal of PHP_INI_VERSION if the user has it set.
+	if [[ -n "${PHP_INI_VERSION}" ]]; then
+		ewarn 'The PHP_INI_VERSION variable has been phased out. You may'
+		ewarn 'remove it from your configuration at your convenience. See'
+		ewarn
+		ewarn '  https://bugs.gentoo.org/611214'
+		ewarn
+		ewarn 'for more information.'
+	fi
+
+	elog "For details on how version slotting works, please see"
+	elog "the wiki:"
+	elog
+	elog "  https://wiki.gentoo.org/wiki/PHP"
+	elog
+}
+
+pkg_postrm() {
+	# This serves two purposes. First, if we have just removed the last
+	# installed version of PHP, then this will remove any dead symlinks
+	# belonging to eselect-php. Second, if a user upgrades slots from
+	# (say) 5.6 to 7.0 and depcleans the old slot, then this will update
+	# his existing symlinks to point to the new 7.0 installation. The
+	# latter is bug 432962.
+	#
+	# Note: the eselect-php package may not be installed at this point,
+	# so we can't die() if this command fails.
+	eselect php cleanup
+}
diff --git a/dev-lang/php/php-8.2.17.ebuild b/dev-lang/php/php-8.2.17.ebuild
deleted file mode 100644
index abe657f95e1d..000000000000
--- a/dev-lang/php/php-8.2.17.ebuild
+++ /dev/null
@@ -1,860 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-WANT_AUTOMAKE="none"
-
-inherit flag-o-matic multilib systemd autotools
-
-DESCRIPTION="The PHP language runtime engine"
-HOMEPAGE="https://www.php.net/"
-SRC_URI="https://www.php.net/distributions/${P}.tar.xz"
-
-LICENSE="PHP-3.01
-	BSD
-	Zend-2.0
-	bcmath? ( LGPL-2.1+ )
-	fpm? ( BSD-2 )
-	gd? ( gd )
-	unicode? ( BSD-2 LGPL-2.1 )"
-
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
-
-# We can build the following SAPIs in the given order
-SAPIS="embed cli cgi fpm apache2 phpdbg"
-
-# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
-IUSE="${IUSE}
-	${SAPIS/cli/+cli}
-	threads"
-
-IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar
-	cdb cjk +ctype curl debug
-	enchant exif ffi +fileinfo +filter firebird
-	+flatfile ftp gd gdbm gmp +iconv imap inifile
-	intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb
-	mhash mssql mysql mysqli nls
-	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
-	readline selinux +session session-mm sharedmem
-	+simplexml snmp soap sockets sodium spell sqlite ssl
-	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode
-	valgrind webp +xml xmlreader xmlwriter xpm xslt zip zlib"
-
-# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
-# The Oracle instant client provides its own incompatible ldap library.
-REQUIRED_USE="
-	|| ( cli cgi fpm apache2 embed phpdbg )
-	avif? ( gd zlib )
-	cli? ( ^^ ( readline libedit ) )
-	!cli? ( ?? ( readline libedit ) )
-	truetype? ( gd zlib )
-	webp? ( gd zlib )
-	cjk? ( gd zlib )
-	exif? ( gd zlib )
-	xpm? ( gd zlib )
-	gd? ( zlib )
-	simplexml? ( xml )
-	soap? ( xml )
-	xmlreader? ( xml )
-	xmlwriter? ( xml )
-	xslt? ( xml )
-	ldap-sasl? ( ldap )
-	oci8-instant-client? ( !ldap )
-	qdbm? ( !gdbm )
-	session-mm? ( session !threads )
-	mysql? ( || ( mysqli pdo ) )
-	firebird? ( pdo )
-	mssql? ( pdo )
-	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-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.1.27-implicit-decls.patch"
-	"${FILESDIR}/fix-musl-llvm.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
-}
-
-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.2.18.ebuild b/dev-lang/php/php-8.2.18.ebuild
new file mode 100644
index 000000000000..2e304932b5ed
--- /dev/null
+++ b/dev-lang/php/php-8.2.18.ebuild
@@ -0,0 +1,859 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+WANT_AUTOMAKE="none"
+
+inherit flag-o-matic multilib systemd autotools
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://www.php.net/"
+SRC_URI="https://www.php.net/distributions/${P}.tar.xz"
+
+LICENSE="PHP-3.01
+	BSD
+	Zend-2.0
+	bcmath? ( LGPL-2.1+ )
+	fpm? ( BSD-2 )
+	gd? ( gd )
+	unicode? ( BSD-2 LGPL-2.1 )"
+
+SLOT="$(ver_cut 1-2)"
+KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+# We can build the following SAPIs in the given order
+SAPIS="embed cli cgi fpm apache2 phpdbg"
+
+# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
+IUSE="${IUSE}
+	${SAPIS/cli/+cli}
+	threads"
+
+IUSE="${IUSE} acl apparmor argon2 avif bcmath berkdb bzip2 calendar
+	cdb cjk +ctype curl debug
+	enchant exif ffi +fileinfo +filter firebird
+	+flatfile ftp gd gdbm gmp +iconv imap inifile
+	intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb
+	mhash mssql mysql mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline selinux +session session-mm sharedmem
+	+simplexml snmp soap sockets sodium spell sqlite ssl
+	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode
+	valgrind webp +xml xmlreader xmlwriter xpm xslt zip zlib"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+# The Oracle instant client provides its own incompatible ldap library.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed phpdbg )
+	avif? ( gd zlib )
+	cli? ( ^^ ( readline libedit ) )
+	!cli? ( ?? ( readline libedit ) )
+	truetype? ( gd zlib )
+	webp? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	xmlreader? ( xml )
+	xmlwriter? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	oci8-instant-client? ( !ldap )
+	qdbm? ( !gdbm )
+	session-mm? ( session !threads )
+	mysql? ( || ( mysqli pdo ) )
+	firebird? ( pdo )
+	mssql? ( pdo )
+	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-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}/fix-musl-llvm.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
+}
+
+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.4.ebuild b/dev-lang/php/php-8.3.4.ebuild
deleted file mode 100644
index 7242d6432c71..000000000000
--- a/dev-lang/php/php-8.3.4.ebuild
+++ /dev/null
@@ -1,784 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-WANT_AUTOMAKE="none"
-
-inherit flag-o-matic multilib systemd autotools
-
-DESCRIPTION="The PHP language runtime engine"
-HOMEPAGE="https://www.php.net/"
-SRC_URI="https://www.php.net/distributions/${P}.tar.xz"
-
-LICENSE="PHP-3.01
-	BSD
-	Zend-2.0
-	bcmath? ( LGPL-2.1+ )
-	fpm? ( BSD-2 )
-	gd? ( gd )
-	unicode? ( BSD-2 LGPL-2.1 )"
-
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
-
-# 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 cjk +ctype curl debug
-	enchant exif ffi +fileinfo +filter firebird
-	+flatfile ftp gd gdbm gmp +iconv imap inifile
-	intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb
-	mhash mssql mysql mysqli nls
-	odbc +opcache pcntl pdo +phar +posix postgres qdbm
-	readline selinux +session session-mm sharedmem
-	+simplexml snmp soap sockets sodium spell sqlite ssl
-	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode
-	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 )
-	avif? ( gd zlib )
-	cli? ( ^^ ( readline libedit ) )
-	!cli? ( ?? ( readline libedit ) )
-	truetype? ( gd zlib )
-	webp? ( gd zlib )
-	cjk? ( gd zlib )
-	exif? ( gd zlib )
-	xpm? ( gd zlib )
-	gd? ( zlib )
-	simplexml? ( xml )
-	soap? ( xml )
-	xmlreader? ( xml )
-	xmlwriter? ( xml )
-	xslt? ( xml )
-	ldap-sasl? ( ldap )
-	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:= )
-	avif? ( media-libs/libavif:= )
-	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/libjpeg-turbo:0= media-libs/libpng:0= )
-	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 )
-	webp? ( media-libs/libwebp:0= )
-	xml? ( dev-libs/libxml2 )
-	xpm? ( x11-libs/libXpm )
-	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"
-
-PHP_MV="$(ver_cut 1)"
-
-PATCHES=(
-	"${FILESDIR}/php-iodbc-header-location.patch"
-	"${FILESDIR}/fix-musl-llvm.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
-
-	# 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'
-
-	# Emulate buildconf to support cross-compilation
-	rm -fr aclocal.m4 autom4te.cache config.cache \
-		configure main/php_config.h.in || die
-	eautoconf --force
-	eautoheader
-
-	# 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
-
-	# https://github.com/php/php-src/issues/12801
-	rm ext/pcre/tests/gh11374.phpt || die
-
-	# A new test failure appearing in 8.3.2, mentioned on the PR
-	# where it was likely introduced:
-	#
-	#   https://github.com/php/php-src/pull/13017
-	#
-	rm ext/dom/tests/DOMNode_isEqualNode.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
-}
-
-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_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_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
-
-	# 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 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.6.ebuild b/dev-lang/php/php-8.3.6.ebuild
new file mode 100644
index 000000000000..7242d6432c71
--- /dev/null
+++ b/dev-lang/php/php-8.3.6.ebuild
@@ -0,0 +1,784 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+WANT_AUTOMAKE="none"
+
+inherit flag-o-matic multilib systemd autotools
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://www.php.net/"
+SRC_URI="https://www.php.net/distributions/${P}.tar.xz"
+
+LICENSE="PHP-3.01
+	BSD
+	Zend-2.0
+	bcmath? ( LGPL-2.1+ )
+	fpm? ( BSD-2 )
+	gd? ( gd )
+	unicode? ( BSD-2 LGPL-2.1 )"
+
+SLOT="$(ver_cut 1-2)"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+# 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 cjk +ctype curl debug
+	enchant exif ffi +fileinfo +filter firebird
+	+flatfile ftp gd gdbm gmp +iconv imap inifile
+	intl iodbc ipv6 +jit kerberos ldap ldap-sasl libedit lmdb
+	mhash mssql mysql mysqli nls
+	odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline selinux +session session-mm sharedmem
+	+simplexml snmp soap sockets sodium spell sqlite ssl
+	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode
+	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 )
+	avif? ( gd zlib )
+	cli? ( ^^ ( readline libedit ) )
+	!cli? ( ?? ( readline libedit ) )
+	truetype? ( gd zlib )
+	webp? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	xmlreader? ( xml )
+	xmlwriter? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	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:= )
+	avif? ( media-libs/libavif:= )
+	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/libjpeg-turbo:0= media-libs/libpng:0= )
+	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 )
+	webp? ( media-libs/libwebp:0= )
+	xml? ( dev-libs/libxml2 )
+	xpm? ( x11-libs/libXpm )
+	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"
+
+PHP_MV="$(ver_cut 1)"
+
+PATCHES=(
+	"${FILESDIR}/php-iodbc-header-location.patch"
+	"${FILESDIR}/fix-musl-llvm.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
+
+	# 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'
+
+	# Emulate buildconf to support cross-compilation
+	rm -fr aclocal.m4 autom4te.cache config.cache \
+		configure main/php_config.h.in || die
+	eautoconf --force
+	eautoheader
+
+	# 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
+
+	# https://github.com/php/php-src/issues/12801
+	rm ext/pcre/tests/gh11374.phpt || die
+
+	# A new test failure appearing in 8.3.2, mentioned on the PR
+	# where it was likely introduced:
+	#
+	#   https://github.com/php/php-src/pull/13017
+	#
+	rm ext/dom/tests/DOMNode_isEqualNode.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
+}
+
+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_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_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
+
+	# 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 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/python-exec/Manifest b/dev-lang/python-exec/Manifest
index b8145d1a3e3b..c4e62806f9c7 100644
--- a/dev-lang/python-exec/Manifest
+++ b/dev-lang/python-exec/Manifest
@@ -1,3 +1,3 @@
 DIST python-exec-2.4.10.tar.bz2 84412 BLAKE2B 1fe79e0d31a48954959a5556f96c3868fcf762ebc473d17f03e78a95cca83ab40b4933b7e42bc5751b0546e6229f9fdde9171c3fcbdd184f993536f944870491 SHA512 8c7d3c6b1fa362c8c97ec74ee01b5a195dc409d883408033e9709773b6059deb5291f6e63df6d9a4e42a0951aad4a1d513d4baa00ad9ff3dce3e1d2d38b694e1
-EBUILD python-exec-2.4.10.ebuild 1964 BLAKE2B 221220bdbe05d836e3ccee3b5302d1863f5fcde606c444ec9d0c3bf00f24ca67170ebdd180bb66ddf0fb5b2158b9c96e456991608beebc1e6640445fd3089145 SHA512 e1da4bc15f3214a8824f526494c7901013b0361baf72b5d3ed39ec761b9d7500381be075ed2306b5811284bf5ebbe7dd5a104ae5fbf510883e53a3c1e34fe067
+EBUILD python-exec-2.4.10.ebuild 2036 BLAKE2B cc7daac48b6b29ec014a4e7d42c106f23f3211fe098a97869a0e189fa252ff3ca2dd0908626cdd19f9adb0d60f5db969092342857ecb9e990336a8be92258a8c SHA512 f82946d372f6d2773e6d91e322b25f1fa7977395cc03e5ba52c2fad4124a80b7a6e2abf07770690a719e4c27d7e603945185294ef225086907192e35c97ea67e
 MISC metadata.xml 792 BLAKE2B 523252765f0c1aeb4986e5f2acae02959e040cb7f9586f3b4391db730e1fcee3297dafbf05850cf2a6cbce34ab5168bbc965c2dd680b240f944b8199013ad914 SHA512 da707d555bc3f0c2d70a1fe3700c427091c3ca5e12c812714d5f3e13a518b5986bfd6a219820e35223e848e88098df81f5e4c80de33146ee3b273048e83c0521
diff --git a/dev-lang/python-exec/python-exec-2.4.10.ebuild b/dev-lang/python-exec/python-exec-2.4.10.ebuild
index 05556b1b0d4e..85085af14303 100644
--- a/dev-lang/python-exec/python-exec-2.4.10.ebuild
+++ b/dev-lang/python-exec/python-exec-2.4.10.ebuild
@@ -1,9 +1,10 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=7
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} pypy3 )
 
-PYTHON_COMPAT=( python3_{9..11} pypy3 )
 inherit python-any-r1
 
 DESCRIPTION="Python script wrapper"
@@ -19,11 +20,13 @@ RESTRICT="!test? ( test )"
 
 RDEPEND="
 	dev-lang/python-exec-conf
-	!<=dev-lang/python-2.7.18-r3:2.7"
+	!<=dev-lang/python-2.7.18-r3:2.7
+"
 BDEPEND="
 	test? (
 		$(python_gen_any_dep 'dev-python/pytest[${PYTHON_USEDEP}]')
-	)"
+	)
+"
 
 python_check_deps() {
 	python_has_version -b "dev-python/pytest[${PYTHON_USEDEP}]"
@@ -50,6 +53,11 @@ src_configure() {
 	econf "${myconf[@]}"
 }
 
+src_test() {
+	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+	default
+}
+
 src_install() {
 	default
 
-- 
cgit v1.2.3