mbox series

[0/6] Convert pc-bios Makefiles to meson

Message ID 20200918204759.225810-1-marcandre.lureau@redhat.com
Headers show
Series Convert pc-bios Makefiles to meson | expand

Message

Marc-André Lureau Sept. 18, 2020, 8:47 p.m. UTC
From: Marc-André Lureau <marcandre.lureau@redhat.com>

Hi,

Here is a series of patches to convert the remaining Makefile in pc-bios/ to
meson. I have done various tests to check that the resulting binaries are
working as expected, but I didn't cover it all, and I am not sure the test su=
ite
covers them all either.

Please review,

Marc-Andr=C3=A9 Lureau (6):
  meson: convert pc-bios/s390-ccw
  optionrom: make kvmapic.S compile with clang
  meson: convert pc-bios/optionrom
  build-sys: remove no longer needed ROMS variable
  build-sys: remove recurse-* rules
  meson: replace pc-bios/Makefile

 Makefile                      |  16 +--
 configure                     |  21 ----
 pc-bios/Makefile              |  19 ----
 pc-bios/meson.build           |  20 ++++
 pc-bios/optionrom/Makefile    |  73 --------------
 pc-bios/optionrom/kvmvapic.S  |   4 +-
 pc-bios/optionrom/meson.build |  73 ++++++++++++++
 pc-bios/s390-ccw/Makefile     |  62 ------------
 pc-bios/s390-ccw/meson.build  | 177 ++++++++++++++++++++++++++++++++++
 pc-bios/s390-ccw/netboot.mak  |  62 ------------
 subprojects/optionrom         |   1 +
 subprojects/s390-ccw          |   1 +
 12 files changed, 276 insertions(+), 253 deletions(-)
 delete mode 100644 pc-bios/Makefile
 delete mode 100644 pc-bios/optionrom/Makefile
 create mode 100644 pc-bios/optionrom/meson.build
 delete mode 100644 pc-bios/s390-ccw/Makefile
 create mode 100644 pc-bios/s390-ccw/meson.build
 delete mode 100644 pc-bios/s390-ccw/netboot.mak
 create mode 120000 subprojects/optionrom
 create mode 120000 subprojects/s390-ccw

--=20
2.26.2

Comments

no-reply@patchew.org Sept. 18, 2020, 11:22 p.m. UTC | #1
Patchew URL: https://patchew.org/QEMU/20200918204759.225810-1-marcandre.lureau@redhat.com/



Hi,

This series failed the docker-quick@centos7 build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
make docker-image-centos7 V=1 NETWORK=1
time make docker-test-quick@centos7 SHOW_ENV=1 J=14 NETWORK=1
=== TEST SCRIPT END ===

C linker for the host machine: cc ld.bfd 2.27-43
Host machine cpu family: x86_64
Host machine cpu: x86_64
../src/meson.build:10: WARNING: Module unstable-keyval has no backwards or forwards compatibility and might not exist in future releases.
Program sh found: YES
Program python3 found: YES (/usr/bin/python3)
Configuring ninjatool using configuration
---
Compiling C object subprojects/optionrom/linuxboot.img.p/linuxboot.S.o
Compiling C object subprojects/optionrom/kvmvapic.img.p/kvmvapic.S.o
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h: Assembler messages:
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:1: Error: invalid character '(' in mnemonic
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:2: Error: unknown pseudo-op: `.code16gcc\n'
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:3: Error: junk at end of line, first unrecognized character is `)'
make: *** [subprojects/optionrom/multiboot.img.p/multiboot.S.o] Error 1
make: *** Waiting for unfinished jobs....
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h: Assembler messages:
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:1: Error: invalid character '(' in mnemonic
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:2: Error: unknown pseudo-op: `.code16gcc\n'
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:3: Error: junk at end of line, first unrecognized character is `)'
make: *** [subprojects/optionrom/linuxboot.img.p/linuxboot.S.o] Error 1
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h: Assembler messages:
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:1: Error: invalid character '(' in mnemonic
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:2: Error: unknown pseudo-op: `.code16gcc\n'
/tmp/qemu-test/src/subprojects/optionrom/code16gcc.h:3: Error: junk at end of line, first unrecognized character is `)'
make: *** [subprojects/optionrom/kvmvapic.img.p/kvmvapic.S.o] Error 1
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 709, in <module>
    sys.exit(main())
