From de49812990871e1705b64051c35161d5e6400269 Mon Sep 17 00:00:00 2001
From: V3n3RiX <venerix@redcorelinux.org>
Date: Mon, 24 Dec 2018 14:11:38 +0000
Subject: gentoo resync : 24.12.2018

---
 dev-lang/php/Manifest                              |  27 +-
 .../php-5.6-intl-detect-icu-via-pkg-config.patch   | 154 ++++
 .../files/php-5.6-intl-icu-memory-corruption.patch |  88 +++
 .../php/files/php-5.6-intl-use-icu-namespace.patch | 365 ++++++++++
 ...php-7.0.33-intl-detect-icu-via-pkg-config.patch | 159 +++++
 .../php-7.0.33-intl-icu-memory-corruption.patch    |  91 +++
 .../files/php-7.0.33-intl-use-icu-namespace.patch  | 369 ++++++++++
 ...php-7.1.25-intl-detect-icu-via-pkg-config.patch | 121 ++++
 .../files/php-7.1.25-intl-use-icu-namespace.patch  | 379 ++++++++++
 .../files/php-7.2.13-intl-use-icu-namespace.patch  | 379 ++++++++++
 dev-lang/php/php-5.6.38-r1.ebuild                  | 779 ++++++++++++++++++++
 dev-lang/php/php-5.6.39.ebuild                     | 785 +++++++++++++++++++++
 dev-lang/php/php-7.0.33.ebuild                     | 754 ++++++++++++++++++++
 dev-lang/php/php-7.1.25.ebuild                     | 736 +++++++++++++++++++
 dev-lang/php/php-7.2.13.ebuild                     | 748 ++++++++++++++++++++
 dev-lang/php/php-7.3.0.ebuild                      | 748 ++++++++++++++++++++
 dev-lang/php/php-7.3.0_rc2.ebuild                  | 743 -------------------
 dev-lang/php/php-7.3.0_rc3.ebuild                  | 748 --------------------
 dev-lang/php/php-7.3.0_rc5.ebuild                  | 748 --------------------
 19 files changed, 6676 insertions(+), 2245 deletions(-)
 create mode 100644 dev-lang/php/files/php-5.6-intl-detect-icu-via-pkg-config.patch
 create mode 100644 dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch
 create mode 100644 dev-lang/php/files/php-5.6-intl-use-icu-namespace.patch
 create mode 100644 dev-lang/php/files/php-7.0.33-intl-detect-icu-via-pkg-config.patch
 create mode 100644 dev-lang/php/files/php-7.0.33-intl-icu-memory-corruption.patch
 create mode 100644 dev-lang/php/files/php-7.0.33-intl-use-icu-namespace.patch
 create mode 100644 dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch
 create mode 100644 dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch
 create mode 100644 dev-lang/php/files/php-7.2.13-intl-use-icu-namespace.patch
 create mode 100644 dev-lang/php/php-5.6.38-r1.ebuild
 create mode 100644 dev-lang/php/php-5.6.39.ebuild
 create mode 100644 dev-lang/php/php-7.0.33.ebuild
 create mode 100644 dev-lang/php/php-7.1.25.ebuild
 create mode 100644 dev-lang/php/php-7.2.13.ebuild
 create mode 100644 dev-lang/php/php-7.3.0.ebuild
 delete mode 100644 dev-lang/php/php-7.3.0_rc2.ebuild
 delete mode 100644 dev-lang/php/php-7.3.0_rc3.ebuild
 delete mode 100644 dev-lang/php/php-7.3.0_rc5.ebuild

(limited to 'dev-lang/php')

diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest
index 02950a307087..b384a485b567 100644
--- a/dev-lang/php/Manifest
+++ b/dev-lang/php/Manifest
@@ -2,30 +2,45 @@ AUX 20php5-envd 145 BLAKE2B 06476b8fc04d1e835496b417ac752f0834ddbe8584e4fddc6db0
 AUX 5.6-mbstring-oniguruma-6.8.patch 880 BLAKE2B 7526874436b0fee12d0bc80487abe8a2e152491b52d2b3c041e4162284a3be580d88649704d360e85b0985d6406d2d26fe55c147a091fef1adbe7631cedafeeb SHA512 8767aa16f72fec2e4d79d8b15559ffe6afcf97c1664d963befc5565ead5eb3a5291982ece941441f57cfac21589c5e8eecf359b111b27a880919f77652e4de65
 AUX libressl-compatibility.patch 2978 BLAKE2B 714e268149d973beb0d2d76f90e15adde57acb7aed028131c6dee2a34b11980fedff487ccec67e20d9a9094014878e13bd7e180e98bb0ee304c5916324016823 SHA512 58ed57061f31da72c96cbca6f6e86d1466c96c8562dfa6551b4a8d16bd6e537b848ca34cbe57c5c220c72158e176f9cd7c07d282fe1fd69ebf5475c48bf95c26
 AUX mbstring-oniguruma-6.8.patch 1488 BLAKE2B 181aacdd5fc01e5b11246d624cd88a5d3184c00343abb8a9e36d1e224dce185a81521c0498d562e51768e4c035806f007f9cd5ed930b7abe2a3da2e5b519f5b3 SHA512 5a3334ca98da9ac22be67021e4e859c89826aec8393d4b56c4e52336a5fc689acd2579ff44ac984a40711ccaf917a810264b07a0071f8161da18e2bffd3d0c05
+AUX php-5.6-intl-detect-icu-via-pkg-config.patch 5715 BLAKE2B 609192a91736ae7417365b7040606dc4dae43333c63eda79879cd45f74c34613563e4c4625cb5f1401cb59f78db0b9328e808b9293eab63aac34069847b3058a SHA512 89e109422f2eb8efa2408851592528c0bcc2103c902bffdc72208096489c3d2593cc4baeac2bde6266f3e08028f90e7c4960e2b9a17323216dbd68b19fe84c44
+AUX php-5.6-intl-icu-memory-corruption.patch 2374 BLAKE2B eb970251333796622491b40ac9da4aeca4d0775e11f579bb7fd63078a44d35f5fc4987155f190ca07cbdd98e8b6f532e0ba92a770b3f7ed61405f361f888001a SHA512 b5533f2e9665204ca62dcfd24d8988c3dde453068919e00dc26bb02409ac50da2d42ad1fc00815aea2f13410f0d5d95fadfb820d13c944eb2d8be9060f3787f1
+AUX php-5.6-intl-use-icu-namespace.patch 11150 BLAKE2B 0117eba8f33d4ed07484e3dad15fd7ff34282f1ad57b441f4794c0dcec650fb19f32a7fbb345d4feee54efc1ef470d118f8f2d7c6b422a0ba3aa22c0ca5c83f3 SHA512 ef440c9fd157739ea80dc68aecb3d9ea3f97d9347e44152e198eda3763c05d252f0913eae09c5945e372497e2be8eace55a9d004cdfb61281ea17208c6e6aed1
 AUX php-5.6-no-bison-warnings.patch 1428 BLAKE2B d37bc7a1ae803aa4a14d32f0ca5613b7bc82610248d6de5ef7b6078fdcfa944cd1c245aa919137ff0d6968c8621b5acf2638386307c46fdbb8c98eba991eb674 SHA512 8f751c638c833d535e022434cd8ace5c175703bf61dfab7bea3e52d9419700e2b85c4cca40da9ab6056e8fd9c0bc1fab55810bb1193bed14ce0a50ce653fe62b
+AUX php-7.0.33-intl-detect-icu-via-pkg-config.patch 5832 BLAKE2B 7f48cb80ee4d51a4385845f1cc10babbbc2dbd40c245f13711467a8cb6244e85eafe59a03c50b99d0d07465a335cefff765296ab92e8b8a8ee2cc8543c4f5e4a SHA512 a08a3e59c77ab5313cdb7f8d8d496071fbaa6765e7bb878012c283eb7103093b511afbf0c234b760fe56ac4e13817746db9990880e5056d36a0d0b1779dd239c
+AUX php-7.0.33-intl-icu-memory-corruption.patch 2385 BLAKE2B 37123710c6cf3f8c99bce365d299079810317cd9aff32e7b725d89fdcedfe0503335b568c5b09f45fdeee8506cd3f691bda24eea1f6101d39a655feff818e57f SHA512 904188088bd2a8a68e2d2019df96d61abfcd7ff7e306f078bcfcd610ea0deda5007392a135c62e2fa2feac27ea6379087835beb36bb76edd1a4055ebe84c1a97
+AUX php-7.0.33-intl-use-icu-namespace.patch 11180 BLAKE2B 5a5d6bd74f2cee846ce58e754443a9b0d689aac1c1705166ea16ea0292f7f4d2b6a83519db5391414cd97de88bc25b7a4d43ba2adc90427e62b134d662ea924d SHA512 faa289791e4ac2c176a27056fb63683cd444c36b6b5118299327179a753e9a1a8589dc6f20e0e3e2d6645312500fbe0d8d9cb4db39e29e7fa22d3d19283b36e8
+AUX php-7.1.25-intl-detect-icu-via-pkg-config.patch 4608 BLAKE2B 3639c5a39bae61d3032c18a85982769c2d8a5837a67cc8b3ec7cd25263d15f4923a04c74f21b10cd5cc17c0cd9d657431dc3052cddaa289a6eb1dac0cf975350 SHA512 567fb3486af02e487cdde11e2a6f706b2fc19722e5e9f4b63320bb2226e30ff79b14780f3f661378bf5bea2150b47af93fb5b39003465895fdf420691d4dbc44
+AUX php-7.1.25-intl-use-icu-namespace.patch 11396 BLAKE2B 7664703a7bafb38d252f5eeec926ee0b7eaf4d75e71ef98c2e7d3f612b7d48d38b66764286d67299a38a704500db2e3215dc375d64a8f277b904aff80211fa60 SHA512 c7b61cade203a338a576aff0b4b76a22f0d686d53e91fbf4c5171e0429317460f7404c78a0c076a3000957100af2d17caba6245bf37afc6177fb43c7fafa7679
+AUX php-7.2.13-intl-use-icu-namespace.patch 11499 BLAKE2B 0dca597d5afd0309595499e3ff860e2d83183e570d02f202a1e2966d430606f09b8dc7427c4007e791914c8ee093a2e7cbf7372baa7896ac06d1912f2e707c09 SHA512 1332eb76feda2100685e319ae046512cf12b55a0d2be537c2172ccf035b547d851f84fb7941389882d7e3d674d91441e018c7b8f1e3f0d4cced05c314d5821fe
 AUX php-fpm_at-simple.service 316 BLAKE2B 0ba10f3e3b004fbf14956e1e4f04f59b8a127e6717fe6b92c09b9f931033a11551c75fbbee9010f6b694c5a8758ca0eec9eed457ae304ba0dea8f2c256c3b8d4 SHA512 7367a3f8d3874f8e0c76f331ba613a0250db02f60ad9f87affaf448dcb5bc34bcecb91d88f415764a12b24b46ae3d1b738a002af9f77a4b707e916e83a0021fd
 AUX php-fpm_at.service 317 BLAKE2B f13fc38fcc0575a8517ee8d07b120efda37eabd2355061d0fdc303604c6b02ad42d7301180d86c977d5e585f5dd685343c592e37a6e0f44933707be79e0b77e0 SHA512 27982f9e2d958bfa75c89c7d3531e48d17fc388b1cdcbc8e09051b236b1184ee2baabdfcc567c19d9fcd067d4b3b86f171015616d8da42fccdabd89432d865e8
 AUX php-freetype-2.9.1.patch 7667 BLAKE2B efc8f829bbad11b3e7b654d0882213ecb9aae766060d51f93446a6293a2f607339faba484c7b0b2f9318a5c5442da3c09e25aeda20dbc5e3258bf1009f8625b4 SHA512 0a06189f6fb3513cd2dcf9ddb590360475e2dd9a7aa8b13ab66c389c1ed40ce2361681f017cd3c6219f5b40a0a9d4978e57ca3ee4bacb7657db3285136fd2875
+DIST php-5.6-openssl-1.1-compatibility.patch 42559 BLAKE2B b7f13866cd8545543143932930f31bcd928fa0b4b36ef63f04798b9ef4699f12b4f4227772ac9e6e5c498aaeacf7b106abcfa48031a12214e123de4b79d3a4cd SHA512 eed695a3dd7ce27e8651b4a4b96ccd0514f256e7d2f0214fac899e9eeea6412aa24f863f1b5d13305bcac50667ccb62709597fb34da1002b005ebf411dd2f5df
 DIST php-5.6.38.tar.xz 12467408 BLAKE2B d9ee47e193d80bce8a9ed6ffd3eb13e67ba6d1f597ece2803cd92fddc6245f46cdfe644d6cda12a6bb409b92c1fe748610cc5eb43dea0bf063fda81188ee8b3d SHA512 66c51a8e954b1496c0bad0a2864a2a1537dd1c1c573b553991d6d5bce85fc7bc340e56a21109bc5e9a03799e703204b980b569c95a5c0a1bddb01c8947e7a682
+DIST php-5.6.39.tar.xz 12467096 BLAKE2B 354b147c0fcc13eeec0ab333bcaa32ad26e2f4eef19a0ee52cf596ff96997eaf32cbb6d980cacf643167ed01b06ee9d27eeb7c00c95c8023d305c967c1ce3539 SHA512 814ea2d74df9c3c7041769803ceb4ba20dbfc18885ff85f91dca0c3ab694e3ebfb6a564427d116b35382fe292583a54d449f2528495032ca9724cfbdea82c226
 DIST php-7.0.32.tar.xz 12030780 BLAKE2B 0c277eac4c931a6e30954cceb7feef8dea1c3ef4aebac91779b7e1a6f90f608faa93d1750a2dc8f354c73304e0f7a9b9ac17bb0d1da4768ddb68925752c11aef SHA512 4a7c9a6b91ad7da69303916202062d639e6f02dcd483e851a44d8c7a2efeb5c9a666097935ab60d700c4445f86a0c68df1515300c57af1cdb76528b54b757608
+DIST php-7.0.33.tar.xz 12033040 BLAKE2B cb7a4eb3ba8ede93ae8e85b6a11664f33654f7e94fa077ac9a33ab95157c0c2b3b05f98413e13e36f710c6d00b35d49d38bf26092a36e508b88805d092764287 SHA512 9298e185702ea801e9243671ecb0b781c2b04181a2f9fd6490bc14897a333a2c0cc88fe27b0c69c6dd0079629a71c330ed1aa337f48cac6cbd624addb8855500
 DIST php-7.1.22.tar.xz 12227848 BLAKE2B 72fab94b1c7ecfd3479f6d6c9a76a9d8813f7789402664201615d79ab8b5bb26fb1b7273769c4898a36f0336e0ce4d50bf2f17b81ddb54acc9583e39623e3a5b SHA512 0fc0907d303711dbc4ba0a18618e3e73550c73d13988c769f8d50066017b1efe3feb0d22d5539f69271ea4e9532a3d997e22841cb59bdbf96313169e1c03538d
 DIST php-7.1.23.tar.xz 12227528 BLAKE2B d03470b07ae041c4677e100c1b4f7994d3e15d4830eccba3c654c1f3546345c8205cac057011d2d43ab962ebbc01652f6748270daa40aa1e540453923500288c SHA512 d5a451f1a48415175e3117ffa84ef3504275a407698b59c13eeb403958aa27342e04dc4ffea9791b923ac0cc5d6fdacf2e8672f0e19755bae858707c7fc3627f
 DIST php-7.1.24.tar.xz 12205112 BLAKE2B d4dd8bdd980cbb2c8cd813cad44da7a322d75641bb5f4eb986f6be44acf61898e64e43a3206da08b6c68fb1213a95cf5c6bf28bc75356d9abd9711330fa04554 SHA512 ee54d04fa1bb049807e7876baf6a4d12ab8360367bb44ac77c71e53ee8ca078342b4a86f2bc4587838ead27fb8204fea8e739bd582a9e146513ae5d465e59202
+DIST php-7.1.25.tar.xz 12205972 BLAKE2B 3d69cc87d75ee45dc85e5e672ddb6c312fcba12882e227d28e397e1e796e0149588b9519beeb990111315a747a07fa5349ad5f9662c0725b4551478f9e95b51d SHA512 10a75b96d5fa104bc1d5b63f4606d9cfacfc594f7d6ab34f9c5e9e8f209b896516c4121b9cbd323a862724d6dfbd275ef902993cfab619d9a4b9518790b9147c
 DIST php-7.2.10.tar.xz 12160864 BLAKE2B f1959a00622c1bd11fa87c61d152c802b307f0b9e89b51ed86b40086cda03eeb6652d47b59df8cc7c9b4e79ab687ae1292b978f453e9f07ac352d209b64c62d8 SHA512 aa90fce17034b2649012d66461626ae74c21ea938b1c71c7eb12419e562c641b432df87a7e900c245ad28df39624cf64a1b2f8ffb123608d94cd35e41f09c0fe
 DIST php-7.2.11.tar.xz 12132268 BLAKE2B 8007f6a8f4236efb796681d25f2066deeba98e6e136def0c323aa13399951d58d7f218b3544b3bd0418dfe220f87a38b6515547c50f65c641bd09a2d440eb4e1 SHA512 0cd8578147d17d612e013dfc22b73977719177058b39c7b61dd0bfdfb8c2441aba78af49f58c824f7e66c89b5ad201c36fafb89ccf1e2d20f19b79d6a8fed7e5
 DIST php-7.2.12.tar.xz 12141472 BLAKE2B 25d55fcbe63aab64c658e9c4ab52b552831d5c03a8887e1c64f0cadbb8b0d9f3c38cd5d15dac89002c328b737ad864fce392baa0891292ee77d1975562a2bc17 SHA512 bbeaed1278d0d2f1ecb2249dab1ebaab1489ef43be0797dac57d8b523d8e5d284166e6cbf52095f5d34eef447fbdeb0c6916caaa5770221a180ec064f4ffcad8
-DIST php-7.3.0RC2.tar.xz 11924624 BLAKE2B caa2c3752e7fcf2226b8351e96277a5af071cbe13f820f4c81cd54b2e98206b403327a97a7360e6a8e1c7e11687af0ddc24b9a08ef3ac3f18cbe488469c17c35 SHA512 6fca734a4dfbd8ef85838439bc965f6d6773ba270207222b710ab75a0254f6c68378763274ba5d6cfe60b6ea14c134a64cb3ef607cc2ef86c7010bac1e282498
-DIST php-7.3.0RC3.tar.xz 11927028 BLAKE2B b88b2abeac532a5c0de6ee92982514e78ef6ef8ef2436c0edb541b83da9bafa925177d76d54bcdd866f7863442691e6aa721356c123d07c3464f18e85abbdf6a SHA512 ef441fc7608ee5ef5062b252292656d42644307b5623ebd87104ca10191080ba83d44e5984e8eef987d8bec0f0ab8139b7c2d16577fe6dcc5f02e71ba87f5ed8
-DIST php-7.3.0RC5.tar.xz 11916200 BLAKE2B e449bffbd752b9b461878b35ecdc41453c28c103c9c2167d1e50cb923a4172b51efe36d81831897dc00de0c00a9ed38f1ed9d4471f09c82c63b57a307da31189 SHA512 d9628e97494e067b330aa7e75f70c09996c1346aa6c3ab336117853ef15c3f31cf3dda098e00f0aace1fcc51e1c7450fb11f63ae4ece5f8073aa556433ac6c0a
+DIST php-7.2.13.tar.xz 12116484 BLAKE2B 00d265c10343e590772a4de103ae885149a56a7c0ef957cb24d5e81f86021231da5e75b655081e9fcba99b83956d55265b6af1d779ee65cebee9a974f936a634 SHA512 9df1d43e9cd701db10281811b328721b85cb90c6c8dae1842b0fd848cb5388328918b3040bbad7634b340550d82b93746ea479ed45f4d8a80e8a316e6324115d
+DIST php-7.3.0.tar.xz 11928820 BLAKE2B 36fee652cbbc28bbeb1b2df037b4b05084910d94af86c16150d776b82f91fb85691f9846c51538dbf6f3e64ece26894fe9c7a5f272d2848d41cdf8e1338b9805 SHA512 d991101eb833d3a47833aa930341e75c56f26c4cb0249896728ebe209c6c02af1704fccc3052128d8f9fdffc60dcef0ece38a532697131141946898d8b1abcda
+EBUILD php-5.6.38-r1.ebuild 23051 BLAKE2B 2f4bb600718476e7c1f587618c26d60949dab9037f5688688cb4a47cdf1621cde4e7e4065d878b229436feee24e1520e399cd4e532966d4a0e36ddd5b9f606f0 SHA512 fa50618759e8280ca7d81fb92a73f5987b3c52dde2d8cadda2576767ac1eb9423b3f047e5f4eca62c41762d3f65977a22ce22ce56266942975ab07dc79ab30e2
 EBUILD php-5.6.38.ebuild 22798 BLAKE2B 8bef3ae060eeb63fcc492a7c8c8a8b642b84f46ef7ed29e69badeecf26c0f853e974c8f224739875fee1b345987775c05f451908d4731550eab156993a55d23a SHA512 0a97787e0b80643e620815c32b29a56063ddb92c31516ad34f89be9769cc3cf9ba07eb0271d433f330d6493df2b1a63af29bf8b7ede81bdd3fbc2751be5ce561
+EBUILD php-5.6.39.ebuild 23265 BLAKE2B 87584041cb4d7e21ef21f6fc25dc3b03f8bf46037caa7aba79c7f5b29fb6af081e34b9f994f2e4df461398181777ab81fda80621f7672dfe1697660252462cd4 SHA512 6b9e20c877b5d7d85b60737dd24f798194fc7b6a2470e6356270645dc39ffa2fd083a63740b3957ed7f5f3d8e94290d35dd96ee98ca8e264fb620ce61397ade5
 EBUILD php-7.0.32.ebuild 22008 BLAKE2B 26829e446d9608f52212a32e0092d83d65966a270a8e4d35f8ac4559f0679a4ff955848eb9c9ae3f7d25300d347a226adc1b71d1b322d09fe512188360f2182f SHA512 a9fdfe7a831fa4ad71ddd4bae29582053ee86a824dc93f02581a3add372561f34d457f2c9198c72c619b10666b679d3f929f6aaf309c2d446a60e9447e8d3cc2
+EBUILD php-7.0.33.ebuild 22169 BLAKE2B c42c62525fdb4e5e0de2cd232c2e6c04fa0c561f0095db4f3d05822cbbde8bc8938369870cea1dd3e7c9a0ea87899e2323a185195fe177441eb94a66ea2095c0 SHA512 c909409059798a4cbb2284a71affc0df5c47db6bebafc291323eeb865b118712a4b344b4f556be95d3035333481ed147804e908b1d8e5c68b38bb178ef0651b8
 EBUILD php-7.1.22.ebuild 21715 BLAKE2B 13f34b9730b2f0f22cfcbf26af6575259d08d61f158b0c9bd9b6e7756326037e32e92992ec510bc1649eca0beb2044f820888c7e9b1fa48174974e754947f181 SHA512 187fd61cf4df1cda5c53e14aea0ac327c5e9fab193843165de2afe7e13fdb5b8be1ebab70fcb776dcb8ebe1966feedcc075e589c4ddf1f9f6d3d58f45519a9d4
 EBUILD php-7.1.23.ebuild 21933 BLAKE2B 4080e9f9bea273c051f26db5ccd8781f5b448cc800999f71e527f7e0a243f84dd5fc420aa9b6ae86d293588e8de13644c14a48212cc77a3197801c4bb118cb19 SHA512 dcc63f2e7373a9b57a2d3bb010a125d3ce74b7bcb030490b4051853cac78964ac59bd7d1309c5c8f1d11cf2b52615c075c846575528eb6968422736b08add279
 EBUILD php-7.1.24.ebuild 21933 BLAKE2B 4080e9f9bea273c051f26db5ccd8781f5b448cc800999f71e527f7e0a243f84dd5fc420aa9b6ae86d293588e8de13644c14a48212cc77a3197801c4bb118cb19 SHA512 dcc63f2e7373a9b57a2d3bb010a125d3ce74b7bcb030490b4051853cac78964ac59bd7d1309c5c8f1d11cf2b52615c075c846575528eb6968422736b08add279
+EBUILD php-7.1.25.ebuild 22041 BLAKE2B 29e1e02ede599d151b8ca60fda7ab63cfb84d3a75b14380e680fa886e3f068a61c48b48e89db6b3d45dba4e3a88919175375de584ded8edac6d80d4c48b12df6 SHA512 e39340ed01c7fe6e14ebb8c8b9afe624fe6b2292280457302f53cf9b20308729fcb06cf1a2ec5de69b8e7c4cd12d9c46ca250590df034fa7e16eb7be90b968b7
 EBUILD php-7.2.10.ebuild 22246 BLAKE2B e06f62b7f5563d48d9e381b6ab44cc72e9e63831e209ee638321e93b90a1f42abb9a41b757629b45cfa610f7e985f40fbd002c5121acf86d862f8d648ee16f44 SHA512 c662c27b70663131899ffe595476bff326a337d584855e27f62480bf8824e3a3f49caee7c80b4f3aa19ccc40d1f95f3a9c4518621cbd43abd751981ba334e190
 EBUILD php-7.2.11.ebuild 22464 BLAKE2B 43c52b71820962862ce7e208e45bea5180014075894125075fbfd0f217412f3cbe5b6bf6642e76ad9145d2cb26a1ae94b6880186c86a196eac851d97f10fe000 SHA512 44b1f8a4eb74480d878fc8e8f9a1eb1ed8cdc35c9f4091cce2b6668d0b9afa86538e7dab5271ef9e6ea07d71e0e3cf4d9325297c3abfe2a63a754134166c02f1
 EBUILD php-7.2.12.ebuild 22464 BLAKE2B 43c52b71820962862ce7e208e45bea5180014075894125075fbfd0f217412f3cbe5b6bf6642e76ad9145d2cb26a1ae94b6880186c86a196eac851d97f10fe000 SHA512 44b1f8a4eb74480d878fc8e8f9a1eb1ed8cdc35c9f4091cce2b6668d0b9afa86538e7dab5271ef9e6ea07d71e0e3cf4d9325297c3abfe2a63a754134166c02f1
