[PATCH 0/2] Fix libstdc++.so and gcc-toolchain

  • Done
  • quality assurance status badge
Details
6 participants
  • Isaac van Bakel
  • John Kehayias
  • Kaelyn
  • Ludovic Courtès
  • Maxim Cournoyer
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal
S
S
Simon Tournier wrote on 9 May 2023 18:58
(address . guix-patches@gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
cover.1683650835.git.zimon.toutoune@gmail.com
Hi,

This patch fixes #63267 [1] by adding the output 'lib' to gcc-toolchain. The
aim of gcc-toolchain is to be a battery included of GCC. Maybe, this 'lib'
output could be directly included with the 'out'. Well, I do not know. WDYT?

For sure, it seems to help people using 'gcc:lib'. :-)

Toggle snippet (26 lines)
$ ./pre-inst-env guix shell gcc-toolchain:lib

[...]

$ ls $GUIX_ENVIRONMENT/lib
audit libatomic.a libc.so.6 libitm.so.1.0.0 libnss_files.so.2 libssp_nonshared.a libtsan_preinit.o
bfd-plugins libatomic.la libctf.a libitm.spec libnss_hesiod.so libssp_nonshared.la libtsan.so
crt1.o libatomic.so libctf.la liblsan.a libnss_hesiod.so.2 libssp.so libtsan.so.2
crti.o libatomic.so.1 libctf-nobfd.a liblsan.la libopcodes.a libssp.so.0 libtsan.so.2.0.0
crtn.o libatomic.so.1.2.0 libctf-nobfd.la liblsan_preinit.o libopcodes.la libssp.so.0.0.0 libubsan.a
gcc libbfd.a libdl.a liblsan.so libpcprofile.so libstdc++.a libubsan.la
gconv libbfd.la libdl.so.2 liblsan.so.0 libpthread.a libstdc++fs.a libubsan.so
gcrt1.o libBrokenLocale.so libgcc_s.so liblsan.so.0.0.0 libpthread.so.0 libstdc++fs.la libubsan.so.1
grcrt1.o libBrokenLocale.so.1 libgcc_s.so.1 libmemusage.so libquadmath.a libstdc++.la libubsan.so.1.0.0
ld-linux-x86-64.so.2 libcc1.la libgomp.a libm.so libquadmath.la libstdc++.so libutil.a
libanl.a libcc1.so libgomp.la libm.so.6 libquadmath.so libstdc++.so.6 libutil.so.1
libanl.so libcc1.so.0 libgomp.so libmvec.so libquadmath.so.0 libstdc++.so.6.0.30 Mcrt1.o
libanl.so.1 libcc1.so.0.0.0 libgomp.so.1 libmvec.so.1 libquadmath.so.0.0.0 libstdc++.so.6.0.30-gdb.py rcrt1.o
libasan.a libc_malloc_debug.so libgomp.so.1.0.0 libnsl.so.1 libresolv.so libsupc++.a Scrt1.o
libasan.la libc_malloc_debug.so.0 libgomp.spec libnss_compat.so libresolv.so.2 libsupc++.la
libasan_preinit.o libc_nonshared.a libitm.a libnss_compat.so.2 librt.so.1 libthread_db.so
libasan.so libcrypt.so libitm.la libnss_db.so libsanitizer.spec libthread_db.so.1
libasan.so.8 libcrypt.so.1 libitm.so libnss_db.so.2 libssp.a libtsan.a
libasan.so.8.0.0 libc.so libitm.so.1 libnss_dns.so.2 libssp.la libtsan.la

Well, another annoyance is that libstdc++ could be built using another
version. Let for later. :-)



Cheers,
simon


Simon Tournier (2):
gnu: gcc-toolchain: Do not use gcc-final.
gnu: make-gcc-toolchain: Add 'lib' outputs.

gnu/packages/commencement.scm | 35 +++++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 8 deletions(-)


