Daniel P. Berrangé <berra...@redhat.com> writes:

> 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.

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


-- 
Alex Bennée

Reply via email to