<pre style='margin:0'>
Marcus Calhoun-Lopez (MarcusCalhoun-Lopez) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/b2e86165bc5d46bf123486879b61289d1411c0d0">https://github.com/macports/macports-ports/commit/b2e86165bc5d46bf123486879b61289d1411c0d0</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit b2e86165bc5d46bf123486879b61289d1411c0d0
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Wed Mar 31 21:02:35 2021 -0700

<span style='display:block; white-space:pre;color:#404040;'>    emscripten: new port
</span>---
 lang/emscripten/Portfile                         | 101 +++++++++++++++++++++++
 lang/emscripten/files/emscripten                 |   7 ++
 lang/emscripten/files/patch-macports_python.diff |  30 +++++++
 lang/emscripten/files/patch-no_git.diff          |  19 +++++
 4 files changed, 157 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/emscripten/Portfile b/lang/emscripten/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..96c74df7cce
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/emscripten/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,101 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem                  1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup                   github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup                   java   1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup                emscripten-core emscripten 2.0.16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                    0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories                  lang devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license                     MIT NCSA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers                 {mcalhoun @MarcusCalhoun-Lopez} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage                    https://emscripten.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description                 open source compiler toolchain to WebAssembly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description            Emscripten is a complete Open Source compiler toolchain to WebAssembly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms                   darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums                   rmd160  9d75abd59123c34bcb52e1b80fa46f984718b3b2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            sha256  b5254a9b596e46c75d8b40fe4ff1d8c176bfae380051349c132d720feed8a222 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            size    27458560
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pyver                   3.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_version          [string index ${pyver} 0][string index ${pyver} end]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set install_loc             ${destroot}${prefix}/libexec/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${subport} eq ${name}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      port:python${python_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append    bin:npm:npm7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # for building cache libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append    port:git \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            path:bin/cmake:cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # clang-devel is being used since emscripten requires Clang >= 13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_run-append      port:binaryen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:clang-devel \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            bin:node:nodejs15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append       patch-macports_python.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            patch-no_git.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # replicate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #     cd ${worksrcpath} && ./emcc --help
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #     edit resulting .emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall        -m 0644 ${filespath}/emscripten                                 ${worksrcpath}/.emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace       "s|__MACPORTS_EMSCRIPTEN_ROOT__|${prefix}/libexec/${name}|g"    ${worksrcpath}/.emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace       "s|__MACPORTS_LLVM_ROOT__|${prefix}/libexec/llvm-devel/bin|g"   ${worksrcpath}/.emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace       "s|__MACPORTS_BINARYEN_ROOT__|${prefix}|g"                      ${worksrcpath}/.emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace       "s|__MACPORTS_NODE_JS__|${prefix}/bin/node|g"                   ${worksrcpath}/.emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace       "s|__MACPORTS_JAVA__|${java.home}/bin/java|g"                   ${worksrcpath}/.emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # ensure use of MacPorts python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace       "s|__MACPORTS_PYTHON__|${prefix}/bin/python${pyver}|g"          ${worksrcpath}/tools/run_python.sh \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                                                        ${worksrcpath}/tools/run_python_compiler.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system          -W ${worksrcpath}                                               "${prefix}/bin/python${pyver} tools/create_entry_points.py"
</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;'>+    build {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # N.B. the install script calls npm, which downloads (and sometimes builds) external libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # This should happen in the fetch and build phases, but it is not clear how to force npm to do this.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Please check node_modules/ws/builderror.log for silent errors after destroot phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.destdir    DESTDIR=${install_loc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # see https://docs.npmjs.com/cli/v7/commands/npm-install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.env-append NODE_ENV=production
</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;'>+        # install the config file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 ${worksrcpath}/.emscripten ${install_loc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # put certain binaries where they can be found
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach bin {em++ em-config emar embuilder emcc emcmake emconfigure emmake emranlib emrun emscons emsize} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ln -s   ${prefix}/libexec/${name}/${bin}    ${destroot}${prefix}/bin/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ln -s   ${prefix}/libexec/${name}/${bin}.py ${destroot}${prefix}/bin/
</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;'>+        # generate cache libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # options: SYSTEM USER MINIMAL ALL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # This process also seems to download and build, which should not happen in the destroot phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system  -W ${install_loc}  "${prefix}/bin/python${pyver} embuilder.py build MINIMAL"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # do not generate new cache libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # this must be done *after* running embuilder.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace   "s|#FROZEN_CACHE|FROZEN_CACHE|g"    ${install_loc}/.emscripten
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#subport ${name}-man {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # man files have to be built separately
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#subport ${name}-docs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/emscripten/files/emscripten b/lang/emscripten/files/emscripten
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8c41f1fc2c3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/emscripten/files/emscripten
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+import os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+EMSCRIPTEN_ROOT = os.path.expanduser("__MACPORTS_EMSCRIPTEN_ROOT__")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LLVM_ROOT = os.path.expanduser("__MACPORTS_LLVM_ROOT__")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+BINARYEN_ROOT = os.path.expanduser("__MACPORTS_BINARYEN_ROOT__")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+NODE_JS = os.path.expanduser("__MACPORTS_NODE_JS__")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+JAVA = os.path.expanduser("__MACPORTS_JAVA__")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#FROZEN_CACHE = True
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/emscripten/files/patch-macports_python.diff b/lang/emscripten/files/patch-macports_python.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b342123a6ef
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/emscripten/files/patch-macports_python.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,30 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- tools/run_python.sh.orig       2021-03-25 19:00:54.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ tools/run_python.sh    2021-03-27 14:42:53.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -16,11 +16,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -z "$PYTHON" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  PYTHON=$(which python3 2> /dev/null)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if [ -z "$PYTHON" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  PYTHON=$(which python 2> /dev/null)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  PYTHON=__MACPORTS_PYTHON__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -z "$PYTHON" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- tools/run_python_compiler.sh.orig      2021-03-25 19:00:54.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ tools/run_python_compiler.sh   2021-03-28 02:09:41.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -16,11 +16,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -z "$PYTHON" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  PYTHON=$(which python3 2> /dev/null)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if [ -z "$PYTHON" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  PYTHON=$(which python 2> /dev/null)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  PYTHON=__MACPORTS_PYTHON__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if [ -z "$PYTHON" ]; then
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/emscripten/files/patch-no_git.diff b/lang/emscripten/files/patch-no_git.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..29e37d73dad
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/emscripten/files/patch-no_git.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Avoid:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fatal: not a git repository (or any of the parent directories): .git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- tools/install.py.orig  2021-03-06 00:46:36.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ tools/install.py       2021-03-24 17:27:28.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -38,9 +38,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def add_revision_file(target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   # text=True would be better than encoding here, but it's only supported in 3.7+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  git_hash = subprocess.check_output(['git', 'rev-parse', 'HEAD'], encoding='utf-8').strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  with open(os.path.join(target, 'emscripten-revision.txt'), 'w') as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    f.write(git_hash + '\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #git_hash = subprocess.check_output(['git', 'rev-parse', 'HEAD'], encoding='utf-8').strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #with open(os.path.join(target, 'emscripten-revision.txt'), 'w') as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #  f.write(git_hash + '\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  pass
</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;'>+ def copy_emscripten(target):
</span></pre><pre style='margin:0'>

</pre>