base-commit: 76a3deb8675576a6ce64874234c9d3881060db3b
--
2.38.1
S
S
Simon Tournier wrote on 9 May 2023 19:04
[PATCH 1/2] gnu: gcc-toolchain: Do not use gcc-final.
(address . 63393@debbugs.gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
27f75012219400a41da9c3148ec42fd4cec38cc4.1683650835.git.zimon.toutoune@gmail.com
* gnu/packages/commencement.scm (gcc-toolchain): Bind to the default
gcc-toolchain-11 being consitent with others.
(gcc-toolchain-11): Make it from gcc-11.
(gcc-toolchain-aka-gcc): Bind to gcc-toolchain.
---
gnu/packages/commencement.scm | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index ab07fb37ab..7ec177e206 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3486,8 +3486,6 @@ (define* (make-gcc-toolchain gcc
("libc-debug" ,libc "debug")
("libc-static" ,libc "static"))))))
-(define-public gcc-toolchain
- (make-gcc-toolchain gcc-final))
(define-public gcc-toolchain-4.8
(make-gcc-toolchain gcc-4.8))
@@ -3514,15 +3512,19 @@ (define-public gcc-toolchain-10
(make-gcc-toolchain gcc-10))
(define-public gcc-toolchain-11
- gcc-toolchain)
+ (make-gcc-toolchain gcc-11))
(define-public gcc-toolchain-12
(make-gcc-toolchain gcc-12))
+;; The default GCC
+(define-public gcc-toolchain
+ gcc-toolchain-11)
+
(define-public gcc-toolchain-aka-gcc
;; It's natural for users to try "guix install gcc". This package
;; automatically "redirects" them to 'gcc-toolchain'.
- (deprecated-package "gcc" gcc-toolchain-11))
+ (deprecated-package "gcc" gcc-toolchain))
(define-public gdc-toolchain-10
--
2.38.1
S
S
Simon Tournier wrote on 9 May 2023 19:04
[PATCH 2/2] gnu: make-gcc-toolchain: Add 'lib' outputs.
(address . 63393@debbugs.gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
ce970fb1a1f436542b5602013369654c63f100f4.1683650835.git.zimon.toutoune@gmail.com
* gnu/packages/commencement.scm (make-gcc-toolchain): Add 'lib' outputs.
---
gnu/packages/commencement.scm | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)

Toggle diff (67 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 7ec177e206..94d5884a9c 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -14,6 +14,7 @@
;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -3444,15 +3445,30 @@ (define* (make-gcc-toolchain gcc
(filter-map (match-lambda
(("libc-debug" . _) #f)
(("libc-static" . _) #f)
+ (("gcc-lib" . _) #f)
+ (("gcc-debug" . _) #f)
((_ . directory) directory))
%build-inputs))
(union-build (assoc-ref %outputs "debug")
(list (assoc-ref %build-inputs
- "libc-debug")))
+ "libc-debug")
+ (assoc-ref %build-inputs
+ "gcc-debug")))
+
(union-build (assoc-ref %outputs "static")
(list (assoc-ref %build-inputs
"libc-static")))
+
+ (union-build (assoc-ref %outputs "lib")
+ (list (assoc-ref %build-inputs
+ "ld-wrapper")
+ (assoc-ref %build-inputs
+ "binutils")
+ (assoc-ref %build-inputs
+ "gcc-lib")
+ (assoc-ref %build-inputs
+ "libc")))
#t))))
(native-search-paths
@@ -3474,7 +3490,7 @@ (define* (make-gcc-toolchain gcc
binaries, plus debugging symbols in the @code{debug} output), and Binutils. GCC
is the GNU Compiler Collection.")
(home-page "https://gcc.gnu.org/")
- (outputs '("out" "debug" "static"))
+ (outputs '("out" "debug" "static" "lib"))
;; The main raison d'être of this "meta-package" is (1) to conveniently
;; install everything that we need, and (2) to make sure ld-wrapper comes
@@ -3484,8 +3500,9 @@ (define* (make-gcc-toolchain gcc
("binutils" ,binutils-final)
("libc" ,libc)
("libc-debug" ,libc "debug")
- ("libc-static" ,libc "static"))))))
-
+ ("libc-static" ,libc "static")
+ ("gcc-lib" ,gcc "lib")
+ ("gcc-debug" ,gcc "debug"))))))
(define-public gcc-toolchain-4.8
(make-gcc-toolchain gcc-4.8))
--
2.38.1
K
K
Kaelyn wrote on 9 May 2023 20:50
[PATCH 0/2] Fix libstdc++.so and gcc-toolchain
(name . 63393@debbugs.gnu.org)(address . 63393@debbugs.gnu.org)
nJpIaVpIYRxrmpaCLRWX4_Wiv4hasCHFZH5A-HQQUb4wJ6xAUJ1K-yxWt1ApIvVPnvPtAeoYQrYoC945qyOvEibk0dseBeGPJUiZC2c9ibo=@protonmail.com
Hi,

