summaryrefslogtreecommitdiffstats
path: root/external/poky/meta/recipes-support/icu
diff options
context:
space:
mode:
Diffstat (limited to 'external/poky/meta/recipes-support/icu')
-rw-r--r--external/poky/meta/recipes-support/icu/icu.inc11
-rw-r--r--external/poky/meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch28
-rw-r--r--external/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch30
-rw-r--r--external/poky/meta/recipes-support/icu/icu/0002-Add-ARC-support.patch27
-rw-r--r--external/poky/meta/recipes-support/icu/icu/CVE-2020-10531.patch128
-rw-r--r--external/poky/meta/recipes-support/icu/icu/filter.json2
-rw-r--r--external/poky/meta/recipes-support/icu/icu/fix-install-manx.patch21
-rw-r--r--external/poky/meta/recipes-support/icu/icu_62.1.bb29
-rw-r--r--external/poky/meta/recipes-support/icu/icu_66.1.bb71
9 files changed, 271 insertions, 76 deletions
diff --git a/external/poky/meta/recipes-support/icu/icu.inc b/external/poky/meta/recipes-support/icu/icu.inc
index e20085fb..670cbedb 100644
--- a/external/poky/meta/recipes-support/icu/icu.inc
+++ b/external/poky/meta/recipes-support/icu/icu.inc
@@ -35,13 +35,6 @@ TARGET_CXXFLAGS_append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', '
ASNEEDED = ""
-# 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.
-do_configure_prepend_libc-musl () {
- sed -i -e 's,DU_HAVE_STRTOD_L=1,DU_HAVE_STRTOD_L=0,' ${S}/configure.ac
-}
-
do_compile_prepend_class-target () {
# Make sure certain build host references do not end up being compiled
# in the image. This only affects libicutu and icu-dbg
@@ -66,7 +59,9 @@ do_install_append_class-target() {
# Use icupkg to re-generate it.
if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then
rm -f ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat
- icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat
+ if [ -f ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ]; then
+ icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat
+ fi
fi
# Remove build host references...
diff --git a/external/poky/meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch b/external/poky/meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch
new file mode 100644
index 00000000..91d68848
--- /dev/null
+++ b/external/poky/meta/recipes-support/icu/icu/0001-Fix-big-endian-build.patch
@@ -0,0 +1,28 @@
+From 9be0b489a94b57419202c552022f25cb95bfac51 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 17 Apr 2019 16:41:58 +0200
+Subject: [PATCH] Fix big-endian build
+
+Bug-report: https://unicode-org.atlassian.net/browse/ICU-20533
+Patch taken from: https://bugs.gentoo.org/682170
+
+it is applied upstream and will be in version 67+
+
+Upstream-Status: Backport [https://github.com/unicode-org/icu/commit/4a3a457b38cd828b7b3fa4fdbc6e2504a57275e9]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ data/Makefile.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/data/Makefile.in
++++ b/data/Makefile.in
+@@ -148,7 +148,8 @@ ICUDATA_ARCHIVE = $(firstword $(wildcard
+ # and convert it to the current type.
+ ifneq ($(ICUDATA_ARCHIVE),)
+ ICUDATA_SOURCE_ARCHIVE = $(OUTDIR)/$(ICUDATA_PLATFORM_NAME).dat
+-$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE) $(OUTDIR)
++$(ICUDATA_SOURCE_ARCHIVE): $(ICUDATA_ARCHIVE)
++ $(MKINSTALLDIRS) $(OUTDIR)
+ $(INVOKE) $(TOOLBINDIR)/icupkg -t$(ICUDATA_CHAR) $(ICUDATA_ARCHIVE) $(ICUDATA_SOURCE_ARCHIVE)
+ endif
+ else
diff --git a/external/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch b/external/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch
new file mode 100644
index 00000000..299689d9
--- /dev/null
+++ b/external/poky/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch
@@ -0,0 +1,30 @@
+From 500321387ceca48934bb0f323779117cd518bab6 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Wed, 8 May 2019 14:42:30 +0900
+Subject: [PATCH] icu: Added armeb support.
+
+Make icu support arm32 BE.
+
+Upstream-Status: Pending
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ i18n/double-conversion-utils.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/i18n/double-conversion-utils.h b/i18n/double-conversion-utils.h
+index 1e44fca..e4f2a8b 100644
+--- a/i18n/double-conversion-utils.h
++++ b/i18n/double-conversion-utils.h
+@@ -92,7 +92,7 @@ int main(int argc, char** argv) {
+ //
+ // If it prints "correct" then the architecture should be here, in the "correct" section.
+ #if defined(_M_X64) || defined(__x86_64__) || \
+- defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
++ defined(__arm__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
+ defined(__hppa__) || defined(__ia64__) || \
+ defined(__mips__) || \
+ defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
+--
+2.7.4
+
diff --git a/external/poky/meta/recipes-support/icu/icu/0002-Add-ARC-support.patch b/external/poky/meta/recipes-support/icu/icu/0002-Add-ARC-support.patch
deleted file mode 100644
index 20e3d835..00000000
--- a/external/poky/meta/recipes-support/icu/icu/0002-Add-ARC-support.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From fcfd57105b4bdb30d906df152ef01748fa95daff Mon Sep 17 00:00:00 2001
-From: Alexey Brodkin <abrodkin@synopsys.com>
-Date: Thu, 13 Sep 2018 17:13:20 +0300
-Subject: [PATCH] icu: Add ARC support
-
-Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
-
-Upstream-Status: Submitted [ https://github.com/unicode-org/icu/pull/149 ]
----
- i18n/double-conversion-utils.h | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/i18n/double-conversion-utils.h b/i18n/double-conversion-utils.h
-index 57fc49b231a3..0bd3e8340673 100644
---- a/i18n/double-conversion-utils.h
-+++ b/i18n/double-conversion-utils.h
-@@ -86,7 +86,7 @@ inline void abort_noreturn() { abort(); }
- defined(__SH4__) || defined(__alpha__) || \
- defined(_MIPS_ARCH_MIPS32R2) || \
- defined(__AARCH64EL__) || defined(__aarch64__) || \
-- defined(__riscv)
-+ defined(__riscv) || defined(__arc__)
- #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
- #elif defined(__mc68000__)
- #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
-2.17.1
-
diff --git a/external/poky/meta/recipes-support/icu/icu/CVE-2020-10531.patch b/external/poky/meta/recipes-support/icu/icu/CVE-2020-10531.patch
new file mode 100644
index 00000000..6697b27d
--- /dev/null
+++ b/external/poky/meta/recipes-support/icu/icu/CVE-2020-10531.patch
@@ -0,0 +1,128 @@
+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
+
+Upstream-Status: Accepted
+CVE: CVE-2020-10531
+
+Reference to upstream patch:
+https://github.com/unicode-org/icu/commit/b7d08bc04a4296982fcef8b6b8a354a9e4e7afca
+
+---
+ common/unistr.cpp | 6 ++-
+ test/intltest/ustrtest.cpp | 62 +++++++++++++++++++++++++++++++
+ test/intltest/ustrtest.h | 1 +
+ 3 files changed, 68 insertions(+), 1 deletion(-)
+
+diff --git a/common/unistr.cpp b/common/unistr.cpp
+index 901bb33..6ea0915 100644
+--- a/common/unistr.cpp
++++ b/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/test/intltest/ustrtest.cpp b/test/intltest/ustrtest.cpp
+index b6515ea..ad38bdf 100644
+--- a/test/intltest/ustrtest.cpp
++++ b/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/test/intltest/ustrtest.h b/test/intltest/ustrtest.h
+index 218befd..4a356a9 100644
+--- a/test/intltest/ustrtest.h
++++ b/test/intltest/ustrtest.h
+@@ -97,6 +97,7 @@ public:
+ void TestWCharPointers();
+ void TestNullPointers();
+ void TestUnicodeStringInsertAppendToSelf();
++ void TestLargeAppend();
+ };
+
+ #endif
+--
+2.17.1
+
diff --git a/external/poky/meta/recipes-support/icu/icu/filter.json b/external/poky/meta/recipes-support/icu/icu/filter.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/external/poky/meta/recipes-support/icu/icu/filter.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/external/poky/meta/recipes-support/icu/icu/fix-install-manx.patch b/external/poky/meta/recipes-support/icu/icu/fix-install-manx.patch
index 8186fb41..925b064e 100644
--- a/external/poky/meta/recipes-support/icu/icu/fix-install-manx.patch
+++ b/external/poky/meta/recipes-support/icu/icu/fix-install-manx.patch
@@ -1,7 +1,7 @@
-From 3063a9211669bee673840ee81f81d30699b9b702 Mon Sep 17 00:00:00 2001
+From a6ddabc8cadb76bfe2d2e374a6702442cfe51cce Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Fri, 9 Oct 2015 17:50:41 +0100
-Subject: [PATCH 2/4] icu: fix install race
+Subject: [PATCH] icu: fix install race
The generic recursive target calls target-local so also adding it to the
dependency list results in races due to install-local being executed twice in
@@ -18,11 +18,11 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
source/Makefile.in | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-diff --git a/source/Makefile.in b/source/Makefile.in
-index c1db15b..4948deb 100644
+diff --git a/Makefile.in b/Makefile.in
+index be9435b..ada20d7 100644
--- a/Makefile.in
+++ b/Makefile.in
-@@ -73,7 +73,7 @@ EXTRA_DATA =
+@@ -77,7 +77,7 @@ EXTRA_DATA =
## List of phony targets
.PHONY : all all-local all-recursive install install-local install-udata install-udata-files install-udata-dlls \
@@ -31,7 +31,7 @@ index c1db15b..4948deb 100644
distclean-local distclean-recursive doc dist dist-local dist-recursive \
check check-local check-recursive clean-recursive-with-twist install-icu \
doc install-doc tests icu4j-data icu4j-data-install update-windows-makefiles xcheck-local xcheck-recursive xperf xcheck xperf-recursive \
-@@ -84,9 +84,9 @@ check-exhaustive check-exhaustive-local check-exhaustive-recursive releaseDist
+@@ -88,9 +88,9 @@ check-exhaustive check-exhaustive-local check-exhaustive-recursive releaseDist
## List of standard targets
all: all-local all-recursive
@@ -43,15 +43,12 @@ index c1db15b..4948deb 100644
dist: dist-recursive
check: all check-recursive
check-recursive: all
-@@ -350,7 +350,7 @@ config.status: $(srcdir)/configure $(srcdir)/common/unicode/uvernum.h
-
+@@ -357,7 +357,7 @@ config.status: $(srcdir)/configure $(srcdir)/common/unicode/uvernum.h
install-manx: $(MANX_FILES)
$(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
+ ifneq ($(MANX_FILES),)
- $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
+ $(INSTALL_DATA) $^ $(DESTDIR)$(mandir)/man$(SECTION)
+ endif
config/%.$(SECTION): $(srcdir)/config/%.$(SECTION).in
- cd $(top_builddir) \
---
-2.14.2
-
diff --git a/external/poky/meta/recipes-support/icu/icu_62.1.bb b/external/poky/meta/recipes-support/icu/icu_62.1.bb
deleted file mode 100644
index 4e3750b9..00000000
--- a/external/poky/meta/recipes-support/icu/icu_62.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-require icu.inc
-
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=63752c57bd0b365c9af9f427ef79c819"
-
-def icu_download_version(d):
- pvsplit = d.getVar('PV').split('.')
- return pvsplit[0] + "_" + pvsplit[1]
-
-ICU_PV = "${@icu_download_version(d)}"
-
-# http://errors.yoctoproject.org/Errors/Details/20486/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-BASE_SRC_URI = "http://download.icu-project.org/files/icu4c/${PV}/icu4c-${ICU_PV}-src.tgz"
-SRC_URI = "${BASE_SRC_URI} \
- file://icu-pkgdata-large-cmd.patch \
- file://fix-install-manx.patch \
- file://0002-Add-ARC-support.patch \
- "
-
-SRC_URI_append_class-target = "\
- file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
- "
-SRC_URI[md5sum] = "490ad9d920158e0314e10ba74ae9a150"
-SRC_URI[sha256sum] = "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"
-
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
-UPSTREAM_CHECK_URI = "http://download.icu-project.org/files/icu4c/"
diff --git a/external/poky/meta/recipes-support/icu/icu_66.1.bb b/external/poky/meta/recipes-support/icu/icu_66.1.bb
new file mode 100644
index 00000000..08254648
--- /dev/null
+++ b/external/poky/meta/recipes-support/icu/icu_66.1.bb
@@ -0,0 +1,71 @@
+require icu.inc
+
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=a3808a5b70071b07f87ff2205e4d75a0"
+
+def icu_download_version(d):
+ pvsplit = d.getVar('PV').split('.')
+ return pvsplit[0] + "_" + pvsplit[1]
+
+def icu_download_folder(d):
+ pvsplit = d.getVar('PV').split('.')
+ return pvsplit[0] + "-" + pvsplit[1]
+
+ICU_PV = "${@icu_download_version(d)}"
+ICU_FOLDER = "${@icu_download_folder(d)}"
+
+# http://errors.yoctoproject.org/Errors/Details/20486/
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+BASE_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-src.tgz"
+DATA_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-data.zip"
+SRC_URI = "${BASE_SRC_URI};name=code \
+ ${DATA_SRC_URI};name=data \
+ file://filter.json \
+ file://icu-pkgdata-large-cmd.patch \
+ file://fix-install-manx.patch \
+ file://0001-Fix-big-endian-build.patch;apply=no \
+ file://0001-icu-Added-armeb-support.patch \
+ file://CVE-2020-10531.patch \
+ "
+
+SRC_URI_append_class-target = "\
+ file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
+ "
+SRC_URI[code.sha256sum] = "52a3f2209ab95559c1cf0a14f24338001f389615bf00e2585ef3dbc43ecf0a2e"
+SRC_URI[data.sha256sum] = "8be647f738891d2beb79d48f99077b3499948430eae6f1be112553b15ab0243e"
+
+UPSTREAM_CHECK_REGEX = "icu4c-(?P<pver>\d+(_\d+)+)-src"
+UPSTREAM_CHECK_URI = "https://github.com/unicode-org/icu/releases"
+
+EXTRA_OECONF_append_libc-musl = " ac_cv_func_strtod_l=no"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[make-icudata] = ",,,"
+
+do_make_icudata_class-target () {
+ cd ${S}
+ rm -rf data
+ cp -a ${WORKDIR}/data .
+ patch -p1 < ${WORKDIR}/0001-Fix-big-endian-build.patch
+ ${@bb.utils.contains('PACKAGECONFIG', 'make-icudata', '', 'exit 0', d)}
+ AR='${BUILD_AR}' \
+ CC='${BUILD_CC}' \
+ CPP='${BUILD_CPP}' \
+ CXX='${BUILD_CXX}' \
+ RANLIB='${BUILD_RANLIB}' \
+ CFLAGS='${BUILD_CFLAGS}' \
+ CPPFLAGS='${BUILD_CPPFLAGS}' \
+ CXXFLAGS='${BUILD_CXXFLAGS}' \
+ LDFLAGS='${BUILD_LDFLAGS}' \
+ ICU_DATA_FILTER_FILE=${WORKDIR}/filter.json \
+ ./runConfigureICU Linux --with-data-packaging=archive
+ oe_runmake
+ install -Dm644 ${S}/data/out/icudt${ICU_MAJOR_VER}l.dat ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat
+}
+
+do_make_icudata() {
+ :
+}
+
+addtask make_icudata before do_configure after do_patch