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