<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/7369b9ebb493cc0daf3dc5efd3afba0ce153153a">https://github.com/macports/macports-ports/commit/7369b9ebb493cc0daf3dc5efd3afba0ce153153a</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 7369b9ebb493cc0daf3dc5efd3afba0ce153153a
</span>Author: Steven Thomas Smith <s.t.smith@ieee.org>
AuthorDate: Wed Aug 17 17:53:06 2022 -0400
<span style='display:block; white-space:pre;color:#404040;'> ghc: Update to version 9.4.2
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * Update to version 9.4.2
</span><span style='display:block; white-space:pre;color:#404040;'> * Refactor to use new hadrian bootstrapping
</span><span style='display:block; white-space:pre;color:#404040;'> * hadrian port submission
</span><span style='display:block; white-space:pre;color:#404040;'> * ghc-prebuilt subport for bootstrapping
</span><span style='display:block; white-space:pre;color:#404040;'> * integration with new cabal-prebuilt subport
</span><span style='display:block; white-space:pre;color:#404040;'> * integration with revised PG haskell_cabal-1.0.tcl
</span>---
lang/ghc/Portfile | 620 ++++++++++++++++----------------
lang/ghc/files/Paths_hadrian.hs | 62 ++++
lang/ghc/files/patch-cabal_project.diff | 22 ++
lang/ghc/files/patch-ghc_mk.diff | 13 -
4 files changed, 394 insertions(+), 323 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 5294a8905ee..1864f66c849 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;'>@@ -5,17 +5,13 @@ PortGroup gpg_verify 1.0
</span> PortGroup compiler_blacklist_versions 1.0
PortGroup legacysupport 1.1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Disable on all systems, we just need the libraries for the binary patching
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-legacysupport.newest_darwin_requires_legacy 5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> name ghc
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version 9.2.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 9.4.2
</span> revision 0
categories lang haskell
maintainers {ieee.org:s.t.smith @essandess} openmaintainer
license BSD
platforms darwin
<span style='display:block; white-space:pre;background:#ffe0e0;'>-supported_archs arm64 x86_64
</span>
description The Glorious Glasgow Haskell Compilation System
long_description The Glasgow Haskell Compiler is a robust, \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -32,24 +28,14 @@ long_description The Glasgow Haskell Compiler is a robust, \
</span> generational garbage collector, and a space and \
time profiler.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage http://haskell.org/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://haskell.org/${name}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Bootstrapped ghc is the default build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-variant prebuilt \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- description {Do not bootstrap ghc; install the pre-built binary.} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://gitlab.haskell.org/ghc/ghc/-/issues/19646
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set workpath_destdir_pattern /Users/builder/Desktop/builds
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gitlab.haskell.org/ghc/ghc/-/wikis/building/hadrian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://www.haskell.org/ghc/blog/20220805-make-to-hadrian.html
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://www.haskell.org/ghcup/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://gitlab.haskell.org/haskell/ghcup/blob/master/README.md#manual-install
</span> use_xz yes
master_sites https://downloads.haskell.org/~${name}/${version}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# set build_arch by hand on arm64/x86_64 systems to get x86_64/arm64 checksums
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# run `port clean --all ghc` before commenting out this line
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# set build_arch arm64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> platform arm {
set ghc_build_arch aarch64
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -61,7 +47,7 @@ platform powerpc {
</span> }
if {${os.arch} ni [list arm i386]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- known_fail yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ known_fail yes
</span> pre-fetch {
ui_error "GHC is only available on macOS \
with [join ${supported_archs} " or "] architectures."
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -69,162 +55,110 @@ if {${os.arch} ni [list arm i386]} {
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+set ghc_version ${version}
</span> set ghc_distname ${distname}-${ghc_build_arch}-apple-darwin
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set worksrcdir ${ghc_distname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distfiles ${ghc_distname}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distname}-testsuite${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# set build_arch by hand on arm64/x86_64 systems to get x86_64/arm64 checksums
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# sudo port -d checksum ghc os.arch=arm build_arch=arm64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# run `port clean --all ghc` afterwards
</span> if {${build_arch} eq {arm64}} {
checksums ${ghc_distname}${extract.suffix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 320ff19925143d52047bcc6a09849bd23a800ac5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 356b99081ae38ded43b78840d673e8c782e0088e9a2aea0e19faaf677ccb54cf \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 123959636
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 d83d46d313b812618fc48c61b70cec856d262deb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 3f38808ac6b47631487b37535b6792d6594f5e2fbb5204bb9573ed528748e736 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 198194876
</span> } elseif {${build_arch} eq {x86_64}} {
checksums ${ghc_distname}${extract.suffix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 0e758f28b4bbb581b105e369de2a004f4d0085d2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 c527700a210306098ce85d2c956089deea539aefe1d1816701d5c14cf9c113b7 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 122462092
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 d43b11202e5088c5383bcc5bbb4cfe6639292c90 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 42bfb0412c19e3ae1727fea53208a3d15720f19c11526bb499bbd95af17e4eae \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 188413412
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums-append ${distname}-testsuite${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 f37e923d76381cb34da478b8c047d4440d9a4933 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 0402066000db81781b343976f1a274e54ebb117d599da1a979ccb0b99ab782cd \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 3170520
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set ghc_source_checksums [list \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${distname}-src${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 2479a11a4723faa1cdfb5082c12cb86437153ce8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 7227ef3b5e15a0d70b8f1a43aec32867e2a9b2d857cc0ed556aeed172d4db3a5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 28545388 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set ghc_testsuite_checksums [list \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${distname}-testsuite${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 fac63ddd5534ef7db6dd899e0c1673799763cf7b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 e3e9dedd647cc6936acb507730c1e148e13300ed347ea9752c3bbc7e919b671e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 3380276 \
</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;'>+# https://bgamari.github.io/media/ben@well-typed.com.asc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set gpg_keyid ffeb7ce81e16a36b3e2ded6f2de04d4e97db64ad
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${name} eq ${subport}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PortGroup haskell_cabal 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ haskell_cabal.use_prebuilt yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cmd ./configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.pre_args \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --prefix=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.cmd hadrian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.target binary-dist-dir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.pre_args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.post_args [haskell_cabal.build_getjobsarg]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-gpg_verify.use_gpg_verification \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.cmd hadrian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.target install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.pre_args \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --prefix=${destroot}${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.post_args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test.cmd hadrian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test.target test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test.pre_args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test.post_args [haskell_cabal.build_getjobsarg]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles [lindex ${ghc_source_checksums} 0] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [lindex ${ghc_testsuite_checksums} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums {*}${ghc_source_checksums} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {*}${ghc_testsuite_checksums}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extract.only [lindex ${ghc_source_checksums} 0] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [lindex ${ghc_testsuite_checksums} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant prebuilt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ description {This variant is deprecated.} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Please install the port ${name}-prebuilt."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "deprecated variant."
</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;'>+ gpg_verify.use_gpg_verification \
</span> yes
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {[option gpg_verify.use_gpg_verification]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- distfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${ghc_distname}${extract.suffix}.sig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option gpg_verify.use_gpg_verification]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles-append \
</span> ${distname}-testsuite${extract.suffix}.sig
<span style='display:block; white-space:pre;background:#ffe0e0;'>- checksums-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${ghc_distname}${extract.suffix}.sig \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 586 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums-append \
</span> ${distname}-testsuite${extract.suffix}.sig \
size 586
<span style='display:block; white-space:pre;background:#ffe0e0;'>- post-checksum {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://bgamari.github.io/media/ben@well-typed.com.asc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set gpg_keyid ffeb7ce81e16a36b3e2ded6f2de04d4e97db64ad
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gpg_verify.verify_gpg_signature \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${filespath}/keyid-${gpg_keyid}.txt \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distpath}/${ghc_distname}${extract.suffix}.sig \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distpath}/${ghc_distname}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gpg_verify.verify_gpg_signature \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${filespath}/keyid-${gpg_keyid}.txt \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distpath}/${distname}-testsuite${extract.suffix}.sig \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distpath}/${distname}-testsuite${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-extract.only ${ghc_distname}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distname}-testsuite${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# If legacy support is active, patch the bootstrap binaries to redirect libSystem.B.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# to MacPorts wrapped implementation which reexports the system library, adding
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# each missing in each OS.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} eq "darwin" && ${os.major} <= [legacysupport::get_newest_darwin_with_missing_symbols]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_lib-append [legacysupport::get_dependency]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f [ exec find ${workpath}/ -type f -and -name "*.dylib" -or -name "*ghc*" -and -not -name "*stderr"] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[string match "application/*" [lindex [exec /usr/bin/file --mime-type ${f}] end]]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set sLib /usr/lib/libSystem.B.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set lLib ${prefix}/lib/libMacportsLegacySystem.B.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system "install_name_tool -change ${sLib} ${lLib} ${f} > /dev/null 2>&1 ; true"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-checksum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gpg_verify.verify_gpg_signature \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${filespath}/keyid-${gpg_keyid}.txt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${distpath}/${distname}-testsuite${extract.suffix}.sig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${distpath}/${distname}-testsuite${extract.suffix}
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Build requires C11
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# On OSX 10.{8,9} with clang 503, 600
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# :info:build dtrace: failed to open td=gnu11/usr/bin/clang -std=gnu11 -E ...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append {clang < 700}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# use these to specify python versions, python3 required
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# use ${prefix}/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set python3_version 39
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set python3_branch [string index ${python3_version} 0].[string range ${python3_version} 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set srcpath ${workpath}/src
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# get the objdump rpath names that match ${workpath} in the binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proc get_workpath_list { binname workpath_destdir_pattern } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return [exec bash -c "otool -l \"${binname}\" 2>/dev/null \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- | grep -E -A 2 -e '\[\[:space:]]+cmd\[\[:space:]]+LC_RPATH' \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- | grep -E -e '\[\[:space:]]+path\[\[:space:]]+' \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- | grep -E -o -e '(${workpath_destdir_pattern}\[^ ]+)' || true"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# fix ${workpath} rpath dirs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proc fix_workpath_rpath { binname workpath_destdir_pattern libdir_glob rpath_re } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- global destroot
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set workpath_list \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [get_workpath_list ${binname} ${workpath_destdir_pattern}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach path [lreverse ${workpath_list}] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system "install_name_tool -delete_rpath \"${path}\" \"${binname}\" || true"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach rpath [exec bash -c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "otool -L \"${binname}\" | grep -E -o -e '${rpath_re}' || true"] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set libname [strsed ${rpath} "s|^@rpath/||"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set libpath [glob -nocomplain "${destroot}${libdir_glob}/${libname}"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { ${libpath} ne "" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set libprefixpath \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [strsed [file dirname ${libpath}] "s|${destroot}||"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system "install_name_tool -add_rpath \"${libprefixpath}\" \"${binname}\" || true"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# `make install` in bootstrap build cannot use a parallel build.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Also during the main build the 'ghc-stage1' processes can use huge amounts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# of memory, leading to build failures (particularly on the buildbots or VMs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# with limited resources). So disable parallel builds there as well, at the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# expense of a longer build time (mitigated by fact most users will then get
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# the binary installation).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-use_parallel_build no
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Note: ghc has DESTDIR; however, specifying --prefix=${prefix} installs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# binaries into ${prefix}, not DESTDIR. Work around this by setting
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# --prefix=${destroot}${prefix} and not setting DESTDIR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ use_xcode yes
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib-append port:libffi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Build requires C11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # On OSX 10.{8,9} with clang 503, 600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # :info:build dtrace: failed to open td=gnu11/usr/bin/clang -std=gnu11 -E ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.blacklist-append {clang < 700}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if { [variant_isset "prebuilt"] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set bootstrap_dir ${destroot}${prefix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # install the initial bootstrap compiler to destroot
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.pre_args \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --prefix=${bootstrap_dir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # the PATH environment must provide the bootstrap path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build.env-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "PATH=$env(PATH):${bootstrap_dir}/bin"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # avoid conflicts with libffi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f {ffi.h ffitarget.h} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[file exists ${prefix}/include/${f}] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [file exists ${destroot}${prefix}/include/${f}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- delete ${destroot}${prefix}/include/${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set bootstrap_dir ${workpath}/bootstrap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- distfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distname}-src${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- checksums-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distname}-src${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 93a5bb73ffab85daabeed6b65dc349bda28f4359 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 f444012f97a136d9940f77cdff03fda48f9475e2ed0fec966c4d35c4df55f746 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 23338772
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # use these to specify python versions, python3 required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # use ${prefix}/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set python3_version 310
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set python3_branch [string index ${python3_version} 0].[string range ${python3_version} 1 end]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set python3_prefix ${frameworks_dir}/Python.framework/Versions/${python3_branch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set python3_bin ${python3_prefix}/bin/python${python3_branch}
</span>
depends_build-append \
port:alex \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -234,6 +168,7 @@ if { [variant_isset "prebuilt"] } {
</span> port:bzip2 \
port:cctools \
port:gzip \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:hadrian \
</span> port:happy \
port:HsColour \
port:python${python3_version} \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -244,188 +179,126 @@ if { [variant_isset "prebuilt"] } {
</span> port:texlive-latex-extra \
port:xz
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gmp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # build depends upon these x86_64 binaries
depends_skip_archcheck-append \
alex \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ hadrian \
</span> happy \
HsColour
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Add these MacPorts dependencies after this issue is fixed:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://gitlab.haskell.org/ghc/ghc/-/issues/18752
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # depends_lib-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # port:gmp \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # port:libiconv
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # test: move extracted testsuite directory to src
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0755 -d ${srcpath}/${distname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- move ${workpath}/${distname}/testsuite ${srcpath}/${distname}/testsuite
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # bootstrap build/destroot from cabal-prebuilt and ghc-prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${workpath}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${haskell_cabal.bin} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${workpath}/bin/cabal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${prefix}/bin/ghc-prebuilt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${workpath}/bin/ghc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # the versions of ghc and ghc-pkg must match
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${prefix}/bin/ghc-pkg-prebuilt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${workpath}/bin/ghc-pkg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${python3_bin} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${workpath}/bin/python3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${prefix}/bin/sphinx-build-${python3_branch} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${workpath}/bin/sphinx-build
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # libHSbase shipped with GHC links against system libiconv, which provides the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # 'iconv' symbol, but not the 'libiconv' symbol. Because the compilation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # process statically links libHSbase.a, we must have /usr/lib in the library
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # search path first :/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- compiler.library_path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- compiler.cpath
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # install the initial bootstrap compiler to destroot
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.pre_args \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --prefix=${bootstrap_dir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Add these MacPorts dependencies after this issue is fixed:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://gitlab.haskell.org/ghc/ghc/-/issues/18752
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # --with-ffi-includes=${prefix}/include \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # --with-ffi-libraries=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # --with-gmp-includes=${prefix}/include \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # --with-gmp-libraries=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # --with-iconv-includes=${prefix}/include \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # --with-iconv-libraries=${prefix}/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # add the bootstrap binary and the sphinx-build binary to PATH
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.env-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- GHC=${bootstrap_dir}/bin/ghc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "PATH=$env(PATH):${bootstrap_dir}/bin:${frameworks_dir}/Python.framework/Versions/${python3_branch}/bin"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # configure.dir ${workpath}/${ghc_distname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pre-configure {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0755 -d ${bootstrap_dir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # the PATH environment must provide the bootstrap path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build.env \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "PATH=$env(PATH):${bootstrap_dir}/bin:${frameworks_dir}/Python.framework/Versions/${python3_branch}/bin"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Remove after this issue is fixed:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://gitlab.haskell.org/ghc/ghc/-/issues/20592
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${build_arch} eq {arm64}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build.env-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "C_INCLUDE_PATH=${configure.sdkroot}/usr/include/ffi"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build.dir ${configure.dir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- post-build {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # bootstrap build/destroot from ${distname}-src${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # extract
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extract.dir ${srcpath}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extract.only ${distname}-src${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- portextract::extract_main
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if { ![file exists ${worksrcpath}/boot] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/boot.source \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/boot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
# fix DejaVu texlive fonts names, e.g. "\setmonofont{DejaVu Sans Mono}"
foreach f [list \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ${srcpath}/${distname}/libraries/Cabal/doc/conf.py \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${srcpath}/${distname}/docs/users_guide/conf.py \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/libraries/Cabal/doc/conf.py \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/docs/users_guide/conf.py \
</span> ] {
reinplace -E "s|(\{DejaVu\[\[:alnum:]_]*)\[\[:space:]]+|\\1|g" \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${f}
</span> reinplace -E "s|(\{DejaVu\[\[:alnum:]_]*)\[\[:space:]]+|\\1|g" \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${f}
</span> reinplace -E "s|\{(DejaVu\[\[:alnum:]_]*)\}|\{\\1.ttf\}|g" \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${f}
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # fix python3 executable name
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f [list \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${srcpath}/${distname}/boot \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${srcpath}/${distname}/utils/checkUniques/check-uniques.py \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -E "s|^(#!/usr/bin/env python)3|\\1${python3_branch}|" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach phase {configure build destroot test} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${phase}.env-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "PATH=${haskell_cabal.cabal_root}/bin:$env(PATH)" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "PATH=${workpath}/bin:$env(PATH)"
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://trac.macports.org/wiki/UsingTheRightCompiler
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.env-append CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CXX=${configure.cxx}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build.env-append CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CXX=${configure.cxx}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Remove this patch for version 9.2.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://gitlab.haskell.org/ghc/ghc/-/issues/19631
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://gitlab.haskell.org/ghc/ghc/-/commit/71c1bdb0b657667c0bbc805bb7ab83408ffc2784
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # diff -Naur ghc-orig ghc-new | sed -E -e 's/ghc-(orig|new)\//.\//g' > patch-ghc_mk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${srcpath}/${distname} "patch -p0 < ${filespath}/patch-ghc_mk.diff"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${srcpath}/${distname} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "export ${configure.env} ;\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ./boot"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # configure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # install the final compiler to destroot
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.pre_args-replace \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --prefix=${bootstrap_dir} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --prefix=${destroot}${prefix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.dir ${srcpath}/${distname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${srcpath}/${distname} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "export ${configure.env};\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${configure.cmd} ${configure.pre_args}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # build and destroot the second stage: `make && make install`
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${srcpath}/${distname} \
</span><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:#ffe0e0;'>- system -W ${srcpath}/${distname} \
</span><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;'>+ pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "./boot"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-build.target install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ use_autoconf yes
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -W ${filespath} -m 0644 ./ghci.conf ${destroot}${prefix}/etc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://gitlab.haskell.org/ghc/ghc/-/issues/22118
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.pre_args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-gmp-includes=${prefix}/include \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-gmp-libraries=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-iconv-includes=${prefix}/include \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-iconv-libraries=${prefix}/lib
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://gitlab.haskell.org/ghc/ghc/-/issues/19646
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set workpath_destdir_pattern ${workpath}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # fix rpath searches
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set dylib_list {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fs-traverse f ${destroot}${prefix}/lib/${name}-${version} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [file isfile ${f}] && [string match "*.dylib" ${f}] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend dylib_list ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pre-build {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "CFLAGS=${configure.cflags} [get_canonical_archflags cc]" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "CPPFLAGS=${configure.cppflags}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "LDFLAGS=${configure.ldflags} [get_canonical_archflags ld]"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f [concat \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [glob -type f ${destroot}${prefix}/lib/${name}-${version}/bin/*] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${dylib_list}] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[file executable ${f}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- || [string match *.dylib ${f}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fix_workpath_rpath ${f} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${workpath_destdir_pattern} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${prefix}/lib/${name}-${version}/* \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {@rpath/lib.+\.dylib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-build {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${build.dir} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "${build.cmd} docs [haskell_cabal.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;'>+ pre-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # mk/install_script.sh isn't automatically created by hadrian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set bindist_mkdir [glob ${worksrcpath}/_build/bindist/${distname}-*/mk]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![file exists ${bindist_mkdir}/install_script.sh]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -W ${worksrcpath} mk/install_script.sh ${bindist_mkdir}
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # delete any destroot path appearing in text files
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fs-traverse f ${destroot}${prefix} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[file isfile ${f}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[string match "text/*" [lindex [exec /usr/bin/file --mime-type ${f}] end]]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -q "s|${destroot}||g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # documentation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -W ${filespath} -m 0644 ./ghci.conf ${destroot}${prefix}/etc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${destroot}${prefix}/share/share/doc/${distname}/archives
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${destroot}${prefix}/share/man/man1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -m 0644 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/_build/doc/users_guide/build-man/${name}.1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/share/man/man1
</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;'>+ post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # delete any destroot path appearing in text files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fs-traverse f ${destroot}${prefix} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[file isfile ${f}] && [file type ${f}] eq {file}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string match "text/*" [lindex [exec /usr/bin/file --mime-type ${f}] end]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|${destroot}||g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-activate {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system "${prefix}/bin/ghc-pkg recache"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-pre-test {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- test.env-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "PATH=$env(PATH):${bootstrap_dir}/bin:${frameworks_dir}/Python.framework/Versions/${python3_branch}/bin"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test.run yes
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-test.run yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-test.dir ${srcpath}/${distname}/testsuite
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-test.target test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-activate {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system "${prefix}/bin/ghc-pkg recache"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-notes "The GHC User Manual is available at:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ notes "The GHC User Manual is available at:
</span>
file://${prefix}/share/doc/${distname}/html/index.html
${prefix}/share/doc/${distname}/users_guide.pdf
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -433,8 +306,135 @@ notes "The GHC User Manual is available at:
</span> Copy/edit ${prefix}/etc/ghci.conf to your directory ~/.ghc
for a user-specific startup configuration."
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# livecheck broken on downloads.haskell.org
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# See: https://lists.macports.org/pipermail/macports-dev/2019-December/041581.html
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#livecheck.type regex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#livecheck.url https://downloads.haskell.org/~${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#livecheck.regex (\\d+(?:\\.\\d+){1,3})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # livecheck broken on downloads.haskell.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # See: https://lists.macports.org/pipermail/macports-dev/2019-December/041581.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #livecheck.type regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #livecheck.url https://downloads.haskell.org/~${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #livecheck.regex (\\d+(?:\\.\\d+){1,3})
</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;'>+subport ghc-prebuilt {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ supported_archs arm64 x86_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ worksrcdir ${ghc_distname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles ${ghc_distname}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gpg_verify.use_gpg_verification \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option gpg_verify.use_gpg_verification]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${ghc_distname}${extract.suffix}.sig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${ghc_distname}${extract.suffix}.sig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 586
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-checksum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gpg_verify.verify_gpg_signature \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${filespath}/keyid-${gpg_keyid}.txt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${distpath}/${ghc_distname}${extract.suffix}.sig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${distpath}/${ghc_distname}${extract.suffix}
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extract.only ${ghc_distname}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Build requires C11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # On OSX 10.{8,9} with clang 503, 600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # :info:build dtrace: failed to open td=gnu11/usr/bin/clang -std=gnu11 -E ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.blacklist-append {clang < 700}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distname ${name}-${ghc_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ worksrcdir ${distname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # rename installed files to *-prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set exedir ${prefix}/lib/${distname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set docdir ${prefix}/share/doc/${distname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach f [glob ${destroot}${prefix}/bin/*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[file isfile ${f}] && [file type ${f}] eq {file}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && [string match "text/*" [lindex [exec /usr/bin/file --mime-type ${f}] end]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -E -q \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "s|^(exeprog=\".+)(\")\$|\\1-prebuilt\\2|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach d [list ${exedir} ${docdir}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -E -q "s|(${d})|\\1-prebuilt|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ move ${f} ${f}-prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[file type ${f}] eq {link}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set flink [file readlink ${f}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${flink}-prebuilt ${f}-prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${f}
</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;'>+ foreach d [list ${destroot}${exedir} ${destroot}${docdir}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ move ${d} ${d}-prebuilt
</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;'>+ delete -force \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${docdir}/archives
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport hadrian {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # find ${worksrcpath} -type f -exec egrep -E -o '"pkg-name":"shake","pkg-version":"[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+"' {} ';'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ version 0.19.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant stack \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ description {Use stack to build.} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if { [variant_isset "stack"] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PortGroup haskell_stack 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Fix for cabal data-files hardcoded path in binary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # See:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://github.com/commercialhaskell/stack/issues/848
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://github.com/commercialhaskell/stack/issues/4857
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://github.com/haskell/cabal/issues/462
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://github.com/haskell/cabal/issues/3586
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -m 0644 -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${filespath}/Paths_${subport}.hs ./src/Paths_${subport}.hs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|@PREFIX@|${prefix}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/src/Paths_${subport}.hs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|@NAME@|${subport}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/src/Paths_${subport}.hs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -E "s|(Version\[\[:space:\]\]+)\\\[\[\[:digit:\]\]+(,\[\[:digit:\]\]+){1,4}\\\]|\\1\[[join [split ${version} .] ,]\]|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/src/Paths_${subport}.hs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PortGroup haskell_cabal 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variant haskell_cabal_use_prebuilt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ description {Use prebuilt cabal and ghc. This is a necessary\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default variant because hadrian is used to bootstrap ghc\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and ghc is used to bootstrap cabal.} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ haskell_cabal.use_prebuilt yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default_variants-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ +haskell_cabal_use_prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # patch to allow compilation with ghc 9.4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # please remove after next upgrade
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://gitlab.haskell.org/ghc/ghc/-/issues/21980#note_447726
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-cabal_project.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach phase {build destroot test} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${phase}.post_args-prepend \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --project-file=cabal.project
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distname ${name}-${ghc_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles [lindex ${ghc_source_checksums} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums {*}${ghc_source_checksums}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extract.only [lindex ${ghc_source_checksums} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ worksrcdir ${distname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set worksrcpath ${workpath}/${worksrcdir}/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ghc/files/Paths_hadrian.hs b/lang/ghc/files/Paths_hadrian.hs
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b0986aee428
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ghc/files/Paths_hadrian.hs
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,62 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{- Cabal data-files hardcoded path in binary fix.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This file replaces the Paths_*.hs automatically created by cabal.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* https://github.com/commercialhaskell/stack/issues/848
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* https://github.com/commercialhaskell/stack/issues/4857
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* https://github.com/haskell/cabal/issues/462
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* https://github.com/haskell/cabal/issues/3586
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+{-# LANGUAGE CPP #-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{-# LANGUAGE NoRebindableSyntax #-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+module Paths_hadrian (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ version,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ getDataFileName, getSysconfDir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ) where
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+import qualified Control.Exception as Exception
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+import Data.Version (Version(..))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+import System.Environment (getEnv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+import Prelude
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if defined(VERSION_base)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if MIN_VERSION_base(4,0,0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+catchIO = Exception.catch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version :: Version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version = Version [0,1,0,0] []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bindir = "@PREFIX@/bin"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+libdir = "@PREFIX@/lib/@NAME@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dynlibdir = "@PREFIX@/lib/@NAME@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+datadir = "@PREFIX@/share/@NAME@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+libexecdir = "@PREFIX@/lib/@NAME@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sysconfdir = "@PREFIX@/etc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getBinDir = catchIO (getEnv "hadrian_bindir") (\_ -> return bindir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getLibDir = catchIO (getEnv "hadrian_libdir") (\_ -> return libdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getDynLibDir = catchIO (getEnv "hadrian_dynlibdir") (\_ -> return dynlibdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getDataDir = catchIO (getEnv "hadrian_datadir") (\_ -> return datadir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getLibexecDir = catchIO (getEnv "hadrian_libexecdir") (\_ -> return libexecdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getSysconfDir = catchIO (getEnv "hadrian_sysconfdir") (\_ -> return sysconfdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getDataFileName :: FilePath -> IO FilePath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+getDataFileName name = do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dir <- getDataDir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return (dir ++ "/" ++ name)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ghc/files/patch-cabal_project.diff b/lang/ghc/files/patch-cabal_project.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..28693bdcf1a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/ghc/files/patch-cabal_project.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./cabal.project 2022-09-03 20:04:07.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./cabal.project 2022-09-03 20:06:31.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,9 +1,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ packages: ./
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++allow-newer: base, template-haskell, ghc-bignum
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++constraints:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ primitive == 0.7.4.0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ hashable == 1.4.0.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -- This essentially freezes the build plan for hadrian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-index-state: 2022-03-26T18:46:55Z
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++index-state: 2022-08-09T12:46:55Z
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -- N.B. Compile with -O0 since this is not a performance-critical executable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -- and the Cabal takes nearly twice as long to build with -O1. See #16817.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ package Cabal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ optimization: False
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++package hadrian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ flags: -selftest
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/ghc/files/patch-ghc_mk.diff b/lang/ghc/files/patch-ghc_mk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 604a4bc88de..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/ghc/files/patch-ghc_mk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,13 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./utils/ghc-cabal/ghc.mk ./utils/ghc-cabal/ghc.mk
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./utils/ghc-cabal/ghc.mk 2022-02-13 13:55:11.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./utils/ghc-cabal/ghc.mk 2022-02-13 13:54:05.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -59,7 +59,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "$(GHC)" $(SRC_HC_OPTS) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(addprefix -optc, $(SRC_CC_OPTS) $(CONF_CC_OPTS_STAGE0)) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(addprefix -optl, $(SRC_LD_OPTS) $(CONF_GCC_LINKER_OPTS_STAGE0)) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- -O0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ -O0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ -XHaskell2010 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -hide-all-packages \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -package-env - \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(addprefix -package , $(CABAL_BUILD_DEPS)) \
</span></pre><pre style='margin:0'>
</pre>