summaryrefslogtreecommitdiff
path: root/libre
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2020-05-04 10:19:26 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2020-05-04 10:53:52 -0400
commit6d2b9390bd29f95d418b95955d12e3ec0b01008d (patch)
treed6a42d80f847035ddb2c1cde2ce12dcbb0e6a00f /libre
parent60cea9d5505dc314ca0dadc17d83e8696df71261 (diff)
downloadabslibre-6d2b9390bd29f95d418b95955d12e3ec0b01008d.tar.gz
abslibre-6d2b9390bd29f95d418b95955d12e3ec0b01008d.tar.bz2
abslibre-6d2b9390bd29f95d418b95955d12e3ec0b01008d.zip
[icu-parabola]: upgrade to v67
Diffstat (limited to 'libre')
-rw-r--r--libre/icu-parabola/PKGBUILD71
-rw-r--r--libre/icu-parabola/icu-65.1-initialized-buffer-uloc_getKeywordValue.patch23
-rw-r--r--libre/icu-parabola/icu-65.1-prevent-SEGV_MAPERR-in-append.patch118
3 files changed, 30 insertions, 182 deletions
diff --git a/libre/icu-parabola/PKGBUILD b/libre/icu-parabola/PKGBUILD
index 02050e006..555ea0e06 100644
--- a/libre/icu-parabola/PKGBUILD
+++ b/libre/icu-parabola/PKGBUILD
@@ -3,18 +3,21 @@
# Contributor (Parabola): Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.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 that depends
-# on ICU as soon as the new Arch Linux, Arch Linux 32 and Arch Linux ARM ICU
-# packages are synchronized into the Parabola repositories, we have an issue.
#
-# At the time of writing, the synchronization is automatic and can happen at
-# any time.
+# 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 silently
+# 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.
@@ -22,16 +25,12 @@
# 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 packages as their dependencies could not be
-# met anymore if the ICU would have been upgraded.
-# However this workaround prevents installing packages that depends on the new
-# ICU if you have packages that depends on the old ICU. It also prevent users
-# from upgrading their system when that occurs.
+# 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. The synchronization could then be
-# done (semi-)automatically at a source level.
-#
+# 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.
@@ -42,7 +41,7 @@
# depend on that distribution's ICU.
#
# The downside of this workaround is that it consumes more resources and it
-# doesn't scale: If we want to avoid all the breakages introduced by that issue
+# doesn't scale: If we want to avoid all the breakages introduced by that issue,
# we would then need to have a Parabola version of all the dependencies of the
# Parabola packages, which has many issues:
# - It would increase the work of Parabola maintainers as we would need to
@@ -54,55 +53,45 @@
# So the idea is to only use it for libraries that often have this issue.
#
# Changes:
-# - Changed the configure prefix (to enable both libraries to be installed in
-# parallel)
+# - Changed the configure prefix (to allow both sets of libraries to be co-exist)
# - Added icu-parabola.conf and a .install to run ldconfig after installation in
# order to take into account the path of this library version.
pkgname=icu-parabola
_pkgname=icu
-pkgver=65.1
-pkgrel=3
-pkgrel=1.parabola1
+pkgver=67.1
+pkgrel=1
+pkgrel=.parabola1
pkgdesc="International Components for Unicode library"
-arch=('armv7h' 'i686' 'x86_64')
+arch=(x86_64)
+arch+=(armv7h i686)
url="http://site.icu-project.org/home"
license=('custom:icu')
depends=('gcc-libs' 'sh')
makedepends=('python')
-#makedepends=('clang')
-# no https available
-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)
+# provides=(libicu{data,i18n,io,test,tu,uc}.so) # TODO: is this needed - or will it break stuff?
install="${pkgname}.install"
-# https://github.com/unicode-org/icu/releases/download/release-65-1/SHASUM512.txt
-sha512sums=('8f1ef33e1f4abc9a8ee870331c59f01b473d6da1251a19ce403f822f3e3871096f0791855d39c8f20c612fc49cda2c62c06864aa32ddab2dbd186d2b21ce9139'
- 'SKIP'
- '8898fe0fa9805304cd2fc02c00ab1131861836f4d11887f82450c2378666cb03bce0c5038d3f0bdcdd1c1cdee2a00a61ef85602ed0e0c74ad2e58578b1940123'
- '580283cdd95fb7b8410cb3a6c0f47a6c8e53e0fdc9c213b04cd133ba4120381533ff2aef89ddab968150754bd9ca3a536d5c592c6881e625eb8ee6de8723de1b')
+source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/${_pkgname}4c-${pkgver//./_}-src.tgz{,.asc})
+# https://github.com/unicode-org/icu/releases/download/release-65-1/SHASUM512.txt - no checksum file for v67 release
+sha512sums=('4779f1ce1ca7976f6fad6768853ea8c540da54d11509e3b6cfd864a04b5f2db1c3d4b546387f91ad02fb90804525bc37d2543173f0d705d6ca11dc6f2b7640a8'
+ 'SKIP')
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
-
# icu-parabola.conf will go in /etc/ld.so.conf.d
echo "/opt/parabola/icu/lib" > icu-parabola.conf
}
build() {
cd icu/source
- ./configure \
- --prefix=/opt/parabola/icu \
+ ./configure --prefix=/opt/parabola/icu \
+ --mandir=/usr/share/man \
--sbindir=/opt/parabola/icu/bin
make
}
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