All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: qemu-devel@nongnu.org, stefanha@redhat.com,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PULL 28/54] configure: build ROMs with container-based cross compilers
Date: Mon, 10 Oct 2022 14:47:15 +0100	[thread overview]
Message-ID: <87v8orss9z.fsf@linaro.org> (raw)
In-Reply-To: <Y0QV+B+Wz6fxceh1@redhat.com>


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


-- 
Alex Bennée


  parent reply	other threads:[~2022-10-10 13:53 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-04 13:00 [PULL 00/54] testing, gdbstub, plugin and gitdm updates Alex Bennée
2022-10-04 13:00 ` [PULL 01/54] scripts/ci/setup: ninja missing from build-environment Alex Bennée
2022-10-04 13:00 ` [PULL 02/54] scripts/ci/setup: Fix libxen requirements Alex Bennée
2022-10-04 13:00 ` [PULL 03/54] scripts/ci/setup: spice-server only on x86 aarch64 Alex Bennée
2022-10-04 13:00 ` [PULL 04/54] tests/docker: run script use realpath instead of readlink Alex Bennée
2022-10-04 13:00 ` [PULL 05/54] configure: move detected gdb to TCG's config-host.mak Alex Bennée
2022-10-04 13:00 ` [PULL 06/54] target/hexagon: add flex/bison/glib2 to qemu.yml Alex Bennée
2022-10-04 13:00 ` [PULL 07/54] target/hexagon: regenerate docker/cirrus files Alex Bennée
2022-10-04 13:00 ` [PULL 08/54] target/hexagon: manually add flex/bison/glib2 to remaining containers Alex Bennée
2022-10-04 13:00 ` [PULL 09/54] tests/docker: update fedora-win[32|64]-cross with lcitool Alex Bennée
2022-10-04 13:00 ` [PULL 10/54] tests/docker: move alpine from edge to tagged release Alex Bennée
2022-10-04 13:00 ` [PULL 11/54] tests/qtest: bump up QOS_PATH_MAX_ELEMENT_SIZE Alex Bennée
2022-10-04 13:00 ` [PULL 12/54] configure: do not invoke as/ld directly for pc-bios/optionrom Alex Bennée
2022-10-04 13:00 ` [PULL 13/54] pc-bios/optionrom: detect CC options just once Alex Bennée
2022-10-04 13:00 ` [PULL 14/54] pc-bios/s390-ccw: " Alex Bennée
2022-10-04 13:00 ` [PULL 15/54] vof: add distclean target Alex Bennée
2022-10-04 13:01 ` [PULL 16/54] build: add recursive distclean rules Alex Bennée
2022-10-04 13:01 ` [PULL 17/54] configure: return status code from probe_target_compiler Alex Bennée
2022-10-04 13:01 ` [PULL 18/54] configure: store container engine in config-host.mak Alex Bennée
2022-10-04 13:01 ` [PULL 19/54] tests: simplify Makefile invocation for tests/tcg Alex Bennée
2022-10-04 13:01 ` [PULL 20/54] tests/tcg: remove -f from Makefile invocation Alex Bennée
2022-10-04 13:01 ` [PULL 21/54] tests/tcg: add distclean rule Alex Bennée
2022-10-04 13:01 ` [PULL 22/54] tests/tcg: unify ppc64 and ppc64le Makefiles Alex Bennée
2022-10-04 13:01 ` [PULL 23/54] tests/tcg: clean up calls to run-test Alex Bennée
2022-10-04 13:01 ` [PULL 24/54] tests/tcg: move compiler tests to Makefiles Alex Bennée
2022-10-04 13:01 ` [PULL 25/54] configure: move tests/tcg/Makefile.prereqs to root build directory Alex Bennée
2022-10-04 13:01 ` [PULL 26/54] configure: unify creation of cross-compilation Makefiles Alex Bennée
2022-10-06 20:33   ` Stefan Hajnoczi
2022-10-04 13:01 ` [PULL 27/54] configure: cleanup creation of tests/tcg target config Alex Bennée
2022-10-04 13:01 ` [PULL 28/54] configure: build ROMs with container-based cross compilers Alex Bennée
2022-10-06 20:37   ` Stefan Hajnoczi
2022-10-10 12:54   ` Daniel P. Berrangé
2022-10-10 13:07     ` Daniel P. Berrangé
2022-10-10 13:47     ` Alex Bennée [this message]
2022-10-04 13:01 ` [PULL 29/54] pc-bios/optionrom: Adopt meson style Make output Alex Bennée
2022-10-04 13:01 ` [PULL 30/54] pc-bios/s390-ccw: " Alex Bennée
2022-10-04 13:01 ` [PULL 31/54] pc-bios/vof: " Alex Bennée
2022-10-04 13:01 ` [PULL 32/54] monitor: expose monitor_puts to rest of code Alex Bennée
2022-10-04 13:01 ` [PULL 33/54] disas: generalise plugin_printf and use for monitor_disas Alex Bennée
2022-10-04 13:01 ` [PULL 34/54] disas: use result of ->read_memory_func Alex Bennée
2022-10-04 13:01 ` [PULL 35/54] plugins: extend execlog to filter matches Alex Bennée
2022-10-04 13:01 ` [PULL 36/54] plugins: Assert mmu_idx in range before use in qemu_plugin_get_hwaddr Alex Bennée
2022-10-04 13:01 ` [PULL 37/54] docs/devel: clean-up qemu invocations in tcg-plugins Alex Bennée
2022-10-04 13:01 ` [PULL 38/54] docs/devel: move API to end of tcg-plugins.rst Alex Bennée
2022-10-04 13:01 ` [PULL 39/54] contrib/plugins: reset skip when matching in execlog Alex Bennée
2022-10-04 13:01 ` [PULL 40/54] docs/devel: document the test plugins Alex Bennée
2022-10-04 13:01 ` [PULL 41/54] semihosting: update link to spec Alex Bennée
2022-10-04 13:01 ` [PULL 42/54] gdbstub: move into its own sub directory Alex Bennée
2022-10-04 13:01 ` [PULL 43/54] gdbstub: move sstep flags probing into AccelClass Alex Bennée
2022-10-04 13:01 ` [PULL 44/54] gdbstub: move breakpoint logic to accel ops Alex Bennée
2022-10-04 13:01 ` [PULL 45/54] gdbstub: move guest debug support check to ops Alex Bennée
2022-10-04 13:01 ` [PULL 46/54] accel/kvm: move kvm_update_guest_debug to inline stub Alex Bennée
2022-10-04 13:01 ` [PULL 47/54] contrib/gitdm: add mapping for Loongson Technology Alex Bennée
2022-10-04 13:01 ` [PULL 48/54] contrib/gitdm: add Paul to individual contributors Alex Bennée
2022-10-04 13:01 ` [PULL 49/54] contrib/gitdm: add WANG Xuerui to individual contributers Alex Bennée
2022-10-04 13:01 ` [PULL 50/54] contrib/gitdm: add ISCAS to the academics group Alex Bennée
2022-10-04 13:01 ` [PULL 51/54] contrib/gitdm: add China Telecom to the domain map Alex Bennée
2022-10-04 13:01 ` [PULL 52/54] contrib/gitdm: add Simon to individual contributors Alex Bennée
2022-10-04 16:06   ` Simon Safar via
2022-10-04 13:01 ` [PULL 53/54] contrib/gitdm: add Université Grenoble Alpes Alex Bennée
2022-10-04 13:01 ` [PULL 54/54] plugins: add [pre|post]fork helpers to linux-user Alex Bennée
2022-10-05 14:16 ` [PULL 00/54] testing, gdbstub, plugin and gitdm updates Stefan Hajnoczi
2022-10-05 15:23   ` Alex Bennée
2022-10-05 23:17     ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v8orss9z.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.