[oe-commits] [openembedded-core] 40/54: glibc/glibc-locale: Fix do_stash_locale to work with usrmerge and multilibs

git at git.openembedded.org git at git.openembedded.org
Mon Sep 30 15:45:43 UTC 2019


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch warrior
in repository openembedded-core.

commit 36c223ecc5349478821a7a64a4ff14bbeae0a7da
Author: Jason Wessel <jason.wessel at windriver.com>
AuthorDate: Tue Jul 2 13:16:09 2019 -0700

    glibc/glibc-locale: Fix do_stash_locale to work with usrmerge and multilibs
    
    The do_stash_locale was not working consistently across the 4 build
    configurations and the multilib, usrmerge configuration would fail
    entirely with the obscure message:
    
    | DEBUG: Executing shell function do_prep_locale_tree
    | tar: i18n: Cannot stat: No such file or directory
    | tar: Exiting with failure status due to previous errors
    | gzip: /poky/build/tmp/work/core2-64-poky-linux/glibc-locale/2.29-r0/locale-tree//usr/share/i18n/charmaps/*gz.gz: No such file or directory
    | WARNING: /poky/build/tmp/work/core2-64-poky-linux/glibc-locale/2.29-r0/temp/run.do_prep_locale_tree.124690:1 exit 1 from 'gunzip $i'
    
    Here is the 4 build configurations without the patch applied:
    
    A) x86-64 no multilibs, no usrmerge
    find ./tmp/work/*/glibc/2.29-r0/stashed-locale -type f |grep -v nscd.service |wc -l
    909
    B) x86-64 no multilibs, usrmerge
    find ./tmp/work/*/glibc/2.29-r0/stashed-locale -type f |grep -v nscd.service |wc -l
    909
    C) x86-64 multilibs, no usrmerge
    find ./tmp/work/*/glibc/2.29-r0/stashed-locale -type f |grep -v nscd.service |wc -l
    885
    D) x86-64 multilibs, usrmerge
    find ./tmp/work/*/glibc/2.29-r0/stashed-locale -type f |grep -v nscd.service |wc -l
    864
    
    The issue here is that all the moves should be processed first, then a
    copy should be made of the lib directories, but only in the case they
    are different when using the usrmerge feature.  Even though the build
    worked for the multilib configuration without usrmerge, the content
    was not the same.
    
    After applying the patch the same number of files are in all the
    configurations.  The list of files was also diffed, after normalizing
    the directory names to ensure all the correct files were copied.
    
    Ultimately there are probably additional files that should be pruned
    from what is copied to the stated_locale, but the purpose of this
    patch is make it 100% consistent between the build types and fix the
    builds.
    
    Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
    Signed-off-by: Armin Kuster <akuster808 at gmail.com>
---
 meta/recipes-core/glibc/glibc-package.inc | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
index a1d79b3..ff17a19 100644
--- a/meta/recipes-core/glibc/glibc-package.inc
+++ b/meta/recipes-core/glibc/glibc-package.inc
@@ -162,21 +162,28 @@ bashscripts = "mtrace sotruss xtrace"
 do_stash_locale () {
 	dest=${LOCALESTASH}
 	install -d ${dest}${base_libdir} ${dest}${bindir} ${dest}${libdir} ${dest}${datadir}
-	if [ "${base_libdir}" != "${libdir}" ]; then
-		cp -fpPR ${D}${base_libdir}/* ${dest}${base_libdir}
-	fi
+	# Hide away the locale data from the deployment
 	if [ -e ${D}${bindir}/localedef ]; then
 		mv -f ${D}${bindir}/localedef ${dest}${bindir}
 	fi
 	if [ -e ${D}${libdir}/gconv ]; then
 		mv -f ${D}${libdir}/gconv ${dest}${libdir}
 	fi
-	if [ -e ${D}${exec_prefix}/lib ]; then
-		cp -fpPR ${D}${exec_prefix}/lib ${dest}${exec_prefix}
-	fi
 	if [ -e ${D}${datadir}/i18n ]; then
 		mv ${D}${datadir}/i18n ${dest}${datadir}
 	fi
+
+	# Make a copy of all the libraries into the locale stash
+	cp -fpPR ${D}${libdir}/* ${dest}${libdir}
+	if [ "${base_libdir}" != "${libdir}" ]; then
+		cp -fpPR ${D}${base_libdir}/* ${dest}${base_libdir}
+	fi
+	if [ -e ${D}${exec_prefix}/lib ]; then
+		if [ ${exec_prefix}/lib != ${base_libdir} ] && [ ${exec_prefix}/lib != ${libdir} ]; then
+			cp -fpPR ${D}${exec_prefix}/lib ${dest}${exec_prefix}
+		fi
+	fi
+
 	cp -fpPR ${D}${datadir}/* ${dest}${datadir}
 	rm -rf ${D}${datadir}/locale/
 	cp -fpPR ${WORKDIR}/SUPPORTED ${dest}

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list