commit 3fe77eba91c722f0edde2c5b5ed9801dc2caed06 Author: zyppe <210hcl@gmail.com> Date: Tue Feb 20 14:19:27 2024 +0800 Initialize for icu diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c653e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +icu4c-65_1-docs.zip +icu4c-65_1-src.tgz diff --git a/.icu.metadata b/.icu.metadata new file mode 100644 index 0000000..78ddf9c --- /dev/null +++ b/.icu.metadata @@ -0,0 +1,2 @@ +6e289911ef8ab7b844b3d32f99a1431aa7603ca91c33918a651a68b298cf5cff icu4c-65_1-docs.zip +464b490066cdf671a15d9d58423ea9e0dd4f1d60af6fa6db06446ab687930767 icu4c-65_1-src.tgz diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..4a93084 --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,4 @@ +libicu-suse65_1 +libicu-devel + requires -libicu- + requires "libicu-suse65_1- = " diff --git a/icu-CVE-2020-21913.patch b/icu-CVE-2020-21913.patch new file mode 100644 index 0000000..ac46f11 --- /dev/null +++ b/icu-CVE-2020-21913.patch @@ -0,0 +1,50 @@ +diff -Nura icu/source/tools/pkgdata/pkgdata.cpp icu_new/source/tools/pkgdata/pkgdata.cpp +--- icu/source/tools/pkgdata/pkgdata.cpp 2022-08-20 22:18:49.345665213 +0800 ++++ icu_new/source/tools/pkgdata/pkgdata.cpp 2022-08-20 23:26:24.629294322 +0800 +@@ -66,6 +66,8 @@ + + #endif + ++using icu::LocalMemory; ++ + static void loadLists(UPKGOptions *o, UErrorCode *status); + + static int32_t pkg_executeOptions(UPKGOptions *o); +@@ -1527,9 +1529,7 @@ + + static int32_t pkg_createWithAssemblyCode(const char *targetDir, const char mode, const char *gencFilePath) { + char tempObjectFile[SMALL_BUFFER_MAX_SIZE] = ""; +- char *cmd; + int32_t result = 0; +- + int32_t length = 0; + + /* Remove the ending .s and replace it with .o for the new object file. */ +@@ -1539,22 +1539,21 @@ + length = static_cast(uprv_strlen(pkgDataFlags[COMPILER]) + uprv_strlen(pkgDataFlags[LIBFLAGS]) + + uprv_strlen(tempObjectFile) + uprv_strlen(gencFilePath) + BUFFER_PADDING_SIZE); + +- cmd = (char *)uprv_malloc(sizeof(char) * length); +- if (cmd == NULL) { ++ LocalMemory cmd((char *)uprv_malloc(sizeof(char) * length)); ++ if (cmd.isNull()) { + return -1; + } + + /* Generate the object file. */ +- sprintf(cmd, "%s %s -o %s %s", ++ sprintf(cmd.getAlias(), "%s %s -o %s %s", + pkgDataFlags[COMPILER], + pkgDataFlags[LIBFLAGS], + tempObjectFile, + gencFilePath); + +- result = runCommand(cmd); +- uprv_free(cmd); ++ result = runCommand(cmd.getAlias()); + if (result != 0) { +- fprintf(stderr, "Error creating with assembly code. Failed command: %s\n", cmd); ++ fprintf(stderr, "Error creating with assembly code. Failed command: %s\n", cmd.getAlias()); + return result; + } + diff --git a/icu-avoid-x87-excess-precision.diff b/icu-avoid-x87-excess-precision.diff new file mode 100644 index 0000000..0b5f063 --- /dev/null +++ b/icu-avoid-x87-excess-precision.diff @@ -0,0 +1,33 @@ +From: rguenther@suse.com +References: http://bugzilla.opensuse.org/1030253 + +Avoid FixedPrecision::initVisibleDigits failure on i586 with GCC 7. + +--- + source/test/intltest/dcfmapts.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: icu/source/test/intltest/dcfmapts.cpp +=================================================================== +--- icu.orig/source/test/intltest/dcfmapts.cpp ++++ icu/source/test/intltest/dcfmapts.cpp +@@ -869,7 +869,8 @@ void IntlTestDecimalFormatAPI::TestFixed + ASSERT_EQUAL(22, fd.getPluralOperand(PLURAL_OPERAND_V)); + ASSERT_EQUAL(1234567890123456789LL, fd.getPluralOperand(PLURAL_OPERAND_F)); + ASSERT_EQUAL(1234567890123456789LL, fd.getPluralOperand(PLURAL_OPERAND_T)); +- ASSERT_EQUAL(345678901234567890LL, fd.getPluralOperand(PLURAL_OPERAND_I)); ++ volatile double xxa = fd.getPluralOperand(PLURAL_OPERAND_I); ++ ASSERT_EQUAL(345678901234567890LL, xxa); + ASSERT_EQUAL(FALSE, fd.hasIntegerValue()); + ASSERT_EQUAL(FALSE, fd.isNegative()); + +@@ -964,7 +965,8 @@ void IntlTestDecimalFormatAPI::TestFixed + ASSERT_EQUAL(0, fd.getPluralOperand(PLURAL_OPERAND_T)); + // note: going through DigitList path to FixedDecimal, which is trimming + // int64_t fields to 18 digits. See ticket Ticket #10374 +- ASSERT_EQUAL(223372036854775807LL, fd.getPluralOperand(PLURAL_OPERAND_I)); ++ volatile double xxb = fd.getPluralOperand(PLURAL_OPERAND_I); ++ ASSERT_EQUAL(223372036854775807LL, xxb); + ASSERT_EQUAL(TRUE, fd.hasIntegerValue()); + ASSERT_EQUAL(FALSE, fd.isNegative()); + diff --git a/icu-error-reporting.diff b/icu-error-reporting.diff new file mode 100644 index 0000000..58251f7 --- /dev/null +++ b/icu-error-reporting.diff @@ -0,0 +1,64 @@ +Date: 2014-08-13 15:39:48.523887951 +0200 +From: Jan Engelhardt + +Error messages are totally useless without the actual error cause! +--- + source/tools/toolutil/package.cpp | 5 +++-- + source/tools/toolutil/writesrc.cpp | 6 ++++-- + 2 files changed, 7 insertions(+), 4 deletions(-) + +Index: icu/source/tools/toolutil/package.cpp +=================================================================== +--- icu.orig/source/tools/toolutil/package.cpp ++++ icu/source/tools/toolutil/package.cpp +@@ -35,6 +35,7 @@ + #include "package.h" + #include "cmemory.h" + ++#include + #include + #include + #include +@@ -748,7 +749,7 @@ Package::writePackage(const char *filena + // create the file and write its contents + file=fopen(filename, "wb"); + if(file==NULL) { +- fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename); ++ fprintf(stderr, "icupkg: unable to create file \"%s\": %s\n", filename, strerror(errno)); + exit(U_FILE_ACCESS_ERROR); + } + +@@ -1169,7 +1170,7 @@ Package::extractItem(const char *filesPa + makeFullFilenameAndDirs(filesPath, outName, filename, (int32_t)sizeof(filename)); + file=fopen(filename, "wb"); + if(file==NULL) { +- fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename); ++ fprintf(stderr, "icupkg: unable to create file \"%s\": %s\n", filename, strerror(errno)); + exit(U_FILE_ACCESS_ERROR); + } + fileLength=(int32_t)fwrite(pItem->data, 1, pItem->length, file); +Index: icu/source/tools/toolutil/writesrc.cpp +=================================================================== +--- icu.orig/source/tools/toolutil/writesrc.cpp ++++ icu/source/tools/toolutil/writesrc.cpp +@@ -18,7 +18,9 @@ + * Helper functions for writing source code for data. + */ + ++#include + #include ++#include + #include + #include "unicode/utypes.h" + #include "unicode/putil.h" +@@ -64,8 +66,8 @@ usrc_createWithHeader(const char *path, + } else { + fprintf( + stderr, +- "usrc_create(%s, %s): unable to create file\n", +- path!=NULL ? path : "", filename); ++ "usrc_create(%s, %s): unable to create file: %s\n", ++ path!=NULL ? path : "", filename, strerror(errno)); + } + return f; + } diff --git a/icu-fix-install-mode-files.diff b/icu-fix-install-mode-files.diff new file mode 100644 index 0000000..9976f64 --- /dev/null +++ b/icu-fix-install-mode-files.diff @@ -0,0 +1,53 @@ +From: Jan Engelhardt +Date: 2013-06-28 12:54:31.002040372 +0200 + +build: fix abort of install procedure with packaging=files + +When ./configure --with-data-packaging=files, make install aborts +because the previous developer did not test it with a normal +user account/DESTDIR install. + + make[1]: Entering directory `/home/abuild/rpmbuild/BUILD/icu/source/data' + LD_LIBRARY_PATH=../stubdata:../tools/ctestfw:../lib:$LD_LIBRARY_PATH ../bin/pkgdata -O ../data/icupkg.inc -q -c -s /home/abuild/rpmbuild/BUILD/icu/source/data/out/build/icudt51l -d ./out -e icudt51 -T ./out/tmp -p icudt51l -m files -r 51.2 ./out/tmp/icudata.lst + /bin/sh ../mkinstalldirs /home/abuild/rpmbuild/BUILDROOT/icu-51.2-0.x86_64/usr/share/icu/51.2 + mkdir /home/abuild/rpmbuild/BUILDROOT/icu-51.2-0.x86_64/usr/share/icu + mkdir /home/abuild/rpmbuild/BUILDROOT/icu-51.2-0.x86_64/usr/share/icu/51.2 + /bin/sh ../mkinstalldirs /usr/share/icu/51.2/icudt51l + mkdir /usr/share/icu + mkdir: cannot create directory '/usr/share/icu': Permission denied + +--- + source/data/Makefile.in | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +Index: icu/source/data/Makefile.in +=================================================================== +--- icu.orig/source/data/Makefile.in ++++ icu/source/data/Makefile.in +@@ -200,16 +200,16 @@ endif + install-local: $(PKGDATA_LIST) ./icupkg.inc packagedata $(OS390INSTALL) + $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(ICUPKGDATA_DIR) + ifeq ($(PKGDATA_MODE),files) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(CURR_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(LANG_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(REGION_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(ZONE_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(UNIT_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(BREAK_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(COLLATION_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(RBNF_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(TRANSLIT_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(CURR_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(LANG_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(REGION_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(ZONE_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(UNIT_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(BREAK_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(COLLATION_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(RBNF_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(TRANSLIT_TREE) + endif + ifneq ($(ENABLE_STATIC),) + ifeq ($(PKGDATA_MODE),dll) diff --git a/icu-susevers.diff b/icu-susevers.diff new file mode 100644 index 0000000..b698977 --- /dev/null +++ b/icu-susevers.diff @@ -0,0 +1,40 @@ +From: Jan Engelhardt +Date: 2018-06-04 09:47:12.535168981 +0200 +References: http://bugzilla.suse.com/show_bug.cgi?id=1095425 + +Because of bug #1095425, IS_UTF8=0 is wanted. Since that changes the C++ABI of +class UnicodeString, the library would become incompatible to a default build +that 3rd party programs might expect, and so we need to change the SO +identifier to something unique. + +--- + source/common/unicode/platform.h | 2 +- + source/icudefs.mk.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: icu/source/common/unicode/platform.h +=================================================================== +--- icu.orig/source/common/unicode/platform.h ++++ icu/source/common/unicode/platform.h +@@ -649,7 +649,7 @@ namespace std { + /* Use the predefined value. */ + #elif U_PLATFORM_IS_LINUX_BASED || U_PLATFORM_IS_DARWIN_BASED || \ + U_PLATFORM == U_PF_EMSCRIPTEN +-# define U_CHARSET_IS_UTF8 1 ++# define U_CHARSET_IS_UTF8 0 + #else + # define U_CHARSET_IS_UTF8 0 + #endif +Index: icu/source/icudefs.mk.in +=================================================================== +--- icu.orig/source/icudefs.mk.in ++++ icu/source/icudefs.mk.in +@@ -44,7 +44,7 @@ PACKAGE_ICU_URL = "http://icu-project.or + PACKAGE = @PACKAGE@ + VERSION = @VERSION@ + UNICODE_VERSION = @UNICODE_VERSION@ +-SO_TARGET_VERSION = @LIB_VERSION@ ++SO_TARGET_VERSION = suse@LIB_VERSION@ + SO_TARGET_VERSION_MAJOR = @LIB_VERSION_MAJOR@ + + # The ICU data external name is usually icudata; the entry point name is diff --git a/icu-versioning.diff b/icu-versioning.diff new file mode 100644 index 0000000..9591df3 --- /dev/null +++ b/icu-versioning.diff @@ -0,0 +1,199 @@ +From: Jan Engelhardt +Date: 2013-06-11 03:36:48.480850779 +0200 +References: http://bugzilla.novell.com/824262 +Directions: drop patch if unable to forward-port + +ICU sometimes changes their ABI without updating the SO numbers. They +did that before, and they did it again with 51.1->51.2. In part, this +is owed to how C++ is compiled on the contemporary implementations. + +Thus, we will use the full version as the SO identifier in openSUSE. + +Details: + +U_ICU_VERSION_SHORT was (example) "51" before when there was a +libicui18n.so.51. Now, since there is a libicui18n.so.51.2, we need to +change U_ICU_VERSION_SHORT. But the define's documentation says +"without dots", and I do not know how much downstream code depends on +the non-dot feature, if at all. Anyhow, to bypass this question to +which we have no definite answer, U_ICU_VERSION_SHORT is instead simply +defined to "51_2" and we "fix" (read like: hack) it with symlinks. + +However, the ICU source also uses U_ICU_VERSION_SHORT to construct the +path to its data files. However, as there is no "icudt51_2l.dat", but +only a "icudt51l.dat", U_ICU_VERSION_MAJOR_STR is introduced for +ICU-internal use, so that I do not have to edit more dirty Makefiles to +produce a "icudt51_2l.dat" instead. In fact, placing the version number +in "icudt51l" seems redundant, since that file is in a version-specific +directory anyway (/usr/share/icu/51.2/) — another point where ICU +development seems to not pay enough attention. + +--- + source/common/icuplug.cpp | 2 +- + source/common/unicode/utypes.h | 4 ++-- + source/common/unicode/uvernum.h | 7 +++++-- + source/config/mh-linux | 2 +- + source/config/pkgdataMakefile.in | 1 + + source/data/pkgdataMakefile.in | 1 + + source/extra/uconv/pkgdataMakefile.in | 1 + + source/icudefs.mk.in | 1 + + source/test/testdata/pkgdataMakefile.in | 1 + + source/tools/pkgdata/pkgdata.cpp | 4 ++-- + 10 files changed, 16 insertions(+), 8 deletions(-) + +Index: icu/source/common/icuplug.cpp +=================================================================== +--- icu.orig/source/common/icuplug.cpp ++++ icu/source/common/icuplug.cpp +@@ -760,7 +760,7 @@ uplug_init(UErrorCode *status) { + pluginFile.append(plugin_dir, *status); + pluginFile.append(U_FILE_SEP_STRING, -1, *status); + pluginFile.append("icuplugins", -1, *status); +- pluginFile.append(U_ICU_VERSION_SHORT, -1, *status); ++ pluginFile.append(U_ICU_VERSION_MAJOR_STR, -1, *status); + pluginFile.append(".txt", -1, *status); + #endif + +Index: icu/source/common/unicode/utypes.h +=================================================================== +--- icu.orig/source/common/unicode/utypes.h ++++ icu/source/common/unicode/utypes.h +@@ -136,9 +136,9 @@ + * ICU 1.8.x on EBCDIC, etc.. + * @stable ICU 2.0 + */ +-#define U_ICUDATA_NAME "icudt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER ++#define U_ICUDATA_NAME "icudt" U_ICU_VERSION_MAJOR_STR U_ICUDATA_TYPE_LETTER + #ifndef U_HIDE_INTERNAL_API +-#define U_USRDATA_NAME "usrdt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER /**< @internal */ ++#define U_USRDATA_NAME "usrdt" U_ICU_VERSION_MAJOR_STR U_ICUDATA_TYPE_LETTER /**< @internal */ + #define U_USE_USRDATA 0 /**< @internal */ + #endif /* U_HIDE_INTERNAL_API */ + +Index: icu/source/common/unicode/uvernum.h +=================================================================== +--- icu.orig/source/common/unicode/uvernum.h ++++ icu/source/common/unicode/uvernum.h +@@ -61,6 +61,7 @@ + * @stable ICU 2.4 + */ + #define U_ICU_VERSION_MAJOR_NUM 65 ++#define U_ICU_VERSION_MAJOR_STR "65" + + /** The current ICU minor version as an integer. + * This value will change in the subsequent releases of ICU +@@ -86,7 +87,9 @@ + * This value will change in the subsequent releases of ICU + * @stable ICU 2.6 + */ +-#define U_ICU_VERSION_SUFFIX _65 ++#define ___icu_version_expand(major, minor) _ ## major ## _ ## minor ++#define ___icu_version_glue(major, minor) ___icu_version_expand(major, minor) ++#define U_ICU_VERSION_SUFFIX ___icu_version_glue(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM) + + /** + * \def U_DEF2_ICU_ENTRY_POINT_RENAME +@@ -152,7 +155,7 @@ + * + * @stable ICU 2.6 + */ +-#define U_ICU_VERSION_SHORT "65" ++#define U_ICU_VERSION_SHORT "65_1" + + #ifndef U_HIDE_INTERNAL_API + /** Data version in ICU4C. +Index: icu/source/config/mh-linux +=================================================================== +--- icu.orig/source/config/mh-linux ++++ icu/source/config/mh-linux +@@ -27,7 +27,7 @@ LDFLAGSICUDT=-nodefaultlibs -nostdlib + + ## Compiler switch to embed a library name + # The initial tab in the next line is to prevent icu-config from reading it. +- LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET)) ++ LD_SONAME = -Wl,-soname -Wl,$(notdir $(FULL_SO_TARGET)) + #SH# # We can't depend on MIDDLE_SO_TARGET being set. + #SH# LD_SONAME= + +Index: icu/source/config/pkgdataMakefile.in +=================================================================== +--- icu.orig/source/config/pkgdataMakefile.in ++++ icu/source/config/pkgdataMakefile.in +@@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk + + OUTPUTFILE=pkgdata.inc + MIDDLE_SO_TARGET= ++FULL_SO_TARGET= + PKGDATA_TRAILING_SPACE=" " + + all : clean +Index: icu/source/data/pkgdataMakefile.in +=================================================================== +--- icu.orig/source/data/pkgdataMakefile.in ++++ icu/source/data/pkgdataMakefile.in +@@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk + + OUTPUTFILE=icupkg.inc + MIDDLE_SO_TARGET= ++FULL_SO_TARGET= + PKGDATA_TRAILING_SPACE=" " + + all : clean +Index: icu/source/extra/uconv/pkgdataMakefile.in +=================================================================== +--- icu.orig/source/extra/uconv/pkgdataMakefile.in ++++ icu/source/extra/uconv/pkgdataMakefile.in +@@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk + + OUTPUTFILE=pkgdata.inc + MIDDLE_SO_TARGET= ++FULL_SO_TARGET= + PKGDATA_TRAILING_SPACE=" " + + all : clean +Index: icu/source/icudefs.mk.in +=================================================================== +--- icu.orig/source/icudefs.mk.in ++++ icu/source/icudefs.mk.in +@@ -202,6 +202,7 @@ LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH + + # Versioned target for a shared library. + FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION) ++FULL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION) + MIDDLE_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION_MAJOR) + SHARED_OBJECT = $(FINAL_SO_TARGET) + +Index: icu/source/test/testdata/pkgdataMakefile.in +=================================================================== +--- icu.orig/source/test/testdata/pkgdataMakefile.in ++++ icu/source/test/testdata/pkgdataMakefile.in +@@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk + + OUTPUTFILE=pkgdata.inc + MIDDLE_SO_TARGET= ++FULL_SO_TARGET= + PKGDATA_TRAILING_SPACE=" " + + all : clean +Index: icu/source/tools/pkgdata/pkgdata.cpp +=================================================================== +--- icu.orig/source/tools/pkgdata/pkgdata.cpp ++++ icu/source/tools/pkgdata/pkgdata.cpp +@@ -1379,7 +1379,7 @@ static int32_t pkg_generateLibraryFile(c + length = static_cast(uprv_strlen(pkgDataFlags[GENLIB]) + uprv_strlen(pkgDataFlags[LDICUDTFLAGS]) + + ((uprv_strlen(targetDir) + uprv_strlen(libFileNames[LIB_FILE_VERSION_TMP])) * 2) + + uprv_strlen(objectFile) + uprv_strlen(pkgDataFlags[LD_SONAME]) + +- uprv_strlen(pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION_MAJOR]) + ++ uprv_strlen(pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION]) + + uprv_strlen(pkgDataFlags[RPATH_FLAGS]) + uprv_strlen(pkgDataFlags[BIR_FLAGS]) + BUFFER_PADDING_SIZE); + #if U_PLATFORM == U_PF_CYGWIN + length += static_cast(uprv_strlen(targetDir) + uprv_strlen(libFileNames[LIB_FILE_CYGWIN_VERSION])); +@@ -1426,7 +1426,7 @@ static int32_t pkg_generateLibraryFile(c + #endif + objectFile, + pkgDataFlags[LD_SONAME], +- pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION_MAJOR], ++ pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION], + pkgDataFlags[RPATH_FLAGS], + pkgDataFlags[BIR_FLAGS]); + diff --git a/icu.changes b/icu.changes new file mode 100644 index 0000000..12bcdd4 --- /dev/null +++ b/icu.changes @@ -0,0 +1,710 @@ +* Fri Aug 12 2022 qzhao@suse.com +- Backport icu-CVE-2020-21913.patch: backport commit 727505bdd + from upstream, use LocalMemory for cmd to prevent use after free + (bsc#1193951 CVE-2020-21913). +* Sun May 31 2020 qzhao@suse.com +- Add the provides for libicu to Make .Net core can install + successfully. (bsc#1167603, bsc#1161007) +* Sat Oct 5 2019 jengelh@inai.de +- Update to release 65.1 (jsc#SLE-11118). + * Updated to CLDR 36 locale data with many additions and + corrections, and some new measurement units. + * The Java LocaleMatcher API is improved, and ported to C++. +- Drop 075cefb2e21f57f4cac1bc2868e93dd1b8c077cc.patch + (merged) +* Wed Aug 21 2019 kukuk@suse.de +- Remove old obsoletes/provides for migration from very old + products, as they break our shared library policy (bsc#1146907). +* Tue May 14 2019 idonmez@suse.com +- Add 075cefb2e21f57f4cac1bc2868e93dd1b8c077cc.patch to fix a + regression with the C.UTF-8 locale + https://unicode-org.atlassian.net/browse/ICU-20575 +* Thu Apr 18 2019 jengelh@inai.de +- Update to new upstream release 64.2 + * This maintenance update for ICU 64 includes draft Unicode + 12.1 update, CLDR 35.1 locale data and support for the new + Japanese era Reiwa (令和). (boo#1112183, bnc#1103893, + FATE#325570, bnc#1103893, fate#325570, fate#325419) +* Mon Apr 1 2019 jengelh@inai.de +- Update to new upstream release 64.1 + * Updates to Unicode 12 and to CLDR 35 locale data with many + additions and corrections, and some new languages. ICU adds a + data filtering/subsetting mechanism, improved formatting API, + and a C++ LocaleBuilder. +- New python3 dependency to build intermediate file + test/testdata/rules.mk. +* Wed Oct 17 2018 idonmez@suse.com +- Update to new upstream release 63.1 + * CLDR 34 + + Segmentation rules and emoji sort order adjusted for + Unicode 11 + + Somali and Javanese data now up to moderate level + (document content) + + Tongan, Konkani, Maori, Dzongkha, Tatar, Kurdish (ku), + and Xhosa data now up to basic level + + Many data additions and corrections in many other + languages + + The following languages have been added to ICU: Sindhi, + Maori, Turkmen, Javanese, Interlingua, Kurdish (ku), Xhosa + * New currency: Venezuela's Bolívar Soberano (VES) + * New Japanese calendar era from 2019: CLDR and ICU include + data for testing that can be enabled. + (ICU #12973, CLDR #10750) + * To enable CLDR new Japanese era placeholder name, set + environment variable (and Java system property for ICU4J) + ICU_ENABLE_TENTATIVE_ERA=true. + * New API for number and currency range formatting + (class NumberRangeFormatter, #11276) + * Support for additional Unicode properties: + Indic_Positional_Category & Indic_Syllabic_Category (#8966) + and Vertical_Orientation (#12850) + * New API for code point maps and tries, mapping Unicode + code points (U+0000..U+10FFFF) to integer values. (#13530) + * Java classes CodePointMap, CodePointTrie, MutableCodePointTrie + * C types UCPMap, UCPTrie, UMutableCPTrie + * New API for getting a UnicodeSet per binary property and a code + point map per enumerated/int-value property. (#20086) + * Full conformance with UAX #14 Line Breaking + (required BreakIterator feature work). (#7270) + * C++ Locale class + + Additional functions forLanguageTag()/toLanguageTag(), + and functions that are easier and safer to use by using + StringPiece and ByteSink rather than raw buffers. (#13417) + + Move semantics. (#13645) + * Various Out-Of-Memory (OOM) issues have been fixed. +- Refresh icu-versioning.diff +* Sun Jul 29 2018 jengelh@inai.de +- Update to new upstream release 62.1 + * Unicode 11: 684 new characters, including 7 new scripts, + Mtavruli Georgian capital letters, 5 new Han characters, and + 66 new emoji characters. + * CLDR 33.1 + * Under-the-hood overhaul of number parsing. Behavior is mostly + compatible with previous versions, but there are some known + differences. +- Remove xlocale.patch (code to patch is gone), + icu-number-grouping.diff (merged upstream) +* Mon Jun 4 2018 jengelh@inai.de +- Add icu-susevers.diff and disable UTF-8 assumption + [boo#1095425] +* Wed Apr 4 2018 jengelh@inai.de +- Update to new upstream release 61.1 + * ICU 61 upgrades to CLDR 33 locale data. +- Add icu-number-grouping.diff +* Tue Dec 26 2017 jengelh@inai.de +- Drop dangling symlinks /usr/lib64/icu/*.inc +* Thu Dec 14 2017 jengelh@inai.de +- Update to new upstream release 60.2 + * ICU 60 provides full support for the Unicode 10.0 release + with many new characters and many property improvements. + Locale data is updated to CLDR 32, which adds several + languages and data improvements. A new number formatting API + has been added. +* Wed Aug 2 2017 jengelh@inai.de +- refresh icu-avoid-x87-excess-precision.diff with p1 +* Wed Jul 5 2017 schwab@suse.de +- xlocale.patch: don't use obsolete +* Wed May 17 2017 rguenther@suse.com +- Add icu-avoid-x87-excess-precision.diff to avoid + FixedPrecision::initVisibleDigits failure on i586 with GCC 7. + (bnc#1030253) +* Thu Apr 27 2017 jengelh@inai.de +- Update to new upstream release 59.1 + * Emoji 5.0 data + * CLDR 31.0.1 + * * GMT and UTC are no longer unified, and CLDR provides + distinct UTC display names, avoiding confusion with standard + (winter) time in Britain. + * New case mapping API (C++ & Java classes CaseMap) supports + styled text + * ICU4C now uses and requires C++11 language features and + libraries. + * ICU4C has also moved to char16_t as the type for UTF-16. This + is a breaking change. Please see the detail section below. +* Sat Dec 10 2016 idonmez@suse.com +- Update to new upstream release 58.2 + * CLDR 30.0.3: + + Fix incorrect data for number of Cantonese speakers in China. + + Hani_Latn transform was not updated with Unihan 9.0 kMandarin + readings. + * Time zone database version 2016j + * #12815 uspoof_getSkeleton sets backwards-incompatible illegal + argument exception + * #12825 uspoof_check goes into an "infinite loop" when U+30FB + is in an input string + * #12832 GreekUpper::toUpper skips the final character on a + non-terminated UTF-8 string + * #12849 u_strToTitle returns incorrect length if destination + is NULL +* Fri Oct 21 2016 jengelh@inai.de +- Update to new upstream release 58.1 + * CLDR 30.0.2: For details of the many changes in CLDR, see + CLDR 30. Some things to note: + * For some combinations of numbering system (arab, arabext, latn) + and/or locale (ar, fa, he), there were changes to the + bidirectional control characters used with certain symbols + (percent, minus, plus), and changes to number patterns (currency + and/or percent, including addition of bidirectional control + characters in some cases). + * Thhe bidirectional controls used for such purposes include U+061C + ARABIC LETTER MARK (ALM), which requires use of the bidirectional + algorithm from Unicode 6.3 or later. + * The time separator for Norwegian locales (nb, nn) was changed to + be ':' throughout. + * Unicode 9.0: Version 9.0 adds exactly 7,500 characters, for a + total of 128,172 characters. These additions include six new + scripts, 19 symbols for the new 4K TV standard, and 72 new + emoji characters. + * Draft Emoji 4.0 data + * Emoji updates for word & line breaking + * UBiDiTransform/BidiTransform API for convenient transformation of + text between different Bidi layouts. + * MeasureFormat API for measurement unit display names + * Most COUNT and LIMIT enum constants have been deprecated + * SpoofChecker: Handling of "whole script confusables" has been + removed from ICU, in accordance with its removal from UTS #39 + Version 9.0.0 and the removal of the corresponding Unicode data + file. + * Greek uppercasing ("el" locale ID) removes most diacritics. + * More robust locale data loading across ICU implementation code. + * Reduced heap memory usage in DateTimePatternGenerator +* Fri Mar 25 2016 jengelh@inai.de +- Update to new upstream release 57.1 + * CLDR 29 support + * Grapheme/word/line breaking for emoji sequences, based on + Unicode 9 proposed rules. + * Four new Unicode emoji properties + * DateFormat day period formatting of "noon", "at night", etc. via + new pattern characters b & B, and DateTimePatternGenerator + support of C for selecting the customary form. + * RelativeDateTimeFormatter: Simpler formatting API. + * New simple & fast SimpleFormatter class for a trivial subset of + MessageFormat as used in CLDR data. +* Fri Oct 9 2015 jengelh@inai.de +- Update to new upstream release 56.1 + * CLDR 28: For details of the many changes in CLDR, see CLDR 28. + * Unicode data updated to Unicode 8.0: 41 new emoji characters, + 5,771 new ideographs for Chinese/Japanese/Korean, 6 new scripts, + improved character properties data, etc. + * ICU data size reduced by about 7.2%% (1.8MB) via sharing string + values across resource bundles. + * DateIntervalFormat now handles intervals with seconds, and sets + FieldPosition more consistently. + * DateFormat::createInstanceForSkeleton() caches DateFormat + patterns rather than DateTimePatternGenerator instances, for + better performance (for cache hits) and lower heap memory + consumption. + * StringSearch (based on collation) defaults to matches on + normalization boundaries rather than grapheme cluster boundaries, + which yields more matches on Indic text. + * RuleBasedNumberFormat (spelled-out numbers) now handles + infinity, NaN. + * Most of the old Normalizer/unorm.h had been replaced by + (and reimplemented via) Normalizer2, and is now deprecated. + * COLON has been withdrawn as a date pattern character + corresponding to the date field [UDAT_]TIME_SEPARATOR_FIELD; + there is currently no pattern character corresponding to that + field. + * Support for locale key "cf" to specify currency format style, + and interaction with NumberFormat values for UNumberFormatStyle. +- Drop icu-remove-datetime.patch (merged upstream) +* Tue Apr 28 2015 tchvatal@suse.com +- Update baselibs.conf +* Tue Apr 28 2015 tchvatal@suse.com +- Version bump to latest release 55.1: + * support of CLDR 27 (with a major cleanup of region locales, among many + other improvements), formatting for scientific notation ("1.2 × 10³") + * update to Unicode 7.0 data for spoof-checking + * Various performance enhancements + * Full upstream changelog: + http://site.icu-project.org/download/55 +- Refresh the soname versioning patch: + * icu-versioning.diff +* Sat Oct 11 2014 jengelh@inai.de +- Update to new upstream release 54.1 + * Unicode 7.0: Unicode 7.0 adds a total of 2,834 characters, + encompassing 23 new scripts, two currency symbols (manat & + ruble), many new pictographic and geometric symbols, and + character additions to many existing scripts. + * CLDR 26: 77 languages with 100%% modern coverage, more & improved + data, many more measurement units. +- Remove icu-rpmlint.diff (solved differently upstream), + icu-fix-tests-depending-on-date.patch (solved differently + upstream, also take note of + http://bugs.icu-project.org/trac/ticket/10937 it may need to be + reinstated) +* Mon Sep 8 2014 schwab@suse.de +- Add m68k to the list of big endian archs +* Wed Aug 13 2014 jengelh@inai.de +- Build both B and L-type endianess variants of icudt53.dat so that + icu-data really is arch-independent again +- Add icu-error-reporting.diff +* Tue Jul 29 2014 coolo@suse.com +- add baselibs.conf as source +* Mon Jun 16 2014 coolo@suse.com +- add icu-fix-tests-depending-on-date.patch to fix build + see http://sourceforge.net/p/icu/mailman/message/32443311/ +* Tue Jun 3 2014 tchvatal@suse.com +- Ensure we escape the find %%f properly. +* Tue Jun 3 2014 tchvatal@suse.com +- Version bump to 53.1: + * Data from the CLDR 25 release: Many bug fixes + * Time zone data: 2014b, including post CLDR 25 time zone data + update to CLDR. + * U+20BD Ruble Sign added (from Unicode 7.0, otherwise ICU 53 + still uses Unicode 6.3) + * Collation code re-implemented + * ICU4C now requires compilers with C99 support + * Updated Spoof Checker for Unicode Security Standard version + 6.3. (#10706) + * many more see http://site.icu-project.org/download/53 +* Tue Jun 3 2014 tchvatal@suse.com +- Clean up with spec-cleaner and remove some obsolete provide/obsolete +- Use official download tarballs instead of repacks +* Mon Apr 7 2014 schwab@suse.de +- Use a glob to avoid architecture dependent file list +* Fri Mar 7 2014 ro@suse.de +- s390 is big endian as well +* Tue Nov 12 2013 jengelh@inai.de +- Update to new upstream release 52.1 + * Unicode 6.3: New bidi control codes, new Bidi_Class property + values, two new bidi "bracket" properties; for other property + value changes see the UAX #44 summary. + * CLDR 24: Improved coverage for top 70+ languages, fractional + plural rules and forms, many new measurement units, major + simplification of collation rule syntax, preliminary version of + European Ordering Rules, new relative fields. + * New API for converting between Windows time zone ID and IANA tz + database ID. + * Implement support for plurals that depend on displayed fractional + values +* Mon Jul 29 2013 dvaleev@suse.com +- make filelist depend on architecture + icudt51b.dat - on BigEndian platforms + icudt51l.dat - on LittleEndian +* Tue Jul 23 2013 jengelh@inai.de +- Add missing symlinks and update description in icu-versioning.diff +* Sun Jul 14 2013 jengelh@inai.de +- Change icu-versioning.diff: Resolve libqt4 emitting a warning + that it cannot dlopen libicui18n.so +- Build I18N data as a plain file rather than as an arch-dependent + huge shared library +- Add icu-fix-install-mode-files.diff +* Sat Jun 15 2013 jengelh@inai.de +- Add icu-versioning.diff: + Treat each minor release as a new SONAME (bnc#824262) +* Wed Jun 5 2013 jengelh@inai.de +- Update to new upstream release 51.2 + * Common Locale Data Repository (CLDR) 23.1 + * Time zone database version 2013c + * Security fixes for font layout and glyph table errors. NOTE: + Applications must implement + LEFontInstance::getFontTable(LETag, size_t &length) in their + LEFontInstance subclasses, so that ICU can properly bounds-check + font tables. +* Mon May 6 2013 jengelh@inai.de +- Update RPM group, description, URL +* Tue Mar 26 2013 jengelh@inai.de +- Update to new upstream release 51 + * Collation tailorings put native script first; + non-Gregorian calendar formats are more consistent; + * Date format/parse now supports CLDR short weekday names + * Support DisplayContext for date formatting, locale display names + * Support new timezone pattern characters in LDML spec + * Support for “dangi” Korean luni-solar calendar + * Add CompactDecimalFormat and TerritoryContainment APIs + * ICU50 regression fix: Affixes set with e.g. + DecimalFormat::setPositivePrefix were ignored for parse + * ICU50 regression fix: UNUM_PARSE_INT_ONLY no longer handled + grouping separator +- Recompress to xz to save space +* Fri Jan 25 2013 cfarrell@suse.com +- license update: X11 + official spdx.org license list now contains an entry for X11 +* Sat Jan 19 2013 idonmez@suse.com +- Update to version 50.1.2 + * Fix an ABI regression introduced in 50.1, icu bug#9826 +* Wed Nov 14 2012 jengelh@inai.de +- Update to new upstream release 50 + * Unicode 6.2: Turkish Lira Sign, improved word & line segmentation + (BreakIterator) for symbols + * CLDR 22.1: Data coverage & quality improved across all major + languages; new short width type for weekday names; new zhuyin + (Bopomofo) collation for Chinese; improved data for + CompactDecimalFormat & RBNF + * Time zone data: 2012h + * Ordinal-number support in MessageFormat & PluralRules + * Deprecate setLocale(locale) in PluralFormat + * Dictionary-based break iterators (word segmentation) +* Wed Jul 11 2012 jengelh@inai.de +- Remove SuSEconfig.icu; only run the link updater on icu updates + (FATE#313539) +* Wed Jun 13 2012 cfarrell@suse.com +- license update: SUSE-XFree86-1.0 + The license (as stated in the license.html page) is not upstream at + http://www.spdx.org/licenses yet - thus, use this version (with SUSE- + proprietary prefix until the license goes upstream) +* Tue Apr 10 2012 cfarrell@suse.com +- license update: MIT and SUSE-Public-Domain + This is _not_ IBM Public License code. +* Tue Apr 3 2012 jengelh@medozas.de +- Update to new upstream release 49.1: + * Unicode 6.1: New scripts & blocks; changes to grapheme break & + line break property values; some characters change from symbol to + Po or No; etc. + * CLDR 21.0.1: Changes in segmentation data to match Unicode 6.1; + new structures for support of Chinese calendar, for + context-dependent capitalization, for gender of lists of people, + for ordinal categories, and for multiple number systems per + locale; deprecation of "commonlyUsed" element in timezone names; + removal of "whole-locale" aliases; major cleanups of timezone + names, delimiter data, abbreviated number data. + * Support for ISO 4217 numeric currency code + * See http://site.icu-project.org/download/49 for more +* Sat Feb 25 2012 jengelh@medozas.de +- Use shlib policy for icu package +- Use proper data directory in CXXFLAGS +* Wed Jan 18 2012 vuntz@opensuse.org +- Update to version 4.8.1.1: + + Time zone database version 2011k + + Several bug fixes. +- Changes from version 4.8.1: + + Common Locale Data Repository (CLDR) 2.0.1 + + Time zone database version 2011h + + Several bug fixes. +- Changes from version 4.8.0: + + Common Changes: + - CLDR 2.0: The CLDR 2.0 release contains numerous improvements + and bug fixes approved by the CLDR committee, including much + additional data for many languages. + - Explicit parent locale support in data imported from CLDR + - MessageFormat and related classes (choice/plural/select) have + been reimplemented, with several improvements and some + incompatible changes. + - Extended PluralFormat pattern syntax supports explicit-value + forms and offsets. + - Utility APIs in PluralRules (get some/all/unique keyword + values) + - Time zone API to return a list of available canonical system + time zone IDs + - Time zone API to return a region + - Collation: Full implementation & public API for script + reordering + - Dictionary-type trie + - GB18030-2005 update + + ICU4C Specific Changes: + - Alphabetic Index support ported from ICU4J + - X11 Compound Text encoding support ported from ICU4J + - Appendable interface +- Add unzip BuildRequires to handle .zip source file. +- Change the way we unpack the docs zip file: we need to create the + html subdirectory first, so we don't unpack via %%setup but with + an explicit call to unzip. +* Sat Dec 24 2011 vuntz@opensuse.org +- Remove call to suse_update_config, and stop removing + config.cache. +* Thu Dec 22 2011 vuntz@opensuse.org +- Add automake BuildRequires that was implicit before, to fix + build. +* Wed Oct 12 2011 vuntz@opensuse.org +- Drop pkgdata.diff: everything leads me to think this is not + needed anymore. Debian doesn't ship this patch with its 4.4 + version of ICU. This patch was just a workaround in the first + place anyway. +* Tue Oct 11 2011 dmueller@suse.de +- Disable "make check" when run under qemu. +* Tue Aug 2 2011 idonmez@novell.com +- Enable strict-aliasing again since the code seems to be fixed. +- Enable make check inside %%check. +- Cleanup the spec file with spec-cleaner. +* Thu May 5 2011 vuntz@opensuse.org +- Update to version 4.6.1: + + Common Locale Data Repository (CLDR) 1.9.1 + + Update timezone data support to Olson 2011c + + Fix: UCOL_RUNTIME_VERSION should be updated for 4.6 + + Fix: Collation Reordering Use Of USCRIPT_UNKNOWN + + Fix: Can't find Hangul with search coll (usearch doesn't handle + CE iter behavior) + + Fix: ULocale#toLanguageTag() should not supply "und" as + language when the locale has only private use + + Fix: USpoof uses NFKD, should be NFD + + ICU4C-specific bug fixes, including: + - ICU misparses numbers in scientific notation + - detect out of memory issue for Hashtable in low memory + situations +- Changes from version 4.6.0: + + Unicode 6.0: + - Supports final version of Unicode 6.0 + - New UCA data for collation/sorting, with refinements from + CLDR; this data is revamped for more effective use of + collation weights, and noncharacters are now handled + - Support for 2,088 new characters, including the new emoji and + Indian Rupee sign + - Fully updated properties + + CLDR 1.9: + - Supports final version of CLDR 1.9 + - The CLDR release contains numerous improvements and bug fixes + approved by the CLDR committee, mainly in the areas of + collation sequences, transliteration, and available date + formats. + + Support for UTS #46 Unicode IDNA Compatibility Processing. + + Alternate number symbols based on numbering system. + + Compact collation tailoring syntax for reduced memory and disk + footprint. + + New collation [import] rule for reduced footprint and improved + maintenance. + + Fast string BiDi direction detection. + + ICU4C-specific changes: + - ICU 4.6 requires compiler RTTI to be turned on. Please see + the ICU4C readme for more details. + - pkg-config files for a standard way of linking against ICU. + - Promotion to @draft (from @internal) for most regex functions + that provide access via UText. + - Regex support for a "find progress" callback. + - Enhance regex APIs to support full 64-bit offsets and + indices. + - New regex API to set match and start position independently. +- Update icu-remove-datetime.patch to apply without fuzz. +- Rebase icu44-rpmlint.diff. +- Add pkg-config BuildRequires to automatically get + pkgconfig()-style Provides. +* Fri Jan 14 2011 vuntz@opensuse.org +- Update to version 4.4.2: + + Common Changes: + - Update LMBCS mapping table + - Time zone data 2010l + + ICU4C Specific Changes: + - Fix: Difference between Java and C implementation with + exponent characters + - Fix: u_fflush (and thus u_fclose) not flushing stateful + converter + - Fix: unum_parseInt64 is not giving proper error + - Fix: Missing header files in Windows build +* Thu Jul 8 2010 jengelh@medozas.de +- Update to version 4.4.1 + + Common Changes + - Common Locale Data Repository (CLDR) 1.8.1 + - Enabled non-Gregorian calendars in DateIntervalFormat +- Changes from version 4.4: + + Common Changes + - Unicode 5.2 support. + - CLDR 1.8 data - over 22%% more data, with many new locales. + - Normalizer2 - for fast, flexible normalization, paving the + way for UTS #46 support of international domain names. + - Optimized resource bundle format to reduce the ICU resource + bundle installation footprint. + - Hebrew calendar month numbering improvement. + - Finer granular ICU locale resource data packaging. + - SelectFormat - for selecting a translation by a keyword among + multiple alternatives when formatting messages. + - Flexible hour pattern handling in DateFormatPatternGenerator. + - Updated LMBCS converter implementation. + - EBCDIC converter enhancement for supporting various SI/SO + codes used by non-IBM mainframes. + - 64bit time zone transition data support. + + ICU4C Specific Changes + - Regular Expressions support UText - allowing regular + expressions to work on large or discontiguous text + (Technology Preview). + - DecimalFormat support for big decimal numbers. + - ICU Plug-ins - for packaging a specific ICU servce as plug-in + and calling different versions of plug-ins in a same + environment (Technology Preview). + - C++ public smart pointers. + - Java modified UTF-8 support. + - Improved UnicodeString substring operations. + - New usearch options to control matching of collation elements +- Use %%_smp_mflags +- Add icu44-rpmlint.diff to fix some build errors. +- Add pkgdata.diff to help build on some architecture, see + http://bugs.icu-project.org/trac/ticket/6969#comment:19. +* Tue Apr 20 2010 crrodriguez@opensuse.org +- In JeOS, libicu is installed by default but it should + require timezone package to fullfill all dependencies. +* Tue May 26 2009 vuntz@novell.com +- Drop icu4c-3_6-src-setBreakType-public.diff: it's not needed + anymore for OOo. +* Sat May 23 2009 vuntz@novell.com +- Update to 4.2: + + Locale Data: ICU uses and supports data from Common Locale Data + Repository (CLDR) 1.7 , which includes data for 146 languages, + 159 territories, 468 locales- 21%% more locale data than the + previous release. + + Number system support and the number keyword. + + Number system override in DateFormat. + + Numerics used by Hebrew Calendar date in Hebrew locale. + + BCP47 (language tag) / Locale transformation. + + BCP47 mapping of LDML keywords. + + Encoding selector: Return a list of charsets that can handle + the input text. + + Simple duration: Implementation of CLDR duration format. + + Available/Preferred keywords for a locale (Calendar, Collation, + and Currency). + + StringPrep standard profiles: RFC3491 NAMEPREP, RFC3530 NFS4, + RFC3722 iSCSI, RFC3920 NodePrep/ResourcePrep, RFC4011 MIB, + RFC4013 SASLprep, RFC4505 trace and RFC4518 LDAPprep. + + Miscellaneous Arabic shaping enhancements. + + UTF-8 friendly internal data structure for Unicode data lookup. + + API to get CLDR version used by ICU. + + ISCII charset converter updates (added Gurumukhi, other + updates). + + Performance improvements in Time Zone Name format/parse, and in + DateIntervalFormat construction. +- Remove AutoReqProv: it's default now. +- Drop icu-gcc44.patch: fixed upstream. +- Do not package packaging doc in libicu-doc. +* Fri Mar 27 2009 vuntz@novell.com +- Add icu-remove-datetime.patch to be more build-compare friendly. +* Mon Mar 2 2009 crrodriguez@suse.de +- fix build with GCC 4.4 +- remove static libraries +* Wed Dec 10 2008 olh@suse.de +- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade + (bnc#437293) +* Thu Oct 30 2008 olh@suse.de +- obsolete old -XXbit packages (bnc#437293) +* Sat Sep 13 2008 vuntz@novell.com +- Merge with openSUSE:Factory. Redo the patch tags that were done + by jpr@novell.com +* Fri Sep 5 2008 maw@suse.de +- Update to version 4.0: + (All of the bug numbers listed are against + http://bugs.icu-project.org/trac) + + Update to Unicode 5.1 (#5696) + + Locale Data: ICU uses and supports data from Common Locale Data + Repository (CLDR) 1.6, which includes many improvements in + quality and quantity of data + + Add/removeLikelySubtags (#6124) + + Charset converter file size improvement (#5987) + + Date Interval Formatting (#6157) Note: Calendar type supported + by this feature is Gregorian only in this release + + Improved Plural support + + Additional calendars: Chinese (#4081) and Coptic/Ethiopic + (#4571) + + Security fixes for CVE-2007-4770, CVE-2007-4771, and + CVE-2008-1036. +- Drop libicu-regex.patch, which has been upstreamed. +* Thu Apr 10 2008 ro@suse.de +- added baselibs.conf file to build xxbit packages + for multilib support +* Wed Feb 13 2008 maw@suse.de +- Update to version 3.8: + + Locale Data: ICU uses and supports data from Common Locale Data + Repository (CLDR) 1.5.0.1, which includes many improvements in + quality and quantity of data. + + Rule Based Time Zone: This set of classes provides the ability + to read and write time zone data in RFC2445 VTIMEZONE format. + This also provides access Olson timezone transitions. + + Timezone Formatting: This has changed to give more human + readable results. + + Relative Date/Time Formatting: A draft of the relative date/time + format class has been added. This functionality can be accessed + through the DateFormat::createDateInstance or DateFormat.getInstance + factory method. It provides the ability to format localized dates + in terms of "yesterday", "today" and "tomorrow", instead of a + specific only date or time. + + Demonstrations and Tools + * ICU Data Library Customizer: This new online tool provides an + easier way customize ICU's data. + * ICU4J Demonstrations: These will demonstrate some features of + ICU4J, like calendars, transliteration, and several other + features. + + Flexible Date/Time Formatting: A draft of flexible date/time + format generator has been added. This allows multiple date and + time format patterns to be generated that are valid for specific + locales. This funtionality can be accessed through the + DateTimePatternGenerator API. + + Time Zones: The default time zone is detected more accurately + on Unix machines. + + Additional Calendars + * @calendar=taiwan: This calendar is a variant of the Gregorian + calendar used in Taiwan. + * @calendar=indian: This is the Indian national calendar. + * @calendar=persian: This is the Persian calendar. It is also + known as the Jalāli Calendar. It is used in several Arabic + countries. + + UnicodeSet + * The Freezable design pattern is now supported, which can + improve performance for the contains() and span() methods + on frozen UnicodeSet objects. + * A span function was added for iterating through strings. + * The containsAll(string) and containsNone(string) now support + set strings, instead of only codepoints. + + Performance + * Charset conversion performance has been enhanced. The + amount of improvement varies depending on the converter + being used and platform being used. + * Rule based transliterator construction performance has been + improved. +- s#%%run_ldconfig#/sbin/ldconfig# in libicu's %%post and %%postun +- add libicu-regex.patch (bnc#354372). +* Thu Feb 7 2008 pmladek@suse.cz +- made RuleBasedBreakIterator::setBreakType method pubclic; it was requested by + OpenOffice_org >= 2.3.1, see http://bugs.icu-project.org/trac/ticket/5498 +* Wed Jul 25 2007 pmladek@suse.cz +- Updated to version 3.6 + * supports Unicode 5.0 + * supports data from Common Locale Data Repository (CLDR) 1.4 + * charset detection framework was added + * font layout engine has support added for Tibetan, Sinhala and Old Hangul + * BiDi algorithm was enhanced to be more flexible and efficient + * new icupkg tool provides an easier way to manage ICU's data library + * time zone data is modularized to allow easier building and updating of + the data + * BreakIterator uses UText for abstract text processing + * 64-bit indexing is now used to allow access to larger chunks of text + * added API for read-only locking for security and robustness + * lots performance improvements +* Mon Feb 13 2006 olh@suse.de +- mark libraries as executable to extract debuginfo +* Wed Jan 25 2006 mls@suse.de +- converted neededforbuild to BuildRequires +* Wed Aug 3 2005 sbrabec@suse.cz +- Updated to version 3.4. +* Mon Mar 28 2005 gekker@suse.de +- Move icu-config to libicu-devel package (8030). +* Mon Jan 10 2005 sbrabec@suse.cz +- Updated to version 3.2 (#49578). + Updated by Robert Schiele . +- Added -fno-strict-aliasing. +* Fri Nov 19 2004 ro@suse.de +- ignore return-code from strip call +* Tue May 25 2004 clahey@suse.de +- Removed --with-data-packaging=files. Fixes gtk-sharp compilation. +* Mon May 24 2004 clahey@suse.de +- Updated to 2.6.2. +* Wed Mar 31 2004 mfabian@suse.de +- Bugzilla #37029: "strip --strip-debug" static libraries to save + space on the CDs. +* Fri Jan 23 2004 uli@suse.de +- removed --disable-rpath; it is unnecessary and breaks the + icu-config script +* Sat Jan 10 2004 adrian@suse.de +- add %%run_ldconfig +* Tue Sep 23 2003 mfabian@suse.de +- Bugzilla #31665: "SuSEconfig.icu is not lib64 clean" fixed. +* Mon Aug 18 2003 mfabian@suse.de +- update to 2.6. +* Mon Jun 16 2003 mfabian@suse.de +- fix "directory not owned by any package". +* Fri May 16 2003 mfabian@suse.de +- fix file list, remove CVS directories. +* Wed Sep 11 2002 mfabian@suse.de +- /usr/sbin/gencnval is now in /usr/bin/gencnval. + Fix SuSEconfig.icu accordingly. +* Fri Aug 16 2002 mfabian@suse.de +- update to 2.2 +* Sun Aug 11 2002 mfabian@suse.de +- add Provides: libicu17 to libicu21 subpackage + (to trigger the selection of the new package during update.) +* Fri Aug 9 2002 mfabian@suse.de +- update to 2.1 +* Tue Mar 12 2002 mfabian@suse.de +- use %%{_libdir} +* Tue Mar 12 2002 kukuk@suse.de +- Fix most wrong directories in filelist +* Mon Feb 11 2002 ro@suse.de +- tar option for bz2 is "j" +* Wed Mar 7 2001 mfabian@suse.de +- new package: icu 1.7 +- package names as described in PACKAGING diff --git a/icu.keyring b/icu.keyring new file mode 100644 index 0000000..d24cf03 --- /dev/null +++ b/icu.keyring @@ -0,0 +1,349 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +PE6VogAHAw== +=CVqI +-----END PGP PUBLIC KEY BLOCK----- diff --git a/icu.spec b/icu.spec new file mode 100644 index 0000000..157a380 --- /dev/null +++ b/icu.spec @@ -0,0 +1,293 @@ +# +# spec file for package icu +# +# Copyright (c) 2022-2023 ZhuningOS +# + + +%define lname libicu-suse65_1 +%define amajor 65 +%define aversion 65_1 +%ifarch %armb hppa mips mips64 ppc ppc64 %sparc s390 s390x m68k +%define be_platform 1 +%else +%define be_platform 0 +%endif +# icu-versioning.diff needs update for new Version too +Name: icu +Version: 65.1 +Release: 150200.4.8.1 +Summary: International Components for Unicode +License: ICU +Group: Development/Libraries/C and C++ +URL: http://icu-project.org/ + +#Git-Clone: https://github.com/unicode-org/icu.git +Source: https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-src.tgz +Source2: https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-src.tgz.asc +Source3: https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-docs.zip +Source4: https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-docs.zip.asc +Source5: %name.keyring +Source100: baselibs.conf +Patch2: icu-versioning.diff +Patch3: icu-susevers.diff +Patch4: icu-fix-install-mode-files.diff +Patch6: icu-error-reporting.diff +Patch7: icu-avoid-x87-excess-precision.diff +# PATCH-FIX-UPSTREAM icu-CVE-2020-21913.patch bsc#1193951 CVE-2020-21913 qzhao@suse.com -- Backport commit 727505bdd from upstream, use LocalMemory for cmd to prevent use after free. +Patch8: icu-CVE-2020-21913.patch +BuildRequires: fdupes +BuildRequires: gcc-c++ +BuildRequires: pkg-config +BuildRequires: python3-base +BuildRequires: unzip +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +ICU is a set of C and C++ libraries that provide extensive Unicode and locale +support, such as calendar, conversions for many character sets, language +sensitive collation, date and time formatting, support for many locales, +message catalogs and resources, message formatting, normalization, number and +currency formatting, time zone support, transliteration, and word, line, and +sentence breaking. + +This subpackage contains the runtime programs for interacting with ICU. + +%package -n %lname +Summary: International Components for Unicode +Group: System/Libraries +Requires: timezone +Provides: libicu = %version +%if %be_platform +Requires: libicu%aversion-bedata = %version +%else +Requires: libicu%aversion-ledata = %version +%endif + +%description -n %lname +ICU is a set of C and C++ libraries that provide extensive Unicode +and locale support. +This package contains the runtime libraries for ICU. + +%package -n libicu%aversion-bedata +Summary: Rule databases and tables for ICU +Group: System/Libraries +%if 0%{?suse_version} >= 1210 +BuildArch: noarch +%endif + +%description -n libicu%aversion-bedata +ICU is a set of C and C++ libraries that provide extensive Unicode +and locale support. + +ICU makes use of a wide variety of data tables to provide many of its +services: converter mapping tables, collation rules, transliteration +rules, break iterator rules and dictionaries. + +This subpackage contains these data tables, in big-endian format. + +%package -n libicu%aversion-ledata +Summary: Rule databases and tables for ICU +Group: System/Libraries +%if 0%{?suse_version} >= 1210 +BuildArch: noarch +%endif + +%description -n libicu%aversion-ledata +ICU is a set of C and C++ libraries that provide extensive Unicode +and locale support. + +ICU makes use of a wide variety of data tables to provide many of its +services: converter mapping tables, collation rules, transliteration +rules, break iterator rules and dictionaries. + +This subpackage contains these data tables, in little-endian format. + +%package -n libicu-devel +Summary: Development files for the ICU library +Group: Development/Libraries/C and C++ +Requires: %lname = %version + +%description -n libicu-devel +ICU is a set of C and C++ libraries that provide extensive Unicode +and locale support. +This package contains the headers for ICU. + +%package -n libicu-doc +Summary: Documentation for the ICU library +Group: Documentation/HTML + +%description -n libicu-doc +ICU is a set of C and C++ libraries that provide extensive Unicode +and locale support. +This package contains the HTML documentation. + +%prep +%setup -qn icu +%autopatch -p1 +# docs are special +mkdir html +pushd html/ +unzip %SOURCE3 +popd + +%build +cd source +mkdir -p data/out/tmp # build procedure forgets to do this on its own +export CXXFLAGS="%optflags -DICU_DATA_DIR=\\\"%_datadir/icu/%version/\\\"" +export CFLAGS="$CXXFLAGS" +%configure \ + --disable-static \ + --enable-shared \ + --disable-samples \ + --with-data-packaging=archive +make %{?_smp_mflags} VERBOSE=1 +# Build the other endianess, too. +pushd data/ +%if %be_platform +cp in/icudt%{amajor}l.dat out/ +%else +LD_LIBRARY_PATH="../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH" \ + ../bin/icupkg -tb in/icudt%{amajor}l.dat out/icudt%{amajor}b.dat +! cmp in/icudt%{amajor}l.dat out/icudt%{amajor}b.dat +%endif +popd + +%install +mkdir -p "%buildroot/%_docdir/%name" +cp -a html "%buildroot/%_docdir/%name/" +cp -a license.html readme.html "%buildroot/%_docdir/%name/" + +find . -name CVS -type d -exec rm -Rf "{}" "+" +cd source + +make DESTDIR="%buildroot" install %{?_smp_mflags} +cp data/out/icudt*.dat "%buildroot/%_datadir/icu/%version/" + +# +# ICU's "pkgdata" utility is really fragile, so icu-versioning.diff +# does as few actions as possible, but that means we need some additional +# cleanup in the spec file now. +# +pushd "%buildroot/%_libdir/" +for i in *.so.[0-9]*; do + echo "Looking at $i" + if [ "${i##*.so.}" != "%version" ]; then + rm -fv "$i" + continue + fi + # Because U_ICU_VERSION_SHORT is "51_2" and not "51.2", + # create some symlinks. + ln -s "$i" "${i%%%version}%aversion" +done +popd + +# /usr/lib/rpm/elfdeps requires +x bit and not all files had it at one point. +# - OpenBSD for example is known to have patched their libtool program +# to kill the x bit on install :( +chmod a+rx "%buildroot/%_libdir"/lib*.so.* + +# install uncompiled source data: +mkdir -p "%buildroot/%_datadir/icu/%version/unidata" +install -m 644 data/unidata/*.txt "%buildroot/%_datadir/icu/%version/unidata" +ln -s unidata/UnicodeData.txt "%buildroot/%_datadir/icu/%version/" + +rm "%buildroot/%_datadir/icu/%version/install-sh" +# Seems unused +rm -Rf "%buildroot/%_datadir/icu/%version/unidata/" \ + "%buildroot/%_datadir/icu/%version/UnicodeData.txt" \ + "%buildroot/%_libdir/icu/current" \ + "%buildroot/%_libdir/icu/Makefile.inc" \ + "%buildroot/%_libdir/icu/pkgdata.inc" + +%fdupes %buildroot/%_prefix + +%check +# s390x see: https://ssl.icu-project.org/trac/ticket/13095 +cd source +%if !0%{?qemu_user_space_build:1} +# Checks disabled in qemu because of races happening when we emulate +# multi-threaded programs, and some check tests atomic instructions in +# multi-threaded icu invocations +ICU_DATA="%buildroot/%_datadir/icu/%version" make check %{?_smp_mflags} VERBOSE=1 +%endif + +%post +# This should be run by whatever owns /usr/lib64/icu - +# the (main) package in this case +if test -d "%_libdir/icu"; then + current=$(cd "%_libdir/icu/"; find [0-9]* -maxdepth 1 -type d -printf '%%f\n' | + sort -V | tail -n1) + if test -n "$current"; then + rm -f "%_libdir/icu/current" + ln -sv "$current" "%_libdir/icu/current" + fi +fi + +%postun +if test -d "%_libdir/icu"; then + current=$(cd "%_libdir/icu/"; find [0-9]* -maxdepth 1 -type d -printf '%%f\n' | + sort -V | tail -n1) + if test -n "$current"; then + rm -f "%_libdir/icu/current" + ln -sv "$current" "%_libdir/icu/current" + fi +fi + +%post -n %lname -p /sbin/ldconfig +%postun -n %lname -p /sbin/ldconfig + +%files +%defattr(-,root,root) +%_bindir/derb +%_bindir/gen* +%_bindir/icuinfo +%_bindir/makeconv +%_bindir/pkgdata +%_bindir/uconv +%_sbindir/* +%_mandir/man*/* +%dir %_datadir/icu +%dir %_datadir/icu/%version +%_datadir/icu/%version/LICENSE +%dir %_docdir/%name/ +%_docdir/%name/license.html +%_docdir/%name/readme.html + +%files -n %lname +%defattr(-, root, root) +%_libdir/libicu*.so.* + +%files -n libicu%aversion-bedata +%defattr(-,root,root) +%dir %_datadir/icu +%dir %_datadir/icu/%version +%_datadir/icu/%version/icudt%{amajor}b.dat + +%files -n libicu%aversion-ledata +%defattr(-,root,root) +%dir %_datadir/icu +%dir %_datadir/icu/%version +%_datadir/icu/%version/icudt%{amajor}l.dat + +%files -n libicu-devel +%defattr(-, root, root) +%_libdir/libicu*.so +%_includedir/unicode/ +%dir %_libdir/icu/ +%dir %_libdir/icu/%version/ +%_libdir/icu/%version/Makefile.inc +%_libdir/icu/%version/pkgdata.inc +%_libdir/pkgconfig/icu-*.pc +%_bindir/icu-config +%dir %_datadir/icu/ +%dir %_datadir/icu/%version/ +%_datadir/icu/%version/mkinstalldirs +%_datadir/icu/%version/config/ + +%files -n libicu-doc +%defattr(-,root,root) +%dir %_docdir/%name/ +%_docdir/%name/html/ + +%changelog diff --git a/icu4c-65_1-docs.zip.asc b/icu4c-65_1-docs.zip.asc new file mode 100644 index 0000000..b9934d3 --- /dev/null +++ b/icu4c-65_1-docs.zip.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEE/6kSmhgNdlt6W+ocm0MrJ9G6INcFAl2V4RoACgkQm0MrJ9G6 +INfBjg//Z2sbPGKo5l9UNCTZavLDAb2pvfnHVDOQwWTzQVI+rZSv1SW0qFNdqst7 +P+TO9zqMBKEhR9whxIuSJ9rMeZYAk0952ozoZ9fY3+Z7g5rO33JMHOxS+4KDyMiS +eQMjHdBvWZgHL1Ay9OmvN4mQdpFfXI8JxRJ4FHThla6LVTFh9s2BeYcd69/0PCBP +0ZYpKDbNKXtJZK/i00pBgt4TBHxNYs/TFMVu/u+5PXHkBOZ56VRi2xOll2cgjRD0 ++7AMH51xeU45gYurCxjvSDk8MkGaUB00p3ECUvJPT4K+WkRKZSV2HE7Phcm3b2NJ ++Tq8MmZrVoRz1pvbUiL+C882ZVL5Qf35QpQDZP+Ejhu1KLOQENQyRLYfaN13PlV6 +VJwd9uKk9+Hudt7FaG21d6wfhEvTm8KveTSyd1UxXCFJ1kcSRT3Jp2BOh5p8f9gx +fe4HzrS4eBlZv66GWwCIp/mE5z6bKnyFjcHVrLyq2m7Gd0iQDN/7HjrZgqSHalqL +Klt6mVKoUNP6WbDYubgN5o7W1A3GmtkMQ+lkgA6CJ05oRkgKanygAuAPo9Hpxopq +lOnE3zVqN7E78TahY1c1iTcKuv17+v7JSdQlDwwCUWVwRpY9LcHA8TkGi5mUTFQF +0NE9z5ZQJxBCDQkfg3z0nZTnuAvYrbAIW0iTgrOmWJVXHgsdqJY= +=CT5k +-----END PGP SIGNATURE----- diff --git a/icu4c-65_1-src.tgz.asc b/icu4c-65_1-src.tgz.asc new file mode 100644 index 0000000..01417f8 --- /dev/null +++ b/icu4c-65_1-src.tgz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEE/6kSmhgNdlt6W+ocm0MrJ9G6INcFAl2V4RoACgkQm0MrJ9G6 +INcgcw//abOY3mQFVKXmJAPnyrzS3J0gixdyogAitP1znxiHn28AtnMISza3dBuu +DmGqreJGBAizLyIk7gcltDWzTAfvPPAYaXt16Mvs/Emu6ZBCt26ssalPm0xRC6uy +u89x/iJoP3CvBb6YbFFAgw8C55qSa98bTLKvAELltFXYbVNOMh9ryVpWGqJdNRas +4OBjW8CMeLQdXoKoQQMltchlaB2jXLRSdp7tCuYYeY+eRBsDQjyhrjkuEeCnPYaC +dn8lj10SvsEmLXlZyGUw+6rNhRp+K/KsEhQG6ZcIuabwuUQggdDd1KlbPkMJNRFS +ZvtfMVdTtBEVF4Cue51Bz5l2ekFbYNwzStXlQUr1DryYFV0P8o+7ZelE272G81cm ++0B3IZY+JY6z5dMp0OJnqShZX3GKB8sw0yTGrQO5+QIaCDaf1xt7i0Vn5ReYHhTb +9wy6bZe/L39sb3umZv0nVpB65nnMLKTQztmmkbtf4e7+dKM1+D3UEbT2MMLrgcBh +HmzQDtP7CSlWMlDApPHPLFVNHRaRuEpNGrQkoUKoppCFlHcPeSP/kZFrCiybukHA +C+JJ49NbigddmbEmikvYq7YqTYn3hl1/nfM5O/5hMu23zKqLVmNEMqrVdeKxAzWL +K9OjJHUD2ZkH2NDH+vvlvZu+/xbmnn+At21IV06MmkvsiXQqwgo= +=TeIy +-----END PGP SIGNATURE-----