On 12/01/2021 23.37, John Snow wrote:
I wanted to know what the minimal setup required was to replicate the
compilation instructions featured on https://www.qemu.org/download/#source
[...]
> pixman-devel \
pixman is only required for the softmmu and tools targets. If you just build
the linux-user targets, you can even get rid of this.
[...]
Notes:
- our configure file suggests bzip2 is an optional dependency (It's set to
'auto') but meson will error out if it is not present at configuration time:
../pc-bios/meson.build:5:2: ERROR: Program 'bzip2' not found
IIRC it's required for compressing the edk2 firmware images, so if you
compile without x86 and arm, you don't need it. Maybe it would be good to
add a check for this to the configure script, too?
- diffutils is required for the qapi-schema test, which runs at build time.
We should maybe add a check for "diff" to the configure script?
- early on in the build process, an error "bash: find: command not found"
can be seen, but it doesn't seem to cause a failure otherwise.
- perl is not declared as a hard pre-requisite during configure time, but
the build will error out if it is not present:
[254/8314] Generating texture-blit-frag.h with a meson_exe.py custom command
FAILED: ui/shader/texture-blit-frag.h
/usr/bin/python3 /qemu-5.2.0/meson/meson.py --internal exe --capture
ui/shader/texture-blit-frag.h -- /usr/bin/env perl
/qemu-5.2.0/scripts/shaderinclude.pl ../ui/shader/texture-blit.frag
/usr/bin/env: ‘perl’: No such file or directory
shaderinclude.pl seems to be pretty small, maybe it could be rewritten in
python?
- bash has to be installed explicitly. configure/meson do not check for it,
but the build will fail if they aren't present.
IIRC we were able to compile without bash before the meson conversion, just
some parts like the iotests needed the bash (at least that's why we have a
check for bash in tests/check-block.sh for example). Where is it failing now?
- musl seems to work alright, but does throw a ton of warnings. I didn't
actually run any tests, since they require more dependencies.
- linux-user binaries can't be compiled because alpine's usage of musl; I
didn't look much more closely.
There were some related patches on the list recently, look for the "Alpine
Linux build fix and CI pipeline" patch series.
Thomas