proj/gcc-patches:master commit in: 17.0.0/gentoo/
"Sam James" <[email protected]>
| Newsgroups | gmane.linux.gentoo.cvs |
|---|---|
| Message-ID | <1787071867.d9b9e39142410a927ca06d0fe75dfcdcf34c7559.sam@gentoo> |
commit: d9b9e39142410a927ca06d0fe75dfcdcf34c7559 Author: Kostadin Shishmanov <kostadinshishmanov <AT> protonmail <DOT> com> AuthorDate: Tue Aug 18 13:06:34 2026 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Aug 18 16:51:07 2026 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=d9b9e391 17.0.0: drop libstdc++ parallel build patches Signed-off-by: Kostadin Shishmanov <kostadinshishmanov <AT> protonmail.com> Part-of: https://github.com/gentoo/gcc-patches/pull/11 Closes: https://github.com/gentoo/gcc-patches/pull/11 Signed-off-by: Sam James <sam <AT> gentoo.org> ...-not-make-libstdc-configure-wait-for-libg.patch | 73 -------------- ...-build-the-source-directories-in-parallel.patch | 109 --------------------- 17.0.0/gentoo/README.history | 5 + 3 files changed, 5 insertions(+), 182 deletions(-) diff --git a/17.0.0/gentoo/87_all_toplevel-do-not-make-libstdc-configure-wait-for-libg.patch b/17.0.0/gentoo/87_all_toplevel-do-not-make-libstdc-configure-wait-for-libg.patch deleted file mode 100644 index c2b9d3c..0000000 --- a/17.0.0/gentoo/87_all_toplevel-do-not-make-libstdc-configure-wait-for-libg.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 318c47e2661fd26b65379c854dee1fd201090d60 Mon Sep 17 00:00:00 2001 -Message-ID: <318c47e2661fd26b65379c854dee1fd201090d60.1786453925.git.sam-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> -From: Kyrylo Tkachov <[email protected]> -Date: Tue, 11 Aug 2026 11:55:38 +0200 -Subject: [PATCH 1/2] toplevel: do not make libstdc++ configure wait for - libgomp - -libstdc++'s configure was made to depend on libgomp's configure in 2007, when -GLIBCXX_ENABLE_PARALLEL decided whether to enable parallel mode by looking for -a configured libgomp/omp.h on disk. Since 2010 the test has instead grepped -the TARGET_CONFIGDIRS string, which the top level passes in, so nothing on -disk needs to exist by then. The comment above the test still describes the -old behaviour, which is what makes the edge look necessary. - -Remove it. The build time dependency, all-target-libstdc++-v3 on -configure-target-libgomp, stays, since the parallel mode headers do include -omp.h when they are compiled. - -This shortens the chain in front of libstdc++, which is the last thing to -finish in every bootstrap stage. - -Bootstrapped on aarch64-none-linux-gnu. Ok for trunk? - -ChangeLog: - - * Makefile.def (dependencies): Remove the configure-target-libstdc++-v3 - on configure-target-libgomp dependency. - * Makefile.in: Regenerate. - -Signed-off-by: Kyrylo Tkachov <[email protected]> ---- - Makefile.def | 1 - - Makefile.in | 10 ---------- - 2 files changed, 11 deletions(-) - -diff --git a/Makefile.def b/Makefile.def -index 549763de837a..6098de2904de 100644 ---- a/Makefile.def -+++ b/Makefile.def -@@ -679,7 +679,6 @@ dependencies = { module=configure-target-libphobos; on=configure-target-zlib; }; - dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; }; - dependencies = { module=all-target-libphobos; on=all-target-zlib; }; - dependencies = { module=all-target-libphobos; on=all-target-libatomic; }; --dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; - dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; }; - dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; }; - dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; }; -diff --git a/Makefile.in b/Makefile.in -index 5cca69c3f523..31eecec49caa 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -69768,16 +69768,6 @@ all-stagetrain-target-libphobos: maybe-all-stagetrain-target-libatomic - all-stagefeedback-target-libphobos: maybe-all-stagefeedback-target-libatomic - all-stageautoprofile-target-libphobos: maybe-all-stageautoprofile-target-libatomic - all-stageautofeedback-target-libphobos: maybe-all-stageautofeedback-target-libatomic --configure-target-libstdc++-v3: maybe-configure-target-libgomp --configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp --configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp --configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp --configure-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp --configure-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp --configure-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp --configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp --configure-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp --configure-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp - configure-target-libsanitizer: maybe-all-target-libstdc++-v3 - configure-stage1-target-libsanitizer: maybe-all-stage1-target-libstdc++-v3 - configure-stage2-target-libsanitizer: maybe-all-stage2-target-libstdc++-v3 - -base-commit: 1dec3355162851ab3cf991fbf8c7fa9cd08331f3 --- -2.55.0 - diff --git a/17.0.0/gentoo/88_all_libstdc-build-the-source-directories-in-parallel.patch b/17.0.0/gentoo/88_all_libstdc-build-the-source-directories-in-parallel.patch deleted file mode 100644 index d39d1a5..0000000 --- a/17.0.0/gentoo/88_all_libstdc-build-the-source-directories-in-parallel.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 69ffc65cd19556eef13671aeb3c083ae31c162de Mon Sep 17 00:00:00 2001 -Message-ID: <69ffc65cd19556eef13671aeb3c083ae31c162de.1786453925.git.sam-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> -In-Reply-To: <318c47e2661fd26b65379c854dee1fd201090d60.1786453925.git.sam-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> -References: <318c47e2661fd26b65379c854dee1fd201090d60.1786453925.git.sam-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> -From: Kyrylo Tkachov <[email protected]> -Date: Tue, 11 Aug 2026 11:55:39 +0200 -Subject: [PATCH 2/2] libstdc++: build the source directories in parallel - -libstdc++-v3/src is built by walking SUBDIRS, and automake implements that -walk as a shell loop. The per-standard directories are therefore built one -after another no matter how large -j is, and most of them hold only a handful -of files. Sampling the compiler processes during a bootstrap shows a mean of -between 2 and 4 concurrent compiles against -j64, with exactly one source -directory active at any moment, and long stretches at a concurrency of two. - -libstdc++ is the last thing to finish in every stage, so for most of that time -nothing else in the build is running and the machine is idle. - -The directories are independent of each other, apart from src/experimental, -which links the convenience archives of c++23, c++26, filesystem and -libbacktrace. Give make an explicit target per directory, with that one -dependency written down, and let it overlap them. automake's own loop still -runs afterwards, finds everything built and costs nothing, so the recursion -for install, clean and the other targets is untouched. - -On aarch64 a clean rebuild of libstdc++-v3/src with the final stage compiler -falls by 62%, and a release checking bootstrap by 12.8%. - -Bootstrapped on aarch64-none-linux-gnu. Ok for trunk? - -libstdc++-v3/ChangeLog: - - * src/Makefile.am (all-recursive): Depend on all-parallel-subdirs. - (all-parallel-subdirs, all-in-%): New targets. - (all-in-experimental): Depend on the directories whose convenience - archives it links. - * src/Makefile.in: Regenerate. - -Signed-off-by: Kyrylo Tkachov <[email protected]> ---- - libstdc++-v3/src/Makefile.am | 20 ++++++++++++++++++++ - libstdc++-v3/src/Makefile.in | 20 ++++++++++++++++++++ - 2 files changed, 40 insertions(+) - -diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am -index 35a497a15886..17fd6ed60645 100644 ---- a/libstdc++-v3/src/Makefile.am -+++ b/libstdc++-v3/src/Makefile.am -@@ -46,6 +46,26 @@ endif - SUBDIRS = c++98 c++11 c++17 c++20 c++23 c++26 \ - $(filesystem_dir) $(backtrace_dir) $(experimental_dir) - -+# automake walks SUBDIRS with a shell loop, so the source directories are -+# built strictly one after another however large -j is. They are independent -+# of each other apart from the convenience archives that src/experimental -+# links, so build them from make instead and let it overlap them. automake's -+# own loop still runs afterwards, where it finds everything already built and -+# costs nothing, and the recursion for install, clean and the rest is -+# untouched. -+all-recursive: all-parallel-subdirs -+ -+all-parallel-subdirs: $(SUBDIRS:%=all-in-%) -+ -+all-in-%: -+ $(MAKE) $(AM_MAKEFLAGS) -C $* all -+ -+# src/experimental links the convenience archives of these directories. -+all-in-experimental: all-in-c++23 all-in-c++26 \ -+ $(filesystem_dir:%=all-in-%) $(backtrace_dir:%=all-in-%) -+ -+.PHONY: all-parallel-subdirs -+ - # Cross compiler support. - if VTV_CYGMIN - toolexeclib_LTLIBRARIES = libvtv.la libstdc++.la -diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in -index 811d0a5ce4a8..104033fd6796 100644 ---- a/libstdc++-v3/src/Makefile.in -+++ b/libstdc++-v3/src/Makefile.in -@@ -1020,6 +1020,26 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES - .PRECIOUS: Makefile - - -+# automake walks SUBDIRS with a shell loop, so the source directories are -+# built strictly one after another however large -j is. They are independent -+# of each other apart from the convenience archives that src/experimental -+# links, so build them from make instead and let it overlap them. automake's -+# own loop still runs afterwards, where it finds everything already built and -+# costs nothing, and the recursion for install, clean and the rest is -+# untouched. -+all-recursive: all-parallel-subdirs -+ -+all-parallel-subdirs: $(SUBDIRS:%=all-in-%) -+ -+all-in-%: -+ $(MAKE) $(AM_MAKEFLAGS) -C $* all -+ -+# src/experimental links the convenience archives of these directories. -+all-in-experimental: all-in-c++23 all-in-c++26 \ -+ $(filesystem_dir:%=all-in-%) $(backtrace_dir:%=all-in-%) -+ -+.PHONY: all-parallel-subdirs -+ - @VTV_CYGMIN_TRUE@vtv_stubs.cc: - @VTV_CYGMIN_TRUE@ rm -f $@ - @VTV_CYGMIN_TRUE@ $(LN_S) $(toplevel_srcdir)/libstdc++-v3/libsupc++/vtv_stubs.cc $@ --- -2.55.0 - diff --git a/17.0.0/gentoo/README.history b/17.0.0/gentoo/README.history index 2ebb332..53095f1 100644 --- a/17.0.0/gentoo/README.history +++ b/17.0.0/gentoo/README.history @@ -1,3 +1,8 @@ +13 18 August 2026 + + - 87_all_toplevel-do-not-make-libstdc-configure-wait-for-libg.patch + - 88_all_libstdc-build-the-source-directories-in-parallel.patch + 12 ???? + 87_all_toplevel-do-not-make-libstdc-configure-wait-for-libg.patch