I like the direction of this patch. However, if gcc-toolchain:lib is intended to provide the runtime libraries when the full compiler isn't needed, then I think the .a and .la files should be moved back to the main gcc-toolchain output (or a separate :static output) since they are for static linking and the .a files in particular can be sizeable.

Cheers,
Kaelyn
L
L
Ludovic Courtès wrote on 11 May 2023 15:38
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87r0rn2dl2.fsf_-_@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (2 lines)
> * gnu/packages/commencement.scm (make-gcc-toolchain): Add 'lib' outputs.

[...]

Toggle quote (6 lines)
> (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:

Toggle snippet (9 lines)
$ 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%

However, I’d leave out gcc:debug because (0) it’s unrelated :-), (1)
‘gcc-final’ has no “debug” output, and (2) it’s really for a niche
(folks developing compiler plugins, typically).

I’d also leave out the /lib directory of Binutils, which is again rarely
useful.

WDYT?

Thanks,
Ludo’.
J
J
John Kehayias wrote on 16 Jul 2023 20:33
(address . 63393@debbugs.gnu.org)
87sf9nzoxf.fsf_-_@protonmail.com
Hello,

On Thu, May 11, 2023 at 03:38 PM, Ludovic Courtès wrote:

Toggle quote (38 lines)
> Hi,
>
> Simon Tournier <zimon.toutoune@gmail.com> 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%
>
> However, I’d leave out gcc:debug because (0) it’s unrelated :-), (1)
> ‘gcc-final’ has no “debug” output, and (2) it’s really for a niche
> (folks developing compiler plugins, typically).
>
> I’d also leave out the /lib directory of Binutils, which is again rarely
> useful.
>
> WDYT?
>

I don't have any strong opinions on the organization here of these
outputs, happy to defer to whatever others decide here. It would be nice
to have this sorted and taken care of before we forget about it :)

However, I think this message from Kaelyn only went to the bug number
(just saw that as I went to reply here) so I'm including it here:

On Tue, May 09, 2023 at 06:50 PM, Kaelyn wrote:

Toggle quote (10 lines)
> Hi,
>
> I like the direction of this patch. However, if gcc-toolchain:lib is
> intended to provide the runtime libraries when the full compiler isn't
> needed, then I think the .a and .la files should be moved back to the
> main gcc-toolchain output (or a separate :static output) since they
> are for static linking and the .a files in particular can be sizeable.
>
> Cheers,
> Kaelyn
I
I
Isaac van Bakel wrote on 26 Oct 2023 14:11
[PATCH 0/2] Fix libstdc++.so and gcc-toolchain
(address . 63393@debbugs.gnu.org)
f2c1f573-4455-f3f2-3b55-191ae908f8b0@inf.ethz.ch
Hi,

Is there anything I can do to help (a version of) this patch get over
the line?

I'm currently in a state when I want to use libgcc_s.so.1, which is only
provided by gcc:lib, which doesn't set the library path properly.
According to #25072, gcc-toolchain should support my use-case.

Thanks,

