[info=a277388328da7e46f77b1f742ce0cbb5a6a68483f77d43f14b1e7c09e3f529c1]

OBS-URL: https://build.opensuse.org/package/show/X11:common:Factory/icu?expand=0&rev=176
This commit is contained in:
Jan Engelhardt 2024-10-02 11:10:10 +00:00 committed by Git OBS Bridge
commit 78c61c427e
17 changed files with 3064 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

4
_scmsync.obsinfo Normal file
View File

@ -0,0 +1,4 @@
mtime: 1716573005
commit: a277388328da7e46f77b1f742ce0cbb5a6a68483f77d43f14b1e7c09e3f529c1
url: https://src.opensuse.org/jengelh/icu
revision: master

4
baselibs.conf Normal file
View File

@ -0,0 +1,4 @@
libicu75
libicu-devel
requires -libicu-<targettype>
requires "libicu75-<targettype> = <version>"

3
build.specials.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:19c5593f9fa6138b7c74f7ea02563d33f45ee2b9586632d77ec4546574deb561
size 256

View File

@ -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
@@ -875,7 +875,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());
@@ -970,7 +971,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());

64
icu-error-reporting.diff Normal file
View File

@ -0,0 +1,64 @@
Date: 2014-08-13 15:39:48.523887951 +0200
From: Jan Engelhardt <jengelh@inai.de>
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 <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -748,7 +749,7 @@ Package::writePackage(const char *filena
// create the file and write its contents
file=fopen(filename, "wb");
if(file==nullptr) {
- 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==nullptr) {
- 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 <errno.h>
#include <stdio.h>
+#include <string.h>
#include <time.h>
// The C99 standard suggested that C++ implementations not define PRId64 etc. constants
@@ -75,8 +77,8 @@ usrc_createWithoutHeader(const char *pat
if (f==nullptr) {
fprintf(
stderr,
- "usrc_create(%s, %s): unable to create file\n",
- path!=nullptr ? path : "", filename);
+ "usrc_create(%s, %s): unable to create file: %s\n",
+ path!=nullptr ? path : "", filename, strerror(errno));
}
return f;
}

View File

@ -0,0 +1,53 @@
From: Jan Engelhardt <jengelh@inai.de>
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
@@ -178,16 +178,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)

1222
icu.changes Normal file

File diff suppressed because it is too large Load Diff

1314
icu.keyring Normal file

File diff suppressed because it is too large Load Diff

267
icu.spec Normal file
View File

@ -0,0 +1,267 @@
#
# spec file for package icu
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define lname libicu75
%define amajor 75
%define aversion 75
%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: 75.1
Release: 0
Summary: International Components for Unicode
License: ICU
Group: Development/Libraries/C and C++
URL: https://icu.unicode.org/
Source: https://github.com/unicode-org/icu/releases/download/release-75-1/icu4c-75_1-src.tgz
Source2: https://github.com/unicode-org/icu/releases/download/release-75-1/icu4c-75_1-src.tgz.asc
Source3: https://github.com/unicode-org/icu/releases/download/release-75-1/icu4c-75_1-docs.zip
Source4: https://github.com/unicode-org/icu/releases/download/release-75-1/icu4c-75_1-docs.zip.asc
Source5: %name.keyring
Source100: baselibs.conf
Patch4: icu-fix-install-mode-files.diff
Patch6: icu-error-reporting.diff
Patch7: icu-avoid-x87-excess-precision.diff
Patch8: locale.diff
Patch9: nan-undefined-conversion.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: pkg-config
BuildRequires: python3-base
BuildRequires: unzip
Provides: bundled(timezone) = 2024a
%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
BuildArch: noarch
%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
BuildArch: noarch
%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
%autosetup -p1 -n icu
# 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/\\\" -fexcess-precision=fast"
export CFLAGS="$CXXFLAGS"
%configure \
--disable-static \
--enable-shared \
--disable-samples \
--with-data-packaging=archive
%make_build 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_install
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 ! ICU_DATA="%buildroot/%_datadir/icu/%version" %make_build check VERBOSE=1; then
# oddly fails since 74
# did they mess up --with-data-packaging=archive
:
fi
%ldconfig_scriptlets -n %lname
%files
%_bindir/derb
%_bindir/gen*
%_bindir/icuinfo
%_bindir/makeconv
%_bindir/pkgdata
%_bindir/uconv
%_bindir/icuexportdata
%_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
%_libdir/libicu*.so.*
%files -n libicu%aversion-bedata
%dir %_datadir/icu
%dir %_datadir/icu/%version
%_datadir/icu/%version/icudt%{amajor}b.dat
%files -n libicu%aversion-ledata
%dir %_datadir/icu
%dir %_datadir/icu/%version
%_datadir/icu/%version/icudt%{amajor}l.dat
%files -n libicu-devel
%_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
%dir %_docdir/%name/
%_docdir/%name/html/
%changelog

3
icu4c-75_1-docs.zip Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5f089778c400bc621c4fdb8ff0a1256f0e3e1fbcc38ad7464eda69437535e3b9
size 9149973

14
icu4c-75_1-docs.zip.asc Normal file
View File