-EBUILD php-7.3.0_rc2.ebuild 22329 BLAKE2B 7841e7d459849f06a47128e2c0a8f1997b3d1b6be02081d3dafa624f7ea319da13974cd904ce772260c8e001ae5c594508cf5be9f0426d8fd5da9ff6107111ca SHA512 f81a2d251ded29e6f91f72c736c27f44e8f8f6ef9cdfe57d7b8fefc0c3c27869a83972355d03532db95ba0c9c0b3322870174b7c8c0e57a1f9ea8ec4c40ca4c7
-EBUILD php-7.3.0_rc3.ebuild 22535 BLAKE2B add28e6c6a24b502a36417c3afb5b71995f510ecff7ec65380d9413aede5a2f182e7caaf31a4a0e1cb8299a3059f1a5aa70a16ab3f4135a85028bc3793445b8e SHA512 2ba2c9420d73355e3cdedbf46de520933b7cace0f73396f2b999ae2eaa6d64e1d3816b1a3054669f04d03e69453bd80673d9b0ad66c1b920f6bf59faa5daa8f7
-EBUILD php-7.3.0_rc5.ebuild 22535 BLAKE2B add28e6c6a24b502a36417c3afb5b71995f510ecff7ec65380d9413aede5a2f182e7caaf31a4a0e1cb8299a3059f1a5aa70a16ab3f4135a85028bc3793445b8e SHA512 2ba2c9420d73355e3cdedbf46de520933b7cace0f73396f2b999ae2eaa6d64e1d3816b1a3054669f04d03e69453bd80673d9b0ad66c1b920f6bf59faa5daa8f7
+EBUILD php-7.2.13.ebuild 22565 BLAKE2B 3744aa6f80c3de1db2ecd9bf1358d3afdca6fde51a840fdc290ca90ab35859f7c15d3881b6726722486bb22e0d767405f7cbd0cfdb05888496c79f5209b4709f SHA512 614cb46ded4c189475352dce004f2ef20636470c9d289c9482144417defc184a3f6a63407ddda20cef723730fac266c33c204856d9a1796b41cfdd514f9e9ed7
+EBUILD php-7.3.0.ebuild 22531 BLAKE2B 06ff025e987ed3d150fd3309ac3837a9a2f69b50f13ff42977aa7d5977916fddc700f9c95cdba608980d3e95164b0c50b03fbd4939f9faadc77f1b86e6dac046 SHA512 7772c5ea41b650e2e1acb46c79a4a6400bbc760a18b8439b62361b4e49c9d91b9bfaa40dd05b8409bf77f473495987c58ec8c0d5c8d81e9c0386ab358629ca13
 MISC metadata.xml 3268 BLAKE2B fcd85522c4dbea03403eee66cd3be945f4f998d5eb483ac9c47bd2be2f5f2f4be8586ecc58d50ced7798fdd63ef2136e56d559fa06e870d242239127a97b7b76 SHA512 c44c7fdf1592ba4c0b2cf6f29a97a4a214d2193cb164dcc90454e4a762860a5f3fa67908217543fe72811d403c2ef3b15d2f80f2657f09c1e078d31ef35c12f4
