[OE-core] [PATCH v2] base.bbclass: avoid 'find -ignore_readdir_race -delete'

Matthias Schiffer matthias.schiffer at ew.tq-group.com
Fri Nov 23 10:35:32 UTC 2018


On Tue, 2018-11-06 at 09:56 +0100, matthias.schiffer at ew.tq-group.com
wrote:
> From: Matthias Schiffer <matthias.schiffer at ew.tq-group.com>
> 
> Due to a bug in find [1], -ignore_readdir_race does not work
> correctly with
> -delete. This can lead to spurious build failures when files
> disappear
> while such a command is running; specifically this was seen in the
> case of
> do_configure and do_populate_lic running concurrently for packages
> with ${B} == ${WORKDIR}:
> 
>    find: '.../sstate-build-populate_lic': No such file or directory
> 
> While the issue is fixed in the findutils git master, the find
> command of
> the host system is called here, so we can't ensure that the used
> version
> contains the fix. Many common distros have not updated to a recent
> enough
> findutils version yet (Ubuntu 18.10 contains the fix, while 18.04 is
> still
> affected).
> 
> Work around the issue by passing the output of find to 'rm -f'
> instead of
> using -delete.
> 
> [1] https://savannah.gnu.org/bugs/?52981
> 
> Signed-off-by: Matthias Schiffer <matthias.schiffer at ew.tq-group.com>
> ---
> 
> It would be great if this patch could be backported to all versions
> back to
> Rocko, as our current setup is still based on Rocko.

Is there any chance we can get this backported?

Thanks,
Matthias


> 
> v2: add comment, extend commit message
> 
> 
>  meta/classes/base.bbclass | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> index df11c8b270..9efb06de5f 100644
> --- a/meta/classes/base.bbclass
> +++ b/meta/classes/base.bbclass
> @@ -303,7 +303,9 @@ base_do_configure() {
>  			if [ "${CLEANBROKEN}" != "1" -a \( -e Makefile
> -o -e makefile -o -e GNUmakefile \) ]; then
>  				oe_runmake clean
>  			fi
> -			find ${B} -ignore_readdir_race -name \*.la
> -delete
> +			# -ignore_readdir_race does not work correctly
> with -delete;
> +			# use xargs to avoid spurious build failures
> +			find ${B} -ignore_readdir_race -name \*.la
> -type f -print0 | xargs -0 rm -f
>  		fi
>  	fi
>  	if [ -n "${CONFIGURESTAMPFILE}" ]; then



More information about the Openembedded-core mailing list