Subject: [bug#63393] [PATCH 0/2] Fix libstdc++.so and gcc-toolchain

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 16 Jan 2024 17:16:21 -0500

Hello,

John Kehayias <[email-masked]> writes:

> Hello,
>
> On Thu, May 11, 2023 at 03:38 PM, Ludovic Courtès wrote:
>
>> Hi,
>>
>> Simon Tournier <[email-masked]> skribis:
>>
>>> * gnu/packages/commencement.scm (make-gcc-toolchain): Add 'lib' outputs.
>>
>> [...]
>>
>>>                                      (filter-map (match-lambda
>>>                                                    (("libc-debug" . _) #f)
>>>                                                    (("libc-static" . _) #f)
>>> +                                                  (("gcc-lib" . _) #f)
>>> +                                                  (("gcc-debug" . _) #f)
>>
>> I would include gcc:lib in “out” (thus not adding a “lib” output to
>> ‘gcc-toolchain’).
>>
>> Yes, gcc:lib includes *.a and *.la, but those are already part of the
>> ‘gcc-toolchain’ closure:
>>
>> $ guix size gcc-toolchain |head -6
>> store item                                                       total    self
>> /gnu/store/jv78mm3dmr6fl2hhy1bkbhfpm702v3gq-gcc-12.3.0             292.6   169.4  41.2%
>> /gnu/store/zh4x65snfis7svs6906gj1z8i7dx2j3m-binutils-2.38           95.5    54.9  13.4%
>> /gnu/store/g8p09w6r78hhkl2rv1747pcp9zbk6fxv-guile-3.0.9            134.0    53.1  12.9%
>> /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35              40.6    38.8   9.4%
>> /gnu/store/gmv6n5vy5qcsn71pkapg2hnknyn1p7g3-gcc-12.3.0-lib          76.8    36.2   8.8%

Moreover, the closure of 'gcc' itself, as can be found with:

--8<---------------cut here---------------start------------->8---
$ guix size $(guix build -e '(@@ (gnu packages gcc) gcc)' | tail -n1 )'
élément du dépôt                                                 total    lui-même
/gnu/store/hfppkc3p39rxrwd1g45n3239j9d0f8qd-gcc-11.3.0             267.8   146.1  54.5%
/gnu/store/ln6hxqjvz6m9gdd9s97pivlqck7hzs99-glibc-2.35              40.6    38.8  14.5%
/gnu/store/k9q9jxsqldxz0yl65rcgpnnncqwha2qi-gcc-11.3.0-lib          75.3    34.7  13.0%
/gnu/store/6ncav55lbk5kqvwwflrzcr41hp5jbq0c-gcc-11.3.0-lib          75.3    34.7  13.0%
/gnu/store/gdy0b065fk8wwxv49ln0c7892pam78z1-isl-0.24                83.2     5.2   1.9%
/gnu/store/dpvr7rj89j7xdnzpjhhll8dpqh3fizz5-gmp-6.2.1               78.0     2.7   1.0%
/gnu/store/4vn8m606saf5i3nvksgvl958c0i0nvsn-mpfr-4.2.0              80.2     2.2   0.8%
/gnu/store/zzyywykw7kriln18rxqd82f0k5kidla7-bash-static-5.1.16       1.8     1.8   0.7%
/gnu/store/v9p25q9l5nnaixkhpap5rnymmwbhf9rp-bash-minimal-5.1.16     41.6     1.0   0.4%
/gnu/store/w55122b226ss928lxxg58plalah3xl9h-mpc-1.3.1               80.6     0.5   0.2%
/gnu/store/hl6lb3irs8wrfv49fnirxshsq590pi9v-zlib-1.2.13             75.5     0.2   0.1%
total : 267.8 Mio
--8<---------------cut here---------------end--------------->8---

Shows that the main output of GCC already keeps a reference to its "lib"
output within its closure.  It seems we could merge "lib" back into
"out" and simplify things?

-- 
Thanks,
Maxim