Hi Ludo,
Sorry for the late reply. I'm not really active anymore in Guix
development for various reasons.
Wine needs a whole 32-bit dependency chain to be able to run both 32-bit
and 64-bit code, since a Wine that can only run 64-bit code is
considered useless. That is why the package is unfortunately so large. I
don't think there's anything that can be done about that.
A couple of binaries are also copied, not just JSON files. That is where
the 32-bit dependencies come from.
On 2019-11-23 00:12, Ludovic Courtès wrote:


I noticed that 'wine64-staging' is our most expensive package to build.
Initially I was surprised because it only has a couple of nodes more in
its <package> object than 'wine-staging':

--8<---------------cut here---------------start------------->8---
ludo@ribbon ~/src/guix$ guix graph wine-staging |grep 'label = ' |wc -l
ludo@ribbon ~/src/guix$ guix graph wine64-staging |grep 'label = ' |wc -l
--8<---------------cut here---------------end--------------->8---

However, that single additional node leads to the duplication of the
whole derivation graph on x86_64-linux:

--8<---------------cut here---------------start------------->8---
ludo@ribbon ~/src/guix$ guix graph -t derivation wine-staging |grep 'label = ' 
|wc -l
ludo@ribbon ~/src/guix$ guix graph -t derivation wine64-staging |grep 'label = 
' |wc -l
--8<---------------cut here---------------end--------------->8---

This is because 'wine-staging' has a hard-coded '#:system "i686-linux"',
whereas 'wine64-staging' is (unsurprisingly :-)) built on x86_64-linux.

(The same problem happens with 'wine' vs. 'wine64'.)

Likewise, 'guix size wine64' shows that every dependency appears twice
(one 32-bit, one 64-bit), and thus the total size is twice that of

Rutger, is there something that can be done to avoid this?  Apparently
only JSON files are copied from 'wine-staging' into 'wine64-staging',
but maybe they refer to 32-bit shared libraries or something?


Reply via email to