]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
base.bbclass: avoid 'find -ignore_readdir_race -delete'
authorMatthias Schiffer <matthias.schiffer@ew.tq-group.com>
Tue, 6 Nov 2018 08:56:23 +0000 (09:56 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 9 Nov 2018 15:27:34 +0000 (15:27 +0000)
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

(From OE-Core rev: 8079e2d62e23f7c274f46185e6dad64fa95394c1)

Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/base.bbclass

index 57b69492ce324374c972f415cd6828c1a83e8c86..bc9b236b840e7dcb7b633a9db7bcab6a9b1ab8c6 100644 (file)
@@ -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