diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2020-06-11 11:02:26 +0200 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2020-06-11 16:43:01 +0200 |
commit | 8caa1ac001b4bb4f6137239c9516119e3b9206f6 (patch) | |
tree | beb671cc68e37530fbc694d3988ff9d7cf0fa499 /libre/icu-parabola | |
parent | 08de71b1e72e9cd59b43b2cfc607adda36298c5f (diff) | |
download | abslibre-8caa1ac001b4bb4f6137239c9516119e3b9206f6.tar.gz abslibre-8caa1ac001b4bb4f6137239c9516119e3b9206f6.tar.bz2 abslibre-8caa1ac001b4bb4f6137239c9516119e3b9206f6.zip |
libre: icu: enable to provide compatibility for multiple versions
This should enable to have more than one compatibility library
at the same time.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Diffstat (limited to 'libre/icu-parabola')
3 files changed, 0 insertions, 283 deletions
diff --git a/libre/icu-parabola/PKGBUILD b/libre/icu-parabola/PKGBUILD deleted file mode 100644 index 86ae232d4..000000000 --- a/libre/icu-parabola/PKGBUILD +++ /dev/null @@ -1,142 +0,0 @@ -# Maintainer (Arch): Andreas Radke <andyrtr@archlinux.org> -# Contributor (Arch): Art Gramlich <art@gramlich-net.com> -# Contributor (Parabola): Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> -# Contributor (Parabola): Eli Schwartz <eschwartz@archlinux.org> - -# parabola changes and rationale: -# -# Several Parabola packages depends on ICU, and the ICU soname changes often. -# This means that if we don't rebuild all the Parabola packages which depend -# on ICU, as soon as the new ArchLinux, ArchLinux32, and ArchLinuxARM ICU -# packages are synchronized into the Parabola repositories, we have a problem. -# The repo server synchronizes with the upstream repos un-attended; so this -# is a wonderful surprise each time; and we hustle frantucally to get the -# system sane again. We could watch the testing and staging repos of each -# upstream, and start re-building everything in a Parabola staging repo; -# but that could result in discarded work, if those exact versions are not the -# ones which are eventually released into [core]. -# -# At first nothing was done to fix or workaround that issue. In practice, -# once a new ICU was synchronized, many users were upgrading before the -# Parabola packages had the time to be rebuilt. For such users, it -# broke all the installed Parabola packages that were depending on the old ICU. -# This means that users had to find a way to downgrade packages manually or wait -# until developers would finally have rebuilt all the packages that were broken. -# -# Then such packages were modified to make them depend on the exact version of -# the ICU packages they were built against. This way, once the new ICU package -# was synchronized, users could not upgrade if they had packages that were not -# rebuilt yet against the new ICU package. However this workaround also prevents -# installing packages that depends on the new ICU. -# -# The correct fix would probably be to automatically build all the Packages -# instead of relying on Arch Linux Packages. Still, a staging repo would be -# required to hold the new packages, until they all can be released together sanely. -# However we don't have the code, configuration and/or infrastructure to run -# an automatic builder for all packages yet even if there is work in this -# direction. -# -# In the meantime, this version of ICU is meant to enable Parabola packages to -# link against it at runtime. This enables all the Parabola packages to depend -# only on the ICU version, which is usually the upstream distribution's ICU but -# is occasionally this ICU if the Parabola package has not yet been rebuilt -# after an ICU update. -# -# It is inspired by the admittedly awkward hack of versioned library -# dependencies more commonly seen in e.g. the AUR as 'icu65' or somesuch which -# proprietary binaries built against Debian's ICU will depend on, but awkward -# is in the eyes of the beholder and this elegantly scales to Parabola's needs, -# without consuming increasing resources, which is the best definition of "not -# awkward". -# -# To use it, simply add the following dependency to any package which parabola -# has built or rebuilt: -# -# depends=('libicui18n.so') -# -# or whichever shared library is reported by readelf -d /path/to/compiled/ELF/file -# and, every time the upstream distribution upgrades ICU, update this package -# as well, to ensure it always stays exactly one version behind. -# -# This works well for ICU, even for packages which link to both the older and -# newer versions of libicu*.so, since ICU uses versioned symbols as reported by -# -# nm -D --demangle --with-symbol-versions /path/to/library -# -# However, caution must be taken before implementing the same idea for other -# libraries. So the idea is to only use it for libraries that often have this -# issue. -# -# Changes: -# - remove all files other than libicu*.so.* -# - depend on icu; this is needed because if the package is installed on its -# own, ldconfig will create untracked symlinks which were supposed to be -# installed by the icu package. - -pkgname=icu-parabola -_pkgname=icu -pkgver=65.1 -pkgrel=3 -pkgrel+=.parabola2 -pkgdesc="International Components for Unicode library" -pkgdesc+=" (compatibility libraries for the previous release)" -arch=(x86_64) -arch+=(armv7h i686) -url="http://site.icu-project.org/home" -license=('custom:icu') -depends=('gcc-libs' 'sh') -# require the main ICU version always be > this one -depends+=("icu>$pkgver") -conflicts=("icu<=$pkgver") -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} - icu-65.1-initialized-buffer-uloc_getKeywordValue.patch::https://github.com/unicode-org/icu/commit/fab4c3c719.patch - icu-65.1-prevent-SEGV_MAPERR-in-append.patch::https://github.com/unicode-org/icu/commit/b7d08bc04a.patch) -# https://github.com/unicode-org/icu/releases/download/release-65-1/SHASUM512.txt - no checksum file for v67 release -sha512sums=('8f1ef33e1f4abc9a8ee870331c59f01b473d6da1251a19ce403f822f3e3871096f0791855d39c8f20c612fc49cda2c62c06864aa32ddab2dbd186d2b21ce9139' - 'SKIP' - '8898fe0fa9805304cd2fc02c00ab1131861836f4d11887f82450c2378666cb03bce0c5038d3f0bdcdd1c1cdee2a00a61ef85602ed0e0c74ad2e58578b1940123' - '580283cdd95fb7b8410cb3a6c0f47a6c8e53e0fdc9c213b04cd133ba4120381533ff2aef89ddab968150754bd9ca3a536d5c592c6881e625eb8ee6de8723de1b') -validpgpkeys=('BA90283A60D67BA0DD910A893932080F4FB419E3') # "Steven R. Loomis (filfla-signing) <srloomis@us.ibm.com>" -validpgpkeys+=('9731166CD8E23A83BEE7C6D3ACA5DBE1FD8FABF1') # "Steven R. Loomis (ICU Project) <srl@icu-project.org>" -validpgpkeys+=('FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7') # "Fredrik Roubert <fredrik@roubert.name>" -validpgpkeys+=('E4098B78AFC94394F3F49AA903996C7C83F12F11') # "keybase.io/srl295 <srl295@keybase.io>" -validpgpkeys+=('4569BBC09DA846FC91CBD21CE1BBA44593CF2AE0') # "Steven R. Loomis (codesign-qormi) <srloomis@us.ibm.com>" - -prepare() { - cd icu - - # https://unicode-org.atlassian.net/browse/ICU-20884 - patch -Np2 -i ../icu-65.1-initialized-buffer-uloc_getKeywordValue.patch - - # https://github.com/unicode-org/icu/pull/971 - patch -Np2 -i ../icu-65.1-prevent-SEGV_MAPERR-in-append.patch -} - -build() { - cd icu/source - ./configure --prefix=/usr \ - --sysconfdir=/etc \ - --mandir=/usr/share/man \ - --sbindir=/usr/bin - make -} - -check() { - cd icu/source - make -k check -} - -package() { - cd icu/source - make -j1 DESTDIR="${pkgdir}" install - - # Install license - install -Dm644 "${srcdir}"/icu/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" - - # to avoid conflicts against the preferred 'icu' package, we remove all files - # except the actual shared libraries - rm -r "${pkgdir}"/usr/{bin,include,lib/{icu,pkgconfig},share} - rm "${pkgdir}"/usr/lib/*.so -} diff --git a/libre/icu-parabola/icu-65.1-initialized-buffer-uloc_getKeywordValue.patch b/libre/icu-parabola/icu-65.1-initialized-buffer-uloc_getKeywordValue.patch deleted file mode 100644 index 475921d23..000000000 --- a/libre/icu-parabola/icu-65.1-initialized-buffer-uloc_getKeywordValue.patch +++ /dev/null @@ -1,23 +0,0 @@ -From fab4c3c719977205a3f005ddfd7fffbb9c19c587 Mon Sep 17 00:00:00 2001 -From: Frank Tang <ftang@chromium.org> -Date: Wed, 30 Oct 2019 17:45:22 -0700 -Subject: [PATCH] ICU-20884 initialized buffer uloc_getKeywordValue - ---- - icu4c/source/common/uloc.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/icu4c/source/common/uloc.cpp b/icu4c/source/common/uloc.cpp -index 6a9bfcfbff5..ea81c0ce87f 100644 ---- a/icu4c/source/common/uloc.cpp -+++ b/icu4c/source/common/uloc.cpp -@@ -766,6 +766,9 @@ uloc_getKeywordValue(const char* localeID, - char* buffer, int32_t bufferCapacity, - UErrorCode* status) - { -+ if (buffer != nullptr) { -+ buffer[0] = '\0'; -+ } - const char* startSearchHere = NULL; - const char* nextSeparator = NULL; - char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN]; diff --git a/libre/icu-parabola/icu-65.1-prevent-SEGV_MAPERR-in-append.patch b/libre/icu-parabola/icu-65.1-prevent-SEGV_MAPERR-in-append.patch deleted file mode 100644 index 07b3db677..000000000 --- a/libre/icu-parabola/icu-65.1-prevent-SEGV_MAPERR-in-append.patch +++ /dev/null @@ -1,118 +0,0 @@ -From b7d08bc04a4296982fcef8b6b8a354a9e4e7afca Mon Sep 17 00:00:00 2001 -From: Frank Tang <ftang@chromium.org> -Date: Sat, 1 Feb 2020 02:39:04 +0000 -Subject: [PATCH] ICU-20958 Prevent SEGV_MAPERR in append - -See #971 ---- - icu4c/source/common/unistr.cpp | 6 ++- - icu4c/source/test/intltest/ustrtest.cpp | 62 +++++++++++++++++++++++++ - icu4c/source/test/intltest/ustrtest.h | 1 + - 3 files changed, 68 insertions(+), 1 deletion(-) - -diff --git a/icu4c/source/common/unistr.cpp b/icu4c/source/common/unistr.cpp -index 901bb3358ba..077b4d6ef20 100644 ---- a/icu4c/source/common/unistr.cpp -+++ b/icu4c/source/common/unistr.cpp -@@ -1563,7 +1563,11 @@ UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLeng - } - - int32_t oldLength = length(); -- int32_t newLength = oldLength + srcLength; -+ int32_t newLength; -+ if (uprv_add32_overflow(oldLength, srcLength, &newLength)) { -+ setToBogus(); -+ return *this; -+ } - - // Check for append onto ourself - const UChar* oldArray = getArrayStart(); -diff --git a/icu4c/source/test/intltest/ustrtest.cpp b/icu4c/source/test/intltest/ustrtest.cpp -index b6515ea813c..ad38bdf53a3 100644 ---- a/icu4c/source/test/intltest/ustrtest.cpp -+++ b/icu4c/source/test/intltest/ustrtest.cpp -@@ -67,6 +67,7 @@ void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* & - TESTCASE_AUTO(TestWCharPointers); - TESTCASE_AUTO(TestNullPointers); - TESTCASE_AUTO(TestUnicodeStringInsertAppendToSelf); -+ TESTCASE_AUTO(TestLargeAppend); - TESTCASE_AUTO_END; - } - -@@ -2310,3 +2311,64 @@ void UnicodeStringTest::TestUnicodeStringInsertAppendToSelf() { - str.insert(2, sub); - assertEquals("", u"abbcdcde", str); - } -+ -+void UnicodeStringTest::TestLargeAppend() { -+ if(quick) return; -+ -+ IcuTestErrorCode status(*this, "TestLargeAppend"); -+ // Make a large UnicodeString -+ int32_t len = 0xAFFFFFF; -+ UnicodeString str; -+ char16_t *buf = str.getBuffer(len); -+ // A fast way to set buffer to valid Unicode. -+ // 4E4E is a valid unicode character -+ uprv_memset(buf, 0x4e, len * 2); -+ str.releaseBuffer(len); -+ UnicodeString dest; -+ // Append it 16 times -+ // 0xAFFFFFF times 16 is 0xA4FFFFF1, -+ // which is greater than INT32_MAX, which is 0x7FFFFFFF. -+ int64_t total = 0; -+ for (int32_t i = 0; i < 16; i++) { -+ dest.append(str); -+ total += len; -+ if (total <= INT32_MAX) { -+ assertFalse("dest is not bogus", dest.isBogus()); -+ } else { -+ assertTrue("dest should be bogus", dest.isBogus()); -+ } -+ } -+ dest.remove(); -+ total = 0; -+ for (int32_t i = 0; i < 16; i++) { -+ dest.append(str); -+ total += len; -+ if (total + len <= INT32_MAX) { -+ assertFalse("dest is not bogus", dest.isBogus()); -+ } else if (total <= INT32_MAX) { -+ // Check that a string of exactly the maximum size works -+ UnicodeString str2; -+ int32_t remain = INT32_MAX - total; -+ char16_t *buf2 = str2.getBuffer(remain); -+ if (buf2 == nullptr) { -+ // if somehow memory allocation fail, return the test -+ return; -+ } -+ uprv_memset(buf2, 0x4e, remain * 2); -+ str2.releaseBuffer(remain); -+ dest.append(str2); -+ total += remain; -+ assertEquals("When a string of exactly the maximum size works", (int64_t)INT32_MAX, total); -+ assertEquals("When a string of exactly the maximum size works", INT32_MAX, dest.length()); -+ assertFalse("dest is not bogus", dest.isBogus()); -+ -+ // Check that a string size+1 goes bogus -+ str2.truncate(1); -+ dest.append(str2); -+ total++; -+ assertTrue("dest should be bogus", dest.isBogus()); -+ } else { -+ assertTrue("dest should be bogus", dest.isBogus()); -+ } -+ } -+} -diff --git a/icu4c/source/test/intltest/ustrtest.h b/icu4c/source/test/intltest/ustrtest.h -index 218befdcc68..4a356a92c7a 100644 ---- a/icu4c/source/test/intltest/ustrtest.h -+++ b/icu4c/source/test/intltest/ustrtest.h -@@ -97,6 +97,7 @@ class UnicodeStringTest: public IntlTest { - void TestWCharPointers(); - void TestNullPointers(); - void TestUnicodeStringInsertAppendToSelf(); -+ void TestLargeAppend(); - }; - - #endif |