@ -0,0 +1,14 @@
-----BEGIN PGP SIGNATURE-----
iQGzBAABCgAdFiEEPaNTAafDMCV7h1V1QFj2dAbqpqsFAmYe92gACgkQQFj2dAbq
pqs+Wwv/TWn2FdngCmo2sLH+/sUTHuFVHe2Kc75SXPPwMEU8EycdXZpONZG8zyPx
DRJu0LJEBRQUulH3UAm7dIZHgygPc1SXa9NfbO4VCSy4q2gxHsRRmv83K3jZTpE6
jqgiY78NbvXizaxwCCdBrKFrVD/V98Ez7+AFt0e/uot+T9l/Go+E7MBg2PRsRxi6
iPyx13DluAQ594Lp2z2SxO1JiueN7IvK1lYK+5fPG+XcYupaedVVA75mXwo8z0au
wp2HPDYFIGdAwYI3yOSSfdrKWID8V1dbZWvNIFxLsLn9ihMrx78YrBbpbjcx46pF
/WJc7dMW9TUh3/oB0eYSw1MkrhO3IzabFOFb2bv7klR4mV6SMkaDjik1/WLbGqMz
fAdxag0ClCJDV8FS70WxgfL6zTPlXgQsr83ud3mGJcncTVQFkpVEiSudpg46aIZH
g7UbPeRtwkDivmUjsvoubwj5sh9upQM30HSYEKKTsZHgWGjTlTzEZE/A5+dDjvFS
jKAAxMA6
=NL/S
-----END PGP SIGNATURE-----

3
icu4c-75_1-src.tgz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb968df3e4d2e87e8b11c49a5d01c787bd13b9545280fc6642f826527618caef
size 26568378

14
icu4c-75_1-src.tgz.asc Normal file
View File

@ -0,0 +1,14 @@
-----BEGIN PGP SIGNATURE-----
iQGzBAABCgAdFiEEPaNTAafDMCV7h1V1QFj2dAbqpqsFAmYe924ACgkQQFj2dAbq
pqtdDQwAtkdxUaFTYGOO97bDj0TtGWAtTJa5os1UObJnrrqmRv3NMcrvVSLA+dnA
MU8okInvqks8fradtPfTwylh3fNQfTJPEKmHTf6e2izva6F1n8a8ugpEmI2p633O
N0UkgU7Y1TsGC0qw5U38Qu5tINSxpXZmiobsjqTDPoAev4NeTqWmTVFSM/lKeYYD
w+zxRuI/rbcCu3qnc0LyAekN5GC+r/hqKn9Kh3hqrpP2MfSZKsuhG3KDjIzcPln0
R4xUD/llRBM7hSfSlFJmD+x59yxkhB+JBKBIBbyuPGNChHW9Xk+21Z7lFaLox+SN
YYD4W7Uq2brdfjhTiRcpT3+Uqym4Rw4eVDYAH7TbPlcy3K60PZArFsnEmaJycYvy
i/tyalrUjzBX48AoQiB8me2wXkL7g/eFzqn/4P0auwqZ94gwh4TWebQp4Oti2HNw
hGBk0cEVoxWlszQZ9UHim76K9P2zxNZilxKcvlK43OPcZA5Ki0BX3fxHgxz+qEjI
+nYOQ/1S
=QxoD
-----END PGP SIGNATURE-----

20
locale.diff Normal file
View File

@ -0,0 +1,20 @@
Execute POSIX behavior not just on Solaris but all POSIX platforms.
References: https://bugzilla.opensuse.org/1162882
---
source/common/putil.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: icu/source/common/putil.cpp
===================================================================
--- icu.orig/source/common/putil.cpp
+++ icu/source/common/putil.cpp
@@ -1616,7 +1616,7 @@ static const char *uprv_getPOSIXIDForCat
/* Solaris speaks POSIX - See IEEE Std 1003.1-2008
* This is needed to properly handle empty env. variables
*/
-#if U_PLATFORM == U_PF_SOLARIS
+#if U_PLATFORM_IMPLEMENTS_POSIX
if ((posixID == 0) || (posixID[0] == '\0')) {
posixID = getenv(category == LC_MESSAGES ? "LC_MESSAGES" : "LC_CTYPE");
if ((posixID == 0) || (posixID[0] == '\0')) {

View File

@ -0,0 +1,22 @@
From 29f1188d191a7a75ac7ffa4bfa390f625da39c53 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Tue, 11 May 2021 19:04:24 +0200
Subject: [PATCH] ICU-21613 Fix undefined behaviour in
ComplexUnitsConverter::applyRounder
Index: icu/source/i18n/units_complexconverter.cpp
===================================================================
--- icu.orig/source/i18n/units_complexconverter.cpp
+++ icu/source/i18n/units_complexconverter.cpp
@@ -242,6 +242,11 @@ void ComplexUnitsConverter::applyRounder
}
quantity = decimalQuantity.toDouble();
+ if (uprv_isNaN(quantity) || uprv_isInfinite(quantity)) {
+ // Do nothing for non-finite values, since conversion to int64_t is undefined
+ return;
+ }
+
int32_t lastIndex = unitsConverters_.length() - 1;
if (lastIndex == 0) {
// Only one element, no need to bubble up the carry