---
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--rm', '--label', 'com.qemu.instance.uuid=3b7f1af7e75b48f3bb69d8fa30eb5a2e', '-u', '1001', '--security-opt', 'seccomp=unconfined', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-4a1odio7/src/docker-src.2020-09-18-19.19.48.23563:/var/tmp/qemu:z,ro', 'qemu/centos7', '/var/tmp/qemu/run', 'test-quick']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=3b7f1af7e75b48f3bb69d8fa30eb5a2e
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-4a1odio7/src'
make: *** [docker-run-test-quick@centos7] Error 2

real    3m3.001s
user    0m18.547s


The full log is available at
http://patchew.org/logs/20200918204759.225810-1-marcandre.lureau@redhat.com/testing.docker-quick@centos7/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Paolo Bonzini Sept. 19, 2020, 2:58 p.m. UTC | #2
On 18/09/20 22:47, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Hi,
> 
> Here is a series of patches to convert the remaining Makefile in
> pc-bios/ to meson. I have done various tests to check that the
> resulting binaries are working as expected, but I didn't cover it
> all, and I am not sure the test su= ite covers them all either.

I don't know, the way pc-bios/ works seems just wrong to me.  pc-bios 
should IMO be its own build system with support for docker-based cross 
compilers similar to tests/tcg.

In fact one thing I was considering before falling in love with Meson :) 
was to write a simple meta-build-system for all of QEMU-owned ROMs, 
submodules such as SLOF and tests/tcg.  I never even got to the 
whiteboard phase, but if this were done, we could just build all the 
firmwares as a Meson 0.56 "external project"[1].

Paolo

[1] https://github.com/mesonbuild/meson/commit/master#diff-3a49da052fafbb502673f20d188644e1
Marc-André Lureau Sept. 19, 2020, 3:15 p.m. UTC | #3
Hi

On Sat, Sep 19, 2020 at 6:59 PM Paolo Bonzini <pbonzini@redhat.com> wrote:

> On 18/09/20 22:47, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > Hi,
> >
> > Here is a series of patches to convert the remaining Makefile in
> > pc-bios/ to meson. I have done various tests to check that the
> > resulting binaries are working as expected, but I didn't cover it
> > all, and I am not sure the test su= ite covers them all either.
>
> I don't know, the way pc-bios/ works seems just wrong to me.  pc-bios
> should IMO be its own build system with support for docker-based cross
> compilers similar to tests/tcg.
>

It could still use meson to build the binaries though (like we did for
qboot). It's more about setting up the environment for the build to compile
for the target.


> In fact one thing I was considering before falling in love with Meson :)
> was to write a simple meta-build-system for all of QEMU-owned ROMs,
> submodules such as SLOF and tests/tcg.  I never even got to the
> whiteboard phase, but if this were done, we could just build all the
> firmwares as a Meson 0.56 "external project"[1].
>
> Paolo
>
> [1]
> https://github.com/mesonbuild/meson/commit/master#diff-3a49da052fafbb502673f20d188644e1
>

I suppose you meant:
https://github.com/mesonbuild/meson/commit/9d338200dacdf24c50259c309380200f8a53d5b5

fwiw, this version doesn't compile with gcc 4.8 (on centos6, as patchew
found out). I couldn't find a workaround yet. :(
Paolo Bonzini Sept. 19, 2020, 3:26 p.m. UTC | #4
On 19/09/20 17:15, Marc-André Lureau wrote:
> 
> 
>     I don't know, the way pc-bios/ works seems just wrong to me.  pc-bios
>     should IMO be its own build system with support for docker-based cross
>     compilers similar to tests/tcg.
> 
> 
> It could still use meson to build the binaries though (like we did for
> qboot). It's more about setting up the environment for the build to
> compile for the target.

Yes, essentially it would set up the cross file.  However, to some
extent whether or not Meson is used would be of relative importance.

Step 1 would probably be to find a place for the common docker
infrastructure, moving the common parts of tests/docker and tests/tcg to
scripts/docker and de-Make-izing them.

Paolo
Peter Maydell Sept. 20, 2020, 8:21 p.m. UTC | #5
On Sat, 19 Sep 2020 at 15:59, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> I don't know, the way pc-bios/ works seems just wrong to me.  pc-bios
> should IMO be its own build system with support for docker-based cross
> compilers similar to tests/tcg.

Yes, I've always thought this :-) It borrows the host x86 compiler
just because it kinda happens to work most of the time in the
common cases. Now we have proper docker cross infrastructure
available it would certainly be nice to use it consistently for
building firmware. (It would also make it more palatable to
have VDSOs for linux-user, which would also need to be built with
a target C compiler.)

-- PMM