Isaac
M
M
Maxim Cournoyer wrote on 16 Jan 23:16 +0100
(name . John Kehayias)(address . john.kehayias@protonmail.com)
87o7dkrkju.fsf@gmail.com
Hello,

John Kehayias <john.kehayias@protonmail.com> writes:

Toggle quote (32 lines)
> Hello,
>
> On Thu, May 11, 2023 at 03:38 PM, Ludovic Courtès wrote:
>
>> Hi,
>>
>> Simon Tournier <zimon.toutoune@gmail.com> 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:

Toggle snippet (16 lines)
$ 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

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
L
L
Ludovic Courtès wrote on 24 Jan 18:08 +0100
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87ede6u09s.fsf@gnu.org
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (4 lines)
> 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?

No, because most packages depend on gcc:lib and we wouldn’t want them to
depend on all of gcc:

Toggle snippet (30 lines)
$ guix size grep
store item total self
/gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35 40.6 38.8 50.2%
/gnu/store/930nwsiysdvy2x5zv1sf6v7ym75z8ayk-gcc-11.3.0-lib 75.3 34.7 44.9%
/gnu/store/zzyywykw7kriln18rxqd82f0k5kidla7-bash-static-5.1.16 1.8 1.8 2.4%
/gnu/store/rib9g2ig1xf3kclyl076w28parmncg4k-bash-minimal-5.1.16 41.6 1.0 1.3%
/gnu/store/ixr7c3jadiqg640b8pz3njqhhm5zzmvj-grep-3.8 77.2 0.9 1.2%
total: 77.2 MiB
$ guix size grep gcc
guix size: package 'gcc' has been superseded by 'gcc-toolchain'
store item total self
/gnu/store/5lqhcv91ijy82p92ac6g5xw48l0lwwz4-gcc-11.3.0 223.6 148.1 43.0%
/gnu/store/zh4x65snfis7svs6906gj1z8i7dx2j3m-binutils-2.38 95.5 54.9 16.0%
/gnu/store/g8p09w6r78hhkl2rv1747pcp9zbk6fxv-guile-3.0.9 134.0 53.1 15.4%
/gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35 40.6 38.8 11.3%
/gnu/store/930nwsiysdvy2x5zv1sf6v7ym75z8ayk-gcc-11.3.0-lib 75.3 34.7 10.1%
/gnu/store/5iklcps70c0sfkxvlrhg8jhf3q4h18bj-linux-libre-headers-5.15.49 5.9 5.9 1.7%
/gnu/store/wlm2r1789qi5kg242kyk72ipr14xsc0n-libunistring-1.0 77.8 2.5 0.7%
/gnu/store/zzyywykw7kriln18rxqd82f0k5kidla7-bash-static-5.1.16 1.8 1.8 0.5%
/gnu/store/bmcbayp2prca1svm1d5livg4f477i452-pkg-config-0.29.2 76.4 1.1 0.3%
/gnu/store/rib9g2ig1xf3kclyl076w28parmncg4k-bash-minimal-5.1.16 41.6 1.0 0.3%
/gnu/store/ixr7c3jadiqg640b8pz3njqhhm5zzmvj-grep-3.8 77.2 0.9 0.3%
/gnu/store/575d59dd56fwiyjv58n0kjc24g3wi1ik-libgc-8.2.2 76.1 0.8 0.2%
/gnu/store/gqld7hz5vm4g904g7nc77z7wzvdrrwyb-zlib-1.2.13 40.8 0.2 0.1%
/gnu/store/q5k9xqnq9fvbvn17xymdvnckcwp8xlp9-libffi-3.4.4 75.5 0.2 0.1%
/gnu/store/fzsz6gk7g5spr7j5jx5zh6rysd5r0n64-gcc-toolchain-11.3.0 343.4 0.1 0.0%
/gnu/store/na1dpbbcxjaa3n8wkwrfpch476f90hlf-ld-wrapper-0 189.1 0.1 0.0%
total: 344.3 MiB

