From: Alexander Kanavin Date: Tue, 23 Jun 2020 21:08:37 +0000 (+0200) Subject: icu: make filtered data generation optional, serial and off by default X-Git-Tag: 2020-04.2-dunfell~36 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=df4bfb154e7fce9645f5738aa04b3eb3ef5093fe;p=openembedded-core.git 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. Signed-off-by: Alexander Kanavin Signed-off-by: Richard Purdie (cherry picked from commit df89e8d1136fd406ba35ae573e2cb0cfc88c6aad) Signed-off-by: Steve Sakoman --- 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() { # 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/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" 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}' \ @@ -56,7 +60,7 @@ do_make_icudata_class-target () { LDFLAGS='${BUILD_LDFLAGS}' \ ICU_DATA_FILTER_FILE=${WORKDIR}/filter.json \ ./runConfigureICU Linux --with-data-packaging=archive - oe_runmake ${PARALLEL_MAKE} + oe_runmake install -Dm644 ${S}/data/out/icudt${ICU_MAJOR_VER}l.dat ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat }