]> code.ossystems Code Review - openembedded-core.git/commitdiff
glibc-package: Avoid race sstate races with do_stash_locale
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 8 Feb 2017 12:29:04 +0000 (12:29 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 9 Feb 2017 10:50:54 +0000 (10:50 +0000)
The change to make do_stash_locale an sstate task between do_install and
do_package has some unforeseen problems since the function deletes part of
${D} but may or may not run depending on whether the task is installed from
sstate.

This cleans up the current "pre packaging" function to be more deterministic
and result in the same set of files, whichever code path we end up reaching
that point by. Its not an ideal sitation but it should avoid the race
failures we've seen on some builds.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-core/glibc/glibc-package.inc

index 557b9589bc58be42e1a53338b79ae0556ac9edf1..f0fc9c1cc4c4c9307011d997e743bc1e90ed6d46 100644 (file)
@@ -192,18 +192,23 @@ python do_stash_locale_setscene () {
 }
 addtask do_stash_locale_setscene
 
-PACKAGE_PREPROCESS_FUNCS += "glibc_package_preprocess"
-
-glibc_package_preprocess () {
+do_poststash_install_cleanup () {
+       # Remove all files which do_stash_locale would remove (mv)
+       # since that task could have come from sstate and not get run.
        for i in ${bashscripts}; do
-           rm -f ${PKGD}${bindir}/$i
+           rm -f ${D}${bindir}/$i
        done
-       rm -rf ${PKGD}/${localedir}
+       rm -f ${D}${bindir}/localedef
+       rm -rf ${D}${datadir}/i18n
+       rm -rf ${D}${libdir}/gconv
+       rm -rf ${D}/${localedir}
+       rm -rf ${D}${datadir}/locale
        if [ "${libdir}" != "${exec_prefix}/lib" ]; then
                # This dir only exists to hold locales
-               rm -rf ${PKGD}${exec_prefix}/lib
+               rm -rf ${D}${exec_prefix}/lib
        fi
 }
+addtask do_poststash_install_cleanup after do_stash_locale do_install before do_populate_sysroot do_package
 
 pkg_postinst_nscd () {
        if [ -z "$D" ]; then