Ludo’.
M
M
Maxim Cournoyer wrote on 24 Jan 20:11 +0100
(name . Ludovic Courtès)(address . ludo@gnu.org)
87sf2mwnq6.fsf@gmail.com
Hi Ludo,

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (40 lines)
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> 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?
>
> No, because most packages depend on gcc:lib and we wouldn’t want them to
> depend on all of gcc:
>
> $ guix size grep
> store item total self
> /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35 40.6 38.8 50.2%
> /gnu/store/930nwsiysdvy2x5zv1sf6v7ym75z8ayk-gcc-11.3.0-lib 75.3 34.7 44.9%
> /gnu/store/zzyywykw7kriln18rxqd82f0k5kidla7-bash-static-5.1.16 1.8 1.8 2.4%
> /gnu/store/rib9g2ig1xf3kclyl076w28parmncg4k-bash-minimal-5.1.16 41.6 1.0 1.3%
> /gnu/store/ixr7c3jadiqg640b8pz3njqhhm5zzmvj-grep-3.8 77.2 0.9 1.2%
> total: 77.2 MiB
> $ guix size grep gcc
> guix size: package 'gcc' has been superseded by 'gcc-toolchain'
> store item total self
> /gnu/store/5lqhcv91ijy82p92ac6g5xw48l0lwwz4-gcc-11.3.0 223.6 148.1 43.0%
> /gnu/store/zh4x65snfis7svs6906gj1z8i7dx2j3m-binutils-2.38 95.5 54.9 16.0%
> /gnu/store/g8p09w6r78hhkl2rv1747pcp9zbk6fxv-guile-3.0.9 134.0 53.1 15.4%
> /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35 40.6 38.8 11.3%
> /gnu/store/930nwsiysdvy2x5zv1sf6v7ym75z8ayk-gcc-11.3.0-lib 75.3 34.7 10.1%
> /gnu/store/5iklcps70c0sfkxvlrhg8jhf3q4h18bj-linux-libre-headers-5.15.49 5.9 5.9 1.7%
> /gnu/store/wlm2r1789qi5kg242kyk72ipr14xsc0n-libunistring-1.0 77.8 2.5 0.7%
> /gnu/store/zzyywykw7kriln18rxqd82f0k5kidla7-bash-static-5.1.16 1.8 1.8 0.5%
> /gnu/store/bmcbayp2prca1svm1d5livg4f477i452-pkg-config-0.29.2 76.4 1.1 0.3%
> /gnu/store/rib9g2ig1xf3kclyl076w28parmncg4k-bash-minimal-5.1.16 41.6 1.0 0.3%
> /gnu/store/ixr7c3jadiqg640b8pz3njqhhm5zzmvj-grep-3.8 77.2 0.9 0.3%
> /gnu/store/575d59dd56fwiyjv58n0kjc24g3wi1ik-libgc-8.2.2 76.1 0.8 0.2%
> /gnu/store/gqld7hz5vm4g904g7nc77z7wzvdrrwyb-zlib-1.2.13 40.8 0.2 0.1%
> /gnu/store/q5k9xqnq9fvbvn17xymdvnckcwp8xlp9-libffi-3.4.4 75.5 0.2 0.1%
> /gnu/store/fzsz6gk7g5spr7j5jx5zh6rysd5r0n64-gcc-toolchain-11.3.0 343.4 0.1 0.0%
> /gnu/store/na1dpbbcxjaa3n8wkwrfpch476f90hlf-ld-wrapper-0 189.1 0.1 0.0%
> total: 344.3 MiB

Thanks for putting this into perspective. So out -> lib but lib !=
depend on out, which makes it useful to reduce the closure when used standalone.

--
Thanks,
Maxim
J
J
John Kehayias wrote on 3 Apr 21:22 +0200
(name . Ludovic Courtès)(address . ludo@gnu.org)
87bk6qw8th.fsf@protonmail.com
Hi everyone,