diff --git a/dev-lang/php/files/php-5.6-intl-detect-icu-via-pkg-config.patch b/dev-lang/php/files/php-5.6-intl-detect-icu-via-pkg-config.patch
new file mode 100644
index 000000000000..dea2949c25ed
--- /dev/null
+++ b/dev-lang/php/files/php-5.6-intl-detect-icu-via-pkg-config.patch
@@ -0,0 +1,154 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
+https://github.com/php/php-src/pull/3701
+https://github.com/php/php-src/commit/2bd299f7318492fd7e5cafffa562d76ba60e69d4
+
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2201,49 +2201,16 @@ dnl
+ dnl Common setup macro for ICU
+ dnl
+ AC_DEFUN([PHP_SETUP_ICU],[
+-  PHP_ARG_WITH(icu-dir,,
+-  [  --with-icu-dir=DIR      Specify where ICU libraries and headers can be found], DEFAULT, no)
++  PKG_CHECK_MODULES([ICU], [icu-io >= 50.1])
+ 
+-  if test "$PHP_ICU_DIR" = "no"; then
+-    PHP_ICU_DIR=DEFAULT
+-  fi
+-
+-  if test "$PHP_ICU_DIR" = "DEFAULT"; then
+-    dnl Try to find icu-config
+-    AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
+-  else
+-    ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
+-  fi
+-
+-  AC_MSG_CHECKING([for location of ICU headers and libraries])
+-
+-  dnl Trust icu-config to know better what the install prefix is..
+-  icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
+-  if test "$?" != "0" || test -z "$icu_install_prefix"; then
+-    AC_MSG_RESULT([not found])
+-    AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
+-  else
+-    AC_MSG_RESULT([$icu_install_prefix])
+-
+-    dnl Check ICU version
+-    AC_MSG_CHECKING([for ICU 4.0 or greater])
+-    icu_version_full=`$ICU_CONFIG --version`
+-    ac_IFS=$IFS
+-    IFS="."
+-    set $icu_version_full
+-    IFS=$ac_IFS
+-    icu_version=`expr [$]1 \* 1000 + [$]2`
+-    AC_MSG_RESULT([found $icu_version_full])
++  PHP_EVAL_INCLINE($ICU_CFLAGS)
++  PHP_EVAL_LIBLINE($ICU_LIBS, $1)
+ 
+-    if test "$icu_version" -lt "4000"; then
+-      AC_MSG_ERROR([ICU version 4.0 or later is required])
+-    fi
++  ICU_CFLAGS="$ICU_CFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
++  ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
+ 
+-    ICU_VERSION=$icu_version
+-    ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
+-    ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
+-    PHP_EVAL_INCLINE($ICU_INCS)
+-    PHP_EVAL_LIBLINE($ICU_LIBS, $1)
++  if test "$PKG_CONFIG icu-io --atleast-version=60"; then
++    ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
+   fi
+ ])
+ 
+--- a/ext/intl/config.m4
++++ b/ext/intl/config.m4
+@@ -9,18 +9,10 @@ if test "$PHP_INTL" != "no"; then
+   PHP_SETUP_ICU(INTL_SHARED_LIBADD)
+   PHP_SUBST(INTL_SHARED_LIBADD)
+   PHP_REQUIRE_CXX()
+-  if test "$icu_version" -ge "4002"; then
+-    icu_spoof_src=" spoofchecker/spoofchecker_class.c \
+-    spoofchecker/spoofchecker.c\
+-    spoofchecker/spoofchecker_create.c\
+-    spoofchecker/spoofchecker_main.c"
+-  else
+-    icu_spoof_src=""
+-  fi
++  INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
+   PHP_NEW_EXTENSION(intl, php_intl.c \
+     intl_error.c \
+     intl_convert.c \
+-	intl_convertcpp.cpp \
+     collator/collator.c \
+     collator/collator_class.c \
+     collator/collator_sort.c \
+@@ -32,8 +24,6 @@ if test "$PHP_INTL" != "no"; then
+     collator/collator_is_numeric.c \
+     collator/collator_error.c \
+     common/common_error.c \
+-	common/common_enum.cpp \
+-	common/common_date.cpp \
+     converter/converter.c \
+     formatter/formatter.c \
+     formatter/formatter_main.c \
+@@ -53,17 +43,12 @@ if test "$PHP_INTL" != "no"; then
+     dateformat/dateformat_attr.c \
+     dateformat/dateformat_data.c \
+     dateformat/dateformat_format.c \
+-    dateformat/dateformat_format_object.cpp \
+     dateformat/dateformat_parse.c \
+-    dateformat/dateformat_create.cpp \
+-    dateformat/dateformat_attrcpp.cpp \
+-    dateformat/dateformat_helpers.cpp \
+     msgformat/msgformat.c \
+     msgformat/msgformat_attr.c \
+     msgformat/msgformat_class.c \
+     msgformat/msgformat_data.c  \
+     msgformat/msgformat_format.c \
+-    msgformat/msgformat_helpers.cpp \
+     msgformat/msgformat_parse.c \
+     grapheme/grapheme_string.c \
+     grapheme/grapheme_util.c \
+@@ -73,6 +58,20 @@ if test "$PHP_INTL" != "no"; then
+     transliterator/transliterator.c \
+     transliterator/transliterator_class.c \
+     transliterator/transliterator_methods.c \
++    idn/idn.c \
++    spoofchecker/spoofchecker_class.c \
++    spoofchecker/spoofchecker.c\
++    spoofchecker/spoofchecker_create.c\
++    spoofchecker/spoofchecker_main.c, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
++
++  PHP_INTL_CPP_SOURCES="intl_convertcpp.cpp \
++    common/common_enum.cpp \
++    common/common_date.cpp \
++    dateformat/dateformat_format_object.cpp \
++    dateformat/dateformat_create.cpp \
++    dateformat/dateformat_attrcpp.cpp \
++    dateformat/dateformat_helpers.cpp \
++    msgformat/msgformat_helpers.cpp \
+     timezone/timezone_class.cpp \
+     timezone/timezone_methods.cpp \
+     calendar/calendar_class.cpp \
+@@ -83,9 +82,15 @@ if test "$PHP_INTL" != "no"; then
+     breakiterator/breakiterator_methods.cpp \
+     breakiterator/rulebasedbreakiterator_methods.cpp \
+     breakiterator/codepointiterator_internal.cpp \
+-    breakiterator/codepointiterator_methods.cpp \
+-    idn/idn.c \
+-    $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings)
++    breakiterator/codepointiterator_methods.cpp"
++
++  PHP_INTL_CPP_FLAGS="$ICU_CXXFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
++  if test "$ext_shared" = "no"; then
++    PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS)
++  else
++    PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS, shared_objects_intl, yes)
++  fi
++
+   PHP_ADD_BUILD_DIR($ext_builddir/collator)
+   PHP_ADD_BUILD_DIR($ext_builddir/converter)
+   PHP_ADD_BUILD_DIR($ext_builddir/common)
diff --git a/dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch b/dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch
new file mode 100644
index 000000000000..1b18f7fc5c44
--- /dev/null
+++ b/dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch
@@ -0,0 +1,88 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/45a05f38410d4a67c8c83c09906e2cfb42fc6e4c
+https://github.com/php/php-src/commit/534684d1042978f3c21caf9b665a7aca27f3f325
+
+--- a/ext/intl/msgformat/msgformat_helpers.cpp
++++ b/ext/intl/msgformat/msgformat_helpers.cpp
+@@ -27,6 +27,7 @@
+ #include <unicode/timezone.h>
+ #include <unicode/datefmt.h>
+ #include <unicode/calendar.h>
++#include <unicode/strenum.h>
+ 
+ #include <vector>
+ 
+@@ -45,6 +46,7 @@ extern "C" {
+ 
+ #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
+ #define HAS_MESSAGE_PATTERN 1
++#define HAS_MISALLOCATE_MEMORY_BUG 1
+ #endif
+ 
+ U_NAMESPACE_BEGIN
+@@ -345,6 +347,26 @@ static void umsg_set_timezone(MessageFormatter_object *mfo,
+ 		return; /* already done */
+ 	}
+ 
++#ifdef HAS_MISALLOCATE_MEMORY_BUG
++	/* There is a bug in ICU which prevents MessageFormatter::getFormats()
++	   to handle more than 10 formats correctly. The enumerator could be
++	   used to walk through the present formatters using getFormat(), which
++	   however seems to provide just a readonly access. This workaround
++	   prevents crash when there are > 10 formats but doesn't set any error.
++	   As a result, only DateFormatters with > 10 subformats are affected.
++	   This workaround should be ifdef'd out, when the bug has been fixed
++	   in ICU. */
++	icu::StringEnumeration* fnames = mf->getFormatNames(err.code);
++	if (!fnames || U_FAILURE(err.code)) {
++		return;
++	}
++	count = fnames->count(err.code);
++	delete fnames;
++	if (count > 10) {
++		return;
++	}
++#endif
++
+ 	formats = mf->getFormats(count);
+ 	
+ 	if (formats == NULL) {
+--- /dev/null
++++ b/ext/intl/tests/bug74484_MessageFormatter.phpt
+@@ -0,0 +1,35 @@
++--TEST--
++Bug #74484 MessageFormatter::formatMessage memory corruption with 11+ named placeholder
++--SKIPIF--
++<?php
++if (!extension_loaded('intl'))
++	die('skip intl extension not enabled');
++if (version_compare(INTL_ICU_VERSION, '4.8') < 0)
++	die('skip for ICU 4.8+');
++?>
++--FILE--
++<?php
++$text = "{a} {b} {c} {d} {e} {f} {g} {h} {i} {j} {k} {l}";
++
++$vars = array(
++  'a' => 1,
++  'b' => 2,
++  'c' => 3,
++  'd' => 4,
++  'e' => 5,
++  'f' => 6,
++  'g' => 7,
++  'h' => 8,
++  'i' => 9,
++  'j' => 10,
++  'k' => 11,
++  'l' => 12
++);
++
++var_dump(MessageFormatter::formatMessage('en_US', $text, $vars));
++
++?>
++==DONE==
++--EXPECT--
++string(26) "1 2 3 4 5 6 7 8 9 10 11 12"
++==DONE==
diff --git a/dev-lang/php/files/php-5.6-intl-use-icu-namespace.patch b/dev-lang/php/files/php-5.6-intl-use-icu-namespace.patch
new file mode 100644
index 000000000000..715adb303d6b
--- /dev/null
+++ b/dev-lang/php/files/php-5.6-intl-use-icu-namespace.patch
@@ -0,0 +1,365 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
+https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
+https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
+
+--- a/ext/intl/breakiterator/breakiterator_class.cpp
++++ b/ext/intl/breakiterator/breakiterator_class.cpp
+@@ -38,6 +38,7 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::RuleBasedBreakIterator;
+ 
+ /* {{{ Global variables */
+ zend_class_entry *BreakIterator_ce_ptr;
+--- a/ext/intl/breakiterator/breakiterator_class.h
++++ b/ext/intl/breakiterator/breakiterator_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_BREAKITERATOR_POINTER
+ typedef void BreakIterator;
++#else
++using icu::BreakIterator;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/breakiterator/breakiterator_methods.cpp
++++ b/ext/intl/breakiterator/breakiterator_methods.cpp
+@@ -32,6 +32,8 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::BreakIterator;
++using icu::Locale;
+ 
+ U_CFUNC PHP_METHOD(BreakIterator, __construct)
+ {
+--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
++++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
+@@ -31,6 +31,8 @@ typedef union {
+ 
+ using namespace PHP;
+ 
++using icu::UCharCharacterIterator;
++
+ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
+ 
+ CodePointBreakIterator::CodePointBreakIterator()
+--- a/ext/intl/breakiterator/codepointiterator_internal.h
++++ b/ext/intl/breakiterator/codepointiterator_internal.h
+@@ -18,8 +18,11 @@
+ #define CODEPOINTITERATOR_INTERNAL_H
+ 
+ #include <unicode/brkiter.h>
++#include <unicode/unistr.h>
+ 
+-using U_ICU_NAMESPACE::BreakIterator;
++using icu::BreakIterator;
++using icu::CharacterIterator;
++using icu::UnicodeString;
+ 
+ namespace PHP {
+ 
+--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
++++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+@@ -25,6 +25,9 @@ extern "C" {
+ 
+ #include "../intl_convertcpp.h"
+ 
++using icu::RuleBasedBreakIterator;
++using icu::Locale;
++
+ static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
+ 	return (RuleBasedBreakIterator*)bio->biter;
+ }
+--- a/ext/intl/calendar/calendar_class.cpp
++++ b/ext/intl/calendar/calendar_class.cpp
+@@ -34,6 +34,9 @@ extern "C" {
+ #include <assert.h>
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++
+ /* {{{ Global variables */
+ zend_class_entry *Calendar_ce_ptr;
+ zend_class_entry *GregorianCalendar_ce_ptr;
+--- a/ext/intl/calendar/calendar_class.h
++++ b/ext/intl/calendar/calendar_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_CALENDAR_POINTER
+ typedef void Calendar;
++#else
++using icu::Calendar;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/calendar/calendar_methods.cpp
++++ b/ext/intl/calendar/calendar_methods.cpp
+@@ -40,6 +40,8 @@ extern "C" {
+ }
+ #include "../common/common_enum.h"
+ 
++using icu::Locale;
++
+ U_CFUNC PHP_METHOD(IntlCalendar, __construct)
+ {
+ 	zend_throw_exception( NULL,
+--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
++++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
+@@ -23,6 +23,8 @@
+ #include <unicode/locid.h>
+ #include <unicode/calendar.h>
+ #include <unicode/gregocal.h>
++#include <unicode/ustring.h>
++
+ extern "C" {
+ #include "../php_intl.h"
+ #define USE_TIMEZONE_POINTER 1
+@@ -32,6 +34,11 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++using icu::UnicodeString;
++using icu::StringPiece;
++
+ static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
+ 	return (GregorianCalendar*)co->ucal;
+ }
+--- a/ext/intl/common/common_date.cpp
++++ b/ext/intl/common/common_date.cpp
+@@ -25,6 +25,9 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::TimeZone;
++using icu::UnicodeString;
++
+ #ifndef INFINITY
+ #define INFINITY (DBL_MAX+DBL_MAX)
+ #endif
+--- a/ext/intl/common/common_date.h
++++ b/ext/intl/common/common_date.h
+@@ -28,6 +28,8 @@ U_CDECL_END
+ 
+ #include <unicode/timezone.h>
+ 
++using icu::TimeZone;
++
+ U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func TSRMLS_DC);
+ U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
+ 		intl_error *err, const char *func TSRMLS_DC);
+--- a/ext/intl/common/common_enum.h
++++ b/ext/intl/common/common_enum.h
+@@ -69,6 +69,7 @@ U_CFUNC void zoi_with_current_get_current_data(zend_object_iterator *iter, zval
+ U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter TSRMLS_DC);
+ 
+ #ifdef __cplusplus
++using icu::StringEnumeration;
+ U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object TSRMLS_DC);
+ #endif
+ 
+--- a/ext/intl/converter/converter.c
++++ b/ext/intl/converter/converter.c
+@@ -18,6 +18,8 @@
+ #include "zend_exceptions.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
++#include <unicode/utf16.h>
+ #include <unicode/ucnv.h>
+ #include <unicode/ustring.h>
+ 
+--- a/ext/intl/dateformat/dateformat_format_object.cpp
++++ b/ext/intl/dateformat/dateformat_format_object.cpp
+@@ -33,6 +33,12 @@ extern "C" {
+ #include "../common/common_date.h"
+ }
+ 
++using icu::Locale;
++using icu::DateFormat;
++using icu::GregorianCalendar;
++using icu::StringPiece;
++using icu::SimpleDateFormat;
++
+ static const DateFormat::EStyle valid_styles[] = {
+ 		DateFormat::kNone,
+ 		DateFormat::kFull,
+--- a/ext/intl/dateformat/dateformat_helpers.cpp
++++ b/ext/intl/dateformat/dateformat_helpers.cpp
+@@ -28,6 +28,8 @@ extern "C" {
+ #include "../calendar/calendar_class.h"
+ }
+ 
++using icu::GregorianCalendar;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/dateformat/dateformat_helpers.h
++++ b/ext/intl/dateformat/dateformat_helpers.h
+@@ -22,11 +22,16 @@
+ #endif
+ 
+ #include <unicode/calendar.h>
++#include <unicode/datefmt.h>
+ 
+ extern "C" {
+ #include "../php_intl.h"
+ }
+ 
++using icu::Locale;
++using icu::Calendar;
++using icu::DateFormat;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/grapheme/grapheme_string.c
++++ b/ext/intl/grapheme/grapheme_string.c
+@@ -24,6 +24,7 @@
+ #include "grapheme_util.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
+ #include <unicode/ucol.h>
+ #include <unicode/ustring.h>
+ #include <unicode/ubrk.h>
+@@ -860,10 +861,10 @@ PHP_FUNCTION(grapheme_extract)
+ 	pstr = str + start;
+ 
+ 	/* just in case pstr points in the middle of a character, move forward to the start of the next char */
+-	if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++	if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+ 		unsigned char *str_end = str + str_len;
+ 
+-		while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++		while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+ 			pstr++;
+ 			if ( pstr >= str_end ) {
+ 				intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
+--- a/ext/intl/intl_convertcpp.h
++++ b/ext/intl/intl_convertcpp.h
+@@ -25,6 +25,8 @@
+ 
+ #include <unicode/unistr.h>
+ 
++using icu::UnicodeString;
++
+ int intl_stringFromChar(UnicodeString &ret, char *str, int32_t str_len, UErrorCode *status);
+ 
+ int intl_charFromString(const UnicodeString &from, char **res, int *res_len, UErrorCode *status);
+--- a/ext/intl/msgformat/msgformat_helpers.cpp
++++ b/ext/intl/msgformat/msgformat_helpers.cpp
+@@ -76,6 +76,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
+ #endif
+ U_NAMESPACE_END
+ 
++using icu::Formattable;
++using icu::Format;
++using icu::DateFormat;
++using icu::MessageFormat;
++#ifdef HAS_MESSAGE_PATTERN
++using icu::MessagePattern;
++#endif
++using icu::MessageFormatAdapter;
++using icu::FieldPosition;
++
+ U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
+ {
+ 	int32_t fmt_count = 0;
+@@ -227,15 +237,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 					UnicodeString typeString = mp.getSubstring(type_part);
+ 					/* This is all based on the rules in the docs for MessageFormat
+ 					 * @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
+-					if (typeString == "number") {
++#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
++					if (typeString == ASCII_LITERAL("number")) {
+ 						MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
+ 						if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
+ 							UnicodeString styleString = mp.getSubstring(style_part);
+-							if (styleString == "integer") {
++							if (styleString == ASCII_LITERAL("integer")) {
+ 								type = Formattable::kInt64;
+-							} else if (styleString == "currency") {
++							} else if (styleString == ASCII_LITERAL("currency")) {
+ 								type = Formattable::kDouble;
+-							} else if (styleString == "percent") {
++							} else if (styleString == ASCII_LITERAL("percent")) {
+ 								type = Formattable::kDouble;
+ 							} else { /* some style invalid/unknown to us */
+ 								type = Formattable::kDouble;
+@@ -243,12 +254,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 						} else { // if missing style, part, make it a double
+ 							type = Formattable::kDouble;
+ 						}
+-					} else if ((typeString == "date") || (typeString == "time")) {
++					} else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
+ 						type = Formattable::kDate;
+-					} else if ((typeString == "spellout") || (typeString == "ordinal")
+-							|| (typeString == "duration")) {
++					} else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
++							|| (typeString == ASCII_LITERAL("duration"))) {
+ 						type = Formattable::kDouble;
+ 					}
++#undef ASCII_LITERAL
+ 				} else {
+ 					/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
+ 					 * UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
+--- a/ext/intl/normalizer/normalizer_normalize.c
++++ b/ext/intl/normalizer/normalizer_normalize.c
+@@ -24,6 +24,7 @@
+ #include "normalizer_class.h"
+ #include "normalizer_normalize.h"
+ #include "intl_convert.h"
++#include <unicode/utf8.h>
+ 
+ /* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
+  * Normalize a string. }}} */
+--- a/ext/intl/timezone/timezone_class.cpp
++++ b/ext/intl/timezone/timezone_class.cpp
+@@ -37,6 +37,8 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::Calendar;
++
+ /* {{{ Global variables */
+ U_CDECL_BEGIN
+ zend_class_entry *TimeZone_ce_ptr = NULL;
+--- a/ext/intl/timezone/timezone_class.h
++++ b/ext/intl/timezone/timezone_class.h
+@@ -29,6 +29,8 @@
+ 
+ #ifndef USE_TIMEZONE_POINTER
+ typedef void TimeZone;
++#else
++using icu::TimeZone;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/timezone/timezone_methods.cpp
++++ b/ext/intl/timezone/timezone_methods.cpp
+@@ -23,6 +23,7 @@
+ #include <unicode/locid.h>
+ #include <unicode/timezone.h>
+ #include <unicode/ustring.h>
++#include <unicode/calendar.h>
+ #include "intl_convertcpp.h"
+ 
+ #include "../common/common_date.h"
+@@ -37,6 +38,9 @@ extern "C" {
+ }
+ #include "common/common_enum.h"
+ 
++using icu::Locale;
++using icu::Calendar;
++
+ U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
+ {
+ 	zend_throw_exception( NULL,
diff --git a/dev-lang/php/files/php-7.0.33-intl-detect-icu-via-pkg-config.patch b/dev-lang/php/files/php-7.0.33-intl-detect-icu-via-pkg-config.patch
new file mode 100644
index 000000000000..d23ec91fc83f
--- /dev/null
+++ b/dev-lang/php/files/php-7.0.33-intl-detect-icu-via-pkg-config.patch
@@ -0,0 +1,159 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
+https://github.com/php/php-src/pull/3701
+https://github.com/php/php-src/commit/2bd299f7318492fd7e5cafffa562d76ba60e69d4
+
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2205,49 +2205,16 @@ dnl
+ dnl Common setup macro for ICU
+ dnl
+ AC_DEFUN([PHP_SETUP_ICU],[
+-  PHP_ARG_WITH(icu-dir,,
+-  [  --with-icu-dir=DIR      Specify where ICU libraries and headers can be found], DEFAULT, no)
++  PKG_CHECK_MODULES([ICU], [icu-io >= 50.1])
+ 
+-  if test "$PHP_ICU_DIR" = "no"; then
+-    PHP_ICU_DIR=DEFAULT
+-  fi
+-
+-  if test "$PHP_ICU_DIR" = "DEFAULT"; then
+-    dnl Try to find icu-config
+-    AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
+-  else
+-    ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
+-  fi
+-
+-  AC_MSG_CHECKING([for location of ICU headers and libraries])
+-
+-  dnl Trust icu-config to know better what the install prefix is..
+-  icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
+-  if test "$?" != "0" || test -z "$icu_install_prefix"; then
+-    AC_MSG_RESULT([not found])
+-    AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
+-  else
+-    AC_MSG_RESULT([$icu_install_prefix])
+-
+-    dnl Check ICU version
+-    AC_MSG_CHECKING([for ICU 4.0 or greater])
+-    icu_version_full=`$ICU_CONFIG --version`
+-    ac_IFS=$IFS
+-    IFS="."
+-    set $icu_version_full
+-    IFS=$ac_IFS
+-    icu_version=`expr [$]1 \* 1000 + [$]2`
+-    AC_MSG_RESULT([found $icu_version_full])
++  PHP_EVAL_INCLINE($ICU_CFLAGS)
++  PHP_EVAL_LIBLINE($ICU_LIBS, $1)
+ 
+-    if test "$icu_version" -lt "4000"; then
+-      AC_MSG_ERROR([ICU version 4.0 or later is required])
+-    fi
++  ICU_CFLAGS="$ICU_CFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
++  ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
+ 
+-    ICU_VERSION=$icu_version
+-    ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
+-    ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
+-    PHP_EVAL_INCLINE($ICU_INCS)
+-    PHP_EVAL_LIBLINE($ICU_LIBS, $1)
++  if test "$PKG_CONFIG icu-io --atleast-version=60"; then
++    ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
+   fi
+ ])
+ 
+--- a/ext/intl/config.m4
++++ b/ext/intl/config.m4
+@@ -9,18 +9,10 @@ if test "$PHP_INTL" != "no"; then
+   PHP_SETUP_ICU(INTL_SHARED_LIBADD)
+   PHP_SUBST(INTL_SHARED_LIBADD)
+   PHP_REQUIRE_CXX()
+-  if test "$icu_version" -ge "4002"; then
+-    icu_spoof_src=" spoofchecker/spoofchecker_class.c \
+-    spoofchecker/spoofchecker.c\
+-    spoofchecker/spoofchecker_create.c\
+-    spoofchecker/spoofchecker_main.c"
+-  else
+-    icu_spoof_src=""
+-  fi
++  INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
+   PHP_NEW_EXTENSION(intl, php_intl.c \
+     intl_error.c \
+     intl_convert.c \
+-	intl_convertcpp.cpp \
+     collator/collator.c \
+     collator/collator_class.c \
+     collator/collator_sort.c \
+@@ -32,8 +24,6 @@ if test "$PHP_INTL" != "no"; then
+     collator/collator_is_numeric.c \
+     collator/collator_error.c \
+     common/common_error.c \
+-	common/common_enum.cpp \
+-	common/common_date.cpp \
+     converter/converter.c \
+     formatter/formatter.c \
+     formatter/formatter_main.c \
+@@ -53,17 +43,12 @@ if test "$PHP_INTL" != "no"; then
+     dateformat/dateformat_attr.c \
+     dateformat/dateformat_data.c \
+     dateformat/dateformat_format.c \
+-    dateformat/dateformat_format_object.cpp \
+     dateformat/dateformat_parse.c \
+-    dateformat/dateformat_create.cpp \
+-    dateformat/dateformat_attrcpp.cpp \
+-    dateformat/dateformat_helpers.cpp \
+     msgformat/msgformat.c \
+     msgformat/msgformat_attr.c \
+     msgformat/msgformat_class.c \
+     msgformat/msgformat_data.c  \
+     msgformat/msgformat_format.c \
+-    msgformat/msgformat_helpers.cpp \
+     msgformat/msgformat_parse.c \
+     grapheme/grapheme_string.c \
+     grapheme/grapheme_util.c \
+@@ -73,6 +58,21 @@ if test "$PHP_INTL" != "no"; then
+     transliterator/transliterator.c \
+     transliterator/transliterator_class.c \
+     transliterator/transliterator_methods.c \
++    uchar/uchar.c \
++    idn/idn.c \
++    spoofchecker/spoofchecker_class.c \
++    spoofchecker/spoofchecker.c\
++    spoofchecker/spoofchecker_create.c\
++    spoofchecker/spoofchecker_main.c, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
++
++  PHP_INTL_CPP_SOURCES="intl_convertcpp.cpp \
++    common/common_enum.cpp \
++    common/common_date.cpp \
++    dateformat/dateformat_format_object.cpp \
++    dateformat/dateformat_create.cpp \
++    dateformat/dateformat_attrcpp.cpp \
++    dateformat/dateformat_helpers.cpp \
++    msgformat/msgformat_helpers.cpp \
+     timezone/timezone_class.cpp \
+     timezone/timezone_methods.cpp \
+     calendar/calendar_class.cpp \
+@@ -83,10 +83,15 @@ if test "$PHP_INTL" != "no"; then
+     breakiterator/breakiterator_methods.cpp \
+     breakiterator/rulebasedbreakiterator_methods.cpp \
+     breakiterator/codepointiterator_internal.cpp \
+-    breakiterator/codepointiterator_methods.cpp \
+-    uchar/uchar.c \
+-    idn/idn.c \
+-    $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1,cxx)
++    breakiterator/codepointiterator_methods.cpp"
++
++  PHP_INTL_CPP_FLAGS="$ICU_CXXFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
++  if test "$ext_shared" = "no"; then
++    PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS)
++  else
++    PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS, shared_objects_intl, yes)
++  fi
++
+   PHP_ADD_BUILD_DIR($ext_builddir/collator)
+   PHP_ADD_BUILD_DIR($ext_builddir/converter)
+   PHP_ADD_BUILD_DIR($ext_builddir/common)
+-- 
+2.19.2
+
diff --git a/dev-lang/php/files/php-7.0.33-intl-icu-memory-corruption.patch b/dev-lang/php/files/php-7.0.33-intl-icu-memory-corruption.patch
new file mode 100644
index 000000000000..e6e7f5917c5b
--- /dev/null
+++ b/dev-lang/php/files/php-7.0.33-intl-icu-memory-corruption.patch
@@ -0,0 +1,91 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/45a05f38410d4a67c8c83c09906e2cfb42fc6e4c
+https://github.com/php/php-src/commit/534684d1042978f3c21caf9b665a7aca27f3f325
+
+--- a/ext/intl/msgformat/msgformat_helpers.cpp
++++ b/ext/intl/msgformat/msgformat_helpers.cpp
+@@ -27,6 +27,7 @@
+ #include <unicode/timezone.h>
+ #include <unicode/datefmt.h>
+ #include <unicode/calendar.h>
++#include <unicode/strenum.h>
+ 
+ #include <vector>
+ 
+@@ -45,6 +46,7 @@ extern "C" {
+ 
+ #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
+ #define HAS_MESSAGE_PATTERN 1
++#define HAS_MISALLOCATE_MEMORY_BUG 1
+ #endif
+ 
+ U_NAMESPACE_BEGIN
+@@ -345,6 +347,26 @@ static void umsg_set_timezone(MessageFormatter_object *mfo,
+ 		return; /* already done */
+ 	}
+ 
++#ifdef HAS_MISALLOCATE_MEMORY_BUG
++	/* There is a bug in ICU which prevents MessageFormatter::getFormats()
++	   to handle more than 10 formats correctly. The enumerator could be
++	   used to walk through the present formatters using getFormat(), which
++	   however seems to provide just a readonly access. This workaround
++	   prevents crash when there are > 10 formats but doesn't set any error.
++	   As a result, only DateFormatters with > 10 subformats are affected.
++	   This workaround should be ifdef'd out, when the bug has been fixed
++	   in ICU. */
++	icu::StringEnumeration* fnames = mf->getFormatNames(err.code);
++	if (!fnames || U_FAILURE(err.code)) {
++		return;
++	}
++	count = fnames->count(err.code);
++	delete fnames;
++	if (count > 10) {
++		return;
++	}
++#endif
++
+ 	formats = mf->getFormats(count);
+ 
+ 	if (formats == NULL) {
+--- /dev/null
++++ b/ext/intl/tests/bug74484_MessageFormatter.phpt
+@@ -0,0 +1,35 @@
++--TEST--
++Bug #74484 MessageFormatter::formatMessage memory corruption with 11+ named placeholder
++--SKIPIF--
++<?php
++if (!extension_loaded('intl'))
++	die('skip intl extension not enabled');
++if (version_compare(INTL_ICU_VERSION, '4.8') < 0)
++	die('skip for ICU 4.8+');
++?>
++--FILE--
++<?php
++$text = "{a} {b} {c} {d} {e} {f} {g} {h} {i} {j} {k} {l}";
++
++$vars = array(
++  'a' => 1,
++  'b' => 2,
++  'c' => 3,
++  'd' => 4,
++  'e' => 5,
++  'f' => 6,
++  'g' => 7,
++  'h' => 8,
++  'i' => 9,
++  'j' => 10,
++  'k' => 11,
++  'l' => 12
++);
++
++var_dump(MessageFormatter::formatMessage('en_US', $text, $vars));
++
++?>
++==DONE==
++--EXPECT--
++string(26) "1 2 3 4 5 6 7 8 9 10 11 12"
++==DONE==
+-- 
+2.19.2
+
diff --git a/dev-lang/php/files/php-7.0.33-intl-use-icu-namespace.patch b/dev-lang/php/files/php-7.0.33-intl-use-icu-namespace.patch
new file mode 100644
index 000000000000..4b25abe20550
--- /dev/null
+++ b/dev-lang/php/files/php-7.0.33-intl-use-icu-namespace.patch
@@ -0,0 +1,369 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
+https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
+https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
+
+--- a/ext/intl/breakiterator/breakiterator_class.cpp
++++ b/ext/intl/breakiterator/breakiterator_class.cpp
+@@ -38,6 +38,7 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::RuleBasedBreakIterator;
+ 
+ /* {{{ Global variables */
+ zend_class_entry *BreakIterator_ce_ptr;
+--- a/ext/intl/breakiterator/breakiterator_class.h
++++ b/ext/intl/breakiterator/breakiterator_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_BREAKITERATOR_POINTER
+ typedef void BreakIterator;
++#else
++using icu::BreakIterator;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/breakiterator/breakiterator_methods.cpp
++++ b/ext/intl/breakiterator/breakiterator_methods.cpp
+@@ -32,6 +32,8 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::BreakIterator;
++using icu::Locale;
+ 
+ U_CFUNC PHP_METHOD(BreakIterator, __construct)
+ {
+--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
++++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
+@@ -33,6 +33,8 @@ typedef union {
+ 
+ using namespace PHP;
+ 
++using icu::UCharCharacterIterator;
++
+ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
+ 
+ CodePointBreakIterator::CodePointBreakIterator()
+--- a/ext/intl/breakiterator/codepointiterator_internal.h
++++ b/ext/intl/breakiterator/codepointiterator_internal.h
+@@ -18,8 +18,11 @@
+ #define CODEPOINTITERATOR_INTERNAL_H
+ 
+ #include <unicode/brkiter.h>
++#include <unicode/unistr.h>
+ 
+-using U_ICU_NAMESPACE::BreakIterator;
++using icu::BreakIterator;
++using icu::CharacterIterator;
++using icu::UnicodeString;
+ 
+ namespace PHP {
+ 
+--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
++++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+@@ -26,6 +26,9 @@ extern "C" {
+ #include "../intl_convertcpp.h"
+ #include "../intl_common.h"
+ 
++using icu::RuleBasedBreakIterator;
++using icu::Locale;
++
+ static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
+ 	return (RuleBasedBreakIterator*)bio->biter;
+ }
+--- a/ext/intl/calendar/calendar_class.cpp
++++ b/ext/intl/calendar/calendar_class.cpp
+@@ -34,6 +34,9 @@ extern "C" {
+ #include <assert.h>
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++
+ /* {{{ Global variables */
+ zend_class_entry *Calendar_ce_ptr;
+ zend_class_entry *GregorianCalendar_ce_ptr;
+--- a/ext/intl/calendar/calendar_class.h
++++ b/ext/intl/calendar/calendar_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_CALENDAR_POINTER
+ typedef void Calendar;
++#else
++using icu::Calendar;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/calendar/calendar_methods.cpp
++++ b/ext/intl/calendar/calendar_methods.cpp
+@@ -40,6 +40,8 @@ extern "C" {
+ }
+ #include "../common/common_enum.h"
+ 
++using icu::Locale;
++
+ U_CFUNC PHP_METHOD(IntlCalendar, __construct)
+ {
+ 	zend_throw_exception( NULL,
+--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
++++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
+@@ -23,6 +23,8 @@
+ #include <unicode/locid.h>
+ #include <unicode/calendar.h>
+ #include <unicode/gregocal.h>
++#include <unicode/ustring.h>
++
+ extern "C" {
+ #include "../php_intl.h"
+ #include "../intl_common.h"
+@@ -34,6 +36,11 @@ extern "C" {
+ #include "zend_exceptions.h"
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++using icu::UnicodeString;
++using icu::StringPiece;
++
+ static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
+ 	return (GregorianCalendar*)co->ucal;
+ }
+--- a/ext/intl/common/common_date.cpp
++++ b/ext/intl/common/common_date.cpp
+@@ -25,6 +25,9 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::TimeZone;
++using icu::UnicodeString;
++
+ #ifndef INFINITY
+ #define INFINITY (DBL_MAX+DBL_MAX)
+ #endif
+--- a/ext/intl/common/common_date.h
++++ b/ext/intl/common/common_date.h
+@@ -28,6 +28,8 @@ U_CDECL_END
+ 
+ #include <unicode/timezone.h>
+ 
++using icu::TimeZone;
++
+ U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func);
+ U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
+ 		intl_error *err, const char *func);
+--- a/ext/intl/common/common_enum.h
++++ b/ext/intl/common/common_enum.h
+@@ -75,6 +75,7 @@ U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
+ U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter);
+ 
+ #ifdef __cplusplus
++using icu::StringEnumeration;
+ U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
+ #endif
+ 
+--- a/ext/intl/converter/converter.c
++++ b/ext/intl/converter/converter.c
+@@ -18,6 +18,8 @@
+ #include "zend_exceptions.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
++#include <unicode/utf16.h>
+ #include <unicode/ucnv.h>
+ #include <unicode/ustring.h>
+ 
+--- a/ext/intl/dateformat/dateformat_format_object.cpp
++++ b/ext/intl/dateformat/dateformat_format_object.cpp
+@@ -33,6 +33,12 @@ extern "C" {
+ #include "../common/common_date.h"
+ }
+ 
++using icu::Locale;
++using icu::DateFormat;
++using icu::GregorianCalendar;
++using icu::StringPiece;
++using icu::SimpleDateFormat;
++
+ static const DateFormat::EStyle valid_styles[] = {
+ 		DateFormat::kNone,
+ 		DateFormat::kFull,
+--- a/ext/intl/dateformat/dateformat_helpers.cpp
++++ b/ext/intl/dateformat/dateformat_helpers.cpp
+@@ -28,6 +28,8 @@ extern "C" {
+ #include "../calendar/calendar_class.h"
+ }
+ 
++using icu::GregorianCalendar;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/dateformat/dateformat_helpers.h
++++ b/ext/intl/dateformat/dateformat_helpers.h
+@@ -22,11 +22,16 @@
+ #endif
+ 
+ #include <unicode/calendar.h>
++#include <unicode/datefmt.h>
+ 
+ extern "C" {
+ #include "../php_intl.h"
+ }
+ 
++using icu::Locale;
++using icu::Calendar;
++using icu::DateFormat;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/grapheme/grapheme_string.c
++++ b/ext/intl/grapheme/grapheme_string.c
+@@ -24,6 +24,7 @@
+ #include "grapheme_util.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
+ #include <unicode/ucol.h>
+ #include <unicode/ustring.h>
+ #include <unicode/ubrk.h>
+@@ -831,10 +832,10 @@ PHP_FUNCTION(grapheme_extract)
+ 	pstr = str + start;
+ 
+ 	/* just in case pstr points in the middle of a character, move forward to the start of the next char */
+-	if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+-		char *str_end = str + str_len;
++	if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++		unsigned char *str_end = str + str_len;
+ 
+-		while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++		while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+ 			pstr++;
+ 			if ( pstr >= str_end ) {
+ 				intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
+--- a/ext/intl/intl_convertcpp.h
++++ b/ext/intl/intl_convertcpp.h
+@@ -26,6 +26,8 @@
+ #include <unicode/unistr.h>
+ #include <zend_types.h>
+ 
++using icu::UnicodeString;
++
+ int intl_stringFromChar(UnicodeString &ret, char *str, size_t str_len, UErrorCode *status);
+ 
+ zend_string* intl_charFromString(const UnicodeString &from, UErrorCode *status);
+--- a/ext/intl/msgformat/msgformat_helpers.cpp
++++ b/ext/intl/msgformat/msgformat_helpers.cpp
+@@ -76,6 +76,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
+ #endif
+ U_NAMESPACE_END
+ 
++using icu::Formattable;
++using icu::Format;
++using icu::DateFormat;
++using icu::MessageFormat;
++#ifdef HAS_MESSAGE_PATTERN
++using icu::MessagePattern;
++#endif
++using icu::MessageFormatAdapter;
++using icu::FieldPosition;
++
+ U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
+ {
+ 	int32_t fmt_count = 0;
+@@ -227,15 +237,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 					UnicodeString typeString = mp.getSubstring(type_part);
+ 					/* This is all based on the rules in the docs for MessageFormat
+ 					 * @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
+-					if (typeString == "number") {
++#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
++					if (typeString == ASCII_LITERAL("number")) {
+ 						MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
+ 						if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
+ 							UnicodeString styleString = mp.getSubstring(style_part);
+-							if (styleString == "integer") {
++							if (styleString == ASCII_LITERAL("integer")) {
+ 								type = Formattable::kInt64;
+-							} else if (styleString == "currency") {
++							} else if (styleString == ASCII_LITERAL("currency")) {
+ 								type = Formattable::kDouble;
+-							} else if (styleString == "percent") {
++							} else if (styleString == ASCII_LITERAL("percent")) {
+ 								type = Formattable::kDouble;
+ 							} else { /* some style invalid/unknown to us */
+ 								type = Formattable::kDouble;
+@@ -243,12 +254,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 						} else { // if missing style, part, make it a double
+ 							type = Formattable::kDouble;
+ 						}
+-					} else if ((typeString == "date") || (typeString == "time")) {
++					} else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
+ 						type = Formattable::kDate;
+-					} else if ((typeString == "spellout") || (typeString == "ordinal")
+-							|| (typeString == "duration")) {
++					} else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
++							|| (typeString == ASCII_LITERAL("duration"))) {
+ 						type = Formattable::kDouble;
+ 					}
++#undef ASCII_LITERAL
+ 				} else {
+ 					/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
+ 					 * UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
+--- a/ext/intl/normalizer/normalizer_normalize.c
++++ b/ext/intl/normalizer/normalizer_normalize.c
+@@ -24,6 +24,7 @@
+ #include "normalizer_class.h"
+ #include "normalizer_normalize.h"
+ #include "intl_convert.h"
++#include <unicode/utf8.h>
+ 
+ /* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
+  * Normalize a string. }}} */
+--- a/ext/intl/timezone/timezone_class.cpp
++++ b/ext/intl/timezone/timezone_class.cpp
+@@ -37,6 +37,8 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::Calendar;
++
+ /* {{{ Global variables */
+ U_CDECL_BEGIN
+ zend_class_entry *TimeZone_ce_ptr = NULL;
+--- a/ext/intl/timezone/timezone_class.h
++++ b/ext/intl/timezone/timezone_class.h
+@@ -29,6 +29,8 @@
+ 
+ #ifndef USE_TIMEZONE_POINTER
+ typedef void TimeZone;
++#else
++using icu::TimeZone;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/timezone/timezone_methods.cpp
++++ b/ext/intl/timezone/timezone_methods.cpp
+@@ -23,6 +23,7 @@
+ #include <unicode/locid.h>
+ #include <unicode/timezone.h>
+ #include <unicode/ustring.h>
++#include <unicode/calendar.h>
+ #include "intl_convertcpp.h"
+ 
+ #include "../common/common_date.h"
+@@ -37,6 +38,9 @@ extern "C" {
+ }
+ #include "common/common_enum.h"
+ 
++using icu::Locale;
++using icu::Calendar;
++
+ U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
+ {
+ 	zend_throw_exception( NULL,
+-- 
+2.19.2
+
diff --git a/dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch b/dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch
new file mode 100644
index 000000000000..2d4254d6e59e
--- /dev/null
+++ b/dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch
@@ -0,0 +1,121 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
+https://github.com/php/php-src/pull/3701
+https://github.com/php/php-src/commit/2bd299f7318492fd7e5cafffa562d76ba60e69d4
+
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2205,52 +2205,16 @@ dnl
+ dnl Common setup macro for ICU
+ dnl
+ AC_DEFUN([PHP_SETUP_ICU],[
+-  PHP_ARG_WITH(icu-dir,,
+-  [  --with-icu-dir=DIR      Specify where ICU libraries and headers can be found], DEFAULT, no)
++  PKG_CHECK_MODULES([ICU], [icu-io >= 50.1])
+ 
+-  if test "$PHP_ICU_DIR" = "no"; then
+-    PHP_ICU_DIR=DEFAULT
+-  fi
+-
+-  if test "$PHP_ICU_DIR" = "DEFAULT"; then
+-    dnl Try to find icu-config
+-    AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
+-  else
+-    ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
+-  fi
+-
+-  AC_MSG_CHECKING([for location of ICU headers and libraries])
+-
+-  dnl Trust icu-config to know better what the install prefix is..
+-  icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
+-  if test "$?" != "0" || test -z "$icu_install_prefix"; then
+-    AC_MSG_RESULT([not found])
+-    AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
+-  else
+-    AC_MSG_RESULT([$icu_install_prefix])
+-
+-    dnl Check ICU version
+-    AC_MSG_CHECKING([for ICU 4.0 or greater])
+-    icu_version_full=`$ICU_CONFIG --version`
+-    ac_IFS=$IFS
+-    IFS="."
+-    set $icu_version_full
+-    IFS=$ac_IFS
+-    icu_version=`expr [$]1 \* 1000 + [$]2`
+-    AC_MSG_RESULT([found $icu_version_full])
+-
+-    if test "$icu_version" -lt "4000"; then
+-      AC_MSG_ERROR([ICU version 4.0 or later is required])
+-    fi
++  PHP_EVAL_INCLINE($ICU_CFLAGS)
++  PHP_EVAL_LIBLINE($ICU_LIBS, $1)
+ 
+-    ICU_VERSION=$icu_version
+-    ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
+-    ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
+-    PHP_EVAL_INCLINE($ICU_INCS)
+-    PHP_EVAL_LIBLINE($ICU_LIBS, $1)
++  ICU_CFLAGS="$ICU_CFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
++  ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
+ 
+-    ICU_CXXFLAGS=`$ICU_CONFIG --cxxflags`
+-    ICU_CXXFLAGS="$ICU_CXXFLAGS -DU_USING_ICU_NAMESPACE=1"
++  if test "$PKG_CONFIG icu-io --atleast-version=60"; then
++    ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
+   fi
+ ])
+ 
+--- a/ext/intl/config.m4
++++ b/ext/intl/config.m4
+@@ -9,15 +9,7 @@ if test "$PHP_INTL" != "no"; then
+   PHP_SETUP_ICU(INTL_SHARED_LIBADD)
+   PHP_SUBST(INTL_SHARED_LIBADD)
+   PHP_REQUIRE_CXX()
+-  INTL_COMMON_FLAGS="$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
+-  if test "$icu_version" -ge "4002"; then
+-    icu_spoof_src=" spoofchecker/spoofchecker_class.c \
+-    spoofchecker/spoofchecker.c\
+-    spoofchecker/spoofchecker_create.c\
+-    spoofchecker/spoofchecker_main.c"
+-  else
+-    icu_spoof_src=""
+-  fi
++  INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
+   PHP_NEW_EXTENSION(intl, php_intl.c \
+     intl_error.c \
+     intl_convert.c \
+@@ -68,9 +60,12 @@ if test "$PHP_INTL" != "no"; then
+     transliterator/transliterator_methods.c \
+     uchar/uchar.c \
+     idn/idn.c \
+-    $icu_spoof_src, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
++    spoofchecker/spoofchecker_class.c \
++    spoofchecker/spoofchecker.c\
++    spoofchecker/spoofchecker_create.c\
++    spoofchecker/spoofchecker_main.c, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
+ 
+-  PHP_INTL_CXX_SOURCES="intl_convertcpp.cpp \
++  PHP_INTL_CPP_SOURCES="intl_convertcpp.cpp \
+     common/common_enum.cpp \
+     common/common_date.cpp \
+     dateformat/dateformat_format_object.cpp \
+@@ -89,11 +84,12 @@ if test "$PHP_INTL" != "no"; then
+     breakiterator/rulebasedbreakiterator_methods.cpp \
+     breakiterator/codepointiterator_internal.cpp \
+     breakiterator/codepointiterator_methods.cpp"
+-  PHP_INTL_CXX_FLAGS="$INTL_COMMON_FLAGS $ICU_CXXFLAGS"
++
++  PHP_INTL_CPP_FLAGS="$ICU_CXXFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
+   if test "$ext_shared" = "no"; then
+-    PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CXX_SOURCES, $PHP_INTL_CXX_FLAGS)
++    PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS)
+   else
+-    PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CXX_SOURCES, $PHP_INTL_CXX_FLAGS, shared_objects_intl, yes)
++    PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS, shared_objects_intl, yes)
+   fi
+ 
+   PHP_ADD_BUILD_DIR($ext_builddir/collator)
+-- 
+2.19.2
+
diff --git a/dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch b/dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch
new file mode 100644
index 000000000000..5a1cc472f109
--- /dev/null
+++ b/dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch
@@ -0,0 +1,379 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
+https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
+https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
+
+--- a/ext/intl/breakiterator/breakiterator_class.cpp
++++ b/ext/intl/breakiterator/breakiterator_class.cpp
+@@ -38,6 +38,7 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::RuleBasedBreakIterator;
+ 
+ /* {{{ Global variables */
+ zend_class_entry *BreakIterator_ce_ptr;
+--- a/ext/intl/breakiterator/breakiterator_class.h
++++ b/ext/intl/breakiterator/breakiterator_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_BREAKITERATOR_POINTER
+ typedef void BreakIterator;
++#else
++using icu::BreakIterator;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/breakiterator/breakiterator_methods.cpp
++++ b/ext/intl/breakiterator/breakiterator_methods.cpp
+@@ -32,6 +32,8 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::BreakIterator;
++using icu::Locale;
+ 
+ U_CFUNC PHP_METHOD(BreakIterator, __construct)
+ {
+--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
++++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
+@@ -33,6 +33,8 @@ typedef union {
+ 
+ using namespace PHP;
+ 
++using icu::UCharCharacterIterator;
++
+ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
+ 
+ CodePointBreakIterator::CodePointBreakIterator()
+--- a/ext/intl/breakiterator/codepointiterator_internal.h
++++ b/ext/intl/breakiterator/codepointiterator_internal.h
+@@ -18,8 +18,11 @@
+ #define CODEPOINTITERATOR_INTERNAL_H
+ 
+ #include <unicode/brkiter.h>
++#include <unicode/unistr.h>
+ 
+-using U_ICU_NAMESPACE::BreakIterator;
++using icu::BreakIterator;
++using icu::CharacterIterator;
++using icu::UnicodeString;
+ 
+ namespace PHP {
+ 
+--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
++++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+@@ -26,6 +26,9 @@ extern "C" {
+ #include "../intl_convertcpp.h"
+ #include "../intl_common.h"
+ 
++using icu::RuleBasedBreakIterator;
++using icu::Locale;
++
+ static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
+ 	return (RuleBasedBreakIterator*)bio->biter;
+ }
+--- a/ext/intl/calendar/calendar_class.cpp
++++ b/ext/intl/calendar/calendar_class.cpp
+@@ -34,6 +34,9 @@ extern "C" {
+ #include <assert.h>
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++
+ /* {{{ Global variables */
+ zend_class_entry *Calendar_ce_ptr;
+ zend_class_entry *GregorianCalendar_ce_ptr;
+--- a/ext/intl/calendar/calendar_class.h
++++ b/ext/intl/calendar/calendar_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_CALENDAR_POINTER
+ typedef void Calendar;
++#else
++using icu::Calendar;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/calendar/calendar_methods.cpp
++++ b/ext/intl/calendar/calendar_methods.cpp
+@@ -40,6 +40,8 @@ extern "C" {
+ }
+ #include "../common/common_enum.h"
+ 
++using icu::Locale;
++
+ U_CFUNC PHP_METHOD(IntlCalendar, __construct)
+ {
+ 	zend_throw_exception( NULL,
+--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
++++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
+@@ -23,6 +23,8 @@
+ #include <unicode/locid.h>
+ #include <unicode/calendar.h>
+ #include <unicode/gregocal.h>
++#include <unicode/ustring.h>
++
+ extern "C" {
+ #include "../php_intl.h"
+ #include "../intl_common.h"
+@@ -34,6 +36,11 @@ extern "C" {
+ #include "zend_exceptions.h"
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++using icu::UnicodeString;
++using icu::StringPiece;
++
+ static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
+ 	return (GregorianCalendar*)co->ucal;
+ }
+--- a/ext/intl/common/common_date.cpp
++++ b/ext/intl/common/common_date.cpp
+@@ -25,6 +25,9 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::TimeZone;
++using icu::UnicodeString;
++
+ #ifndef INFINITY
+ #define INFINITY (DBL_MAX+DBL_MAX)
+ #endif
+--- a/ext/intl/common/common_date.h
++++ b/ext/intl/common/common_date.h
+@@ -28,6 +28,8 @@ U_CDECL_END
+ 
+ #include <unicode/timezone.h>
+ 
++using icu::TimeZone;
++
+ U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func);
+ U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
+ 		intl_error *err, const char *func);
+--- a/ext/intl/common/common_enum.h
++++ b/ext/intl/common/common_enum.h
+@@ -75,6 +75,7 @@ U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
+ U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter);
+ 
+ #ifdef __cplusplus
++using icu::StringEnumeration;
+ U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
+ #endif
+ 
+--- a/ext/intl/converter/converter.c
++++ b/ext/intl/converter/converter.c
+@@ -18,6 +18,8 @@
+ #include "zend_exceptions.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
++#include <unicode/utf16.h>
+ #include <unicode/ucnv.h>
+ #include <unicode/ustring.h>
+ 
+--- a/ext/intl/dateformat/dateformat_format_object.cpp
++++ b/ext/intl/dateformat/dateformat_format_object.cpp
+@@ -33,6 +33,12 @@ extern "C" {
+ #include "../common/common_date.h"
+ }
+ 
++using icu::Locale;
++using icu::DateFormat;
++using icu::GregorianCalendar;
++using icu::StringPiece;
++using icu::SimpleDateFormat;
++
+ static const DateFormat::EStyle valid_styles[] = {
+ 		DateFormat::kNone,
+ 		DateFormat::kFull,
+--- a/ext/intl/dateformat/dateformat_helpers.cpp
++++ b/ext/intl/dateformat/dateformat_helpers.cpp
+@@ -28,6 +28,8 @@ extern "C" {
+ #include "../calendar/calendar_class.h"
+ }
+ 
++using icu::GregorianCalendar;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/dateformat/dateformat_helpers.h
++++ b/ext/intl/dateformat/dateformat_helpers.h
+@@ -22,11 +22,16 @@
+ #endif
+ 
+ #include <unicode/calendar.h>
++#include <unicode/datefmt.h>
+ 
+ extern "C" {
+ #include "../php_intl.h"
+ }
+ 
++using icu::Locale;
++using icu::Calendar;
++using icu::DateFormat;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/grapheme/grapheme_string.c
++++ b/ext/intl/grapheme/grapheme_string.c
+@@ -24,6 +24,7 @@
+ #include "grapheme_util.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
+ #include <unicode/ucol.h>
+ #include <unicode/ustring.h>
+ #include <unicode/ubrk.h>
+@@ -835,10 +836,10 @@ PHP_FUNCTION(grapheme_extract)
+ 	pstr = str + start;
+ 
+ 	/* just in case pstr points in the middle of a character, move forward to the start of the next char */
+-	if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+-		char *str_end = str + str_len;
++	if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++		unsigned char *str_end = str + str_len;
+ 
+-		while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++		while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+ 			pstr++;
+ 			if ( pstr >= str_end ) {
+ 				intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
+--- a/ext/intl/intl_convertcpp.h
++++ b/ext/intl/intl_convertcpp.h
+@@ -26,6 +26,8 @@
+ #include <unicode/unistr.h>
+ #include <zend_types.h>
+ 
++using icu::UnicodeString;
++
+ int intl_stringFromChar(UnicodeString &ret, char *str, size_t str_len, UErrorCode *status);
+ 
+ zend_string* intl_charFromString(const UnicodeString &from, UErrorCode *status);
+--- a/ext/intl/msgformat/msgformat_helpers.cpp
++++ b/ext/intl/msgformat/msgformat_helpers.cpp
+@@ -78,6 +78,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
+ #endif
+ U_NAMESPACE_END
+ 
++using icu::Formattable;
++using icu::Format;
++using icu::DateFormat;
++using icu::MessageFormat;
++#ifdef HAS_MESSAGE_PATTERN
++using icu::MessagePattern;
++#endif
++using icu::MessageFormatAdapter;
++using icu::FieldPosition;
++
+ U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
+ {
+ 	int32_t fmt_count = 0;
+@@ -229,15 +239,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 					UnicodeString typeString = mp.getSubstring(type_part);
+ 					/* This is all based on the rules in the docs for MessageFormat
+ 					 * @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
+-					if (typeString == "number") {
++#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
++					if (typeString == ASCII_LITERAL("number")) {
+ 						MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
+ 						if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
+ 							UnicodeString styleString = mp.getSubstring(style_part);
+-							if (styleString == "integer") {
++							if (styleString == ASCII_LITERAL("integer")) {
+ 								type = Formattable::kInt64;
+-							} else if (styleString == "currency") {
++							} else if (styleString == ASCII_LITERAL("currency")) {
+ 								type = Formattable::kDouble;
+-							} else if (styleString == "percent") {
++							} else if (styleString == ASCII_LITERAL("percent")) {
+ 								type = Formattable::kDouble;
+ 							} else { /* some style invalid/unknown to us */
+ 								type = Formattable::kDouble;
+@@ -245,12 +256,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 						} else { // if missing style, part, make it a double
+ 							type = Formattable::kDouble;
+ 						}
+-					} else if ((typeString == "date") || (typeString == "time")) {
++					} else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
+ 						type = Formattable::kDate;
+-					} else if ((typeString == "spellout") || (typeString == "ordinal")
+-							|| (typeString == "duration")) {
++					} else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
++							|| (typeString == ASCII_LITERAL("duration"))) {
+ 						type = Formattable::kDouble;
+ 					}
++#undef ASCII_LITERAL
+ 				} else {
+ 					/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
+ 					 * UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
+--- a/ext/intl/normalizer/normalizer_normalize.c
++++ b/ext/intl/normalizer/normalizer_normalize.c
+@@ -24,6 +24,7 @@
+ #include "normalizer_class.h"
+ #include "normalizer_normalize.h"
+ #include "intl_convert.h"
++#include <unicode/utf8.h>
+ 
+ /* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
+  * Normalize a string. }}} */
+--- a/ext/intl/timezone/timezone_class.cpp
++++ b/ext/intl/timezone/timezone_class.cpp
+@@ -37,6 +37,8 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::Calendar;
++
+ /* {{{ Global variables */
+ U_CDECL_BEGIN
+ zend_class_entry *TimeZone_ce_ptr = NULL;
+--- a/ext/intl/timezone/timezone_class.h
++++ b/ext/intl/timezone/timezone_class.h
+@@ -29,6 +29,8 @@
+ 
+ #ifndef USE_TIMEZONE_POINTER
+ typedef void TimeZone;
++#else
++using icu::TimeZone;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/timezone/timezone_methods.cpp
++++ b/ext/intl/timezone/timezone_methods.cpp
+@@ -23,6 +23,7 @@
+ #include <unicode/locid.h>
+ #include <unicode/timezone.h>
+ #include <unicode/ustring.h>
++#include <unicode/calendar.h>
+ #include "intl_convertcpp.h"
+ 
+ #include "../common/common_date.h"
+@@ -37,6 +38,9 @@ extern "C" {
+ }
+ #include "common/common_enum.h"
+ 
++using icu::Locale;
++using icu::Calendar;
++
+ U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
+ {
+ 	zend_throw_exception( NULL,
+--- a/ext/intl/uchar/uchar.c
++++ b/ext/intl/uchar/uchar.c
+@@ -3,6 +3,7 @@
+ #include "intl_convert.h"
+ 
+ #include <unicode/uchar.h>
++#include <unicode/utf8.h>
+ 
+ #define IC_METHOD(mname) PHP_METHOD(IntlChar, mname)
+ 
+-- 
+2.19.2
+
diff --git a/dev-lang/php/files/php-7.2.13-intl-use-icu-namespace.patch b/dev-lang/php/files/php-7.2.13-intl-use-icu-namespace.patch
new file mode 100644
index 000000000000..b5d2b473f1aa
--- /dev/null
+++ b/dev-lang/php/files/php-7.2.13-intl-use-icu-namespace.patch
@@ -0,0 +1,379 @@
+Based on the following upstream commits:
+
+https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
+https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
+https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
+
+--- a/ext/intl/breakiterator/breakiterator_class.cpp
++++ b/ext/intl/breakiterator/breakiterator_class.cpp
+@@ -38,6 +38,7 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::RuleBasedBreakIterator;
+ 
+ /* {{{ Global variables */
+ zend_class_entry *BreakIterator_ce_ptr;
+--- a/ext/intl/breakiterator/breakiterator_class.h
++++ b/ext/intl/breakiterator/breakiterator_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_BREAKITERATOR_POINTER
+ typedef void BreakIterator;
++#else
++using icu::BreakIterator;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/breakiterator/breakiterator_methods.cpp
++++ b/ext/intl/breakiterator/breakiterator_methods.cpp
+@@ -32,6 +32,8 @@ extern "C" {
+ }
+ 
+ using PHP::CodePointBreakIterator;
++using icu::BreakIterator;
++using icu::Locale;
+ 
+ U_CFUNC PHP_METHOD(BreakIterator, __construct)
+ {
+--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
++++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
+@@ -33,6 +33,8 @@ typedef union {
+ 
+ using namespace PHP;
+ 
++using icu::UCharCharacterIterator;
++
+ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
+ 
+ CodePointBreakIterator::CodePointBreakIterator()
+--- a/ext/intl/breakiterator/codepointiterator_internal.h
++++ b/ext/intl/breakiterator/codepointiterator_internal.h
+@@ -18,8 +18,11 @@
+ #define CODEPOINTITERATOR_INTERNAL_H
+ 
+ #include <unicode/brkiter.h>
++#include <unicode/unistr.h>
+ 
+-using U_ICU_NAMESPACE::BreakIterator;
++using icu::BreakIterator;
++using icu::CharacterIterator;
++using icu::UnicodeString;
+ 
+ namespace PHP {
+ 
+--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
++++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+@@ -26,6 +26,9 @@ extern "C" {
+ #include "../intl_convertcpp.h"
+ #include "../intl_common.h"
+ 
++using icu::RuleBasedBreakIterator;
++using icu::Locale;
++
+ static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
+ 	return (RuleBasedBreakIterator*)bio->biter;
+ }
+--- a/ext/intl/calendar/calendar_class.cpp
++++ b/ext/intl/calendar/calendar_class.cpp
+@@ -34,6 +34,9 @@ extern "C" {
+ #include <assert.h>
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++
+ /* {{{ Global variables */
+ zend_class_entry *Calendar_ce_ptr;
+ zend_class_entry *GregorianCalendar_ce_ptr;
+--- a/ext/intl/calendar/calendar_class.h
++++ b/ext/intl/calendar/calendar_class.h
+@@ -26,6 +26,8 @@
+ 
+ #ifndef USE_CALENDAR_POINTER
+ typedef void Calendar;
++#else
++using icu::Calendar;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/calendar/calendar_methods.cpp
++++ b/ext/intl/calendar/calendar_methods.cpp
+@@ -40,6 +40,8 @@ extern "C" {
+ }
+ #include "../common/common_enum.h"
+ 
++using icu::Locale;
++
+ U_CFUNC PHP_METHOD(IntlCalendar, __construct)
+ {
+ 	zend_throw_exception( NULL,
+--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
++++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
+@@ -23,6 +23,8 @@
+ #include <unicode/locid.h>
+ #include <unicode/calendar.h>
+ #include <unicode/gregocal.h>
++#include <unicode/ustring.h>
++
+ extern "C" {
+ #include "../php_intl.h"
+ #include "../intl_common.h"
+@@ -34,6 +36,11 @@ extern "C" {
+ #include "zend_exceptions.h"
+ }
+ 
++using icu::GregorianCalendar;
++using icu::Locale;
++using icu::UnicodeString;
++using icu::StringPiece;
++
+ static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
+ 	return (GregorianCalendar*)co->ucal;
+ }
+--- a/ext/intl/common/common_date.cpp
++++ b/ext/intl/common/common_date.cpp
+@@ -27,6 +27,9 @@ extern "C" {
+ 
+ #include "zend_portability.h"
+ 
++using icu::TimeZone;
++using icu::UnicodeString;
++
+ /* {{{ timezone_convert_datetimezone
+  *      The timezone in DateTime and DateTimeZone is not unified. */
+ U_CFUNC TimeZone *timezone_convert_datetimezone(int type,
+--- a/ext/intl/common/common_date.h
++++ b/ext/intl/common/common_date.h
+@@ -28,6 +28,8 @@ U_CDECL_END
+ 
+ #include <unicode/timezone.h>
+ 
++using icu::TimeZone;
++
+ U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func);
+ U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
+ 		intl_error *err, const char *func);
+--- a/ext/intl/common/common_enum.h
++++ b/ext/intl/common/common_enum.h
+@@ -75,6 +75,7 @@ U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
+ U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter);
+ 
+ #ifdef __cplusplus
++using icu::StringEnumeration;
+ U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
+ #endif
+ 
+--- a/ext/intl/converter/converter.c
++++ b/ext/intl/converter/converter.c
+@@ -18,6 +18,8 @@
+ #include "zend_exceptions.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
++#include <unicode/utf16.h>
+ #include <unicode/ucnv.h>
+ #include <unicode/ustring.h>
+ 
+--- a/ext/intl/dateformat/dateformat_format_object.cpp
++++ b/ext/intl/dateformat/dateformat_format_object.cpp
+@@ -33,6 +33,12 @@ extern "C" {
+ #include "../common/common_date.h"
+ }
+ 
++using icu::Locale;
++using icu::DateFormat;
++using icu::GregorianCalendar;
++using icu::StringPiece;
++using icu::SimpleDateFormat;
++
+ static const DateFormat::EStyle valid_styles[] = {
+ 		DateFormat::kNone,
+ 		DateFormat::kFull,
+--- a/ext/intl/dateformat/dateformat_helpers.cpp
++++ b/ext/intl/dateformat/dateformat_helpers.cpp
+@@ -28,6 +28,8 @@ extern "C" {
+ #include "../calendar/calendar_class.h"
+ }
+ 
++using icu::GregorianCalendar;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/dateformat/dateformat_helpers.h
++++ b/ext/intl/dateformat/dateformat_helpers.h
+@@ -22,11 +22,16 @@
+ #endif
+ 
+ #include <unicode/calendar.h>
++#include <unicode/datefmt.h>
+ 
+ extern "C" {
+ #include "../php_intl.h"
+ }
+ 
++using icu::Locale;
++using icu::Calendar;
++using icu::DateFormat;
++
+ int datefmt_process_calendar_arg(zval* calendar_zv,
+ 								 Locale const& locale,
+ 								 const char *func_name,
+--- a/ext/intl/grapheme/grapheme_string.c
++++ b/ext/intl/grapheme/grapheme_string.c
+@@ -24,6 +24,7 @@
+ #include "grapheme_util.h"
+ 
+ #include <unicode/utypes.h>
++#include <unicode/utf8.h>
+ #include <unicode/ucol.h>
+ #include <unicode/ustring.h>
+ #include <unicode/ubrk.h>
+@@ -834,10 +835,10 @@ PHP_FUNCTION(grapheme_extract)
+ 	pstr = str + start;
+ 
+ 	/* just in case pstr points in the middle of a character, move forward to the start of the next char */
+-	if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+-		char *str_end = str + str_len;
++	if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++		unsigned char *str_end = str + str_len;
+ 
+-		while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
++		while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
+ 			pstr++;
+ 			if ( pstr >= str_end ) {
+ 				intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
+--- a/ext/intl/intl_convertcpp.h
++++ b/ext/intl/intl_convertcpp.h
+@@ -26,6 +26,8 @@
+ #include <unicode/unistr.h>
+ #include <zend_types.h>
+ 
++using icu::UnicodeString;
++
+ int intl_stringFromChar(UnicodeString &ret, char *str, size_t str_len, UErrorCode *status);
+ 
+ zend_string* intl_charFromString(const UnicodeString &from, UErrorCode *status);
+--- a/ext/intl/msgformat/msgformat_helpers.cpp
++++ b/ext/intl/msgformat/msgformat_helpers.cpp
+@@ -78,6 +78,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
+ #endif
+ U_NAMESPACE_END
+ 
++using icu::Formattable;
++using icu::Format;
++using icu::DateFormat;
++using icu::MessageFormat;
++#ifdef HAS_MESSAGE_PATTERN
++using icu::MessagePattern;
++#endif
++using icu::MessageFormatAdapter;
++using icu::FieldPosition;
++
+ U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
+ {
+ 	int32_t fmt_count = 0;
+@@ -229,15 +239,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 					UnicodeString typeString = mp.getSubstring(type_part);
+ 					/* This is all based on the rules in the docs for MessageFormat
+ 					 * @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
+-					if (typeString == "number") {
++#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
++					if (typeString == ASCII_LITERAL("number")) {
+ 						MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
+ 						if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
+ 							UnicodeString styleString = mp.getSubstring(style_part);
+-							if (styleString == "integer") {
++							if (styleString == ASCII_LITERAL("integer")) {
+ 								type = Formattable::kInt64;
+-							} else if (styleString == "currency") {
++							} else if (styleString == ASCII_LITERAL("currency")) {
+ 								type = Formattable::kDouble;
+-							} else if (styleString == "percent") {
++							} else if (styleString == ASCII_LITERAL("percent")) {
+ 								type = Formattable::kDouble;
+ 							} else { /* some style invalid/unknown to us */
+ 								type = Formattable::kDouble;
+@@ -245,12 +256,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
+ 						} else { // if missing style, part, make it a double
+ 							type = Formattable::kDouble;
+ 						}
+-					} else if ((typeString == "date") || (typeString == "time")) {
++					} else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
+ 						type = Formattable::kDate;
+-					} else if ((typeString == "spellout") || (typeString == "ordinal")
+-							|| (typeString == "duration")) {
++					} else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
++							|| (typeString == ASCII_LITERAL("duration"))) {
+ 						type = Formattable::kDouble;
+ 					}
++#undef ASCII_LITERAL
+ 				} else {
+ 					/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
+ 					 * UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
+--- a/ext/intl/normalizer/normalizer_normalize.c
++++ b/ext/intl/normalizer/normalizer_normalize.c
+@@ -24,6 +24,7 @@
+ #include "normalizer_class.h"
+ #include "normalizer_normalize.h"
+ #include "intl_convert.h"
++#include <unicode/utf8.h>
+ 
+ /* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
+  * Normalize a string. }}} */
+--- a/ext/intl/timezone/timezone_class.cpp
++++ b/ext/intl/timezone/timezone_class.cpp
+@@ -37,6 +37,8 @@ extern "C" {
+ #include <ext/date/php_date.h>
+ }
+ 
++using icu::Calendar;
++
+ /* {{{ Global variables */
+ U_CDECL_BEGIN
+ zend_class_entry *TimeZone_ce_ptr = NULL;
+--- a/ext/intl/timezone/timezone_class.h
++++ b/ext/intl/timezone/timezone_class.h
+@@ -29,6 +29,8 @@
+ 
+ #ifndef USE_TIMEZONE_POINTER
+ typedef void TimeZone;
++#else
++using icu::TimeZone;
+ #endif
+ 
+ typedef struct {
+--- a/ext/intl/timezone/timezone_methods.cpp
++++ b/ext/intl/timezone/timezone_methods.cpp
+@@ -23,6 +23,7 @@
+ #include <unicode/locid.h>
+ #include <unicode/timezone.h>
+ #include <unicode/ustring.h>
++#include <unicode/calendar.h>
+ #include "intl_convertcpp.h"
+ 
+ #include "../common/common_date.h"
+@@ -37,6 +38,9 @@ extern "C" {
+ }
+ #include "common/common_enum.h"
+ 
++using icu::Locale;
++using icu::Calendar;
++
+ U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
+ {
+ 	zend_throw_exception( NULL,
+--- a/ext/intl/uchar/uchar.c
++++ b/ext/intl/uchar/uchar.c
+@@ -3,6 +3,7 @@
+ #include "intl_convert.h"
+ 
+ #include <unicode/uchar.h>
++#include <unicode/utf8.h>
+ 
+ #define IC_METHOD(mname) PHP_METHOD(IntlChar, mname)
+ 
+-- 
+2.19.2
+
diff --git a/dev-lang/php/php-5.6.38-r1.ebuild b/dev-lang/php/php-5.6.38-r1.ebuild
new file mode 100644
index 000000000000..362851c1e1d5
--- /dev/null
+++ b/dev-lang/php/php-5.6.38-r1.ebuild
@@ -0,0 +1,779 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools flag-o-matic eapi7-ver systemd
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://secure.php.net/"
+SRC_URI="https://php.net/distributions/${P}.tar.xz
+	https://salsa.debian.org/php-team/php/raw/8149a436/debian/patches/0055-Use-OpenSSL-1.1-compatibility-patch-when-built-with-.patch?inline=false -> php-5.6-openssl-1.1-compatibility.patch"
+
+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 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+
+# We can build the following SAPIs in the given order
+SAPIS="embed cli cgi fpm apache2"
+
+# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
+IUSE="${IUSE}
+	${SAPIS/cli/+cli}
+	threads"
+
+IUSE="${IUSE} acl bcmath berkdb bzip2 calendar cdb cjk
+	coverage crypt +ctype curl debug
+	enchant exif +fileinfo +filter firebird
+	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
+	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl
+	mhash mssql mysql libmysqlclient mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline recode selinux +session sharedmem
+	+simplexml snmp soap sockets spell sqlite ssl
+	sybase-ct sysvipc systemd tidy +tokenizer truetype unicode vpx wddx
+	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
+
+# 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.1[apache2?,fpm?]
+	>=dev-libs/libpcre-8.32[unicode]
+	fpm? ( acl? ( sys-apps/acl ) )
+	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
+		<www-servers/apache-2.4[threads=] ) )
+	berkdb? ( || (	sys-libs/db:5.3
+					sys-libs/db:5.1
+					sys-libs/db:4.8
+					sys-libs/db:4.7
+					sys-libs/db:4.6
+					sys-libs/db:4.5 ) )
+	bzip2? ( app-arch/bzip2:0= )
+	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+	cjk? ( !gd? (
+		virtual/jpeg:0
+		media-libs/libpng:0=
+		sys-libs/zlib:0=
+	) )
+	coverage? ( dev-util/lcov )
+	crypt? ( >=dev-libs/libmcrypt-2.4 )
+	curl? ( >=net-misc/curl-7.10.5 )
+	enchant? ( app-text/enchant )
+	exif? ( !gd? (
+		virtual/jpeg:0
+		media-libs/libpng:0=
+		sys-libs/zlib:0=
+	) )
+	firebird? ( dev-db/firebird )
+	gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
+	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
+	gmp? ( dev-libs/gmp:0= )
+	iconv? ( virtual/libiconv )
+	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
+	intl? ( <dev-libs/icu-61.1:= )
+	iodbc? ( dev-db/libiodbc )
+	kerberos? ( virtual/krb5 )
+	ldap? ( >=net-nds/openldap-1.2.11 )
+	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
+	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
+	mssql? ( dev-db/freetds[mssql] )
+	libmysqlclient? (
+		mysql? ( virtual/libmysqlclient:= )
+		mysqli? ( virtual/libmysqlclient:= )
+	)
+	nls? ( sys-devel/gettext )
+	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
+	odbc? ( >=dev-db/unixODBC-1.8.13 )
+	postgres? ( dev-db/postgresql:* )
+	qdbm? ( dev-db/qdbm )
+	readline? ( sys-libs/readline:0= )
+	recode? ( app-text/recode )
+	sharedmem? ( dev-libs/mm )
+	simplexml? ( >=dev-libs/libxml2-2.6.8 )
+	snmp? ( >=net-analyzer/net-snmp-5.2 )
+	soap? ( >=dev-libs/libxml2-2.6.8 )
+	spell? ( >=app-text/aspell-0.50 )
+	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+	ssl? (
+		!libressl? ( dev-libs/openssl:0= )
+		libressl? ( dev-libs/libressl:0= )
+	)
+	sybase-ct? ( dev-db/freetds )
+	tidy? ( app-text/htmltidy )
+	truetype? (
+		=media-libs/freetype-2*
+		>=media-libs/t1lib-5.0.0
+		!gd? (
+			virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
+	)
+	unicode? ( dev-libs/oniguruma:= )
+	vpx? ( media-libs/libvpx:0= )
+	wddx? ( >=dev-libs/libxml2-2.6.8 )
+	xml? ( >=dev-libs/libxml2-2.6.8 )
+	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
+	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
+	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
+	xpm? (
+		x11-libs/libXpm
+		virtual/jpeg:0
+		media-libs/libpng:0= sys-libs/zlib:0=
+	)
+	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
+	zip? ( sys-libs/zlib:0= )
+	zlib? ( sys-libs/zlib:0= )
+"
+
+RDEPEND="${COMMON_DEPEND}
+	virtual/mta
+	fpm? (
+		selinux? ( sec-policy/selinux-phpfpm )
+		systemd? ( sys-apps/systemd ) )"
+
+DEPEND="${COMMON_DEPEND}
+	app-arch/xz-utils
+	>=sys-devel/bison-3.0.1
+	sys-devel/flex
+	>=sys-devel/m4-1.4.3
+	>=sys-devel/libtool-1.5.18"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed )
+	cli? ( ^^ ( readline libedit ) )
+	truetype? ( gd zlib )
+	vpx? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	wddx? ( xml )
+	xmlrpc? ( || ( xml iconv ) )
+	xmlreader? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	mhash? ( hash )
+	phar? ( hash )
+	recode? ( !imap !mysql !mysqli !libmysqlclient )
+	libmysqlclient? ( || (
+		mysql
+		mysqli
+		pdo
+	) )
+
+	qdbm? ( !gdbm )
+	readline? ( !libedit )
+	sharedmem? ( !threads )
+"
+
+PHP_MV="$(ver_cut 1)"
+
+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
+
+	dodir "${PHP_INI_DIR#${EPREFIX}}"
+	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" \
+			  "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
+	fi
+
+	# SAPI-specific handling
+	if [[ "${sapi}" == "fpm" ]] ; then
+		einfo "Installing FPM config file php-fpm.conf"
+		insinto "${PHP_INI_DIR#${EPREFIX}}"
+		doins sapi/fpm/php-fpm.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() {
+	eapply "${FILESDIR}/php-${SLOT}-no-bison-warnings.patch"
+	eapply "${FILESDIR}/5.6-mbstring-oniguruma-6.8.patch"
+	eapply "${DISTDIR}/php-5.6-openssl-1.1-compatibility.patch"
+	eapply "${FILESDIR}/php-freetype-2.9.1.patch"
+
+	# Change PHP branding
+	# Get the alpha/beta/rc version
+	sed -re	"s|^(PHP_EXTRA_VERSION=\").*(\")|\1-pl${PR/r/}-gentoo\2|g" \
+		-i configure.in || die "Unable to change PHP branding"
+
+	# Patch PHP to show Gentoo as the server platform
+	sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
+		-i configure.in || die "Failed to fix server platform name"
+
+	# Prevent PHP from activating the Apache config,
+	# as we will do that ourselves
+	sed -i \
+		-e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
+		-e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
+		configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4 \
+		|| die
+
+	# Patch PHP to support heimdal instead of mit-krb5
+	if has_version "app-crypt/heimdal" ; then
+		sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
+			|| die "Failed to fix heimdal libname"
+		sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
+			|| die "Failed to fix heimdal crypt library reference"
+	fi
+
+	eapply_user
+
+	# Force rebuilding aclocal.m4
+	rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
+	eautoreconf
+
+	if [[ ${CHOST} == *-darwin* ]] ; then
+		# http://bugs.php.net/bug.php?id=48795, bug #343481
+		sed -i -e '/BUILD_CGI="\\$(CC)/s/CC/CXX/' configure || die
+	fi
+}
+
+src_configure() {
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
+	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
+	local our_conf=(
+		--prefix="${PHP_DESTDIR}"
+		--mandir="${PHP_DESTDIR}/man"
+		--infodir="${PHP_DESTDIR}/info"
+		--libdir="${PHP_DESTDIR}/lib"
+		--with-libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--without-pear
+		$(use_enable threads maintainer-zts)
+	)
+
+	our_conf+=(
+		$(use_enable bcmath bcmath)
+		$(use_with bzip2 bz2 "${EPREFIX}/usr")
+		$(use_enable calendar calendar)
+		$(use_enable coverage gcov)
+		$(use_enable ctype ctype)
+		$(use_with curl curl "${EPREFIX}/usr")
+		$(use_enable xml dom)
+		$(use_with enchant enchant "${EPREFIX}/usr")
+		$(use_enable exif exif)
+		$(use_enable fileinfo fileinfo)
+		$(use_enable filter filter)
+		$(use_enable ftp ftp)
+		$(use_with nls gettext "${EPREFIX}/usr")
+		$(use_with gmp gmp "${EPREFIX}/usr")
+		$(use_enable hash hash)
+		$(use_with mhash mhash "${EPREFIX}/usr")
+		$(use_with iconv iconv \
+			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
+		$(use_enable intl intl)
+		$(use_enable ipv6 ipv6)
+		$(use_enable json json)
+		$(use_with kerberos kerberos "${EPREFIX}/usr")
+		$(use_enable xml libxml)
+		$(use_with xml libxml-dir "${EPREFIX}/usr")
+		$(use_enable unicode mbstring)
+		$(use_with crypt mcrypt "${EPREFIX}/usr")
+		$(use_with mssql mssql "${EPREFIX}/usr")
+		$(use_with unicode onig "${EPREFIX}/usr")
+		$(use_with ssl openssl "${EPREFIX}/usr")
+		$(use_with ssl openssl-dir "${EPREFIX}/usr")
+		$(use_enable pcntl pcntl)
+		$(use_enable phar phar)
+		$(use_enable pdo pdo)
+		$(use_enable opcache opcache)
+		$(use_with postgres pgsql "${EPREFIX}/usr")
+		$(use_enable posix posix)
+		$(use_with spell pspell "${EPREFIX}/usr")
+		$(use_with recode recode "${EPREFIX}/usr")
+		$(use_enable simplexml simplexml)
+		$(use_enable sharedmem shmop)
+		$(use_with snmp snmp "${EPREFIX}/usr")
+		$(use_enable soap soap)
+		$(use_enable sockets sockets)
+		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
+		$(use_with sybase-ct sybase-ct "${EPREFIX}/usr")
+		$(use_enable sysvipc sysvmsg)
+		$(use_enable sysvipc sysvsem)
+		$(use_enable sysvipc sysvshm)
+		$(use_with tidy tidy "${EPREFIX}/usr")
+		$(use_enable tokenizer tokenizer)
+		$(use_enable wddx wddx)
+		$(use_enable xml xml)
+		$(use_enable xmlreader xmlreader)
+		$(use_enable xmlwriter xmlwriter)
+		$(use_with xmlrpc xmlrpc)
+		$(use_with xslt xsl "${EPREFIX}/usr")
+		$(use_enable zip zip)
+		$(use_with zlib zlib "${EPREFIX}/usr")
+		$(use_enable debug debug)
+	)
+
+	# DBA support
+	if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+		|| use qdbm ; then
+		our_conf+=( "--enable-dba${shared}" )
+	fi
+
+	# DBA drivers support
+	our_conf+=(
+		$(use_with cdb cdb)
+		$(use_with berkdb db4 "${EPREFIX}/usr")
+		$(use_enable flatfile flatfile)
+		$(use_with gdbm gdbm "${EPREFIX}/usr")
+		$(use_enable inifile inifile)
+		$(use_with qdbm qdbm "${EPREFIX}/usr")
+	)
+
+	# Support for the GD graphics library
+	our_conf+=(
+		$(use_with truetype freetype-dir "${EPREFIX}/usr")
+		$(use_with truetype t1lib "${EPREFIX}/usr")
+		$(use_enable cjk gd-jis-conv)
+		$(use_with gd jpeg-dir "${EPREFIX}/usr")
+		$(use_with gd png-dir "${EPREFIX}/usr")
+		$(use_with xpm xpm-dir "${EPREFIX}/usr")
+		$(use_with vpx vpx-dir "${EPREFIX}/usr")
+	)
+	# enable gd last, so configure can pick up the previous settings
+	our_conf+=( $(use_with gd gd) )
+
+	# IMAP support
+	if use imap ; then
+		our_conf+=(
+			$(use_with imap imap "${EPREFIX}/usr")
+			$(use_with ssl imap-ssl "${EPREFIX}/usr")
+		)
+	fi
+
+	# Interbase/firebird support
+	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
+
+	# LDAP support
+	if use ldap ; then
+		our_conf+=(
+			$(use_with ldap ldap "${EPREFIX}/usr")
+			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
+		)
+	fi
+
+	# MySQL support
+	local mysqllib="mysqlnd"
+	local mysqlilib="mysqlnd"
+	use libmysqlclient && mysqllib="${EPREFIX}/usr"
+	use libmysqlclient && mysqlilib="${EPREFIX}/usr/bin/mysql_config"
+
+	our_conf+=( $(use_with mysql mysql "${mysqllib}") )
+	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
+
+	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
+	our_conf+=(
+		$(use_with odbc unixODBC "${EPREFIX}/usr")
+		$(use_with iodbc iodbc "${EPREFIX}/usr")
+	)
+
+	# Oracle support
+	our_conf+=( $(use_with oci8-instant-client oci8) )
+
+	# PDO support
+	if use pdo ; then
+		our_conf+=(
+			$(use_with mssql pdo-dblib)
+			$(use_with mysql pdo-mysql "${mysqllib}")
+			$(use_with postgres pdo-pgsql)
+			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
+			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
+			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
+			$(use_with oci8-instant-client pdo-oci)
+		)
+	fi
+
+	# readline/libedit support
+	our_conf+=(
+		$(use_with readline readline "${EPREFIX}/usr")
+		$(use_with libedit libedit "${EPREFIX}/usr")
+	)
+
+	# Session support
+	if use session ; then
+		our_conf+=( $(use_with sharedmem mm "${EPREFIX}/usr") )
+	else
+		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
+	# --with-pcre-dir affects ext/filter and ext/zip
+	our_conf+=(
+		--with-pcre-regex="${EPREFIX}/usr"
+		--with-pcre-dir="${EPREFIX}/usr"
+	)
+
+	# 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
+
+	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)
+					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
+
+	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=""
+	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 sapi="", 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/libphp5$(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"
+						;;
+					cgi)
+						source="sapi/cgi/php-cgi"
+						;;
+					fpm)
+						source="sapi/fpm/php-fpm"
+						;;
+					embed)
+						source="libs/libphp${PHP_MV}$(get_libname)"
+						;;
+					*)
+						die "unhandled sapi in src_install"
+						;;
+				esac
+
+				if [[ "${source}" == *"$(get_libname)" ]]; then
+					dolib.so "${source}"
+				else
+					dobin "${source}"
+					local name="$(basename ${source})"
+					dosym "${dest}/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/cgi/php-cgi" ]] ; then
+		export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis/cgi/php-cgi"
+	fi
+
+	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
+	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-5.6.39.ebuild b/dev-lang/php/php-5.6.39.ebuild
new file mode 100644
index 000000000000..18d767d93953
--- /dev/null
+++ b/dev-lang/php/php-5.6.39.ebuild
@@ -0,0 +1,785 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit autotools flag-o-matic systemd
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://secure.php.net/"
+SRC_URI="https://php.net/distributions/${P}.tar.xz
+	https://salsa.debian.org/php-team/php/raw/8149a436/debian/patches/0055-Use-OpenSSL-1.1-compatibility-patch-when-built-with-.patch?inline=false -> php-5.6-openssl-1.1-compatibility.patch"
+
+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 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+
+# We can build the following SAPIs in the given order
+SAPIS="embed cli cgi fpm apache2"
+
+# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
+IUSE="${IUSE}
+	${SAPIS/cli/+cli}
+	threads"
+
+IUSE="${IUSE} acl bcmath berkdb bzip2 calendar cdb cjk
+	coverage crypt +ctype curl debug
+	enchant exif +fileinfo +filter firebird
+	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
+	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl
+	mhash mssql mysql libmysqlclient mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline recode selinux +session sharedmem
+	+simplexml snmp soap sockets spell sqlite ssl
+	sybase-ct sysvipc systemd tidy +tokenizer truetype unicode vpx wddx
+	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
+
+# 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.1[apache2?,fpm?]
+	>=dev-libs/libpcre-8.32[unicode]
+	fpm? ( acl? ( sys-apps/acl ) )
+	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
+		<www-servers/apache-2.4[threads=] ) )
+	berkdb? ( || (	sys-libs/db:5.3
+					sys-libs/db:5.1
+					sys-libs/db:4.8
+					sys-libs/db:4.7
+					sys-libs/db:4.6
+					sys-libs/db:4.5 ) )
+	bzip2? ( app-arch/bzip2:0= )
+	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+	cjk? ( !gd? (
+		virtual/jpeg:0
+		media-libs/libpng:0=
+		sys-libs/zlib:0=
+	) )
+	coverage? ( dev-util/lcov )
+	crypt? ( >=dev-libs/libmcrypt-2.4 )
+	curl? ( >=net-misc/curl-7.10.5 )
+	enchant? ( app-text/enchant )
+	exif? ( !gd? (
+		virtual/jpeg:0
+		media-libs/libpng:0=
+		sys-libs/zlib:0=
+	) )
+	firebird? ( dev-db/firebird )
+	gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
+	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
+	gmp? ( dev-libs/gmp:0= )
+	iconv? ( virtual/libiconv )
+	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
+	intl? ( dev-libs/icu:= )
+	iodbc? ( dev-db/libiodbc )
+	kerberos? ( virtual/krb5 )
+	ldap? ( >=net-nds/openldap-1.2.11 )
+	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
+	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
+	mssql? ( dev-db/freetds[mssql] )
+	libmysqlclient? (
+		mysql? ( virtual/libmysqlclient:= )
+		mysqli? ( virtual/libmysqlclient:= )
+	)
+	nls? ( sys-devel/gettext )
+	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
+	odbc? ( >=dev-db/unixODBC-1.8.13 )
+	postgres? ( dev-db/postgresql:* )
+	qdbm? ( dev-db/qdbm )
+	readline? ( sys-libs/readline:0= )
+	recode? ( app-text/recode )
+	sharedmem? ( dev-libs/mm )
+	simplexml? ( >=dev-libs/libxml2-2.6.8 )
+	snmp? ( >=net-analyzer/net-snmp-5.2 )
+	soap? ( >=dev-libs/libxml2-2.6.8 )
+	spell? ( >=app-text/aspell-0.50 )
+	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+	ssl? (
+		!libressl? ( dev-libs/openssl:0= )
+		libressl? ( dev-libs/libressl:0= )
+	)
+	sybase-ct? ( dev-db/freetds )
+	tidy? ( app-text/htmltidy )
+	truetype? (
+		=media-libs/freetype-2*
+		>=media-libs/t1lib-5.0.0
+		!gd? (
+			virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
+	)
+	unicode? ( dev-libs/oniguruma:= )
+	vpx? ( media-libs/libvpx:0= )
+	wddx? ( >=dev-libs/libxml2-2.6.8 )
+	xml? ( >=dev-libs/libxml2-2.6.8 )
+	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
+	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
+	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
+	xpm? (
+		x11-libs/libXpm
+		virtual/jpeg:0
+		media-libs/libpng:0= sys-libs/zlib:0=
+	)
+	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
+	zip? ( sys-libs/zlib:0= )
+	zlib? ( sys-libs/zlib:0= )
+"
+
+RDEPEND="${COMMON_DEPEND}
+	virtual/mta
+	fpm? (
+		selinux? ( sec-policy/selinux-phpfpm )
+		systemd? ( sys-apps/systemd ) )"
+
+DEPEND="${COMMON_DEPEND}
+	app-arch/xz-utils
+	>=sys-devel/bison-3.0.1
+	sys-devel/flex
+	>=sys-devel/m4-1.4.3
+	>=sys-devel/libtool-1.5.18"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed )
+	cli? ( ^^ ( readline libedit ) )
+	truetype? ( gd zlib )
+	vpx? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	wddx? ( xml )
+	xmlrpc? ( || ( xml iconv ) )
+	xmlreader? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	mhash? ( hash )
+	phar? ( hash )
+	recode? ( !imap !mysql !mysqli !libmysqlclient )
+	libmysqlclient? ( || (
+		mysql
+		mysqli
+		pdo
+	) )
+
+	qdbm? ( !gdbm )
+	readline? ( !libedit )
+	sharedmem? ( !threads )
+"
+
+PHP_MV="$(ver_cut 1)"
+
+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
+
+	dodir "${PHP_INI_DIR#${EPREFIX}}"
+	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" \
+			  "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
+	fi
+
+	# SAPI-specific handling
+	if [[ "${sapi}" == "fpm" ]] ; then
+		einfo "Installing FPM config file php-fpm.conf"
+		insinto "${PHP_INI_DIR#${EPREFIX}}"
+		doins sapi/fpm/php-fpm.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() {
+	eapply "${FILESDIR}/php-${SLOT}-no-bison-warnings.patch"
+	eapply "${FILESDIR}/5.6-mbstring-oniguruma-6.8.patch"
+	eapply "${DISTDIR}/php-5.6-openssl-1.1-compatibility.patch"
+	eapply "${FILESDIR}/php-5.6-intl-detect-icu-via-pkg-config.patch"
+	eapply "${FILESDIR}/php-5.6-intl-use-icu-namespace.patch"
+	eapply "${FILESDIR}/php-5.6-intl-icu-memory-corruption.patch"
+	eapply "${FILESDIR}/php-freetype-2.9.1.patch"
+
+	# Change PHP branding
+	# Get the alpha/beta/rc version
+	sed -re	"s|^(PHP_EXTRA_VERSION=\").*(\")|\1-pl${PR/r/}-gentoo\2|g" \
+		-i configure.in || die "Unable to change PHP branding"
+
+	# Patch PHP to show Gentoo as the server platform
+	sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
+		-i configure.in || die "Failed to fix server platform name"
+
+	# Prevent PHP from activating the Apache config,
+	# as we will do that ourselves
+	sed -i \
+		-e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
+		-e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
+		configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4 \
+		|| die
+
+	# Patch PHP to support heimdal instead of mit-krb5
+	if has_version "app-crypt/heimdal" ; then
+		sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
+			|| die "Failed to fix heimdal libname"
+		sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
+			|| die "Failed to fix heimdal crypt library reference"
+	fi
+
+	eapply_user
+
+	# Force rebuilding aclocal.m4
+	rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
+
+	mv configure.in configure.ac || die
+
+	eautoreconf
+
+	if [[ ${CHOST} == *-darwin* ]] ; then
+		# http://bugs.php.net/bug.php?id=48795, bug #343481
+		sed -i -e '/BUILD_CGI="\\$(CC)/s/CC/CXX/' configure || die
+	fi
+}
+
+src_configure() {
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
+	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
+	local our_conf=(
+		--prefix="${PHP_DESTDIR}"
+		--mandir="${PHP_DESTDIR}/man"
+		--infodir="${PHP_DESTDIR}/info"
+		--libdir="${PHP_DESTDIR}/lib"
+		--with-libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--without-pear
+		$(use_enable threads maintainer-zts)
+	)
+
+	our_conf+=(
+		$(use_enable bcmath bcmath)
+		$(use_with bzip2 bz2 "${EPREFIX}/usr")
+		$(use_enable calendar calendar)
+		$(use_enable coverage gcov)
+		$(use_enable ctype ctype)
+		$(use_with curl curl "${EPREFIX}/usr")
+		$(use_enable xml dom)
+		$(use_with enchant enchant "${EPREFIX}/usr")
+		$(use_enable exif exif)
+		$(use_enable fileinfo fileinfo)
+		$(use_enable filter filter)
+		$(use_enable ftp ftp)
+		$(use_with nls gettext "${EPREFIX}/usr")
+		$(use_with gmp gmp "${EPREFIX}/usr")
+		$(use_enable hash hash)
+		$(use_with mhash mhash "${EPREFIX}/usr")
+		$(use_with iconv iconv \
+			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
+		$(use_enable intl intl)
+		$(use_enable ipv6 ipv6)
+		$(use_enable json json)
+		$(use_with kerberos kerberos "${EPREFIX}/usr")
+		$(use_enable xml libxml)
+		$(use_with xml libxml-dir "${EPREFIX}/usr")
+		$(use_enable unicode mbstring)
+		$(use_with crypt mcrypt "${EPREFIX}/usr")
+		$(use_with mssql mssql "${EPREFIX}/usr")
+		$(use_with unicode onig "${EPREFIX}/usr")
+		$(use_with ssl openssl "${EPREFIX}/usr")
+		$(use_with ssl openssl-dir "${EPREFIX}/usr")
+		$(use_enable pcntl pcntl)
+		$(use_enable phar phar)
+		$(use_enable pdo pdo)
+		$(use_enable opcache opcache)
+		$(use_with postgres pgsql "${EPREFIX}/usr")
+		$(use_enable posix posix)
+		$(use_with spell pspell "${EPREFIX}/usr")
+		$(use_with recode recode "${EPREFIX}/usr")
+		$(use_enable simplexml simplexml)
+		$(use_enable sharedmem shmop)
+		$(use_with snmp snmp "${EPREFIX}/usr")
+		$(use_enable soap soap)
+		$(use_enable sockets sockets)
+		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
+		$(use_with sybase-ct sybase-ct "${EPREFIX}/usr")
+		$(use_enable sysvipc sysvmsg)
+		$(use_enable sysvipc sysvsem)
+		$(use_enable sysvipc sysvshm)
+		$(use_with tidy tidy "${EPREFIX}/usr")
+		$(use_enable tokenizer tokenizer)
+		$(use_enable wddx wddx)
+		$(use_enable xml xml)
+		$(use_enable xmlreader xmlreader)
+		$(use_enable xmlwriter xmlwriter)
+		$(use_with xmlrpc xmlrpc)
+		$(use_with xslt xsl "${EPREFIX}/usr")
+		$(use_enable zip zip)
+		$(use_with zlib zlib "${EPREFIX}/usr")
+		$(use_enable debug debug)
+	)
+
+	# DBA support
+	if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+		|| use qdbm ; then
+		our_conf+=( "--enable-dba${shared}" )
+	fi
+
+	# DBA drivers support
+	our_conf+=(
+		$(use_with cdb cdb)
+		$(use_with berkdb db4 "${EPREFIX}/usr")
+		$(use_enable flatfile flatfile)
+		$(use_with gdbm gdbm "${EPREFIX}/usr")
+		$(use_enable inifile inifile)
+		$(use_with qdbm qdbm "${EPREFIX}/usr")
+	)
+
+	# Support for the GD graphics library
+	our_conf+=(
+		$(use_with truetype freetype-dir "${EPREFIX}/usr")
+		$(use_with truetype t1lib "${EPREFIX}/usr")
+		$(use_enable cjk gd-jis-conv)
+		$(use_with gd jpeg-dir "${EPREFIX}/usr")
+		$(use_with gd png-dir "${EPREFIX}/usr")
+		$(use_with xpm xpm-dir "${EPREFIX}/usr")
+		$(use_with vpx vpx-dir "${EPREFIX}/usr")
+	)
+	# enable gd last, so configure can pick up the previous settings
+	our_conf+=( $(use_with gd gd) )
+
+	# IMAP support
+	if use imap ; then
+		our_conf+=(
+			$(use_with imap imap "${EPREFIX}/usr")
+			$(use_with ssl imap-ssl "${EPREFIX}/usr")
+		)
+	fi
+
+	# Interbase/firebird support
+	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
+
+	# LDAP support
+	if use ldap ; then
+		our_conf+=(
+			$(use_with ldap ldap "${EPREFIX}/usr")
+			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
+		)
+	fi
+
+	# MySQL support
+	local mysqllib="mysqlnd"
+	local mysqlilib="mysqlnd"
+	use libmysqlclient && mysqllib="${EPREFIX}/usr"
+	use libmysqlclient && mysqlilib="${EPREFIX}/usr/bin/mysql_config"
+
+	our_conf+=( $(use_with mysql mysql "${mysqllib}") )
+	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
+
+	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
+	our_conf+=(
+		$(use_with odbc unixODBC "${EPREFIX}/usr")
+		$(use_with iodbc iodbc "${EPREFIX}/usr")
+	)
+
+	# Oracle support
+	our_conf+=( $(use_with oci8-instant-client oci8) )
+
+	# PDO support
+	if use pdo ; then
+		our_conf+=(
+			$(use_with mssql pdo-dblib)
+			$(use_with mysql pdo-mysql "${mysqllib}")
+			$(use_with postgres pdo-pgsql)
+			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
+			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
+			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
+			$(use_with oci8-instant-client pdo-oci)
+		)
+	fi
+
+	# readline/libedit support
+	our_conf+=(
+		$(use_with readline readline "${EPREFIX}/usr")
+		$(use_with libedit libedit "${EPREFIX}/usr")
+	)
+
+	# Session support
+	if use session ; then
+		our_conf+=( $(use_with sharedmem mm "${EPREFIX}/usr") )
+	else
+		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
+	# --with-pcre-dir affects ext/filter and ext/zip
+	our_conf+=(
+		--with-pcre-regex="${EPREFIX}/usr"
+		--with-pcre-dir="${EPREFIX}/usr"
+	)
+
+	# 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
+
+	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)
+					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
+
+	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=""
+	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 sapi="", 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/libphp5$(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"
+						;;
+					cgi)
+						source="sapi/cgi/php-cgi"
+						;;
+					fpm)
+						source="sapi/fpm/php-fpm"
+						;;
+					embed)
+						source="libs/libphp${PHP_MV}$(get_libname)"
+						;;
+					*)
+						die "unhandled sapi in src_install"
+						;;
+				esac
+
+				if [[ "${source}" == *"$(get_libname)" ]]; then
+					dolib.so "${source}"
+				else
+					dobin "${source}"
+					local name="$(basename ${source})"
+					dosym "${dest}/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/cgi/php-cgi" ]] ; then
+		export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis/cgi/php-cgi"
+	fi
+
+	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
+	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-7.0.33.ebuild b/dev-lang/php/php-7.0.33.ebuild
new file mode 100644
index 000000000000..2974d4b991dc
--- /dev/null
+++ b/dev-lang/php/php-7.0.33.ebuild
@@ -0,0 +1,754 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit flag-o-matic systemd
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://secure.php.net/"
+SRC_URI="https://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 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-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 bcmath berkdb bzip2 calendar cdb cjk
+	coverage crypt +ctype curl debug
+	enchant exif +fileinfo +filter firebird
+	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
+	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl
+	mhash mssql mysql mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline recode selinux +session sharedmem
+	+simplexml snmp soap sockets spell sqlite ssl
+	sysvipc systemd tidy +tokenizer truetype unicode wddx webp
+	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
+
+# 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.1[apache2?,fpm?]
+	>=dev-libs/libpcre-8.32[unicode]
+	fpm? ( acl? ( sys-apps/acl ) )
+	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
+		<www-servers/apache-2.4[threads=] ) )
+	berkdb? ( || ( sys-libs/db:5.3
+					sys-libs/db:5.1
+					sys-libs/db:4.8
+					sys-libs/db:4.7
+					sys-libs/db:4.6
+					sys-libs/db:4.5 ) )
+	bzip2? ( app-arch/bzip2:0= )
+	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+	cjk? ( !gd? (
+		virtual/jpeg:0
+		media-libs/libpng:0=
+		sys-libs/zlib:0=
+	) )
+	coverage? ( dev-util/lcov )
+	crypt? ( >=dev-libs/libmcrypt-2.4 )
+	curl? ( >=net-misc/curl-7.10.5 )
+	enchant? ( app-text/enchant )
+	exif? ( !gd? (
+		virtual/jpeg:0
+		media-libs/libpng:0=
+		sys-libs/zlib:0=
+	) )
+	firebird? ( dev-db/firebird )
+	gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
+	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
+	gmp? ( dev-libs/gmp:0= )
+	iconv? ( virtual/libiconv )
+	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
+	intl? ( dev-libs/icu:= )
+	iodbc? ( dev-db/libiodbc )
+	kerberos? ( virtual/krb5 )
+	ldap? ( >=net-nds/openldap-1.2.11 )
+	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
+	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
+	mssql? ( dev-db/freetds[mssql] )
+	nls? ( sys-devel/gettext )
+	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
+	odbc? ( >=dev-db/unixODBC-1.8.13 )
+	postgres? ( dev-db/postgresql:* )
+	qdbm? ( dev-db/qdbm )
+	readline? ( sys-libs/readline:0= )
+	recode? ( app-text/recode )
+	sharedmem? ( dev-libs/mm )
+	simplexml? ( >=dev-libs/libxml2-2.6.8 )
+	snmp? ( >=net-analyzer/net-snmp-5.2 )
+	soap? ( >=dev-libs/libxml2-2.6.8 )
+	spell? ( >=app-text/aspell-0.50 )
+	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+	ssl? (
+		!libressl? ( dev-libs/openssl:0= )
+		libressl? ( dev-libs/libressl:0= )
+	)
+	tidy? ( app-text/htmltidy )
+	truetype? (
+		=media-libs/freetype-2*
+		!gd? (
+			virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
+	)
+	unicode? ( dev-libs/oniguruma:= )
+	wddx? ( >=dev-libs/libxml2-2.6.8 )
+	webp? ( media-libs/libwebp:0= )
+	xml? ( >=dev-libs/libxml2-2.6.8 )
+	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
+	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
+	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
+	xpm? (
+		x11-libs/libXpm
+		virtual/jpeg:0
+		media-libs/libpng:0= sys-libs/zlib:0=
+	)
+	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
+	zip? ( sys-libs/zlib:0= )
+	zlib? ( sys-libs/zlib:0= )
+"
+
+RDEPEND="${COMMON_DEPEND}
+	virtual/mta
+	fpm? (
+		selinux? ( sec-policy/selinux-phpfpm )
+		systemd? ( sys-apps/systemd ) )"
+
+DEPEND="${COMMON_DEPEND}
+	app-arch/xz-utils
+	>=sys-devel/bison-3.0.1
+	sys-devel/flex
+	>=sys-devel/m4-1.4.3
+	>=sys-devel/libtool-1.5.18"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed phpdbg )
+	cli? ( ^^ ( readline libedit ) )
+	truetype? ( gd zlib )
+	webp? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	wddx? ( xml )
+	xmlrpc? ( || ( xml iconv ) )
+	xmlreader? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	mhash? ( hash )
+	phar? ( hash )
+	qdbm? ( !gdbm )
+	readline? ( !libedit )
+	recode? ( !imap !mysqli !mysql )
+	sharedmem? ( !threads )
+	mysql? ( || ( mysqli pdo ) )
+"
+
+PATCHES=(
+	"${FILESDIR}/mbstring-oniguruma-6.8.patch"
+	# hopefully upstream will include the same version check fixes in upcoming releases
+	# patch added 20180429
+	"${FILESDIR}/libressl-compatibility.patch"
+	"${FILESDIR}/php-freetype-2.9.1.patch"
+	"${FILESDIR}/php-7.0.33-intl-detect-icu-via-pkg-config.patch"
+	"${FILESDIR}/php-7.0.33-intl-use-icu-namespace.patch"
+	"${FILESDIR}/php-7.0.33-intl-icu-memory-corruption.patch"
+)
+
+PHP_MV="$(ver_cut 1)"
+
+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
+
+	dodir "${PHP_INI_DIR#${EPREFIX}}"
+	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/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'
+}
+
+src_configure() {
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
+	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
+	local our_conf=(
+		--prefix="${PHP_DESTDIR}"
+		--mandir="${PHP_DESTDIR}/man"
+		--infodir="${PHP_DESTDIR}/info"
+		--libdir="${PHP_DESTDIR}/lib"
+		--with-libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--without-pear
+		$(use_enable threads maintainer-zts)
+	)
+
+	our_conf+=(
+		$(use_enable bcmath bcmath)
+		$(use_with bzip2 bz2 "${EPREFIX}/usr")
+		$(use_enable calendar calendar)
+		$(use_enable coverage gcov)
+		$(use_enable ctype ctype)
+		$(use_with curl curl "${EPREFIX}/usr")
+		$(use_enable xml dom)
+		$(use_with enchant enchant "${EPREFIX}/usr")
+		$(use_enable exif exif)
+		$(use_enable fileinfo fileinfo)
+		$(use_enable filter filter)
+		$(use_enable ftp ftp)
+		$(use_with nls gettext "${EPREFIX}/usr")
+		$(use_with gmp gmp "${EPREFIX}/usr")
+		$(use_enable hash hash)
+		$(use_with mhash mhash "${EPREFIX}/usr")
+		$(use_with iconv iconv \
+			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
+		$(use_enable intl intl)
+		$(use_enable ipv6 ipv6)
+		$(use_enable json json)
+		$(use_with kerberos kerberos "${EPREFIX}/usr")
+		$(use_enable xml libxml)
+		$(use_with xml libxml-dir "${EPREFIX}/usr")
+		$(use_enable unicode mbstring)
+		$(use_with crypt mcrypt "${EPREFIX}/usr")
+		$(use_with unicode onig "${EPREFIX}/usr")
+		$(use_with ssl openssl "${EPREFIX}/usr")
+		$(use_with ssl openssl-dir "${EPREFIX}/usr")
+		$(use_enable pcntl pcntl)
+		$(use_enable phar phar)
+		$(use_enable pdo pdo)
+		$(use_enable opcache opcache)
+		$(use_with postgres pgsql "${EPREFIX}/usr")
+		$(use_enable posix posix)
+		$(use_with spell pspell "${EPREFIX}/usr")
+		$(use_with recode recode "${EPREFIX}/usr")
+		$(use_enable simplexml simplexml)
+		$(use_enable sharedmem shmop)
+		$(use_with snmp snmp "${EPREFIX}/usr")
+		$(use_enable soap soap)
+		$(use_enable sockets sockets)
+		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
+		$(use_enable sysvipc sysvmsg)
+		$(use_enable sysvipc sysvsem)
+		$(use_enable sysvipc sysvshm)
+		$(use_with tidy tidy "${EPREFIX}/usr")
+		$(use_enable tokenizer tokenizer)
+		$(use_enable wddx wddx)
+		$(use_enable xml xml)
+		$(use_enable xmlreader xmlreader)
+		$(use_enable xmlwriter xmlwriter)
+		$(use_with xmlrpc xmlrpc)
+		$(use_with xslt xsl "${EPREFIX}/usr")
+		$(use_enable zip zip)
+		$(use_with zlib zlib "${EPREFIX}/usr")
+		$(use_enable debug debug)
+	)
+
+	# DBA support
+	if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+		|| use qdbm ; then
+		our_conf+=( "--enable-dba${shared}" )
+	fi
+
+	# DBA drivers support
+	our_conf+=(
+		$(use_with cdb cdb)
+		$(use_with berkdb db4 "${EPREFIX}/usr")
+		$(use_enable flatfile flatfile)
+		$(use_with gdbm gdbm "${EPREFIX}/usr")
+		$(use_enable inifile inifile)
+		$(use_with qdbm qdbm "${EPREFIX}/usr")
+	)
+
+	# Support for the GD graphics library
+	our_conf+=(
+		$(use_with truetype freetype-dir "${EPREFIX}/usr")
+		$(use_enable cjk gd-jis-conv)
+		$(use_with gd jpeg-dir "${EPREFIX}/usr")
+		$(use_with gd png-dir "${EPREFIX}/usr")
+		$(use_with xpm xpm-dir "${EPREFIX}/usr")
+	)
+	if use webp; then
+		our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
+	fi
+	# enable gd last, so configure can pick up the previous settings
+	our_conf+=( $(use_with gd gd) )
+
+	# IMAP support
+	if use imap ; then
+		our_conf+=(
+			$(use_with imap imap "${EPREFIX}/usr")
+			$(use_with ssl imap-ssl "${EPREFIX}/usr")
+		)
+	fi
+
+	# Interbase/firebird support
+	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
+
+	# LDAP support
+	if use ldap ; then
+		our_conf+=(
+			$(use_with ldap ldap "${EPREFIX}/usr")
+			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
+		)
+	fi
+
+	# MySQL support
+	local mysqllib="mysqlnd"
+	local mysqlilib="mysqlnd"
+
+	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
+
+	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
+	our_conf+=(
+		$(use_with odbc unixODBC "${EPREFIX}/usr")
+		$(use_with iodbc iodbc "${EPREFIX}/usr")
+	)
+
+	# 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 "${mysqllib}")
+			$(use_with postgres pdo-pgsql)
+			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
+			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
+			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
+			$(use_with oci8-instant-client pdo-oci)
+		)
+	fi
+
+	# readline/libedit support
+	our_conf+=(
+		$(use_with readline readline "${EPREFIX}/usr")
+		$(use_with libedit libedit "${EPREFIX}/usr")
+	)
+
+	# Session support
+	if use session ; then
+		our_conf+=( $(use_with sharedmem mm "${EPREFIX}/usr") )
+	else
+		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
+	# --with-pcre-dir affects ext/filter and ext/zip
+	our_conf+=(
+		--with-pcre-regex="${EPREFIX}/usr"
+		--with-pcre-dir="${EPREFIX}/usr"
+	)
+
+	# 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
+
+	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
+
+	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=""
+	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 sapi="", 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${PHP_MV}$(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"
+						;;
+					cgi)
+						source="sapi/cgi/php-cgi"
+						;;
+					fpm)
+						source="sapi/fpm/php-fpm"
+						;;
+					embed)
+						source="libs/libphp${PHP_MV}$(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}/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
+
+	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
+	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-7.1.25.ebuild b/dev-lang/php/php-7.1.25.ebuild
new file mode 100644
index 000000000000..4f5aca9bdc9d
--- /dev/null
+++ b/dev-lang/php/php-7.1.25.ebuild
@@ -0,0 +1,736 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic systemd autotools
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://secure.php.net/"
+SRC_URI="https://secure.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 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-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 bcmath berkdb bzip2 calendar cdb cjk
+	coverage crypt +ctype curl debug
+	enchant exif +fileinfo +filter firebird
+	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
+	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl
+	mhash mssql mysql mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline recode selinux +session session-mm sharedmem
+	+simplexml snmp soap sockets spell sqlite ssl
+	sysvipc systemd test tidy +tokenizer truetype unicode wddx webp
+	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
+
+# 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.1[apache2?,fpm?]
+	>=dev-libs/libpcre-8.32[unicode]
+	fpm? ( acl? ( sys-apps/acl ) )
+	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
+		<www-servers/apache-2.4[threads=] ) )
+	berkdb? ( || (	sys-libs/db:5.3
+					sys-libs/db:5.1
+					sys-libs/db:4.8
+					sys-libs/db:4.7
+					sys-libs/db:4.6
+					sys-libs/db:4.5 ) )
+	bzip2? ( app-arch/bzip2:0= )
+	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+	coverage? ( dev-util/lcov )
+	crypt? ( >=dev-libs/libmcrypt-2.4 )
+	curl? ( >=net-misc/curl-7.10.5 )
+	enchant? ( <app-text/enchant-2.0:0 )
+	firebird? ( dev-db/firebird )
+	gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
+	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
+	gmp? ( dev-libs/gmp:0= )
+	iconv? ( virtual/libiconv )
+	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
+	intl? ( dev-libs/icu:= )
+	iodbc? ( dev-db/libiodbc )
+	kerberos? ( virtual/krb5 )
+	ldap? ( >=net-nds/openldap-1.2.11 )
+	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
+	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
+	mssql? ( dev-db/freetds[mssql] )
+	nls? ( sys-devel/gettext )
+	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
+	odbc? ( >=dev-db/unixODBC-1.8.13 )
+	postgres? ( dev-db/postgresql:* )
+	qdbm? ( dev-db/qdbm )
+	readline? ( sys-libs/readline:0= )
+	recode? ( app-text/recode )
+	session-mm? ( dev-libs/mm )
+	simplexml? ( >=dev-libs/libxml2-2.6.8 )
+	snmp? ( >=net-analyzer/net-snmp-5.2 )
+	soap? ( >=dev-libs/libxml2-2.6.8 )
+	spell? ( >=app-text/aspell-0.50 )
+	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+	ssl? (
+		!libressl? ( dev-libs/openssl:0= )
+		libressl? ( dev-libs/libressl:0= )
+	)
+	tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
+	truetype? ( =media-libs/freetype-2* )
+	unicode? ( dev-libs/oniguruma:= )
+	wddx? ( >=dev-libs/libxml2-2.6.8 )
+	webp? ( media-libs/libwebp:0= )
+	xml? ( >=dev-libs/libxml2-2.6.8 )
+	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
+	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
+	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
+	xpm? ( x11-libs/libXpm )
+	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
+	zip? ( sys-libs/zlib:0= )
+	zlib? ( sys-libs/zlib:0= )
+"
+
+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"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed phpdbg )
+	cli? ( ^^ ( readline libedit ) )
+	truetype? ( gd zlib )
+	webp? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	wddx? ( xml )
+	xmlrpc? ( || ( xml iconv ) )
+	xmlreader? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	mhash? ( hash )
+	phar? ( hash )
+	qdbm? ( !gdbm )
+	readline? ( !libedit )
+	recode? ( !imap !mysqli !mysql )
+	session-mm? ( session !threads )
+	mysql? ( hash || ( mysqli pdo ) )
+	mysqli? ( hash )
+"
+PATCHES=(
+	"${FILESDIR}/php-freetype-2.9.1.patch"
+	"${FILESDIR}/php-7.1.25-intl-detect-icu-via-pkg-config.patch"
+	"${FILESDIR}/php-7.1.25-intl-use-icu-namespace.patch"
+)
+
+PHP_MV="$(ver_cut 1)"
+
+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
+
+	dodir "${PHP_INI_DIR#${EPREFIX}}"
+	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/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'
+
+	# Bug 669566 - necessary so that build tools are updated for commands like pecl
+	# Force rebuilding aclocal.m4
+	rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
+	eautoreconf
+}
+
+src_configure() {
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
+	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
+	local our_conf=(
+		--prefix="${PHP_DESTDIR}"
+		--mandir="${PHP_DESTDIR}/man"
+		--infodir="${PHP_DESTDIR}/info"
+		--libdir="${PHP_DESTDIR}/lib"
+		--with-libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--without-pear
+		$(use_enable threads maintainer-zts)
+	)
+
+	our_conf+=(
+		$(use_enable bcmath bcmath)
+		$(use_with bzip2 bz2 "${EPREFIX}/usr")
+		$(use_enable calendar calendar)
+		$(use_enable coverage gcov)
+		$(use_enable ctype ctype)
+		$(use_with curl curl "${EPREFIX}/usr")
+		$(use_enable xml dom)
+		$(use_with enchant enchant "${EPREFIX}/usr")
+		$(use_enable exif exif)
+		$(use_enable fileinfo fileinfo)
+		$(use_enable filter filter)
+		$(use_enable ftp ftp)
+		$(use_with nls gettext "${EPREFIX}/usr")
+		$(use_with gmp gmp "${EPREFIX}/usr")
+		$(use_enable hash hash)
+		$(use_with mhash mhash "${EPREFIX}/usr")
+		$(use_with iconv iconv \
+			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
+		$(use_enable intl intl)
+		$(use_enable ipv6 ipv6)
+		$(use_enable json json)
+		$(use_with kerberos kerberos "${EPREFIX}/usr")
+		$(use_enable xml libxml)
+		$(use_with xml libxml-dir "${EPREFIX}/usr")
+		$(use_enable unicode mbstring)
+		$(use_with crypt mcrypt "${EPREFIX}/usr")
+		$(use_with unicode onig "${EPREFIX}/usr")
+		$(use_with ssl openssl "${EPREFIX}/usr")
+		$(use_with ssl openssl-dir "${EPREFIX}/usr")
+		$(use_enable pcntl pcntl)
+		$(use_enable phar phar)
+		$(use_enable pdo pdo)
+		$(use_enable opcache opcache)
+		$(use_with postgres pgsql "${EPREFIX}/usr")
+		$(use_enable posix posix)
+		$(use_with spell pspell "${EPREFIX}/usr")
+		$(use_with recode recode "${EPREFIX}/usr")
+		$(use_enable simplexml simplexml)
+		$(use_enable sharedmem shmop)
+		$(use_with snmp snmp "${EPREFIX}/usr")
+		$(use_enable soap soap)
+		$(use_enable sockets sockets)
+		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
+		$(use_enable sysvipc sysvmsg)
+		$(use_enable sysvipc sysvsem)
+		$(use_enable sysvipc sysvshm)
+		$(use_with tidy tidy "${EPREFIX}/usr")
+		$(use_enable tokenizer tokenizer)
+		$(use_enable wddx wddx)
+		$(use_enable xml xml)
+		$(use_enable xmlreader xmlreader)
+		$(use_enable xmlwriter xmlwriter)
+		$(use_with xmlrpc xmlrpc)
+		$(use_with xslt xsl "${EPREFIX}/usr")
+		$(use_enable zip zip)
+		$(use_with zlib zlib "${EPREFIX}/usr")
+		$(use_enable debug debug)
+	)
+
+	# DBA support
+	if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+		|| use qdbm ; then
+		our_conf+=( "--enable-dba${shared}" )
+	fi
+
+	# DBA drivers support
+	our_conf+=(
+		$(use_with cdb cdb)
+		$(use_with berkdb db4 "${EPREFIX}/usr")
+		$(use_enable flatfile flatfile)
+		$(use_with gdbm gdbm "${EPREFIX}/usr")
+		$(use_enable inifile inifile)
+		$(use_with qdbm qdbm "${EPREFIX}/usr")
+	)
+
+	# Support for the GD graphics library
+	our_conf+=(
+		$(use_with truetype freetype-dir "${EPREFIX}/usr")
+		$(use_enable cjk gd-jis-conv)
+		$(use_with gd jpeg-dir "${EPREFIX}/usr")
+		$(use_with gd png-dir "${EPREFIX}/usr")
+		$(use_with xpm xpm-dir "${EPREFIX}/usr")
+	)
+	if use webp; then
+		our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
+	fi
+	# enable gd last, so configure can pick up the previous settings
+	our_conf+=( $(use_with gd gd) )
+
+	# IMAP support
+	if use imap ; then
+		our_conf+=(
+			$(use_with imap imap "${EPREFIX}/usr")
+			$(use_with ssl imap-ssl "${EPREFIX}/usr")
+		)
+	fi
+
+	# Interbase/firebird support
+	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
+
+	# LDAP support
+	if use ldap ; then
+		our_conf+=(
+			$(use_with ldap ldap "${EPREFIX}/usr")
+			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
+		)
+	fi
+
+	# MySQL support
+	local mysqllib="mysqlnd"
+	local mysqlilib="mysqlnd"
+
+	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
+
+	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
+	our_conf+=(
+		$(use_with odbc unixODBC "${EPREFIX}/usr")
+		$(use_with iodbc iodbc "${EPREFIX}/usr")
+	)
+
+	# 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 "${mysqllib}")
+			$(use_with postgres pdo-pgsql)
+			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
+			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
+			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
+			$(use_with oci8-instant-client pdo-oci)
+		)
+	fi
+
+	# readline/libedit support
+	our_conf+=(
+		$(use_with readline readline "${EPREFIX}/usr")
+		$(use_with libedit libedit "${EPREFIX}/usr")
+	)
+
+	# Session support
+	if use session ; then
+		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
+	else
+		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
+	# --with-pcre-dir affects ext/filter and ext/zip
+	our_conf+=(
+		--with-pcre-regex="${EPREFIX}/usr"
+		--with-pcre-dir="${EPREFIX}/usr"
+	)
+
+	# 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
+
+	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
+
+	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=""
+	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 sapi="", 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${PHP_MV}$(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"
+						;;
+					cgi)
+						source="sapi/cgi/php-cgi"
+						;;
+					fpm)
+						source="sapi/fpm/php-fpm"
+						;;
+					embed)
+						source="libs/libphp${PHP_MV}$(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}/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
+
+	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
+	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-7.2.13.ebuild b/dev-lang/php/php-7.2.13.ebuild
new file mode 100644
index 000000000000..8c9fb3ab3022
--- /dev/null
+++ b/dev-lang/php/php-7.2.13.ebuild
@@ -0,0 +1,748 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic systemd autotools
+
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://secure.php.net/"
+SRC_URI="https://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 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-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 argon2 bcmath berkdb bzip2 calendar cdb cjk
+	coverage +ctype curl debug
+	enchant exif +fileinfo +filter firebird
+	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
+	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl lmdb
+	mhash mssql mysql mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline recode selinux +session session-mm sharedmem
+	+simplexml snmp soap sockets sodium spell sqlite ssl
+	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode wddx webp
+	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zip-encryption zlib"
+
+# 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.1[apache2?,fpm?]
+	>=dev-libs/libpcre-8.32[unicode]
+	fpm? ( acl? ( sys-apps/acl ) )
+	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
+		<www-servers/apache-2.4[threads=] ) )
+	argon2? ( app-crypt/argon2:= )
+	berkdb? ( || (	sys-libs/db:5.3
+					sys-libs/db:5.1
+					sys-libs/db:4.8
+					sys-libs/db:4.7
+					sys-libs/db:4.6
+					sys-libs/db:4.5 ) )
+	bzip2? ( app-arch/bzip2:0= )
+	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+	coverage? ( dev-util/lcov )
+	curl? ( >=net-misc/curl-7.10.5 )
+	enchant? ( <app-text/enchant-2.0:0 )
+	firebird? ( dev-db/firebird )
+	gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
+	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
+	gmp? ( dev-libs/gmp:0= )
+	iconv? ( virtual/libiconv )
+	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
+	intl? ( dev-libs/icu:= )
+	iodbc? ( dev-db/libiodbc )
+	kerberos? ( virtual/krb5 )
+	ldap? ( >=net-nds/openldap-1.2.11 )
+	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
+	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
+	lmdb? ( dev-db/lmdb:= )
+	mssql? ( dev-db/freetds[mssql] )
+	nls? ( sys-devel/gettext )
+	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
+	odbc? ( >=dev-db/unixODBC-1.8.13 )
+	postgres? ( dev-db/postgresql:* )
+	qdbm? ( dev-db/qdbm )
+	readline? ( sys-libs/readline:0= )
+	recode? ( app-text/recode )
+	session-mm? ( dev-libs/mm )
+	simplexml? ( >=dev-libs/libxml2-2.6.8 )
+	snmp? ( >=net-analyzer/net-snmp-5.2 )
+	soap? ( >=dev-libs/libxml2-2.6.8 )
+	sodium? ( dev-libs/libsodium:= )
+	spell? ( >=app-text/aspell-0.50 )
+	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+	ssl? (
+		!libressl? ( dev-libs/openssl:0= )
+		libressl? ( dev-libs/libressl:0= )
+	)
+	tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
+	tokyocabinet? ( dev-db/tokyocabinet )
+	truetype? ( =media-libs/freetype-2* )
+	unicode? ( dev-libs/oniguruma:= )
+	wddx? ( >=dev-libs/libxml2-2.6.8 )
+	webp? ( media-libs/libwebp:0= )
+	xml? ( >=dev-libs/libxml2-2.6.8 )
+	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
+	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
+	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
+	xpm? ( x11-libs/libXpm )
+	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
+	zip? ( sys-libs/zlib:0= )
+	zip-encryption? ( >=dev-libs/libzip-1.2.0:= )
+	zlib? ( sys-libs/zlib:0= )
+"
+
+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"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed phpdbg )
+	cli? ( ^^ ( readline libedit ) )
+	truetype? ( gd zlib )
+	webp? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	wddx? ( xml )
+	xmlrpc? ( || ( xml iconv ) )
+	xmlreader? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	mhash? ( hash )
+	phar? ( hash )
+	qdbm? ( !gdbm )
+	readline? ( !libedit )
+	recode? ( !imap !mysqli !mysql )
+	session-mm? ( session !threads )
+	mysql? ( hash || ( mysqli pdo ) )
+	mysqli? ( hash )
+	zip-encryption? ( zip )
+"
+PATCHES=(
+	"${FILESDIR}/php-freetype-2.9.1.patch"
+	"${FILESDIR}/php-7.1.25-intl-detect-icu-via-pkg-config.patch"
+	"${FILESDIR}/php-7.2.13-intl-use-icu-namespace.patch"
+)
+
+PHP_MV="$(ver_cut 1)"
+
+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
+
+	dodir "${PHP_INI_DIR#${EPREFIX}}"
+	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/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'
+
+	# Bug 669566 - necessary so that build tools are updated for commands like pecl
+	# Force rebuilding aclocal.m4
+	rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
+	eautoreconf
+}
+
+src_configure() {
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
+	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
+	local our_conf=(
+		--prefix="${PHP_DESTDIR}"
+		--mandir="${PHP_DESTDIR}/man"
+		--infodir="${PHP_DESTDIR}/info"
+		--libdir="${PHP_DESTDIR}/lib"
+		--with-libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--without-pear
+		$(use_enable threads maintainer-zts)
+	)
+
+	our_conf+=(
+		$(use_with argon2 password-argon2 "${EPREFIX}/usr")
+		$(use_enable bcmath bcmath)
+		$(use_with bzip2 bz2 "${EPREFIX}/usr")
+		$(use_enable calendar calendar)
+		$(use_enable coverage gcov)
+		$(use_enable ctype ctype)
+		$(use_with curl curl "${EPREFIX}/usr")
+		$(use_enable xml dom)
+		$(use_with enchant enchant "${EPREFIX}/usr")
+		$(use_enable exif exif)
+		$(use_enable fileinfo fileinfo)
+		$(use_enable filter filter)
+		$(use_enable ftp ftp)
+		$(use_with nls gettext "${EPREFIX}/usr")
+		$(use_with gmp gmp "${EPREFIX}/usr")
+		$(use_enable hash hash)
+		$(use_with mhash mhash "${EPREFIX}/usr")
+		$(use_with iconv iconv \
+			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
+		$(use_enable intl intl)
+		$(use_enable ipv6 ipv6)
+		$(use_enable json json)
+		$(use_with kerberos kerberos "${EPREFIX}/usr")
+		$(use_enable xml libxml)
+		$(use_with xml libxml-dir "${EPREFIX}/usr")
+		$(use_enable unicode mbstring)
+		$(use_with unicode onig "${EPREFIX}/usr")
+		$(use_with ssl openssl "${EPREFIX}/usr")
+		$(use_with ssl openssl-dir "${EPREFIX}/usr")
+		$(use_enable pcntl pcntl)
+		$(use_enable phar phar)
+		$(use_enable pdo pdo)
+		$(use_enable opcache opcache)
+		$(use_with postgres pgsql "${EPREFIX}/usr")
+		$(use_enable posix posix)
+		$(use_with spell pspell "${EPREFIX}/usr")
+		$(use_with recode recode "${EPREFIX}/usr")
+		$(use_enable simplexml simplexml)
+		$(use_enable sharedmem shmop)
+		$(use_with snmp snmp "${EPREFIX}/usr")
+		$(use_enable soap soap)
+		$(use_enable sockets sockets)
+		$(use_with sodium sodium "${EPREFIX}/usr")
+		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
+		$(use_enable sysvipc sysvmsg)
+		$(use_enable sysvipc sysvsem)
+		$(use_enable sysvipc sysvshm)
+		$(use_with tidy tidy "${EPREFIX}/usr")
+		$(use_enable tokenizer tokenizer)
+		$(use_enable wddx wddx)
+		$(use_enable xml xml)
+		$(use_enable xmlreader xmlreader)
+		$(use_enable xmlwriter xmlwriter)
+		$(use_with xmlrpc xmlrpc)
+		$(use_with xslt xsl "${EPREFIX}/usr")
+		$(use_enable zip zip)
+		$(use_with zip-encryption libzip "${EPREFIX}/usr")
+		$(use_with zlib zlib "${EPREFIX}/usr")
+		$(use_enable debug 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${shared}" )
+	fi
+
+	# DBA drivers support
+	our_conf+=(
+		$(use_with cdb cdb)
+		$(use_with berkdb db4 "${EPREFIX}/usr")
+		$(use_enable flatfile flatfile)
+		$(use_with gdbm gdbm "${EPREFIX}/usr")
+		$(use_enable inifile inifile)
+		$(use_with qdbm qdbm "${EPREFIX}/usr")
+		$(use_with lmdb lmdb "${EPREFIX}/usr")
+	)
+
+	# Support for the GD graphics library
+	our_conf+=(
+		$(use_with truetype freetype-dir "${EPREFIX}/usr")
+		$(use_enable cjk gd-jis-conv)
+		$(use_with gd jpeg-dir "${EPREFIX}/usr")
+		$(use_with gd png-dir "${EPREFIX}/usr")
+		$(use_with xpm xpm-dir "${EPREFIX}/usr")
+	)
+	if use webp; then
+		our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
+	fi
+	# enable gd last, so configure can pick up the previous settings
+	our_conf+=( $(use_with gd gd) )
+
+	# IMAP support
+	if use imap ; then
+		our_conf+=(
+			$(use_with imap imap "${EPREFIX}/usr")
+			$(use_with ssl imap-ssl "${EPREFIX}/usr")
+		)
+	fi
+
+	# Interbase/firebird support
+	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
+
+	# LDAP support
+	if use ldap ; then
+		our_conf+=(
+			$(use_with ldap ldap "${EPREFIX}/usr")
+			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
+		)
+	fi
+
+	# MySQL support
+	local mysqllib="mysqlnd"
+	local mysqlilib="mysqlnd"
+
+	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
+
+	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
+	our_conf+=(
+		$(use_with odbc unixODBC "${EPREFIX}/usr")
+		$(use_with iodbc iodbc "${EPREFIX}/usr")
+	)
+
+	# 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 "${mysqllib}")
+			$(use_with postgres pdo-pgsql)
+			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
+			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
+			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
+			$(use_with oci8-instant-client pdo-oci)
+		)
+	fi
+
+	# readline/libedit support
+	our_conf+=(
+		$(use_with readline readline "${EPREFIX}/usr")
+		$(use_with libedit libedit "${EPREFIX}/usr")
+	)
+
+	# Session support
+	if use session ; then
+		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
+	else
+		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
+	# --with-pcre-dir affects ext/filter and ext/zip
+	# --with-pcre-valgrind cannot be enabled with system pcre
+	# Many arches don't support pcre-jit
+	our_conf+=(
+		--with-pcre-regex="${EPREFIX}/usr"
+		--with-pcre-dir="${EPREFIX}/usr"
+		--without-pcre-valgrind
+		--without-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
+
+	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
+
+	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=""
+	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 sapi="", 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${PHP_MV}$(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"
+						;;
+					cgi)
+						source="sapi/cgi/php-cgi"
+						;;
+					fpm)
+						source="sapi/fpm/php-fpm"
+						;;
+					embed)
+						source="libs/libphp${PHP_MV}$(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}/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
+
+	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
+	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-7.3.0.ebuild b/dev-lang/php/php-7.3.0.ebuild
new file mode 100644
index 000000000000..a349c94b9431
--- /dev/null
+++ b/dev-lang/php/php-7.3.0.ebuild
@@ -0,0 +1,748 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit flag-o-matic eapi7-ver systemd autotools
+
+MY_PV=${PV/_rc/RC}
+DESCRIPTION="The PHP language runtime engine"
+HOMEPAGE="https://secure.php.net/"
+SRC_URI="https://secure.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 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+# We can build the following SAPIs in the given order
+SAPIS="embed cli cgi fpm apache2 phpdbg"
+
+# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
+IUSE="${IUSE}
+	${SAPIS/cli/+cli}
+	threads"
+
+IUSE="${IUSE} acl argon2 bcmath berkdb bzip2 calendar cdb cjk
+	coverage +ctype curl debug
+	enchant exif +fileinfo +filter firebird
+	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
+	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl lmdb
+	mhash mssql mysql mysqli nls
+	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+	readline recode selinux +session session-mm sharedmem
+	+simplexml snmp soap sockets sodium spell sqlite ssl
+	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode wddx webp
+	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zip-encryption zlib"
+
+# 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.1[apache2?,fpm?]
+	>=dev-libs/libpcre2-10.30[unicode]
+	fpm? ( acl? ( sys-apps/acl ) )
+	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
+		<www-servers/apache-2.4[threads=] ) )
+	argon2? ( app-crypt/argon2:= )
+	berkdb? ( || (	sys-libs/db:5.3
+					sys-libs/db:5.1
+					sys-libs/db:4.8
+					sys-libs/db:4.7
+					sys-libs/db:4.6
+					sys-libs/db:4.5 ) )
+	bzip2? ( app-arch/bzip2:0= )
+	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+	coverage? ( dev-util/lcov )
+	curl? ( >=net-misc/curl-7.10.5 )
+	enchant? ( <app-text/enchant-2.0:0 )
+	firebird? ( dev-db/firebird )
+	gd? ( virtual/jpeg:0 media-libs/libpng:0= >=sys-libs/zlib-1.2.0.4 )
+	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
+	gmp? ( dev-libs/gmp:0= )
+	iconv? ( virtual/libiconv )
+	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
+	intl? ( dev-libs/icu:= )
+	iodbc? ( dev-db/libiodbc )
+	kerberos? ( virtual/krb5 )
+	ldap? ( >=net-nds/openldap-1.2.11 )
+	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
+	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
+	lmdb? ( dev-db/lmdb:= )
+	mssql? ( dev-db/freetds[mssql] )
+	nls? ( sys-devel/gettext )
+	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
+	odbc? ( >=dev-db/unixODBC-1.8.13 )
+	postgres? ( dev-db/postgresql:* )
+	qdbm? ( dev-db/qdbm )
+	readline? ( sys-libs/readline:0= )
+	recode? ( app-text/recode )
+	session-mm? ( dev-libs/mm )
+	simplexml? ( >=dev-libs/libxml2-2.6.8 )
+	snmp? ( >=net-analyzer/net-snmp-5.2 )
+	soap? ( >=dev-libs/libxml2-2.6.8 )
+	sodium? ( dev-libs/libsodium:= )
+	spell? ( >=app-text/aspell-0.50 )
+	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+	ssl? (
+		!libressl? ( >=dev-libs/openssl-1.0.1:0= )
+		libressl? ( dev-libs/libressl:0= )
+	)
+	tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
+	tokyocabinet? ( dev-db/tokyocabinet )
+	truetype? ( =media-libs/freetype-2* )
+	unicode? ( dev-libs/oniguruma:= )
+	wddx? ( >=dev-libs/libxml2-2.6.8 )
+	webp? ( media-libs/libwebp:0= )
+	xml? ( >=dev-libs/libxml2-2.6.8 )
+	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
+	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
+	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
+	xpm? ( x11-libs/libXpm )
+	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
+	zip? ( >=sys-libs/zlib-1.2.0.4:0= )
+	zip-encryption? ( >=dev-libs/libzip-1.2.0:= )
+	zlib? ( >=sys-libs/zlib-1.2.0.4:0= )
+"
+
+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"
+
+# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
+REQUIRED_USE="
+	|| ( cli cgi fpm apache2 embed phpdbg )
+	cli? ( ^^ ( readline libedit ) )
+	truetype? ( gd zlib )
+	webp? ( gd zlib )
+	cjk? ( gd zlib )
+	exif? ( gd zlib )
+	xpm? ( gd zlib )
+	gd? ( zlib )
+	simplexml? ( xml )
+	soap? ( xml )
+	wddx? ( xml )
+	xmlrpc? ( || ( xml iconv ) )
+	xmlreader? ( xml )
+	xslt? ( xml )
+	ldap-sasl? ( ldap )
+	mhash? ( hash )
+	phar? ( hash )
+	qdbm? ( !gdbm )
+	readline? ( !libedit )
+	recode? ( !imap !mysqli !mysql )
+	session-mm? ( session !threads )
+	mysql? ( || ( mysqli pdo ) )
+	zip-encryption? ( zip )
+"
+PATCHES=(
+	"${FILESDIR}/php-freetype-2.9.1.patch"
+)
+
+PHP_MV="$(ver_cut 1)"
+
+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
+
+	dodir "${PHP_INI_DIR#${EPREFIX}}"
+	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/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'
+
+	# Bug 669566 - necessary so that build tools are updated for commands like pecl
+	# Force rebuilding aclocal.m4
+	rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
+	eautoreconf
+}
+
+src_configure() {
+	addpredict /usr/share/snmp/mibs/.index #nowarn
+	addpredict /var/lib/net-snmp/mib_indexes #nowarn
+
+	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
+	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
+	local our_conf=(
+		--prefix="${PHP_DESTDIR}"
+		--mandir="${PHP_DESTDIR}/man"
+		--infodir="${PHP_DESTDIR}/info"
+		--libdir="${PHP_DESTDIR}/lib"
+		--with-libdir="$(get_libdir)"
+		--localstatedir="${EPREFIX}/var"
+		--without-pear
+		$(use_enable threads maintainer-zts)
+	)
+
+	our_conf+=(
+		$(use_with argon2 password-argon2 "${EPREFIX}/usr")
+		$(use_enable bcmath bcmath)
+		$(use_with bzip2 bz2 "${EPREFIX}/usr")
+		$(use_enable calendar calendar)
+		$(use_enable coverage gcov)
+		$(use_enable ctype ctype)
+		$(use_with curl curl "${EPREFIX}/usr")
+		$(use_enable xml dom)
+		$(use_with enchant enchant "${EPREFIX}/usr")
+		$(use_enable exif exif)
+		$(use_enable fileinfo fileinfo)
+		$(use_enable filter filter)
+		$(use_enable ftp ftp)
+		$(use_with nls gettext "${EPREFIX}/usr")
+		$(use_with gmp gmp "${EPREFIX}/usr")
+		$(use_enable hash hash)
+		$(use_with mhash mhash "${EPREFIX}/usr")
+		$(use_with iconv iconv \
+			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
+		$(use_enable intl intl)
+		$(use_enable ipv6 ipv6)
+		$(use_enable json json)
+		$(use_with kerberos kerberos "${EPREFIX}/usr")
+		$(use_enable xml libxml)
+		$(use_with xml libxml-dir "${EPREFIX}/usr")
+		$(use_enable unicode mbstring)
+		$(use_with unicode onig "${EPREFIX}/usr")
+		$(use_with ssl openssl "${EPREFIX}/usr")
+		$(use_with ssl openssl-dir "${EPREFIX}/usr")
+		$(use_enable pcntl pcntl)
+		$(use_enable phar phar)
+		$(use_enable pdo pdo)
+		$(use_enable opcache opcache)
+		$(use_with postgres pgsql "${EPREFIX}/usr")
+		$(use_enable posix posix)
+		$(use_with spell pspell "${EPREFIX}/usr")
+		$(use_with recode recode "${EPREFIX}/usr")
+		$(use_enable simplexml simplexml)
+		$(use_enable sharedmem shmop)
+		$(use_with snmp snmp "${EPREFIX}/usr")
+		$(use_enable soap soap)
+		$(use_enable sockets sockets)
+		$(use_with sodium sodium "${EPREFIX}/usr")
+		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
+		$(use_enable sysvipc sysvmsg)
+		$(use_enable sysvipc sysvsem)
+		$(use_enable sysvipc sysvshm)
+		$(use_with tidy tidy "${EPREFIX}/usr")
+		$(use_enable tokenizer tokenizer)
+		$(use_enable wddx wddx)
+		$(use_enable xml xml)
+		$(use_enable xmlreader xmlreader)
+		$(use_enable xmlwriter xmlwriter)
+		$(use_with xmlrpc xmlrpc)
+		$(use_with xslt xsl "${EPREFIX}/usr")
+		$(use_enable zip zip)
+		$(use_with zip-encryption libzip "${EPREFIX}/usr")
+		$(use_with zlib zlib "${EPREFIX}/usr")
+		$(use_enable debug 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${shared}" )
+	fi
+
+	# DBA drivers support
+	our_conf+=(
+		$(use_with cdb cdb)
+		$(use_with berkdb db4 "${EPREFIX}/usr")
+		$(use_enable flatfile flatfile)
+		$(use_with gdbm gdbm "${EPREFIX}/usr")
+		$(use_enable inifile inifile)
+		$(use_with qdbm qdbm "${EPREFIX}/usr")
+		$(use_with lmdb lmdb "${EPREFIX}/usr")
+	)
+
+	# Support for the GD graphics library
+	our_conf+=(
+		$(use_with truetype freetype-dir "${EPREFIX}/usr")
+		$(use_enable cjk gd-jis-conv)
+		$(use_with gd jpeg-dir "${EPREFIX}/usr")
+		$(use_with gd png-dir "${EPREFIX}/usr")
+		$(use_with xpm xpm-dir "${EPREFIX}/usr")
+	)
+	if use webp; then
+		our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
+	fi
+	# enable gd last, so configure can pick up the previous settings
+	our_conf+=( $(use_with gd gd) )
+
+	# IMAP support
+	if use imap ; then
+		our_conf+=(
+			$(use_with imap imap "${EPREFIX}/usr")
+			$(use_with ssl imap-ssl "${EPREFIX}/usr")
+		)
+	fi
+
+	# Interbase/firebird support
+	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
+
+	# LDAP support
+	if use ldap ; then
+		our_conf+=(
+			$(use_with ldap ldap "${EPREFIX}/usr")
+			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
+		)
+	fi
+
+	# MySQL support
+	local mysqllib="mysqlnd"
+	local mysqlilib="mysqlnd"
+
+	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
+
+	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
+	our_conf+=(
+		$(use_with odbc unixODBC "${EPREFIX}/usr")
+		$(use_with iodbc iodbc "${EPREFIX}/usr")
+	)
+
+	# 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 "${mysqllib}")
+			$(use_with postgres pdo-pgsql)
+			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
+			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
+			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
+			$(use_with oci8-instant-client pdo-oci)
+		)
+	fi
+
+	# readline/libedit support
+	our_conf+=(
+		$(use_with readline readline "${EPREFIX}/usr")
+		$(use_with libedit libedit "${EPREFIX}/usr")
+	)
+
+	# Session support
+	if use session ; then
+		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
+	else
+		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
+	# --with-pcre-dir affects ext/filter and ext/zip
+	# --with-pcre-valgrind cannot be enabled with system pcre
+	# Many arches don't support pcre-jit
+	our_conf+=(
+		--with-pcre-regex="${EPREFIX}/usr"
+		--with-pcre-dir="${EPREFIX}/usr"
+		--without-pcre-valgrind
+		--without-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
+
+	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
+
+	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=""
+	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 sapi="", 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${PHP_MV}$(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"
+						;;
+					cgi)
+						source="sapi/cgi/php-cgi"
+						;;
+					fpm)
+						source="sapi/fpm/php-fpm"
+						;;
+					embed)
+						source="libs/libphp${PHP_MV}$(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}/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
+
+	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
+	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-7.3.0_rc2.ebuild b/dev-lang/php/php-7.3.0_rc2.ebuild
deleted file mode 100644
index 38dbc82aca6b..000000000000
--- a/dev-lang/php/php-7.3.0_rc2.ebuild
+++ /dev/null
@@ -1,743 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit flag-o-matic eapi7-ver systemd
-
-MY_PV=${PV/_rc/RC}
-DESCRIPTION="The PHP language runtime engine"
-HOMEPAGE="https://secure.php.net/"
-SRC_URI="https://downloads.php.net/~cmb/${PN}-${MY_PV}.tar.xz"
-
-LICENSE="PHP-3.01
-	BSD
-	Zend-2.0
-	bcmath? ( LGPL-2.1+ )
-	fpm? ( BSD-2 )
-	gd? ( gd )
-	unicode? ( BSD-2 LGPL-2.1 )"
-
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
-
-S="${WORKDIR}/${PN}-${MY_PV}"
-
-# We can build the following SAPIs in the given order
-SAPIS="embed cli cgi fpm apache2 phpdbg"
-
-# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
-IUSE="${IUSE}
-	${SAPIS/cli/+cli}
-	threads"
-
-IUSE="${IUSE} acl argon2 bcmath berkdb bzip2 calendar cdb cjk
-	coverage +ctype curl debug
-	enchant exif +fileinfo +filter firebird
-	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
-	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl lmdb
-	mhash mssql mysql mysqli nls
-	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
-	readline recode selinux +session session-mm sharedmem
-	+simplexml snmp soap sockets sodium spell sqlite ssl
-	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode wddx webp
-	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zip-encryption zlib"
-
-# 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.1[apache2?,fpm?]
-	>=dev-libs/libpcre2-10.30[unicode]
-	fpm? ( acl? ( sys-apps/acl ) )
-	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
-		<www-servers/apache-2.4[threads=] ) )
-	argon2? ( app-crypt/argon2:= )
-	berkdb? ( || (	sys-libs/db:5.3
-					sys-libs/db:5.1
-					sys-libs/db:4.8
-					sys-libs/db:4.7
-					sys-libs/db:4.6
-					sys-libs/db:4.5 ) )
-	bzip2? ( app-arch/bzip2:0= )
-	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
-	coverage? ( dev-util/lcov )
-	curl? ( >=net-misc/curl-7.10.5 )
-	enchant? ( <app-text/enchant-2.0:0 )
-	firebird? ( dev-db/firebird )
-	gd? ( virtual/jpeg:0 media-libs/libpng:0= >=sys-libs/zlib-1.2.0.4 )
-	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
-	gmp? ( dev-libs/gmp:0= )
-	iconv? ( virtual/libiconv )
-	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
-	intl? ( dev-libs/icu:= )
-	iodbc? ( dev-db/libiodbc )
-	kerberos? ( virtual/krb5 )
-	ldap? ( >=net-nds/openldap-1.2.11 )
-	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
-	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
-	lmdb? ( dev-db/lmdb:= )
-	mssql? ( dev-db/freetds[mssql] )
-	nls? ( sys-devel/gettext )
-	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
-	odbc? ( >=dev-db/unixODBC-1.8.13 )
-	postgres? ( dev-db/postgresql:* )
-	qdbm? ( dev-db/qdbm )
-	readline? ( sys-libs/readline:0= )
-	recode? ( app-text/recode )
-	session-mm? ( dev-libs/mm )
-	simplexml? ( >=dev-libs/libxml2-2.6.8 )
-	snmp? ( >=net-analyzer/net-snmp-5.2 )
-	soap? ( >=dev-libs/libxml2-2.6.8 )
-	sodium? ( dev-libs/libsodium:= )
-	spell? ( >=app-text/aspell-0.50 )
-	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
-	ssl? (
-		!libressl? ( >=dev-libs/openssl-1.0.1:0= )
-		libressl? ( dev-libs/libressl:0= )
-	)
-	tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
-	tokyocabinet? ( dev-db/tokyocabinet )
-	truetype? ( =media-libs/freetype-2* )
-	unicode? ( dev-libs/oniguruma:= )
-	wddx? ( >=dev-libs/libxml2-2.6.8 )
-	webp? ( media-libs/libwebp:0= )
-	xml? ( >=dev-libs/libxml2-2.6.8 )
-	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
-	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
-	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
-	xpm? ( x11-libs/libXpm )
-	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
-	zip? ( >=sys-libs/zlib-1.2.0.4:0= )
-	zip-encryption? ( >=dev-libs/libzip-1.2.0:= )
-	zlib? ( >=sys-libs/zlib-1.2.0.4:0= )
-"
-
-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"
-
-# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
-REQUIRED_USE="
-	|| ( cli cgi fpm apache2 embed phpdbg )
-	cli? ( ^^ ( readline libedit ) )
-	truetype? ( gd zlib )
-	webp? ( gd zlib )
-	cjk? ( gd zlib )
-	exif? ( gd zlib )
-	xpm? ( gd zlib )
-	gd? ( zlib )
-	simplexml? ( xml )
-	soap? ( xml )
-	wddx? ( xml )
-	xmlrpc? ( || ( xml iconv ) )
-	xmlreader? ( xml )
-	xslt? ( xml )
-	ldap-sasl? ( ldap )
-	mhash? ( hash )
-	phar? ( hash )
-	qdbm? ( !gdbm )
-	readline? ( !libedit )
-	recode? ( !imap !mysqli !mysql )
-	session-mm? ( session !threads )
-	mysql? ( || ( mysqli pdo ) )
-	zip-encryption? ( zip )
-"
-PATCHES=(
-	"${FILESDIR}/php-freetype-2.9.1.patch"
-)
-
-PHP_MV="$(ver_cut 1)"
-
-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
-
-	dodir "${PHP_INI_DIR#${EPREFIX}}"
-	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/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'
-}
-
-src_configure() {
-	addpredict /usr/share/snmp/mibs/.index #nowarn
-	addpredict /var/lib/net-snmp/mib_indexes #nowarn
-
-	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
-
-	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
-	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
-	local our_conf=(
-		--prefix="${PHP_DESTDIR}"
-		--mandir="${PHP_DESTDIR}/man"
-		--infodir="${PHP_DESTDIR}/info"
-		--libdir="${PHP_DESTDIR}/lib"
-		--with-libdir="$(get_libdir)"
-		--localstatedir="${EPREFIX}/var"
-		--without-pear
-		$(use_enable threads maintainer-zts)
-	)
-
-	our_conf+=(
-		$(use_with argon2 password-argon2 "${EPREFIX}/usr")
-		$(use_enable bcmath bcmath)
-		$(use_with bzip2 bz2 "${EPREFIX}/usr")
-		$(use_enable calendar calendar)
-		$(use_enable coverage gcov)
-		$(use_enable ctype ctype)
-		$(use_with curl curl "${EPREFIX}/usr")
-		$(use_enable xml dom)
-		$(use_with enchant enchant "${EPREFIX}/usr")
-		$(use_enable exif exif)
-		$(use_enable fileinfo fileinfo)
-		$(use_enable filter filter)
-		$(use_enable ftp ftp)
-		$(use_with nls gettext "${EPREFIX}/usr")
-		$(use_with gmp gmp "${EPREFIX}/usr")
-		$(use_enable hash hash)
-		$(use_with mhash mhash "${EPREFIX}/usr")
-		$(use_with iconv iconv \
-			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
-		$(use_enable intl intl)
-		$(use_enable ipv6 ipv6)
-		$(use_enable json json)
-		$(use_with kerberos kerberos "${EPREFIX}/usr")
-		$(use_enable xml libxml)
-		$(use_with xml libxml-dir "${EPREFIX}/usr")
-		$(use_enable unicode mbstring)
-		$(use_with unicode onig "${EPREFIX}/usr")
-		$(use_with ssl openssl "${EPREFIX}/usr")
-		$(use_with ssl openssl-dir "${EPREFIX}/usr")
-		$(use_enable pcntl pcntl)
-		$(use_enable phar phar)
-		$(use_enable pdo pdo)
-		$(use_enable opcache opcache)
-		$(use_with postgres pgsql "${EPREFIX}/usr")
-		$(use_enable posix posix)
-		$(use_with spell pspell "${EPREFIX}/usr")
-		$(use_with recode recode "${EPREFIX}/usr")
-		$(use_enable simplexml simplexml)
-		$(use_enable sharedmem shmop)
-		$(use_with snmp snmp "${EPREFIX}/usr")
-		$(use_enable soap soap)
-		$(use_enable sockets sockets)
-		$(use_with sodium sodium "${EPREFIX}/usr")
-		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
-		$(use_enable sysvipc sysvmsg)
-		$(use_enable sysvipc sysvsem)
-		$(use_enable sysvipc sysvshm)
-		$(use_with tidy tidy "${EPREFIX}/usr")
-		$(use_enable tokenizer tokenizer)
-		$(use_enable wddx wddx)
-		$(use_enable xml xml)
-		$(use_enable xmlreader xmlreader)
-		$(use_enable xmlwriter xmlwriter)
-		$(use_with xmlrpc xmlrpc)
-		$(use_with xslt xsl "${EPREFIX}/usr")
-		$(use_enable zip zip)
-		$(use_with zip-encryption libzip "${EPREFIX}/usr")
-		$(use_with zlib zlib "${EPREFIX}/usr")
-		$(use_enable debug 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${shared}" )
-	fi
-
-	# DBA drivers support
-	our_conf+=(
-		$(use_with cdb cdb)
-		$(use_with berkdb db4 "${EPREFIX}/usr")
-		$(use_enable flatfile flatfile)
-		$(use_with gdbm gdbm "${EPREFIX}/usr")
-		$(use_enable inifile inifile)
-		$(use_with qdbm qdbm "${EPREFIX}/usr")
-		$(use_with lmdb lmdb "${EPREFIX}/usr")
-	)
-
-	# Support for the GD graphics library
-	our_conf+=(
-		$(use_with truetype freetype-dir "${EPREFIX}/usr")
-		$(use_enable cjk gd-jis-conv)
-		$(use_with gd jpeg-dir "${EPREFIX}/usr")
-		$(use_with gd png-dir "${EPREFIX}/usr")
-		$(use_with xpm xpm-dir "${EPREFIX}/usr")
-	)
-	if use webp; then
-		our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
-	fi
-	# enable gd last, so configure can pick up the previous settings
-	our_conf+=( $(use_with gd gd) )
-
-	# IMAP support
-	if use imap ; then
-		our_conf+=(
-			$(use_with imap imap "${EPREFIX}/usr")
-			$(use_with ssl imap-ssl "${EPREFIX}/usr")
-		)
-	fi
-
-	# Interbase/firebird support
-	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
-
-	# LDAP support
-	if use ldap ; then
-		our_conf+=(
-			$(use_with ldap ldap "${EPREFIX}/usr")
-			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
-		)
-	fi
-
-	# MySQL support
-	local mysqllib="mysqlnd"
-	local mysqlilib="mysqlnd"
-
-	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
-
-	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
-	our_conf+=(
-		$(use_with odbc unixODBC "${EPREFIX}/usr")
-		$(use_with iodbc iodbc "${EPREFIX}/usr")
-	)
-
-	# 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 "${mysqllib}")
-			$(use_with postgres pdo-pgsql)
-			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
-			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
-			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
-			$(use_with oci8-instant-client pdo-oci)
-		)
-	fi
-
-	# readline/libedit support
-	our_conf+=(
-		$(use_with readline readline "${EPREFIX}/usr")
-		$(use_with libedit libedit "${EPREFIX}/usr")
-	)
-
-	# Session support
-	if use session ; then
-		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
-	else
-		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
-	# --with-pcre-dir affects ext/filter and ext/zip
-	# --with-pcre-valgrind cannot be enabled with system pcre
-	# Many arches don't support pcre-jit
-	our_conf+=(
-		--with-pcre-regex="${EPREFIX}/usr"
-		--with-pcre-dir="${EPREFIX}/usr"
-		--without-pcre-valgrind
-		--without-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
-
-	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
-
-	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=""
-	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 sapi="", 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${PHP_MV}$(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"
-						;;
-					cgi)
-						source="sapi/cgi/php-cgi"
-						;;
-					fpm)
-						source="sapi/fpm/php-fpm"
-						;;
-					embed)
-						source="libs/libphp${PHP_MV}$(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}/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
-
-	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
-	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-7.3.0_rc3.ebuild b/dev-lang/php/php-7.3.0_rc3.ebuild
deleted file mode 100644
index 865dac62201a..000000000000
--- a/dev-lang/php/php-7.3.0_rc3.ebuild
+++ /dev/null
@@ -1,748 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit flag-o-matic eapi7-ver systemd autotools
-
-MY_PV=${PV/_rc/RC}
-DESCRIPTION="The PHP language runtime engine"
-HOMEPAGE="https://secure.php.net/"
-SRC_URI="https://downloads.php.net/~cmb/${PN}-${MY_PV}.tar.xz"
-
-LICENSE="PHP-3.01
-	BSD
-	Zend-2.0
-	bcmath? ( LGPL-2.1+ )
-	fpm? ( BSD-2 )
-	gd? ( gd )
-	unicode? ( BSD-2 LGPL-2.1 )"
-
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
-
-S="${WORKDIR}/${PN}-${MY_PV}"
-
-# We can build the following SAPIs in the given order
-SAPIS="embed cli cgi fpm apache2 phpdbg"
-
-# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
-IUSE="${IUSE}
-	${SAPIS/cli/+cli}
-	threads"
-
-IUSE="${IUSE} acl argon2 bcmath berkdb bzip2 calendar cdb cjk
-	coverage +ctype curl debug
-	enchant exif +fileinfo +filter firebird
-	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
-	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl lmdb
-	mhash mssql mysql mysqli nls
-	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
-	readline recode selinux +session session-mm sharedmem
-	+simplexml snmp soap sockets sodium spell sqlite ssl
-	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode wddx webp
-	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zip-encryption zlib"
-
-# 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.1[apache2?,fpm?]
-	>=dev-libs/libpcre2-10.30[unicode]
-	fpm? ( acl? ( sys-apps/acl ) )
-	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
-		<www-servers/apache-2.4[threads=] ) )
-	argon2? ( app-crypt/argon2:= )
-	berkdb? ( || (	sys-libs/db:5.3
-					sys-libs/db:5.1
-					sys-libs/db:4.8
-					sys-libs/db:4.7
-					sys-libs/db:4.6
-					sys-libs/db:4.5 ) )
-	bzip2? ( app-arch/bzip2:0= )
-	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
-	coverage? ( dev-util/lcov )
-	curl? ( >=net-misc/curl-7.10.5 )
-	enchant? ( <app-text/enchant-2.0:0 )
-	firebird? ( dev-db/firebird )
-	gd? ( virtual/jpeg:0 media-libs/libpng:0= >=sys-libs/zlib-1.2.0.4 )
-	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
-	gmp? ( dev-libs/gmp:0= )
-	iconv? ( virtual/libiconv )
-	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
-	intl? ( dev-libs/icu:= )
-	iodbc? ( dev-db/libiodbc )
-	kerberos? ( virtual/krb5 )
-	ldap? ( >=net-nds/openldap-1.2.11 )
-	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
-	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
-	lmdb? ( dev-db/lmdb:= )
-	mssql? ( dev-db/freetds[mssql] )
-	nls? ( sys-devel/gettext )
-	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
-	odbc? ( >=dev-db/unixODBC-1.8.13 )
-	postgres? ( dev-db/postgresql:* )
-	qdbm? ( dev-db/qdbm )
-	readline? ( sys-libs/readline:0= )
-	recode? ( app-text/recode )
-	session-mm? ( dev-libs/mm )
-	simplexml? ( >=dev-libs/libxml2-2.6.8 )
-	snmp? ( >=net-analyzer/net-snmp-5.2 )
-	soap? ( >=dev-libs/libxml2-2.6.8 )
-	sodium? ( dev-libs/libsodium:= )
-	spell? ( >=app-text/aspell-0.50 )
-	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
-	ssl? (
-		!libressl? ( >=dev-libs/openssl-1.0.1:0= )
-		libressl? ( dev-libs/libressl:0= )
-	)
-	tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
-	tokyocabinet? ( dev-db/tokyocabinet )
-	truetype? ( =media-libs/freetype-2* )
-	unicode? ( dev-libs/oniguruma:= )
-	wddx? ( >=dev-libs/libxml2-2.6.8 )
-	webp? ( media-libs/libwebp:0= )
-	xml? ( >=dev-libs/libxml2-2.6.8 )
-	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
-	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
-	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
-	xpm? ( x11-libs/libXpm )
-	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
-	zip? ( >=sys-libs/zlib-1.2.0.4:0= )
-	zip-encryption? ( >=dev-libs/libzip-1.2.0:= )
-	zlib? ( >=sys-libs/zlib-1.2.0.4:0= )
-"
-
-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"
-
-# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
-REQUIRED_USE="
-	|| ( cli cgi fpm apache2 embed phpdbg )
-	cli? ( ^^ ( readline libedit ) )
-	truetype? ( gd zlib )
-	webp? ( gd zlib )
-	cjk? ( gd zlib )
-	exif? ( gd zlib )
-	xpm? ( gd zlib )
-	gd? ( zlib )
-	simplexml? ( xml )
-	soap? ( xml )
-	wddx? ( xml )
-	xmlrpc? ( || ( xml iconv ) )
-	xmlreader? ( xml )
-	xslt? ( xml )
-	ldap-sasl? ( ldap )
-	mhash? ( hash )
-	phar? ( hash )
-	qdbm? ( !gdbm )
-	readline? ( !libedit )
-	recode? ( !imap !mysqli !mysql )
-	session-mm? ( session !threads )
-	mysql? ( || ( mysqli pdo ) )
-	zip-encryption? ( zip )
-"
-PATCHES=(
-	"${FILESDIR}/php-freetype-2.9.1.patch"
-)
-
-PHP_MV="$(ver_cut 1)"
-
-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
-
-	dodir "${PHP_INI_DIR#${EPREFIX}}"
-	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/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'
-
-	# Bug 669566 - necessary so that build tools are updated for commands like pecl
-	# Force rebuilding aclocal.m4
-	rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
-	eautoreconf
-}
-
-src_configure() {
-	addpredict /usr/share/snmp/mibs/.index #nowarn
-	addpredict /var/lib/net-snmp/mib_indexes #nowarn
-
-	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
-
-	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
-	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
-	local our_conf=(
-		--prefix="${PHP_DESTDIR}"
-		--mandir="${PHP_DESTDIR}/man"
-		--infodir="${PHP_DESTDIR}/info"
-		--libdir="${PHP_DESTDIR}/lib"
-		--with-libdir="$(get_libdir)"
-		--localstatedir="${EPREFIX}/var"
-		--without-pear
-		$(use_enable threads maintainer-zts)
-	)
-
-	our_conf+=(
-		$(use_with argon2 password-argon2 "${EPREFIX}/usr")
-		$(use_enable bcmath bcmath)
-		$(use_with bzip2 bz2 "${EPREFIX}/usr")
-		$(use_enable calendar calendar)
-		$(use_enable coverage gcov)
-		$(use_enable ctype ctype)
-		$(use_with curl curl "${EPREFIX}/usr")
-		$(use_enable xml dom)
-		$(use_with enchant enchant "${EPREFIX}/usr")
-		$(use_enable exif exif)
-		$(use_enable fileinfo fileinfo)
-		$(use_enable filter filter)
-		$(use_enable ftp ftp)
-		$(use_with nls gettext "${EPREFIX}/usr")
-		$(use_with gmp gmp "${EPREFIX}/usr")
-		$(use_enable hash hash)
-		$(use_with mhash mhash "${EPREFIX}/usr")
-		$(use_with iconv iconv \
-			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
-		$(use_enable intl intl)
-		$(use_enable ipv6 ipv6)
-		$(use_enable json json)
-		$(use_with kerberos kerberos "${EPREFIX}/usr")
-		$(use_enable xml libxml)
-		$(use_with xml libxml-dir "${EPREFIX}/usr")
-		$(use_enable unicode mbstring)
-		$(use_with unicode onig "${EPREFIX}/usr")
-		$(use_with ssl openssl "${EPREFIX}/usr")
-		$(use_with ssl openssl-dir "${EPREFIX}/usr")
-		$(use_enable pcntl pcntl)
-		$(use_enable phar phar)
-		$(use_enable pdo pdo)
-		$(use_enable opcache opcache)
-		$(use_with postgres pgsql "${EPREFIX}/usr")
-		$(use_enable posix posix)
-		$(use_with spell pspell "${EPREFIX}/usr")
-		$(use_with recode recode "${EPREFIX}/usr")
-		$(use_enable simplexml simplexml)
-		$(use_enable sharedmem shmop)
-		$(use_with snmp snmp "${EPREFIX}/usr")
-		$(use_enable soap soap)
-		$(use_enable sockets sockets)
-		$(use_with sodium sodium "${EPREFIX}/usr")
-		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
-		$(use_enable sysvipc sysvmsg)
-		$(use_enable sysvipc sysvsem)
-		$(use_enable sysvipc sysvshm)
-		$(use_with tidy tidy "${EPREFIX}/usr")
-		$(use_enable tokenizer tokenizer)
-		$(use_enable wddx wddx)
-		$(use_enable xml xml)
-		$(use_enable xmlreader xmlreader)
-		$(use_enable xmlwriter xmlwriter)
-		$(use_with xmlrpc xmlrpc)
-		$(use_with xslt xsl "${EPREFIX}/usr")
-		$(use_enable zip zip)
-		$(use_with zip-encryption libzip "${EPREFIX}/usr")
-		$(use_with zlib zlib "${EPREFIX}/usr")
-		$(use_enable debug 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${shared}" )
-	fi
-
-	# DBA drivers support
-	our_conf+=(
-		$(use_with cdb cdb)
-		$(use_with berkdb db4 "${EPREFIX}/usr")
-		$(use_enable flatfile flatfile)
-		$(use_with gdbm gdbm "${EPREFIX}/usr")
-		$(use_enable inifile inifile)
-		$(use_with qdbm qdbm "${EPREFIX}/usr")
-		$(use_with lmdb lmdb "${EPREFIX}/usr")
-	)
-
-	# Support for the GD graphics library
-	our_conf+=(
-		$(use_with truetype freetype-dir "${EPREFIX}/usr")
-		$(use_enable cjk gd-jis-conv)
-		$(use_with gd jpeg-dir "${EPREFIX}/usr")
-		$(use_with gd png-dir "${EPREFIX}/usr")
-		$(use_with xpm xpm-dir "${EPREFIX}/usr")
-	)
-	if use webp; then
-		our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
-	fi
-	# enable gd last, so configure can pick up the previous settings
-	our_conf+=( $(use_with gd gd) )
-
-	# IMAP support
-	if use imap ; then
-		our_conf+=(
-			$(use_with imap imap "${EPREFIX}/usr")
-			$(use_with ssl imap-ssl "${EPREFIX}/usr")
-		)
-	fi
-
-	# Interbase/firebird support
-	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
-
-	# LDAP support
-	if use ldap ; then
-		our_conf+=(
-			$(use_with ldap ldap "${EPREFIX}/usr")
-			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
-		)
-	fi
-
-	# MySQL support
-	local mysqllib="mysqlnd"
-	local mysqlilib="mysqlnd"
-
-	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
-
-	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
-	our_conf+=(
-		$(use_with odbc unixODBC "${EPREFIX}/usr")
-		$(use_with iodbc iodbc "${EPREFIX}/usr")
-	)
-
-	# 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 "${mysqllib}")
-			$(use_with postgres pdo-pgsql)
-			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
-			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
-			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
-			$(use_with oci8-instant-client pdo-oci)
-		)
-	fi
-
-	# readline/libedit support
-	our_conf+=(
-		$(use_with readline readline "${EPREFIX}/usr")
-		$(use_with libedit libedit "${EPREFIX}/usr")
-	)
-
-	# Session support
-	if use session ; then
-		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
-	else
-		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
-	# --with-pcre-dir affects ext/filter and ext/zip
-	# --with-pcre-valgrind cannot be enabled with system pcre
-	# Many arches don't support pcre-jit
-	our_conf+=(
-		--with-pcre-regex="${EPREFIX}/usr"
-		--with-pcre-dir="${EPREFIX}/usr"
-		--without-pcre-valgrind
-		--without-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
-
-	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
-
-	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=""
-	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 sapi="", 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${PHP_MV}$(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"
-						;;
-					cgi)
-						source="sapi/cgi/php-cgi"
-						;;
-					fpm)
-						source="sapi/fpm/php-fpm"
-						;;
-					embed)
-						source="libs/libphp${PHP_MV}$(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}/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
-
-	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
-	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-7.3.0_rc5.ebuild b/dev-lang/php/php-7.3.0_rc5.ebuild
deleted file mode 100644
index 865dac62201a..000000000000
--- a/dev-lang/php/php-7.3.0_rc5.ebuild
+++ /dev/null
@@ -1,748 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit flag-o-matic eapi7-ver systemd autotools
-
-MY_PV=${PV/_rc/RC}
-DESCRIPTION="The PHP language runtime engine"
-HOMEPAGE="https://secure.php.net/"
-SRC_URI="https://downloads.php.net/~cmb/${PN}-${MY_PV}.tar.xz"
-
-LICENSE="PHP-3.01
-	BSD
-	Zend-2.0
-	bcmath? ( LGPL-2.1+ )
-	fpm? ( BSD-2 )
-	gd? ( gd )
-	unicode? ( BSD-2 LGPL-2.1 )"
-
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
-
-S="${WORKDIR}/${PN}-${MY_PV}"
-
-# We can build the following SAPIs in the given order
-SAPIS="embed cli cgi fpm apache2 phpdbg"
-
-# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
-IUSE="${IUSE}
-	${SAPIS/cli/+cli}
-	threads"
-
-IUSE="${IUSE} acl argon2 bcmath berkdb bzip2 calendar cdb cjk
-	coverage +ctype curl debug
-	enchant exif +fileinfo +filter firebird
-	flatfile ftp gd gdbm gmp +hash +iconv imap inifile
-	intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl lmdb
-	mhash mssql mysql mysqli nls
-	oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
-	readline recode selinux +session session-mm sharedmem
-	+simplexml snmp soap sockets sodium spell sqlite ssl
-	sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode wddx webp
-	+xml xmlreader xmlwriter xmlrpc xpm xslt zip zip-encryption zlib"
-
-# 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.1[apache2?,fpm?]
-	>=dev-libs/libpcre2-10.30[unicode]
-	fpm? ( acl? ( sys-apps/acl ) )
-	apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
-		<www-servers/apache-2.4[threads=] ) )
-	argon2? ( app-crypt/argon2:= )
-	berkdb? ( || (	sys-libs/db:5.3
-					sys-libs/db:5.1
-					sys-libs/db:4.8
-					sys-libs/db:4.7
-					sys-libs/db:4.6
-					sys-libs/db:4.5 ) )
-	bzip2? ( app-arch/bzip2:0= )
-	cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
-	coverage? ( dev-util/lcov )
-	curl? ( >=net-misc/curl-7.10.5 )
-	enchant? ( <app-text/enchant-2.0:0 )
-	firebird? ( dev-db/firebird )
-	gd? ( virtual/jpeg:0 media-libs/libpng:0= >=sys-libs/zlib-1.2.0.4 )
-	gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
-	gmp? ( dev-libs/gmp:0= )
-	iconv? ( virtual/libiconv )
-	imap? ( virtual/imap-c-client[kerberos=,ssl=] )
-	intl? ( dev-libs/icu:= )
-	iodbc? ( dev-db/libiodbc )
-	kerberos? ( virtual/krb5 )
-	ldap? ( >=net-nds/openldap-1.2.11 )
-	ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
-	libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
-	lmdb? ( dev-db/lmdb:= )
-	mssql? ( dev-db/freetds[mssql] )
-	nls? ( sys-devel/gettext )
-	oci8-instant-client? ( dev-db/oracle-instantclient-basic )
-	odbc? ( >=dev-db/unixODBC-1.8.13 )
-	postgres? ( dev-db/postgresql:* )
-	qdbm? ( dev-db/qdbm )
-	readline? ( sys-libs/readline:0= )
-	recode? ( app-text/recode )
-	session-mm? ( dev-libs/mm )
-	simplexml? ( >=dev-libs/libxml2-2.6.8 )
-	snmp? ( >=net-analyzer/net-snmp-5.2 )
-	soap? ( >=dev-libs/libxml2-2.6.8 )
-	sodium? ( dev-libs/libsodium:= )
-	spell? ( >=app-text/aspell-0.50 )
-	sqlite? ( >=dev-db/sqlite-3.7.6.3 )
-	ssl? (
-		!libressl? ( >=dev-libs/openssl-1.0.1:0= )
-		libressl? ( dev-libs/libressl:0= )
-	)
-	tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
-	tokyocabinet? ( dev-db/tokyocabinet )
-	truetype? ( =media-libs/freetype-2* )
-	unicode? ( dev-libs/oniguruma:= )
-	wddx? ( >=dev-libs/libxml2-2.6.8 )
-	webp? ( media-libs/libwebp:0= )
-	xml? ( >=dev-libs/libxml2-2.6.8 )
-	xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
-	xmlreader? ( >=dev-libs/libxml2-2.6.8 )
-	xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
-	xpm? ( x11-libs/libXpm )
-	xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
-	zip? ( >=sys-libs/zlib-1.2.0.4:0= )
-	zip-encryption? ( >=dev-libs/libzip-1.2.0:= )
-	zlib? ( >=sys-libs/zlib-1.2.0.4:0= )
-"
-
-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"
-
-# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
-REQUIRED_USE="
-	|| ( cli cgi fpm apache2 embed phpdbg )
-	cli? ( ^^ ( readline libedit ) )
-	truetype? ( gd zlib )
-	webp? ( gd zlib )
-	cjk? ( gd zlib )
-	exif? ( gd zlib )
-	xpm? ( gd zlib )
-	gd? ( zlib )
-	simplexml? ( xml )
-	soap? ( xml )
-	wddx? ( xml )
-	xmlrpc? ( || ( xml iconv ) )
-	xmlreader? ( xml )
-	xslt? ( xml )
-	ldap-sasl? ( ldap )
-	mhash? ( hash )
-	phar? ( hash )
-	qdbm? ( !gdbm )
-	readline? ( !libedit )
-	recode? ( !imap !mysqli !mysql )
-	session-mm? ( session !threads )
-	mysql? ( || ( mysqli pdo ) )
-	zip-encryption? ( zip )
-"
-PATCHES=(
-	"${FILESDIR}/php-freetype-2.9.1.patch"
-)
-
-PHP_MV="$(ver_cut 1)"
-
-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
-
-	dodir "${PHP_INI_DIR#${EPREFIX}}"
-	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 "${PHP_EXT_INI_DIR#${EPREFIX}}/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'
-
-	# Bug 669566 - necessary so that build tools are updated for commands like pecl
-	# Force rebuilding aclocal.m4
-	rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
-	eautoreconf
-}
-
-src_configure() {
-	addpredict /usr/share/snmp/mibs/.index #nowarn
-	addpredict /var/lib/net-snmp/mib_indexes #nowarn
-
-	PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
-
-	# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
-	# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
-	local our_conf=(
-		--prefix="${PHP_DESTDIR}"
-		--mandir="${PHP_DESTDIR}/man"
-		--infodir="${PHP_DESTDIR}/info"
-		--libdir="${PHP_DESTDIR}/lib"
-		--with-libdir="$(get_libdir)"
-		--localstatedir="${EPREFIX}/var"
-		--without-pear
-		$(use_enable threads maintainer-zts)
-	)
-
-	our_conf+=(
-		$(use_with argon2 password-argon2 "${EPREFIX}/usr")
-		$(use_enable bcmath bcmath)
-		$(use_with bzip2 bz2 "${EPREFIX}/usr")
-		$(use_enable calendar calendar)
-		$(use_enable coverage gcov)
-		$(use_enable ctype ctype)
-		$(use_with curl curl "${EPREFIX}/usr")
-		$(use_enable xml dom)
-		$(use_with enchant enchant "${EPREFIX}/usr")
-		$(use_enable exif exif)
-		$(use_enable fileinfo fileinfo)
-		$(use_enable filter filter)
-		$(use_enable ftp ftp)
-		$(use_with nls gettext "${EPREFIX}/usr")
-		$(use_with gmp gmp "${EPREFIX}/usr")
-		$(use_enable hash hash)
-		$(use_with mhash mhash "${EPREFIX}/usr")
-		$(use_with iconv iconv \
-			$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
-		$(use_enable intl intl)
-		$(use_enable ipv6 ipv6)
-		$(use_enable json json)
-		$(use_with kerberos kerberos "${EPREFIX}/usr")
-		$(use_enable xml libxml)
-		$(use_with xml libxml-dir "${EPREFIX}/usr")
-		$(use_enable unicode mbstring)
-		$(use_with unicode onig "${EPREFIX}/usr")
-		$(use_with ssl openssl "${EPREFIX}/usr")
-		$(use_with ssl openssl-dir "${EPREFIX}/usr")
-		$(use_enable pcntl pcntl)
-		$(use_enable phar phar)
-		$(use_enable pdo pdo)
-		$(use_enable opcache opcache)
-		$(use_with postgres pgsql "${EPREFIX}/usr")
-		$(use_enable posix posix)
-		$(use_with spell pspell "${EPREFIX}/usr")
-		$(use_with recode recode "${EPREFIX}/usr")
-		$(use_enable simplexml simplexml)
-		$(use_enable sharedmem shmop)
-		$(use_with snmp snmp "${EPREFIX}/usr")
-		$(use_enable soap soap)
-		$(use_enable sockets sockets)
-		$(use_with sodium sodium "${EPREFIX}/usr")
-		$(use_with sqlite sqlite3 "${EPREFIX}/usr")
-		$(use_enable sysvipc sysvmsg)
-		$(use_enable sysvipc sysvsem)
-		$(use_enable sysvipc sysvshm)
-		$(use_with tidy tidy "${EPREFIX}/usr")
-		$(use_enable tokenizer tokenizer)
-		$(use_enable wddx wddx)
-		$(use_enable xml xml)
-		$(use_enable xmlreader xmlreader)
-		$(use_enable xmlwriter xmlwriter)
-		$(use_with xmlrpc xmlrpc)
-		$(use_with xslt xsl "${EPREFIX}/usr")
-		$(use_enable zip zip)
-		$(use_with zip-encryption libzip "${EPREFIX}/usr")
-		$(use_with zlib zlib "${EPREFIX}/usr")
-		$(use_enable debug 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${shared}" )
-	fi
-
-	# DBA drivers support
-	our_conf+=(
-		$(use_with cdb cdb)
-		$(use_with berkdb db4 "${EPREFIX}/usr")
-		$(use_enable flatfile flatfile)
-		$(use_with gdbm gdbm "${EPREFIX}/usr")
-		$(use_enable inifile inifile)
-		$(use_with qdbm qdbm "${EPREFIX}/usr")
-		$(use_with lmdb lmdb "${EPREFIX}/usr")
-	)
-
-	# Support for the GD graphics library
-	our_conf+=(
-		$(use_with truetype freetype-dir "${EPREFIX}/usr")
-		$(use_enable cjk gd-jis-conv)
-		$(use_with gd jpeg-dir "${EPREFIX}/usr")
-		$(use_with gd png-dir "${EPREFIX}/usr")
-		$(use_with xpm xpm-dir "${EPREFIX}/usr")
-	)
-	if use webp; then
-		our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
-	fi
-	# enable gd last, so configure can pick up the previous settings
-	our_conf+=( $(use_with gd gd) )
-
-	# IMAP support
-	if use imap ; then
-		our_conf+=(
-			$(use_with imap imap "${EPREFIX}/usr")
-			$(use_with ssl imap-ssl "${EPREFIX}/usr")
-		)
-	fi
-
-	# Interbase/firebird support
-	our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
-
-	# LDAP support
-	if use ldap ; then
-		our_conf+=(
-			$(use_with ldap ldap "${EPREFIX}/usr")
-			$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
-		)
-	fi
-
-	# MySQL support
-	local mysqllib="mysqlnd"
-	local mysqlilib="mysqlnd"
-
-	our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
-
-	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
-	our_conf+=(
-		$(use_with odbc unixODBC "${EPREFIX}/usr")
-		$(use_with iodbc iodbc "${EPREFIX}/usr")
-	)
-
-	# 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 "${mysqllib}")
-			$(use_with postgres pdo-pgsql)
-			$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
-			$(use_with firebird pdo-firebird "${EPREFIX}/usr")
-			$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
-			$(use_with oci8-instant-client pdo-oci)
-		)
-	fi
-
-	# readline/libedit support
-	our_conf+=(
-		$(use_with readline readline "${EPREFIX}/usr")
-		$(use_with libedit libedit "${EPREFIX}/usr")
-	)
-
-	# Session support
-	if use session ; then
-		our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
-	else
-		our_conf+=( $(use_enable session 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-pcre-regex affects ext/pcre
-	# --with-pcre-dir affects ext/filter and ext/zip
-	# --with-pcre-valgrind cannot be enabled with system pcre
-	# Many arches don't support pcre-jit
-	our_conf+=(
-		--with-pcre-regex="${EPREFIX}/usr"
-		--with-pcre-dir="${EPREFIX}/usr"
-		--without-pcre-valgrind
-		--without-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
-
-	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
-
-	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=""
-	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 sapi="", 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${PHP_MV}$(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"
-						;;
-					cgi)
-						source="sapi/cgi/php-cgi"
-						;;
-					fpm)
-						source="sapi/fpm/php-fpm"
-						;;
-					embed)
-						source="libs/libphp${PHP_MV}$(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}/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
-
-	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
-	for m in ${SAPIS}; do
-		[[ ${m} == 'embed' ]] && continue;
-		if use $m ; then
-			local ci=$(eselect php show $m)
-			if [[ -z $ci ]]; then
-				eselect php set $m php${SLOT} || die
-				einfo "Switched ${m} to use php:${SLOT}"
-				einfo
-			elif [[ $ci != "php${SLOT}" ]] ; then
-				elog "To switch $m to use php:${SLOT}, run"
-				elog "    eselect php set $m php${SLOT}"
-				elog
-			fi
-		fi
-	done
-
-	# Remove dead symlinks for SAPIs that were just disabled. For
-	# example, if the user has the cgi SAPI enabled, then he has an
-	# eselect-php symlink for it. If he later reinstalls PHP with
-	# USE="-cgi", that symlink will break. This call to eselect is
-	# supposed to remove that dead link per bug 572436.
-	eselect php cleanup || die
-
-	if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then
-	   elog "To build extensions for this version of PHP, you will need to"
-	   elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
-	   elog
-	fi
-
-	# Warn about the removal of PHP_INI_VERSION if the user has it set.
-	if [[ -n "${PHP_INI_VERSION}" ]]; then
-		ewarn 'The PHP_INI_VERSION variable has been phased out. You may'
-		ewarn 'remove it from your configuration at your convenience. See'
-		ewarn
-		ewarn '  https://bugs.gentoo.org/611214'
-		ewarn
-		ewarn 'for more information.'
-	fi
-
-	elog "For details on how version slotting works, please see"
-	elog "the wiki:"
-	elog
-	elog "  https://wiki.gentoo.org/wiki/PHP"
-	elog
-}
-
-pkg_postrm() {
-	# This serves two purposes. First, if we have just removed the last
-	# installed version of PHP, then this will remove any dead symlinks
-	# belonging to eselect-php. Second, if a user upgrades slots from
-	# (say) 5.6 to 7.0 and depcleans the old slot, then this will update
-	# his existing symlinks to point to the new 7.0 installation. The
-	# latter is bug 432962.
-	#
-	# Note: the eselect-php package may not be installed at this point,
-	# so we can't die() if this command fails.
-	eselect php cleanup
-}
-- 
cgit v1.2.3