summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Bingner <sam@bingner.com>2019-05-31 16:00:14 -1000
committerSam Bingner <sam@bingner.com>2019-05-31 16:00:14 -1000
commit1b1fa61507a809a66f053a8523f883b2b6a2f487 (patch)
tree334ac3b3436d96bea92a9179ab31047bf0b40ff1
parentd1864842d8d6198f6bb6cb4e84b365e1320d8d1e (diff)
Update node to just use JIT
-rw-r--r--data/nodejs/_metadata/version2
-rw-r--r--data/nodejs/install.diff (renamed from data/nodejs/install.diff.disabled)2
-rw-r--r--data/nodejs/jitless.diff165
-rw-r--r--data/nodejs/make.sh13
-rw-r--r--data/nodejs/node.xml9
5 files changed, 16 insertions, 175 deletions
diff --git a/data/nodejs/_metadata/version b/data/nodejs/_metadata/version
index 9c028e25d..18dca7ffd 100644
--- a/data/nodejs/_metadata/version
+++ b/data/nodejs/_metadata/version
@@ -1 +1 @@
-12.3.1
+12.3.1~a1
diff --git a/data/nodejs/install.diff.disabled b/data/nodejs/install.diff
index be725d702..a8ffea948 100644
--- a/data/nodejs/install.diff.disabled
+++ b/data/nodejs/install.diff
@@ -8,7 +8,7 @@ diff -ur node-v12.3.1/tools/install.py node-v12.3.1+iPhone/tools/install.py
- if sys.platform != 'darwin':
- output_prefix += 'lib.target/'
+# if sys.platform != 'darwin':
-+# output_prefix += 'lib.target/'
++ output_prefix += 'lib.target/'
if 'false' == variables.get('node_shared'):
action([output_prefix + output_file], 'bin/' + output_file)
diff --git a/data/nodejs/jitless.diff b/data/nodejs/jitless.diff
deleted file mode 100644
index f5cb3f95b..000000000
--- a/data/nodejs/jitless.diff
+++ /dev/null
@@ -1,165 +0,0 @@
-diff -Naur node-v12.3.1/deps/uv/src/unix/process.c node-v12.3.1+iPhone/deps/uv/src/unix/process.c
---- node-v12.3.1/deps/uv/src/unix/process.c 2019-05-22 12:21:52.000000000 +0000
-+++ node-v12.3.1+iPhone/deps/uv/src/unix/process.c 2019-05-28 22:01:59.417155270 +0000
-@@ -267,7 +267,8 @@
- }
-
-
--#if !(defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH))
-+#if !(defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH || TARGET_OS_IPHONE))
-+// Disabled on iOS until MC fixes jitless, the syscall ruins spawning children.
- /* execvp is marked __WATCHOS_PROHIBITED __TVOS_PROHIBITED, so must be
- * avoided. Since this isn't called on those targets, the function
- * doesn't even need to be defined for them.
-@@ -411,7 +412,7 @@
- int uv_spawn(uv_loop_t* loop,
- uv_process_t* process,
- const uv_process_options_t* options) {
--#if defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH)
-+#if defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH || TARGET_OS_IPHONE)
- /* fork is marked __WATCHOS_PROHIBITED __TVOS_PROHIBITED. */
- return UV_ENOSYS;
- #else
-diff -Naur node-v12.3.1/src/codesign.h node-v12.3.1+iPhone/src/codesign.h
---- node-v12.3.1/src/codesign.h 1970-01-01 00:00:00.000000000 +0000
-+++ node-v12.3.1+iPhone/src/codesign.h 2019-05-28 22:00:20.085095406 +0000
-@@ -0,0 +1,65 @@
-+/*
-+ * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-+ *
-+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
-+ *
-+ * This file contains Original Code and/or Modifications of Original Code
-+ * as defined in and that are subject to the Apple Public Source License
-+ * Version 2.0 (the 'License'). You may not use this file except in
-+ * compliance with the License. The rights granted to you under the License
-+ * may not be used to create, or enable the creation or redistribution of,
-+ * unlawful or unlicensed copies of an Apple operating system, or to
-+ * circumvent, violate, or enable the circumvention or violation of, any
-+ * terms of an Apple operating system software license agreement.
-+ *
-+ * Please obtain a copy of the License at
-+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
-+ *
-+ * The Original Code and all software distributed under the License are
-+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
-+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
-+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
-+ * Please see the License for the specific language governing rights and
-+ * limitations under the License.
-+ *
-+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
-+ */
-+
-+#ifndef _SYS_CODESIGN_H_
-+#define _SYS_CODESIGN_H_
-+
-+#include <sys/types.h>
-+
-+/* code signing attributes of a process */
-+#define CS_VALID 0x0001 /* dynamically valid */
-+#define CS_HARD 0x0100 /* don't load invalid pages */
-+#define CS_KILL 0x0200 /* kill process if it becomes invalid */
-+#define CS_EXEC_SET_HARD 0x1000 /* set CS_HARD on any exec'ed process */
-+#define CS_EXEC_SET_KILL 0x2000 /* set CS_KILL on any exec'ed process */
-+#define CS_KILLED 0x10000 /* was killed by kernel for invalidity */
-+#define CS_RESTRICT 0x20000 /* tell dyld to treat restricted */
-+
-+/* csops operations */
-+#define CS_OPS_STATUS 0 /* return status */
-+#define CS_OPS_MARKINVALID 1 /* invalidate process */
-+#define CS_OPS_MARKHARD 2 /* set HARD flag */
-+#define CS_OPS_MARKKILL 3 /* set KILL flag (sticky) */
-+#define CS_OPS_PIDPATH 4 /* get executable's pathname */
-+#define CS_OPS_CDHASH 5 /* get code directory hash */
-+#define CS_OPS_PIDOFFSET 6 /* get offset of active Mach-o slice */
-+#define CS_OPS_ENTITLEMENTS_BLOB 7 /* get entitlements blob */
-+#define CS_OPS_MARKRESTRICT 8 /* set RESTRICT flag (sticky) */
-+
-+#ifndef KERNEL
-+
-+__BEGIN_DECLS
-+
-+/* code sign operations */
-+int csops(pid_t pid, unsigned int ops, void * useraddr, size_t usersize);
-+
-+__END_DECLS
-+
-+#endif /* ! KERNEL */
-+
-+#endif /* _SYS_CODESIGN_H_ */
-diff -Naur node-v12.3.1/src/node.cc node-v12.3.1+iPhone/src/node.cc
---- node-v12.3.1/src/node.cc 2019-05-22 12:21:54.000000000 +0000
-+++ node-v12.3.1+iPhone/src/node.cc 2019-05-28 22:00:20.085095406 +0000
-@@ -94,6 +94,19 @@
- #include <unistd.h> // STDIN_FILENO, STDERR_FILENO
- #endif
-
-+#if TARGET_OS_IPHONE || V8_TARGET_OS_IPHONE
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+ #include "codesign.h"
-+ #include <sys/syscall.h>
-+#ifdef __cplusplus
-+}
-+#endif
-+ #define CS_OPS_STATUS 0
-+ #define CS_DEBUGGED 0x10000000
-+#endif
-+
- // ========== global C++ headers ==========
-
- #include <cerrno>
-@@ -625,13 +638,6 @@
- per_process::cli_options->cmdline = *argv;
- #endif // NODE_REPORT
-
--#if defined(NODE_V8_OPTIONS)
-- // Should come before the call to V8::SetFlagsFromCommandLine()
-- // so the user can disable a flag --foo at run-time by passing
-- // --no_foo from the command line.
-- V8::SetFlagsFromString(NODE_V8_OPTIONS, sizeof(NODE_V8_OPTIONS) - 1);
--#endif
--
- std::shared_ptr<EnvironmentOptions> default_env_options =
- per_process::cli_options->per_isolate->per_env;
- {
-@@ -891,6 +897,22 @@
- params.snapshot_blob = blob;
- }
-
-+#if defined(NODE_V8_OPTIONS)
-+ V8::SetFlagsFromString(NODE_V8_OPTIONS, sizeof(NODE_V8_OPTIONS) - 1);
-+ #if TARGET_OS_IPHONE || V8_TARGET_OS_IPHONE
-+ /*
-+ Even with '--jitless' it appears that node only works under a debugger.
-+ https://github.com/hrydgard/ppsspp/commit/53e254d352986dc1093c620c58075189fd714a65
-+ https://github.com/hrydgard/ppsspp/issues/11905#issuecomment-476871010
-+ */
-+ uint32_t flags;
-+ csops(getpid(), CS_OPS_STATUS, &flags, 0);
-+ if (!(flags & CS_DEBUGGED)) {
-+ syscall(SYS_ptrace, 0, 0, 0, 0);
-+ }
-+ #endif
-+#endif
-+
- NodeMainInstance main_instance(&params,
- uv_default_loop(),
- per_process::v8_platform.Platform(),
-diff -Naur node-v12.3.1/src/node_options.cc node-v12.3.1+iPhone/src/node_options.cc
---- node-v12.3.1/src/node_options.cc 2019-05-22 12:21:54.000000000 +0000
-+++ node-v12.3.1+iPhone/src/node_options.cc 2019-05-28 22:00:20.085095406 +0000
-@@ -499,6 +499,10 @@
- kAllowedInEnvironment);
- AddOption("--stack-trace-limit", "", V8Option{}, kAllowedInEnvironment);
-
-+#if TARGET_OS_IPHONE || V8_TARGET_OS_IPHONE
-+ AddOption("--jitless", "", V8Option{}, kAllowedInEnvironment);
-+#endif
-+
- #ifdef NODE_REPORT
- AddOption("--report-uncaught-exception",
- "generate diagnostic report on uncaught exceptions",
diff --git a/data/nodejs/make.sh b/data/nodejs/make.sh
index d98e7ef95..a8b85aa45 100644
--- a/data/nodejs/make.sh
+++ b/data/nodejs/make.sh
@@ -23,16 +23,13 @@ export AR_target="${AR}"
export LDFLAGS_target="${LDFLAGS}"
GYP_CROSSCOMPILE=1 \
-GYP_DEFINES="v8_enable_inspector=1 target_arch=arm64 v8_target_arch=arm64 host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/') node_v8_options='--jitless'" \
+GYP_DEFINES="v8_enable_inspector=1 target_arch=arm64 v8_target_arch=arm64 host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')" \
PKG_CONFIG="$(realpath "${PKG_BASE}/util/pkg-config.sh")" \
./configure --prefix="${PKG_TAPF}" --without-snapshot --cross-compiling --dest-os=ios --dest-cpu=arm64 --without-intl --shared-zlib --shared-cares --shared-openssl --shared-nghttp2 --shared
# Don't use pkg:make, CC_host gets overwritten
SDKROOT="" \
-make BUILDTYPE=Release DESTCPU=arm64 install DESTDIR="${PKG_DEST}" -j16
-
-# TODO: Fix tool/install.py and the Makefile
-if [[ ! -x "${PKG_TAPF}"/bin/node ]]; then
- pkg: mkdir -p "${PKG_TAPF}"/bin
- cp out/Release/node "${PKG_DEST}"/"${PKG_TAPF}"/bin
-fi
+make BUILDTYPE=Release DESTCPU=arm64 install DESTDIR="${PKG_DEST}" -j32
+pkg: mkdir -p /usr/bin
+pkg: cp out/Release/node /usr/bin/
+ldid -S"${PKG_DATA}/node.xml" "${PKG_DEST}/usr/bin/node"
diff --git a/data/nodejs/node.xml b/data/nodejs/node.xml
new file mode 100644
index 000000000..00f59d885
--- /dev/null
+++ b/data/nodejs/node.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>platform-application</key>
+ <true/>
+ <key>dynamic-codesigning</key>
+ <true/>
+</dict>
+</plist>