(And adding another CC for Isaac, where I think their message went just
to the debbugs address, which goes to no one. Another victim of needing
a "wide reply" which is easy from e.g. Emacs but not obvious especially
for people who don't interact with debbugs much as I can attest to in my
earlier days. Anyway, that's yet another issue to improve elsewhere.)

On Sun, Jul 16, 2023 at 06:33 PM, John Kehayias wrote:

Toggle quote (42 lines)
> Hello,
>
> On Thu, May 11, 2023 at 03:38 PM, Ludovic Courtès wrote:
>
>> Hi,
>>
>> Simon Tournier <zimon.toutoune@gmail.com> 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%
>>
>> However, I’d leave out gcc:debug because (0) it’s unrelated :-), (1)
>> ‘gcc-final’ has no “debug” output, and (2) it’s really for a niche
>> (folks developing compiler plugins, typically).
>>
>> I’d also leave out the /lib directory of Binutils, which is again rarely
>> useful.
>>
>> WDYT?
>>

To return to this, at the very least so I don't have to give the
incantation (which I got from someone else): guix shell -e '(list (@@
(gnu packages commencement) gcc) "lib")' to someone on IRC every few
days.

I'm sending a V2 of sorts, where it is the first patch from Simon (I had
to make a minor adjustment for it to apply cleanly now, please double
check!) and then my own very basic patch to solve the issue at hand:
just add gcc:lib to the inputs. I checked that building gcc-toolchain
works and includes libstdc++ and libgcc_s, which are the ones everyone
always asks about and assumes would be in gcc-toolchain.

What do we all think?

This is low impact and I don't think should negatively affect anything
so it would be great to get this pushed and close this finally :-)

