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

marcandre.lureau@redhat.com posted 6 patches 5 years, 4 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora passed
Test checkpatch passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200918204759.225810-1-marcandre.lureau@redhat.com
Maintainers: Thomas Huth <thuth@redhat.com>, Cornelia Huck <cohuck@redhat.com>
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
[PATCH 0/6] Convert pc-bios Makefiles to meson
Posted by marcandre.lureau@redhat.com 5 years, 4 months ago
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



Re: [PATCH 0/6] Convert pc-bios Makefiles to meson
Posted by no-reply@patchew.org 5 years, 4 months ago
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
Re: [PATCH 0/6] Convert pc-bios Makefiles to meson
Posted by Paolo Bonzini 5 years, 4 months ago
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


Re: [PATCH 0/6] Convert pc-bios Makefiles to meson
Posted by Marc-André Lureau 5 years, 4 months ago
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. :(



-- 
Marc-André Lureau
Re: [PATCH 0/6] Convert pc-bios Makefiles to meson
Posted by Paolo Bonzini 5 years, 4 months ago
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


Re: [PATCH 0/6] Convert pc-bios Makefiles to meson
Posted by Peter Maydell 5 years, 4 months ago
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