<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/44bfb68acf8e29d2d828199b6fd55cf083640999">https://github.com/macports/macports-ports/commit/44bfb68acf8e29d2d828199b6fd55cf083640999</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 44bfb68acf8 ghc: Disable parallel builds due to excessive memory usage
</span>44bfb68acf8 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 44bfb68acf8e29d2d828199b6fd55cf083640999
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Wed Apr 28 13:24:40 2021 +0100
<span style='display:block; white-space:pre;color:#404040;'> ghc: Disable parallel builds due to excessive memory usage
</span>---
lang/ghc/Portfile | 40 ++++++++++++++++++++++++++++++----------
1 file changed, 30 insertions(+), 10 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ghc/Portfile b/lang/ghc/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index f1b006e0afa..8853596b6b8 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/ghc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ghc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -146,6 +146,28 @@ proc fix_workpath_rpath { binname workpath_destdir_pattern libdir_glob rpath_re
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# `make install` in bootstrap build cannot use a parallel build.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Also during the main build the 'ghc-stage1' processes can use huge amounts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# of memory, leading to build failures (particularly on the buildbots or VMs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# with limited resources). So disable parallel builds there as well, at the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# expense of a longer build time (mitigated by fact most users witll then get
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the binary installation).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_parallel_build no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Get the correct number of build jobs. Note the number from portbuild::build_getjobsarg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# is currently incorrect if parallel builds are disabled, due to a bug in base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/macports/macports-base/pull/236#issuecomment-826309036
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This can be removed once the above fix is in a released version of base for a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# reasonable amount of time.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc get_njobs_arg { } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global use_parallel_build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![tbool use_parallel_build]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -j1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [portbuild::build_getjobsarg]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Note: ghc has DESTDIR; however, specifying --prefix=${prefix} installs
# binaries into ${prefix}, not DESTDIR. Work around this by setting
# --prefix=${destroot}${prefix} and not setting DESTDIR
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -176,7 +198,9 @@ if { [variant_isset "prebuilt"] } {
</span> port:autoconf \
port:automake \
port:bash \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:bzip2 \
</span> port:cctools \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gzip \
</span> port:happy \
port:HsColour \
port:python${python3_version} \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -184,7 +208,8 @@ if { [variant_isset "prebuilt"] } {
</span> port:texlive \
port:texlive-fonts-extra \
port:texlive-fonts-recommended \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port:texlive-latex-extra
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:texlive-latex-extra \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xz
</span>
# Add these MacPorts dependencies after this issue is fixed:
# https://gitlab.haskell.org/ghc/ghc/-/issues/18752
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -235,8 +260,6 @@ if { [variant_isset "prebuilt"] } {
</span> post-build {
# bootstrap build/destroot from ${distname}-src${extract.suffix}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- use_parallel_build yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # extract
extract.dir ${srcpath}
extract.only ${distname}-src${extract.suffix}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -290,17 +313,14 @@ if { [variant_isset "prebuilt"] } {
</span>
# build and destroot the second stage: `make && make install`
system -W ${srcpath}/${distname} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "export ${build.env};\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${build.cmd} [portbuild::build_getjobsarg]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "export ${build.env};\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${build.cmd} [get_njobs_arg]"
</span> system -W ${srcpath}/${distname} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "export ${build.env};\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${build.cmd} ${destroot.pre_args}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "export ${build.env};\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${build.cmd} ${destroot.pre_args}"
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Note: `make install` in bootstrap build cannot use a parallel build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-use_parallel_build no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> build.target install
destroot {
</pre><pre style='margin:0'>
</pre>