<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>