diff options
author | Matthias Schiffer <matthias.schiffer@ew.tq-group.com> | 2018-11-06 09:56:23 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-11-08 22:21:01 +0000 |
commit | 8079e2d62e23f7c274f46185e6dad64fa95394c1 (patch) | |
tree | 6c67c1464caa039491d781da746702ab196350da /meta/classes/base.bbclass | |
parent | 84bb9c0514ecbd7c31935c22062b18b4aaefbef1 (diff) | |
download | openembedded-core-contrib-8079e2d62e23f7c274f46185e6dad64fa95394c1.tar.gz |
base.bbclass: avoid 'find -ignore_readdir_race -delete'
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@ew.tq-group.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/base.bbclass')
-rw-r--r-- | meta/classes/base.bbclass | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 57b69492ce3..bc9b236b840 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -309,7 +309,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 |