commit:     9034a6d5fcf3a2ead9735466c906830d472a2f9c
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 13 03:23:31 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jan 13 03:23:38 2025 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=9034a6d5

15.0.0: add parallel build patch for D

Thank you Arsen!

Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...-d-give-dependency-files-better-filenames.patch | 54 ++++++++++++++++++++++
 15.0.0/gentoo/README.history                       |  1 +
 2 files changed, 55 insertions(+)

diff --git 
a/15.0.0/gentoo/83_all-gcc-d-give-dependency-files-better-filenames.patch 
b/15.0.0/gentoo/83_all-gcc-d-give-dependency-files-better-filenames.patch
new file mode 100644
index 0000000..98156e4
--- /dev/null
+++ b/15.0.0/gentoo/83_all-gcc-d-give-dependency-files-better-filenames.patch
@@ -0,0 +1,54 @@
+https://inbox.sourceware.org/gcc-patches/[email protected]/
+
+From 327b1b3834b4e3c80b209a35a73b063a0f9bfd75 Mon Sep 17 00:00:00 2001
+Message-ID: 
<327b1b3834b4e3c80b209a35a73b063a0f9bfd75.1736738577.git....@gentoo.org>
+From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <[email protected]>
+Date: Sun, 12 Jan 2025 16:16:58 +0100
+Subject: [PATCH] gcc/d: give dependency files better filenames
+
+Currently, the dependency files for root-file.o and common-file.o were
+both d/.deps/file.Po, which would cause parallel builds to fail
+sometimes with:
+
+  make[3]: Leaving directory 
'/var/tmp/portage/sys-devel/gcc-14.1.1_p20240511/work/build/gcc'
+  make[3]: Entering directory 
'/var/tmp/portage/sys-devel/gcc-14.1.1_p20240511/work/build/gcc'
+  mv: cannot stat 'd/.deps/file.TPo': No such file or directory
+  make[3]: *** 
[/var/tmp/portage/sys-devel/gcc-14.1.1_p20240511/work/gcc-14-20240511/gcc/d/Make-lang.in:421:
 d/root-file.o] Error 1 shuffle=131581365
+
+Also, this means that dependencies of one of root-file or common-file
+are missing when developing.  After this patch, those two files get
+assigned dependency files d/.deps/d-root-file.o.Po and
+d/.deps/d-common-file.o.Po respectively.
+
+There are other files with similar conflicts (mangle-package.o,
+visitor-package.o for instance).
+
+gcc/d/ChangeLog:
+
+* Make-lang.in: Assign dependency-tracking files better
+       filenames.
+---
+ gcc/d/Make-lang.in | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/d/Make-lang.in b/gcc/d/Make-lang.in
+index f28761e4b370..25e2b0bbfe94 100644
+--- a/gcc/d/Make-lang.in
++++ b/gcc/d/Make-lang.in
+@@ -65,8 +65,9 @@ ALL_DFLAGS = $(DFLAGS-$@) $(GDCFLAGS) -fversion=IN_GCC 
$(CHECKING_DFLAGS) \
+       $(WARN_DFLAGS)
+ 
+ DCOMPILE.base = $(GDC) -c $(ALL_DFLAGS) -o $@
+-DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(*F).TPo
+-DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(*F).TPo $(@D)/$(DEPDIR)/$(*F).Po
++DEPFILE = $(subst /,-,$@)
++DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(DEPFILE).TPo
++DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(DEPFILE).TPo 
$(@D)/$(DEPDIR)/$(DEPFILE).Po
+ DLINKER = $(GDC) $(NO_PIE_FLAG) -lstdc++
+ 
+ # Like LINKER, but use a mutex for serializing front end links.
+
+base-commit: 0e05b793fba2a9bea9f0fbb1f068679f5dadf514
+-- 
+2.48.0
+

diff --git a/15.0.0/gentoo/README.history b/15.0.0/gentoo/README.history
index 1f53f35..58edd02 100644
--- a/15.0.0/gentoo/README.history
+++ b/15.0.0/gentoo/README.history
@@ -1,6 +1,7 @@
 38     ????
 
        + 82_all_PR118409-ifcombine.patch
+       + 83_all-gcc-d-give-dependency-files-better-filenames.patch
 
 37     13 January 2025
 

Reply via email to