[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 28/54] configure: build ROMs with container-based cross compil
From: |
Stefan Hajnoczi |
Subject: |
Re: [PULL 28/54] configure: build ROMs with container-based cross compilers |
Date: |
Thu, 6 Oct 2022 16:37:11 -0400 |
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
>
signature.asc
Description: PGP signature
- [PULL 15/54] vof: add distclean target, (continued)
- [PULL 15/54] vof: add distclean target, Alex Bennée, 2022/10/04
- [PULL 30/54] pc-bios/s390-ccw: Adopt meson style Make output, Alex Bennée, 2022/10/04
- [PULL 41/54] semihosting: update link to spec, Alex Bennée, 2022/10/04
- [PULL 18/54] configure: store container engine in config-host.mak, Alex Bennée, 2022/10/04
- [PULL 22/54] tests/tcg: unify ppc64 and ppc64le Makefiles, Alex Bennée, 2022/10/04
- [PULL 32/54] monitor: expose monitor_puts to rest of code, Alex Bennée, 2022/10/04
- [PULL 21/54] tests/tcg: add distclean rule, Alex Bennée, 2022/10/04
- [PULL 47/54] contrib/gitdm: add mapping for Loongson Technology, Alex Bennée, 2022/10/04
- [PULL 24/54] tests/tcg: move compiler tests to Makefiles, Alex Bennée, 2022/10/04
- [PULL 28/54] configure: build ROMs with container-based cross compilers, Alex Bennée, 2022/10/04
- [PULL 46/54] accel/kvm: move kvm_update_guest_debug to inline stub, Alex Bennée, 2022/10/04
- [PULL 43/54] gdbstub: move sstep flags probing into AccelClass, Alex Bennée, 2022/10/04
- [PULL 31/54] pc-bios/vof: Adopt meson style Make output, Alex Bennée, 2022/10/04
- [PULL 20/54] tests/tcg: remove -f from Makefile invocation, Alex Bennée, 2022/10/04
- [PULL 48/54] contrib/gitdm: add Paul to individual contributors, Alex Bennée, 2022/10/04
- [PULL 39/54] contrib/plugins: reset skip when matching in execlog, Alex Bennée, 2022/10/04
- [PULL 23/54] tests/tcg: clean up calls to run-test, Alex Bennée, 2022/10/04