<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/6f8f3ade9eb249bb2f39d816dfe1239de8664eb0">https://github.com/macports/macports-ports/commit/6f8f3ade9eb249bb2f39d816dfe1239de8664eb0</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 6f8f3ade9eb249bb2f39d816dfe1239de8664eb0
</span>Author: Steven Thomas Smith <s.t.smith@ieee.org>
AuthorDate: Sat Aug 20 21:14:31 2022 -0400
<span style='display:block; white-space:pre;color:#404040;'> cabal: Update to version 3.8.1.0
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * Update to version 3.8.1.0
</span><span style='display:block; white-space:pre;color:#404040;'> * Add arm64
</span><span style='display:block; white-space:pre;color:#404040;'> * Refactor bootstrap approach for ghc-9.4.2
</span><span style='display:block; white-space:pre;color:#404040;'> * Update haskell_cabal-1.0.tcl
</span><span style='display:block; white-space:pre;color:#404040;'> * Add cabal-prebuilt subport for bootstrapping
</span><span style='display:block; white-space:pre;color:#404040;'> * Integration with new ghc-prebuilt subport
</span>---
_resources/port1.0/group/haskell_cabal-1.0.tcl | 175 +++++++++++++--------
lang/cabal/Portfile | 206 ++++++++++++++++---------
2 files changed, 243 insertions(+), 138 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/haskell_cabal-1.0.tcl b/_resources/port1.0/group/haskell_cabal-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 75f19825aa3..a5845b74ef9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/haskell_cabal-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/haskell_cabal-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -23,8 +23,12 @@
</span> # The root path for cabal. Defaults to ${workpath}/.home/.cabal .
proc haskell_cabal.add_dependencies {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global name
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { ${name} ne "cabal" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global name haskell_cabal.use_prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool haskell_cabal.use_prebuilt]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:cabal-prebuilt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:ghc-prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span> depends_build-append \
port:cabal \
port:ghc
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -32,6 +36,15 @@ proc haskell_cabal.add_dependencies {} {
</span> }
port::register_callback haskell_cabal.add_dependencies
<span style='display:block; white-space:pre;background:#e0ffe0;'>+proc haskell_cabal.getcabalbin {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global prefix haskell_cabal.use_prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool haskell_cabal.use_prebuilt]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${prefix}/bin/cabal-prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${prefix}/bin/cabal
</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> options haskell_cabal.cabal_root
default haskell_cabal.cabal_root {${workpath}/.home/.cabal}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -96,90 +109,120 @@ post-extract {
</span> close ${cabal_config_fd}
}
<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:#e0ffe0;'>+# cabal builds arm64 and x86_64 binaries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs arm64 x86_64
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-options haskell_cabal.bin haskell_cabal.env
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options haskell_cabal.bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ haskell_cabal.env \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ haskell_cabal.global_flags \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ haskell_cabal.build_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ haskell_cabal.use_prebuilt
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default haskell_cabal.bin ${prefix}/bin/cabal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default haskell_cabal.bin {[haskell_cabal.getcabalbin]}
</span>
default haskell_cabal.env \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- {CABAL_CONFIG=[option haskell_cabal.cabal_root]/config}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {CABAL_CONFIG=[option haskell_cabal.cabal_root]/config}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default haskell_cabal.global_flags {\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --config-file=[option haskell_cabal.cabal_root]/config\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --logs-dir=[option haskell_cabal.cabal_root]/logs\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --store-dir=[option haskell_cabal.cabal_root]/store\
</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;'>+default haskell_cabal.build_dir {${workpath}/dist}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# use to install prebuilt binaries for bootstrapping
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default haskell_cabal.use_prebuilt {no}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool haskell_cabal.use_prebuilt]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${haskell_cabal.cabal_root}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach f {\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cabal\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ghc\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ghc-pkg\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ghci\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ haddock\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hp2ps\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hpc\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ hsc2hs\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ runghc\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ runhaskell\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${prefix}/bin/${f}-prebuilt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${haskell_cabal.cabal_root}/bin/${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;'>+ haskell_cabal.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "GHC=${prefix}/bin/ghc-prebuilt" \
</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;'>+ foreach phase {configure build destroot test} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${phase}.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "GHC=${prefix}/bin/ghc-prebuilt" \
</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;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span>
pre-configure {
system -W ${worksrcpath} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "env ${haskell_cabal.env} ${haskell_cabal.bin} new-update"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "env ${haskell_cabal.env} ${haskell_cabal.bin} ${haskell_cabal.global_flags} update"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default configure.cmd {${haskell_cabal.bin}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default configure.cmd {${haskell_cabal.bin}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${haskell_cabal.global_flags}}
</span> default configure.pre_args {}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default configure.args {new-configure}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default configure.args {configure}
</span> default configure.env {${haskell_cabal.env}}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default build.cmd {${haskell_cabal.bin}}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-default build.target {new-build}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.type {cabal}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.cmd {${haskell_cabal.bin}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${haskell_cabal.global_flags}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.target {${subport}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.pre_args {build}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.args {${build.target}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.post_args {\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [haskell_cabal.build_getjobsarg]\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --builddir=${haskell_cabal.build_dir}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --prefix=${destroot}${prefix}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> default build.env {${haskell_cabal.env}}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+default destroot.cmd {${haskell_cabal.bin}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${haskell_cabal.global_flags}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default destroot.target {${build.target}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default destroot.pre_args {install}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default destroot.args {${destroot.target}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default destroot.post_args {\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [haskell_cabal.build_getjobsarg]\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --builddir=${haskell_cabal.build_dir}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --installdir=${destroot}${prefix}/bin\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --prefix=${destroot}${prefix}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> default destroot.env {${haskell_cabal.env}}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default test.cmd {${haskell_cabal.bin}}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-default test.target {new-test}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.cmd {${haskell_cabal.bin}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${haskell_cabal.global_flags}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.target {${build.target}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.pre_args {test}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.args {${test.target}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.post_args {\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [haskell_cabal.build_getjobsarg]\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --builddir=${haskell_cabal.build_dir}\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> default test.env {${haskell_cabal.env}}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# destroot: Avoid recompilation with a call to new-install
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # install binary
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set cabal_build ${worksrcpath}/dist-newstyle/build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fs-traverse f ${cabal_build} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [file isdirectory ${f}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [file tail ${f}] eq "${name}-${version}" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set cabal_build ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</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;'>- fs-traverse f ${cabal_build} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [file isfile ${f}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [file executable ${f}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [file tail ${f}] eq "${name}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [file tail [file dirname ${f}]] eq "${name}" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0755 ${f} ${destroot}${prefix}/bin/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc haskell_cabal.build_getjobsarg {args} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global build.jobs use_parallel_build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![exists build.jobs] || ![tbool use_parallel_build]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ""
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # install documentation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [file isdirectory ${cabal_build}/doc] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -d ${destroot}${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fs-traverse f_or_d ${cabal_build}/doc {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set subpath [strsed ${f_or_d} "s|${cabal_build}/doc||"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { ${subpath} ne "" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [file isdirectory ${f_or_d}] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${destroot}${prefix}/share/doc/${name}${subpath}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif { [file isfile ${f_or_d}] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0644 ${f_or_d} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${destroot}${prefix}/share/doc/${name}${subpath}
</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;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # install cabal data-files
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [file exists ${worksrcpath}/data]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [file isdirectory ${worksrcpath}/data] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -d ${destroot}${prefix}/share/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f_or_d [glob -nocomplain ${worksrcpath}/data/*] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [file isfile ${f_or_d}] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0644 ${f_or_d} ${destroot}${prefix}/share/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif { [file isdirectory ${f_or_d}] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- copy ${f_or_d} ${destroot}${prefix}/share/${name}
</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:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set jobs [option build.jobs]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![string is integer -strict $jobs] || $jobs < 1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ""
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "-j$jobs"
</span> }
default livecheck.type {regex}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/cabal/Portfile b/lang/cabal/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index be93dd8cbaf..0be5a931dd7 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/cabal/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/cabal/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,7 +3,7 @@
</span> PortSystem 1.0
name cabal
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version 3.6.2.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 3.8.1.0
</span> revision 0
categories lang haskell devel
platforms darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -23,31 +23,25 @@ long_description Cabal is a system for building and packaging \
</span>
homepage https://www.haskell.org/cabal
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Bootstrapped cabal 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 cabal; install the pre-built binary.} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> master_sites https://downloads.haskell.org/~${name}/${name}-install-${version}/:haskell
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set distfile_haskell \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${name}-install-${version}-x86_64-darwin.tar.xz
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distfiles ${distfile_haskell}:haskell
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums ${distfile_haskell} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 7f2840c701dee079f8200dd3566a1bcf405d41c5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 d616284712f052e599cf1940b10fa2dca4fc6ae1308c32db03f5bd2c23eb2419 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 5354100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-extract.only ${distfile_haskell}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-supported_archs x86_64
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-use_configure no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform arm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set cabal_build_arch aarch64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform i386 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set cabal_build_arch x86_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform powerpc {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set cabal_build_arch ppc_not_supported_by_cabal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# cabal must bootstrap itself
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-pre-build {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # binary extract to ${workpath}/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -W ${workpath} -d ./bin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0755 -W ${workpath} ./${name} ./bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.arch} ni [list arm i386]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ known_fail yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pre-fetch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Cabal is only available on macOS \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ with [join ${supported_archs} " or "] architectures."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error {unsupported platform}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
if {${os.platform} eq "darwin" && ${os.major} < 16} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -58,64 +52,132 @@ if {${os.platform} eq "darwin" && ${os.major} < 16} {
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if { [variant_isset "prebuilt"] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set cabal_distname ${name}-install-${version}-${cabal_build_arch}-darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set distfile_haskell ${cabal_distname}.tar.xz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles ${distfile_haskell}:haskell
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</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 cabal os.arch=arm build_arch=arm64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# run `port clean --all cabal` afterwards
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${build_arch} eq {arm64}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums ${distfile_haskell} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 1be8b14e19a93fd904d563133122ed8eee872ccc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 f75b129c19cf3aa88cf9885cbf5da6d16f9972c7f770c528ca765b9f0563ada3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 11519120
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} elseif {${build_arch} eq {x86_64}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums ${distfile_haskell} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 1f752977ba663e78d9a8398c9df02fa31002b025 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 f5ff69127b0e596b0d7895a2b0b383543aa92ae46d9b1b28f2868d2a97ed0de9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 5494908
</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;'>+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> set distfile_github \
[string totitle ${name}]-v${version}.tar.gz
<span style='display:block; white-space:pre;background:#ffe0e0;'>- master_sites-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- https://github.com/haskell/${name}/archive/refs/tags:github
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- distfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distfile_github}:github
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- checksums-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${distfile_github} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 18815e3f8fcecb85a0133293b7deb8019ab56453 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 dcf31e82cd85ea3236be18cc36c68058948994579ea7de18f99175821dbbcb64 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 2118136
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # See ${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 python_version 39
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set python_branch [string index ${python_version} 0].[string range ${python_version} 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set python_prefix ${frameworks_dir}/Python.framework/Versions/${python_branch}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set python_bin ${python_prefix}/bin/python${python_branch}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:ghc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:python${python_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ master_sites https://github.com/haskell/${name}/archive/refs/tags:github
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles ${distfile_github}:github
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums ${distfile_github} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 dbd7aa2683cb7a9bd4e393c784aac8e1d1051aa4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 d4eff9c1fcc5212360afac8d97da83b3aff79365490a449e9c47d3988c14b6bc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 2181318
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ worksrcdir ${name}-install-${version}
</span>
extract.only-append \
${distfile_github}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- worksrcdir ${name}-install-${version}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- post-patch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reinplace -E "1s|^(#!)/usr/bin/env\[\[:space:]]+python3\[\[:space:]]*$|\\1${python_bin}|" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${worksrcpath}/bootstrap/bootstrap.py
</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:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # bootstrap instructions:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://github.com/haskell/cabal/blob/master/bootstrap/README.md
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # build cabal and overwrite ${workpath}/bin/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ghc_version [exec sh -c "ghc --version | sed -E 's|^.+version (\[\[:digit:]])|\\1|'"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "${workpath}/bin/cabal update"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "${workpath}/bin/cabal v2-build --with-compiler=${prefix}/bin/ghc --dry-run cabal-install:exe:cabal"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0644 -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ./dist-newstyle/cache/plan.json \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ./bootstrap/${platforms}-${ghc_version}.plan.json
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "${workpath}/bin/cabal v2-build --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "${workpath}/bin/cabal v2-run -vnormal+stderr --builddir=dist-newstyle-bootstrap --project=cabal.project.bootstrap cabal-bootstrap-gen -- bootstrap/${platforms}-${ghc_version}.plan.json | tee bootstrap/${platforms}-${ghc_version}.json"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:python${python3_version} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-importlib-metadata \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-parsing \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-sphinx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-sphinx-jsonschema \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-sphinx-rtd-theme \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-sphinxnotes-strike \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-tz \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-yaml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python3_version}-zipp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # use bootstrapped ghc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:ghc-prebuilt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:bin/ghc:ghc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</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;'>+ "GHC=${prefix}/bin/ghc-prebuilt" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "GHC=${prefix}/bin/ghc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${haskell_cabal.cabal_root}/bin/ghc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${haskell_cabal.cabal_root}/bin/ghc-pkg
</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://github.com/haskell/cabal/issues/8360#issuecomment-1220918581
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.target ${name}-install
</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.release \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --allow-newer
</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-build {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://github.com/haskell/cabal/blob/c1f490a50782cc89030889fae8edd9f95db7c1e4/Makefile#L207
</span> system -W ${worksrcpath} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "bootstrap/bootstrap.py -d bootstrap/${platforms}-${ghc_version}.json -w ${prefix}/bin/ghc"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- delete ${workpath}/bin/${name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0755 -W ${worksrcpath}/_build/bin ${name} ${workpath}/bin/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "sphinx-build-${python3_branch} -n --keep-going -E\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ doc ${haskell_cabal.build_dir}/doc/users-guide"
</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;'>+ xinstall -d ${destroot}${prefix}/share/doc/${distname}
</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;'>+ system -W ${destroot}${prefix}/share/man/man1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "${destroot}${prefix}/bin/${name} man --raw > ${name}.1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${haskell_cabal.build_dir}/doc/users-guide \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/share/doc/${distname}
</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;'>+ notes \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "The Cabal User Guide is available at:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file://${prefix}/share/doc/${distname}/users-guide/index.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 0755 -W ${workpath} ./bin/${name} ${destroot}${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport cabal-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;'>+ use_configure no
</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;'>+ destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ move ${workpath}/${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/bin/${subport}
</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;'>+ notes \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "The Cabal prebuilt binary is installed at `${prefix}/bin/${subport}`.\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It is intended to be used to bootstrap ghc and other Haskell-based tools.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span> }
</pre><pre style='margin:0'>
</pre>