The package rpms/compat-libicu62.git has added or updated architecture specific content in
its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/compat-libicu62.git/commit/?id=dc....
Change:
+%ifarch armv7hl
Thanks.
Full change:
============
commit dcad2c6963d6607f6b9bca3ec6a9d58ba4524aeb
Author: Pete Walter <pwalter(a)fedoraproject.org>
Date: Wed Jan 23 20:17:23 2019 +0000
Initial import
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ee29b6f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/icu4c-62_1-src.tgz
diff --git a/README.md b/README.md
deleted file mode 100644
index 6d01a32..0000000
--- a/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# compat-libicu62
-
-The compat-libicu62 package
\ No newline at end of file
diff --git a/armv7hl-disable-tests.patch b/armv7hl-disable-tests.patch
new file mode 100644
index 0000000..2d869b1
--- /dev/null
+++ b/armv7hl-disable-tests.patch
@@ -0,0 +1,96 @@
+diff -ru orig.icu/source/test/cintltst/cnmdptst.c icu/source/test/cintltst/cnmdptst.c
+--- orig.icu/source/test/cintltst/cnmdptst.c 2016-03-23 21:48:18.000000000 +0100
++++ icu/source/test/cintltst/cnmdptst.c 2016-04-15 18:34:06.148251985 +0200
+@@ -186,6 +186,12 @@
+ /* Test exponential pattern*/
+ static void TestExponential(void)
+ {
++/* erAck: fails on armv7hl,
https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
++#if 1
++ /* Actually only 3 tests fail, but given the nested structure depending on
++ * array sizes there's no simple "disable this and that". */
++ return;
++#endif
+ int32_t pat_length, val_length, lval_length;
+ int32_t ival, ilval, p, v, lneed;
+ UNumberFormat *fmt;
+diff -ru orig.icu/source/test/intltest/dcfmtest.cpp
icu/source/test/intltest/dcfmtest.cpp
+--- orig.icu/source/test/intltest/dcfmtest.cpp 2016-03-23 21:48:38.000000000 +0100
++++ icu/source/test/intltest/dcfmtest.cpp 2016-04-15 18:34:06.148251985 +0200
+@@ -279,6 +279,13 @@
+ //
+ formatLineMat.reset(testLine);
+ if (formatLineMat.lookingAt(status)) {
++/* erAck: fails on armv7hl,
https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
++#if 1
++// [Formattable] file dcfmtest.txt, line 62: expected "12.35E5", got
"1.235E6"
++// [StringPiece] file dcfmtest.txt, line 62: expected "12.35E5", got
"1.235E6"
++ if (lineNum == 62)
++ continue;
++#endif
+ execFormatTest(lineNum,
+ formatLineMat.group(1, status), // Pattern
+ formatLineMat.group(2, status), // rounding mode
+diff -ru orig.icu/source/test/intltest/numfmtspectest.cpp
icu/source/test/intltest/numfmtspectest.cpp
+--- orig.icu/source/test/intltest/numfmtspectest.cpp 2016-03-23 21:48:40.000000000 +0100
++++ icu/source/test/intltest/numfmtspectest.cpp 2016-04-15 18:34:06.148251985 +0200
+@@ -137,11 +137,14 @@
+
+ void NumberFormatSpecificationTest::TestScientificNotation() {
+ assertPatternFr("1,23E4", 12345.0, "0.00E0", TRUE);
++/* erAck: fails on armv7hl,
https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
++#if 0
+ assertPatternFr("123,00E2", 12300.0, "000.00E0", TRUE);
+ assertPatternFr("123,0E2", 12300.0, "000.0#E0", TRUE);
+ assertPatternFr("123,0E2", 12300.1, "000.0#E0", TRUE);
+ assertPatternFr("123,01E2", 12301.0, "000.0#E0", TRUE);
+ assertPatternFr("123,01E+02", 12301.0, "000.0#E+00", TRUE);
++#endif
+ assertPatternFr("12,3E3", 12345.0, "##0.00E0", TRUE);
+ assertPatternFr("12,300E3", 12300.1, "##0.0000E0", TRUE);
+ assertPatternFr("12,30E3", 12300.1, "##0.000#E0", TRUE);
+@@ -221,6 +224,8 @@
+ assertEquals("", "USD (433.22)", result, TRUE);
+ }
+ }
++/* erAck: fails on armv7hl,
https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
++#if 0
+ const char *paddedSciPattern = "QU**00.#####E0";
+ assertPatternFr("QU***43,3E-1", 4.33, paddedSciPattern, TRUE);
+ {
+@@ -242,6 +247,7 @@
+ }
+ // padding cannot work as intended with scientific notation.
+ assertPatternFr("QU**43,32E-1", 4.332, paddedSciPattern, TRUE);
++#endif
+ }
+
+ void NumberFormatSpecificationTest::assertPatternFr(
+diff -ru orig.icu/source/test/intltest/numfmtst.cpp
icu/source/test/intltest/numfmtst.cpp
+--- orig.icu/source/test/intltest/numfmtst.cpp 2016-03-23 21:48:40.000000000 +0100
++++ icu/source/test/intltest/numfmtst.cpp 2016-04-15 18:34:06.150251997 +0200
+@@ -730,6 +730,12 @@
+ void
+ NumberFormatTest::TestExponential(void)
+ {
++/* erAck: fails on armv7hl,
https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
++#if 1
++ /* Actually only 3 tests fail, but given the nested structure depending on
++ * array sizes there's no simple "disable this and that". */
++ return;
++#endif
+ UErrorCode status = U_ZERO_ERROR;
+ DecimalFormatSymbols sym(Locale::getUS(), status);
+ if (U_FAILURE(status)) { errcheckln(status, "FAIL: Bad status returned by
DecimalFormatSymbols ct - %s", u_errorName(status)); return; }
+@@ -1846,8 +1852,11 @@
+ (int32_t) 45678000, "5E7", status);
+ expect(new DecimalFormat("00E0", US, status),
+ (int32_t) 45678000, "46E6", status);
++/* erAck: fails on armv7hl,
https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
++#if 0
+ expect(new DecimalFormat("000E0", US, status),
+ (int32_t) 45678000, "457E5", status);
++#endif
+ /*
+ expect(new DecimalFormat("###E0", US, status),
+ new Object[] { new Double(0.0000123), "12.3E-6",
diff --git a/compat-libicu62.spec b/compat-libicu62.spec
new file mode 100644
index 0000000..b429015
--- /dev/null
+++ b/compat-libicu62.spec
@@ -0,0 +1,93 @@
+Name: compat-libicu62
+Version: 62.1
+Release: 1%{?dist}
+Summary: Compat package with icu libraries
+
+License: MIT and UCD and Public Domain
+URL:
http://www.icu-project.org/
+Source0:
http://download.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
+
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: doxygen, autoconf, python2
+
+Patch4: gennorm2-man.patch
+Patch5: icuinfo-man.patch
+Patch6: rhbz1646703-icu4c-ICU-20246-integer-overflow.patch
+Patch100: armv7hl-disable-tests.patch
+
+# Explicitly conflict with older icu packages that ship libraries
+# with the same soname as this compat package
+Conflicts: libicu < 63
+
+%description
+Compatibility package with libicu libraries ABI version 61.
+
+
+%prep
+%setup -q -n icu
+%patch4 -p1 -b .gennorm2-man.patch
+%patch5 -p1 -b .icuinfo-man.patch
+%patch6 -p2 -b .rhbz1646703-icu4c-ICU-20246-integer-overflow.patch
+%ifarch armv7hl
+%patch100 -p1 -b .armv7hl-disable-tests.patch
+%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
+
+#rhbz856594 do not use --disable-renaming or cope with the mess
+OPTIONS='--with-data-packaging=library --disable-samples'
+%if 0%{?debugtrace}
+OPTIONS=$OPTIONS' --enable-debug --enable-tracing'
+%endif
+%configure $OPTIONS
+
+#rhbz#225896
+sed -i 's|-nodefaultlibs -nostdlib||' config/mh-linux
+#rhbz#813484
+sed -i 's| \$(docfilesdir)/installdox||' Makefile
+# There is no source/doc/html/search/ directory
+sed -i '/^\s\+\$(INSTALL_DATA) \$(docsrchfiles)
\$(DESTDIR)\$(docdir)\/\$(docsubsrchdir)\s*$/d' Makefile
+# rhbz#856594 The configure --disable-renaming and possibly other options
+# result in icu/source/uconfig.h.prepend being created, include that content in
+# icu/source/common/unicode/uconfig.h to propagate to consumer packages.
+test -f uconfig.h.prepend && sed -e '/^#define __UCONFIG_H__/ r
uconfig.h.prepend' -i common/unicode/uconfig.h
+
+# more verbosity for build.log
+sed -i -r 's|(PKGDATA_OPTS = )|\1-v |' data/Makefile
+
+make %{?_smp_mflags} VERBOSE=1
+
+
+%install
+make %{?_smp_mflags} -C source install DESTDIR=$RPM_BUILD_ROOT
+chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so.*
+
+# Remove files that aren't needed for the compat package
+rm -rf $RPM_BUILD_ROOT%{_bindir}
+rm -rf $RPM_BUILD_ROOT%{_includedir}
+rm -rf $RPM_BUILD_ROOT%{_libdir}/*.so
+rm -rf $RPM_BUILD_ROOT%{_libdir}/icu/
+rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig/
+rm -rf $RPM_BUILD_ROOT%{_sbindir}
+rm -rf $RPM_BUILD_ROOT%{_datadir}/icu/
+rm -rf $RPM_BUILD_ROOT%{_mandir}
+
+
+%files
+%license LICENSE
+%{_libdir}/*.so.*
+
+
+%changelog
+* Wed Jan 23 2019 Pete Walter <pwalter(a)fedoraproject.org> - 62.1-1
+- Initial packaging
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(a)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/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(a)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/rhbz1646703-icu4c-ICU-20246-integer-overflow.patch
b/rhbz1646703-icu4c-ICU-20246-integer-overflow.patch
new file mode 100644
index 0000000..3debd3f
--- /dev/null
+++ b/rhbz1646703-icu4c-ICU-20246-integer-overflow.patch
@@ -0,0 +1,50 @@
+From 53d8c8f3d181d87a6aa925b449b51c4a2c922a51 Mon Sep 17 00:00:00 2001
+From: Shane Carr <shane(a)unicode.org>
+Date: Mon, 29 Oct 2018 23:52:44 -0700
+Subject: [PATCH] ICU-20246 Fixing another integer overflow in number parsing.
+
+---
+ icu4c/source/i18n/fmtable.cpp | 2 +-
+ icu4c/source/i18n/number_decimalquantity.cpp | 5 ++++-
+ icu4c/source/test/intltest/numfmtst.cpp | 8 ++++++++
+ .../icu/impl/number/DecimalQuantity_AbstractBCD.java | 5 ++++-
+ .../impl/number/DecimalQuantity_DualStorageBCD.java | 10 +++++++++-
+ .../com/ibm/icu/dev/test/format/NumberFormatTest.java | 5 +++++
+ 6 files changed, 31 insertions(+), 4 deletions(-)
+
+erAck:
+* obviously removed the icu4j *.java patch parts
+* stripped the icu4c/source/test/intltest/numfmtst.cpp part because it
+ added code to a test that does not exist yet in ICU 62.1
+ * TODO: when upgrading to ICU 63.1 add that back in from
+
https://github.com/unicode-org/icu/commit/53d8c8f3d181d87a6aa925b449b51c4...
+
+diff --git a/icu4c/source/i18n/fmtable.cpp b/icu4c/source/i18n/fmtable.cpp
+index 45c7024fc29..8601d95f4a6 100644
+--- a/icu4c/source/i18n/fmtable.cpp
++++ b/icu4c/source/i18n/fmtable.cpp
+@@ -734,7 +734,7 @@ CharString *Formattable::internalGetCharString(UErrorCode
&status) {
+ // not print scientific notation for magnitudes greater than -5 and smaller than
some amount (+5?).
+ if (fDecimalQuantity->isZero()) {
+ fDecimalStr->append("0", -1, status);
+- } else if (std::abs(fDecimalQuantity->getMagnitude()) < 5) {
++ } else if (fDecimalQuantity->getMagnitude() != INT32_MIN &&
std::abs(fDecimalQuantity->getMagnitude()) < 5) {
+ fDecimalStr->appendInvariantChars(fDecimalQuantity->toPlainString(),
status);
+ } else {
+ fDecimalStr->appendInvariantChars(fDecimalQuantity->toScientificString(),
status);
+diff --git a/icu4c/source/i18n/number_decimalquantity.cpp
b/icu4c/source/i18n/number_decimalquantity.cpp
+index 47b930a564b..d5dd7ae694c 100644
+--- a/icu4c/source/i18n/number_decimalquantity.cpp
++++ b/icu4c/source/i18n/number_decimalquantity.cpp
+@@ -898,7 +898,10 @@ UnicodeString DecimalQuantity::toScientificString() const {
+ }
+ result.append(u'E');
+ int32_t _scale = upperPos + scale;
+- if (_scale < 0) {
++ if (_scale == INT32_MIN) {
++ result.append({u"-2147483648", -1});
++ return result;
++ } else if (_scale < 0) {
+ _scale *= -1;
+ result.append(u'-');
+ } else {
diff --git a/sources b/sources
new file mode 100644
index 0000000..f897dee
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (icu4c-62_1-src.tgz) =
8295f2754fb6907e2cc8f515dccca05530963b544e89a2b8e323cd0ddfdbbe0c9eba8b367c1dbc04d7bb906b66b1003fd545ca05298939747c832c9d4431cf2a