diff --git a/icu/ICU-22132.patch b/icu/ICU-22132.patch new file mode 100644 index 0000000000..3b93c920f0 --- /dev/null +++ b/icu/ICU-22132.patch @@ -0,0 +1,25 @@ +diff -u a/i18n/vtzone.cpp a/i18n/vtzone.cpp +--- a/i18n/vtzone.cpp 2023-07-14 09:05:38.000000000 +0100 ++++ b/i18n/vtzone.cpp 2023-07-14 09:05:38.000000000 +0100 +@@ -1735,14 +1735,14 @@ + } + } + } else { +- UnicodeString icutzprop; +- UVector customProps(nullptr, uhash_compareUnicodeString, status); ++ UVector customProps(uprv_deleteUObject, uhash_compareUnicodeString, status); + if (olsonzid.length() > 0 && icutzver.length() > 0) { +- icutzprop.append(olsonzid); +- icutzprop.append(u'['); +- icutzprop.append(icutzver); +- icutzprop.append(u']'); +- customProps.addElement(&icutzprop, status); ++ LocalPointer icutzprop(new UnicodeString(ICU_TZINFO_PROP), status); ++ icutzprop->append(olsonzid); ++ icutzprop->append(u'['); ++ icutzprop->append(icutzver); ++ icutzprop->append(u']'); ++ customProps.adoptElement(icutzprop.orphan(), status); + } + writeZone(writer, *tz, &customProps, status); + } \ No newline at end of file diff --git a/icu/ICU-22356.patch b/icu/ICU-22356.patch new file mode 100644 index 0000000000..62cecb97f7 --- /dev/null +++ b/icu/ICU-22356.patch @@ -0,0 +1,117 @@ +From 4fd9d6ce9a951e66e727b296138f22cd05479de1 Mon Sep 17 00:00:00 2001 +From: Fredrik Roubert +Date: Tue, 18 Apr 2023 23:39:28 +0200 +Subject: [PATCH] ICU-22356 Use ConstChar16Ptr to safely cast from UChar* to + char16_t*. + +This is necessary for this header file to be usable by clients that +define UCHAR_TYPE as a type not compatible with char16_t, eg. uint16_t. +--- + icu4c/source/common/unicode/ures.h | 9 +++++---- + icu4c/source/test/intltest/Makefile.in | 2 +- + icu4c/source/test/intltest/intltest.vcxproj | 1 + + icu4c/source/test/intltest/intltest.vcxproj.filters | 3 +++ + icu4c/source/test/intltest/uchar_type_build_test.cpp | 7 +++++++ + 5 files changed, 17 insertions(+), 5 deletions(-) + create mode 100644 icu4c/source/test/intltest/uchar_type_build_test.cpp + +diff --git a/icu4c/source/common/unicode/ures.h b/icu4c/source/common/unicode/ures.h +index cc25b6e49cd..babc01d426a 100644 +--- a/icu4c/source/common/unicode/ures.h ++++ b/icu4c/source/common/unicode/ures.h +@@ -25,6 +25,7 @@ + #ifndef URES_H + #define URES_H + ++#include "unicode/char16ptr.h" + #include "unicode/utypes.h" + #include "unicode/uloc.h" + +@@ -812,7 +813,7 @@ inline UnicodeString + ures_getUnicodeString(const UResourceBundle *resB, UErrorCode* status) { + UnicodeString result; + int32_t len = 0; +- const char16_t *r = ures_getString(resB, &len, status); ++ const char16_t *r = ConstChar16Ptr(ures_getString(resB, &len, status)); + if(U_SUCCESS(*status)) { + result.setTo(true, r, len); + } else { +@@ -837,7 +838,7 @@ inline UnicodeString + ures_getNextUnicodeString(UResourceBundle *resB, const char ** key, UErrorCode* status) { + UnicodeString result; + int32_t len = 0; +- const char16_t* r = ures_getNextString(resB, &len, key, status); ++ const char16_t* r = ConstChar16Ptr(ures_getNextString(resB, &len, key, status)); + if(U_SUCCESS(*status)) { + result.setTo(true, r, len); + } else { +@@ -859,7 +860,7 @@ inline UnicodeString + ures_getUnicodeStringByIndex(const UResourceBundle *resB, int32_t indexS, UErrorCode* status) { + UnicodeString result; + int32_t len = 0; +- const char16_t* r = ures_getStringByIndex(resB, indexS, &len, status); ++ const char16_t* r = ConstChar16Ptr(ures_getStringByIndex(resB, indexS, &len, status)); + if(U_SUCCESS(*status)) { + result.setTo(true, r, len); + } else { +@@ -882,7 +883,7 @@ inline UnicodeString + ures_getUnicodeStringByKey(const UResourceBundle *resB, const char* key, UErrorCode* status) { + UnicodeString result; + int32_t len = 0; +- const char16_t* r = ures_getStringByKey(resB, key, &len, status); ++ const char16_t* r = ConstChar16Ptr(ures_getStringByKey(resB, key, &len, status)); + if(U_SUCCESS(*status)) { + result.setTo(true, r, len); + } else { +diff --git a/icu4c/source/test/intltest/Makefile.in b/icu4c/source/test/intltest/Makefile.in +index 8007d3c1880..f57f8d995f4 100644 +--- a/icu4c/source/test/intltest/Makefile.in ++++ b/icu4c/source/test/intltest/Makefile.in +@@ -70,7 +70,7 @@ numbertest_parse.o numbertest_doubleconversion.o numbertest_skeletons.o \ + static_unisets_test.o numfmtdatadriventest.o numbertest_range.o erarulestest.o \ + formattedvaluetest.o formatted_string_builder_test.o numbertest_permutation.o \ + units_data_test.o units_router_test.o units_test.o displayoptions_test.o \ +-numbertest_simple.o ++numbertest_simple.o uchar_type_build_test.o + + DEPS = $(OBJECTS:.o=.d) + +diff --git a/icu4c/source/test/intltest/intltest.vcxproj b/icu4c/source/test/intltest/intltest.vcxproj +index 0985ba1e808..71ce1254038 100644 +--- a/icu4c/source/test/intltest/intltest.vcxproj ++++ b/icu4c/source/test/intltest/intltest.vcxproj +@@ -291,6 +291,7 @@ + + + ++ + + + +diff --git a/icu4c/source/test/intltest/intltest.vcxproj.filters b/icu4c/source/test/intltest/intltest.vcxproj.filters +index ffe9bc1467d..5d8777c5aaf 100644 +--- a/icu4c/source/test/intltest/intltest.vcxproj.filters ++++ b/icu4c/source/test/intltest/intltest.vcxproj.filters +@@ -568,6 +568,9 @@ + + formatting + ++ ++ configuration ++ + + + +diff --git a/icu4c/source/test/intltest/uchar_type_build_test.cpp b/icu4c/source/test/intltest/uchar_type_build_test.cpp +new file mode 100644 +index 00000000000..ca9335441a3 +--- /dev/null ++++ b/icu4c/source/test/intltest/uchar_type_build_test.cpp +@@ -0,0 +1,7 @@ ++// © 2023 and later: Unicode, Inc. and others. ++// License & terms of use: http://www.unicode.org/copyright.html#License ++ ++// ICU-22356 Test that client code can be built with UCHAR_TYPE redefined. ++#undef UCHAR_TYPE ++#define UCHAR_TYPE uint16_t ++#include "unicode/ures.h" diff --git a/icu/PKGBUILD b/icu/PKGBUILD index b9520b2407..8fee45cced 100644 --- a/icu/PKGBUILD +++ b/icu/PKGBUILD @@ -4,7 +4,7 @@ pkgname=icu pkgver=73.2 -pkgrel=1 +pkgrel=2 pkgdesc="International Components for Unicode library" arch=(x86_64 powerpc64le powerpc64 powerpc riscv64) url="https://icu.unicode.org" @@ -12,10 +12,12 @@ license=('custom:icu') depends=('gcc-libs' 'glibc' 'sh') makedepends=('python') provides=(libicu{data,i18n,io,test,tu,uc}.so) -source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/${pkgname}4c-${pkgver//./_}-src.tgz{,.asc}) +source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/${pkgname}4c-${pkgver//./_}-src.tgz{,.asc} + ICU-22132.patch) # https://github.com/unicode-org/icu/releases/download/release-73-2/SHASUM512.txt sha512sums=('76dd782db6205833f289d7eb68b60860dddfa3f614f0ba03fe7ec13117077f82109f0dc1becabcdf4c8a9c628b94478ab0a46134bdb06f4302be55f74027ce62' - 'SKIP') + 'SKIP' + '1178062ccfcf7ecc698c64132b3612e73f9c4b0bbfaa668ae2039f3eb4cb2722d0b08a9f45b057da10def7a308d5c8d14c0c644892e7f11092c9cc488c850ab7') #validpgpkeys=('BA90283A60D67BA0DD910A893932080F4FB419E3') # "Steven R. Loomis (filfla-signing) " #validpgpkeys+=('9731166CD8E23A83BEE7C6D3ACA5DBE1FD8FABF1') # "Steven R. Loomis (ICU Project) " #validpgpkeys+=('FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7') # "Fredrik Roubert " @@ -24,6 +26,11 @@ sha512sums=('76dd782db6205833f289d7eb68b60860dddfa3f614f0ba03fe7ec13117077f82109 #validpgpkeys=('0E51E7F06EF719FBD072782A5F56E5AFA63CCD33') #"Craig Cornelius (For use with ICU releases) " validpgpkeys=('3DA35301A7C330257B8755754058F67406EAA6AB') # Craig Cornelius +prepare() { + cd icu/source + patch -Np1 < "../../ICU-22132.patch" +} + build() { cd icu/source ./configure --prefix=/usr \ diff --git a/icu/keys/pgp/0E51E7F06EF719FBD072782A5F56E5AFA63CCD33.asc b/icu/keys/pgp/0E51E7F06EF719FBD072782A5F56E5AFA63CCD33.asc new file mode 100644 index 0000000000..8a35b6cfb4 --- /dev/null +++ b/icu/keys/pgp/0E51E7F06EF719FBD072782A5F56E5AFA63CCD33.asc @@ -0,0 +1,41 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=VLtP +-----END PGP PUBLIC KEY BLOCK----- diff --git a/icu/keys/pgp/3DA35301A7C330257B8755754058F67406EAA6AB.asc b/icu/keys/pgp/3DA35301A7C330257B8755754058F67406EAA6AB.asc new file mode 100644 index 0000000000..3389e93e8d --- /dev/null +++ b/icu/keys/pgp/3DA35301A7C330257B8755754058F67406EAA6AB.asc @@ -0,0 +1,41 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=oZq8 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/icu/keys/pgp/FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7.asc b/icu/keys/pgp/FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7.asc new file mode 100644 index 0000000000..37a42f7970 --- /dev/null +++ b/icu/keys/pgp/FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7.asc @@ -0,0 +1,63 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=wXuO +-----END PGP PUBLIC KEY BLOCK-----