public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [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 --
2016-11-08 17:09 [gentoo-commits] repo/gentoo:master commit in: dev-libs/icu/, dev-libs/icu/files/ Andreas Hüttel
  -- strict thread matches above, loose matches on Subject: below --
2017-01-15 21:28 Andreas Hüttel
2017-02-18 16:49 Andreas Hüttel
2017-05-26 15:50 Andreas Hüttel
2017-09-22  6:36 Andreas Hüttel
2018-11-09  2:11 Andreas Sturmlechner
2019-03-30  9:59 Andreas Sturmlechner
2019-04-21 11:35 Lars Wendler
2019-06-27 10:48 Andreas Sturmlechner
2019-10-15 12:04 Lars Wendler
2022-05-18 11:13 Andreas Sturmlechner
2022-06-19  9:13 Andreas Sturmlechner
2023-11-13  6:07 Sam James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox