From 05696923f63499174554113d5b0c8b83b483d314 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 8 Feb 2017 12:29:04 +0000 Subject: glibc-package: Avoid race sstate races with do_stash_locale 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. (From OE-Core rev: 2a60bba00da9c4e2b1a1ce30e509dba82cc6c94a) (From OE-Core rev: 9660e4d75230a8aed91a2fc4c887e332f52914e2) Signed-off-by: Richard Purdie Signed-off-by: Armin Kuster Signed-off-by: Richard Purdie --- meta/recipes-core/glibc/glibc-package.inc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc index b8239e0f02..6f4e71d1de 100644 --- a/meta/recipes-core/glibc/glibc-package.inc +++ b/meta/recipes-core/glibc/glibc-package.inc @@ -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 -- cgit v1.2.3-54-g00ecf