qemu-devel
[Top][All Lists]
Advanced

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

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]