Message ID | 20221004130138.2299307-29-alex.bennee@linaro.org |
---|---|
State | Accepted |
Commit | 730fe750fba63023e294ff0acf0f874369f1946f |
Headers | show |
Series | [PULL,01/54] scripts/ci/setup: ninja missing from build-environment | expand |
On Tue, Oct 04, 2022 at 02:01:12PM +0100, Alex Bennée wrote: > From: Paolo Bonzini <pbonzini@redhat.com> > > s390-ccw remains a bit more complex, because the -march=z900 test is done > only for the native cross compiler. Otherwise, all that is needed is > to pass the (now mandatory) target argument to write_target_makefile. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Message-Id: <20220929114231.583801-29-alex.bennee@linaro.org> This commit broke local builds on my machine because there were root-owned files in my QEMU source tree from some testing I had done previously. I think podman gives up when it encounters such files: Error: lsetxattr qemu/virtiofsd-1.sock: operation not permitted Traceback (most recent call last): File "qemu/tests/docker/docker.py", line 683, in <module> sys.exit(main()) File "qemu/tests/docker/docker.py", line 679, in main return args.cmdobj.run(args, argv) File "qemu/tests/docker/docker.py", line 657, in run return Docker().run(cmd, False, quiet=args.quiet, File "qemu/tests/docker/docker.py", line 370, in run ret = self._do_check(["run", "--rm", "--label", File "qemu/tests/docker/docker.py", line 247, in _do_check return subprocess.check_call(self._command + cmd, **kwargs) File "/usr/lib64/python3.10/subprocess.py", line 369, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['podman', 'run', '--rm', '--label', 'com.qemu.instance.uuid=e5f732db938a455cb4dca486dc9534d6', '--userns=keep-id', '-u', '1000', '-w', 'qemu/build/pc-bios/s390-ccw', '-v', 'qemu/build/pc-bios/s390-ccw:qemu/build/pc-bios/s390-ccw:rw', '-v', 'qemu:qemu:ro,z', 'qemu/debian-s390x-cross', 's390x-linux-gnu-gcc', '-Wall', '-ffreestanding', '-fno-delete-null-pointer-checks', '-fno-common', '-fPIE', '-fwrapv', '-fno-strict-aliasing', '-fno-asynchronous-unwind-tables', '-msoft-float', '-std=gnu99', '-march=z10', '-O2', '-g', '-nostdinc', '-Iqemu/pc-bios/s390-ccw/../../roms/SLOF/lib/libc/include', '-Iqemu/pc-bios/s390-ccw/../../roms/SLOF/lib/libnet', '-DDHCPARCH=0x1F', '-MMD', '-MP', '-MT', 'ipv4.o', '-MF', 'ipv4.d', '-c', '-o', 'ipv4.o', 'qemu/pc-bios/s390-ccw/../../roms/SLOF/lib/libnet/ipv4.c']' returned non-zero exit status 126. After removing those kinds of files from my source tree the build completed successfully. It would be nice if the build didn't trip up over this. My podman version is 4.2.0. Do you think we should do anything about this? Stefan > diff --git a/configure b/configure > index c175650eb9..a54e17aca9 100755 > --- a/configure > +++ b/configure > @@ -2152,7 +2152,7 @@ probe_target_compiler() { > target_ranlib= > target_strip= > fi > - test -n "$target_cc" > + test -n "$target_cc" || test -n "$container_image" > } > > write_target_makefile() { > @@ -2307,7 +2307,7 @@ if test "$targetos" != "darwin" && test "$targetos" != "sunos" && \ > config_mak=pc-bios/optionrom/config.mak > echo "# Automatically generated by configure - do not modify" > $config_mak > echo "TOPSRC_DIR=$source_path" >> $config_mak > - write_target_makefile >> $config_mak > + write_target_makefile pc-bios/optionrom/all >> $config_mak > fi > > if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then > @@ -2315,25 +2315,31 @@ if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then > config_mak=pc-bios/vof/config.mak > echo "# Automatically generated by configure - do not modify" > $config_mak > echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak > - write_target_makefile >> $config_mak > + write_target_makefile pc-bios/vof/all >> $config_mak > fi > > # Only build s390-ccw bios if the compiler has -march=z900 or -march=z10 > # (which is the lowest architecture level that Clang supports) > if test "$softmmu" = yes && probe_target_compiler s390x-softmmu; then > - write_c_skeleton > - do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC > - has_z900=$? > - if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then > - if [ $has_z900 != 0 ]; then > - echo "WARNING: Your compiler does not support the z900!" > - echo " The s390-ccw bios will only work with guest CPUs >= z10." > + got_cross_cc=no > + if test -n "$target_cc"; then > + write_c_skeleton > + do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC > + has_z900=$? > + if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then > + if [ $has_z900 != 0 ]; then > + echo "WARNING: Your compiler does not support the z900!" > + echo " The s390-ccw bios will only work with guest CPUs >= z10." > + fi > + got_cross_cc=yes > fi > + fi > + if test "$got_cross_cc" = yes || test -n "$container_image"; then > roms="$roms pc-bios/s390-ccw" > config_mak=pc-bios/s390-ccw/config-host.mak > echo "# Automatically generated by configure - do not modify" > $config_mak > echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak > - write_target_makefile >> $config_mak > + write_target_makefile pc-bios/s390-ccw/all >> $config_mak > # SLOF is required for building the s390-ccw firmware on s390x, > # since it is using the libnet code from SLOF for network booting. > git_submodules="${git_submodules} roms/SLOF" > @@ -2554,7 +2560,7 @@ for target in $target_list; do > ;; > esac > > - if probe_target_compiler $target || test -n "$container_image"; then > + if probe_target_compiler $target; then > test -n "$container_image" && build_static=y > mkdir -p "tests/tcg/$target" > config_target_mak=tests/tcg/$target/config-target.mak > -- > 2.34.1 >
On Tue, Oct 04, 2022 at 02:01:12PM +0100, Alex Bennée wrote: > From: Paolo Bonzini <pbonzini@redhat.com> > > s390-ccw remains a bit more complex, because the -march=z900 test is done > only for the native cross compiler. Otherwise, all that is needed is > to pass the (now mandatory) target argument to write_target_makefile. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Message-Id: <20220929114231.583801-29-alex.bennee@linaro.org> I'm not at all convinced this change was/is a good idea. First of all, it causes 'make' to now download about 1 GB of container images $ ./configure --target-list=x86_64-softmmu $ make ...snip... BUILD debian-powerpc-test-cross Trying to pull registry.gitlab.com/qemu-project/qemu/qemu/debian-powerpc-test-cross:latest... Getting image source signatures Copying blob 2a205c8a1d36 [=>------------------------------------] 12.4MiB / 257.2MiB ... ...snip... Despite downloading this image, it then proceeded to rebuild the image from scratch, requiring another few 100MBs of downloads of dpkgs. This time the download was without progress information until it entirely failed due to a dead Debia mirror server, needing a retry. It then went on to download an s390x image which seems to have two layers, each with 360 MB. BUILD debian-s390x-cross Trying to pull registry.gitlab.com/qemu-project/qemu/qemu/debian-s390x-cross:latest... Getting image source signatures Copying blob fc8d65e34cd5 [>-------------------------------------] 12.0MiB / 360.2MiB Copying blob bd159e379b3b skipped: already exists Copying blob 13224e2971af [>-------------------------------------] 12.2MiB / 366.5MiB So overall it was more than 1 GB of downloads when typing 'make' I wasn't too amuzed by seeing this downloaded data , given that I'm usually running off a 4G mobile connection, and it took a very long time. The progress information printed by docker when downloading the images splatters all over the output meson displays, when doing a parallel make making everything unintelligible. Finally, I had requested only building x86_64, so we shouldn't be doing anything related to ppc or s390 at all, but even if AFAICT, it enables this downloading unconditionally merely by having 'docker'/'podman' binaries installed, if you don't otherwise have cross compuilers present. I'd really not want to see any of this stuff downloaded without an explicit opt-in choice at configure time. I'm also a little concerned at what happens if we have to stop publishing the containers at registry.gitlab.com in future. Are we going to break the default 'make' for existing released QEMU tarballs ? Generally we've only relied on the gitlab infra for our CI testing, so we have been free to change infra or alter the way we publish images at any time, without risk of impact on the released tarballs. This isn't a theoretical problem, because GitLab has announced their intention to limit storage usage in gitlab.com, and even having joined the Open Source Program, our quota is only increased from 5 GB to 25 GB. I'd be concerned we're at risk of exceeding that 25 GB limit, when they start to enforce it, requiring us to move container image host to somewhere else such as quay.io > diff --git a/configure b/configure > index c175650eb9..a54e17aca9 100755 > --- a/configure > +++ b/configure > @@ -2152,7 +2152,7 @@ probe_target_compiler() { > target_ranlib= > target_strip= > fi > - test -n "$target_cc" > + test -n "$target_cc" || test -n "$container_image" > } > > write_target_makefile() { > @@ -2307,7 +2307,7 @@ if test "$targetos" != "darwin" && test "$targetos" != "sunos" && \ > config_mak=pc-bios/optionrom/config.mak > echo "# Automatically generated by configure - do not modify" > $config_mak > echo "TOPSRC_DIR=$source_path" >> $config_mak > - write_target_makefile >> $config_mak > + write_target_makefile pc-bios/optionrom/all >> $config_mak > fi > > if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then > @@ -2315,25 +2315,31 @@ if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then > config_mak=pc-bios/vof/config.mak > echo "# Automatically generated by configure - do not modify" > $config_mak > echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak > - write_target_makefile >> $config_mak > + write_target_makefile pc-bios/vof/all >> $config_mak > fi > > # Only build s390-ccw bios if the compiler has -march=z900 or -march=z10 > # (which is the lowest architecture level that Clang supports) > if test "$softmmu" = yes && probe_target_compiler s390x-softmmu; then > - write_c_skeleton > - do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC > - has_z900=$? > - if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then > - if [ $has_z900 != 0 ]; then > - echo "WARNING: Your compiler does not support the z900!" > - echo " The s390-ccw bios will only work with guest CPUs >= z10." > + got_cross_cc=no > + if test -n "$target_cc"; then > + write_c_skeleton > + do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC > + has_z900=$? > + if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then > + if [ $has_z900 != 0 ]; then > + echo "WARNING: Your compiler does not support the z900!" > + echo " The s390-ccw bios will only work with guest CPUs >= z10." > + fi > + got_cross_cc=yes > fi > + fi > + if test "$got_cross_cc" = yes || test -n "$container_image"; then > roms="$roms pc-bios/s390-ccw" > config_mak=pc-bios/s390-ccw/config-host.mak > echo "# Automatically generated by configure - do not modify" > $config_mak > echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak > - write_target_makefile >> $config_mak > + write_target_makefile pc-bios/s390-ccw/all >> $config_mak > # SLOF is required for building the s390-ccw firmware on s390x, > # since it is using the libnet code from SLOF for network booting. > git_submodules="${git_submodules} roms/SLOF" > @@ -2554,7 +2560,7 @@ for target in $target_list; do > ;; > esac > > - if probe_target_compiler $target || test -n "$container_image"; then > + if probe_target_compiler $target; then > test -n "$container_image" && build_static=y > mkdir -p "tests/tcg/$target" > config_target_mak=tests/tcg/$target/config-target.mak > -- > 2.34.1 > > With regards, Daniel
On Mon, Oct 10, 2022 at 01:54:16PM +0100, Daniel P. Berrangé wrote: > On Tue, Oct 04, 2022 at 02:01:12PM +0100, Alex Bennée wrote: > > From: Paolo Bonzini <pbonzini@redhat.com> > > > > s390-ccw remains a bit more complex, because the -march=z900 test is done > > only for the native cross compiler. Otherwise, all that is needed is > > to pass the (now mandatory) target argument to write_target_makefile. > > > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > > Message-Id: <20220929114231.583801-29-alex.bennee@linaro.org> > > I'm not at all convinced this change was/is a good idea. > > First of all, it causes 'make' to now download about 1 GB of > container images > > $ ./configure --target-list=x86_64-softmmu > $ make > ...snip... > BUILD debian-powerpc-test-cross > Trying to pull registry.gitlab.com/qemu-project/qemu/qemu/debian-powerpc-test-cross:latest... > Getting image source signatures > Copying blob 2a205c8a1d36 [=>------------------------------------] 12.4MiB / 257.2MiB > > ... > ...snip... > > Despite downloading this image, it then proceeded to rebuild the > image from scratch, requiring another few 100MBs of downloads > of dpkgs. This time the download was without progress information > until it entirely failed due to a dead Debia mirror server, needing > a retry. This failure seems worse than I realized. It also failed on a non-responsive mirror when re-building the s390 image. WHen I re-ran 'make' it definitely did not retry the re-build process, as 'BUILD debian-s390x-cross' was instantaneous. So it looks like it is using the downloaded cached image, despite the previous 'make' apparently considering that to have been outdated content needing a rebuild. FWIW the failure output was: BUILD debian-s390x-cross Trying to pull registry.gitlab.com/qemu-project/qemu/qemu/debian-s390x-cross:latest... Getting image source signatures Copying blob fc8d65e34cd5 [===================================>--] 341.6MiB / 360.2MiB Copying blob fc8d65e34cd5 done Copying blob bd159e379b3b skipped: already exists Copying blob 13224e2971af done Copying config 67a127f7cd done Writing manifest to image destination Storing signatures debconf: delaying package configuration, since apt-utils is not installed E: Failed to fetch http://deb.debian.org/debian/pool/main/s/systemd/systemd_247.3-7%2bdeb11u1_amd64.deb 400 Bad Request [IP: 199.232.122.132 80] E: Failed to fetch http://deb.debian.org/debian/pool/main/p/perl/perl_5.32.1-4%2bdeb11u2_amd64.deb Error reading from server - read (104: Connection reset by peer) [IP: 199.232.122.132 80] E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? Error: error building at STEP "RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -y eatmydata && eatmydata apt-get dist-upgrade -y && eatmydata apt-get install --no-install-recommends -y bash bc bison bsdextrautils bzip2 ca-certificates ccache dbus debianutils diffutils exuberant-ctags findutils flex gcovr genisoimage gettext git hostname libglib2.0-dev libpcre2-dev libspice-protocol-dev llvm locales make meson ncat ninja-build openssh-client perl-base pkgconf python3 python3-numpy python3-opencv python3-pillow python3-pip python3-sphinx python3-sphinx-rtd-theme python3-venv python3-yaml rpm2cpio sed sparse tar tesseract-ocr tesseract-ocr-eng texinfo && eatmydata apt-get autoremove -y && eatmydata apt-get autoclean -y && sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && dpkg-reconfigure locales": error while running runtime: exit status 100 Traceback (most recent call last): File "/home/berrange/src/virt/qemu/tests/docker/docker.py", line 683, in <module> sys.exit(main()) File "/home/berrange/src/virt/qemu/tests/docker/docker.py", line 679, in main return args.cmdobj.run(args, argv) File "/home/berrange/src/virt/qemu/tests/docker/docker.py", line 493, in run dkr.build_image(tag, docker_dir, dockerfile, File "/home/berrange/src/virt/qemu/tests/docker/docker.py", line 343, in build_image self._do_check(build_args, File "/home/berrange/src/virt/qemu/tests/docker/docker.py", line 247, in _do_check return subprocess.check_call(self._command + cmd, **kwargs) File "/usr/lib64/python3.10/subprocess.py", line 369, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['podman', 'build', '-t', 'qemu/debian-s390x-cross', '-f', '/tmp/docker_buildt03fabg5/tmp3xpdzx90.docker', '--cache-from', 'registry.gitlab.com/qemu-project/qemu/qemu/debian-s390x-cross', '/tmp/docker_buildt03fabg5']' returned non-zero exit status 100. make[1]: *** [/home/berrange/src/virt/qemu/tests/docker/Makefile.include:38: docker-image-debian-s390x-cross] Error 1 make[1]: Leaving directory '/home/berrange/src/virt/qemu/build' make: *** [GNUmakefile:11: all] Error 2 With regards, Daniel
Daniel P. Berrangé <berrange@redhat.com> writes: > On Tue, Oct 04, 2022 at 02:01:12PM +0100, Alex Bennée wrote: >> From: Paolo Bonzini <pbonzini@redhat.com> >> >> s390-ccw remains a bit more complex, because the -march=z900 test is done >> only for the native cross compiler. Otherwise, all that is needed is >> to pass the (now mandatory) target argument to write_target_makefile. >> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> >> Message-Id: <20220929114231.583801-29-alex.bennee@linaro.org> > > I'm not at all convinced this change was/is a good idea. > > First of all, it causes 'make' to now download about 1 GB of > container images > > $ ./configure --target-list=x86_64-softmmu > $ make > ...snip... > BUILD debian-powerpc-test-cross > Trying to pull registry.gitlab.com/qemu-project/qemu/qemu/debian-powerpc-test-cross:latest... > Getting image source signatures > Copying blob 2a205c8a1d36 [=>------------------------------------] 12.4MiB / 257.2MiB > > ... > ...snip... > > Despite downloading this image, it then proceeded to rebuild the > image from scratch, requiring another few 100MBs of downloads > of dpkgs. This time the download was without progress information > until it entirely failed due to a dead Debia mirror server, needing > a retry. > > It then went on to download an s390x image which seems to have > two layers, each with 360 MB. > > BUILD debian-s390x-cross > Trying to pull registry.gitlab.com/qemu-project/qemu/qemu/debian-s390x-cross:latest... > Getting image source signatures > Copying blob fc8d65e34cd5 [>-------------------------------------] 12.0MiB / 360.2MiB > Copying blob bd159e379b3b skipped: already exists > Copying blob 13224e2971af [>-------------------------------------] 12.2MiB / 366.5MiB > > So overall it was more than 1 GB of downloads when typing 'make' > > I wasn't too amuzed by seeing this downloaded data , given that > I'm usually running off a 4G mobile connection, and it took a > very long time. Yikes, sorry I didn't notice that (probably because I always have most of the containers built). I was hoping the next set of patches would reduce the total re-build time to just the mirror operation by dumping docker.py and any caching that breaks. > The progress information printed by docker when downloading > the images splatters all over the output meson displays, when > doing a parallel make making everything unintelligible. > > > Finally, I had requested only building x86_64, so we shouldn't > be doing anything related to ppc or s390 at all, but even if > > AFAICT, it enables this downloading unconditionally merely by > having 'docker'/'podman' binaries installed, if you don't > otherwise have cross compuilers present. > > I'd really not want to see any of this stuff downloaded without > an explicit opt-in choice at configure time. > > I'm also a little concerned at what happens if we have to stop > publishing the containers at registry.gitlab.com in future. Are > we going to break the default 'make' for existing released QEMU > tarballs ? We can easily move the registry around. The aim of this work is to eventually stop local re-builds for most people. > > Generally we've only relied on the gitlab infra for our CI > testing, so we have been free to change infra or alter the > way we publish images at any time, without risk of impact on > the released tarballs. > > This isn't a theoretical problem, because GitLab has announced > their intention to limit storage usage in gitlab.com, and even > having joined the Open Source Program, our quota is only increased > from 5 GB to 25 GB. I'd be concerned we're at risk of exceeding > that 25 GB limit, when they start to enforce it, requiring us to > move container image host to somewhere else such as quay.io > > >> diff --git a/configure b/configure >> index c175650eb9..a54e17aca9 100755 >> --- a/configure >> +++ b/configure >> @@ -2152,7 +2152,7 @@ probe_target_compiler() { >> target_ranlib= >> target_strip= >> fi >> - test -n "$target_cc" >> + test -n "$target_cc" || test -n "$container_image" >> } >> >> write_target_makefile() { >> @@ -2307,7 +2307,7 @@ if test "$targetos" != "darwin" && test "$targetos" != "sunos" && \ >> config_mak=pc-bios/optionrom/config.mak >> echo "# Automatically generated by configure - do not modify" > $config_mak >> echo "TOPSRC_DIR=$source_path" >> $config_mak >> - write_target_makefile >> $config_mak >> + write_target_makefile pc-bios/optionrom/all >> $config_mak >> fi >> >> if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then >> @@ -2315,25 +2315,31 @@ if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then >> config_mak=pc-bios/vof/config.mak >> echo "# Automatically generated by configure - do not modify" > $config_mak >> echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak >> - write_target_makefile >> $config_mak >> + write_target_makefile pc-bios/vof/all >> $config_mak >> fi >> >> # Only build s390-ccw bios if the compiler has -march=z900 or -march=z10 >> # (which is the lowest architecture level that Clang supports) >> if test "$softmmu" = yes && probe_target_compiler s390x-softmmu; then >> - write_c_skeleton >> - do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC >> - has_z900=$? >> - if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then >> - if [ $has_z900 != 0 ]; then >> - echo "WARNING: Your compiler does not support the z900!" >> - echo " The s390-ccw bios will only work with guest CPUs >= z10." >> + got_cross_cc=no >> + if test -n "$target_cc"; then >> + write_c_skeleton >> + do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC >> + has_z900=$? >> + if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then >> + if [ $has_z900 != 0 ]; then >> + echo "WARNING: Your compiler does not support the z900!" >> + echo " The s390-ccw bios will only work with guest CPUs >= z10." >> + fi >> + got_cross_cc=yes >> fi >> + fi >> + if test "$got_cross_cc" = yes || test -n "$container_image"; then >> roms="$roms pc-bios/s390-ccw" >> config_mak=pc-bios/s390-ccw/config-host.mak >> echo "# Automatically generated by configure - do not modify" > $config_mak >> echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak >> - write_target_makefile >> $config_mak >> + write_target_makefile pc-bios/s390-ccw/all >> $config_mak >> # SLOF is required for building the s390-ccw firmware on s390x, >> # since it is using the libnet code from SLOF for network booting. >> git_submodules="${git_submodules} roms/SLOF" >> @@ -2554,7 +2560,7 @@ for target in $target_list; do >> ;; >> esac >> >> - if probe_target_compiler $target || test -n "$container_image"; then >> + if probe_target_compiler $target; then >> test -n "$container_image" && build_static=y >> mkdir -p "tests/tcg/$target" >> config_target_mak=tests/tcg/$target/config-target.mak >> -- >> 2.34.1 >> >> > > With regards, > Daniel
diff --git a/configure b/configure index c175650eb9..a54e17aca9 100755 --- a/configure +++ b/configure @@ -2152,7 +2152,7 @@ probe_target_compiler() { target_ranlib= target_strip= fi - test -n "$target_cc" + test -n "$target_cc" || test -n "$container_image" } write_target_makefile() { @@ -2307,7 +2307,7 @@ if test "$targetos" != "darwin" && test "$targetos" != "sunos" && \ config_mak=pc-bios/optionrom/config.mak echo "# Automatically generated by configure - do not modify" > $config_mak echo "TOPSRC_DIR=$source_path" >> $config_mak - write_target_makefile >> $config_mak + write_target_makefile pc-bios/optionrom/all >> $config_mak fi if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then @@ -2315,25 +2315,31 @@ if test "$softmmu" = yes && probe_target_compiler ppc-softmmu; then config_mak=pc-bios/vof/config.mak echo "# Automatically generated by configure - do not modify" > $config_mak echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak - write_target_makefile >> $config_mak + write_target_makefile pc-bios/vof/all >> $config_mak fi # Only build s390-ccw bios if the compiler has -march=z900 or -march=z10 # (which is the lowest architecture level that Clang supports) if test "$softmmu" = yes && probe_target_compiler s390x-softmmu; then - write_c_skeleton - do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC - has_z900=$? - if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then - if [ $has_z900 != 0 ]; then - echo "WARNING: Your compiler does not support the z900!" - echo " The s390-ccw bios will only work with guest CPUs >= z10." + got_cross_cc=no + if test -n "$target_cc"; then + write_c_skeleton + do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC + has_z900=$? + if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then + if [ $has_z900 != 0 ]; then + echo "WARNING: Your compiler does not support the z900!" + echo " The s390-ccw bios will only work with guest CPUs >= z10." + fi + got_cross_cc=yes fi + fi + if test "$got_cross_cc" = yes || test -n "$container_image"; then roms="$roms pc-bios/s390-ccw" config_mak=pc-bios/s390-ccw/config-host.mak echo "# Automatically generated by configure - do not modify" > $config_mak echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak - write_target_makefile >> $config_mak + write_target_makefile pc-bios/s390-ccw/all >> $config_mak # SLOF is required for building the s390-ccw firmware on s390x, # since it is using the libnet code from SLOF for network booting. git_submodules="${git_submodules} roms/SLOF" @@ -2554,7 +2560,7 @@ for target in $target_list; do ;; esac - if probe_target_compiler $target || test -n "$container_image"; then + if probe_target_compiler $target; then test -n "$container_image" && build_static=y mkdir -p "tests/tcg/$target" config_target_mak=tests/tcg/$target/config-target.mak