diff options
| author | Alexander Kanavin <alex.kanavin@gmail.com> | 2020-06-23 23:08:37 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-07-16 22:28:40 +0100 |
| commit | 31a7824665ccc90c8a7ff01a7edcafea64a4fcb2 (patch) | |
| tree | 47f0373b138048313f4002929c6ed39688332580 | |
| parent | cee8ab3d17ac01ed9de4e9fa74b1ad29aa9d695e (diff) | |
| download | poky-31a7824665ccc90c8a7ff01a7edcafea64a4fcb2.tar.gz | |
icu: make filtered data generation optional, serial and off by default
Backported from master with two differences:
1. Move exit in do_make_icudata_class-target after big endian patch
application (not required for master since new upstream icu includes
the patch)
2. In do_install_append_class-target test for existence of .dat input
file before calling icupkg
icu data generation was found to be racy, and causig AB failures;
making it serial and leaving it on is not an option as it regresses
to several minutes.
The specific bug is that rules.mk has:
LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/gencnval -s . -d ./out/build/icudt66l mappings/convrtrs.txt
which creates a file and numerous rules like
LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/genrb -s ./misc -d ./out/build/icudt67l -i ./out/build/icudt67l -k -q numberingSystems.txt
which quietly read it. There is no prerequisite for the former to complete first.
The race is extra complicated to fix as rules.mk is itself
generated through a custom in-tree python tool.
(From OE-Core rev: df4bfb154e7fce9645f5738aa04b3eb3ef5093fe)
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit df89e8d1136fd406ba35ae573e2cb0cfc88c6aad)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-support/icu/icu.inc | 4 | ||||
| -rw-r--r-- | meta/recipes-support/icu/icu_66.1.bb | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/meta/recipes-support/icu/icu.inc b/meta/recipes-support/icu/icu.inc index 6d9728903d..670cbedbcb 100644 --- a/meta/recipes-support/icu/icu.inc +++ b/meta/recipes-support/icu/icu.inc | |||
| @@ -59,7 +59,9 @@ do_install_append_class-target() { | |||
| 59 | # Use icupkg to re-generate it. | 59 | # Use icupkg to re-generate it. |
| 60 | if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then | 60 | if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then |
| 61 | rm -f ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat | 61 | rm -f ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat |
| 62 | icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat | 62 | if [ -f ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ]; then |
| 63 | icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat | ||
| 64 | fi | ||
| 63 | fi | 65 | fi |
| 64 | 66 | ||
| 65 | # Remove build host references... | 67 | # Remove build host references... |
diff --git a/meta/recipes-support/icu/icu_66.1.bb b/meta/recipes-support/icu/icu_66.1.bb index a8096c1840..08254648e4 100644 --- a/meta/recipes-support/icu/icu_66.1.bb +++ b/meta/recipes-support/icu/icu_66.1.bb | |||
| @@ -40,11 +40,15 @@ UPSTREAM_CHECK_URI = "https://github.com/unicode-org/icu/releases" | |||
| 40 | 40 | ||
| 41 | EXTRA_OECONF_append_libc-musl = " ac_cv_func_strtod_l=no" | 41 | EXTRA_OECONF_append_libc-musl = " ac_cv_func_strtod_l=no" |
| 42 | 42 | ||
| 43 | PACKAGECONFIG ?= "" | ||
| 44 | PACKAGECONFIG[make-icudata] = ",,," | ||
| 45 | |||
| 43 | do_make_icudata_class-target () { | 46 | do_make_icudata_class-target () { |
| 44 | cd ${S} | 47 | cd ${S} |
| 45 | rm -rf data | 48 | rm -rf data |
| 46 | cp -a ${WORKDIR}/data . | 49 | cp -a ${WORKDIR}/data . |
| 47 | patch -p1 < ${WORKDIR}/0001-Fix-big-endian-build.patch | 50 | patch -p1 < ${WORKDIR}/0001-Fix-big-endian-build.patch |
| 51 | ${@bb.utils.contains('PACKAGECONFIG', 'make-icudata', '', 'exit 0', d)} | ||
| 48 | AR='${BUILD_AR}' \ | 52 | AR='${BUILD_AR}' \ |
| 49 | CC='${BUILD_CC}' \ | 53 | CC='${BUILD_CC}' \ |
| 50 | CPP='${BUILD_CPP}' \ | 54 | CPP='${BUILD_CPP}' \ |
| @@ -56,7 +60,7 @@ do_make_icudata_class-target () { | |||
| 56 | LDFLAGS='${BUILD_LDFLAGS}' \ | 60 | LDFLAGS='${BUILD_LDFLAGS}' \ |
| 57 | ICU_DATA_FILTER_FILE=${WORKDIR}/filter.json \ | 61 | ICU_DATA_FILTER_FILE=${WORKDIR}/filter.json \ |
| 58 | ./runConfigureICU Linux --with-data-packaging=archive | 62 | ./runConfigureICU Linux --with-data-packaging=archive |
| 59 | oe_runmake ${PARALLEL_MAKE} | 63 | oe_runmake |
| 60 | install -Dm644 ${S}/data/out/icudt${ICU_MAJOR_VER}l.dat ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat | 64 | install -Dm644 ${S}/data/out/icudt${ICU_MAJOR_VER}l.dat ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat |
| 61 | } | 65 | } |
| 62 | 66 | ||
