<pre style='margin:0'>
Landon Fuller (landonf) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/0641e588e989b7b3e5049ca79e354339ccb403ca">https://github.com/macports/macports-ports/commit/0641e588e989b7b3e5049ca79e354339ccb403ca</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 0641e588e98 gcc11: add work-around for pathologically slow SIP-disabled build times
</span>0641e588e98 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 0641e588e989b7b3e5049ca79e354339ccb403ca
</span>Author: Landon Fuller <landonf@macports.org>
AuthorDate: Fri Jul 30 11:27:19 2021 -0600

<span style='display:block; white-space:pre;color:#404040;'>    gcc11: add work-around for pathologically slow SIP-disabled build times
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84257
</span>---
 lang/gcc11/Portfile                                | 24 ++++++++++++++++++++++
 .../files/patch-disable-dyld_library_path.diff     | 11 ++++++++++
 2 files changed, 35 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc11/Portfile b/lang/gcc11/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index d2766fbc224..40d211ab87e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/gcc11/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc11/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -63,6 +63,30 @@ subport             libgcc11 { revision [ expr ${revision} + 0 ] }
</span> 
 patchfiles          patch-Make-lang.in.diff
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+if { ${os.platform} eq "darwin" && ${os.major} >= 17 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # On macOS 10.13 and later, compilation is extremely slow if SIP is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # disabled; e.g. from ~30m with SIP enabled, to ~6 hours if disabled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # This is caused by gcc's build system setting DYLD_LIBRARY_PATH to ensure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # that the toolchain picks up newly built library versions, which seems to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # trigger a pathologically slow path in dyld's library resolution.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Since dyld ignores DYLD_LIBRARY_PATH when SIP is enabled, the issue is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # avoided entirely, but at the cost of potentially falling back to incorrect
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # system library paths. The correct, SIP-compatible solution would be gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # adopting @rpath.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # However, given that SIP is enabled by default in macOS, including on our
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # build bots, we already have to assume that ignoring DYLD_LIBRARY_PATH will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # still produce a valid toolchain.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Given that, we go ahead and disable DYLD_LIBRARY_PATH explicitly, avoiding
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # otherwise unworkably long build-times for hosts with SIP disabled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84257
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append patch-disable-dyld_library_path.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if { ${configure.build_arch} eq "i386" } {
     # fix no-pie clang bug bootstrapping gcc on i386
     patchfiles-append patch-iains-i686-clang-bootstrap.diff
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/gcc11/files/patch-disable-dyld_library_path.diff b/lang/gcc11/files/patch-disable-dyld_library_path.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..30007a0c68a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/gcc11/files/patch-disable-dyld_library_path.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Makefile.in.orig       2021-07-29 15:09:04.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Makefile.in    2021-07-29 15:09:14.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -102,7 +102,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # This is the name of the environment variable used for the path to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # the libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-RPATH_ENVVAR = @RPATH_ENVVAR@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++RPATH_ENVVAR =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # On targets where RPATH_ENVVAR is PATH, a subdirectory of the GCC build path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # is used instead of the directory itself to avoid including built
</span></pre><pre style='margin:0'>

</pre>