Subject: Re: [PATCH 3/4] gnu: qemu: Add a static output.

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 25 Feb 2021 08:57:37 -0500

Hi!

Ludovic Courtès <[email-masked]> writes:

> Maxim Cournoyer <[email-masked]> skribis:
>
>> The static output is equivalent to what other distributions commonly package
>> as 'qemu-user-static'.
>>
>> * gnu/packages/virtualization.scm (qemu)[outputs]: Add a static output.
>> [phases]{configure}: Configure the main build as an out-of-source build.  Move
>> all configure flags to ...
>> [configure-flags]: ... here.  The options explicitly enabling optional
>> features are removed; the configure script does a good job at enabling all the
>> features available based on the inputs present and this allows reusing the
>> flags in variant packages such as qemu-minimal.
>> {configure-user-static, build-user-static, install-user-static}: New phases.
>> {patch-test-shebangs}: New phase, extracted from the configure phase.
>> [native-inputs]: Add glib-static, pcre:static and zlib:static.
>> (qemu-minimal)[arguments]: Reuse the configure-flags argument.  Rewrite to use
>> match instead of cond.
>
> Nice!
>
> Do you know how this affects build times?  An option would be to make a
> separate package rather than a separate output, if that helps.
>
> Thanks,
> Ludo’.

I've just ran two builds; the current qemu we have, and the one with
the static output added:

/gnu/store/aqkr351pph30za9v6bmd8gzpq5gbgz0c-qemu-5.1.0-doc
/gnu/store/apxxj92gncx901z71kq0gwg48n2cils6-qemu-5.1.0

real    6m56.816s
user    0m13.733s
sys     0m0.677s

/gnu/store/4bfj6zxl0yd2i3206v4rkwiv2nwyryxb-qemu-5.1.0-doc
/gnu/store/7w04gv6m92n40dainn4s6xr3l20r90xw-qemu-5.1.0
/gnu/store/wqh2dyskzkl4vjn6harclyl317h4vfaf-qemu-5.1.0-static

real    7m39.197s
user    0m15.035s
sys     0m0.841s

That's about a 10% increase in build time, which is reasonable IMO.

In the future we should definitely split our QEMU package into
per-architecture variants as well as user vs system emulation, similar
to what Debian does.  A near 755.8 MiB package is cumbersome and I'm
doubtful most of its users make use of the 35 architectures it boasts at
a time :-).

Thank you!

Maxim