<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/1e767cc1afb7c30644aa80928040b23011195b2b">https://github.com/macports/macports-ports/commit/1e767cc1afb7c30644aa80928040b23011195b2b</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 1e767cc1afb ihaskell: Update to latest commit, default to Python39
</span>1e767cc1afb is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 1e767cc1afb7c30644aa80928040b23011195b2b
</span>Author: Steven Thomas Smith <s.t.smith@ieee.org>
AuthorDate: Sun Apr 4 07:37:08 2021 -0400

<span style='display:block; white-space:pre;color:#404040;'>    ihaskell: Update to latest commit, default to Python39
</span>---
 devel/ihaskell/Portfile | 109 +++++++++++++++++++++++++++++++++++-------------
 1 file changed, 79 insertions(+), 30 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/ihaskell/Portfile b/devel/ihaskell/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 9e10188b72e..228b9c7f2ab 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/ihaskell/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/ihaskell/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,9 +4,10 @@ PortSystem          1.0
</span> PortGroup           github 1.0
 PortGroup           haskell_stack 1.0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        gibiansky IHaskell e07b198f07d7dc7a12863f8507439ae3834947e4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        gibiansky IHaskell 0f1262d3e710518fd734fbda6f2eba33e476836b
</span> name                [string tolower ${github.project}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             2021.01.28
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# current version in https://github.com/gibiansky/IHaskell/blob/master/ihaskell.cabal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             20210228
</span> revision            0
 
 categories          devel haskell
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,14 +27,14 @@ long_description    IHaskell is a kernel for the Jupyter project, \
</span>                     wiki also has more extensive documentation of \
                     IHaskell features.
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  c0301fb9a4caafc57ac8c81246418b570b4b6fb1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  0a00e452a9b9ce0dc18c8ef899b849069633d1498cfcdf78c89666f0006a2c96 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    760166
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  734c015d8220dfed4ee8d7555c8d78d06f6a7e2d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  c4c49cddb3befef47dd3c8b4b786445f8dbc2ad44c1fa12194876b29f9e4aade \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    760265
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# use these to specify python versions, python3 required 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set python3_version 3.8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set python3_version_nickname \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    [join [lrange [split ${python3_version} .] 0 1] {}]
</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 39
</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> 
 # See https://github.com/gibiansky/IHaskell#mac,
 # https://github.com/gibiansky/IHaskell/blob/master/requirements.txt
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -41,32 +42,33 @@ depends_lib-append  \
</span>                     path:lib/pkgconfig/pango.pc:pango \
                     port:ghc \
                     port:libmagic \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:python${python3_version_nickname} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-cairo \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-ipykernel \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-ipywidgets \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-jupyter \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-jupyter_client \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-jupyter_core \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-magic \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-nbformat \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-pkgconfig \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python3_version_nickname}-widgetsnbextension \
</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}-cairo \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-ipykernel \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-ipywidgets \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-jupyter \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-jupyter_client \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-jupyter_core \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-magic \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-nbformat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-pkgconfig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python3_version}-widgetsnbextension \
</span>                     port:zmq
 
 haskell_stack.system_ghc \
                     yes
 
 # relative paths to ${prefix}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+set ihaskell_libdir ${prefix}/lib/${name}
</span> set ihaskell_datadir \
                     share/${name}
 set jupyter_dir     share/jupyter
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set hlint_datadir \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    share/hlint
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set hlint_datadir   share/hlint
</span> 
 post-extract {
     xinstall -m 0755 -d \
         "[option haskell_stack.stack_root]" \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${destroot}${ihaskell_libdir} \
</span>         ${destroot}${prefix}/${ihaskell_datadir}/html \
         ${destroot}${prefix}/${jupyter_dir}
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -100,17 +102,56 @@ extra-include-dirs:\\
</span>         ${worksrcpath}/src/Paths_${name}.hs
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# no jupyter_select yet, so hack PATH to find `which jupyter`: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# no jupyter_select yet, so hack PATH to find `which jupyter`:
</span> # https://trac.macports.org/ticket/50608
 # note: this command does not change the destroot PATH environment, so export
 # PATH explicitly in the necessary system command below
 destroot.env-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    "PATH=$env(PATH):${frameworks_dir}/Python.framework/Versions/${python3_version}/bin" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "PATH=$env(PATH):${frameworks_dir}/Python.framework/Versions/${python3_branch}/bin" \
</span>     ${name}_datadir=${destroot}${prefix}/${ihaskell_datadir}
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# get the objdump rpath names that match ${workpath} in the binary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc get_workpath_list { binname } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global workpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [exec bash -c "otool -l \"${binname}\" 2>/dev/null \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        | grep -E -A 2 -e '\[\[:space:]]+cmd\[\[:space:]]+LC_RPATH' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        | grep -E -e '\[\[:space:]]+path\[\[:space:]]+' \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        | grep -E -o -e '(${workpath}\[^ ]+)' || true"]
</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;'>+# install the DAG of shared libraries into ${libdir}, delete ${workpath} dirs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc shared_library_chase { binname libdir rpath_re } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global destroot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set workpath_list [get_workpath_list ${binname}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach path [lreverse ${workpath_list}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system "install_name_tool -delete_rpath \"${path}\" \"${binname}\""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    system "install_name_tool -add_rpath \"${libdir}\" \"${binname}\""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach rpath [exec bash -c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "otool -L \"${binname}\" | grep -E -o -e '${rpath_re}' || true"] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set libname [strsed ${rpath} "s|^@rpath/||"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set libpath ${libdir}/${libname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set builtlib {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach path ${workpath_list} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if { [file exists ${path}/${libname}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                && [file isfile ${path}/${libname}] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set builtlib ${path}/${libname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                break
</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 { ${builtlib} ne ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            && ![file exists ${destroot}${libpath}] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            xinstall -m 0644 ${builtlib} ${destroot}${libpath}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            shared_library_chase \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${destroot}${libpath} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${libdir} ${rpath_re}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-destroot {
     # install the data-files into destroot (see ${name}.cabal)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    fs-traverse f ${worksrcpath}/.stack-work {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fs-traverse f ${worksrcpath}/.stack-work/install {
</span>         if { [file isfile ${f}] } {
             foreach datafile {
                 html/kernel.js
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -123,17 +164,25 @@ post-destroot {
</span>             }
         }
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     # run ihaskell to install the IPython files into destroot
     system -W ${worksrcpath} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "export ${destroot.env} ; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "env ${destroot.env} \
</span>         ${destroot}${prefix}/bin/ihaskell install \
             --prefix=${destroot}${prefix}"
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # delete any destroot path appearing in text files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    shared_library_chase \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${destroot}${prefix}/bin/ihaskell \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${ihaskell_libdir} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    {@rpath/libHS.+\.dylib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # delete any destroot path appearing in text or json files
</span>     fs-traverse f ${destroot}${prefix} {
         if {[file isfile ${f}]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[string match "text/*" [lindex [exec /usr/bin/file --mime-type ${f}] end]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set file_mime_type \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                [lindex [exec /usr/bin/file --mime-type ${f}] end]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[string match "text/*" ${file_mime_type}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                || [string match "application/json" ${file_mime_type}]} {
</span>                 reinplace -q "s|${destroot}||g" ${f}
             }
         }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -148,5 +197,5 @@ The environment variable `hlint_datadir` must be set before running the
</span> Jupyter notebook (due to a Cabal path issue):
 
         export hlint_datadir=${prefix}/${hlint_datadir}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        jupyter-${python3_version} notebook-${python3_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        jupyter-${python3_branch} notebook-${python3_branch}
</span> "
</pre><pre style='margin:0'>

</pre>