summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--backport-remove-TestJitterbug6175.patch112
-rw-r--r--gennorm2-man.patch128
-rw-r--r--icu-Add-sw64-architecture-compat.patch314
-rw-r--r--icu-Add-sw64-architecture.patch265
-rw-r--r--icu-config.sh2
-rw-r--r--icu.spec250
-rw-r--r--icuinfo-man.patch145
-rw-r--r--sources3
9 files changed, 1222 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..8d7ff8d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/icu4c-74_1-src.tgz
+/icu4c-76_1-data.zip
+/icu4c-76_1-src.tgz
diff --git a/backport-remove-TestJitterbug6175.patch b/backport-remove-TestJitterbug6175.patch
new file mode 100644
index 0000000..1d286db
--- /dev/null
+++ b/backport-remove-TestJitterbug6175.patch
@@ -0,0 +1,112 @@
+From d4774599b63f72c887cf449d02b3d1e5b0acc960 Mon Sep 17 00:00:00 2001
+From: Peter Edberg <pedberg@unicode.org>
+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(void) {
+ /* test input */
+--
+2.33.0
+
diff --git a/gennorm2-man.patch b/gennorm2-man.patch
new file mode 100644
index 0000000..07b5b9d
--- /dev/null
+++ b/gennorm2-man.patch
@@ -0,0 +1,128 @@
+Description: supply manual page for program that doesn't have one
+Author: Jay Berkenbilt <qjb@debian.org>
+Bug: http://bugs.icu-project.org/trac/ticket/7554
+
+diff -r -u -N icu.orig/source/tools/gennorm2/gennorm2.8.in icu/source/tools/gennorm2/gennorm2.8.in
+--- icu.orig/source/tools/gennorm2/gennorm2.8.in 1970-01-01 01:00:00.000000000 +0100
++++ icu/source/tools/gennorm2/gennorm2.8.in 2013-02-25 16:43:28.297062638 +0100
+@@ -0,0 +1,71 @@
++.\" Hey, Emacs! This is -*-nroff-*- you know...
++.\"
++.\" gennorm2.8: manual page for the gennorm2 utility
++.\"
++.\" Copyright (C) 2005-2006 International Business Machines Corporation and others
++.\"
++.TH GENNORM2 8 "15 March 2010" "ICU MANPAGE" "ICU @VERSION@ Manual"
++.SH NAME
++.B gennorm2
++\- Builds binary data file with Unicode normalization data.
++.SH SYNOPSIS
++.B gennorm2
++[
++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
++]
++[
++.BR "\-V\fP, \fB\-\-version"
++]
++[
++.BR "\-c\fP, \fB\-\-copyright"
++]
++[
++.BR "\-v\fP, \fB\-\-verbose"
++]
++[
++.BI "\-u\fP, \fB\-\-unicode" " unicode\-version\-number"
++]
++[
++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory"
++]
++[
++.BI "\-o\fP, \fB\-\-output" " output\-filename"
++]
++.BI "\fB\-\-fast"
++.SH DESCRIPTION
++.B gennorm2
++reads text files that define Unicode normalization,
++them, and builds a binary data file.
++.SH OPTIONS
++.TP
++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
++Print help about usage and exit.
++.TP
++.BR "\-V\fP, \fB\-\-version"
++Print the version of
++.B gennorm2
++and exit.
++.TP
++.BR "\-c\fP, \fB\-\-copyright"
++Include a copyright notice.
++.TP
++.BR "\-v\fP, \fB\-\-verbose"
++Display extra informative messages during execution.
++.TP
++.BR "\-u\fP, \fB\-\-unicode"
++Specify Unicode version number, such as 5.2.0.
++.TP
++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory"
++Specify the input directory.
++.TP
++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory"
++Set the name of the output file.
++.TP
++.BI "\fB\-\-fast"
++optimize the .nrm file for fast normalization,
++which might increase its size (Writes fully decomposed
++regular mappings instead of delta mappings.
++You should measure the runtime speed to make sure that
++this is a good trade-off.)
++.SH COPYRIGHT
++Copyright (C) 2009-2010 International Business Machines Corporation and others
+diff -r -u -N icu.orig/source/tools/gennorm2/Makefile.in icu/source/tools/gennorm2/Makefile.in
+--- icu.orig/source/tools/gennorm2/Makefile.in 2013-01-11 01:23:32.000000000 +0100
++++ icu/source/tools/gennorm2/Makefile.in 2013-02-25 16:43:28.296062632 +0100
+@@ -16,8 +16,13 @@
+
+ TARGET_STUB_NAME = gennorm2
+
++SECTION = 8
++
++MAN_FILES = $(TARGET_STUB_NAME).$(SECTION)
++
++
+ ## Extra files to remove for 'make clean'
+-CLEANFILES = *~ $(DEPS)
++CLEANFILES = *~ $(DEPS) $(MAN_FILES)
+
+ ## Target information
+ TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
+@@ -44,12 +49,16 @@
+ dist: dist-local
+ check: all check-local
+
+-all-local: $(TARGET)
++all-local: $(TARGET) $(MAN_FILES)
+
+-install-local: all-local
++install-local: all-local install-man
+ $(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
+ $(INSTALL) $(TARGET) $(DESTDIR)$(sbindir)
+
++install-man: $(MAN_FILES)
++ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
++ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
++
+ dist-local:
+
+ clean-local:
+@@ -70,6 +79,11 @@
+ $(POST_BUILD_STEP)
+
+
++%.$(SECTION): $(srcdir)/%.$(SECTION).in
++ cd $(top_builddir) \
++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
++
++
+ ifeq (,$(MAKECMDGOALS))
+ -include $(DEPS)
+ else
diff --git a/icu-Add-sw64-architecture-compat.patch b/icu-Add-sw64-architecture-compat.patch
new file mode 100644
index 0000000..d9f639b
--- /dev/null
+++ b/icu-Add-sw64-architecture-compat.patch
@@ -0,0 +1,314 @@
+From a4fb55ae3de789cf645d4939ed8af9dbaad242ce Mon Sep 17 00:00:00 2001
+From: wuzx <wuzx1226@qq.com>
+Date: Fri, 18 Nov 2022 02:53:10 +0800
+Subject: [PATCH] Add sw64 architecture
+
+Signed-off-by: wuzx <wuzx1226@qq.com>
+---
+ 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 ${<F} $@
++%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
++ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
++
++## Bind internal references
++
++# LDflags that pkgdata will use
++BIR_LDFLAGS= -Wl,-Bsymbolic
++
++# Dependencies [i.e. map files] for the final library
++BIR_DEPS=
++
++## End Linux-specific setup
++
+diff --git a/source/config/mh-sw_64-linux-gcc b/source/config/mh-sw_64-linux-gcc
+new file mode 100644
+index 0000000..a3531d2
+--- /dev/null
++++ b/source/config/mh-sw_64-linux-gcc
+@@ -0,0 +1,85 @@
++## -*-makefile-*-
++## Copyright (C) 2016 and later: Unicode, Inc. and others.
++## License & terms of use: http://www.unicode.org/copyright.html
++## Linux-specific setup
++## Copyright (c) 1999-2009, International Business Machines Corporation and
++## others. All Rights Reserved.
++
++## Commands to generate dependency files
++GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
++GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
++
++## 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 += -mieee
++CXXFLAGS += -mieee
++
++## 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 library options
++LD_SOOPTIONS= -Wl,-Bsymbolic
++
++## 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 ${<F} $@
++%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
++ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
++
++# The type of assembly to write for generating an object file
++GENCCODE_ASSEMBLY=-a gcc
++
++## Bind internal references
++
++# LDflags that pkgdata will use
++BIR_LDFLAGS= -Wl,-Bsymbolic
++
++# Dependencies [i.e. map files] for the final library
++BIR_DEPS=
++
++## End Linux-specific setup
++
+diff --git a/source/configure b/source/configure
+index a2ff7e4..a190250 100755
+--- a/source/configure
++++ b/source/configure
+@@ -5249,6 +5249,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
+@@ -6511,7 +6517,7 @@ if test "$CC" = ccc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"C compiler set to CCC ${CC}\" " >&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-Add-sw64-architecture.patch b/icu-Add-sw64-architecture.patch
new file mode 100644
index 0000000..756f78b
--- /dev/null
+++ b/icu-Add-sw64-architecture.patch
@@ -0,0 +1,265 @@
+From a4fb55ae3de789cf645d4939ed8af9dbaad242ce Mon Sep 17 00:00:00 2001
+From: wuzx <wuzx1226@qq.com>
+Date: Fri, 18 Nov 2022 02:53:10 +0800
+Subject: [PATCH] Add sw64 architecture
+
+Signed-off-by: wuzx <wuzx1226@qq.com>
+---
+ source/acinclude.m4 | 6 ++
+ source/config.guess | 8 +++
+ source/config.sub | 1 +
+ source/config/mh-sw_64-linux-cc | 87 +++++++++++++++++++++++++++
+ source/config/mh-sw_64-linux-gcc | 85 ++++++++++++++++++++++++++
+ source/i18n/double-conversion-utils.h | 2 +-
+ 6 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
+@@ -1010,6 +1010,14 @@
+ UNAME_MACHINE=aarch64_be
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
++ 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
++ GUESS=${UNAME_MACHINE}-sunway-linux-${LIBC}
++ ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` 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
+@@ -1250,6 +1250,7 @@
+ | 580 \
+ | [cjt]90 \
+ | a29k \
++ | sw_64 \
+ | aarch64 \
+ | aarch64_be \
+ | aarch64c \
+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 ${<F} $@
++%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
++ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
++
++## Bind internal references
++
++# LDflags that pkgdata will use
++BIR_LDFLAGS= -Wl,-Bsymbolic
++
++# Dependencies [i.e. map files] for the final library
++BIR_DEPS=
++
++## End Linux-specific setup
++
+diff --git a/source/config/mh-sw_64-linux-gcc b/source/config/mh-sw_64-linux-gcc
+new file mode 100644
+index 0000000..a3531d2
+--- /dev/null
++++ b/source/config/mh-sw_64-linux-gcc
+@@ -0,0 +1,85 @@
++## -*-makefile-*-
++## Copyright (C) 2016 and later: Unicode, Inc. and others.
++## License & terms of use: http://www.unicode.org/copyright.html
++## Linux-specific setup
++## Copyright (c) 1999-2009, International Business Machines Corporation and
++## others. All Rights Reserved.
++
++## Commands to generate dependency files
++GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
++GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
++
++## 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 += -mieee
++CXXFLAGS += -mieee
++
++## 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 library options
++LD_SOOPTIONS= -Wl,-Bsymbolic
++
++## 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 ${<F} $@
++%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
++ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
++
++# The type of assembly to write for generating an object file
++GENCCODE_ASSEMBLY=-a gcc
++
++## Bind internal references
++
++# LDflags that pkgdata will use
++BIR_LDFLAGS= -Wl,-Bsymbolic
++
++# Dependencies [i.e. map files] for the final library
++BIR_DEPS=
++
++## End Linux-specific setup
++
+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-config.sh b/icu-config.sh
new file mode 100644
index 0000000..84d5adf
--- /dev/null
+++ b/icu-config.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec icu-config-64 "$@"
diff --git a/icu.spec b/icu.spec
new file mode 100644
index 0000000..607d9c8
--- /dev/null
+++ b/icu.spec
@@ -0,0 +1,250 @@
+%bcond_without build_compat
+
+%if %{with build_compat}
+%define compat_version 74.1
+%define compat_tarballver %(echo %compat_version|tr '.' '_')
+%define compat_dashver %(echo %compat_version|tr '.' '-')
+%endif
+
+%define tarballver %(echo %version|tr '.' '_')
+%define dashver %(echo %version|tr '.' '-')
+
+Name: icu
+Version: 76.1
+Release: 1
+Summary: International Components for Unicode
+License: Unicode-DFS-2016 AND BSD-2-Clause AND BSD-3-Clause AND Public Domain
+URL: https://icu.unicode.org/
+Source0: https://github.com/unicode-org/icu/releases/download/release-%{dashver}/icu4c-%{tarballver}-src.tgz
+Source1: https://github.com/unicode-org/icu/releases/download/release-%{dashver}/icu4c-%{tarballver}-data.zip
+Source2: icu-config.sh
+%if %{with build_compat}
+Source10: https://github.com/unicode-org/icu/releases/download/release-%{compat_dashver}/icu4c-%{compat_tarballver}-src.tgz
+%endif
+
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: autoconf >= 2.72
+BuildRequires: doxygen
+BuildRequires: python3
+Requires: lib%{name} = %{version}-%{release}
+
+Patch1: gennorm2-man.patch
+Patch2: icuinfo-man.patch
+Patch3: backport-remove-TestJitterbug6175.patch
+Patch4: icu-Add-sw64-architecture.patch
+Patch10: icu-Add-sw64-architecture-compat.patch
+
+%description
+Tools and utilities for developing with icu.
+
+%package -n libicu
+Summary: libs package for icu
+
+%description -n libicu
+libs package for icu
+
+%package -n libicu-devel
+Summary: header files for libicu
+Requires: libicu = %{version}-%{release}
+Provides: %{name}-devel = %{version}-%{release}
+
+%description -n libicu-devel
+header files for libicu
+
+%package_help
+
+%{!?endian: %global endian %(%{__python3} -c "import sys;print (0 if sys.byteorder=='big' else 1)")}
+# " this line just fixes syntax highlighting for vim that is confused by the above and continues literal
+
+%prep
+%setup -qn %{name}
+%autopatch -p1 -M9
+
+pushd source
+rm -fr data
+%{__rpmuncompress} -x %{S:1}
+grep -rl 'Indochina' . | xargs sed -i "s/Indochina/Ondochine/g"
+popd
+
+%if %{with build_compat}
+%{__rpmuncompress} -x %{S:10}
+pushd icu
+%autopatch -m10 -p1
+popd
+%endif
+
+%build
+pushd source
+autoconf
+CFLAGS='%optflags -fno-strict-aliasing'
+CXXFLAGS='%optflags -fno-strict-aliasing'
+# Endian: BE=0 LE=1
+%if ! 0%{?endian}
+CPPFLAGS='-DU_IS_BIG_ENDIAN=1'
+%endif
+
+OPTIONS='--with-data-packaging=library --disable-samples'
+%if 0%{?debugtrace}
+OPTIONS=$OPTIONS' --enable-debug --enable-tracing'
+%endif
+%configure $OPTIONS
+
+sed -i 's|-nodefaultlibs -nostdlib||' config/mh-linux
+sed -i 's| \$(docfilesdir)/installdox||' Makefile
+sed -i '/^\s\+\$(INSTALL_DATA) \$(docsrchfiles) \$(DESTDIR)\$(docdir)\/\$(docsubsrchdir)\s*$/d' Makefile
+test -f uconfig.h.prepend && sed -e '/^#define __UCONFIG_H__/ r uconfig.h.prepend' -i common/unicode/uconfig.h
+
+sed -i -r 's|(PKGDATA_OPTS = )|\1-v |' data/Makefile
+
+%make_build
+%make_build doc
+popd
+
+%if %{with build_compat}
+pushd icu/source
+autoconf
+%configure --with-data-packaging=library --disable-samples --disable-tests
+sed -i 's|-nodefaultlibs -nostdlib||' config/mh-linux
+sed -i 's| \$(docfilesdir)/installdox||' Makefile
+sed -i '/^\s\+\$(INSTALL_DATA) \$(docsrchfiles) \$(DESTDIR)\$(docdir)\/\$(docsubsrchdir)\s*$/d' Makefile
+test -f uconfig.h.prepend && sed -e '/^#define __UCONFIG_H__/ r uconfig.h.prepend' -i common/unicode/uconfig.h
+
+sed -i -r 's|(PKGDATA_OPTS = )|\1-v |' data/Makefile
+
+%make_build
+popd
+%endif
+
+%install
+rm -rf source/__docs
+%make_install -C source
+
+rm -f %{buildroot}%{_datadir}/icu/%{version}/LICENSE
+
+make -C source install-doc docdir=__docs
+chmod +x %{buildroot}%{_libdir}/*.so.*
+(
+ cd %{buildroot}%{_bindir}
+ mv icu-config icu-config-%{__isa_bits}
+)
+install -p -m755 -D %{S:2} %{buildroot}%{_bindir}/icu-config
+
+%if %{with build_compat}
+pushd icu/source
+install -p -m755 lib/*.so.* %{buildroot}%{_libdir}/
+popd
+%endif
+
+%check
+if grep -q @VERSION@ source/tools/*/*.8 source/tools/*/*.1 source/config/*.1; then
+ exit 1
+fi
+%make_build -C source check
+
+pushd source
+LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:$LD_LIBRARY_PATH bin/uconv -l
+popd
+
+%files
+%license license.html LICENSE
+%{_bindir}/derb
+%{_bindir}/gen*
+%{_bindir}/makeconv
+%{_bindir}/pkgdata
+%{_bindir}/uconv
+%{_bindir}/icuexportdata
+%{_sbindir}/*
+
+%files -n libicu
+%license license.html LICENSE
+%{_libdir}/*.so.*
+
+%files -n libicu-devel
+%{_bindir}/%{name}-config*
+%{_bindir}/icuinfo
+%{_includedir}/unicode
+%{_libdir}/*.so
+%{_libdir}/pkgconfig/*.pc
+%{_libdir}/%{name}
+%{_datadir}/%{name}/%{version}/install-sh
+%{_datadir}/%{name}/%{version}/mkinstalldirs
+%{_datadir}/%{name}/%{version}/config
+
+%files help
+%doc readme.html
+%doc source/__docs/%{name}/html/*
+%{_mandir}/man1/*
+%{_mandir}/man8/*
+
+
+%changelog
+* Sun Oct 27 2024 Funda Wang <fundawang@yeah.net> - 76.1-1
+- update to 76.1
+- build compat lib within single package, instead of relying on built package
+- drop binary diff in favour of building data from scratch
+- mark patch unconditioned
+- loongarch patch merged upstream
+
+* Wed Mar 27 2024 zhangpan<zhangpan103@h-partners.com> - 74.1-2
+- delete libicu*.so.73*
+
+* Wed Jan 24 2024 zhangpan<zhangpan103@h-partners.com> - 74.1-1
+- update to 74.1
+
+* Tue Sep 19 2023 zhouwenpei<zhouwenpei@h-partners.com> - 73.2-3
+- Fix broken TestHebrewCalendarInTemporalLeapYear
+
+* Mon Sep 11 2023 zhangpan<zhangpan103@h-partners.com> - 73.2-2
+- delete libicu*.so.72*
+
+* Mon Jul 24 2023 zhangpan<zhangpan103@h-partners.com> - 73.2-1
+- update to 73.2
+
+* Tue Jun 13 2023 zhangpan<zhangpan103@h-partners.com> - 72.1-6
+- delete taboo words
+
+* Thu Dec 15 2022 zhouwenpei<zhouwenpei1@h-partners.com> - 72.1-5
+- delete redundant files
+
+* Mon Nov 21 2022 zhouwenpei<zhouwenpei1@h-partners.com> - 72.1-4
+- Optimize the patch for add loongarch64 architecture
+
+* Mon Nov 21 2022 wuzx <wuzx1226@qq.com> - 72.1-3
+- Add sw64 architecture
+
+* Fri Nov 18 2022 huajingyun <huajingyun@loongson.cn> - 72.1-2
+- add loongarch64 support
+
+* Tue Nov 15 2022 zhouwenpei <zhouwenpei1@h-partners.com> - 72.1-1
+- update to icu4c-72.1
+
+* Sat Jun 25 2020 hanhui <hanhui15@h-partners.com> - 69.1-3
+- fix build failed
+
+* Thu Jul 16 2020 hanhui <hanhui15@h-partners.com> - 69.1-2
+- delete libicu*.so.67*
+
+* Sun Nov 07 2021 sdlzx <hdu_sdlzx@163.com> - 69.1
+- update to icu4c-69.1
+
+* Wed Oct 21 2020 jinzhimin<jinzhimin2@huawei.com> - 67.1-2
+- modify buildrequire to python3
+
+* Thu Jul 16 2020 hanhui <hanhui15@huawei.com> - 67.1
+- update to icu4c-67.1
+
+* Fri Mar 20 2020 gulining <gulining1@huawei.com> - 62.1-5
+- fix CVE-2020-10531
+
+* Tue Mar 10 2020 songnannan <songnannan2@huawei.com> - 62.1-4
+- bugfix memory leak
+
+* Sat Jan 11 2020 openEuler Buildteam <buildteam@openeuler.org> - 62.1-3
+- Type:bugfix
+- Id:NA
+- SUG:NA
+- DESC:optimization the spec
+
+* Fri Nov 1 2019 openEuler Buildteam <buildteam@openeuler.org> - 62.1-2
+- Package init
diff --git a/icuinfo-man.patch b/icuinfo-man.patch
new file mode 100644
index 0000000..987e879
--- /dev/null
+++ b/icuinfo-man.patch
@@ -0,0 +1,145 @@
+Description: supply manual page for program that doesn't have one
+Author: Jay Berkenbilt <qjb@debian.org>
+Bug: http://bugs.icu-project.org/trac/ticket/7665
+erAck: adapted to ICU 56.1 icu/source/tools/icuinfo/Makefile.in
+
+diff -Nur orig.icu/source/tools/icuinfo/icuinfo.1.in icu/source/tools/icuinfo/icuinfo.1.in
+--- orig.icu/source/tools/icuinfo/icuinfo.1.in 1970-01-01 01:00:00.000000000 +0100
++++ icu/source/tools/icuinfo/icuinfo.1.in 2015-10-27 19:19:35.184056800 +0100
+@@ -0,0 +1,76 @@
++.\" Hey, Emacs! This is -*-nroff-*- you know...
++.\"
++.\" icuinfo.1: manual page for the icuinfo utility
++.\"
++.\" Copyright (C) 2005-2006 International Business Machines Corporation and others
++.\"
++.TH ICUINFO 1 "1 May 2010" "ICU MANPAGE" "ICU @VERSION@ Manual"
++.SH NAME
++.B icuinfo
++\- Shows some basic info about the current ICU
++.SH SYNOPSIS
++.B icuinfo
++[
++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
++]
++[
++.BR "\-V\fP, \fB\-\-version"
++]
++[
++.BR "\-c\fP, \fB\-\-copyright"
++]
++[
++.BI "\-i\fP, \fB\-\-icudatadir" " directory"
++]
++[
++.BR "\-v\fP, \fB\-\-verbose"
++]
++[
++.BI "\-L\fP, \fB\-\-list-plugins"
++]
++[
++.BI "\-m\fP, \fB\-\-milisecond-time"
++]
++[
++.BI "\-K\fP, \fB\-\-cleanup"
++]
++.SH DESCRIPTION
++.B icuinfo
++prints basic information about the current version of ICU.
++.SH OPTIONS
++.TP
++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
++Print help about usage and exit.
++.TP
++.BR "\-V\fP, \fB\-\-version"
++Print the version of
++.B icuinfo
++and exit.
++.TP
++.BR "\-c\fP, \fB\-\-copyright"
++Embeds the standard ICU copyright into the
++.IR output-file .
++.TP
++.BR "\-v\fP, \fB\-\-verbose"
++Display extra informative messages during execution.
++.TP
++.BI "\-i\fP, \fB\-\-icudatadir" " directory"
++Look for any necessary ICU data files in
++.IR directory .
++For example, the file
++.B pnames.icu
++must be located when ICU's data is not built as a shared library.
++The default ICU data directory is specified by the environment variable
++.BR ICU_DATA .
++Most configurations of ICU do not require this argument.
++.TP
++.BI "\-L\fP, \fB\-\-list-plugins"
++If specified, list and diagnose issues with ICU plugins.
++.TP
++.BI "\-K\fP, \fB\-\-cleanup"
++Attempt to unload plugins before exiting.
++.TP
++.BI "\-m\fP, \fB\-\-milisecond-time"
++Print the current UTC time in milliseconds.
++.SH COPYRIGHT
++Copyright (C) 2010 International Business Machines Corporation and others
+diff -Nur orig.icu/source/tools/icuinfo/Makefile.in icu/source/tools/icuinfo/Makefile.in
+--- orig.icu/source/tools/icuinfo/Makefile.in 2015-10-08 05:53:56.000000000 +0200
++++ icu/source/tools/icuinfo/Makefile.in 2015-10-27 19:23:19.115509906 +0100
+@@ -14,8 +14,15 @@
+ ## Build directory information
+ subdir = tools/icuinfo
+
++TARGET_STUB_NAME = icuinfo
++
++SECTION = 1
++
++MAN_FILES = $(TARGET_STUB_NAME).$(SECTION)
++
++
+ ## Extra files to remove for 'make clean'
+-CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN)
++CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) $(MAN_FILES)
+
+ ## Target information
+ TARGET = icuinfo$(EXEEXT)
+@@ -35,7 +42,8 @@
+
+ ## List of phony targets
+ .PHONY : all all-local install install-local clean clean-local \
+-distclean distclean-local dist dist-local check check-local plugin-check
++distclean distclean-local dist dist-local check check-local plugin-check \
++install-man
+
+ ## Clear suffix list
+ .SUFFIXES :
+@@ -48,12 +56,16 @@
+ dist: dist-local
+ check: all check-local
+
+-all-local: $(TARGET)
++all-local: $(TARGET) $(MAN_FILES)
+
+-install-local: all-local
++install-local: all-local install-man
+ $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
+ $(INSTALL) $(TARGET) $(DESTDIR)$(bindir)
+
++install-man: $(MAN_FILES)
++ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
++ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
++
+ dist-local:
+
+ clean-local:
+@@ -103,6 +115,10 @@
+ @echo "Plugins are disabled (use --enable-plugins to enable)"
+ endif
+
++%.$(SECTION): $(srcdir)/%.$(SECTION).in
++ cd $(top_builddir) \
++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
++
+ ifeq (,$(MAKECMDGOALS))
+ -include $(DEPS)
+ else
diff --git a/sources b/sources
new file mode 100644
index 0000000..7ca18ac
--- /dev/null
+++ b/sources
@@ -0,0 +1,3 @@
+71e60b22697c4f35820a1897417dbab4 icu4c-74_1-src.tgz
+f4b6fdf4b21a6248da0d93678a1b420a icu4c-76_1-data.zip
+857fdafff8127139cc175a3ec9b43bd6 icu4c-76_1-src.tgz