diff --git a/common/shlibs b/common/shlibs index 75e83038768..abaf9b2b010 100644 --- a/common/shlibs +++ b/common/shlibs @@ -488,14 +488,14 @@ libKF5SyntaxHighlighting.so.5 syntax-highlighting-5.29.0_1 libbabl-0.1.so.0 babl-0.1.10_1 libbamf3.so.2 bamf-0.5.1_1 libgegl-0.2.so.0 gegl-0.2.0_1 -libiculx.so.57 icu-libs-57.1_1 -libicule.so.57 icu-libs-57.1_1 -libicuio.so.57 icu-libs-57.1_1 -libicui18n.so.57 icu-libs-57.1_1 -libicudata.so.57 icu-libs-57.1_1 -libicutu.so.57 icu-libs-57.1_1 -libicuuc.so.57 icu-libs-57.1_1 -libicutest.so.57 icu-libs-57.1_1 +libiculx.so.58 icu-libs-58.2_1 +libicule.so.58 icu-libs-58.2_1 +libicuio.so.58 icu-libs-58.2_1 +libicui18n.so.58 icu-libs-58.2_1 +libicudata.so.58 icu-libs-58.2_1 +libicutu.so.58 icu-libs-58.2_1 +libicuuc.so.58 icu-libs-58.2_1 +libicutest.so.58 icu-libs-58.2_1 libaspell.so.15 aspell-0.60_1 libpspell.so.15 aspell-0.60_1 libenchant.so.1 enchant-1.4.2_1 diff --git a/srcpkgs/icu/patches/icu-58.1-iterator-reset.patch b/srcpkgs/icu/patches/icu-58.1-iterator-reset.patch new file mode 100644 index 00000000000..da4b0d589b4 --- /dev/null +++ b/srcpkgs/icu/patches/icu-58.1-iterator-reset.patch @@ -0,0 +1,116 @@ +--- source/common/ulist.c ++++ source/common/ulist.c +@@ -30,5 +30,4 @@ + + int32_t size; +- int32_t currentIndex; + }; + +@@ -52,5 +51,4 @@ + newList->tail = NULL; + newList->size = 0; +- newList->currentIndex = -1; + + return newList; +@@ -81,6 +79,7 @@ + p->next->previous = p->previous; + } +- list->curr = NULL; +- list->currentIndex = 0; ++ if (p == list->curr) { ++ list->curr = p->next; ++ } + --list->size; + if (p->forceDelete) { +@@ -151,5 +150,4 @@ + list->head->previous = newItem; + list->head = newItem; +- list->currentIndex++; + } + +@@ -194,5 +192,4 @@ + curr = list->curr; + list->curr = curr->next; +- list->currentIndex++; + + return curr->data; +@@ -210,5 +207,4 @@ + if (list != NULL) { + list->curr = list->head; +- list->currentIndex = 0; + } + } +@@ -273,3 +269,2 @@ + return (UList *)(en->context); + } +- +--- source/i18n/ucol_res.cpp ++++ source/i18n/ucol_res.cpp +@@ -681,4 +681,5 @@ + } + memcpy(en, &defaultKeywordValues, sizeof(UEnumeration)); ++ ulist_resetList(sink.values); // Initialize the iterator. + en->context = sink.values; + sink.values = NULL; // Avoid deletion in the sink destructor. +--- source/test/intltest/apicoll.cpp ++++ source/test/intltest/apicoll.cpp +@@ -82,14 +82,7 @@ + col = Collator::createInstance(Locale::getEnglish(), success); + if (U_FAILURE(success)){ +- errcheckln(success, "Default Collator creation failed. - %s", u_errorName(success)); +- return; +- } +- +- StringEnumeration* kwEnum = col->getKeywordValuesForLocale("", Locale::getEnglish(),true,success); +- if (U_FAILURE(success)){ +- errcheckln(success, "Get Keyword Values for Locale failed. - %s", u_errorName(success)); +- return; +- } +- delete kwEnum; ++ errcheckln(success, "English Collator creation failed. - %s", u_errorName(success)); ++ return; ++ } + + col->getVersion(versionArray); +@@ -230,4 +223,27 @@ + delete aFrCol; + delete junk; ++} ++ ++void CollationAPITest::TestKeywordValues() { ++ IcuTestErrorCode errorCode(*this, "TestKeywordValues"); ++ LocalPointer col(Collator::createInstance(Locale::getEnglish(), errorCode)); ++ if (errorCode.logIfFailureAndReset("English Collator creation failed")) { ++ return; ++ } ++ ++ LocalPointer kwEnum( ++ col->getKeywordValuesForLocale("collation", Locale::getEnglish(), TRUE, errorCode)); ++ if (errorCode.logIfFailureAndReset("Get Keyword Values for English Collator failed")) { ++ return; ++ } ++ assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0); ++ const char *kw; ++ UBool hasStandard = FALSE; ++ while ((kw = kwEnum->next(NULL, errorCode)) != NULL) { ++ if (strcmp(kw, "standard") == 0) { ++ hasStandard = TRUE; ++ } ++ } ++ assertTrue("expect at least the 'standard' collation tailoring for English", hasStandard); + } + +@@ -2467,4 +2483,5 @@ + TESTCASE_AUTO_BEGIN; + TESTCASE_AUTO(TestProperty); ++ TESTCASE_AUTO(TestKeywordValues); + TESTCASE_AUTO(TestOperators); + TESTCASE_AUTO(TestDuplicate); +--- source/test/intltest/apicoll.h ++++ source/test/intltest/apicoll.h +@@ -36,4 +36,5 @@ + */ + void TestProperty(/* char* par */); ++ void TestKeywordValues(); + + /** diff --git a/srcpkgs/icu/template b/srcpkgs/icu/template index ce071481372..ed7f30be846 100644 --- a/srcpkgs/icu/template +++ b/srcpkgs/icu/template @@ -1,6 +1,6 @@ # Template build file for 'icu'. pkgname=icu -version=57.1 +version=58.2 revision=1 wrksrc=icu build_wrksrc=source @@ -11,13 +11,23 @@ maintainer="Juan RP " homepage="http://www.icu-project.org/" license="ICU License /usr/share/licenses/icu/license.html" distfiles="http://download.icu-project.org/files/icu4c/${version}/icu4c-${version//./_}-src.tgz" -checksum=ff8c67cb65949b1e7808f2359f2b80f722697048e90e7cfc382ec1fe229e9581 +checksum=2b0a4410153a9b20de0e20c7d8b66049a72aef244b53683d0d7521371683da0c if [ "$CROSS_BUILD" ]; then configure_args+=" --with-cross-build=${XBPS_BUILDDIR}/${wrksrc}/host-icu" fi pre_configure() { + + # strtod_l() is not supported by musl; also xlocale.h is missing + # It is not possible to disable its use via configure switches or env vars + # so monkey patching is needed. Idea was stollen from openembedded + # https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-support/icu/icu.inc#L30 + # http://git.alpinelinux.org/cgit/aports/tree/main/icu/APKBUILD?id=46736e7b8040becc9f69ad6d2c2d317a52d5485b#n34 + case "${XBPS_TARGET_MACHINE}" in + *-musl) sed -i -e 's,DU_HAVE_STRTOD_L=1,DU_HAVE_STRTOD_L=0,' configure ;; + esac + if [ "$CROSS_BUILD" ]; then # Configure and build for host. mkdir host-build