* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2016-11-08 17:09 Andreas Hüttel
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Hüttel @ 2016-11-08 17:09 UTC (permalink / raw
To: gentoo-commits
commit: 9e4b712fcdec31668882dd52867d5cb50158098e
Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 8 17:02:35 2016 +0000
Commit: Andreas Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Tue Nov 8 17:03:28 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9e4b712f
dev-libs/icu: Revbump for bug 599142
Package-Manager: portage-2.3.2
dev-libs/icu/files/icu-58.1-iterator.patch | 127 ++++++++++++++++++++++++++
dev-libs/icu/icu-58.1-r1.ebuild | 142 +++++++++++++++++++++++++++++
2 files changed, 269 insertions(+)
diff --git a/dev-libs/icu/files/icu-58.1-iterator.patch b/dev-libs/icu/files/icu-58.1-iterator.patch
new file mode 100644
index 00000000..6f52375
--- /dev/null
+++ b/dev-libs/icu/files/icu-58.1-iterator.patch
@@ -0,0 +1,127 @@
+source: http://bugs.icu-project.org/trac/changeset/39484/
+
+
+Index: icu/common/ulist.c
+===================================================================
+--- icu/common/ulist.c (revision 39483)
++++ icu/common/ulist.c (revision 39484)
+@@ -30,5 +30,4 @@
+
+ int32_t size;
+- int32_t currentIndex;
+ };
+
+@@ -52,5 +51,4 @@
+ newList->tail = NULL;
+ newList->size = 0;
+- newList->currentIndex = -1;
+
+ return newList;
+@@ -81,6 +79,7 @@
+ p->next->previous = p->previous;
+ }
+- list->curr = NULL;
+- list->currentIndex = 0;
++ if (p == list->curr) {
++ list->curr = p->next;
++ }
+ --list->size;
+ if (p->forceDelete) {
+@@ -151,5 +150,4 @@
+ list->head->previous = newItem;
+ list->head = newItem;
+- list->currentIndex++;
+ }
+
+@@ -194,5 +192,4 @@
+ curr = list->curr;
+ list->curr = curr->next;
+- list->currentIndex++;
+
+ return curr->data;
+@@ -210,5 +207,4 @@
+ if (list != NULL) {
+ list->curr = list->head;
+- list->currentIndex = 0;
+ }
+ }
+@@ -273,3 +269,2 @@
+ return (UList *)(en->context);
+ }
+-
+Index: icu/i18n/ucol_res.cpp
+===================================================================
+--- icu/i18n/ucol_res.cpp (revision 39483)
++++ icu/i18n/ucol_res.cpp (revision 39484)
+@@ -681,4 +681,5 @@
+ }
+ memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
++ ulist_resetList(sink.values); // Initialize the iterator.
+ en->context = sink.values;
+ sink.values = NULL; // Avoid deletion in the sink destructor.
+Index: icu/test/intltest/apicoll.cpp
+===================================================================
+--- icu/test/intltest/apicoll.cpp (revision 39483)
++++ icu/test/intltest/apicoll.cpp (revision 39484)
+@@ -82,14 +82,7 @@
+ col = Collator::createInstance(Locale::getEnglish(), success);
+ if (U_FAILURE(success)){
+- errcheckln(success, "Default Collator creation failed. - %s", u_errorName(success));
+- return;
+- }
+-
+- StringEnumeration* kwEnum = col->getKeywordValuesForLocale("", Locale::getEnglish(),true,success);
+- if (U_FAILURE(success)){
+- errcheckln(success, "Get Keyword Values for Locale failed. - %s", u_errorName(success));
+- return;
+- }
+- delete kwEnum;
++ errcheckln(success, "English Collator creation failed. - %s", u_errorName(success));
++ return;
++ }
+
+ col->getVersion(versionArray);
+@@ -230,4 +223,27 @@
+ delete aFrCol;
+ delete junk;
++}
++
++void CollationAPITest::TestKeywordValues() {
++ IcuTestErrorCode errorCode(*this, "TestKeywordValues");
++ LocalPointer<Collator> col(Collator::createInstance(Locale::getEnglish(), errorCode));
++ if (errorCode.logIfFailureAndReset("English Collator creation failed")) {
++ return;
++ }
++
++ LocalPointer<StringEnumeration> kwEnum(
++ col->getKeywordValuesForLocale("collation", Locale::getEnglish(), TRUE, errorCode));
++ if (errorCode.logIfFailureAndReset("Get Keyword Values for English Collator failed")) {
++ return;
++ }
++ assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0);
++ const char *kw;
++ UBool hasStandard = FALSE;
++ while ((kw = kwEnum->next(NULL, errorCode)) != NULL) {
++ if (strcmp(kw, "standard") == 0) {
++ hasStandard = TRUE;
++ }
++ }
++ assertTrue("expect at least the 'standard' collation tailoring for English", hasStandard);
+ }
+
+@@ -2467,4 +2483,5 @@
+ TESTCASE_AUTO_BEGIN;
+ TESTCASE_AUTO(TestProperty);
++ TESTCASE_AUTO(TestKeywordValues);
+ TESTCASE_AUTO(TestOperators);
+ TESTCASE_AUTO(TestDuplicate);
+Index: icu/test/intltest/apicoll.h
+===================================================================
+--- icu/test/intltest/apicoll.h (revision 39483)
++++ icu/test/intltest/apicoll.h (revision 39484)
+@@ -36,4 +36,5 @@
+ */
+ void TestProperty(/* char* par */);
++ void TestKeywordValues();
+
+ /**
diff --git a/dev-libs/icu/icu-58.1-r1.ebuild b/dev-libs/icu/icu-58.1-r1.ebuild
new file mode 100644
index 00000000..449b5d5
--- /dev/null
+++ b/dev-libs/icu/icu-58.1-r1.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/${PV}"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="debug doc examples static-libs"
+
+DEPEND="
+ virtual/pkgconfig
+ doc? (
+ app-doc/doxygen[dot]
+ )
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-58.1-iterator.patch"
+)
+
+src_prepare() {
+ # apply patches
+ default
+
+ local variable
+
+ # Disable renaming as it is stupid thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Use C++14
+ append-cxxflags -std=c++14
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ --disable-layoutex
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ )
+
+ multilib_is_native_abi && myeconfargs+=(
+ $(use_enable examples samples)
+ )
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ ECONF_SOURCE=${S} \
+ econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ docinto html
+ dodoc ../readme.html
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2017-01-15 21:28 Andreas Hüttel
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Hüttel @ 2017-01-15 21:28 UTC (permalink / raw
To: gentoo-commits
commit: e9cb3305a8bba0bfaeedc6daca48a9b6c43ee3c4
Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 15 21:27:33 2017 +0000
Commit: Andreas Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sun Jan 15 21:27:33 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e9cb3305
Revert "dev-libs/icu: Remove old" - cleanup depends on bug 603792
This reverts commit f7f37c1d8c48f31bcdb24d949db3b2fe327050a2.
dev-libs/icu/Manifest | 2 +
dev-libs/icu/files/icu-57.1-remove-bashisms.patch | 230 ++++++++++++++++++++++
dev-libs/icu/files/icu-remove-bashisms.patch | 230 ++++++++++++++++++++++
dev-libs/icu/icu-55.1.ebuild | 134 +++++++++++++
dev-libs/icu/icu-57.1.ebuild | 140 +++++++++++++
5 files changed, 736 insertions(+)
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index 9b35855..de5fa87 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1,2 +1,4 @@
+DIST icu4c-55_1-src.tgz 25600847 SHA256 e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b SHA512 21a3eb2c3678cd27b659eed073f8f1bd99c9751291d077820e9a370fd90b7d9b3bf414cc03dec4acb7fa61087e02d04f9f40e91a32c5180c718e2102fbd0cd35 WHIRLPOOL 8c5221c82ee2c8a02beafd0fdf91e0038e49912cc8b05fb7437dd4d0a0204b97ea62c45c2dd9dde0f658620b772d706e795821865c567d2e1eb91f8b83a12c4a
+DIST icu4c-57_1-src.tgz 22360664 SHA256 ff8c67cb65949b1e7808f2359f2b80f722697048e90e7cfc382ec1fe229e9581 SHA512 a3c701e9c81622db545bcf93f315c7b13159750f43f009d0aec59ceae3a8e1ccb751826d4b8a7387aca47f38bff2a85816b1a123b07d2bf731558c7b66e47b8a WHIRLPOOL f9107e3019a0d9b4c40b83e6e7ea5277ab7d4317e349d6c5d6731f0b2355811b37a4c12aa8408a3bc0195ffeebdc952b7df709d2fb191ae1044fffadbafc897c
DIST icu4c-58_1-src.tgz 23366443 SHA256 0eb46ba3746a9c2092c8ad347a29b1a1b4941144772d13a88667a7b11ea30309 SHA512 59b2a76834192a35125fda326587e613ef4486152cf0278c6f22568d4ae02c4b2d897efcea2654ef2b11bd1c3154aecd38cb68a70f69430736f343689f94c155 WHIRLPOOL faf2624a83f0d6f874166b328522dc9c89088db2690433ab05e96371722b635b81fd5210c7e87fe8e5df6681e881cf10204832925b448552affe8c2f6c851e37
DIST icu4c-58_2-src.tgz 23369902 SHA256 2b0a4410153a9b20de0e20c7d8b66049a72aef244b53683d0d7521371683da0c SHA512 5c21af748f48b392e6c0412bd0aee92162ea931820dcbfab4ec6e0299868504b303d88f7586cc95de55c777ac0dca3a29d6c8ca0892c646ebc864c8a5b5a162a WHIRLPOOL 25829f8ee870b703fd604ae5b9b584390a142f5011e2a5db18332453e2f1640d81270086f243318eeb93f187b04ea23dab14901ab81c8d924c8d47b1f77aee5a
diff --git a/dev-libs/icu/files/icu-57.1-remove-bashisms.patch b/dev-libs/icu/files/icu-57.1-remove-bashisms.patch
new file mode 100644
index 00000000..09c2dd5
--- /dev/null
+++ b/dev-libs/icu/files/icu-57.1-remove-bashisms.patch
@@ -0,0 +1,230 @@
+Index: config/Makefile.inc.in
+===================================================================
+--- a/config/Makefile.inc.in (revision 36912)
++++ b/config/Makefile.inc.in (working copy)
+@@ -125,12 +125,6 @@
+ # with usually. Many applications will want to add $(ICULIBS_I18N) as well.
+ ICULIBS = $(ICULIBS_BASE) $(ICULIBS_I18N) $(ICULIBS_COMMON) $(ICULIBS_DATA)
+
+-# Proper echo newline handling is needed in icu-config
+-ECHO_N=@ICU_ECHO_N@
+-ECHO_C=@ICU_ECHO_C@
+-# Not currently being used but good to have for proper tab handling
+-ECHO_T=@ICU_ECHO_T@
+-
+ ##################################################################
+ ##################################################################
+ #
+Index: config/icu-config-bottom
+===================================================================
+--- a/config/icu-config-bottom (revision 36912)
++++ b/config/icu-config-bottom (working copy)
+@@ -217,73 +217,73 @@
+ ;;
+
+ --cflags)
+- echo $ECHO_N "${CFLAGS} ${ECHO_C}"
++ printf "%s" "${CFLAGS} "
+ ;;
+
+ --cc)
+- echo $ECHO_N "${CC} ${ECHO_C}"
++ printf "%s" "${CC} "
+ ;;
+
+ --cxx)
+- echo $ECHO_N "${CXX} ${ECHO_C}"
++ printf "%s" "${CXX} "
+ ;;
+
+ --cxxflags)
+- echo $ECHO_N "${CXXFLAGS} ${ECHO_C}"
++ printf "%s" "${CXXFLAGS} "
+ ;;
+
+ --cppflags)
+ # Don't echo the -I. - it's unneeded.
+- echo $ECHO_N "${CPPFLAGS} ${ECHO_C}" | sed -e 's/-I. //'
++ printf "%s" "${CPPFLAGS} " | sed -e 's/-I. //'
+ ;;
+
+ --cppflags-searchpath)
+- echo $ECHO_N "-I${prefix}/include ${ECHO_C}"
++ printf "%s" "-I${prefix}/include "
+ ;;
+
+ --cppflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCPPFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCPPFLAGS} "
+ ;;
+
+ --cxxflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCXXFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCXXFLAGS} "
+ ;;
+
+ --cflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCFLAGS} "
+ ;;
+
+ --ldflags-system)
+- echo $ECHO_N "${LIBS} ${ECHO_C}"
++ printf "%s" "${LIBS} "
+ ;;
+
+ --ldflags)
+- echo $ECHO_N "${LDFLAGS} ${ICULIBS} ${ECHO_C}"
++ printf "%s" "${LDFLAGS} ${ICULIBS} "
+ # $RPATH_LDFLAGS
+ ;;
+
+ --ldflags-libsonly)
+- echo $ECHO_N "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} ${ECHO_C}"
++ printf "%s" "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} "
+ ;;
+
+ --ldflags-icuio)
+- echo $ECHO_N " ${ICULIBS_ICUIO} ${ECHO_C}"
++ printf "%s" " ${ICULIBS_ICUIO} "
+ ;;
+
+ --ldflags-obsolete)
+- echo $ECHO_N "${ICULIBS_OBSOLETE} ${ECHO_C}"
++ printf "%s" "${ICULIBS_OBSOLETE} "
+ ;;
+
+ --ldflags-toolutil)
+- echo $ECHO_N " ${ICULIBS_TOOLUTIL} ${ECHO_C}"
++ printf "%s" " ${ICULIBS_TOOLUTIL} "
+ ;;
+
+ --ldflags-layout)
+- echo $ECHO_N "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} ${ECHO_C}"
++ printf "%s" "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} "
+ ;;
+
+ --ldflags-searchpath)
+- echo $ECHO_N "-L${libdir} ${ECHO_C}"
++ printf "%s" "-L${libdir} "
+ ;;
+
+ --detect-prefix)
+@@ -319,47 +319,47 @@
+ ;;
+
+ --shared-datadir)
+- echo $ECHO_N "${datadir} ${ECHO_C}"
++ printf "%s" "${datadir} "
+ ;;
+
+ --incfile)
+- echo $ECHO_N "${pkglibdir}/Makefile.inc ${ECHO_C}"
++ printf "%s" "${pkglibdir}/Makefile.inc "
+ ;;
+
+ --incpkgdatafile)
+- echo $ECHO_N "${pkglibdir}/pkgdata.inc ${ECHO_C}"
++ printf "%s" "${pkglibdir}/pkgdata.inc "
+ ;;
+
+ --icudata)
+- echo $ECHO_N "${ICUDATA_NAME} ${ECHO_C}"
++ printf "%s" "${ICUDATA_NAME} "
+ ;;
+
+ --icudata-mode)
+- echo $ECHO_N "${PKGDATA_MODE} ${ECHO_C}"
++ printf "%s" "${PKGDATA_MODE} "
+ ;;
+
+ --icudata-install-dir)
+- echo $ECHO_N "${ICUPKGDATA_DIR} ${ECHO_C}"
++ printf "%s" "${ICUPKGDATA_DIR} "
+ ;;
+
+ --icudatadir)
+- echo $ECHO_N "${ICUDATA_DIR} ${ECHO_C}"
++ printf "%s" "${ICUDATA_DIR} "
+ ;;
+
+ --shlib-c)
+- echo $ECHO_N "${SHLIB_c} ${ECHO_C}"
++ printf "%s" "${SHLIB_c} "
+ ;;
+
+ --shlib-cc)
+- echo $ECHO_N "${SHLIB_cc} ${ECHO_C}"
++ printf "%s" "${SHLIB_cc} "
+ ;;
+
+ --version)
+- echo $ECHO_N $VERSION
++ printf "%s" "$VERSION"
+ ;;
+
+ --unicode-version)
+- echo $ECHO_N $UNICODE_VERSION
++ printf "%s" "$UNICODE_VERSION"
+ ;;
+
+ --host)
+Index: configure.ac
+===================================================================
+--- a/configure.ac (revision 36912)
++++ b/configure.ac (working copy)
+@@ -19,24 +19,6 @@
+ PACKAGE="icu"
+ AC_SUBST(PACKAGE)
+
+-# Use custom echo test for newline option
+-# Current autoconf (2.65) gives incorrect echo newline option
+-# for icu-config
+-# This may be removed later - mow (June 17, 2010)
+-ICU_ECHO_C= ICU_ECHO_N= ICU_ECHO_T=
+-case `/bin/sh -c "echo -n x"` in
+--n*)
+- case `/bin/sh -c "echo 'x\c'"` in
+- *c*) ICU_ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ICU_ECHO_C='\c';;
+- esac;;
+-*)
+- ICU_ECHO_N='-n';;
+-esac
+-AC_SUBST(ICU_ECHO_N)
+-AC_SUBST(ICU_ECHO_C)
+-AC_SUBST(ICU_ECHO_T)
+-
+ AC_MSG_CHECKING(for ICU version numbers)
+
+ # Get the ICU version from uversion.h or other headers
+Index: icudefs.mk.in
+===================================================================
+--- a/icudefs.mk.in (revision 36912)
++++ b/icudefs.mk.in (working copy)
+@@ -155,11 +155,6 @@
+ ENABLE_STATIC = @ENABLE_STATIC@
+ ENABLE_SHARED = @ENABLE_SHARED@
+
+-# Echo w/o newline
+-
+-#ECHO_N = @ICU_ECHO_N@
+-#ECHO_C = @ICU_ECHO_C@
+-
+ # Commands to compile
+ COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c
+ COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c
+Index: test/hdrtst/Makefile.in
+===================================================================
+--- a/test/hdrtst/Makefile.in (revision 36912)
++++ b/test/hdrtst/Makefile.in (working copy)
+@@ -33,9 +33,6 @@
+ include $(shell icu-config --incfile)
+ DIRS=$(prefix)/include/unicode
+ LDIRS=$(prefix)/include/layout
+-ECHO_T=@ECHO_T@
+-ECHO_C=@ECHO_C@
+-ECHO_N=@ECHO_N@
+
+ all:
+ @echo Please read this Makefile for more information.
diff --git a/dev-libs/icu/files/icu-remove-bashisms.patch b/dev-libs/icu/files/icu-remove-bashisms.patch
new file mode 100644
index 00000000..980d84b
--- /dev/null
+++ b/dev-libs/icu/files/icu-remove-bashisms.patch
@@ -0,0 +1,230 @@
+Index: config/Makefile.inc.in
+===================================================================
+--- config/Makefile.inc.in (revision 36912)
++++ config/Makefile.inc.in (working copy)
+@@ -125,12 +125,6 @@
+ # with usually. Many applications will want to add $(ICULIBS_I18N) as well.
+ ICULIBS = $(ICULIBS_BASE) $(ICULIBS_I18N) $(ICULIBS_COMMON) $(ICULIBS_DATA)
+
+-# Proper echo newline handling is needed in icu-config
+-ECHO_N=@ICU_ECHO_N@
+-ECHO_C=@ICU_ECHO_C@
+-# Not currently being used but good to have for proper tab handling
+-ECHO_T=@ICU_ECHO_T@
+-
+ ##################################################################
+ ##################################################################
+ #
+Index: config/icu-config-bottom
+===================================================================
+--- config/icu-config-bottom (revision 36912)
++++ config/icu-config-bottom (working copy)
+@@ -217,73 +217,73 @@
+ ;;
+
+ --cflags)
+- echo $ECHO_N "${CFLAGS} ${ECHO_C}"
++ printf "%s" "${CFLAGS} "
+ ;;
+
+ --cc)
+- echo $ECHO_N "${CC} ${ECHO_C}"
++ printf "%s" "${CC} "
+ ;;
+
+ --cxx)
+- echo $ECHO_N "${CXX} ${ECHO_C}"
++ printf "%s" "${CXX} "
+ ;;
+
+ --cxxflags)
+- echo $ECHO_N "${CXXFLAGS} ${ECHO_C}"
++ printf "%s" "${CXXFLAGS} "
+ ;;
+
+ --cppflags)
+ # Don't echo the -I. - it's unneeded.
+- echo $ECHO_N "${CPPFLAGS} ${ECHO_C}" | sed -e 's/-I. //'
++ printf "%s" "${CPPFLAGS} " | sed -e 's/-I. //'
+ ;;
+
+ --cppflags-searchpath)
+- echo $ECHO_N "-I${prefix}/include ${ECHO_C}"
++ printf "%s" "-I${prefix}/include "
+ ;;
+
+ --cppflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCPPFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCPPFLAGS} "
+ ;;
+
+ --cxxflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCXXFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCXXFLAGS} "
+ ;;
+
+ --cflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCFLAGS} "
+ ;;
+
+ --ldflags-system)
+- echo $ECHO_N "${LIBS} ${ECHO_C}"
++ printf "%s" "${LIBS} "
+ ;;
+
+ --ldflags)
+- echo $ECHO_N "${LDFLAGS} ${ICULIBS} ${ECHO_C}"
++ printf "%s" "${LDFLAGS} ${ICULIBS} "
+ # $RPATH_LDFLAGS
+ ;;
+
+ --ldflags-libsonly)
+- echo $ECHO_N "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} ${ECHO_C}"
++ printf "%s" "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} "
+ ;;
+
+ --ldflags-icuio)
+- echo $ECHO_N " ${ICULIBS_ICUIO} ${ECHO_C}"
++ printf "%s" " ${ICULIBS_ICUIO} "
+ ;;
+
+ --ldflags-obsolete)
+- echo $ECHO_N "${ICULIBS_OBSOLETE} ${ECHO_C}"
++ printf "%s" "${ICULIBS_OBSOLETE} "
+ ;;
+
+ --ldflags-toolutil)
+- echo $ECHO_N " ${ICULIBS_TOOLUTIL} ${ECHO_C}"
++ printf "%s" " ${ICULIBS_TOOLUTIL} "
+ ;;
+
+ --ldflags-layout)
+- echo $ECHO_N "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} ${ECHO_C}"
++ printf "%s" "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} "
+ ;;
+
+ --ldflags-searchpath)
+- echo $ECHO_N "-L${libdir} ${ECHO_C}"
++ printf "%s" "-L${libdir} "
+ ;;
+
+ --detect-prefix)
+@@ -319,47 +319,47 @@
+ ;;
+
+ --shared-datadir)
+- echo $ECHO_N "${datadir} ${ECHO_C}"
++ printf "%s" "${datadir} "
+ ;;
+
+ --incfile)
+- echo $ECHO_N "${pkglibdir}/Makefile.inc ${ECHO_C}"
++ printf "%s" "${pkglibdir}/Makefile.inc "
+ ;;
+
+ --incpkgdatafile)
+- echo $ECHO_N "${pkglibdir}/pkgdata.inc ${ECHO_C}"
++ printf "%s" "${pkglibdir}/pkgdata.inc "
+ ;;
+
+ --icudata)
+- echo $ECHO_N "${ICUDATA_NAME} ${ECHO_C}"
++ printf "%s" "${ICUDATA_NAME} "
+ ;;
+
+ --icudata-mode)
+- echo $ECHO_N "${PKGDATA_MODE} ${ECHO_C}"
++ printf "%s" "${PKGDATA_MODE} "
+ ;;
+
+ --icudata-install-dir)
+- echo $ECHO_N "${ICUPKGDATA_DIR} ${ECHO_C}"
++ printf "%s" "${ICUPKGDATA_DIR} "
+ ;;
+
+ --icudatadir)
+- echo $ECHO_N "${ICUDATA_DIR} ${ECHO_C}"
++ printf "%s" "${ICUDATA_DIR} "
+ ;;
+
+ --shlib-c)
+- echo $ECHO_N "${SHLIB_c} ${ECHO_C}"
++ printf "%s" "${SHLIB_c} "
+ ;;
+
+ --shlib-cc)
+- echo $ECHO_N "${SHLIB_cc} ${ECHO_C}"
++ printf "%s" "${SHLIB_cc} "
+ ;;
+
+ --version)
+- echo $ECHO_N $VERSION
++ printf "%s" "$VERSION"
+ ;;
+
+ --unicode-version)
+- echo $ECHO_N $UNICODE_VERSION
++ printf "%s" "$UNICODE_VERSION"
+ ;;
+
+ --host)
+Index: configure.ac
+===================================================================
+--- configure.ac (revision 36912)
++++ configure.ac (working copy)
+@@ -19,24 +19,6 @@
+ PACKAGE="icu"
+ AC_SUBST(PACKAGE)
+
+-# Use custom echo test for newline option
+-# Current autoconf (2.65) gives incorrect echo newline option
+-# for icu-config
+-# This may be removed later - mow (June 17, 2010)
+-ICU_ECHO_C= ICU_ECHO_N= ICU_ECHO_T=
+-case `/bin/sh -c "echo -n x"` in
+--n*)
+- case `/bin/sh -c "echo 'x\c'"` in
+- *c*) ICU_ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ICU_ECHO_C='\c';;
+- esac;;
+-*)
+- ICU_ECHO_N='-n';;
+-esac
+-AC_SUBST(ICU_ECHO_N)
+-AC_SUBST(ICU_ECHO_C)
+-AC_SUBST(ICU_ECHO_T)
+-
+ AC_MSG_CHECKING(for ICU version numbers)
+
+ # Get the ICU version from uversion.h or other headers
+Index: icudefs.mk.in
+===================================================================
+--- icudefs.mk.in (revision 36912)
++++ icudefs.mk.in (working copy)
+@@ -155,11 +155,6 @@
+ ENABLE_STATIC = @ENABLE_STATIC@
+ ENABLE_SHARED = @ENABLE_SHARED@
+
+-# Echo w/o newline
+-
+-#ECHO_N = @ICU_ECHO_N@
+-#ECHO_C = @ICU_ECHO_C@
+-
+ # Commands to compile
+ COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c
+ COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c
+Index: test/hdrtst/Makefile.in
+===================================================================
+--- test/hdrtst/Makefile.in (revision 36912)
++++ test/hdrtst/Makefile.in (working copy)
+@@ -33,9 +33,6 @@
+ include $(shell icu-config --incfile)
+ DIRS=$(prefix)/include/unicode
+ LDIRS=$(prefix)/include/layout
+-ECHO_T=@ECHO_T@
+-ECHO_C=@ECHO_C@
+-ECHO_N=@ECHO_N@
+
+ all:
+ @echo Please read this Makefile for more information.
diff --git a/dev-libs/icu/icu-55.1.ebuild b/dev-libs/icu/icu-55.1.ebuild
new file mode 100644
index 00000000..896fda0
--- /dev/null
+++ b/dev-libs/icu/icu-55.1.ebuild
@@ -0,0 +1,134 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/55"
+
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="debug doc examples static-libs"
+
+DEPEND="
+ virtual/pkgconfig
+ doc? (
+ app-doc/doxygen[dot]
+ )
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+src_prepare() {
+ local variable
+
+ epatch "${FILESDIR}/${PN}-remove-bashisms.patch"
+ epatch_user
+
+ # Disable renaming as it is stupind thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Do _not_ use C++11 yet, make sure to force GNU C++ 98 standard.
+ append-cxxflags -std=gnu++98
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ )
+
+ multilib_is_native_abi && myeconfargs+=(
+ $(use_enable examples samples)
+ )
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ ECONF_SOURCE=${S} \
+ econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ dohtml -p api -r doc/html/
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ dohtml ../readme.html
+}
diff --git a/dev-libs/icu/icu-57.1.ebuild b/dev-libs/icu/icu-57.1.ebuild
new file mode 100644
index 00000000..3c3389d
--- /dev/null
+++ b/dev-libs/icu/icu-57.1.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/57"
+
+KEYWORDS="alpha amd64 arm ~arm64 hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="debug doc examples static-libs"
+
+DEPEND="
+ virtual/pkgconfig
+ doc? (
+ app-doc/doxygen[dot]
+ )
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-57.1-remove-bashisms.patch"
+)
+
+src_prepare() {
+ # apply patches
+ default
+
+ local variable
+
+ # Disable renaming as it is stupid thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Use C++11
+ append-cxxflags -std=c++11
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ )
+
+ multilib_is_native_abi && myeconfargs+=(
+ $(use_enable examples samples)
+ )
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ ECONF_SOURCE=${S} \
+ econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ docinto html
+ dodoc ../readme.html
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2017-02-18 16:49 Andreas Hüttel
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Hüttel @ 2017-02-18 16:49 UTC (permalink / raw
To: gentoo-commits
commit: 45db7886410fec89ee3135674910fc35697a4646
Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sat Feb 18 16:46:05 2017 +0000
Commit: Andreas Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sat Feb 18 16:47:57 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=45db7886
dev-libs/icu: Remove old
Package-Manager: Portage-2.3.3, Repoman-2.3.1
dev-libs/icu/Manifest | 2 -
dev-libs/icu/files/icu-57.1-remove-bashisms.patch | 230 ----------------------
dev-libs/icu/files/icu-remove-bashisms.patch | 230 ----------------------
dev-libs/icu/icu-55.1.ebuild | 134 -------------
dev-libs/icu/icu-57.1.ebuild | 140 -------------
5 files changed, 736 deletions(-)
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index de5fa87551..9b35855f18 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1,4 +1,2 @@
-DIST icu4c-55_1-src.tgz 25600847 SHA256 e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b SHA512 21a3eb2c3678cd27b659eed073f8f1bd99c9751291d077820e9a370fd90b7d9b3bf414cc03dec4acb7fa61087e02d04f9f40e91a32c5180c718e2102fbd0cd35 WHIRLPOOL 8c5221c82ee2c8a02beafd0fdf91e0038e49912cc8b05fb7437dd4d0a0204b97ea62c45c2dd9dde0f658620b772d706e795821865c567d2e1eb91f8b83a12c4a
-DIST icu4c-57_1-src.tgz 22360664 SHA256 ff8c67cb65949b1e7808f2359f2b80f722697048e90e7cfc382ec1fe229e9581 SHA512 a3c701e9c81622db545bcf93f315c7b13159750f43f009d0aec59ceae3a8e1ccb751826d4b8a7387aca47f38bff2a85816b1a123b07d2bf731558c7b66e47b8a WHIRLPOOL f9107e3019a0d9b4c40b83e6e7ea5277ab7d4317e349d6c5d6731f0b2355811b37a4c12aa8408a3bc0195ffeebdc952b7df709d2fb191ae1044fffadbafc897c
DIST icu4c-58_1-src.tgz 23366443 SHA256 0eb46ba3746a9c2092c8ad347a29b1a1b4941144772d13a88667a7b11ea30309 SHA512 59b2a76834192a35125fda326587e613ef4486152cf0278c6f22568d4ae02c4b2d897efcea2654ef2b11bd1c3154aecd38cb68a70f69430736f343689f94c155 WHIRLPOOL faf2624a83f0d6f874166b328522dc9c89088db2690433ab05e96371722b635b81fd5210c7e87fe8e5df6681e881cf10204832925b448552affe8c2f6c851e37
DIST icu4c-58_2-src.tgz 23369902 SHA256 2b0a4410153a9b20de0e20c7d8b66049a72aef244b53683d0d7521371683da0c SHA512 5c21af748f48b392e6c0412bd0aee92162ea931820dcbfab4ec6e0299868504b303d88f7586cc95de55c777ac0dca3a29d6c8ca0892c646ebc864c8a5b5a162a WHIRLPOOL 25829f8ee870b703fd604ae5b9b584390a142f5011e2a5db18332453e2f1640d81270086f243318eeb93f187b04ea23dab14901ab81c8d924c8d47b1f77aee5a
diff --git a/dev-libs/icu/files/icu-57.1-remove-bashisms.patch b/dev-libs/icu/files/icu-57.1-remove-bashisms.patch
deleted file mode 100644
index 09c2dd5e25..0000000000
--- a/dev-libs/icu/files/icu-57.1-remove-bashisms.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-Index: config/Makefile.inc.in
-===================================================================
---- a/config/Makefile.inc.in (revision 36912)
-+++ b/config/Makefile.inc.in (working copy)
-@@ -125,12 +125,6 @@
- # with usually. Many applications will want to add $(ICULIBS_I18N) as well.
- ICULIBS = $(ICULIBS_BASE) $(ICULIBS_I18N) $(ICULIBS_COMMON) $(ICULIBS_DATA)
-
--# Proper echo newline handling is needed in icu-config
--ECHO_N=@ICU_ECHO_N@
--ECHO_C=@ICU_ECHO_C@
--# Not currently being used but good to have for proper tab handling
--ECHO_T=@ICU_ECHO_T@
--
- ##################################################################
- ##################################################################
- #
-Index: config/icu-config-bottom
-===================================================================
---- a/config/icu-config-bottom (revision 36912)
-+++ b/config/icu-config-bottom (working copy)
-@@ -217,73 +217,73 @@
- ;;
-
- --cflags)
-- echo $ECHO_N "${CFLAGS} ${ECHO_C}"
-+ printf "%s" "${CFLAGS} "
- ;;
-
- --cc)
-- echo $ECHO_N "${CC} ${ECHO_C}"
-+ printf "%s" "${CC} "
- ;;
-
- --cxx)
-- echo $ECHO_N "${CXX} ${ECHO_C}"
-+ printf "%s" "${CXX} "
- ;;
-
- --cxxflags)
-- echo $ECHO_N "${CXXFLAGS} ${ECHO_C}"
-+ printf "%s" "${CXXFLAGS} "
- ;;
-
- --cppflags)
- # Don't echo the -I. - it's unneeded.
-- echo $ECHO_N "${CPPFLAGS} ${ECHO_C}" | sed -e 's/-I. //'
-+ printf "%s" "${CPPFLAGS} " | sed -e 's/-I. //'
- ;;
-
- --cppflags-searchpath)
-- echo $ECHO_N "-I${prefix}/include ${ECHO_C}"
-+ printf "%s" "-I${prefix}/include "
- ;;
-
- --cppflags-dynamic)
-- echo $ECHO_N "${SHAREDLIBCPPFLAGS} ${ECHO_C}"
-+ printf "%s" "${SHAREDLIBCPPFLAGS} "
- ;;
-
- --cxxflags-dynamic)
-- echo $ECHO_N "${SHAREDLIBCXXFLAGS} ${ECHO_C}"
-+ printf "%s" "${SHAREDLIBCXXFLAGS} "
- ;;
-
- --cflags-dynamic)
-- echo $ECHO_N "${SHAREDLIBCFLAGS} ${ECHO_C}"
-+ printf "%s" "${SHAREDLIBCFLAGS} "
- ;;
-
- --ldflags-system)
-- echo $ECHO_N "${LIBS} ${ECHO_C}"
-+ printf "%s" "${LIBS} "
- ;;
-
- --ldflags)
-- echo $ECHO_N "${LDFLAGS} ${ICULIBS} ${ECHO_C}"
-+ printf "%s" "${LDFLAGS} ${ICULIBS} "
- # $RPATH_LDFLAGS
- ;;
-
- --ldflags-libsonly)
-- echo $ECHO_N "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} ${ECHO_C}"
-+ printf "%s" "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} "
- ;;
-
- --ldflags-icuio)
-- echo $ECHO_N " ${ICULIBS_ICUIO} ${ECHO_C}"
-+ printf "%s" " ${ICULIBS_ICUIO} "
- ;;
-
- --ldflags-obsolete)
-- echo $ECHO_N "${ICULIBS_OBSOLETE} ${ECHO_C}"
-+ printf "%s" "${ICULIBS_OBSOLETE} "
- ;;
-
- --ldflags-toolutil)
-- echo $ECHO_N " ${ICULIBS_TOOLUTIL} ${ECHO_C}"
-+ printf "%s" " ${ICULIBS_TOOLUTIL} "
- ;;
-
- --ldflags-layout)
-- echo $ECHO_N "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} ${ECHO_C}"
-+ printf "%s" "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} "
- ;;
-
- --ldflags-searchpath)
-- echo $ECHO_N "-L${libdir} ${ECHO_C}"
-+ printf "%s" "-L${libdir} "
- ;;
-
- --detect-prefix)
-@@ -319,47 +319,47 @@
- ;;
-
- --shared-datadir)
-- echo $ECHO_N "${datadir} ${ECHO_C}"
-+ printf "%s" "${datadir} "
- ;;
-
- --incfile)
-- echo $ECHO_N "${pkglibdir}/Makefile.inc ${ECHO_C}"
-+ printf "%s" "${pkglibdir}/Makefile.inc "
- ;;
-
- --incpkgdatafile)
-- echo $ECHO_N "${pkglibdir}/pkgdata.inc ${ECHO_C}"
-+ printf "%s" "${pkglibdir}/pkgdata.inc "
- ;;
-
- --icudata)
-- echo $ECHO_N "${ICUDATA_NAME} ${ECHO_C}"
-+ printf "%s" "${ICUDATA_NAME} "
- ;;
-
- --icudata-mode)
-- echo $ECHO_N "${PKGDATA_MODE} ${ECHO_C}"
-+ printf "%s" "${PKGDATA_MODE} "
- ;;
-
- --icudata-install-dir)
-- echo $ECHO_N "${ICUPKGDATA_DIR} ${ECHO_C}"
-+ printf "%s" "${ICUPKGDATA_DIR} "
- ;;
-
- --icudatadir)
-- echo $ECHO_N "${ICUDATA_DIR} ${ECHO_C}"
-+ printf "%s" "${ICUDATA_DIR} "
- ;;
-
- --shlib-c)
-- echo $ECHO_N "${SHLIB_c} ${ECHO_C}"
-+ printf "%s" "${SHLIB_c} "
- ;;
-
- --shlib-cc)
-- echo $ECHO_N "${SHLIB_cc} ${ECHO_C}"
-+ printf "%s" "${SHLIB_cc} "
- ;;
-
- --version)
-- echo $ECHO_N $VERSION
-+ printf "%s" "$VERSION"
- ;;
-
- --unicode-version)
-- echo $ECHO_N $UNICODE_VERSION
-+ printf "%s" "$UNICODE_VERSION"
- ;;
-
- --host)
-Index: configure.ac
-===================================================================
---- a/configure.ac (revision 36912)
-+++ b/configure.ac (working copy)
-@@ -19,24 +19,6 @@
- PACKAGE="icu"
- AC_SUBST(PACKAGE)
-
--# Use custom echo test for newline option
--# Current autoconf (2.65) gives incorrect echo newline option
--# for icu-config
--# This may be removed later - mow (June 17, 2010)
--ICU_ECHO_C= ICU_ECHO_N= ICU_ECHO_T=
--case `/bin/sh -c "echo -n x"` in
---n*)
-- case `/bin/sh -c "echo 'x\c'"` in
-- *c*) ICU_ECHO_T=' ';; # ECHO_T is single tab character.
-- *) ICU_ECHO_C='\c';;
-- esac;;
--*)
-- ICU_ECHO_N='-n';;
--esac
--AC_SUBST(ICU_ECHO_N)
--AC_SUBST(ICU_ECHO_C)
--AC_SUBST(ICU_ECHO_T)
--
- AC_MSG_CHECKING(for ICU version numbers)
-
- # Get the ICU version from uversion.h or other headers
-Index: icudefs.mk.in
-===================================================================
---- a/icudefs.mk.in (revision 36912)
-+++ b/icudefs.mk.in (working copy)
-@@ -155,11 +155,6 @@
- ENABLE_STATIC = @ENABLE_STATIC@
- ENABLE_SHARED = @ENABLE_SHARED@
-
--# Echo w/o newline
--
--#ECHO_N = @ICU_ECHO_N@
--#ECHO_C = @ICU_ECHO_C@
--
- # Commands to compile
- COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c
- COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c
-Index: test/hdrtst/Makefile.in
-===================================================================
---- a/test/hdrtst/Makefile.in (revision 36912)
-+++ b/test/hdrtst/Makefile.in (working copy)
-@@ -33,9 +33,6 @@
- include $(shell icu-config --incfile)
- DIRS=$(prefix)/include/unicode
- LDIRS=$(prefix)/include/layout
--ECHO_T=@ECHO_T@
--ECHO_C=@ECHO_C@
--ECHO_N=@ECHO_N@
-
- all:
- @echo Please read this Makefile for more information.
diff --git a/dev-libs/icu/files/icu-remove-bashisms.patch b/dev-libs/icu/files/icu-remove-bashisms.patch
deleted file mode 100644
index 980d84b77d..0000000000
--- a/dev-libs/icu/files/icu-remove-bashisms.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-Index: config/Makefile.inc.in
-===================================================================
---- config/Makefile.inc.in (revision 36912)
-+++ config/Makefile.inc.in (working copy)
-@@ -125,12 +125,6 @@
- # with usually. Many applications will want to add $(ICULIBS_I18N) as well.
- ICULIBS = $(ICULIBS_BASE) $(ICULIBS_I18N) $(ICULIBS_COMMON) $(ICULIBS_DATA)
-
--# Proper echo newline handling is needed in icu-config
--ECHO_N=@ICU_ECHO_N@
--ECHO_C=@ICU_ECHO_C@
--# Not currently being used but good to have for proper tab handling
--ECHO_T=@ICU_ECHO_T@
--
- ##################################################################
- ##################################################################
- #
-Index: config/icu-config-bottom
-===================================================================
---- config/icu-config-bottom (revision 36912)
-+++ config/icu-config-bottom (working copy)
-@@ -217,73 +217,73 @@
- ;;
-
- --cflags)
-- echo $ECHO_N "${CFLAGS} ${ECHO_C}"
-+ printf "%s" "${CFLAGS} "
- ;;
-
- --cc)
-- echo $ECHO_N "${CC} ${ECHO_C}"
-+ printf "%s" "${CC} "
- ;;
-
- --cxx)
-- echo $ECHO_N "${CXX} ${ECHO_C}"
-+ printf "%s" "${CXX} "
- ;;
-
- --cxxflags)
-- echo $ECHO_N "${CXXFLAGS} ${ECHO_C}"
-+ printf "%s" "${CXXFLAGS} "
- ;;
-
- --cppflags)
- # Don't echo the -I. - it's unneeded.
-- echo $ECHO_N "${CPPFLAGS} ${ECHO_C}" | sed -e 's/-I. //'
-+ printf "%s" "${CPPFLAGS} " | sed -e 's/-I. //'
- ;;
-
- --cppflags-searchpath)
-- echo $ECHO_N "-I${prefix}/include ${ECHO_C}"
-+ printf "%s" "-I${prefix}/include "
- ;;
-
- --cppflags-dynamic)
-- echo $ECHO_N "${SHAREDLIBCPPFLAGS} ${ECHO_C}"
-+ printf "%s" "${SHAREDLIBCPPFLAGS} "
- ;;
-
- --cxxflags-dynamic)
-- echo $ECHO_N "${SHAREDLIBCXXFLAGS} ${ECHO_C}"
-+ printf "%s" "${SHAREDLIBCXXFLAGS} "
- ;;
-
- --cflags-dynamic)
-- echo $ECHO_N "${SHAREDLIBCFLAGS} ${ECHO_C}"
-+ printf "%s" "${SHAREDLIBCFLAGS} "
- ;;
-
- --ldflags-system)
-- echo $ECHO_N "${LIBS} ${ECHO_C}"
-+ printf "%s" "${LIBS} "
- ;;
-
- --ldflags)
-- echo $ECHO_N "${LDFLAGS} ${ICULIBS} ${ECHO_C}"
-+ printf "%s" "${LDFLAGS} ${ICULIBS} "
- # $RPATH_LDFLAGS
- ;;
-
- --ldflags-libsonly)
-- echo $ECHO_N "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} ${ECHO_C}"
-+ printf "%s" "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} "
- ;;
-
- --ldflags-icuio)
-- echo $ECHO_N " ${ICULIBS_ICUIO} ${ECHO_C}"
-+ printf "%s" " ${ICULIBS_ICUIO} "
- ;;
-
- --ldflags-obsolete)
-- echo $ECHO_N "${ICULIBS_OBSOLETE} ${ECHO_C}"
-+ printf "%s" "${ICULIBS_OBSOLETE} "
- ;;
-
- --ldflags-toolutil)
-- echo $ECHO_N " ${ICULIBS_TOOLUTIL} ${ECHO_C}"
-+ printf "%s" " ${ICULIBS_TOOLUTIL} "
- ;;
-
- --ldflags-layout)
-- echo $ECHO_N "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} ${ECHO_C}"
-+ printf "%s" "${ICULIBS_LAYOUT} ${ICULIBS_LAYOUTEX} "
- ;;
-
- --ldflags-searchpath)
-- echo $ECHO_N "-L${libdir} ${ECHO_C}"
-+ printf "%s" "-L${libdir} "
- ;;
-
- --detect-prefix)
-@@ -319,47 +319,47 @@
- ;;
-
- --shared-datadir)
-- echo $ECHO_N "${datadir} ${ECHO_C}"
-+ printf "%s" "${datadir} "
- ;;
-
- --incfile)
-- echo $ECHO_N "${pkglibdir}/Makefile.inc ${ECHO_C}"
-+ printf "%s" "${pkglibdir}/Makefile.inc "
- ;;
-
- --incpkgdatafile)
-- echo $ECHO_N "${pkglibdir}/pkgdata.inc ${ECHO_C}"
-+ printf "%s" "${pkglibdir}/pkgdata.inc "
- ;;
-
- --icudata)
-- echo $ECHO_N "${ICUDATA_NAME} ${ECHO_C}"
-+ printf "%s" "${ICUDATA_NAME} "
- ;;
-
- --icudata-mode)
-- echo $ECHO_N "${PKGDATA_MODE} ${ECHO_C}"
-+ printf "%s" "${PKGDATA_MODE} "
- ;;
-
- --icudata-install-dir)
-- echo $ECHO_N "${ICUPKGDATA_DIR} ${ECHO_C}"
-+ printf "%s" "${ICUPKGDATA_DIR} "
- ;;
-
- --icudatadir)
-- echo $ECHO_N "${ICUDATA_DIR} ${ECHO_C}"
-+ printf "%s" "${ICUDATA_DIR} "
- ;;
-
- --shlib-c)
-- echo $ECHO_N "${SHLIB_c} ${ECHO_C}"
-+ printf "%s" "${SHLIB_c} "
- ;;
-
- --shlib-cc)
-- echo $ECHO_N "${SHLIB_cc} ${ECHO_C}"
-+ printf "%s" "${SHLIB_cc} "
- ;;
-
- --version)
-- echo $ECHO_N $VERSION
-+ printf "%s" "$VERSION"
- ;;
-
- --unicode-version)
-- echo $ECHO_N $UNICODE_VERSION
-+ printf "%s" "$UNICODE_VERSION"
- ;;
-
- --host)
-Index: configure.ac
-===================================================================
---- configure.ac (revision 36912)
-+++ configure.ac (working copy)
-@@ -19,24 +19,6 @@
- PACKAGE="icu"
- AC_SUBST(PACKAGE)
-
--# Use custom echo test for newline option
--# Current autoconf (2.65) gives incorrect echo newline option
--# for icu-config
--# This may be removed later - mow (June 17, 2010)
--ICU_ECHO_C= ICU_ECHO_N= ICU_ECHO_T=
--case `/bin/sh -c "echo -n x"` in
---n*)
-- case `/bin/sh -c "echo 'x\c'"` in
-- *c*) ICU_ECHO_T=' ';; # ECHO_T is single tab character.
-- *) ICU_ECHO_C='\c';;
-- esac;;
--*)
-- ICU_ECHO_N='-n';;
--esac
--AC_SUBST(ICU_ECHO_N)
--AC_SUBST(ICU_ECHO_C)
--AC_SUBST(ICU_ECHO_T)
--
- AC_MSG_CHECKING(for ICU version numbers)
-
- # Get the ICU version from uversion.h or other headers
-Index: icudefs.mk.in
-===================================================================
---- icudefs.mk.in (revision 36912)
-+++ icudefs.mk.in (working copy)
-@@ -155,11 +155,6 @@
- ENABLE_STATIC = @ENABLE_STATIC@
- ENABLE_SHARED = @ENABLE_SHARED@
-
--# Echo w/o newline
--
--#ECHO_N = @ICU_ECHO_N@
--#ECHO_C = @ICU_ECHO_C@
--
- # Commands to compile
- COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c
- COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c
-Index: test/hdrtst/Makefile.in
-===================================================================
---- test/hdrtst/Makefile.in (revision 36912)
-+++ test/hdrtst/Makefile.in (working copy)
-@@ -33,9 +33,6 @@
- include $(shell icu-config --incfile)
- DIRS=$(prefix)/include/unicode
- LDIRS=$(prefix)/include/layout
--ECHO_T=@ECHO_T@
--ECHO_C=@ECHO_C@
--ECHO_N=@ECHO_N@
-
- all:
- @echo Please read this Makefile for more information.
diff --git a/dev-libs/icu/icu-55.1.ebuild b/dev-libs/icu/icu-55.1.ebuild
deleted file mode 100644
index 896fda0d68..0000000000
--- a/dev-libs/icu/icu-55.1.ebuild
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-
-inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
-
-DESCRIPTION="International Components for Unicode"
-HOMEPAGE="http://www.icu-project.org/"
-SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
-
-LICENSE="BSD"
-
-SLOT="0/55"
-
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd"
-IUSE="debug doc examples static-libs"
-
-DEPEND="
- virtual/pkgconfig
- doc? (
- app-doc/doxygen[dot]
- )
-"
-
-S="${WORKDIR}/${PN}/source"
-
-MULTILIB_CHOST_TOOLS=(
- /usr/bin/icu-config
-)
-
-src_prepare() {
- local variable
-
- epatch "${FILESDIR}/${PN}-remove-bashisms.patch"
- epatch_user
-
- # Disable renaming as it is stupind thing to do
- sed -i \
- -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
- common/unicode/uconfig.h || die
-
- # Fix linking of icudata
- sed -i \
- -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
- config/mh-linux || die
-
- # Append doxygen configuration to configure
- sed -i \
- -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
- configure.ac || die
-
- eautoreconf
-}
-
-src_configure() {
- # Do _not_ use C++11 yet, make sure to force GNU C++ 98 standard.
- append-cxxflags -std=gnu++98
-
- if tc-is-cross-compiler; then
- mkdir "${WORKDIR}"/host || die
- pushd "${WORKDIR}"/host >/dev/null || die
-
- CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
- CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
- RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
- "${S}"/configure --disable-renaming --disable-debug \
- --disable-samples --enable-static || die
- emake
-
- popd >/dev/null || die
- fi
-
- multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
- local myeconfargs=(
- --disable-renaming
- --disable-samples
- $(use_enable debug)
- $(use_enable static-libs static)
- )
-
- multilib_is_native_abi && myeconfargs+=(
- $(use_enable examples samples)
- )
- tc-is-cross-compiler && myeconfargs+=(
- --with-cross-build="${WORKDIR}"/host
- )
-
- # icu tries to use clang by default
- tc-export CC CXX
-
- ECONF_SOURCE=${S} \
- econf "${myeconfargs[@]}"
-}
-
-multilib_src_compile() {
- default
-
- if multilib_is_native_abi && use doc; then
- doxygen -u Doxyfile || die
- doxygen Doxyfile || die
- fi
-}
-
-multilib_src_test() {
- # INTLTEST_OPTS: intltest options
- # -e: Exhaustive testing
- # -l: Reporting of memory leaks
- # -v: Increased verbosity
- # IOTEST_OPTS: iotest options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- # CINTLTST_OPTS: cintltst options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- emake -j1 VERBOSE="1" check
-}
-
-multilib_src_install() {
- default
-
- if multilib_is_native_abi && use doc; then
- dohtml -p api -r doc/html/
- fi
-}
-
-multilib_src_install_all() {
- einstalldocs
- dohtml ../readme.html
-}
diff --git a/dev-libs/icu/icu-57.1.ebuild b/dev-libs/icu/icu-57.1.ebuild
deleted file mode 100644
index 3c3389da60..0000000000
--- a/dev-libs/icu/icu-57.1.ebuild
+++ /dev/null
@@ -1,140 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=6
-
-inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
-
-DESCRIPTION="International Components for Unicode"
-HOMEPAGE="http://www.icu-project.org/"
-SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
-
-LICENSE="BSD"
-
-SLOT="0/57"
-
-KEYWORDS="alpha amd64 arm ~arm64 hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd"
-IUSE="debug doc examples static-libs"
-
-DEPEND="
- virtual/pkgconfig
- doc? (
- app-doc/doxygen[dot]
- )
-"
-
-S="${WORKDIR}/${PN}/source"
-
-MULTILIB_CHOST_TOOLS=(
- /usr/bin/icu-config
-)
-
-PATCHES=(
- "${FILESDIR}/${PN}-57.1-remove-bashisms.patch"
-)
-
-src_prepare() {
- # apply patches
- default
-
- local variable
-
- # Disable renaming as it is stupid thing to do
- sed -i \
- -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
- common/unicode/uconfig.h || die
-
- # Fix linking of icudata
- sed -i \
- -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
- config/mh-linux || die
-
- # Append doxygen configuration to configure
- sed -i \
- -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
- configure.ac || die
-
- eautoreconf
-}
-
-src_configure() {
- # Use C++11
- append-cxxflags -std=c++11
-
- if tc-is-cross-compiler; then
- mkdir "${WORKDIR}"/host || die
- pushd "${WORKDIR}"/host >/dev/null || die
-
- CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
- CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
- RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
- "${S}"/configure --disable-renaming --disable-debug \
- --disable-samples --enable-static || die
- emake
-
- popd >/dev/null || die
- fi
-
- multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
- local myeconfargs=(
- --disable-renaming
- --disable-samples
- $(use_enable debug)
- $(use_enable static-libs static)
- )
-
- multilib_is_native_abi && myeconfargs+=(
- $(use_enable examples samples)
- )
- tc-is-cross-compiler && myeconfargs+=(
- --with-cross-build="${WORKDIR}"/host
- )
-
- # icu tries to use clang by default
- tc-export CC CXX
-
- ECONF_SOURCE=${S} \
- econf "${myeconfargs[@]}"
-}
-
-multilib_src_compile() {
- default
-
- if multilib_is_native_abi && use doc; then
- doxygen -u Doxyfile || die
- doxygen Doxyfile || die
- fi
-}
-
-multilib_src_test() {
- # INTLTEST_OPTS: intltest options
- # -e: Exhaustive testing
- # -l: Reporting of memory leaks
- # -v: Increased verbosity
- # IOTEST_OPTS: iotest options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- # CINTLTST_OPTS: cintltst options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- emake -j1 VERBOSE="1" check
-}
-
-multilib_src_install() {
- default
-
- if multilib_is_native_abi && use doc; then
- docinto html
- dodoc -r doc/html/*
- fi
-}
-
-multilib_src_install_all() {
- einstalldocs
- docinto html
- dodoc ../readme.html
-}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2017-05-26 15:50 Andreas Hüttel
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Hüttel @ 2017-05-26 15:50 UTC (permalink / raw
To: gentoo-commits
commit: 216c7c2dad182bafb04859f6650f2aaaad95fed3
Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Fri May 26 15:48:50 2017 +0000
Commit: Andreas Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri May 26 15:49:40 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=216c7c2d
dev-libs/icu: Add backport for bug 616468
Package-Manager: Portage-2.3.6, Repoman-2.3.2
dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch | 155 +++++++++++++++++++++++
dev-libs/icu/icu-58.2-r1.ebuild | 158 ++++++++++++++++++++++++
2 files changed, 313 insertions(+)
diff --git a/dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch b/dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch
new file mode 100644
index 00000000000..a34537bb6cb
--- /dev/null
+++ b/dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch
@@ -0,0 +1,155 @@
+Index: /trunk/icu4c/source/common/utext.cpp
+===================================================================
+--- a/common/utext.cpp (revision 39670)
++++ b/common/utext.cpp (revision 39671)
+@@ -848,7 +848,13 @@
+
+ // Chunk size.
+-// Must be less than 85, because of byte mapping from UChar indexes to native indexes.
+-// Worst case is three native bytes to one UChar. (Supplemenaries are 4 native bytes
+-// to two UChars.)
++// Must be less than 42 (256/6), because of byte mapping from UChar indexes to native indexes.
++// Worst case there are six UTF-8 bytes per UChar.
++// obsolete 6 byte form fd + 5 trails maps to fffd
++// obsolete 5 byte form fc + 4 trails maps to fffd
++// non-shortest 4 byte forms maps to fffd
++// normal supplementaries map to a pair of utf-16, two utf8 bytes per utf-16 unit
++// mapToUChars array size must allow for the worst case, 6.
++// This could be brought down to 4, by treating fd and fc as pure illegal,
++// rather than obsolete lead bytes. But that is not compatible with the utf-8 access macros.
+ //
+ enum { UTF8_TEXT_CHUNK_SIZE=32 };
+@@ -890,5 +896,5 @@
+ // one for a supplementary starting in the last normal position,
+ // and one for an entry for the buffer limit position.
+- uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to
++ uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*6+6]; // Map native offset from bufNativeStart to
+ // correspoding offset in filled part of buf.
+ int32_t align;
+@@ -1033,4 +1039,5 @@
+ u8b = (UTF8Buf *)ut->p; // the current buffer
+ mapIndex = ix - u8b->toUCharsMapStart;
++ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
+ ut->chunkOffset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
+ return TRUE;
+@@ -1299,4 +1306,8 @@
+ // If index is at the end, there is no character there to look at.
+ if (ix != ut->b) {
++ // Note: this function will only move the index back if it is on a trail byte
++ // and there is a preceding lead byte and the sequence from the lead
++ // through this trail could be part of a valid UTF-8 sequence
++ // Otherwise the index remains unchanged.
+ U8_SET_CP_START(s8, 0, ix);
+ }
+@@ -1312,5 +1323,8 @@
+ uint8_t *mapToNative = u8b->mapToNative;
+ uint8_t *mapToUChars = u8b->mapToUChars;
+- int32_t toUCharsMapStart = ix - (UTF8_TEXT_CHUNK_SIZE*3 + 1);
++ int32_t toUCharsMapStart = ix - sizeof(UTF8Buf::mapToUChars) + 1;
++ // Note that toUCharsMapStart can be negative. Happens when the remaining
++ // text from current position to the beginning is less than the buffer size.
++ // + 1 because mapToUChars must have a slot at the end for the bufNativeLimit entry.
+ int32_t destIx = UTF8_TEXT_CHUNK_SIZE+2; // Start in the overflow region
+ // at end of buffer to leave room
+@@ -1339,4 +1353,5 @@
+ // Special case ASCII range for speed.
+ buf[destIx] = (UChar)c;
++ U_ASSERT(toUCharsMapStart <= srcIx);
+ mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx;
+ mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
+@@ -1368,4 +1383,5 @@
+ mapToUChars[sIx-- - toUCharsMapStart] = (uint8_t)destIx;
+ } while (sIx >= srcIx);
++ U_ASSERT(toUCharsMapStart <= (srcIx+1));
+
+ // Set native indexing limit to be the current position.
+@@ -1542,4 +1558,5 @@
+ U_ASSERT(index<=ut->chunkNativeLimit);
+ int32_t mapIndex = index - u8b->toUCharsMapStart;
++ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
+ int32_t offset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
+ U_ASSERT(offset>=0 && offset<=ut->chunkLength);
+Index: /trunk/icu4c/source/test/intltest/utxttest.cpp
+===================================================================
+--- a/test/intltest/utxttest.cpp (revision 39670)
++++ b/test/intltest/utxttest.cpp (revision 39671)
+@@ -68,4 +68,6 @@
+ case 7: name = "Ticket12130";
+ if (exec) Ticket12130(); break;
++ case 8: name = "Ticket12888";
++ if (exec) Ticket12888(); break;
+ default: name = ""; break;
+ }
+@@ -1584,2 +1586,62 @@
+ utext_close(&ut);
+ }
++
++// Ticket 12888: bad handling of illegal utf-8 containing many instances of the archaic, now illegal,
++// six byte utf-8 forms. Original implementation had an assumption that
++// there would be at most three utf-8 bytes per UTF-16 code unit.
++// The five and six byte sequences map to a single replacement character.
++
++void UTextTest::Ticket12888() {
++ const char *badString =
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80";
++
++ UErrorCode status = U_ZERO_ERROR;
++ LocalUTextPointer ut(utext_openUTF8(NULL, badString, -1, &status));
++ TEST_SUCCESS(status);
++ for (;;) {
++ UChar32 c = utext_next32(ut.getAlias());
++ if (c == U_SENTINEL) {
++ break;
++ }
++ }
++ int32_t endIdx = utext_getNativeIndex(ut.getAlias());
++ if (endIdx != (int32_t)strlen(badString)) {
++ errln("%s:%d expected=%d, actual=%d", __FILE__, __LINE__, strlen(badString), endIdx);
++ return;
++ }
++
++ for (int32_t prevIndex = endIdx; prevIndex>0;) {
++ UChar32 c = utext_previous32(ut.getAlias());
++ int32_t currentIndex = utext_getNativeIndex(ut.getAlias());
++ if (c != 0xfffd) {
++ errln("%s:%d (expected, actual, index) = (%d, %d, %d)\n",
++ __FILE__, __LINE__, 0xfffd, c, currentIndex);
++ break;
++ }
++ if (currentIndex != prevIndex - 6) {
++ errln("%s:%d: wrong index. Expected, actual = %d, %d",
++ __FILE__, __LINE__, prevIndex - 6, currentIndex);
++ break;
++ }
++ prevIndex = currentIndex;
++ }
++}
+Index: /trunk/icu4c/source/test/intltest/utxttest.h
+===================================================================
+--- a/test/intltest/utxttest.h (revision 39670)
++++ b/test/intltest/utxttest.h (revision 39671)
+@@ -39,4 +39,5 @@
+ void Ticket10983();
+ void Ticket12130();
++ void Ticket12888();
+
+ private:
diff --git a/dev-libs/icu/icu-58.2-r1.ebuild b/dev-libs/icu/icu-58.2-r1.ebuild
new file mode 100644
index 00000000000..7404a17ca15
--- /dev/null
+++ b/dev-libs/icu/icu-58.2-r1.ebuild
@@ -0,0 +1,158 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/${PV}"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="debug doc examples static-libs"
+
+DEPEND="
+ virtual/pkgconfig
+ doc? (
+ app-doc/doxygen[dot]
+ )
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-58.1-iterator.patch"
+ "${FILESDIR}/${PN}-58.2-CVE-2017-7867.patch"
+)
+
+pkg_pretend() {
+ if tc-is-gcc ; then
+ if [[ $(gcc-major-version) == 4 && $(gcc-minor-version) -lt 9 \
+ || $(gcc-major-version) -lt 4 ]] ; then
+ die "You need at least sys-devel/gcc-4.9"
+ fi
+ fi
+}
+
+src_prepare() {
+ # apply patches
+ default
+
+ local variable
+
+ # Disable renaming as it is stupid thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Use C++14
+ append-cxxflags -std=c++14
+
+ if tc-is-gcc ; then
+ if [[ $(gcc-major-version) == 4 && $(gcc-minor-version) -lt 9 \
+ || $(gcc-major-version) -lt 4 ]] ; then
+ die "You need at least sys-devel/gcc-4.9"
+ fi
+ fi
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ --disable-layoutex
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ )
+
+ multilib_is_native_abi && myeconfargs+=(
+ $(use_enable examples samples)
+ )
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ ECONF_SOURCE=${S} \
+ econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ docinto html
+ dodoc ../readme.html
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2017-09-22 6:36 Andreas Hüttel
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Hüttel @ 2017-09-22 6:36 UTC (permalink / raw
To: gentoo-commits
commit: 16d2275003f59f21a41cb37eda8ef6b29fb450a4
Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 22 06:35:32 2017 +0000
Commit: Andreas Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Fri Sep 22 06:35:55 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=16d22750
dev-libs/icu: Fix build with glibc-2.26, bug 628750
Closes: https://bugs.gentoo.org/628750
Package-Manager: Portage-2.3.10, Repoman-2.3.3
dev-libs/icu/files/icu-58.2-glibc226.patch | 16 ++++++++++++++++
dev-libs/icu/icu-58.2-r1.ebuild | 1 +
dev-libs/icu/icu-59.1.ebuild | 1 +
3 files changed, 18 insertions(+)
diff --git a/dev-libs/icu/files/icu-58.2-glibc226.patch b/dev-libs/icu/files/icu-58.2-glibc226.patch
new file mode 100644
index 00000000000..7003173a13f
--- /dev/null
+++ b/dev-libs/icu/files/icu-58.2-glibc226.patch
@@ -0,0 +1,16 @@
+diff -ruN a/i18n/digitlst.cpp b/i18n/digitlst.cpp
+--- a/i18n/digitlst.cpp 2016-10-27 01:37:56.000000000 -0000
++++ b/i18n/digitlst.cpp 2017-09-21 20:39:29.873030393 -0000
+@@ -61,11 +61,7 @@
+ #endif
+
+ #if U_USE_STRTOD_L
+-# if U_PLATFORM_USES_ONLY_WIN32_API || U_PLATFORM == U_PF_CYGWIN
+-# include <locale.h>
+-# else
+-# include <xlocale.h>
+-# endif
++# include <locale.h>
+ #endif
+
+ // ***************************************************************************
diff --git a/dev-libs/icu/icu-58.2-r1.ebuild b/dev-libs/icu/icu-58.2-r1.ebuild
index 57eae1a6805..86abec06ec3 100644
--- a/dev-libs/icu/icu-58.2-r1.ebuild
+++ b/dev-libs/icu/icu-58.2-r1.ebuild
@@ -33,6 +33,7 @@ PATCHES=(
"${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
"${FILESDIR}/${PN}-58.1-iterator.patch"
"${FILESDIR}/${PN}-58.2-CVE-2017-7867.patch"
+ "${FILESDIR}/${PN}-58.2-glibc226.patch"
)
pkg_pretend() {
diff --git a/dev-libs/icu/icu-59.1.ebuild b/dev-libs/icu/icu-59.1.ebuild
index c8f9ddca172..ed8bc1c9d95 100644
--- a/dev-libs/icu/icu-59.1.ebuild
+++ b/dev-libs/icu/icu-59.1.ebuild
@@ -31,6 +31,7 @@ MULTILIB_CHOST_TOOLS=(
PATCHES=(
"${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-58.2-glibc226.patch"
)
pkg_pretend() {
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2018-11-09 2:11 Andreas Sturmlechner
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Sturmlechner @ 2018-11-09 2:11 UTC (permalink / raw
To: gentoo-commits
commit: 864e6a833c7eca237bdd792a831948c2b5b8d6c6
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 9 02:10:01 2018 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Nov 9 02:10:01 2018 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=864e6a83
dev-libs/icu: Fix CVE-2018-18928
Bug: https://bugs.gentoo.org/670456
Package-Manager: Portage-2.3.51, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
dev-libs/icu/files/icu-63.1-CVE-2018-18928.patch | 62 +++++++++
dev-libs/icu/icu-63.1-r1.ebuild | 161 +++++++++++++++++++++++
2 files changed, 223 insertions(+)
diff --git a/dev-libs/icu/files/icu-63.1-CVE-2018-18928.patch b/dev-libs/icu/files/icu-63.1-CVE-2018-18928.patch
new file mode 100644
index 00000000000..bbbef9e793d
--- /dev/null
+++ b/dev-libs/icu/files/icu-63.1-CVE-2018-18928.patch
@@ -0,0 +1,62 @@
+From 53d8c8f3d181d87a6aa925b449b51c4a2c922a51 Mon Sep 17 00:00:00 2001
+From: Shane Carr <shane@unicode.org>
+Date: Mon, 29 Oct 2018 23:52:44 -0700
+Subject: [PATCH] ICU-20246 Fixing another integer overflow in number parsing.
+
+---
+ i18n/fmtable.cpp | 2 +-
+ i18n/number_decimalquantity.cpp | 5 ++++-
+ test/intltest/numfmtst.cpp | 8 ++++++++
+ .../icu/impl/number/DecimalQuantity_AbstractBCD.java | 5 ++++-
+ .../impl/number/DecimalQuantity_DualStorageBCD.java | 10 +++++++++-
+ .../com/ibm/icu/dev/test/format/NumberFormatTest.java | 5 +++++
+ 6 files changed, 31 insertions(+), 4 deletions(-)
+
+diff --git a/i18n/fmtable.cpp b/i18n/fmtable.cpp
+index 45c7024fc29..8601d95f4a6 100644
+--- a/i18n/fmtable.cpp
++++ b/i18n/fmtable.cpp
+@@ -734,7 +734,7 @@ CharString *Formattable::internalGetCharString(UErrorCode &status) {
+ // not print scientific notation for magnitudes greater than -5 and smaller than some amount (+5?).
+ if (fDecimalQuantity->isZero()) {
+ fDecimalStr->append("0", -1, status);
+- } else if (std::abs(fDecimalQuantity->getMagnitude()) < 5) {
++ } else if (fDecimalQuantity->getMagnitude() != INT32_MIN && std::abs(fDecimalQuantity->getMagnitude()) < 5) {
+ fDecimalStr->appendInvariantChars(fDecimalQuantity->toPlainString(), status);
+ } else {
+ fDecimalStr->appendInvariantChars(fDecimalQuantity->toScientificString(), status);
+diff --git a/i18n/number_decimalquantity.cpp b/i18n/number_decimalquantity.cpp
+index 47b930a564b..d5dd7ae694c 100644
+--- a/i18n/number_decimalquantity.cpp
++++ b/i18n/number_decimalquantity.cpp
+@@ -898,7 +898,10 @@ UnicodeString DecimalQuantity::toScientificString() const {
+ }
+ result.append(u'E');
+ int32_t _scale = upperPos + scale;
+- if (_scale < 0) {
++ if (_scale == INT32_MIN) {
++ result.append({u"-2147483648", -1});
++ return result;
++ } else if (_scale < 0) {
+ _scale *= -1;
+ result.append(u'-');
+ } else {
+diff --git a/test/intltest/numfmtst.cpp b/test/intltest/numfmtst.cpp
+index 34355939113..8d52dc122bf 100644
+--- a/test/intltest/numfmtst.cpp
++++ b/test/intltest/numfmtst.cpp
+@@ -9226,6 +9226,14 @@ void NumberFormatTest::Test20037_ScientificIntegerOverflow() {
+ assertEquals(u"Should not overflow and should parse only the first exponent",
+ u"1E-2147483647",
+ {sp.data(), sp.length(), US_INV});
++
++ // Test edge case overflow of exponent
++ result = Formattable();
++ nf->parse(u".0003e-2147483644", result, status);
++ sp = result.getDecimalNumber(status);
++ assertEquals(u"Should not overflow",
++ u"3E-2147483648",
++ {sp.data(), sp.length(), US_INV});
+ }
+
+ void NumberFormatTest::Test13840_ParseLongStringCrash() {
diff --git a/dev-libs/icu/icu-63.1-r1.ebuild b/dev-libs/icu/icu-63.1-r1.ebuild
new file mode 100644
index 00000000000..7e60191de4e
--- /dev/null
+++ b/dev-libs/icu/icu-63.1-r1.ebuild
@@ -0,0 +1,161 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic toolchain-funcs autotools multilib-minimal
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/${PV}"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
+IUSE="debug doc examples static-libs"
+
+DEPEND="
+ doc? ( app-doc/doxygen[dot] )
+"
+BDEPEND="
+ virtual/pkgconfig
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-58.2-darwin.patch"
+ "${FILESDIR}/${P}-CVE-2018-18928.patch"
+)
+
+pkg_pretend() {
+ if tc-is-gcc ; then
+ if [[ $(gcc-major-version) == 4 && $(gcc-minor-version) -lt 9 \
+ || $(gcc-major-version) -lt 4 ]] ; then
+ die "You need at least sys-devel/gcc-4.9"
+ fi
+ fi
+}
+
+src_prepare() {
+ # apply patches
+ default
+
+ local variable
+
+ # Disable renaming as it is stupid thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Use C++14
+ append-cxxflags -std=c++14
+
+ if tc-is-gcc ; then
+ if [[ $(gcc-major-version) == 4 && $(gcc-minor-version) -lt 9 \
+ || $(gcc-major-version) -lt 4 ]] ; then
+ die "You need at least sys-devel/gcc-4.9"
+ fi
+ fi
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ --disable-layoutex
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ $(multilib_native_use_enable examples samples)
+ )
+
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ # make sure we configure with the same shell as we run icu-config
+ # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
+ export CONFIG_SHELL="${EPREFIX}/bin/sh"
+ # probably have no /bin/sh in prefix-chain
+ [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}"
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ docinto html
+ dodoc ../readme.html
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2019-03-30 9:59 Andreas Sturmlechner
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Sturmlechner @ 2019-03-30 9:59 UTC (permalink / raw
To: gentoo-commits
commit: 61e590adbee50a9c9b4b96b32b61e24d7140d412
Author: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 29 22:30:31 2019 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Mar 30 09:58:22 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=61e590ad
dev-libs/icu: 64.1 version bump
Closes: https://bugs.gentoo.org/682032
Signed-off-by: Lars Wendler <polynomial-c <AT> gentoo.org>
Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
dev-libs/icu/Manifest | 1 +
.../icu/files/icu-64.1-guard-memory-include.patch | 52 ++++++++
dev-libs/icu/icu-64.1.ebuild | 143 +++++++++++++++++++++
3 files changed, 196 insertions(+)
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index 96711e6dbbe..f77c1e6b6c9 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1,2 +1,3 @@
DIST icu4c-58_2-src.tgz 23369902 BLAKE2B cdd2e02c3aba050f5b7f8b38c5a3731e3e5f1cc1403ef86a50908b95560ea3cf8a2d47119fa60cf34f22a8b65eaa2392fd5bcbd3bc48b3da541fe3d9bd7392c0 SHA512 5c21af748f48b392e6c0412bd0aee92162ea931820dcbfab4ec6e0299868504b303d88f7586cc95de55c777ac0dca3a29d6c8ca0892c646ebc864c8a5b5a162a
DIST icu4c-63_1-src.tgz 23746939 BLAKE2B 5a665554506ff705c83c7a03a1b5598b1a48afbe1c6caaccd5a2d7d5aae16b3e18d7bc65ed552fc4df86248a2f13962438f19bca6c2a579843204c7dc52e6278 SHA512 9ab407ed840a00cdda7470dcc4c40299a125ad246ae4d019c4b1ede54781157fd63af015a8228cd95dbc47e4d15a0932b2c657489046a19788e5e8266eac079c
+DIST icu4c-64_1-src.tgz 24013136 BLAKE2B e577bd4c9b822e5ef3a101b3ef46b7b42ca18077d6e05fca543ff1eb702261f017981fb22dd3970662397530b390f648d4417c84dcf3d6ed0d298dd7a8c38897 SHA512 5eca8342d8bdf902689243506643e04512744b33962687e118f6810af6f7fd073678f67b991d2ae9139d257713b63abb4222b96687234df01ad5ff62df16ede0
diff --git a/dev-libs/icu/files/icu-64.1-guard-memory-include.patch b/dev-libs/icu/files/icu-64.1-guard-memory-include.patch
new file mode 100644
index 00000000000..618a4254127
--- /dev/null
+++ b/dev-libs/icu/files/icu-64.1-guard-memory-include.patch
@@ -0,0 +1,52 @@
+From 5ecd46bab07561758e0c37a9178e74175e989bdf Mon Sep 17 00:00:00 2001
+From: Alon Bar-Lev <alon.barlev@gmail.com>
+Date: Sat, 30 Mar 2019 09:59:46 +0300
+Subject: [PATCH] ICU-20530 Guard memory include for C++
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Introduce by ICU-20357, commit b7a3571b adding <memory> include without guard.
+
+Fails when compiling within extern "C".
+
+a.cxx
+---
+extern "C" {
+ #include <unicode/localpointer.h>
+}
+---
+In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include/g++-v8/memory:84,
+ from /tmp/icu/icu4c/source/common/unicode/localpointer.h:45,
+ from a.cxx:4:
+/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include/g++-v8/backward/auto_ptr.h:325:3: error: template with C linkage
+ template<typename _Tp, typename _Dp>
+ ^~~~~~~~
+a.cxx:3:1: note: ‘extern "C"’ linkage started here
+ extern "C" {
+ ^~~~~~~~~~
+---
+
+Found by usage of xmlsec.
+
+Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
+---
+ icu4c/source/common/unicode/localpointer.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/icu4c/source/common/unicode/localpointer.h b/icu4c/source/common/unicode/localpointer.h
+index e011688b1a5..8e35ded0b10 100644
+--- a/common/unicode/localpointer.h
++++ b/common/unicode/localpointer.h
+@@ -42,7 +42,11 @@
+
+ #if U_SHOW_CPLUSPLUS_API
+
++#ifdef __cplusplus
++extern "C++" {
+ #include <memory>
++}
++#endif
+
+ U_NAMESPACE_BEGIN
+
diff --git a/dev-libs/icu/icu-64.1.ebuild b/dev-libs/icu/icu-64.1.ebuild
new file mode 100644
index 00000000000..fbe419ce973
--- /dev/null
+++ b/dev-libs/icu/icu-64.1.ebuild
@@ -0,0 +1,143 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic toolchain-funcs autotools multilib-minimal
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/${PV}"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
+IUSE="debug doc examples static-libs"
+
+DEPEND="
+ doc? ( app-doc/doxygen[dot] )
+"
+BDEPEND="
+ virtual/pkgconfig
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-58.2-darwin.patch"
+ "${FILESDIR}/${P}-guard-memory-include.patch"
+)
+
+src_prepare() {
+ default
+
+ local variable
+
+ # Disable renaming as it is stupid thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ append-cxxflags -std=c++14
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ --disable-layoutex
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ $(multilib_native_use_enable examples samples)
+ )
+
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ # make sure we configure with the same shell as we run icu-config
+ # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
+ export CONFIG_SHELL="${EPREFIX}/bin/sh"
+ # probably have no /bin/sh in prefix-chain
+ [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}"
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ docinto html
+ dodoc ../readme.html
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2019-04-21 11:35 Lars Wendler
0 siblings, 0 replies; 13+ messages in thread
From: Lars Wendler @ 2019-04-21 11:35 UTC (permalink / raw
To: gentoo-commits
commit: 69ff75e390a563e731c8e124d557d1513fba31d1
Author: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 21 11:32:00 2019 +0000
Commit: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Sun Apr 21 11:35:18 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=69ff75e3
dev-libs/icu: Bump to version 64.2
Package-Manager: Portage-2.3.64, Repoman-2.3.12
Signed-off-by: Lars Wendler <polynomial-c <AT> gentoo.org>
dev-libs/icu/Manifest | 1 +
.../files/icu-64.1-data_archive_generation.patch | 14 +
dev-libs/icu/files/icu-64.2-darwin.patch | 56 ++
dev-libs/icu/files/icu-64.2-extern_c.patch | 789 +++++++++++++++++++++
dev-libs/icu/icu-64.2.ebuild | 144 ++++
5 files changed, 1004 insertions(+)
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index f77c1e6b6c9..8ebb1161a08 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1,3 +1,4 @@
DIST icu4c-58_2-src.tgz 23369902 BLAKE2B cdd2e02c3aba050f5b7f8b38c5a3731e3e5f1cc1403ef86a50908b95560ea3cf8a2d47119fa60cf34f22a8b65eaa2392fd5bcbd3bc48b3da541fe3d9bd7392c0 SHA512 5c21af748f48b392e6c0412bd0aee92162ea931820dcbfab4ec6e0299868504b303d88f7586cc95de55c777ac0dca3a29d6c8ca0892c646ebc864c8a5b5a162a
DIST icu4c-63_1-src.tgz 23746939 BLAKE2B 5a665554506ff705c83c7a03a1b5598b1a48afbe1c6caaccd5a2d7d5aae16b3e18d7bc65ed552fc4df86248a2f13962438f19bca6c2a579843204c7dc52e6278 SHA512 9ab407ed840a00cdda7470dcc4c40299a125ad246ae4d019c4b1ede54781157fd63af015a8228cd95dbc47e4d15a0932b2c657489046a19788e5e8266eac079c
DIST icu4c-64_1-src.tgz 24013136 BLAKE2B e577bd4c9b822e5ef3a101b3ef46b7b42ca18077d6e05fca543ff1eb702261f017981fb22dd3970662397530b390f648d4417c84dcf3d6ed0d298dd7a8c38897 SHA512 5eca8342d8bdf902689243506643e04512744b33962687e118f6810af6f7fd073678f67b991d2ae9139d257713b63abb4222b96687234df01ad5ff62df16ede0
+DIST icu4c-64_2-src.tgz 24013250 BLAKE2B 4a286e7a952f5faa74d942f6b6a73147a46aa10fe6d54d024e2d18d1e01056444d56118ded04b4fe084d6a0f9058d7d9e76973960ac8fe5bd9ee105d9e214318 SHA512 5ecb4c230ba45918747a1cf9aef86f555aa07d5b29b1d07ab674e8013f46dfb907a0e9d6945db41155f9dc3012fd94e1152ffc19f61a68b6dfcbabdcb8ae9d78
diff --git a/dev-libs/icu/files/icu-64.1-data_archive_generation.patch b/dev-libs/icu/files/icu-64.1-data_archive_generation.patch
new file mode 100644
index 00000000000..3bb7673f254
--- /dev/null
+++ b/dev-libs/icu/files/icu-64.1-data_archive_generation.patch
@@ -0,0 +1,14 @@
+https://bugs.gentoo.org/682170
+
+--- a/data/Makefile.in
++++ b/data/Makefile.in
+@@ -148,7 +148,8 @@
+ # and convert it to the current type.
+ ifneq ($(ICUDATA_ARCHIVE),)
+ ICUDATA_SOURCE_ARCHIVE = $(OUTDIR)/$(ICUDATA_PLATFORM_NAME).dat
+-$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR)
++$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE)
++ $(MKINSTALLDIRS) $(OUTDIR)
+ $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ICUDATA_ARCHIVE) $(ICUDATA_SOURCE_ARCHIVE)
+ endif
+ else
diff --git a/dev-libs/icu/files/icu-64.2-darwin.patch b/dev-libs/icu/files/icu-64.2-darwin.patch
new file mode 100644
index 00000000000..e6af282bd0e
--- /dev/null
+++ b/dev-libs/icu/files/icu-64.2-darwin.patch
@@ -0,0 +1,56 @@
+same as 4.7, but retargetted to apply with eapply
+
+forward-ported from v58.2 to v64.2
+
+--- a/config/mh-darwin
++++ b/config/mh-darwin
+@@ -6,6 +6,12 @@
+ ## Copyright (c) 1999-2012 International Business Machines Corporation and
+ ## others. All Rights Reserved.
+
++SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
++FINAL_SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO_TARGET_VERSION).$(SO)
++MIDDLE_SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO_TARGET_VERSION_MAJOR).$(SO)
++
++IS_DARWIN = yes
++
+ ## Flags for position independent code
+ SHAREDLIBCFLAGS = -dynamic
+ SHAREDLIBCXXFLAGS = -dynamic
+@@ -33,7 +39,7 @@
+ ifeq ($(ENABLE_RPATH),YES)
+ LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(libdir)/$(notdir $(MIDDLE_SO_TARGET))
+ else
+-LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(notdir $(MIDDLE_SO_TARGET)) $(PKGDATA_TRAILING_SPACE)
++LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(libdir)/$(notdir $(MIDDLE_SO_TARGET)) $(PKGDATA_TRAILING_SPACE)
+ endif
+
+ ## Compiler switch to embed a runtime search path
+--- a/stubdata/Makefile.in
++++ b/stubdata/Makefile.in
+@@ -34,7 +34,11 @@
+
+
+ ifneq ($(ENABLE_SHARED),)
++ifeq ($(IS_DARWIN),)
+ SO_TARGET = $(STUBDATA_LIBDIR)$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX)$(STUB_SUFFIX).$(SO)
++else
++SO_TARGET = $(LIBDIR)/$(STUBDATA_LIBDIR)$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX)$(STUB_SUFFIX).$(SO)
++endif
+ ALL_SO_TARGETS = $(FINAL_SO_TARGET) $(MIDDLE_SO_TARGET) $(SO_TARGET) $(BATCH_STUB_TARGET) $(SHARED_OBJECT)
+ endif
+
+--- a/tools/ctestfw/Makefile.in
++++ b/tools/ctestfw/Makefile.in
+@@ -33,7 +33,11 @@
+ endif
+
+ ifneq ($(ENABLE_SHARED),)
++ifeq ($(IS_DARWIN),)
+ SO_TARGET = $(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
++else
++SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
++endif
+ ALL_SO_TARGETS = $(SO_TARGET) $(MIDDLE_SO_TARGET) $(FINAL_SO_TARGET) $(SHARED_OBJECT)
+ endif
+
diff --git a/dev-libs/icu/files/icu-64.2-extern_c.patch b/dev-libs/icu/files/icu-64.2-extern_c.patch
new file mode 100644
index 00000000000..9a757e12037
--- /dev/null
+++ b/dev-libs/icu/files/icu-64.2-extern_c.patch
@@ -0,0 +1,789 @@
+From 26bdef634585eb24946dba035611266e9431873b Mon Sep 17 00:00:00 2001
+From: Alon Bar-Lev <alon.barlev@gmail.com>
+Date: Sat, 30 Mar 2019 09:59:46 +0300
+Subject: [PATCH] ICU-20530 Fix header issues based on test/hdrtst
+
+Remove explicit extern "C++" scope.
+
+Remove C++ macros in C mode.
+
+Fix issues detected by make -C test/hdrtst.
+
+Run test/hdrtest during CI to detect future breakage.
+
+Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
+Closes: https://github.com/unicode-org/icu/pull/613
+Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
+diff --git a/icu4c/source/common/unicode/ucptrie.h b/icu4c/source/common/unicode/ucptrie.h
+index 2718c984e4..ce7340b890 100644
+--- a/icu4c/source/common/unicode/ucptrie.h
++++ b/icu4c/source/common/unicode/ucptrie.h
+@@ -216,25 +216,6 @@ ucptrie_openFromBinary(UCPTrieType type, UCPTrieValueWidth valueWidth,
+ U_CAPI void U_EXPORT2
+ ucptrie_close(UCPTrie *trie);
+
+-#if U_SHOW_CPLUSPLUS_API
+-
+-U_NAMESPACE_BEGIN
+-
+-/**
+- * \class LocalUCPTriePointer
+- * "Smart pointer" class, closes a UCPTrie via ucptrie_close().
+- * For most methods see the LocalPointerBase base class.
+- *
+- * @see LocalPointerBase
+- * @see LocalPointer
+- * @draft ICU 63
+- */
+-U_DEFINE_LOCAL_OPEN_POINTER(LocalUCPTriePointer, UCPTrie, ucptrie_close);
+-
+-U_NAMESPACE_END
+-
+-#endif
+-
+ /**
+ * Returns the trie type.
+ *
+@@ -642,5 +623,25 @@ ucptrie_internalU8PrevIndex(const UCPTrie *trie, UChar32 c,
+ U_CDECL_END
+
+ #endif // U_IN_DOXYGEN
++
++#if U_SHOW_CPLUSPLUS_API
++
++U_NAMESPACE_BEGIN
++
++/**
++ * \class LocalUCPTriePointer
++ * "Smart pointer" class, closes a UCPTrie via ucptrie_close().
++ * For most methods see the LocalPointerBase base class.
++ *
++ * @see LocalPointerBase
++ * @see LocalPointer
++ * @draft ICU 63
++ */
++U_DEFINE_LOCAL_OPEN_POINTER(LocalUCPTriePointer, UCPTrie, ucptrie_close);
++
++U_NAMESPACE_END
++
++#endif // U_SHOW_CPLUSPLUS_API
++
+ #endif // U_HIDE_DRAFT_API
+ #endif
+diff --git a/icu4c/source/common/unicode/udata.h b/icu4c/source/common/unicode/udata.h
+index a0286e1e42..325ffcf17d 100644
+--- a/icu4c/source/common/unicode/udata.h
++++ b/icu4c/source/common/unicode/udata.h
+@@ -264,25 +264,6 @@ udata_openChoice(const char *path, const char *type, const char *name,
+ U_STABLE void U_EXPORT2
+ udata_close(UDataMemory *pData);
+
+-#if U_SHOW_CPLUSPLUS_API
+-
+-U_NAMESPACE_BEGIN
+-
+-/**
+- * \class LocalUDataMemoryPointer
+- * "Smart pointer" class, closes a UDataMemory via udata_close().
+- * For most methods see the LocalPointerBase base class.
+- *
+- * @see LocalPointerBase
+- * @see LocalPointer
+- * @stable ICU 4.4
+- */
+-U_DEFINE_LOCAL_OPEN_POINTER(LocalUDataMemoryPointer, UDataMemory, udata_close);
+-
+-U_NAMESPACE_END
+-
+-#endif
+-
+ /**
+ * Get the pointer to the actual data inside the data memory.
+ * The data is read-only.
+@@ -434,4 +415,23 @@ udata_setFileAccess(UDataFileAccess access, UErrorCode *status);
+
+ U_CDECL_END
+
++#if U_SHOW_CPLUSPLUS_API
++
++U_NAMESPACE_BEGIN
++
++/**
++ * \class LocalUDataMemoryPointer
++ * "Smart pointer" class, closes a UDataMemory via udata_close().
++ * For most methods see the LocalPointerBase base class.
++ *
++ * @see LocalPointerBase
++ * @see LocalPointer
++ * @stable ICU 4.4
++ */
++U_DEFINE_LOCAL_OPEN_POINTER(LocalUDataMemoryPointer, UDataMemory, udata_close);
++
++U_NAMESPACE_END
++
++#endif // U_SHOW_CPLUSPLUS_API
++
+ #endif
+diff --git a/icu4c/source/common/unicode/uversion.h b/icu4c/source/common/unicode/uversion.h
+index 4aaa8b4d60..5700f62cbf 100644
+--- a/icu4c/source/common/unicode/uversion.h
++++ b/icu4c/source/common/unicode/uversion.h
+@@ -62,26 +62,22 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH];
+ /* C++ namespace if supported. Versioned unless versioning is disabled. */
+ /*===========================================================================*/
+
++/* Define C++ namespace symbols. */
++#ifdef __cplusplus
++
+ /**
+ * \def U_NAMESPACE_BEGIN
+- * This is used to begin a declaration of a public ICU C++ API.
+- * When not compiling for C++, it does nothing.
+- * When compiling for C++, it begins an extern "C++" linkage block (to protect
+- * against cases in which an external client includes ICU header files inside
+- * an extern "C" linkage block).
++ * This is used to begin a declaration of a public ICU C++ API within
++ * versioned-ICU-namespace block.
+ *
+- * It also begins a versioned-ICU-namespace block.
+ * @stable ICU 2.4
+ */
+
+ /**
+ * \def U_NAMESPACE_END
+ * This is used to end a declaration of a public ICU C++ API.
+- * When not compiling for C++, it does nothing.
+- * When compiling for C++, it ends the extern "C++" block begun by
+- * U_NAMESPACE_BEGIN.
++ * It ends the versioned-ICU-namespace block begun by U_NAMESPACE_BEGIN.
+ *
+- * It also ends the versioned-ICU-namespace block begun by U_NAMESPACE_BEGIN.
+ * @stable ICU 2.4
+ */
+
+@@ -89,9 +85,6 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH];
+ * \def U_NAMESPACE_USE
+ * This is used to specify that the rest of the code uses the
+ * public ICU C++ API namespace.
+- * This is invoked by default; we recommend that you turn it off:
+- * See the "Recommended Build Options" section of the ICU4C readme
+- * (http://source.icu-project.org/repos/icu/icu/trunk/readme.html#RecBuild)
+ * @stable ICU 2.4
+ */
+
+@@ -105,8 +98,6 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH];
+ * @stable ICU 2.4
+ */
+
+-/* Define C++ namespace symbols. */
+-#ifdef __cplusplus
+ # if U_DISABLE_RENAMING
+ # define U_ICU_NAMESPACE icu
+ namespace U_ICU_NAMESPACE { }
+@@ -116,8 +107,8 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH];
+ namespace icu = U_ICU_NAMESPACE;
+ # endif
+
+-# define U_NAMESPACE_BEGIN extern "C++" { namespace U_ICU_NAMESPACE {
+-# define U_NAMESPACE_END } }
++# define U_NAMESPACE_BEGIN namespace U_ICU_NAMESPACE {
++# define U_NAMESPACE_END }
+ # define U_NAMESPACE_USE using namespace U_ICU_NAMESPACE;
+ # define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE::
+
+@@ -133,12 +124,7 @@ typedef uint8_t UVersionInfo[U_MAX_VERSION_LENGTH];
+ # if U_USING_ICU_NAMESPACE
+ U_NAMESPACE_USE
+ # endif
+-#else
+-# define U_NAMESPACE_BEGIN
+-# define U_NAMESPACE_END
+-# define U_NAMESPACE_USE
+-# define U_NAMESPACE_QUALIFIER
+-#endif
++#endif /* __cplusplus */
+
+ /*===========================================================================*/
+ /* General version helper functions. Definitions in putil.c */
+diff --git a/icu4c/source/i18n/unicode/reldatefmt.h b/icu4c/source/i18n/unicode/reldatefmt.h
+index 16ae91ad03..1e164a581a 100644
+--- a/icu4c/source/i18n/unicode/reldatefmt.h
++++ b/icu4c/source/i18n/unicode/reldatefmt.h
+@@ -246,6 +246,7 @@ class SharedPluralRules;
+ class SharedBreakIterator;
+ class NumberFormat;
+ class UnicodeString;
++class FormattedRelativeDateTime;
+ class FormattedRelativeDateTimeData;
+
+ #ifndef U_HIDE_DRAFT_API
+diff --git a/icu4c/source/i18n/unicode/uspoof.h b/icu4c/source/i18n/unicode/uspoof.h
+index d15ba4b242..ceb8484b6b 100644
+--- a/icu4c/source/i18n/unicode/uspoof.h
++++ b/icu4c/source/i18n/unicode/uspoof.h
+@@ -353,6 +353,8 @@
+ * @stable ICU 4.6
+ */
+
++U_CDECL_BEGIN
++
+ struct USpoofChecker;
+ /**
+ * @stable ICU 4.2
+@@ -674,25 +676,6 @@ uspoof_openFromSource(const char *confusables, int32_t confusablesLen,
+ U_STABLE void U_EXPORT2
+ uspoof_close(USpoofChecker *sc);
+
+-#if U_SHOW_CPLUSPLUS_API
+-
+-U_NAMESPACE_BEGIN
+-
+-/**
+- * \class LocalUSpoofCheckerPointer
+- * "Smart pointer" class, closes a USpoofChecker via uspoof_close().
+- * For most methods see the LocalPointerBase base class.
+- *
+- * @see LocalPointerBase
+- * @see LocalPointer
+- * @stable ICU 4.4
+- */
+-U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckerPointer, USpoofChecker, uspoof_close);
+-
+-U_NAMESPACE_END
+-
+-#endif
+-
+ /**
+ * Clone a Spoof Checker. The clone will be set to perform the same checks
+ * as the original source.
+@@ -901,54 +884,6 @@ U_STABLE const USet * U_EXPORT2
+ uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status);
+
+
+-#if U_SHOW_CPLUSPLUS_API
+-/**
+- * Limit the acceptable characters to those specified by a Unicode Set.
+- * Any previously specified character limit is
+- * is replaced by the new settings. This includes limits on
+- * characters that were set with the uspoof_setAllowedLocales() function.
+- *
+- * The USPOOF_CHAR_LIMIT test is automatically enabled for this
+- * USoofChecker by this function.
+- *
+- * @param sc The USpoofChecker
+- * @param chars A Unicode Set containing the list of
+- * characters that are permitted. Ownership of the set
+- * remains with the caller. The incoming set is cloned by
+- * this function, so there are no restrictions on modifying
+- * or deleting the UnicodeSet after calling this function.
+- * @param status The error code, set if this function encounters a problem.
+- * @stable ICU 4.2
+- */
+-U_STABLE void U_EXPORT2
+-uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status);
+-
+-
+-/**
+- * Get a UnicodeSet for the characters permitted in an identifier.
+- * This corresponds to the limits imposed by the Set Allowed Characters /
+- * UnicodeSet functions. Limitations imposed by other checks will not be
+- * reflected in the set returned by this function.
+- *
+- * The returned set will be frozen, meaning that it cannot be modified
+- * by the caller.
+- *
+- * Ownership of the returned set remains with the Spoof Detector. The
+- * returned set will become invalid if the spoof detector is closed,
+- * or if a new set of allowed characters is specified.
+- *
+- *
+- * @param sc The USpoofChecker
+- * @param status The error code, set if this function encounters a problem.
+- * @return A UnicodeSet containing the characters that are permitted by
+- * the USPOOF_CHAR_LIMIT test.
+- * @stable ICU 4.2
+- */
+-U_STABLE const icu::UnicodeSet * U_EXPORT2
+-uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
+-#endif
+-
+-
+ /**
+ * Check the specified string for possible security issues.
+ * The text to be checked will typically be an identifier of some sort.
+@@ -1027,43 +962,6 @@ uspoof_checkUTF8(const USpoofChecker *sc,
+ UErrorCode *status);
+
+
+-#if U_SHOW_CPLUSPLUS_API
+-/**
+- * Check the specified string for possible security issues.
+- * The text to be checked will typically be an identifier of some sort.
+- * The set of checks to be performed is specified with uspoof_setChecks().
+- *
+- * \note
+- * Consider using the newer API, {@link uspoof_check2UnicodeString}, instead.
+- * The newer API exposes additional information from the check procedure
+- * and is otherwise identical to this method.
+- *
+- * @param sc The USpoofChecker
+- * @param id A identifier to be checked for possible security issues.
+- * @param position Deprecated in ICU 51. Always returns zero.
+- * Originally, an out parameter for the index of the first
+- * string position that failed a check.
+- * This parameter may be NULL.
+- * @param status The error code, set if an error occurred while attempting to
+- * perform the check.
+- * Spoofing or security issues detected with the input string are
+- * not reported here, but through the function's return value.
+- * @return An integer value with bits set for any potential security
+- * or spoofing issues detected. The bits are defined by
+- * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS)
+- * will be zero if the input string passes all of the
+- * enabled checks.
+- * @see uspoof_check2UnicodeString
+- * @stable ICU 4.2
+- */
+-U_STABLE int32_t U_EXPORT2
+-uspoof_checkUnicodeString(const USpoofChecker *sc,
+- const icu::UnicodeString &id,
+- int32_t *position,
+- UErrorCode *status);
+-#endif
+-
+-
+ /**
+ * Check the specified string for possible security issues.
+ * The text to be checked will typically be an identifier of some sort.
+@@ -1135,39 +1033,6 @@ uspoof_check2UTF8(const USpoofChecker *sc,
+ USpoofCheckResult* checkResult,
+ UErrorCode *status);
+
+-#if U_SHOW_CPLUSPLUS_API
+-/**
+- * Check the specified string for possible security issues.
+- * The text to be checked will typically be an identifier of some sort.
+- * The set of checks to be performed is specified with uspoof_setChecks().
+- *
+- * @param sc The USpoofChecker
+- * @param id A identifier to be checked for possible security issues.
+- * @param checkResult An instance of USpoofCheckResult to be filled with
+- * details about the identifier. Can be NULL.
+- * @param status The error code, set if an error occurred while attempting to
+- * perform the check.
+- * Spoofing or security issues detected with the input string are
+- * not reported here, but through the function's return value.
+- * @return An integer value with bits set for any potential security
+- * or spoofing issues detected. The bits are defined by
+- * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS)
+- * will be zero if the input string passes all of the
+- * enabled checks. Any information in this bitmask will be
+- * consistent with the information saved in the optional
+- * checkResult parameter.
+- * @see uspoof_openCheckResult
+- * @see uspoof_check2
+- * @see uspoof_check2UTF8
+- * @stable ICU 58
+- */
+-U_STABLE int32_t U_EXPORT2
+-uspoof_check2UnicodeString(const USpoofChecker *sc,
+- const icu::UnicodeString &id,
+- USpoofCheckResult* checkResult,
+- UErrorCode *status);
+-#endif
+-
+ /**
+ * Create a USpoofCheckResult, used by the {@link uspoof_check2} class of functions to return
+ * information about the identifier. Information includes:
+@@ -1199,32 +1064,6 @@ uspoof_openCheckResult(UErrorCode *status);
+ U_STABLE void U_EXPORT2
+ uspoof_closeCheckResult(USpoofCheckResult *checkResult);
+
+-#if U_SHOW_CPLUSPLUS_API
+-
+-U_NAMESPACE_BEGIN
+-
+-/**
+- * \class LocalUSpoofCheckResultPointer
+- * "Smart pointer" class, closes a USpoofCheckResult via `uspoof_closeCheckResult()`.
+- * For most methods see the LocalPointerBase base class.
+- *
+- * @see LocalPointerBase
+- * @see LocalPointer
+- * @stable ICU 58
+- */
+-
+-/**
+- * \cond
+- * Note: Doxygen is giving a bogus warning on this U_DEFINE_LOCAL_OPEN_POINTER.
+- * For now, suppress with a Doxygen cond
+- */
+-U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckResultPointer, USpoofCheckResult, uspoof_closeCheckResult);
+-/** \endcond */
+-
+-U_NAMESPACE_END
+-
+-#endif
+-
+ /**
+ * Indicates which of the spoof check(s) have failed. The value is a bitwise OR of the constants for the tests
+ * in question: USPOOF_RESTRICTION_LEVEL, USPOOF_CHAR_LIMIT, and so on.
+@@ -1355,36 +1194,6 @@ uspoof_areConfusableUTF8(const USpoofChecker *sc,
+
+
+
+-#if U_SHOW_CPLUSPLUS_API
+-/**
+- * A version of {@link uspoof_areConfusable} accepting UnicodeStrings.
+- *
+- * @param sc The USpoofChecker
+- * @param s1 The first of the two identifiers to be compared for
+- * confusability. The strings are in UTF-8 format.
+- * @param s2 The second of the two identifiers to be compared for
+- * confusability. The strings are in UTF-8 format.
+- * @param status The error code, set if an error occurred while attempting to
+- * perform the check.
+- * Confusability of the identifiers is not reported here,
+- * but through this function's return value.
+- * @return An integer value with bit(s) set corresponding to
+- * the type of confusability found, as defined by
+- * enum USpoofChecks. Zero is returned if the identifiers
+- * are not confusable.
+- *
+- * @stable ICU 4.2
+- *
+- * @see uspoof_areConfusable
+- */
+-U_STABLE int32_t U_EXPORT2
+-uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
+- const icu::UnicodeString &s1,
+- const icu::UnicodeString &s2,
+- UErrorCode *status);
+-#endif
+-
+-
+ /**
+ * Get the "skeleton" for an identifier.
+ * Skeletons are a transformation of the input identifier;
+@@ -1463,38 +1272,6 @@ uspoof_getSkeletonUTF8(const USpoofChecker *sc,
+ char *dest, int32_t destCapacity,
+ UErrorCode *status);
+
+-#if U_SHOW_CPLUSPLUS_API
+-/**
+- * Get the "skeleton" for an identifier.
+- * Skeletons are a transformation of the input identifier;
+- * Two identifiers are confusable if their skeletons are identical.
+- * See Unicode UAX #39 for additional information.
+- *
+- * Using skeletons directly makes it possible to quickly check
+- * whether an identifier is confusable with any of some large
+- * set of existing identifiers, by creating an efficiently
+- * searchable collection of the skeletons.
+- *
+- * @param sc The USpoofChecker.
+- * @param type Deprecated in ICU 58. You may pass any number.
+- * Originally, controlled which of the Unicode confusable data
+- * tables to use.
+- * @param id The input identifier whose skeleton will be computed.
+- * @param dest The output identifier, to receive the skeleton string.
+- * @param status The error code, set if an error occurred while attempting to
+- * perform the check.
+- * @return A reference to the destination (skeleton) string.
+- *
+- * @stable ICU 4.2
+- */
+-U_I18N_API icu::UnicodeString & U_EXPORT2
+-uspoof_getSkeletonUnicodeString(const USpoofChecker *sc,
+- uint32_t type,
+- const icu::UnicodeString &id,
+- icu::UnicodeString &dest,
+- UErrorCode *status);
+-#endif /* U_SHOW_CPLUSPLUS_API */
+-
+ /**
+ * Get the set of Candidate Characters for Inclusion in Identifiers, as defined
+ * in http://unicode.org/Public/security/latest/xidmodifications.txt
+@@ -1525,8 +1302,243 @@ uspoof_getInclusionSet(UErrorCode *status);
+ U_STABLE const USet * U_EXPORT2
+ uspoof_getRecommendedSet(UErrorCode *status);
+
++/**
++ * Serialize the data for a spoof detector into a chunk of memory.
++ * The flattened spoof detection tables can later be used to efficiently
++ * instantiate a new Spoof Detector.
++ *
++ * The serialized spoof checker includes only the data compiled from the
++ * Unicode data tables by uspoof_openFromSource(); it does not include
++ * include any other state or configuration that may have been set.
++ *
++ * @param sc the Spoof Detector whose data is to be serialized.
++ * @param data a pointer to 32-bit-aligned memory to be filled with the data,
++ * can be NULL if capacity==0
++ * @param capacity the number of bytes available at data,
++ * or 0 for preflighting
++ * @param status an in/out ICU UErrorCode; possible errors include:
++ * - U_BUFFER_OVERFLOW_ERROR if the data storage block is too small for serialization
++ * - U_ILLEGAL_ARGUMENT_ERROR the data or capacity parameters are bad
++ * @return the number of bytes written or needed for the spoof data
++ *
++ * @see utrie2_openFromSerialized()
++ * @stable ICU 4.2
++ */
++U_STABLE int32_t U_EXPORT2
++uspoof_serialize(USpoofChecker *sc,
++ void *data, int32_t capacity,
++ UErrorCode *status);
++
++U_CDECL_END
++
+ #if U_SHOW_CPLUSPLUS_API
+
++U_NAMESPACE_BEGIN
++
++/**
++ * \class LocalUSpoofCheckerPointer
++ * "Smart pointer" class, closes a USpoofChecker via uspoof_close().
++ * For most methods see the LocalPointerBase base class.
++ *
++ * @see LocalPointerBase
++ * @see LocalPointer
++ * @stable ICU 4.4
++ */
++/**
++ * \cond
++ * Note: Doxygen is giving a bogus warning on this U_DEFINE_LOCAL_OPEN_POINTER.
++ * For now, suppress with a Doxygen cond
++ */
++U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckerPointer, USpoofChecker, uspoof_close);
++/** \endcond */
++
++/**
++ * \class LocalUSpoofCheckResultPointer
++ * "Smart pointer" class, closes a USpoofCheckResult via `uspoof_closeCheckResult()`.
++ * For most methods see the LocalPointerBase base class.
++ *
++ * @see LocalPointerBase
++ * @see LocalPointer
++ * @stable ICU 58
++ */
++
++/**
++ * \cond
++ * Note: Doxygen is giving a bogus warning on this U_DEFINE_LOCAL_OPEN_POINTER.
++ * For now, suppress with a Doxygen cond
++ */
++U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckResultPointer, USpoofCheckResult, uspoof_closeCheckResult);
++/** \endcond */
++
++U_NAMESPACE_END
++
++/**
++ * Limit the acceptable characters to those specified by a Unicode Set.
++ * Any previously specified character limit is
++ * is replaced by the new settings. This includes limits on
++ * characters that were set with the uspoof_setAllowedLocales() function.
++ *
++ * The USPOOF_CHAR_LIMIT test is automatically enabled for this
++ * USoofChecker by this function.
++ *
++ * @param sc The USpoofChecker
++ * @param chars A Unicode Set containing the list of
++ * characters that are permitted. Ownership of the set
++ * remains with the caller. The incoming set is cloned by
++ * this function, so there are no restrictions on modifying
++ * or deleting the UnicodeSet after calling this function.
++ * @param status The error code, set if this function encounters a problem.
++ * @stable ICU 4.2
++ */
++U_STABLE void U_EXPORT2
++uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status);
++
++
++/**
++ * Get a UnicodeSet for the characters permitted in an identifier.
++ * This corresponds to the limits imposed by the Set Allowed Characters /
++ * UnicodeSet functions. Limitations imposed by other checks will not be
++ * reflected in the set returned by this function.
++ *
++ * The returned set will be frozen, meaning that it cannot be modified
++ * by the caller.
++ *
++ * Ownership of the returned set remains with the Spoof Detector. The
++ * returned set will become invalid if the spoof detector is closed,
++ * or if a new set of allowed characters is specified.
++ *
++ *
++ * @param sc The USpoofChecker
++ * @param status The error code, set if this function encounters a problem.
++ * @return A UnicodeSet containing the characters that are permitted by
++ * the USPOOF_CHAR_LIMIT test.
++ * @stable ICU 4.2
++ */
++U_STABLE const icu::UnicodeSet * U_EXPORT2
++uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
++
++/**
++ * Check the specified string for possible security issues.
++ * The text to be checked will typically be an identifier of some sort.
++ * The set of checks to be performed is specified with uspoof_setChecks().
++ *
++ * \note
++ * Consider using the newer API, {@link uspoof_check2UnicodeString}, instead.
++ * The newer API exposes additional information from the check procedure
++ * and is otherwise identical to this method.
++ *
++ * @param sc The USpoofChecker
++ * @param id A identifier to be checked for possible security issues.
++ * @param position Deprecated in ICU 51. Always returns zero.
++ * Originally, an out parameter for the index of the first
++ * string position that failed a check.
++ * This parameter may be NULL.
++ * @param status The error code, set if an error occurred while attempting to
++ * perform the check.
++ * Spoofing or security issues detected with the input string are
++ * not reported here, but through the function's return value.
++ * @return An integer value with bits set for any potential security
++ * or spoofing issues detected. The bits are defined by
++ * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS)
++ * will be zero if the input string passes all of the
++ * enabled checks.
++ * @see uspoof_check2UnicodeString
++ * @stable ICU 4.2
++ */
++U_STABLE int32_t U_EXPORT2
++uspoof_checkUnicodeString(const USpoofChecker *sc,
++ const icu::UnicodeString &id,
++ int32_t *position,
++ UErrorCode *status);
++
++/**
++ * Check the specified string for possible security issues.
++ * The text to be checked will typically be an identifier of some sort.
++ * The set of checks to be performed is specified with uspoof_setChecks().
++ *
++ * @param sc The USpoofChecker
++ * @param id A identifier to be checked for possible security issues.
++ * @param checkResult An instance of USpoofCheckResult to be filled with
++ * details about the identifier. Can be NULL.
++ * @param status The error code, set if an error occurred while attempting to
++ * perform the check.
++ * Spoofing or security issues detected with the input string are
++ * not reported here, but through the function's return value.
++ * @return An integer value with bits set for any potential security
++ * or spoofing issues detected. The bits are defined by
++ * enum USpoofChecks. (returned_value & USPOOF_ALL_CHECKS)
++ * will be zero if the input string passes all of the
++ * enabled checks. Any information in this bitmask will be
++ * consistent with the information saved in the optional
++ * checkResult parameter.
++ * @see uspoof_openCheckResult
++ * @see uspoof_check2
++ * @see uspoof_check2UTF8
++ * @stable ICU 58
++ */
++U_STABLE int32_t U_EXPORT2
++uspoof_check2UnicodeString(const USpoofChecker *sc,
++ const icu::UnicodeString &id,
++ USpoofCheckResult* checkResult,
++ UErrorCode *status);
++
++/**
++ * A version of {@link uspoof_areConfusable} accepting UnicodeStrings.
++ *
++ * @param sc The USpoofChecker
++ * @param s1 The first of the two identifiers to be compared for
++ * confusability. The strings are in UTF-8 format.
++ * @param s2 The second of the two identifiers to be compared for
++ * confusability. The strings are in UTF-8 format.
++ * @param status The error code, set if an error occurred while attempting to
++ * perform the check.
++ * Confusability of the identifiers is not reported here,
++ * but through this function's return value.
++ * @return An integer value with bit(s) set corresponding to
++ * the type of confusability found, as defined by
++ * enum USpoofChecks. Zero is returned if the identifiers
++ * are not confusable.
++ *
++ * @stable ICU 4.2
++ *
++ * @see uspoof_areConfusable
++ */
++U_STABLE int32_t U_EXPORT2
++uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
++ const icu::UnicodeString &s1,
++ const icu::UnicodeString &s2,
++ UErrorCode *status);
++
++/**
++ * Get the "skeleton" for an identifier.
++ * Skeletons are a transformation of the input identifier;
++ * Two identifiers are confusable if their skeletons are identical.
++ * See Unicode UAX #39 for additional information.
++ *
++ * Using skeletons directly makes it possible to quickly check
++ * whether an identifier is confusable with any of some large
++ * set of existing identifiers, by creating an efficiently
++ * searchable collection of the skeletons.
++ *
++ * @param sc The USpoofChecker.
++ * @param type Deprecated in ICU 58. You may pass any number.
++ * Originally, controlled which of the Unicode confusable data
++ * tables to use.
++ * @param id The input identifier whose skeleton will be computed.
++ * @param dest The output identifier, to receive the skeleton string.
++ * @param status The error code, set if an error occurred while attempting to
++ * perform the check.
++ * @return A reference to the destination (skeleton) string.
++ *
++ * @stable ICU 4.2
++ */
++U_I18N_API icu::UnicodeString & U_EXPORT2
++uspoof_getSkeletonUnicodeString(const USpoofChecker *sc,
++ uint32_t type,
++ const icu::UnicodeString &id,
++ icu::UnicodeString &dest,
++ UErrorCode *status);
++
+ /**
+ * Get the set of Candidate Characters for Inclusion in Identifiers, as defined
+ * in http://unicode.org/Public/security/latest/xidmodifications.txt
+@@ -1559,34 +1571,6 @@ uspoof_getRecommendedUnicodeSet(UErrorCode *status);
+
+ #endif /* U_SHOW_CPLUSPLUS_API */
+
+-/**
+- * Serialize the data for a spoof detector into a chunk of memory.
+- * The flattened spoof detection tables can later be used to efficiently
+- * instantiate a new Spoof Detector.
+- *
+- * The serialized spoof checker includes only the data compiled from the
+- * Unicode data tables by uspoof_openFromSource(); it does not include
+- * include any other state or configuration that may have been set.
+- *
+- * @param sc the Spoof Detector whose data is to be serialized.
+- * @param data a pointer to 32-bit-aligned memory to be filled with the data,
+- * can be NULL if capacity==0
+- * @param capacity the number of bytes available at data,
+- * or 0 for preflighting
+- * @param status an in/out ICU UErrorCode; possible errors include:
+- * - U_BUFFER_OVERFLOW_ERROR if the data storage block is too small for serialization
+- * - U_ILLEGAL_ARGUMENT_ERROR the data or capacity parameters are bad
+- * @return the number of bytes written or needed for the spoof data
+- *
+- * @see utrie2_openFromSerialized()
+- * @stable ICU 4.2
+- */
+-U_STABLE int32_t U_EXPORT2
+-uspoof_serialize(USpoofChecker *sc,
+- void *data, int32_t capacity,
+- UErrorCode *status);
+-
+-
+-#endif
++#endif /* UCONFIG_NO_NORMALIZATION */
+
+ #endif /* USPOOF_H */
+--
+2.21.0
+
diff --git a/dev-libs/icu/icu-64.2.ebuild b/dev-libs/icu/icu-64.2.ebuild
new file mode 100644
index 00000000000..456e444769e
--- /dev/null
+++ b/dev-libs/icu/icu-64.2.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic toolchain-funcs autotools multilib-minimal
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/${PV}"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
+IUSE="debug doc examples static-libs"
+
+DEPEND="
+ doc? ( app-doc/doxygen[dot] )
+"
+BDEPEND="
+ virtual/pkgconfig
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-64.2-darwin.patch"
+ "${FILESDIR}/${PN}-64.1-data_archive_generation.patch"
+)
+
+src_prepare() {
+ default
+ eapply -p3 "${FILESDIR}/${PN}-64.2-extern_c.patch"
+
+ local variable
+
+ # Disable renaming as it is stupid thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ append-cxxflags -std=c++14
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ --disable-layoutex
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ $(multilib_native_use_enable examples samples)
+ )
+
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ # make sure we configure with the same shell as we run icu-config
+ # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
+ export CONFIG_SHELL="${EPREFIX}/bin/sh"
+ # probably have no /bin/sh in prefix-chain
+ [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}"
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ docinto html
+ dodoc ../readme.html
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2019-06-27 10:48 Andreas Sturmlechner
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Sturmlechner @ 2019-06-27 10:48 UTC (permalink / raw
To: gentoo-commits
commit: 99bf853e60a2ae531eadd00a80a6fdef845c3f33
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 27 09:14:35 2019 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Thu Jun 27 10:47:27 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=99bf853e
dev-libs/icu: Drop 58.2-r1, security cleanup
Bug: https://bugs.gentoo.org/670456
Package-Manager: Portage-2.3.67, Repoman-2.3.16
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
dev-libs/icu/Manifest | 1 -
dev-libs/icu/files/icu-58.1-iterator.patch | 127 -----------------
dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch | 155 ---------------------
dev-libs/icu/files/icu-58.2-darwin.patch | 55 --------
dev-libs/icu/files/icu-58.2-glibc226.patch | 16 ---
dev-libs/icu/icu-58.2-r1.ebuild | 172 ------------------------
6 files changed, 526 deletions(-)
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index efaf4e9e515..8e3d05e0d4d 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1,2 +1 @@
-DIST icu4c-58_2-src.tgz 23369902 BLAKE2B cdd2e02c3aba050f5b7f8b38c5a3731e3e5f1cc1403ef86a50908b95560ea3cf8a2d47119fa60cf34f22a8b65eaa2392fd5bcbd3bc48b3da541fe3d9bd7392c0 SHA512 5c21af748f48b392e6c0412bd0aee92162ea931820dcbfab4ec6e0299868504b303d88f7586cc95de55c777ac0dca3a29d6c8ca0892c646ebc864c8a5b5a162a
DIST icu4c-64_2-src.tgz 24013250 BLAKE2B 4a286e7a952f5faa74d942f6b6a73147a46aa10fe6d54d024e2d18d1e01056444d56118ded04b4fe084d6a0f9058d7d9e76973960ac8fe5bd9ee105d9e214318 SHA512 5ecb4c230ba45918747a1cf9aef86f555aa07d5b29b1d07ab674e8013f46dfb907a0e9d6945db41155f9dc3012fd94e1152ffc19f61a68b6dfcbabdcb8ae9d78
diff --git a/dev-libs/icu/files/icu-58.1-iterator.patch b/dev-libs/icu/files/icu-58.1-iterator.patch
deleted file mode 100644
index 6f52375eb79..00000000000
--- a/dev-libs/icu/files/icu-58.1-iterator.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-source: http://bugs.icu-project.org/trac/changeset/39484/
-
-
-Index: icu/common/ulist.c
-===================================================================
---- icu/common/ulist.c (revision 39483)
-+++ icu/common/ulist.c (revision 39484)
-@@ -30,5 +30,4 @@
-
- int32_t size;
-- int32_t currentIndex;
- };
-
-@@ -52,5 +51,4 @@
- newList->tail = NULL;
- newList->size = 0;
-- newList->currentIndex = -1;
-
- return newList;
-@@ -81,6 +79,7 @@
- p->next->previous = p->previous;
- }
-- list->curr = NULL;
-- list->currentIndex = 0;
-+ if (p == list->curr) {
-+ list->curr = p->next;
-+ }
- --list->size;
- if (p->forceDelete) {
-@@ -151,5 +150,4 @@
- list->head->previous = newItem;
- list->head = newItem;
-- list->currentIndex++;
- }
-
-@@ -194,5 +192,4 @@
- curr = list->curr;
- list->curr = curr->next;
-- list->currentIndex++;
-
- return curr->data;
-@@ -210,5 +207,4 @@
- if (list != NULL) {
- list->curr = list->head;
-- list->currentIndex = 0;
- }
- }
-@@ -273,3 +269,2 @@
- return (UList *)(en->context);
- }
--
-Index: icu/i18n/ucol_res.cpp
-===================================================================
---- icu/i18n/ucol_res.cpp (revision 39483)
-+++ icu/i18n/ucol_res.cpp (revision 39484)
-@@ -681,4 +681,5 @@
- }
- memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
-+ ulist_resetList(sink.values); // Initialize the iterator.
- en->context = sink.values;
- sink.values = NULL; // Avoid deletion in the sink destructor.
-Index: icu/test/intltest/apicoll.cpp
-===================================================================
---- icu/test/intltest/apicoll.cpp (revision 39483)
-+++ icu/test/intltest/apicoll.cpp (revision 39484)
-@@ -82,14 +82,7 @@
- col = Collator::createInstance(Locale::getEnglish(), success);
- if (U_FAILURE(success)){
-- errcheckln(success, "Default Collator creation failed. - %s", u_errorName(success));
-- return;
-- }
--
-- StringEnumeration* kwEnum = col->getKeywordValuesForLocale("", Locale::getEnglish(),true,success);
-- if (U_FAILURE(success)){
-- errcheckln(success, "Get Keyword Values for Locale failed. - %s", u_errorName(success));
-- return;
-- }
-- delete kwEnum;
-+ errcheckln(success, "English Collator creation failed. - %s", u_errorName(success));
-+ return;
-+ }
-
- col->getVersion(versionArray);
-@@ -230,4 +223,27 @@
- delete aFrCol;
- delete junk;
-+}
-+
-+void CollationAPITest::TestKeywordValues() {
-+ IcuTestErrorCode errorCode(*this, "TestKeywordValues");
-+ LocalPointer<Collator> col(Collator::createInstance(Locale::getEnglish(), errorCode));
-+ if (errorCode.logIfFailureAndReset("English Collator creation failed")) {
-+ return;
-+ }
-+
-+ LocalPointer<StringEnumeration> kwEnum(
-+ col->getKeywordValuesForLocale("collation", Locale::getEnglish(), TRUE, errorCode));
-+ if (errorCode.logIfFailureAndReset("Get Keyword Values for English Collator failed")) {
-+ return;
-+ }
-+ assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0);
-+ const char *kw;
-+ UBool hasStandard = FALSE;
-+ while ((kw = kwEnum->next(NULL, errorCode)) != NULL) {
-+ if (strcmp(kw, "standard") == 0) {
-+ hasStandard = TRUE;
-+ }
-+ }
-+ assertTrue("expect at least the 'standard' collation tailoring for English", hasStandard);
- }
-
-@@ -2467,4 +2483,5 @@
- TESTCASE_AUTO_BEGIN;
- TESTCASE_AUTO(TestProperty);
-+ TESTCASE_AUTO(TestKeywordValues);
- TESTCASE_AUTO(TestOperators);
- TESTCASE_AUTO(TestDuplicate);
-Index: icu/test/intltest/apicoll.h
-===================================================================
---- icu/test/intltest/apicoll.h (revision 39483)
-+++ icu/test/intltest/apicoll.h (revision 39484)
-@@ -36,4 +36,5 @@
- */
- void TestProperty(/* char* par */);
-+ void TestKeywordValues();
-
- /**
diff --git a/dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch b/dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch
deleted file mode 100644
index a34537bb6cb..00000000000
--- a/dev-libs/icu/files/icu-58.2-CVE-2017-7867.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-Index: /trunk/icu4c/source/common/utext.cpp
-===================================================================
---- a/common/utext.cpp (revision 39670)
-+++ b/common/utext.cpp (revision 39671)
-@@ -848,7 +848,13 @@
-
- // Chunk size.
--// Must be less than 85, because of byte mapping from UChar indexes to native indexes.
--// Worst case is three native bytes to one UChar. (Supplemenaries are 4 native bytes
--// to two UChars.)
-+// Must be less than 42 (256/6), because of byte mapping from UChar indexes to native indexes.
-+// Worst case there are six UTF-8 bytes per UChar.
-+// obsolete 6 byte form fd + 5 trails maps to fffd
-+// obsolete 5 byte form fc + 4 trails maps to fffd
-+// non-shortest 4 byte forms maps to fffd
-+// normal supplementaries map to a pair of utf-16, two utf8 bytes per utf-16 unit
-+// mapToUChars array size must allow for the worst case, 6.
-+// This could be brought down to 4, by treating fd and fc as pure illegal,
-+// rather than obsolete lead bytes. But that is not compatible with the utf-8 access macros.
- //
- enum { UTF8_TEXT_CHUNK_SIZE=32 };
-@@ -890,5 +896,5 @@
- // one for a supplementary starting in the last normal position,
- // and one for an entry for the buffer limit position.
-- uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to
-+ uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*6+6]; // Map native offset from bufNativeStart to
- // correspoding offset in filled part of buf.
- int32_t align;
-@@ -1033,4 +1039,5 @@
- u8b = (UTF8Buf *)ut->p; // the current buffer
- mapIndex = ix - u8b->toUCharsMapStart;
-+ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
- ut->chunkOffset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
- return TRUE;
-@@ -1299,4 +1306,8 @@
- // If index is at the end, there is no character there to look at.
- if (ix != ut->b) {
-+ // Note: this function will only move the index back if it is on a trail byte
-+ // and there is a preceding lead byte and the sequence from the lead
-+ // through this trail could be part of a valid UTF-8 sequence
-+ // Otherwise the index remains unchanged.
- U8_SET_CP_START(s8, 0, ix);
- }
-@@ -1312,5 +1323,8 @@
- uint8_t *mapToNative = u8b->mapToNative;
- uint8_t *mapToUChars = u8b->mapToUChars;
-- int32_t toUCharsMapStart = ix - (UTF8_TEXT_CHUNK_SIZE*3 + 1);
-+ int32_t toUCharsMapStart = ix - sizeof(UTF8Buf::mapToUChars) + 1;
-+ // Note that toUCharsMapStart can be negative. Happens when the remaining
-+ // text from current position to the beginning is less than the buffer size.
-+ // + 1 because mapToUChars must have a slot at the end for the bufNativeLimit entry.
- int32_t destIx = UTF8_TEXT_CHUNK_SIZE+2; // Start in the overflow region
- // at end of buffer to leave room
-@@ -1339,4 +1353,5 @@
- // Special case ASCII range for speed.
- buf[destIx] = (UChar)c;
-+ U_ASSERT(toUCharsMapStart <= srcIx);
- mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx;
- mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
-@@ -1368,4 +1383,5 @@
- mapToUChars[sIx-- - toUCharsMapStart] = (uint8_t)destIx;
- } while (sIx >= srcIx);
-+ U_ASSERT(toUCharsMapStart <= (srcIx+1));
-
- // Set native indexing limit to be the current position.
-@@ -1542,4 +1558,5 @@
- U_ASSERT(index<=ut->chunkNativeLimit);
- int32_t mapIndex = index - u8b->toUCharsMapStart;
-+ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
- int32_t offset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
- U_ASSERT(offset>=0 && offset<=ut->chunkLength);
-Index: /trunk/icu4c/source/test/intltest/utxttest.cpp
-===================================================================
---- a/test/intltest/utxttest.cpp (revision 39670)
-+++ b/test/intltest/utxttest.cpp (revision 39671)
-@@ -68,4 +68,6 @@
- case 7: name = "Ticket12130";
- if (exec) Ticket12130(); break;
-+ case 8: name = "Ticket12888";
-+ if (exec) Ticket12888(); break;
- default: name = ""; break;
- }
-@@ -1584,2 +1586,62 @@
- utext_close(&ut);
- }
-+
-+// Ticket 12888: bad handling of illegal utf-8 containing many instances of the archaic, now illegal,
-+// six byte utf-8 forms. Original implementation had an assumption that
-+// there would be at most three utf-8 bytes per UTF-16 code unit.
-+// The five and six byte sequences map to a single replacement character.
-+
-+void UTextTest::Ticket12888() {
-+ const char *badString =
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
-+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80";
-+
-+ UErrorCode status = U_ZERO_ERROR;
-+ LocalUTextPointer ut(utext_openUTF8(NULL, badString, -1, &status));
-+ TEST_SUCCESS(status);
-+ for (;;) {
-+ UChar32 c = utext_next32(ut.getAlias());
-+ if (c == U_SENTINEL) {
-+ break;
-+ }
-+ }
-+ int32_t endIdx = utext_getNativeIndex(ut.getAlias());
-+ if (endIdx != (int32_t)strlen(badString)) {
-+ errln("%s:%d expected=%d, actual=%d", __FILE__, __LINE__, strlen(badString), endIdx);
-+ return;
-+ }
-+
-+ for (int32_t prevIndex = endIdx; prevIndex>0;) {
-+ UChar32 c = utext_previous32(ut.getAlias());
-+ int32_t currentIndex = utext_getNativeIndex(ut.getAlias());
-+ if (c != 0xfffd) {
-+ errln("%s:%d (expected, actual, index) = (%d, %d, %d)\n",
-+ __FILE__, __LINE__, 0xfffd, c, currentIndex);
-+ break;
-+ }
-+ if (currentIndex != prevIndex - 6) {
-+ errln("%s:%d: wrong index. Expected, actual = %d, %d",
-+ __FILE__, __LINE__, prevIndex - 6, currentIndex);
-+ break;
-+ }
-+ prevIndex = currentIndex;
-+ }
-+}
-Index: /trunk/icu4c/source/test/intltest/utxttest.h
-===================================================================
---- a/test/intltest/utxttest.h (revision 39670)
-+++ b/test/intltest/utxttest.h (revision 39671)
-@@ -39,4 +39,5 @@
- void Ticket10983();
- void Ticket12130();
-+ void Ticket12888();
-
- private:
diff --git a/dev-libs/icu/files/icu-58.2-darwin.patch b/dev-libs/icu/files/icu-58.2-darwin.patch
deleted file mode 100644
index e5a9000a346..00000000000
--- a/dev-libs/icu/files/icu-58.2-darwin.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-same as 4.7, but retargetted to apply with eapply
-
---- a/config/mh-darwin
-+++ b/config/mh-darwin
-@@ -4,6 +4,13 @@
- ## Copyright (c) 1999-2011 International Business Machines Corporation and
- ## others. All Rights Reserved.
-
-+
-+SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
-+FINAL_SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO_TARGET_VERSION).$(SO)
-+MIDDLE_SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO_TARGET_VERSION_MAJOR).$(SO)
-+
-+IS_DARWIN = yes
-+
- ## Flags for position independent code
- SHAREDLIBCFLAGS = -dynamic
- SHAREDLIBCXXFLAGS = -dynamic
-@@ -28,7 +35,7 @@
- ifeq ($(ENABLE_RPATH),YES)
- LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(libdir)/$(notdir $(MIDDLE_SO_TARGET))
- else
--LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(notdir $(MIDDLE_SO_TARGET))
-+LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(libdir)/$(notdir $(MIDDLE_SO_TARGET))
- endif
-
- ## Compiler switch to embed a runtime search path
---- a/stubdata/Makefile.in
-+++ b/stubdata/Makefile.in
-@@ -32,7 +32,11 @@
-
-
- ifneq ($(ENABLE_SHARED),)
-+ifeq ($(IS_DARWIN),)
- SO_TARGET = $(STUBDATA_LIBDIR)$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX)$(STUB_SUFFIX).$(SO)
-+else
-+SO_TARGET = $(LIBDIR)/$(STUBDATA_LIBDIR)$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX)$(STUB_SUFFIX).$(SO)
-+endif
- ALL_SO_TARGETS = $(FINAL_SO_TARGET) $(MIDDLE_SO_TARGET) $(SO_TARGET) $(BATCH_STUB_TARGET) $(SHARED_OBJECT)
- endif
-
---- a/tools/ctestfw/Makefile.in
-+++ b/tools/ctestfw/Makefile.in
-@@ -31,7 +31,11 @@
- endif
-
- ifneq ($(ENABLE_SHARED),)
-+ifeq ($(IS_DARWIN),)
- SO_TARGET = $(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
-+else
-+SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
-+endif
- ALL_SO_TARGETS = $(SO_TARGET) $(MIDDLE_SO_TARGET) $(FINAL_SO_TARGET) $(SHARED_OBJECT)
- endif
-
diff --git a/dev-libs/icu/files/icu-58.2-glibc226.patch b/dev-libs/icu/files/icu-58.2-glibc226.patch
deleted file mode 100644
index 7003173a13f..00000000000
--- a/dev-libs/icu/files/icu-58.2-glibc226.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ruN a/i18n/digitlst.cpp b/i18n/digitlst.cpp
---- a/i18n/digitlst.cpp 2016-10-27 01:37:56.000000000 -0000
-+++ b/i18n/digitlst.cpp 2017-09-21 20:39:29.873030393 -0000
-@@ -61,11 +61,7 @@
- #endif
-
- #if U_USE_STRTOD_L
--# if U_PLATFORM_USES_ONLY_WIN32_API || U_PLATFORM == U_PF_CYGWIN
--# include <locale.h>
--# else
--# include <xlocale.h>
--# endif
-+# include <locale.h>
- #endif
-
- // ***************************************************************************
diff --git a/dev-libs/icu/icu-58.2-r1.ebuild b/dev-libs/icu/icu-58.2-r1.ebuild
deleted file mode 100644
index cb2f808c5fc..00000000000
--- a/dev-libs/icu/icu-58.2-r1.ebuild
+++ /dev/null
@@ -1,172 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
-
-DESCRIPTION="International Components for Unicode"
-HOMEPAGE="http://www.icu-project.org/"
-SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
-
-LICENSE="BSD"
-
-SLOT="0/${PV}"
-
-KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~ppc-aix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
-IUSE="debug doc examples static-libs"
-
-DEPEND="
- virtual/pkgconfig
- doc? (
- app-doc/doxygen[dot]
- )
-"
-
-S="${WORKDIR}/${PN}/source"
-
-MULTILIB_CHOST_TOOLS=(
- /usr/bin/icu-config
-)
-
-PATCHES=(
- "${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
- "${FILESDIR}/${PN}-58.1-iterator.patch"
- "${FILESDIR}/${PN}-58.2-CVE-2017-7867.patch"
- "${FILESDIR}/${PN}-58.2-glibc226.patch"
- "${FILESDIR}/${PN}-58.2-darwin.patch"
-)
-
-pkg_pretend() {
- if tc-is-gcc ; then
- if [[ $(gcc-major-version) == 4 && $(gcc-minor-version) -lt 9 \
- || $(gcc-major-version) -lt 4 ]] ; then
- die "You need at least sys-devel/gcc-4.9"
- fi
- fi
-}
-
-src_prepare() {
- # apply patches
- default
-
- local variable
-
- # Disable renaming as it is stupid thing to do
- sed -i \
- -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
- common/unicode/uconfig.h || die
-
- # Fix linking of icudata
- sed -i \
- -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
- config/mh-linux || die
-
- # Append doxygen configuration to configure
- sed -i \
- -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
- configure.ac || die
-
- # Fix compilation on Solaris due to enabling of conflicting standards
- if [[ ${CHOST} == *-solaris* ]] ; then
- sed -i -e '/define _XOPEN_SOURCE_EXTENDED/s/_XOPEN/no_XOPEN/' \
- common/uposixdefs.h || die
- fi
-
- eautoreconf
-}
-
-src_configure() {
- # Use C++14
- append-cxxflags -std=c++14
-
- if tc-is-gcc ; then
- if [[ $(gcc-major-version) == 4 && $(gcc-minor-version) -lt 9 \
- || $(gcc-major-version) -lt 4 ]] ; then
- die "You need at least sys-devel/gcc-4.9"
- fi
- fi
-
- if tc-is-cross-compiler; then
- mkdir "${WORKDIR}"/host || die
- pushd "${WORKDIR}"/host >/dev/null || die
-
- CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
- CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
- RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
- "${S}"/configure --disable-renaming --disable-debug \
- --disable-samples --enable-static || die
- emake
-
- popd >/dev/null || die
- fi
-
- multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
- local myeconfargs=(
- --disable-renaming
- --disable-samples
- --disable-layoutex
- $(use_enable debug)
- $(use_enable static-libs static)
- )
-
- multilib_is_native_abi && myeconfargs+=(
- $(use_enable examples samples)
- )
- tc-is-cross-compiler && myeconfargs+=(
- --with-cross-build="${WORKDIR}"/host
- )
-
- # icu tries to use clang by default
- tc-export CC CXX
-
- # make sure we configure with the same shell as we run icu-config
- # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
- export CONFIG_SHELL=${EPREFIX}/bin/sh
- # probably have no /bin/sh in prefix-chain
- [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL=${BASH}
-
- ECONF_SOURCE=${S} \
- econf "${myeconfargs[@]}"
-}
-
-multilib_src_compile() {
- default
-
- if multilib_is_native_abi && use doc; then
- doxygen -u Doxyfile || die
- doxygen Doxyfile || die
- fi
-}
-
-multilib_src_test() {
- # INTLTEST_OPTS: intltest options
- # -e: Exhaustive testing
- # -l: Reporting of memory leaks
- # -v: Increased verbosity
- # IOTEST_OPTS: iotest options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- # CINTLTST_OPTS: cintltst options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- emake -j1 VERBOSE="1" check
-}
-
-multilib_src_install() {
- default
-
- if multilib_is_native_abi && use doc; then
- docinto html
- dodoc -r doc/html/*
- fi
-}
-
-multilib_src_install_all() {
- einstalldocs
- docinto html
- dodoc ../readme.html
-}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2019-10-15 12:04 Lars Wendler
0 siblings, 0 replies; 13+ messages in thread
From: Lars Wendler @ 2019-10-15 12:04 UTC (permalink / raw
To: gentoo-commits
commit: 8797c40e0927802e92ac97e9794b6c4e74d98c20
Author: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 15 12:01:41 2019 +0000
Commit: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Tue Oct 15 12:04:45 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8797c40e
dev-libs/icu: Bump to version 65.1
Package-Manager: Portage-2.3.77, Repoman-2.3.17
Signed-off-by: Lars Wendler <polynomial-c <AT> gentoo.org>
dev-libs/icu/Manifest | 1 +
dev-libs/icu/files/icu-65.1-remove-bashisms.patch | 207 ++++++++++++++++++++++
dev-libs/icu/icu-65.1.ebuild | 142 +++++++++++++++
3 files changed, 350 insertions(+)
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index 8e3d05e0d4d..852d3209dce 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1 +1,2 @@
DIST icu4c-64_2-src.tgz 24013250 BLAKE2B 4a286e7a952f5faa74d942f6b6a73147a46aa10fe6d54d024e2d18d1e01056444d56118ded04b4fe084d6a0f9058d7d9e76973960ac8fe5bd9ee105d9e214318 SHA512 5ecb4c230ba45918747a1cf9aef86f555aa07d5b29b1d07ab674e8013f46dfb907a0e9d6945db41155f9dc3012fd94e1152ffc19f61a68b6dfcbabdcb8ae9d78
+DIST icu4c-65_1-src.tgz 24267934 BLAKE2B 3c62781201c02a2b1027c9b6db4586f8ccdfb339c0765301a381242d5218f3503a1cdbdc1dc9a1a23ffa657096adc4bf7f0b7fe702461f14beba293a7e82e02c SHA512 8f1ef33e1f4abc9a8ee870331c59f01b473d6da1251a19ce403f822f3e3871096f0791855d39c8f20c612fc49cda2c62c06864aa32ddab2dbd186d2b21ce9139
diff --git a/dev-libs/icu/files/icu-65.1-remove-bashisms.patch b/dev-libs/icu/files/icu-65.1-remove-bashisms.patch
new file mode 100644
index 00000000000..f052a06dc62
--- /dev/null
+++ b/dev-libs/icu/files/icu-65.1-remove-bashisms.patch
@@ -0,0 +1,207 @@
+--- a/config/icu-config-bottom
++++ b/config/icu-config-bottom
+@@ -218,65 +218,65 @@
+ ;;
+
+ --cflags)
+- echo $ECHO_N "${CFLAGS} ${ECHO_C}"
++ printf "%s" "${CFLAGS} "
+ ;;
+
+ --cc)
+- echo $ECHO_N "${CC} ${ECHO_C}"
++ printf "%s" "${CC} "
+ ;;
+
+ --cxx)
+- echo $ECHO_N "${CXX} ${ECHO_C}"
++ printf "%s" "${CXX} "
+ ;;
+
+ --cxxflags)
+- echo $ECHO_N "${CXXFLAGS} ${ECHO_C}"
++ printf "%s" "${CXXFLAGS} "
+ ;;
+
+ --cppflags)
+ # Don't echo the -I. - it's unneeded.
+- echo $ECHO_N "${CPPFLAGS} ${ECHO_C}" | sed -e 's/-I. //'
++ printf "%s" "${CPPFLAGS} " | sed -e 's/-I. //'
+ ;;
+
+ --cppflags-searchpath)
+- echo $ECHO_N "-I${prefix}/include ${ECHO_C}"
++ printf "%s" "-I${prefix}/include "
+ ;;
+
+ --cppflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCPPFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCPPFLAGS} "
+ ;;
+
+ --cxxflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCXXFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCXXFLAGS} "
+ ;;
+
+ --cflags-dynamic)
+- echo $ECHO_N "${SHAREDLIBCFLAGS} ${ECHO_C}"
++ printf "%s" "${SHAREDLIBCFLAGS} "
+ ;;
+
+ --ldflags-system)
+- echo $ECHO_N "${LIBS} ${ECHO_C}"
++ printf "%s" "${LIBS} "
+ ;;
+
+ --ldflags)
+- echo $ECHO_N "${LDFLAGS} ${ICULIBS} ${ECHO_C}"
++ printf "%s" "${LDFLAGS} ${ICULIBS} "
+ # $RPATH_LDFLAGS
+ ;;
+
+ --ldflags-libsonly)
+- echo $ECHO_N "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} ${ECHO_C}"
++ printf "%s" "${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} "
+ ;;
+
+ --ldflags-icuio)
+- echo $ECHO_N " ${ICULIBS_ICUIO} ${ECHO_C}"
++ printf "%s" " ${ICULIBS_ICUIO} "
+ ;;
+
+ --ldflags-obsolete)
+- echo $ECHO_N "${ICULIBS_OBSOLETE} ${ECHO_C}"
++ printf "%s" "${ICULIBS_OBSOLETE} "
+ ;;
+
+ --ldflags-toolutil)
+- echo $ECHO_N " ${ICULIBS_TOOLUTIL} ${ECHO_C}"
++ printf "%s" " ${ICULIBS_TOOLUTIL} "
+ ;;
+
+ --ldflags-layout)
+@@ -285,7 +285,7 @@
+ ;;
+
+ --ldflags-searchpath)
+- echo $ECHO_N "-L${libdir} ${ECHO_C}"
++ printf "%s" "-L${libdir} "
+ ;;
+
+ --detect-prefix)
+@@ -321,47 +321,47 @@
+ ;;
+
+ --shared-datadir)
+- echo $ECHO_N "${datadir} ${ECHO_C}"
++ printf "%s" "${datadir} "
+ ;;
+
+ --incfile)
+- echo $ECHO_N "${pkglibdir}/Makefile.inc ${ECHO_C}"
++ printf "%s" "${pkglibdir}/Makefile.inc "
+ ;;
+
+ --incpkgdatafile)
+- echo $ECHO_N "${pkglibdir}/pkgdata.inc ${ECHO_C}"
++ printf "%s" "${pkglibdir}/pkgdata.inc "
+ ;;
+
+ --icudata)
+- echo $ECHO_N "${ICUDATA_NAME} ${ECHO_C}"
++ printf "%s" "${ICUDATA_NAME} "
+ ;;
+
+ --icudata-mode)
+- echo $ECHO_N "${PKGDATA_MODE} ${ECHO_C}"
++ printf "%s" "${PKGDATA_MODE} "
+ ;;
+
+ --icudata-install-dir)
+- echo $ECHO_N "${ICUPKGDATA_DIR} ${ECHO_C}"
++ printf "%s" "${ICUPKGDATA_DIR} "
+ ;;
+
+ --icudatadir)
+- echo $ECHO_N "${ICUDATA_DIR} ${ECHO_C}"
++ printf "%s" "${ICUDATA_DIR} "
+ ;;
+
+ --shlib-c)
+- echo $ECHO_N "${SHLIB_c} ${ECHO_C}"
++ printf "%s" "${SHLIB_c} "
+ ;;
+
+ --shlib-cc)
+- echo $ECHO_N "${SHLIB_cc} ${ECHO_C}"
++ printf "%s" "${SHLIB_cc} "
+ ;;
+
+ --version)
+- echo $ECHO_N $VERSION
++ printf "%s" "$VERSION"
+ ;;
+
+ --unicode-version)
+- echo $ECHO_N $UNICODE_VERSION
++ printf "%s" "$UNICODE_VERSION"
+ ;;
+
+ --host)
+--- a/config/Makefile.inc.in
++++ b/config/Makefile.inc.in
+@@ -124,12 +124,6 @@
+ # with usually. Many applications will want to add $(ICULIBS_I18N) as well.
+ ICULIBS = $(ICULIBS_BASE) $(ICULIBS_I18N) $(ICULIBS_COMMON) $(ICULIBS_DATA)
+
+-# Proper echo newline handling is needed in icu-config
+-ECHO_N=@ICU_ECHO_N@
+-ECHO_C=@ICU_ECHO_C@
+-# Not currently being used but good to have for proper tab handling
+-ECHO_T=@ICU_ECHO_T@
+-
+ ##################################################################
+ ##################################################################
+ #
+--- a/configure.ac
++++ b/configure.ac
+@@ -26,24 +26,6 @@
+ PACKAGE="icu"
+ AC_SUBST(PACKAGE)
+
+-# Use custom echo test for newline option
+-# Current autoconf (2.65) gives incorrect echo newline option
+-# for icu-config
+-# This may be removed later - mow (June 17, 2010)
+-ICU_ECHO_C= ICU_ECHO_N= ICU_ECHO_T=
+-case `/bin/sh -c "echo -n x"` in
+--n*)
+- case `/bin/sh -c "echo 'x\c'"` in
+- *c*) ICU_ECHO_T=' ';; # ECHO_T is single tab character.
+- *) ICU_ECHO_C='\c';;
+- esac;;
+-*)
+- ICU_ECHO_N='-n';;
+-esac
+-AC_SUBST(ICU_ECHO_N)
+-AC_SUBST(ICU_ECHO_C)
+-AC_SUBST(ICU_ECHO_T)
+-
+ AC_MSG_CHECKING(for ICU version numbers)
+
+ # Get the ICU version from uversion.h or other headers
+--- a/icudefs.mk.in
++++ b/icudefs.mk.in
+@@ -161,11 +161,6 @@
+ ENABLE_STATIC = @ENABLE_STATIC@
+ ENABLE_SHARED = @ENABLE_SHARED@
+
+-# Echo w/o newline
+-
+-#ECHO_N = @ICU_ECHO_N@
+-#ECHO_C = @ICU_ECHO_C@
+-
+ # Commands to compile
+ COMPILE.c= $(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c
+ COMPILE.cc= $(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c
diff --git a/dev-libs/icu/icu-65.1.ebuild b/dev-libs/icu/icu-65.1.ebuild
new file mode 100644
index 00000000000..a8993d916ef
--- /dev/null
+++ b/dev-libs/icu/icu-65.1.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{5,6,7} )
+inherit autotools flag-o-matic multilib-minimal python-any-r1 toolchain-funcs
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="http://www.icu-project.org/"
+SRC_URI="https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz"
+
+LICENSE="BSD"
+
+SLOT="0/${PV}"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
+IUSE="debug doc examples static-libs"
+
+BDEPEND="${PYTHON_DEPS}
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen[dot] )
+"
+
+S="${WORKDIR}/${PN}/source"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-65.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-64.2-darwin.patch"
+ "${FILESDIR}/${PN}-64.1-data_archive_generation.patch"
+)
+
+src_prepare() {
+ default
+
+ local variable
+
+ # Disable renaming as it is stupid thing to do
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ append-cxxflags -std=c++14
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ --disable-layoutex
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ $(multilib_native_use_enable examples samples)
+ )
+
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # icu tries to use clang by default
+ tc-export CC CXX
+
+ # make sure we configure with the same shell as we run icu-config
+ # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
+ export CONFIG_SHELL="${EPREFIX}/bin/sh"
+ # probably have no /bin/sh in prefix-chain
+ [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}"
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ docinto html
+ dodoc ../readme.html
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2022-05-18 11:13 Andreas Sturmlechner
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Sturmlechner @ 2022-05-18 11:13 UTC (permalink / raw
To: gentoo-commits
commit: 3d3cad32d1310cafeeed46b374ef3120c0195ff7
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed May 18 10:54:00 2022 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed May 18 11:12:53 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3d3cad32
dev-libs/icu: Fix CVE-2022-1638
Bug: https://bugs.gentoo.org/843731
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch | 202 ++++++++++++++++++++++++
dev-libs/icu/icu-71.1-r1.ebuild | 154 ++++++++++++++++++
2 files changed, 356 insertions(+)
diff --git a/dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch b/dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch
new file mode 100644
index 000000000000..216ed7894473
--- /dev/null
+++ b/dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch
@@ -0,0 +1,202 @@
+From e96e9410bde06962c211fa6f21c3d91263a90f86 Mon Sep 17 00:00:00 2001
+From: Frank Tang <ftang@chromium.org>
+Date: Fri, 29 Apr 2022 22:50:33 +0000
+Subject: [PATCH] ICU-22005 Fix int32 overflow in FormattedStringBuilder
+
+See #2070
+---
+ .../i18n/formatted_string_builder.cpp | 55 +++++++++++++------
+ .../formatted_string_builder_test.cpp | 41 ++++++++++++++
+ 2 files changed, 79 insertions(+), 17 deletions(-)
+
+diff --git a/i18n/formatted_string_builder.cpp b/i18n/formatted_string_builder.cpp
+index 734078644b8..628fbea8711 100644
+--- a/i18n/formatted_string_builder.cpp
++++ b/i18n/formatted_string_builder.cpp
+@@ -6,6 +6,7 @@
+ #if !UCONFIG_NO_FORMATTING
+
+ #include "formatted_string_builder.h"
++#include "putilimp.h"
+ #include "unicode/ustring.h"
+ #include "unicode/utf16.h"
+ #include "unicode/unum.h" // for UNumberFormatFields literals
+@@ -197,6 +198,9 @@ FormattedStringBuilder::splice(int32_t startThis, int32_t endThis, const Unicod
+ int32_t thisLength = endThis - startThis;
+ int32_t otherLength = endOther - startOther;
+ int32_t count = otherLength - thisLength;
++ if (U_FAILURE(status)) {
++ return count;
++ }
+ int32_t position;
+ if (count > 0) {
+ // Overall, chars need to be added.
+@@ -221,6 +225,9 @@ int32_t FormattedStringBuilder::append(const FormattedStringBuilder &other, UErr
+
+ int32_t
+ FormattedStringBuilder::insert(int32_t index, const FormattedStringBuilder &other, UErrorCode &status) {
++ if (U_FAILURE(status)) {
++ return 0;
++ }
+ if (this == &other) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+@@ -255,12 +262,18 @@ int32_t FormattedStringBuilder::prepareForInsert(int32_t index, int32_t count, U
+ U_ASSERT(index >= 0);
+ U_ASSERT(index <= fLength);
+ U_ASSERT(count >= 0);
++ U_ASSERT(fZero >= 0);
++ U_ASSERT(fLength >= 0);
++ U_ASSERT(getCapacity() - fZero >= fLength);
++ if (U_FAILURE(status)) {
++ return count;
++ }
+ if (index == 0 && fZero - count >= 0) {
+ // Append to start
+ fZero -= count;
+ fLength += count;
+ return fZero;
+- } else if (index == fLength && fZero + fLength + count < getCapacity()) {
++ } else if (index == fLength && count <= getCapacity() - fZero - fLength) {
+ // Append to end
+ fLength += count;
+ return fZero + fLength - count;
+@@ -275,18 +288,26 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t co
+ int32_t oldZero = fZero;
+ char16_t *oldChars = getCharPtr();
+ Field *oldFields = getFieldPtr();
+- if (fLength + count > oldCapacity) {
+- if ((fLength + count) > INT32_MAX / 2) {
+- // If we continue, then newCapacity will overflow int32_t in the next line.
++ int32_t newLength;
++ if (uprv_add32_overflow(fLength, count, &newLength)) {
++ status = U_INPUT_TOO_LONG_ERROR;
++ return -1;
++ }
++ int32_t newZero;
++ if (newLength > oldCapacity) {
++ if (newLength > INT32_MAX / 2) {
++ // We do not support more than 1G char16_t in this code because
++ // dealing with >2G *bytes* can cause subtle bugs.
+ status = U_INPUT_TOO_LONG_ERROR;
+ return -1;
+ }
+- int32_t newCapacity = (fLength + count) * 2;
+- int32_t newZero = newCapacity / 2 - (fLength + count) / 2;
++ // Keep newCapacity also to at most 1G char16_t.
++ int32_t newCapacity = newLength * 2;
++ newZero = (newCapacity - newLength) / 2;
+
+ // C++ note: malloc appears in two places: here and in the assignment operator.
+- auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * newCapacity));
+- auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * newCapacity));
++ auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * static_cast<size_t>(newCapacity)));
++ auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * static_cast<size_t>(newCapacity)));
+ if (newChars == nullptr || newFields == nullptr) {
+ uprv_free(newChars);
+ uprv_free(newFields);
+@@ -315,10 +336,8 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t co
+ fChars.heap.capacity = newCapacity;
+ fFields.heap.ptr = newFields;
+ fFields.heap.capacity = newCapacity;
+- fZero = newZero;
+- fLength += count;
+ } else {
+- int32_t newZero = oldCapacity / 2 - (fLength + count) / 2;
++ newZero = (oldCapacity - newLength) / 2;
+
+ // C++ note: memmove is required because src and dest may overlap.
+ // First copy the entire string to the location of the prefix, and then move the suffix
+@@ -331,18 +350,20 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t co
+ uprv_memmove2(oldFields + newZero + index + count,
+ oldFields + newZero + index,
+ sizeof(Field) * (fLength - index));
+-
+- fZero = newZero;
+- fLength += count;
+ }
+- U_ASSERT((fZero + index) >= 0);
++ fZero = newZero;
++ fLength = newLength;
+ return fZero + index;
+ }
+
+ int32_t FormattedStringBuilder::remove(int32_t index, int32_t count) {
+- // TODO: Reset the heap here? (If the string after removal can fit on stack?)
++ U_ASSERT(0 <= index);
++ U_ASSERT(index <= fLength);
++ U_ASSERT(count <= (fLength - index));
++ U_ASSERT(index <= getCapacity() - fZero);
++
+ int32_t position = index + fZero;
+- U_ASSERT(position >= 0);
++ // TODO: Reset the heap here? (If the string after removal can fit on stack?)
+ uprv_memmove2(getCharPtr() + position,
+ getCharPtr() + position + count,
+ sizeof(char16_t) * (fLength - index - count));
+diff --git a/test/intltest/formatted_string_builder_test.cpp b/test/intltest/formatted_string_builder_test.cpp
+index 45721a320ac..57294e24856 100644
+--- a/test/intltest/formatted_string_builder_test.cpp
++++ b/test/intltest/formatted_string_builder_test.cpp
+@@ -22,6 +22,7 @@ class FormattedStringBuilderTest : public IntlTest {
+ void testFields();
+ void testUnlimitedCapacity();
+ void testCodePoints();
++ void testInsertOverflow();
+
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+
+@@ -50,6 +51,7 @@ void FormattedStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const
+ TESTCASE_AUTO(testFields);
+ TESTCASE_AUTO(testUnlimitedCapacity);
+ TESTCASE_AUTO(testCodePoints);
++ TESTCASE_AUTO(testInsertOverflow);
+ TESTCASE_AUTO_END;
+ }
+
+@@ -308,6 +310,45 @@ void FormattedStringBuilderTest::testCodePoints() {
+ assertEquals("Code point count is 2", 2, nsb.codePointCount());
+ }
+
++void FormattedStringBuilderTest::testInsertOverflow() {
++ if (quick) return;
++ // Setup the test fixture in sb, sb2, ustr.
++ UErrorCode status = U_ZERO_ERROR;
++ FormattedStringBuilder sb;
++ int32_t data_length = INT32_MAX / 2;
++ UnicodeString ustr(data_length, u'a', data_length);
++ sb.append(ustr, kUndefinedField, status);
++ assertSuccess("Setup the first FormattedStringBuilder", status);
++
++ FormattedStringBuilder sb2;
++ sb2.append(ustr, kUndefinedField, status);
++ sb2.insert(0, ustr, 0, data_length / 2, kUndefinedField, status);
++ sb2.writeTerminator(status);
++ assertSuccess("Setup the second FormattedStringBuilder", status);
++
++ ustr = sb2.toUnicodeString();
++ // Complete setting up the test fixture in sb, sb2 and ustr.
++
++ // Test splice() of the second UnicodeString
++ sb.splice(0, 1, ustr, 1, ustr.length(),
++ kUndefinedField, status);
++ assertEquals(
++ "splice() long text should not crash but return U_INPUT_TOO_LONG_ERROR",
++ U_INPUT_TOO_LONG_ERROR, status);
++
++ // Test sb.insert() of the first FormattedStringBuilder with the second one.
++ sb.insert(0, sb2, status);
++ assertEquals(
++ "insert() long FormattedStringBuilder should not crash but return "
++ "U_INPUT_TOO_LONG_ERROR", U_INPUT_TOO_LONG_ERROR, status);
++
++ // Test sb.insert() of the first FormattedStringBuilder with UnicodeString.
++ sb.insert(0, ustr, 0, ustr.length(), kUndefinedField, status);
++ assertEquals(
++ "insert() long UnicodeString should not crash but return "
++ "U_INPUT_TOO_LONG_ERROR", U_INPUT_TOO_LONG_ERROR, status);
++}
++
+ void FormattedStringBuilderTest::assertEqualsImpl(const UnicodeString &a, const FormattedStringBuilder &b) {
+ // TODO: Why won't this compile without the IntlTest:: qualifier?
+ IntlTest::assertEquals("Lengths should be the same", a.length(), b.length());
diff --git a/dev-libs/icu/icu-71.1-r1.ebuild b/dev-libs/icu/icu-71.1-r1.ebuild
new file mode 100644
index 000000000000..584c243c2e41
--- /dev/null
+++ b/dev-libs/icu/icu-71.1-r1.ebuild
@@ -0,0 +1,154 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Please bump with dev-libs/icu-layoutex
+
+PYTHON_COMPAT=( python3_{8..10} )
+VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/icu.asc
+inherit autotools flag-o-matic multilib-minimal python-any-r1 toolchain-funcs verify-sig
+
+DESCRIPTION="International Components for Unicode"
+HOMEPAGE="https://icu.unicode.org/"
+SRC_URI="https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz"
+SRC_URI+=" verify-sig? ( https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz.asc )"
+S="${WORKDIR}/${PN}/source"
+
+LICENSE="BSD"
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
+IUSE="debug doc examples static-libs test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="${PYTHON_DEPS}
+ sys-devel/autoconf-archive
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen[dot] )
+ verify-sig? ( sec-keys/openpgp-keys-icu )
+"
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/icu-config
+)
+
+PATCHES=(
+ "${FILESDIR}/${PN}-65.1-remove-bashisms.patch"
+ "${FILESDIR}/${PN}-64.2-darwin.patch"
+ "${FILESDIR}/${PN}-68.1-nonunicode.patch"
+ "${FILESDIR}/${P}-CVE-2022-1638.patch" # bug 843731
+)
+
+src_prepare() {
+ default
+
+ # Disable renaming as it assumes stable ABI and that consumers
+ # won't use unofficial APIs. We need this despite the configure argument.
+ sed -i \
+ -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
+ common/unicode/uconfig.h || die
+
+ # Fix linking of icudata
+ sed -i \
+ -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
+ config/mh-linux || die
+
+ # Append doxygen configuration to configure
+ sed -i \
+ -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
+ configure.ac || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # ICU tries to append -std=c++11 without this, so as of 71.1,
+ # despite GCC 9+ using c++14 (or gnu++14) and GCC 11+ using gnu++17,
+ # we still need this.
+ append-cxxflags -std=c++14
+
+ if tc-is-cross-compiler; then
+ mkdir "${WORKDIR}"/host || die
+ pushd "${WORKDIR}"/host >/dev/null || die
+
+ CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
+ CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
+ RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
+ "${S}"/configure --disable-renaming --disable-debug \
+ --disable-samples --enable-static || die
+ emake
+
+ popd >/dev/null || die
+ fi
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --disable-renaming
+ --disable-samples
+ --disable-layoutex
+ $(use_enable debug)
+ $(use_enable static-libs static)
+ $(use_enable test tests)
+ $(multilib_native_use_enable examples samples)
+ )
+
+ tc-is-cross-compiler && myeconfargs+=(
+ --with-cross-build="${WORKDIR}"/host
+ )
+
+ # Work around cross-endian testing failures with LTO #757681
+ if tc-is-cross-compiler && is-flagq '-flto*' ; then
+ myeconfargs+=( --disable-strict )
+ fi
+
+ # ICU tries to use clang by default
+ tc-export CC CXX
+
+ # Make sure we configure with the same shell as we run icu-config
+ # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
+ export CONFIG_SHELL="${EPREFIX}/bin/sh"
+ # Probably have no /bin/sh in prefix-chain
+ [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}"
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_compile() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ doxygen -u Doxyfile || die
+ doxygen Doxyfile || die
+ fi
+}
+
+multilib_src_test() {
+ # INTLTEST_OPTS: intltest options
+ # -e: Exhaustive testing
+ # -l: Reporting of memory leaks
+ # -v: Increased verbosity
+ # IOTEST_OPTS: iotest options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ # CINTLTST_OPTS: cintltst options
+ # -e: Exhaustive testing
+ # -v: Increased verbosity
+ emake -j1 VERBOSE="1" check
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi && use doc; then
+ docinto html
+ dodoc -r doc/html/*
+ fi
+}
+
+multilib_src_install_all() {
+ local HTML_DOCS=( ../readme.html )
+ einstalldocs
+}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2022-06-19 9:13 Andreas Sturmlechner
0 siblings, 0 replies; 13+ messages in thread
From: Andreas Sturmlechner @ 2022-06-19 9:13 UTC (permalink / raw
To: gentoo-commits
commit: 443ab2fb240d54a565ff358c897191dec78ee33c
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 19 07:02:10 2022 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Jun 19 09:12:45 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=443ab2fb
dev-libs/icu: Cleanup vulnerable 70.1-r1
Bug: https://bugs.gentoo.org/843731
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
dev-libs/icu/Manifest | 1 -
dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch | 38 ------
dev-libs/icu/icu-70.1-r1.ebuild | 146 ----------------------
3 files changed, 185 deletions(-)
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index de0c50c6ffa5..a466a7e57d4d 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1,3 +1,2 @@
-DIST icu4c-70_1-src.tgz 25449582 BLAKE2B e229376ee45322db99aa963465048ab5e694ce9f0ba335f071817198238de21fcd77dfe3e86ea1394790e2a3b6d96772d1b98cb7dccd6462a9dd05c0ab7bdef0 SHA512 0b26ae7207155cb65a8fdb25f7b2fa4431e74b12bccbed0884a17feaae3c96833d12451064dd152197fd6ea5fd3adfd95594284a463e66c82e0d860f645880c9
DIST icu4c-71_1-src.tgz 25701340 BLAKE2B 182972d87fe5b69b5e08c39ab9bb0ac7ffc7b36530168b3548faa051cce2b73b9f1c1d23198a4b1c655442155e369da76929e4f54fe4e32265160363428d4916 SHA512 1fd2a20aef48369d1f06e2bb74584877b8ad0eb529320b976264ec2db87420bae242715795f372dbc513ea80047bc49077a064e78205cd5e8b33d746fd2a2912
DIST icu4c-71_1-src.tgz.asc 659 BLAKE2B ac281e0a9b94bf6bfddee2dd5dc7553836aa50ae84f55478a662d0cd1e116a944de92dd5fd701164d62fb5b8e8effcdb3456a151a6b198d603e2324ccd76e334 SHA512 3371e14f3959defa7fb8d3eb0308084646ed553169b7a845bff89f9a8c1054ef5bee45c26c1834a84cab38fa87710f1585e6c5787be1fe2df356eb5c2ba20aae
diff --git a/dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch b/dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch
deleted file mode 100644
index 05d390a1284a..000000000000
--- a/dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Fixes test failure on arm.
-
-https://github.com/unicode-org/icu/pull/1925
-https://unicode-org.atlassian.net/browse/ICU-21793
-
-From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lal?= <kapouer@melix.org>
-Date: Wed, 3 Nov 2021 02:31:18 +0100
-Subject: [PATCH] ICU-21793 Fix ucptrietest golden diff
-
---- a/tools/toolutil/toolutil.cpp
-+++ b/tools/toolutil/toolutil.cpp
-@@ -228,18 +228,19 @@ uprv_compareGoldenFiles(
- std::ifstream ifs(goldenFilePath, std::ifstream::in);
- int32_t pos = 0;
- char c;
-- while ((c = ifs.get()) != std::char_traits<char>::eof() && pos < bufferLen) {
-+ while (ifs.get(c) && pos < bufferLen) {
- if (c != buffer[pos]) {
- // Files differ at this position
-- return pos;
-+ break;
- }
- pos++;
- }
-- if (pos < bufferLen || c != std::char_traits<char>::eof()) {
-- // Files are different lengths
-- return pos;
-+ if (pos == bufferLen && ifs.eof()) {
-+ // Files are same lengths
-+ pos = -1;
- }
-- return -1;
-+ ifs.close();
-+ return pos;
- }
-
- /*U_CAPI UDate U_EXPORT2
-
diff --git a/dev-libs/icu/icu-70.1-r1.ebuild b/dev-libs/icu/icu-70.1-r1.ebuild
deleted file mode 100644
index 50dada47fc08..000000000000
--- a/dev-libs/icu/icu-70.1-r1.ebuild
+++ /dev/null
@@ -1,146 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..10} )
-inherit autotools flag-o-matic multilib-minimal python-any-r1 toolchain-funcs
-
-DESCRIPTION="International Components for Unicode"
-HOMEPAGE="https://icu.unicode.org/"
-SRC_URI="https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz"
-S="${WORKDIR}/${PN}/source"
-
-LICENSE="BSD"
-SLOT="0/${PV}"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
-IUSE="debug doc examples static-libs"
-
-BDEPEND="${PYTHON_DEPS}
- sys-devel/autoconf-archive
- virtual/pkgconfig
- doc? ( app-doc/doxygen[dot] )
-"
-
-MULTILIB_CHOST_TOOLS=(
- /usr/bin/icu-config
-)
-
-PATCHES=(
- "${FILESDIR}/${PN}-65.1-remove-bashisms.patch"
- "${FILESDIR}/${PN}-64.2-darwin.patch"
- "${FILESDIR}/${PN}-68.1-nonunicode.patch"
- # Should both be in the next release, but check
- # https://bugs.gentoo.org/788112
- "${FILESDIR}/${PN}-69.1-fix-ub-units.patch"
- "${FILESDIR}/${PN}-70.1-fix-ucptrietest.patch"
-)
-
-src_prepare() {
- default
-
- # Disable renaming as it is stupid thing to do
- sed -i \
- -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
- common/unicode/uconfig.h || die
-
- # Fix linking of icudata
- sed -i \
- -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
- config/mh-linux || die
-
- # Append doxygen configuration to configure
- sed -i \
- -e 's:icudefs.mk:icudefs.mk Doxyfile:' \
- configure.ac || die
-
- eautoreconf
-}
-
-src_configure() {
- append-cxxflags -std=c++14
-
- if tc-is-cross-compiler; then
- mkdir "${WORKDIR}"/host || die
- pushd "${WORKDIR}"/host >/dev/null || die
-
- CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
- CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
- RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
- "${S}"/configure --disable-renaming --disable-debug \
- --disable-samples --enable-static || die
- emake
-
- popd >/dev/null || die
- fi
-
- multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
- local myeconfargs=(
- --disable-renaming
- --disable-samples
- --disable-layoutex
- $(use_enable debug)
- $(use_enable static-libs static)
- $(multilib_native_use_enable examples samples)
- )
-
- tc-is-cross-compiler && myeconfargs+=(
- --with-cross-build="${WORKDIR}"/host
- )
-
- # work around cross-endian testing failures with LTO #757681
- if tc-is-cross-compiler && is-flagq '-flto*' ; then
- myeconfargs+=( --disable-strict )
- fi
-
- # icu tries to use clang by default
- tc-export CC CXX
-
- # make sure we configure with the same shell as we run icu-config
- # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined
- export CONFIG_SHELL="${EPREFIX}/bin/sh"
- # probably have no /bin/sh in prefix-chain
- [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}"
-
- ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
-}
-
-multilib_src_compile() {
- default
-
- if multilib_is_native_abi && use doc; then
- doxygen -u Doxyfile || die
- doxygen Doxyfile || die
- fi
-}
-
-multilib_src_test() {
- # INTLTEST_OPTS: intltest options
- # -e: Exhaustive testing
- # -l: Reporting of memory leaks
- # -v: Increased verbosity
- # IOTEST_OPTS: iotest options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- # CINTLTST_OPTS: cintltst options
- # -e: Exhaustive testing
- # -v: Increased verbosity
- emake -j1 VERBOSE="1" check
-}
-
-multilib_src_install() {
- default
-
- if multilib_is_native_abi && use doc; then
- docinto html
- dodoc -r doc/html/*
- fi
-}
-
-multilib_src_install_all() {
- local HTML_DOCS=( ../readme.html )
- einstalldocs
-}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/
@ 2023-11-13 6:07 Sam James
0 siblings, 0 replies; 13+ messages in thread
From: Sam James @ 2023-11-13 6:07 UTC (permalink / raw
To: gentoo-commits
commit: c4fa72f65cc6718ff3f584647759020788a211e6
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 13 05:31:30 2023 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Nov 13 06:06:53 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c4fa72f6
dev-libs/icu: backport test-only fix
No runtime changes, fix is to the test itself.
Closes: https://bugs.gentoo.org/914887
Signed-off-by: Sam James <sam <AT> gentoo.org>
...TestHebrewCalendarInTemporalLeapYear-test.patch | 31 ++++++++++++++++++++++
dev-libs/icu/icu-73.2.ebuild | 1 +
2 files changed, 32 insertions(+)
diff --git a/dev-libs/icu/files/icu-73.2-fix-TestHebrewCalendarInTemporalLeapYear-test.patch b/dev-libs/icu/files/icu-73.2-fix-TestHebrewCalendarInTemporalLeapYear-test.patch
new file mode 100644
index 000000000000..df4dd0793837
--- /dev/null
+++ b/dev-libs/icu/files/icu-73.2-fix-TestHebrewCalendarInTemporalLeapYear-test.patch
@@ -0,0 +1,31 @@
+https://bugs.gentoo.org/914887
+https://github.com/unicode-org/icu/commit/f3b869cbb0b9ced42d7ca4e24626a868a14ddcfc
+
+From f3b869cbb0b9ced42d7ca4e24626a868a14ddcfc Mon Sep 17 00:00:00 2001
+From: Frank Tang <ftang@chromium.org>
+Date: Mon, 18 Sep 2023 20:20:42 -0700
+Subject: [PATCH] ICU-22512 Fix broken TestHebrewCalendarInTemporalLeapYear
+
+Fix broken test mistakenly landed in
+https://github.com/unicode-org/icu/pull/2274
+
+Some important steps were missed in the last landing.
+--- a/test/intltest/caltest.cpp
++++ b/test/intltest/caltest.cpp
+@@ -4028,6 +4028,7 @@ void CalendarTest::TestHebrewCalendarInTemporalLeapYear() {
+ for (gc.set(startYear, UCAL_JANUARY, 1);
+ gc.get(UCAL_YEAR, status) <= stopYear;
+ gc.add(UCAL_DATE, incrementDays, status)) {
++ cal->setTime(gc.getTime(status), status);
+ if (failure(status, "add/get/set/getTime/setTime incorrect")) return;
+
+ int32_t cal_year = cal->get(UCAL_EXTENDED_YEAR, status);
+@@ -4036,6 +4037,7 @@ void CalendarTest::TestHebrewCalendarInTemporalLeapYear() {
+ leapTest->set(UCAL_MONTH, 0);
+ leapTest->set(UCAL_DATE, 1);
+ // If 10 months after TISHRI is TAMUZ, then it is a leap year.
++ leapTest->add(UCAL_MONTH, 10, status);
+ hasLeapMonth = leapTest->get(UCAL_MONTH, status) == icu::HebrewCalendar::TAMUZ;
+ yearForHasLeapMonth = cal_year;
+ }
+
diff --git a/dev-libs/icu/icu-73.2.ebuild b/dev-libs/icu/icu-73.2.ebuild
index 84eeae5d9534..870eed474993 100644
--- a/dev-libs/icu/icu-73.2.ebuild
+++ b/dev-libs/icu/icu-73.2.ebuild
@@ -42,6 +42,7 @@ PATCHES=(
"${FILESDIR}/${PN}-65.1-remove-bashisms.patch"
"${FILESDIR}/${PN}-64.2-darwin.patch"
"${FILESDIR}/${PN}-68.1-nonunicode.patch"
+ "${FILESDIR}/${P}-fix-TestHebrewCalendarInTemporalLeapYear-test.patch"
)
src_prepare() {
^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-11-13 6:07 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-27 10:48 [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/ Andreas Sturmlechner
-- strict thread matches above, loose matches on Subject: below --
2023-11-13 6:07 Sam James
2022-06-19 9:13 Andreas Sturmlechner
2022-05-18 11:13 Andreas Sturmlechner
2019-10-15 12:04 Lars Wendler
2019-04-21 11:35 Lars Wendler
2019-03-30 9:59 Andreas Sturmlechner
2018-11-09 2:11 Andreas Sturmlechner
2017-09-22 6:36 Andreas Hüttel
2017-05-26 15:50 Andreas Hüttel
2017-02-18 16:49 Andreas Hüttel
2017-01-15 21:28 Andreas Hüttel
2016-11-08 17:09 Andreas Hüttel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox