Le 24/03/2020 à 23:10, Laurent Vivier a écrit : > Le 24/03/2020 à 14:14, Peter Maydell a écrit : >> On Tue, 24 Mar 2020 at 12:32, Laurent Vivier <laur...@vivier.eu> wrote: >>> OK, I think there is an existing problem in the build dependencies. >>> >>> Do you use enable all targets ("configure" without parameters)? >>> Do you run make with "all" or "x86_64-linux-user/all"? >> >> This config is >> '../../configure' '--cc=ccache gcc' '--enable-debug' '--static' >> '--disable-system' '--disable-gnutls' >> and it is an incremental build, so just >> >> make --output-sync -C build/all-linux-static -j8 >> make --output-sync -C build/all-linux-static check V=1 -j8 >> make --output-sync -C ~/linaro/linux-user-test-0.3/ test >> make --output-sync -C build/all-linux-static check-tcg >> >> (it's step 3 that fails here). >> > > The problem is introduced by the change I made to be able to bisect > while we move syscall_nr.h from source dir to build dir (as said by > Richard): > > 4d6a835dea47 ("linux-user: introduce parameters to generate syscall_nr.h") > > There is also a new problem introduced by: > > 5f29856b852d(" linux-user, configure: improve syscall_nr.h dependencies > checking") > > that doesn't scan arch variant (it scans ppc64-linux-user but not > ppc64le-linux-user). > > The best solution I can propose is to simply remove the piece of code > I've added in configure and let the user to do a "make clean" if the > build fails because of the move of syscall_nr.h from source dir to build > dir.
This change fixes both problems: --- a/configure +++ b/configure @@ -1910,9 +1910,11 @@ for arch in alpha hppa m68k xtensa sh4 microblaze arm ppc s390x sparc sparc64 \ # remove the file if it has been generated in the source directory rm -f "${source_path}/linux-user/${arch}/syscall_nr.h" # remove the dependency files - test -d ${arch}-linux-user && find ${arch}-linux-user -type f -name "*.d" \ - -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \ - -exec rm {} \; + for target in ${arch}*-linux-user ; do + test -d "${target}" && find "${target}" -type f -name "*.d" \ + -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \ + -print | while read file ; do set -x; rm "${file}" "${file%.d}.o" ; set +x ; done + done done if test -z "$python" Thanks, Laurent