On Tue, Oct 04, 2022 at 02:01:12PM +0100, Alex Bennée wrote: > From: Paolo Bonzini <pbonz...@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 <pbonz...@redhat.com> > Signed-off-by: Alex Bennée <alex.ben...@linaro.org> > Message-Id: <20220929114231.583801-29-alex.ben...@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 -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|