diff --git a/Manifest.files.gz b/Manifest.files.gz index bdc35af01cec..4512cdd0e721 100644 Binary files a/Manifest.files.gz and b/Manifest.files.gz differ diff --git a/app-admin/Manifest.gz b/app-admin/Manifest.gz index 5a03293b1b65..81bfb624eefe 100644 Binary files a/app-admin/Manifest.gz and b/app-admin/Manifest.gz differ diff --git a/app-admin/abrt/abrt-2.10.10-r2.ebuild b/app-admin/abrt/abrt-2.10.10-r2.ebuild index b1301efc7478..b5235f27b811 100644 --- a/app-admin/abrt/abrt-2.10.10-r2.ebuild +++ b/app-admin/abrt/abrt-2.10.10-r2.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -12,7 +12,7 @@ SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" LICENSE="GPL-2" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="~amd64 x86" IUSE="debug selinux" REQUIRED_USE="${PYTHON_REQUIRED_USE}" diff --git a/app-misc/Manifest.gz b/app-misc/Manifest.gz index 3b762a83f424..f90ece51ed26 100644 Binary files a/app-misc/Manifest.gz and b/app-misc/Manifest.gz differ diff --git a/app-misc/mosquitto/mosquitto-1.5.3.ebuild b/app-misc/mosquitto/mosquitto-1.5.3.ebuild index d25a8f0f4dae..ffc14bbf4dbd 100644 --- a/app-misc/mosquitto/mosquitto-1.5.3.ebuild +++ b/app-misc/mosquitto/mosquitto-1.5.3.ebuild @@ -12,7 +12,7 @@ SRC_URI="https://mosquitto.org/files/source/${P}.tar.gz" LICENSE="EPL-1.0" SLOT="0" -KEYWORDS="amd64 ~arm ~x86" +KEYWORDS="amd64 ~arm x86" IUSE="bridge examples +persistence +srv ssl tcpd test websockets" REQUIRED_USE="test? ( bridge )" diff --git a/app-misc/yq/yq-2.7.1.ebuild b/app-misc/yq/yq-2.7.1-r1.ebuild similarity index 91% rename from app-misc/yq/yq-2.7.1.ebuild rename to app-misc/yq/yq-2.7.1-r1.ebuild index f9e810469206..7b34b51cdb04 100644 --- a/app-misc/yq/yq-2.7.1.ebuild +++ b/app-misc/yq/yq-2.7.1-r1.ebuild @@ -16,14 +16,14 @@ IUSE="test" RDEPEND="app-misc/jq >=dev-python/pyyaml-3.11[${PYTHON_USEDEP}] - dev-python/setuptools[${PYTHON_USEDEP}]" + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/xmltodict[${PYTHON_USEDEP}]" DEPEND="${RDEPEND} test? ( dev-python/coverage[${PYTHON_USEDEP}] dev-python/flake8[${PYTHON_USEDEP}] dev-python/toml[${PYTHON_USEDEP}] dev-python/wheel[${PYTHON_USEDEP}] - dev-python/xmltodict[${PYTHON_USEDEP}] )" python_prepare_all() { diff --git a/app-portage/Manifest.gz b/app-portage/Manifest.gz index 00ee76f8c652..2b5d85975c7f 100644 Binary files a/app-portage/Manifest.gz and b/app-portage/Manifest.gz differ diff --git a/app-portage/eix/eix-0.33.5.ebuild b/app-portage/eix/eix-0.33.5.ebuild index a5f9ffa9103d..5722f8c59ac6 100644 --- a/app-portage/eix/eix-0.33.5.ebuild +++ b/app-portage/eix/eix-0.33.5.ebuild @@ -11,7 +11,7 @@ SRC_URI="https://github.com/vaeth/eix/releases/download/v${PV}/${P}.tar.xz" LICENSE="GPL-2" SLOT="0" -KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" IUSE="debug doc nls sqlite" BOTHDEPEND="nls? ( virtual/libintl ) diff --git a/app-shells/Manifest.gz b/app-shells/Manifest.gz index 4dcb3f051602..e999610fa1b3 100644 Binary files a/app-shells/Manifest.gz and b/app-shells/Manifest.gz differ diff --git a/app-shells/mksh/mksh-56c.ebuild b/app-shells/mksh/mksh-56c.ebuild index fe3b54c6ab82..4d2d0ec03977 100644 --- a/app-shells/mksh/mksh-56c.ebuild +++ b/app-shells/mksh/mksh-56c.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=5 @@ -10,7 +10,7 @@ HOMEPAGE="http://mirbsd.de/mksh" SRC_URI="http://www.mirbsd.org/MirOS/dist/mir/mksh/${PN}-R${PV}.tgz" LICENSE="BSD" SLOT="0" -KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux" +KEYWORDS="~amd64 ~ppc x86 ~amd64-linux ~x86-linux" IUSE="static" DEPEND="static? ( dev-libs/klibc )" RDEPEND="" diff --git a/app-shells/zsh/zsh-5.6.2.ebuild b/app-shells/zsh/zsh-5.6.2.ebuild index 3ffb7a9c5989..1c257caebb3e 100644 --- a/app-shells/zsh/zsh-5.6.2.ebuild +++ b/app-shells/zsh/zsh-5.6.2.ebuild @@ -9,7 +9,7 @@ if [[ ${PV} == 9999* ]] ; then inherit git-r3 autotools EGIT_REPO_URI="https://git.code.sf.net/p/zsh/code" else - KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" + KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" SRC_URI="https://www.zsh.org/pub/${P}.tar.xz https://www.zsh.org/pub/old/${P}.tar.xz doc? ( https://www.zsh.org/pub/${P}-doc.tar.xz )" diff --git a/app-text/Manifest.gz b/app-text/Manifest.gz index 14407ae819bb..ad0a05c397d4 100644 Binary files a/app-text/Manifest.gz and b/app-text/Manifest.gz differ diff --git a/app-text/cmigemo/cmigemo-1.3c-r3.ebuild b/app-text/cmigemo/cmigemo-1.3c-r3.ebuild index 5843c8f263fd..7271af94503b 100644 --- a/app-text/cmigemo/cmigemo-1.3c-r3.ebuild +++ b/app-text/cmigemo/cmigemo-1.3c-r3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 @@ -11,7 +11,7 @@ SRC_URI="http://www.kaoriya.net/dist/var/${MY_P}.tar.bz2" LICENSE="MIT" SLOT="0" -KEYWORDS="~alpha ~amd64 ~ppc ~x86" +KEYWORDS="~alpha ~amd64 ~ppc x86" IUSE="unicode vim-syntax" DEPEND=">=app-dicts/migemo-dict-200812[unicode=] diff --git a/app-text/unrtf/unrtf-0.21.10.ebuild b/app-text/unrtf/unrtf-0.21.10.ebuild index 7f5b7b8f448a..68d65fbb7543 100644 --- a/app-text/unrtf/unrtf-0.21.10.ebuild +++ b/app-text/unrtf/unrtf-0.21.10.ebuild @@ -9,5 +9,5 @@ SRC_URI="mirror://gnu/${PN}/${P}.tar.gz" LICENSE="GPL-3" SLOT="0" -KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-solaris" +KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-solaris" IUSE="" diff --git a/dev-dotnet/Manifest.gz b/dev-dotnet/Manifest.gz index 4423f362af93..1b46cd22b254 100644 Binary files a/dev-dotnet/Manifest.gz and b/dev-dotnet/Manifest.gz differ diff --git a/dev-dotnet/libgdiplus/libgdiplus-4.2-r3.ebuild b/dev-dotnet/libgdiplus/libgdiplus-4.2-r3.ebuild index 644527fcf0ed..172fd0b6b921 100644 --- a/dev-dotnet/libgdiplus/libgdiplus-4.2-r3.ebuild +++ b/dev-dotnet/libgdiplus/libgdiplus-4.2-r3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2017 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -10,7 +10,7 @@ HOMEPAGE="http://www.mono-project.com" LICENSE="MIT" SLOT="0" -KEYWORDS="amd64 ~arm64 ppc ppc64 x86 ~amd64-linux ~x86-linux ~x86-solaris" +KEYWORDS="amd64 ~arm ~arm64 ppc ppc64 x86 ~amd64-linux ~x86-linux ~x86-solaris" SRC_URI="http://download.mono-project.com/sources/${PN}/${P}.tar.gz" IUSE="cairo" diff --git a/dev-java/Manifest.gz b/dev-java/Manifest.gz index 1227c5314334..bad2d87bfe3c 100644 Binary files a/dev-java/Manifest.gz and b/dev-java/Manifest.gz differ diff --git a/dev-java/pdfbox/pdfbox-1.8.15.ebuild b/dev-java/pdfbox/pdfbox-1.8.15.ebuild index 565ea9e1fd61..c4ea10907b66 100644 --- a/dev-java/pdfbox/pdfbox-1.8.15.ebuild +++ b/dev-java/pdfbox/pdfbox-1.8.15.ebuild @@ -15,7 +15,7 @@ SRC_URI="mirror://apache/${PN}/${PV}/${P}-src.zip http://repo2.maven.org/maven2/com/adobe/pdf/pcfi/2010.08.09/${ADOBE_FILES}" LICENSE="Apache-2.0" SLOT="1.8" -KEYWORDS="amd64 ~arm64 ~ppc64 ~x86" +KEYWORDS="amd64 ~arm64 ~ppc64 x86" IUSE="test" RESTRICT="test" # Explosive even when manually using unmodified build.xml. diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz index 4e0f243a054a..1ab2cef7444e 100644 Binary files a/dev-lang/Manifest.gz and b/dev-lang/Manifest.gz differ diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest index a4165302dd20..01e629a8190e 100644 --- a/dev-lang/php/Manifest +++ b/dev-lang/php/Manifest @@ -1,10 +1,14 @@ 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.2.13.tar.xz 12116484 BLAKE2B 00d265c10343e590772a4de103ae885149a56a7c0ef957cb24d5e81f86021231da5e75b655081e9fcba99b83956d55265b6af1d779ee65cebee9a974f936a634 SHA512 9df1d43e9cd701db10281811b328721b85cb90c6c8dae1842b0fd848cb5388328918b3040bbad7634b340550d82b93746ea479ed45f4d8a80e8a316e6324115d DIST php-7.3.0.tar.xz 11928820 BLAKE2B 36fee652cbbc28bbeb1b2df037b4b05084910d94af86c16150d776b82f91fb85691f9846c51538dbf6f3e64ece26894fe9c7a5f272d2848d41cdf8e1338b9805 SHA512 d991101eb833d3a47833aa930341e75c56f26c4cb0249896728ebe209c6c02af1704fccc3052128d8f9fdffc60dcef0ece38a532697131141946898d8b1abcda 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 + #include + #include ++#include + + #include + +@@ -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-- ++ ++--FILE-- ++ 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 ++#include + +-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 + } + ++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 + #include + #include ++#include ++ + extern "C" { + #include "../php_intl.h" + #define USE_TIMEZONE_POINTER 1 +@@ -32,6 +34,11 @@ extern "C" { + #include + } + ++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 + } + ++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 + ++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 ++#include ++#include + #include + #include + +--- 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 ++#include + + 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 ++#include + #include + #include + #include +@@ -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 + ++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 + + /* {{{ 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 + } + ++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 + #include + #include ++#include + #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 + #include + #include ++#include + + #include + +@@ -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-- ++ ++--FILE-- ++ 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 ++#include + +-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 + } + ++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 + #include + #include ++#include ++ + 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 + } + ++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 + ++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 ++#include ++#include + #include + #include + +--- 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 ++#include + + 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 ++#include + #include + #include + #include +@@ -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 + #include + ++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 + + /* {{{ 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 + } + ++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 + #include + #include ++#include + #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 ++#include + +-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 + } + ++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 + #include + #include ++#include ++ + 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 + } + ++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 + ++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 ++#include ++#include + #include + #include + +--- 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 ++#include + + 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 ++#include + #include + #include + #include +@@ -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 + #include + ++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 + + /* {{{ 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 + } + ++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 + #include + #include ++#include + #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 ++#include + + #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 ++#include + +-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 + } + ++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 + #include + #include ++#include ++ + 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 + ++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 ++#include ++#include + #include + #include + +--- 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 ++#include + + 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 ++#include + #include + #include + #include +@@ -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 + #include + ++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 + + /* {{{ 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 + } + ++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 + #include + #include ++#include + #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 ++#include + + #define IC_METHOD(mname) PHP_METHOD(IntlChar, mname) + +-- +2.19.2 + 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=] + =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=] + =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=] + =dev-libs/libmcrypt-2.4 ) + curl? ( >=net-misc/curl-7.10.5 ) + enchant? ( =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=] + =net-misc/curl-7.10.5 ) + enchant? ( =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-libs/Manifest.gz b/dev-libs/Manifest.gz index 2f5bcec017e6..85c5b575c987 100644 Binary files a/dev-libs/Manifest.gz and b/dev-libs/Manifest.gz differ diff --git a/dev-libs/appstream/appstream-0.12.3.ebuild b/dev-libs/appstream/appstream-0.12.3.ebuild index f2aa30c08f78..689abd87733b 100644 --- a/dev-libs/appstream/appstream-0.12.3.ebuild +++ b/dev-libs/appstream/appstream-0.12.3.ebuild @@ -11,7 +11,7 @@ if [[ ${PV} = 9999 ]]; then else MY_PN="AppStream" SRC_URI="https://www.freedesktop.org/software/appstream/releases/${MY_PN}-${PV}.tar.xz" - KEYWORDS="~amd64 ~arm ~arm64 ~x86" + KEYWORDS="~amd64 ~arm ~arm64 x86" S="${WORKDIR}/${MY_PN}-${PV}" fi diff --git a/dev-libs/libreport/libreport-2.9.5.ebuild b/dev-libs/libreport/libreport-2.9.5.ebuild index 9d1da641fb02..732be609befd 100644 --- a/dev-libs/libreport/libreport-2.9.5.ebuild +++ b/dev-libs/libreport/libreport-2.9.5.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -12,7 +12,7 @@ SRC_URI="https://github.com/abrt/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" LICENSE="GPL-2" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="~amd64 x86" IUSE="+gtk python" REQUIRED_USE="${PYTHON_REQUIRED_USE}" diff --git a/dev-libs/satyr/satyr-0.26.ebuild b/dev-libs/satyr/satyr-0.26.ebuild index 400a2a442d4a..d065a129e083 100644 --- a/dev-libs/satyr/satyr-0.26.ebuild +++ b/dev-libs/satyr/satyr-0.26.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -16,7 +16,7 @@ SLOT="0/3" IUSE="python" REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" -KEYWORDS="~amd64 ~x86" +KEYWORDS="~amd64 x86" RDEPEND="python? ( ${PYTHON_DEPS} ) >=dev-libs/elfutils-0.158 diff --git a/dev-python/Manifest.gz b/dev-python/Manifest.gz index f78cbb29b510..638a59e7befb 100644 Binary files a/dev-python/Manifest.gz and b/dev-python/Manifest.gz differ diff --git a/dev-python/humanize/humanize-0.5.1.ebuild b/dev-python/humanize/humanize-0.5.1.ebuild index a476335fd67a..3f1b650c327f 100644 --- a/dev-python/humanize/humanize-0.5.1.ebuild +++ b/dev-python/humanize/humanize-0.5.1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 @@ -15,7 +15,7 @@ SRC_URI="https://github.com/jmoiron/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" LICENSE="MIT" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="~amd64 x86" IUSE="doc test" BDEPEND=" diff --git a/dev-python/neovim-python-client/Manifest b/dev-python/neovim-python-client/Manifest index 3c39a25efb5b..20598bf50acc 100644 --- a/dev-python/neovim-python-client/Manifest +++ b/dev-python/neovim-python-client/Manifest @@ -1,4 +1,2 @@ -DIST neovim-python-client-0.1.13.tar.gz 41413 BLAKE2B 819c3e7763cfb357d45130928dab23ad149a5f9d8efb0df8699a805bc394662447837ad3edc869705a95d74a37f2eec4f155212da918ac779d389c150a0d7189 SHA512 ecef42601632551c98f8de019bfdf4dbff3ce1f0e1b6943b78a506b710e5810f6a7e611adc09435992b97288ff365a416870a74202a5c68236b5daeb51d15c8b -DIST neovim-python-client-0.2.1.tar.gz 41971 BLAKE2B 9ebff937e08963cb8c764c4dcfcef8b6e28e8d0219635f9602ccc77b0bf4412a797de71fbf149bcaafe85bd1122a0d3cec1d8bfa81217c8c2d5a89bc1772c572 SHA512 710be7f5355077fa1eae256c541a06d475902492a19638c5786e25aafb9181f40afcc8df70aca0da15a569a9d6b095ab7bd8008e4f947725cf081954fb7c042e -DIST neovim-python-client-0.2.4.tar.gz 47216 BLAKE2B 029bc18936fcd23518ee0b80e5396b2ad9477a4395c27ca5d7e30f897599b47d68529cfe0febafae321a2dc9bb8dfd7cdcdde97225e166bae0565bd301598a4b SHA512 38dcd146060d1942d5ab58ab036f39667b908719b1fc48f79c0bd2b82cf458c3ef6750ccf6d0e4b5bdb71b42a9e5666c008f03a46b07801f2ea8435dec8c716a DIST neovim-python-client-0.2.6.tar.gz 50170 BLAKE2B d241ae0019bb8a4f08abf11866d7c964425d96756452e7bafb95fbce1795657c6911cf6bb706f5efa46ac3f5bd2c4af23ade9b9677d8f1f94905d72a39ddfde5 SHA512 a493c1e6be6a196d35e69e6b6b6a7752e939a254ed423079468c0e13ce40c2646ee8d65482648ea37a9d9c53b4f2c50cdd5e6c8dc130e63a7e40f424c4f4a9c0 +DIST neovim-python-client-0.3.1.tar.gz 51626 BLAKE2B 80e68d02d41c7891fb88e9386866f87a1c78acc9e279de4ce4c7022333f8da3b68ffe7c598c84ff9c6386458639b6ffb4aecbfe72288866dc147ffc6197e94e2 SHA512 9c1599aabce9f0e1133364f8e91dd1b57cee107a11d400f530218ec7ad157c2f58134c1e7e8fc27649b4d8953e27c51bf6e4f0e7565d8c3dab94788759eea229 diff --git a/dev-python/neovim-python-client/neovim-python-client-0.1.13.ebuild b/dev-python/neovim-python-client/neovim-python-client-0.1.13.ebuild deleted file mode 100644 index 996030447e49..000000000000 --- a/dev-python/neovim-python-client/neovim-python-client-0.1.13.ebuild +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -PYTHON_COMPAT=( python{2_7,3_{4,5,6}} ) -inherit distutils-r1 - -DESCRIPTION="Python client for Neovim" -HOMEPAGE="https://github.com/neovim/python-client" -SRC_URI="https://github.com/neovim/python-client/archive/${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="Apache-2.0" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="test" - -COMMON_DEPEND=" - =dev-python/msgpack-0.4.0:0[${PYTHON_USEDEP}] - virtual/python-greenlet[${PYTHON_USEDEP}] - $(python_gen_cond_dep 'dev-python/trollius[${PYTHON_USEDEP}]' python2_7)" - -RDEPEND=" - ${COMMON_DEPEND} - >=app-editors/neovim-0.1.6" - -DEPEND=" - ${COMMON_DEPEND} - test? ( - ${RDEPEND} - dev-python/nose[${PYTHON_USEDEP}] - )" - -S="${WORKDIR}/python-client-${PV}" - -python_test() { - nosetests -d -v || die -} diff --git a/dev-python/neovim-python-client/neovim-python-client-0.2.4.ebuild b/dev-python/neovim-python-client/neovim-python-client-0.2.4.ebuild deleted file mode 100644 index fba1505898d1..000000000000 --- a/dev-python/neovim-python-client/neovim-python-client-0.2.4.ebuild +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -PYTHON_COMPAT=( python{2_7,3_{4,5,6}} ) -inherit distutils-r1 - -DESCRIPTION="Python client for Neovim" -HOMEPAGE="https://github.com/neovim/python-client" -SRC_URI="https://github.com/neovim/python-client/archive/${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="Apache-2.0" -SLOT="0" -KEYWORDS="~amd64 ~x86" - -DEPEND=" - >=dev-python/msgpack-0.5.2[${PYTHON_USEDEP}] - virtual/python-greenlet[${PYTHON_USEDEP}] - $(python_gen_cond_dep 'dev-python/trollius[${PYTHON_USEDEP}]' python2_7)" - -RDEPEND=" - ${DEPEND} - >=app-editors/neovim-0.2.1" - -S="${WORKDIR}/python-client-${PV}" - -python_prepare_all() { - # allow useage of renamed msgpack - sed -i '/^msgpack/d' setup.py || die - distutils-r1_python_prepare_all -} diff --git a/dev-python/neovim-python-client/neovim-python-client-0.2.1-r1.ebuild b/dev-python/neovim-python-client/neovim-python-client-0.3.1.ebuild similarity index 73% rename from dev-python/neovim-python-client/neovim-python-client-0.2.1-r1.ebuild rename to dev-python/neovim-python-client/neovim-python-client-0.3.1.ebuild index fba1505898d1..751a436d4fda 100644 --- a/dev-python/neovim-python-client/neovim-python-client-0.2.1-r1.ebuild +++ b/dev-python/neovim-python-client/neovim-python-client-0.3.1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -7,8 +7,8 @@ PYTHON_COMPAT=( python{2_7,3_{4,5,6}} ) inherit distutils-r1 DESCRIPTION="Python client for Neovim" -HOMEPAGE="https://github.com/neovim/python-client" -SRC_URI="https://github.com/neovim/python-client/archive/${PV}.tar.gz -> ${P}.tar.gz" +HOMEPAGE="https://github.com/neovim/pynvim" +SRC_URI="https://github.com/neovim/pynvim/archive/${PV}.tar.gz -> ${P}.tar.gz" LICENSE="Apache-2.0" SLOT="0" @@ -23,7 +23,7 @@ RDEPEND=" ${DEPEND} >=app-editors/neovim-0.2.1" -S="${WORKDIR}/python-client-${PV}" +S="${WORKDIR}/pynvim-${PV}" python_prepare_all() { # allow useage of renamed msgpack diff --git a/dev-python/numpy/numpy-1.14.5.ebuild b/dev-python/numpy/numpy-1.14.5.ebuild index aea02e9675df..b5bef492705f 100644 --- a/dev-python/numpy/numpy-1.14.5.ebuild +++ b/dev-python/numpy/numpy-1.14.5.ebuild @@ -24,7 +24,7 @@ SRC_URI=" )" LICENSE="BSD" SLOT="0" -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 ~sparc-solaris ~x64-solaris ~x86-solaris" +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 ~sparc-solaris ~x64-solaris ~x86-solaris" IUSE="doc lapack test" RDEPEND="lapack? ( virtual/cblas virtual/lapack )" diff --git a/dev-python/pypax/pypax-0.9.3.ebuild b/dev-python/pypax/pypax-0.9.3.ebuild index 8d14788d2b41..72f0e560fc8c 100644 --- a/dev-python/pypax/pypax-0.9.3.ebuild +++ b/dev-python/pypax/pypax-0.9.3.ebuild @@ -12,7 +12,7 @@ if [[ ${PV} == *9999* ]] ; then inherit git-r3 else SRC_URI="https://dev.gentoo.org/~blueness/elfix/elfix-${PV}.tar.gz" - KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ia64 ~mips ~ppc ~ppc64 ~sparc ~x86" + KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ia64 ~mips ~ppc ~ppc64 ~sparc x86" S="${WORKDIR}/elfix-${PV}" fi diff --git a/dev-python/pytables/pytables-3.4.4.ebuild b/dev-python/pytables/pytables-3.4.4.ebuild index 2dbdcf0375b4..9995427aed4c 100644 --- a/dev-python/pytables/pytables-3.4.4.ebuild +++ b/dev-python/pytables/pytables-3.4.4.ebuild @@ -9,7 +9,7 @@ PYTHON_REQ_USE="threads(+)" MY_PN=tables MY_P=${MY_PN}-${PV} -inherit distutils-r1 +inherit distutils-r1 flag-o-matic DESCRIPTION="Hierarchical datasets for Python" HOMEPAGE="https://www.pytables.org/" @@ -37,7 +37,7 @@ DEPEND="${RDEPEND} S="${WORKDIR}/${MY_P}" -DOCS=( ANNOUNCE.txt RELEASE_NOTES.txt THANKS ) +DOCS=( RELEASE_NOTES.txt THANKS ) python_prepare_all() { export HDF5_DIR="${EPREFIX}"/usr diff --git a/dev-python/utidylib/utidylib-0.3-r2.ebuild b/dev-python/utidylib/utidylib-0.3-r2.ebuild index 180247a06a16..9b40f6084348 100644 --- a/dev-python/utidylib/utidylib-0.3-r2.ebuild +++ b/dev-python/utidylib/utidylib-0.3-r2.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -15,7 +15,7 @@ SRC_URI="http://dl.cihar.com/${PN}/${MY_P}.tar.bz2" LICENSE="MIT" SLOT="0" -KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +KEYWORDS="~amd64 ~ppc ~ppc64 x86" IUSE="doc test" RDEPEND=" diff --git a/dev-scheme/Manifest.gz b/dev-scheme/Manifest.gz index 7627da8cba8a..08e0dd4dbb69 100644 Binary files a/dev-scheme/Manifest.gz and b/dev-scheme/Manifest.gz differ diff --git a/dev-scheme/guile-gcrypt/Manifest b/dev-scheme/guile-gcrypt/Manifest new file mode 100644 index 000000000000..99de7a89bf62 --- /dev/null +++ b/dev-scheme/guile-gcrypt/Manifest @@ -0,0 +1 @@ +DIST guile-gcrypt-0.1.0.tar.gz 47119 BLAKE2B f0d135ae0eeecd324d51ebfcb2fd9c131e57c9d822f0729e0cddde05fe4c4df6d854e1394a4ef5361e046f10279e60a10c781e0df2432ec4034d62631a0c2619 SHA512 90934b2347cc94a59537e34b07608a8678ed3af4ce62b42f0659eb3bca4290a2707b2c166a50a16422cb17d03d2a1a3fa59a203404c1b05b0d02cb753f367c52 diff --git a/dev-scheme/guile-gcrypt/guile-gcrypt-0.1.0.ebuild b/dev-scheme/guile-gcrypt/guile-gcrypt-0.1.0.ebuild new file mode 100644 index 000000000000..e377731108c4 --- /dev/null +++ b/dev-scheme/guile-gcrypt/guile-gcrypt-0.1.0.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools + +DESCRIPTION="Guile bindings of libgcrypt" +HOMEPAGE="https://notabug.org/cwebber/guile-gcrypt" +SRC_URI="https://notabug.org/cwebber/guile-gcrypt/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="" + +RDEPEND=" + >=dev-scheme/guile-2.0.11:= + dev-libs/libgcrypt:0= +" +DEPEND="${RDEPEND}" + +S=${WORKDIR}/${PN} + +src_prepare() { + default + + # upstream tag on top of source tree. has no autogenerated files + eautoreconf +} diff --git a/dev-scheme/guile-gcrypt/metadata.xml b/dev-scheme/guile-gcrypt/metadata.xml new file mode 100644 index 000000000000..2907abeb0c42 --- /dev/null +++ b/dev-scheme/guile-gcrypt/metadata.xml @@ -0,0 +1,7 @@ + + + + + slyfox@gentoo.org + + diff --git a/dev-util/Manifest.gz b/dev-util/Manifest.gz index 9d4beaae3954..0cd253f06181 100644 Binary files a/dev-util/Manifest.gz and b/dev-util/Manifest.gz differ diff --git a/dev-util/shellcheck/Manifest b/dev-util/shellcheck/Manifest index 6ca10ee3356a..9d8cdd12d8ab 100644 --- a/dev-util/shellcheck/Manifest +++ b/dev-util/shellcheck/Manifest @@ -1,3 +1,4 @@ DIST ShellCheck-0.4.6.tar.gz 116618 BLAKE2B 67cf8e882e95eaedfbb46e01656889e200b311e3701301da1df02add4c6f7446d275a1b132d6d7e1da0e4eb49205138fffce8d8cb0a2b91045f72cc7f006ca99 SHA512 b053a7f581d73f1e5be51046f2fd77f6e7452acecf841321ef363156a5f72d98c13a723885d1888ab366550625e05396ca207925539fec1d70a00212af920ca5 DIST ShellCheck-0.4.7.tar.gz 126593 BLAKE2B cbb925c4760a3744381dbee293d5e28ce429a9c4244eb1fa5af71ad8ba2cbdd86a721bbc2b9202c7aecf4ad70025bacb13e696c4731cbfaba22511d773013d6b SHA512 bb9c79911701b3857d29fd63588115888f4d2b1d224066bb944ca00d29d973195ad1f4b1df8e2746fd0666f7438f46abc384f7f915c152f46fcd332163736792 DIST ShellCheck-0.5.0.tar.gz 133265 BLAKE2B 703e3d994e6302d7bc6124ae064cbc5893c5119918a9a9b6cbda2c0415600b95545146061230b2e6ab07b6b2383a86b9bd3f153643c30c3f765a3424a1cd4bc0 SHA512 3b4b097f507c8910f5da1a739138511b9c30c156667c0887447043a7d0c3c371768953d7039803356f28e863266d3a34b5b1689889f3e524a3768e4d3223ce7c +DIST ShellCheck-0.6.0.tar.gz 140211 BLAKE2B 5a103bd74e76905b64a882542d1f2bf5cac6b2ec94e9b0f55fdd052f5fd1fe17f9efc02ef9182e7e5965765b428b974bf94fa50d701396fef77bcbfe6185402e SHA512 51c2cc9cfd2f8a145095873f9b19d4fdd67a21eedab4ac2dbe5f43789fd0937a44bdc8480b2d0cceb5bc3802a8243dd3b701a07f1f6b5460291272ee453c7c5f diff --git a/dev-util/shellcheck/shellcheck-0.6.0.ebuild b/dev-util/shellcheck/shellcheck-0.6.0.ebuild new file mode 100644 index 000000000000..89bd3f1ba365 --- /dev/null +++ b/dev-util/shellcheck/shellcheck-0.6.0.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +# ebuild generated by hackport 0.5.5 + +CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite" +inherit haskell-cabal + +MY_PN="ShellCheck" +MY_P="${MY_PN}-${PV}" + +DESCRIPTION="Shell script analysis tool" +HOMEPAGE="https://www.shellcheck.net/" +SRC_URI="mirror://hackage/packages/archive/${MY_PN}/${PV}/${MY_P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0/${PV}" +KEYWORDS="~amd64 ~x86" +IUSE="" + +RDEPEND="dev-haskell/aeson:=[profile?] + >=dev-haskell/mtl-2.2.1:=[profile?] + >=dev-haskell/parsec-3.0:=[profile?] + >=dev-haskell/quickcheck-2.7.4:2=[template_haskell,profile?] + dev-haskell/regex-tdfa:=[profile?] + dev-haskell/semigroups:=[profile?] + >=dev-lang/ghc-7.8.2:= +" +DEPEND="${RDEPEND} + >=dev-haskell/cabal-1.18.1.3 "$@.tmp"; \ + mv "$@.tmp" "$@" + +@@ -201,7 +201,7 @@ nodist_upstartjob_DATA = etc/guix-daemon.conf etc/guix-publish.conf + etc/guix-%.conf: etc/guix-%.conf.in \ + $(top_builddir)/config.status + $(AM_V_GEN)$(MKDIR_P) "`dirname $@`"; \ +- $(SED) -e 's|@''localstatedir''@|$(localstatedir)|' < \ ++ $(SED) -e 's|@''bindir''@|$(bindir)|' < \ + "$<" > "$@.tmp"; \ + mv "$@.tmp" "$@" + diff --git a/sys-apps/guix/guix-0.13.0-r1.ebuild b/sys-apps/guix/guix-0.13.0-r1.ebuild deleted file mode 100644 index 1c93756b4d8d..000000000000 --- a/sys-apps/guix/guix-0.13.0-r1.ebuild +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -inherit autotools readme.gentoo-r1 user - -DESCRIPTION="GNU package manager (nix sibling)" -HOMEPAGE="https://www.gnu.org/software/guix/" - -# taken from gnu/local.mk and build-aux/download.scm -BOOT_GUILE=( - "aarch64-linux 20170217 guile-2.0.14.tar.xz" - "armhf-linux 20150101 guile-2.0.11.tar.xz" - "i686-linux 20131110 guile-2.0.9.tar.xz" - "mips64el-linux 20131110 guile-2.0.9.tar.xz" - "x86_64-linux 20131110 guile-2.0.9.tar.xz" -) - -binary_src_uris() { - local system_date_guilep uri - for system_date_guilep in "${BOOT_GUILE[@]}"; do - # $1 $2 $3 - # "armhf-linux 20150101 guile-2.0.11.tar.xz" - set -- ${system_date_guilep} - uri="mirror://gnu-alpha/${PN}/bootstrap/$1/$2/$3" - # ${uri} -> guix-bootstrap-armhf-linux-20150101-guile-2.0.11.tar.xz.bootstrap - echo "${uri} -> guix-bootstrap-$1-$2-$3.bootstrap" - done -} - -# copy bootstrap binaries from DISTDIR to ${S} -copy_boot_guile_binaries() { - local system_date_guilep - for system_date_guilep in "${BOOT_GUILE[@]}"; do - # $1 $2 $3 - # "armhf-linux 20150101 guile-2.0.11.tar.xz" - set -- ${system_date_guilep} - cp "${DISTDIR}"/guix-bootstrap-$1-$2-$3.bootstrap gnu/packages/bootstrap/$1/$3 || die - done -} - -SRC_URI="mirror://gnu-alpha/${PN}/${P}.tar.gz - $(binary_src_uris)" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="" - -RESTRICT=test # complains about size of config.log and refuses to start tests - -RDEPEND=" - dev-libs/libgcrypt:0= - >=dev-scheme/guile-2:=[regex,networking,threads] - dev-scheme/guile-json - net-libs/gnutls[guile] - sys-libs/zlib - app-arch/bzip2 - dev-db/sqlite -" - -DEPEND="${RDEPEND} -" - -PATCHES=("${FILESDIR}"/${PN}-0.13.0-default-daemon.patch) - -QA_PREBUILT="usr/share/guile/site/2.0/gnu/packages/bootstrap/*" - -DISABLE_AUTOFORMATTING=yes -DOC_CONTENTS="Quick start user guide on Gentoo: - -[as root] allow binary substitution to be downloaded (optional) - # guix archive --authorize < /usr/share/guix/hydra.gnu.org.pub -[as root] enable guix-daemon service: - [systemd] # systemctl enable guix-daemon - [openrc] # rc-update add guix-daemon -[as a user] ln -sf /var/guix/profiles/per-user/\$USER/guix-profile \$HOME/.guix-profile -[as a user] install guix packages: - \$ guix package -i hello -[as a user] configure environment: - Somewhere in .bash_profile you might want to set - export GUIX_LOCPATH=\$HOME/.guix-profile/lib/locale - -Next steps: - guix package manager user manual: https://www.gnu.org/software/guix/manual/guix.html -" - -pkg_setup() { - enewgroup guixbuild - for i in {1..10}; do - # we list 'guixbuild' twice to - # both assign a primary group for user - # and add a user to /etc/group - enewuser guixbuilder${i} -1 -1 /var/empty guixbuild,guixbuild - done -} - -src_prepare() { - copy_boot_guile_binaries - - default - # build system is very eager to run automake itself: bug #625166 - eautomake -} - -src_configure() { - # to be compatible with guix from /gnu/store - econf \ - --localstatedir="${EPREFIX}"/var -} - -src_compile() { - # guile occasionally fails with 'bad address' - emake -j1 -} - -src_install() { - # TODO: emacs highlighter - default - - readme.gentoo_create_doc - - keepdir /etc/guix - # TODO: will need a tweak for prefix - keepdir /gnu/store - fowners root:guixbuild /gnu/store - fperms 1775 /gnu/store - - keepdir /var/guix/profiles/per-user - fperms 1777 /var/guix/profiles/per-user - - newinitd "${FILESDIR}"/guix-daemon.initd guix-daemon -} - -pkg_postinst() { - readme.gentoo_print_elog -} diff --git a/sys-apps/guix/guix-0.14.0.ebuild b/sys-apps/guix/guix-0.16.0.ebuild similarity index 93% rename from sys-apps/guix/guix-0.14.0.ebuild rename to sys-apps/guix/guix-0.16.0.ebuild index 31fd035cf39e..8ebbad008466 100644 --- a/sys-apps/guix/guix-0.14.0.ebuild +++ b/sys-apps/guix/guix-0.16.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -8,7 +8,7 @@ inherit autotools readme.gentoo-r1 user DESCRIPTION="GNU package manager (nix sibling)" HOMEPAGE="https://www.gnu.org/software/guix/" -# taken from gnu/local.mk and build-aux/download.scm +# taken from gnu/local.mk and gnu/packages/bootstrap.scm BOOT_GUILE=( "aarch64-linux 20170217 guile-2.0.14.tar.xz" "armhf-linux 20150101 guile-2.0.11.tar.xz" @@ -54,8 +54,10 @@ RDEPEND=" dev-libs/libgcrypt:0= >=dev-scheme/guile-2:=[regex,networking,threads] dev-scheme/bytestructures + dev-scheme/guile-gcrypt dev-scheme/guile-git dev-scheme/guile-json + dev-scheme/guile-sqlite3 net-libs/gnutls[guile] sys-libs/zlib app-arch/bzip2 @@ -65,7 +67,7 @@ RDEPEND=" DEPEND="${RDEPEND} " -PATCHES=("${FILESDIR}"/${PN}-0.13.0-default-daemon.patch) +PATCHES=("${FILESDIR}"/${PN}-0.16.0-default-daemon.patch) QA_PREBUILT="usr/share/guile/site/*/gnu/packages/bootstrap/*" @@ -73,7 +75,7 @@ DISABLE_AUTOFORMATTING=yes DOC_CONTENTS="Quick start user guide on Gentoo: [as root] allow binary substitution to be downloaded (optional) - # guix archive --authorize < /usr/share/guix/hydra.gnu.org.pub + # guix archive --authorize < /usr/share/guix/ci.guix.info.pub [as root] enable guix-daemon service: [systemd] # systemctl enable guix-daemon [openrc] # rc-update add guix-daemon diff --git a/sys-apps/net-tools/net-tools-1.60_p20180626073013.ebuild b/sys-apps/net-tools/net-tools-1.60_p20180626073013.ebuild index 2df5f01f68fa..f161936398e6 100644 --- a/sys-apps/net-tools/net-tools-1.60_p20180626073013.ebuild +++ b/sys-apps/net-tools/net-tools-1.60_p20180626073013.ebuild @@ -10,7 +10,7 @@ if [[ ${PV} == "9999" ]] ; then inherit git-r3 else SRC_URI="mirror://gentoo/${P}.tar.xz" - KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh sparc ~x86 ~amd64-linux ~x86-linux" + KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh sparc x86 ~amd64-linux ~x86-linux" fi DESCRIPTION="Standard Linux networking tools" diff --git a/sys-apps/openrc/Manifest b/sys-apps/openrc/Manifest index 815a617b2793..8bb3fcb3b9ae 100644 --- a/sys-apps/openrc/Manifest +++ b/sys-apps/openrc/Manifest @@ -6,4 +6,5 @@ DIST openrc-0.38.2.tar.gz 240924 BLAKE2B a50e567aa3ac1edfd4e7cbdfbf3d7ce6ac39b7d DIST openrc-0.38.3.tar.gz 238031 BLAKE2B 87d1546e21d581feda4064cd64bf43f762203becdcc4b002bf868f17403bd42770cb1106a8bc383c8d69e19ad66ad2bedaa7090c95206597e8a9b6e2ba481dcc SHA512 6bb42ccdab5fb24b11f5042bf19850f440d3494b6bd1d7b8db31b592f051fcd26feac1c8d9ef515238c53c6f5bf98a8c367a48471c178ae829e05c56bd24cfde DIST openrc-0.39.2.tar.gz 242417 BLAKE2B 076834890b084b1dcf33f78e190f8f7163161d99d185d5cb7043dbc33c6ff0861bc4965ccbf63e2f1b173185d4d017d9269066d35cd75cb7c5a090d39be9b833 SHA512 ea1f23bb479085eea406bebe304a531d061e47955f7c98da21aa4f01694b5c6f23cb1bb9764aa7b27fd4c8c5a7602eb2a16baef63eb96660fab58c063ff88129 DIST openrc-0.40.1.tar.gz 244639 BLAKE2B 889e357c1530638da6d1da3597d90a4438a1c48e753fabf2d91306262e684a66ba7a069a26060508f78cb486b76b0dc0c056c73136babe559932afead372ff54 SHA512 add676125187a1c47049cb281c98ee9512093250f8b65b2cf5c706b8a73c23f3ba98c96adda456c3fe930ff679669901b5e1f04ea9dcdcaf3fef13afa2412cdc +DIST openrc-0.40.2.tar.gz 245006 BLAKE2B 9e0aab4d42121296cb9bcc47e9222e0e99df80ab686636a8060c6271d30ff7c0d999f851d0e24dfab9e7a6532b56a6a1974cfa4514e88e6b82ec5fbbc192d76c SHA512 746e238f792113397486b9abb6e41c8179e51fe823c82c8e8942d71329a806b9c398628f835e2626ed0e8735c05b0dcd1b82bf9b5111f420105eeae6b0b0e3f2 DIST openrc-0.40.tar.gz 244521 BLAKE2B c9c96ccd98430c8e055702ce0cb68f95a4e73658aebfb09871dda46ce0f2a62b390ea5a3440b793ae71aea071534d4bcf75a2f9b4b71fa992308eacd71771b10 SHA512 95aea0ce1d4caeaecdd4164bb6c37b9f7564573742a06e70e34bf457c00193b04743b0dd9369af23f525afeb777f06612c52720a0962807931213bee51893432 diff --git a/sys-apps/openrc/openrc-0.40.2.ebuild b/sys-apps/openrc/openrc-0.40.2.ebuild new file mode 100644 index 000000000000..03c55deff415 --- /dev/null +++ b/sys-apps/openrc/openrc-0.40.2.ebuild @@ -0,0 +1,330 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit flag-o-matic pam toolchain-funcs + +DESCRIPTION="OpenRC manages the services, startup and shutdown of a host" +HOMEPAGE="https://github.com/openrc/openrc/" + +if [[ ${PV} == "9999" ]]; then + EGIT_REPO_URI="https://github.com/OpenRC/${PN}.git" + inherit git-r3 +else + SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd" +fi + +LICENSE="BSD-2" +SLOT="0" +IUSE="audit debug ncurses pam newnet prefix +netifrc selinux static-libs + unicode kernel_linux kernel_FreeBSD" + +COMMON_DEPEND="kernel_FreeBSD? ( || ( >=sys-freebsd/freebsd-ubin-9.0_rc sys-process/fuser-bsd ) ) + ncurses? ( sys-libs/ncurses:0= ) + pam? ( + sys-auth/pambase + virtual/pam + ) + audit? ( sys-process/audit ) + kernel_linux? ( + sys-process/psmisc + !=sys-libs/libselinux-2.6 + ) + !