[OE-core] [PATCH] glibc-locale: Rewrite do_install using install utility instead of cp

ChenQi Qi.Chen at windriver.com
Thu Feb 28 01:53:35 UTC 2019


Just to provide some feedback.
Even with this patch, this annoying QA issue is still there.
WARNING: glibc-locale-2.29-r0 do_package_qa: QA Issue: glibc-locale: 
/glibc-binary-localedata-wo-sn/usr/lib/locale/wo_SN/LC_CTYPE is owned by 
uid 1001, which is the same as the user running bitbake. This may be due 
to host contamination [host-user-contaminated]

Best Regards,
Chen Qi

On 02/07/2019 08:35 AM, Khem Raj wrote:
> This has been a constant source of trouble for build failures due to host-user-contaminated QA
> errors of sort
>
> ERROR: QA Issue: glibc-locale: /glibc-binary-localedata-ca-es+valencia/usr/lib/locale/ca_ES at valencia/LC_MONETARY is owned by uid 3004, which is the same as the user running bitbake. This may be due to host contamination [host-user-contaminated]
>
> So far we have tried to mould cp command into not carrying the build
> user permissions into install area but it is never entirely fixed since
> the issue keeps popping up in various scenes
>
> This patch replaces use of cp with install utility and specifies install
> mode for files explcitly
>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> ---
>   meta/recipes-core/glibc/glibc-locale.inc | 44 ++++++++++++++----------
>   1 file changed, 25 insertions(+), 19 deletions(-)
>
> diff --git a/meta/recipes-core/glibc/glibc-locale.inc b/meta/recipes-core/glibc/glibc-locale.inc
> index 6384f9cbf1..9b256a5108 100644
> --- a/meta/recipes-core/glibc/glibc-locale.inc
> +++ b/meta/recipes-core/glibc/glibc-locale.inc
> @@ -72,27 +72,33 @@ FILES_localedef = "${bindir}/localedef"
>   LOCALETREESRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale"
>   
>   do_install () {
> -	mkdir -p ${D}${bindir} ${D}${datadir}
> -	if [ -n "$(ls ${LOCALETREESRC}/${bindir})" ]; then
> -		cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${bindir}/* ${D}${bindir}
> -	fi
> -	if [ -n "$(ls ${LOCALETREESRC}/${localedir})" ]; then
> -		mkdir -p ${D}${localedir}
> -		cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${localedir}/* ${D}${localedir}
> -	fi
> +        install -d ${D}${bindir}
> +        find "${LOCALETREESRC}/${bindir}" -maxdepth 1 -type f \
> +        -exec install -m 0755 -t "${D}${bindir}" {} \;
> +
> +        for d in . $(find "${LOCALETREESRC}/${localedir}" -type d -printf '%P ') ; do
> +                install -d "${D}${localedir}/$d"
> +                find "${LOCALETREESRC}/${localedir}/$d" -maxdepth 1 -type f \
> +                -exec install -m 0644 -t "${D}${localedir}/$d" {} \;
> +        done
>   	if [ ${@d.getVar('PACKAGE_NO_GCONV')} -eq 0 ]; then
> -		mkdir -p ${D}${libdir}
> -		if [ -e ${LOCALETREESRC}/${libdir}/gconv ]; then
> -			cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${libdir}/gconv ${D}${libdir}
> -		fi
> -		if [ -e ${LOCALETREESRC}/${datadir}/i18n ]; then
> -			cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${datadir}/i18n ${D}${datadir}
> -		fi
> -	fi
> -	if [ -e ${LOCALETREESRC}/${datadir}/locale ]; then
> -		cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${datadir}/locale ${D}${datadir}
> +                for d in . $(find "${LOCALETREESRC}/${libdir}/gconv" -type d -printf '%P ') ; do
> +                        install -d "${D}${libdir}/gconv/$d"
> +                        find "${LOCALETREESRC}/${libdir}/gconv/$d" -maxdepth 1 -type f \
> +                        -exec install -m 0755 -t "${D}${libdir}/gconv/$d" {} \;
> +                done
> +                for d in . $(find "${LOCALETREESRC}/${datadir}/i18n" -type d -printf '%P ') ; do
> +                        install -d "${D}${datadir}/i18n/$d"
> +                        find "${LOCALETREESRC}/${datadir}/i18n/$d" -maxdepth 1 -type f \
> +                        -exec install -m 0644 -t "${D}${datadir}/i18n/$d" {} \;
> +                done
>   	fi
> -	cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/SUPPORTED ${WORKDIR}
> +        for d in . $(find "${LOCALETREESRC}/${datadir}/locale" -type d -printf '%P ') ; do
> +                install -d "${D}${datadir}/locale/$d"
> +                find "${LOCALETREESRC}/${datadir}/locale/$d" -maxdepth 1 -type f \
> +                -exec install -m 0644 -t "${D}${datadir}/locale/$d" {} \;
> +        done
> +	install -m 0644 ${LOCALETREESRC}/SUPPORTED ${WORKDIR}/SUPPORTED
>   }
>   
>   inherit libc-package




More information about the Openembedded-core mailing list