Hope all is well!
John
J
J
John Kehayias wrote on 3 Apr 21:26 +0200
[bug#63393] [PATCH V2 1/2] gnu: gcc-toolchain: Do not use gcc-final.
(name . Ludovic Courtès)(address . ludo@gnu.org)
878r1uw8ms.fsf_-_@protonmail.com
Empty Message
From d12383158b58d558ea98a61ea99f17b991c4231b Mon Sep 17 00:00:00 2001
Message-ID: <d12383158b58d558ea98a61ea99f17b991c4231b.1712171604.git.john.kehayias@protonmail.com>
From: Simon Tournier <zimon.toutoune@gmail.com>
Date: Tue, 9 May 2023 19:04:04 +0200
Subject: [PATCH 1/2] gnu: gcc-toolchain: Do not use gcc-final.
* gnu/packages/commencement.scm (gcc-toolchain): Bind to the default
gcc-toolchain-11 being consitent with others.
(gcc-toolchain-11): Make it from gcc-11.
(gcc-toolchain-aka-gcc): Bind to gcc-toolchain.
---
gnu/packages/commencement.scm | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
Toggle diff (42 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 9124f0e2e0..390bdad250 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3616,8 +3616,6 @@ (define* (make-gcc-toolchain gcc
("libc-debug" ,libc "debug")
("libc-static" ,libc "static"))))))
-(define-public gcc-toolchain
- (make-gcc-toolchain gcc-final))
(define-public gcc-toolchain-4.8
(make-gcc-toolchain gcc-4.8))
@@ -3644,7 +3642,7 @@ (define-public gcc-toolchain-10
(make-gcc-toolchain gcc-10))
(define-public gcc-toolchain-11
- gcc-toolchain)
+ (make-gcc-toolchain gcc-11))
(define-public gcc-toolchain-12
(make-gcc-toolchain gcc-12))
@@ -3652,10 +3650,14 @@ (define-public gcc-toolchain-12
(define-public gcc-toolchain-13
(make-gcc-toolchain gcc-13))
+;; The default GCC
+(define-public gcc-toolchain
+ gcc-toolchain-11)
+
(define-public gcc-toolchain-aka-gcc
;; It's natural for users to try "guix install gcc". This package
;; automatically "redirects" them to 'gcc-toolchain'.
- (deprecated-package "gcc" gcc-toolchain-11))
+ (deprecated-package "gcc" gcc-toolchain))
(define-public gdc-toolchain-10
base-commit: c9cd16c630ccba655b93ff32fd9a99570b4f5373
--
2.41.0
J
J
John Kehayias wrote on 3 Apr 21:27 +0200
[bug#63393] [PATCH V2 2/2] gnu: make-gcc-toolchain: Add gcc:lib.
(name . Ludovic Courtès)(address . ludo@gnu.org)
875xwyw8lc.fsf_-_@protonmail.com
Empty Message
From a5a27bdef2e0a6f8f0d6a7a11ad6582ba31f3fc3 Mon Sep 17 00:00:00 2001
Message-ID: <a5a27bdef2e0a6f8f0d6a7a11ad6582ba31f3fc3.1712171604.git.john.kehayias@protonmail.com>
In-Reply-To: <d12383158b58d558ea98a61ea99f17b991c4231b.1712171604.git.john.kehayias@protonmail.com>
References: <d12383158b58d558ea98a61ea99f17b991c4231b.1712171604.git.john.kehayias@protonmail.com>
From: John Kehayias <john.kehayias@protonmail.com>
Date: Wed, 3 Apr 2024 15:12:06 -0400
Subject: [PATCH 2/2] gnu: make-gcc-toolchain: Add gcc:lib.
* gnu/packages/commencement.scm (make-gcc-toolchain)[inputs]: Add gcc:lib.
Change-Id: I327a2403d5d14dd545981e8e9dbfd7df24c9357e
---
gnu/packages/commencement.scm | 1 +
1 file changed, 1 insertion(+)
Toggle diff (14 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 390bdad250..b4d236c35b 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3612,6 +3612,7 @@ (define* (make-gcc-toolchain gcc
("ld-wrapper" ,(car (assoc-ref (%final-inputs (%current-system))
"ld-wrapper")))
("binutils" ,binutils-final)
+ ("gcc-lib" ,gcc "lib")
("libc" ,libc)
("libc-debug" ,libc "debug")
("libc-static" ,libc "static"))))))
--
2.41.0
L
L
Ludovic Courtès wrote on 10 Apr 23:21 +0200
Re: [bug#63393] [PATCH 0/2] Fix libstdc++.so and gcc-toolchain
(name . John Kehayias)(address . john.kehayias@protonmail.com)
875xwoj4lk.fsf@gnu.org
Hi John,

John Kehayias <john.kehayias@protonmail.com> skribis:

Toggle quote (9 lines)
> I'm sending a V2 of sorts, where it is the first patch from Simon (I had
> to make a minor adjustment for it to apply cleanly now, please double
> check!) and then my own very basic patch to solve the issue at hand:
> just add gcc:lib to the inputs. I checked that building gcc-toolchain
> works and includes libstdc++ and libgcc_s, which are the ones everyone
> always asks about and assumes would be in gcc-toolchain.
>
> What do we all think?

The two patches you sent LGTM. Thanks for getting the ball rolling!

Ludo’.
J
J
John Kehayias wrote on 17 Apr 07:15 +0200
(name . Ludovic Courtès)(address . ludo@gnu.org)
875xwg36zq.fsf@protonmail.com
On Wed, Apr 10, 2024 at 11:21 PM, Ludovic Courtès wrote:

Toggle quote (17 lines)
> Hi John,
>
> John Kehayias <john.kehayias@protonmail.com> skribis:
>
>> I'm sending a V2 of sorts, where it is the first patch from Simon (I had
>> to make a minor adjustment for it to apply cleanly now, please double
>> check!) and then my own very basic patch to solve the issue at hand:
>> just add gcc:lib to the inputs. I checked that building gcc-toolchain
>> works and includes libstdc++ and libgcc_s, which are the ones everyone
>> always asks about and assumes would be in gcc-toolchain.
>>
>> What do we all think?
>
> The two patches you sent LGTM. Thanks for getting the ball rolling!
>
> Ludo’.

Thanks everyone! Pushed as b47ae1ecc43baaf726701ab2d2f810ecfaa75428.
Closed
?