From d1ad44e86ff1f4f5e648101b476e10c8299165d9 Mon Sep 17 00:00:00 2001 From: zhouwenpei Date: Fri, 2 Dec 2022 07:51:33 +0000 Subject: [PATCH] rebase 22.03-LTS-Next from master --- 0001-add-support-loongarch64.patch | 27 ++ backport-remove-TestJitterbug6175.patch | 112 +++++++++ icu-Add-sw64-architecture.patch | 314 ++++++++++++++++++++++++ icu.spec | 26 +- 4 files changed, 475 insertions(+), 4 deletions(-) create mode 100644 0001-add-support-loongarch64.patch create mode 100644 backport-remove-TestJitterbug6175.patch create mode 100644 icu-Add-sw64-architecture.patch diff --git a/0001-add-support-loongarch64.patch b/0001-add-support-loongarch64.patch new file mode 100644 index 0000000..52031c5 --- /dev/null +++ b/0001-add-support-loongarch64.patch @@ -0,0 +1,27 @@ +From beefaa392eaf51355f9a3806a004c762d1ce17fa Mon Sep 17 00:00:00 2001 +From: Jingyun Hua +Date: Fri, 18 Nov 2022 09:00:58 +0000 +Subject: [PATCH] add support loongarch64 + +Signed-off-by: Jingyun Hua +--- + source/i18n/double-conversion-utils.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/source/i18n/double-conversion-utils.h b/source/i18n/double-conversion-utils.h +index 303668f..77f5ded 100644 +--- a/source/i18n/double-conversion-utils.h ++++ b/source/i18n/double-conversion-utils.h +@@ -160,7 +160,8 @@ int main(int argc, char** argv) { + defined(__riscv) || defined(__e2k__) || \ + defined(__or1k__) || defined(__arc__) || defined(__ARC64__) || \ + defined(__microblaze__) || defined(__XTENSA__) || \ +- defined(__EMSCRIPTEN__) || defined(__wasm32__) ++ defined(__EMSCRIPTEN__) || defined(__wasm32__) || \ ++ defined(__loongarch__) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(__mc68000__) || \ + defined(__pnacl__) || defined(__native_client__) +-- +2.33.0 + diff --git a/backport-remove-TestJitterbug6175.patch b/backport-remove-TestJitterbug6175.patch new file mode 100644 index 0000000..8e14442 --- /dev/null +++ b/backport-remove-TestJitterbug6175.patch @@ -0,0 +1,112 @@ +From d4774599b63f72c887cf449d02b3d1e5b0acc960 Mon Sep 17 00:00:00 2001 +From: Peter Edberg +Date: Wed, 12 Mar 2008 23:22:07 +0000 +Subject: [PATCH] ICU-6175 Test detecting empty segments in ISO-2022-x & HZ + with UConverterCallbackReason==UCNV_IRREGULAR + +X-SVN-Rev: 23572 + +revert d4774599b63f72c887cf449d02b3d1e5b0acc960 + +--- + source/test/cintltst/nucnvtst.c | 70 --------------------------------- + 1 file changed, 70 deletions(-) + +diff --git a/source/test/cintltst/nucnvtst.c b/source/test/cintltst/nucnvtst.c +index 73e0fde..1f96ded 100644 +--- a/source/test/cintltst/nucnvtst.c ++++ b/source/test/cintltst/nucnvtst.c +@@ -101,7 +101,6 @@ static void TestJitterbug2346(void); + static void TestJitterbug2411(void); + static void TestJB5275(void); + static void TestJB5275_1(void); +-static void TestJitterbug6175(void); + + static void TestIsFixedWidth(void); + #endif +@@ -329,7 +328,6 @@ void addTestNewConvert(TestNode** root) + #if !UCONFIG_NO_LEGACY_CONVERSION + addTest(root, &TestJitterbug2346, "tsconv/nucnvtst/TestJitterbug2346"); + addTest(root, &TestJitterbug2411, "tsconv/nucnvtst/TestJitterbug2411"); +- addTest(root, &TestJitterbug6175, "tsconv/nucnvtst/TestJitterbug6175"); + + addTest(root, &TestIsFixedWidth, "tsconv/nucnvtst/TestIsFixedWidth"); + #endif +@@ -4591,74 +4589,6 @@ cleanup: + free(offsets); + } + +-/* Tests for empty segments in ISO-2022-JP/KR/CN, HZ, check that UConverterCallbackReason is UCNV_IRREGULAR */ +-typedef struct { +- const char * converterName; +- const char * inputText; +- int inputTextLength; +-} EmptySegmentTest; +- +-/* Callback for TestJitterbug6175, should only get called for empty segment errors */ +-static void UCNV_TO_U_CALLBACK_EMPTYSEGMENT( const void *context, UConverterToUnicodeArgs *toArgs, const char* codeUnits, +- int32_t length, UConverterCallbackReason reason, UErrorCode * err ) { +- // suppress compiler warnings about unused variables +- (void)context; +- (void)codeUnits; +- (void)length; +- if (reason > UCNV_IRREGULAR) { +- return; +- } +- if (reason != UCNV_IRREGULAR) { +- log_err("toUnicode callback invoked for empty segment but reason is not UCNV_IRREGULAR\n"); +- } +- /* Standard stuff below from UCNV_TO_U_CALLBACK_SUBSTITUTE */ +- *err = U_ZERO_ERROR; +- ucnv_cbToUWriteSub(toArgs,0,err); +-} +- +-enum { kEmptySegmentToUCharsMax = 64 }; +-static void TestJitterbug6175(void) { +- static const char iso2022jp_a[] = { 0x61, 0x62, 0x1B,0x24,0x42, 0x1B,0x28,0x42, 0x63, 0x64, 0x0D, 0x0A }; +- static const char iso2022kr_a[] = { 0x1B,0x24,0x29,0x43, 0x61, 0x0E, 0x0F, 0x62, 0x0D, 0x0A }; +- static const char iso2022cn_a[] = { 0x61, 0x1B,0x24,0x29,0x41, 0x62, 0x0E, 0x0F, 0x1B,0x24,0x2A,0x48, 0x1B,0x4E, 0x6A,0x65, 0x63, 0x0D, 0x0A }; +- static const char iso2022cn_b[] = { 0x61, 0x1B,0x24,0x29,0x41, 0x62, 0x0E, 0x1B,0x24,0x29,0x47, 0x68,0x64, 0x0F, 0x63, 0x0D, 0x0A }; +- static const char hzGB2312_a[] = { 0x61, 0x62, 0x7E,0x7B, 0x7E,0x7D, 0x63, 0x64 }; +- static const EmptySegmentTest emptySegmentTests[] = { +- /* converterName inputText inputTextLength */ +- { "ISO-2022-JP", iso2022jp_a, sizeof(iso2022jp_a) }, +- { "ISO-2022-KR", iso2022kr_a, sizeof(iso2022kr_a) }, +- { "ISO-2022-CN", iso2022cn_a, sizeof(iso2022cn_a) }, +- { "ISO-2022-CN", iso2022cn_b, sizeof(iso2022cn_b) }, +- { "HZ-GB-2312", hzGB2312_a, sizeof(hzGB2312_a) }, +- /* terminator: */ +- { NULL, NULL, 0, } +- }; +- const EmptySegmentTest * testPtr; +- for (testPtr = emptySegmentTests; testPtr->converterName != NULL; ++testPtr) { +- UErrorCode err = U_ZERO_ERROR; +- UConverter * cnv = ucnv_open(testPtr->converterName, &err); +- if (U_FAILURE(err)) { +- log_data_err("Unable to open %s converter: %s\n", testPtr->converterName, u_errorName(err)); +- return; +- } +- ucnv_setToUCallBack(cnv, UCNV_TO_U_CALLBACK_EMPTYSEGMENT, NULL, NULL, NULL, &err); +- if (U_FAILURE(err)) { +- log_data_err("Unable to setToUCallBack for %s converter: %s\n", testPtr->converterName, u_errorName(err)); +- ucnv_close(cnv); +- return; +- } +- { +- UChar toUChars[kEmptySegmentToUCharsMax]; +- UChar * toUCharsPtr = toUChars; +- const UChar * toUCharsLimit = toUCharsPtr + kEmptySegmentToUCharsMax; +- const char * inCharsPtr = testPtr->inputText; +- const char * inCharsLimit = inCharsPtr + testPtr->inputTextLength; +- ucnv_toUnicode(cnv, &toUCharsPtr, toUCharsLimit, &inCharsPtr, inCharsLimit, NULL, true, &err); +- } +- ucnv_close(cnv); +- } +-} +- + static void + TestEBCDIC_STATEFUL() { + /* test input */ +-- +2.33.0 + diff --git a/icu-Add-sw64-architecture.patch b/icu-Add-sw64-architecture.patch new file mode 100644 index 0000000..d9f639b --- /dev/null +++ b/icu-Add-sw64-architecture.patch @@ -0,0 +1,314 @@ +From a4fb55ae3de789cf645d4939ed8af9dbaad242ce Mon Sep 17 00:00:00 2001 +From: wuzx +Date: Fri, 18 Nov 2022 02:53:10 +0800 +Subject: [PATCH] Add sw64 architecture + +Signed-off-by: wuzx +--- + source/acinclude.m4 | 6 ++ + source/config.guess | 8 +++ + source/config.sub | 2 + + source/config/mh-sw_64-linux-cc | 87 +++++++++++++++++++++++++++ + source/config/mh-sw_64-linux-gcc | 85 ++++++++++++++++++++++++++ + source/configure | 8 ++- + source/configure.ac | 2 +- + source/i18n/double-conversion-utils.h | 2 +- + 8 files changed, 197 insertions(+), 3 deletions(-) + create mode 100644 source/config/mh-sw_64-linux-cc + create mode 100644 source/config/mh-sw_64-linux-gcc + +diff --git a/source/acinclude.m4 b/source/acinclude.m4 +index 507f41f..381a91f 100644 +--- a/source/acinclude.m4 ++++ b/source/acinclude.m4 +@@ -21,6 +21,12 @@ case "${host}" in + else + icu_cv_host_frag=mh-solaris + fi ;; ++sw_64*-*-linux-gnu) ++ if test "$GCC" = yes; then ++ icu_cv_host_frag=mh-sw_64-linux-gcc ++ else ++ icu_cv_host_frag=mh-sw_64-linux-cc ++ fi ;; + alpha*-*-linux-gnu) + if test "$GCC" = yes; then + icu_cv_host_frag=mh-alpha-linux-gcc +diff --git a/source/config.guess b/source/config.guess +index 31e01ef..1dfe5d5 100644 +--- a/source/config.guess ++++ b/source/config.guess +@@ -894,6 +894,14 @@ EOF + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; ++ sw_64:Linux:*:*) ++ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in ++ SW) UNAME_MACHINE=sw_64 ;; ++ esac ++ objdump --private-headers /bin/sh | grep -q ld.so.1 ++ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi ++ echo ${UNAME_MACHINE}-sunway-linux-${LIBC} ++ exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; +diff --git a/source/config.sub b/source/config.sub +index fb57947..07dc65e 100644 +--- a/source/config.sub ++++ b/source/config.sub +@@ -244,6 +244,7 @@ case $basic_machine in + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ ++ | sw_64 \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ +@@ -368,6 +369,7 @@ case $basic_machine in + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ ++ | sw_64-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ +diff --git a/source/config/mh-sw_64-linux-cc b/source/config/mh-sw_64-linux-cc +new file mode 100644 +index 0000000..f27259a +--- /dev/null ++++ b/source/config/mh-sw_64-linux-cc +@@ -0,0 +1,87 @@ ++## -*-makefile-*- ++## Copyright (C) 2016 and later: Unicode, Inc. and others. ++## License & terms of use: http://www.unicode.org/copyright.html ++## Sw-64-Linux-specific setup ++## Copyright (c) 1999-2006, International Business Machines Corporation and ++## others. All Rights Reserved. ++ ++## Commands to generate dependency files ++#GEN_DEPS.c= $(CC) $(DEFS) $(CPPFLAGS) -MD -c -msg_quiet ++#GEN_DEPS.cc= $(CXX) $(DEFS) $(CPPFLAGS) -D__USE_STD_IOSTREAM -c -MD -msg_quiet ++ ++## Flags for position independent code ++SHAREDLIBCFLAGS = -fPIC ++SHAREDLIBCXXFLAGS = -fPIC ++SHAREDLIBCPPFLAGS = -DPIC ++ ++## Additional flags when building libraries and with threads ++THREADSCPPFLAGS = -D_REENTRANT ++LIBCPPFLAGS = ++ ++# The tests need complete IEEE floating point support ++CFLAGS += -ieee ++CXXFLAGS += -ieee ++ ++## Commands to compile ++COMPILE.c= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c -signed -accept nogccinline ++COMPILE.cc= $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -c -signed -D__USE_STD_IOSTREAM -accept nogcc_inline ++ ++ ++## Commands to link ++LINK.c= $(CC) -call_shared $(CFLAGS) $(LDFLAGS) ++LINK.cc= $(CXX) -call_shared $(CXXFLAGS) $(LDFLAGS) ++ ++## Compiler switch to embed a runtime search path ++LD_RPATH= ++LD_RPATH_PRE= -Wl,-rpath, ++ ++## Compiler switch to embed a library name ++LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET)) ++ ++## Shared object suffix ++SO = so ++## Non-shared intermediate object suffix ++STATIC_O = ao ++ ++## Compilation rules ++%.$(STATIC_O): $(srcdir)/%.c ++ $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< ++%.o: $(srcdir)/%.c ++ $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< ++ ++%.$(STATIC_O): $(srcdir)/%.cpp ++ $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< ++%.o: $(srcdir)/%.cpp ++ $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< ++ ++ ++## Dependency rules ++#%.d: $(srcdir)/%.c ++# @echo "generating dependency information for $<" ++# @$(SHELL) -ec '$(GEN_DEPS.c) $< \ ++# | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ ++# [ -s $@ ] || rm -f $@' ++ ++#%.d: $(srcdir)/%.cpp ++# @echo "generating dependency information for $<" ++# @$(SHELL) -ec '$(GEN_DEPS.cc) $< \ ++# | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ ++# [ -s $@ ] || rm -f $@' ++# ++## Versioned libraries rules ++ ++%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION) ++ $(RM) $@ && ln -s ${ $@; \ ++ [ -s $@ ] || rm -f $@' ++ ++%.d: $(srcdir)/%.cpp ++ @echo "generating dependency information for $<" ++ @$(SHELL) -ec '$(GEN_DEPS.cc) $< \ ++ | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \ ++ [ -s $@ ] || rm -f $@' ++ ++## Versioned libraries rules ++ ++%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION) ++ $(RM) $@ && ln -s ${&5 + $as_echo "\"C compiler set to CCC ${CC}\" " >&6; } + case "${host}" in +- alpha*-*-*) U_HAVE_INTTYPES_H=0; ++ alpha*-*-* | sw_64*-*-*) U_HAVE_INTTYPES_H=0; + CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0" + esac + fi +diff --git a/source/configure.ac b/source/configure.ac +index 425fdc7..6acf133 100644 +--- a/source/configure.ac ++++ b/source/configure.ac +@@ -685,7 +685,7 @@ fi + if test "$CC" = ccc; then + AC_MSG_RESULT("C compiler set to CCC ${CC}" ) + case "${host}" in +- alpha*-*-*) U_HAVE_INTTYPES_H=0; ++ alpha*-*-* | sw_64*-*-*) U_HAVE_INTTYPES_H=0; + CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0" + esac + fi +diff --git a/source/i18n/double-conversion-utils.h b/source/i18n/double-conversion-utils.h +index c937463..7dcdbf8 100644 +--- a/source/i18n/double-conversion-utils.h ++++ b/source/i18n/double-conversion-utils.h +@@ -122,7 +122,7 @@ int main(int argc, char** argv) { + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ +- defined(__SH4__) || defined(__alpha__) || \ ++ defined(__SH4__) || defined(__alpha__) || defined(__sw_64__) || \ + defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) ||\ + defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \ + defined(__riscv) || defined(__e2k__) || \ +-- +2.33.0 + diff --git a/icu.spec b/icu.spec index 134570d..1e0966d 100644 --- a/icu.spec +++ b/icu.spec @@ -1,6 +1,6 @@ Name: icu Version: 72.1 -Release: 1 +Release: 4 Summary: International Components for Unicode License: MIT and UCD and Public Domain URL: http://site.icu-project.org/ @@ -12,6 +12,13 @@ Requires: lib%{name} = %{version}-%{release} Patch1: gennorm2-man.patch Patch2: icuinfo-man.patch +Patch3: backport-remove-TestJitterbug6175.patch +%ifarch loongarch +Patch4: 0001-add-support-loongarch64.patch +%endif +%ifarch sw_64 +Patch5: icu-Add-sw64-architecture.patch +%endif %description Tools and utilities for developing with icu. @@ -128,15 +135,26 @@ LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:$LD_LIBRARY_PATH bin/uconv -l %changelog -* Sat Nov 05 2022 zhouwenpei - 72.1-1 +* Mon Nov 21 2022 zhouwenpei - 72.1-4 +- Optimize the patch for add loongarch64 architecture + +* Mon Nov 21 2022 wuzx - 72.1-3 +- Add sw64 architecture + +* Fri Nov 18 2022 huajingyun - 72.1-2 +- add loongarch64 support + +* Tue Nov 15 2022 zhouwenpei - 72.1-1 - update to icu4c-72.1 +* Sat Jun 25 2020 hanhui - 69.1-3 +- fix build failed + * Thu Jul 16 2020 hanhui - 69.1-2 - delete libicu*.so.67* -* Mon Nov 29 2021 xingxing - 69.1-1 +* Sun Nov 07 2021 sdlzx - 69.1 - update to icu4c-69.1 -- replate libicu*.so.62*whith libicu*.so.67* * Wed Oct 21 2020 jinzhimin - 67.1-2 - modify buildrequire to python3