summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wendler <polynomial-c@gentoo.org>2019-04-21 13:32:00 +0200
committerLars Wendler <polynomial-c@gentoo.org>2019-04-21 13:35:18 +0200
commit69ff75e390a563e731c8e124d557d1513fba31d1 (patch)
treef6447f96c946a6df4edbbe336b58c514e2c87858
parentsys-cluster/openmpi: Version bump (diff)
downloadgentoo-69ff75e390a563e731c8e124d557d1513fba31d1.tar.gz
gentoo-69ff75e390a563e731c8e124d557d1513fba31d1.tar.bz2
gentoo-69ff75e390a563e731c8e124d557d1513fba31d1.zip
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@gentoo.org>
-rw-r--r--dev-libs/icu/Manifest1
-rw-r--r--dev-libs/icu/files/icu-64.1-data_archive_generation.patch14
-rw-r--r--dev-libs/icu/files/icu-64.2-darwin.patch56
-rw-r--r--dev-libs/icu/files/icu-64.2-extern_c.patch789
-rw-r--r--dev-libs/icu/icu-64.2.ebuild144
5 files changed, 1004 insertions, 0 deletions
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index f77c1e6b6c90..8ebb1161a089 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 000000000000..3bb7673f254a
--- /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 000000000000..e6af282bd0ef
--- /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 000000000000..9a757e12037b
--- /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 000000000000..456e444769e1
--- /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
+}