Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
0fb8162
feat(android/jsi): let EngineHost adopt a jsi::Runtime the embedder owns
ammarahm-ed Aug 9, 2026
e9ec502
feat(android/jsi): add the guest attach path for an embedder-owned ru…
ammarahm-ed Aug 9, 2026
6a2da7e
feat(react-native/android): add the source-built guest runtime module
ammarahm-ed Aug 9, 2026
404eaea
feat(react-native/android): generate metadata and attach to RN's runtime
ammarahm-ed Aug 9, 2026
ba3a9c0
fix(dts-generator): emit declarations TypeScript can parse
ammarahm-ed Aug 9, 2026
d767cb9
feat(react-native/android): support subclassing Java from JS
ammarahm-ed Aug 9, 2026
74aa1a8
feat(react-native): add @NativeClass and package the Android runtime
ammarahm-ed Aug 9, 2026
ba064c3
test(react-native/android): add the conformance fixture and runner
ammarahm-ed Aug 9, 2026
63cb3b0
feat(react-native): add JavaProxy naming for build-time generated cla…
ammarahm-ed Aug 9, 2026
b1785ba
feat(bindings): name generated bindings by content instead of call site
ammarahm-ed Aug 9, 2026
ebba140
feat(jsparser): emit bindings for decorated native class declarations
ammarahm-ed Aug 9, 2026
b31db5c
docs(react-native): document content-keyed class naming and when a na…
ammarahm-ed Aug 9, 2026
5b1c8fd
fix(jsparser): read bundler output whatever its extension, retrying a…
ammarahm-ed Aug 9, 2026
be794ca
feat(react-native): pre-generate Java bindings from a release bundle
ammarahm-ed Aug 9, 2026
82a69bc
fix(test): count a self-reported FAIL result as a failure in the RN f…
ammarahm-ed Aug 9, 2026
e05f58a
feat(jsparser): recognise decorators applied as calls, not just syntax
ammarahm-ed Aug 9, 2026
50dc471
feat(react-native): resolve JavaProxy classes from the release bundle
ammarahm-ed Aug 9, 2026
bcad625
perf(react-native): drop standalone-only runtime modules from the gue…
ammarahm-ed Aug 9, 2026
6a98343
feat(metadata): measure what a JS-bundle filter can and cannot cover
ammarahm-ed Aug 9, 2026
f6e60a4
feat(metadata): filter metadata from the app bundle and emit R8 keep …
ammarahm-ed Aug 9, 2026
620dde9
feat(metadata): verify closure soundness and derive the filter seed i…
ammarahm-ed Aug 9, 2026
708e588
feat(metadata): enforce the generated keep rules so R8 strips the sam…
ammarahm-ed Aug 9, 2026
e819ec3
docs(metadata): report the size win against real payload, not test fi…
ammarahm-ed Aug 9, 2026
49a245b
fix(metadata): close the filter's coverage gaps and check them
ammarahm-ed Aug 9, 2026
ad42587
perf(sbg): compile app classes for binding generation and reuse prege…
ammarahm-ed Aug 9, 2026
e68ae06
perf(dts): replace per-generic regex passes with a single linear scan
ammarahm-ed Aug 10, 2026
e2c74b3
perf(dts): bucket ignored namespaces and copy in runs
ammarahm-ed Aug 10, 2026
29f9647
feat(dts): generate typings by default, cached on the classpath
ammarahm-ed Aug 10, 2026
677ee9c
chore: ignore generated typings output
ammarahm-ed Aug 10, 2026
0682bcc
fix(rn): make the typings task runnable on its own and cache it
ammarahm-ed Aug 10, 2026
d311d8c
fix(metadata): make filtering work on a React Native release build
ammarahm-ed Aug 10, 2026
c7256ad
feat(napi): bring content-keyed bindings and the metadata tracer to t…
ammarahm-ed Aug 10, 2026
e8b625c
fix(bindings): make runtime and generator content keys agree, and pre…
ammarahm-ed Aug 10, 2026
878db06
fix(sbg): count quoted keys in an implementation object as method ove…
ammarahm-ed Aug 10, 2026
122bd20
fix(react-native): stage the Apple bridge and engine layer as trees, …
ammarahm-ed Aug 16, 2026
f0314ea
fix(react-native): metadata filtering fixes for react-native
ammarahm-ed Aug 17, 2026
f1521f1
chore: cleanup .github/workflows in packages/android
ammarahm-ed Aug 17, 2026
eda20bd
fix(metadata): exclude module names that match a js namespace
ammarahm-ed Aug 17, 2026
3701385
fix: add missing bundle-for-analysis.js file
ammarahm-ed Aug 17, 2026
fda8f9b
fix(quickjs): use gitmodules for quickjs_ng source
ammarahm-ed Aug 19, 2026
e330e7d
fix(android): disable generateTypes by default
ammarahm-ed Aug 19, 2026
08081a2
fix(quickjs): record the source_ng submodule gitlink at its pinned co…
ammarahm-ed Aug 19, 2026
627f87c
refactor(quickjs): move the engine patches to vendor/quickjs/patches …
ammarahm-ed Aug 19, 2026
6fabd54
fix(apple): apply the quickjs patches before building and drop the re…
ammarahm-ed Aug 19, 2026
ae3afb0
refactor(android): move the build and setup entry points to the root …
ammarahm-ed Aug 19, 2026
d9050f4
fix(release): merge the android targets into the shared npm tag and v…
ammarahm-ed Aug 19, 2026
92729af
chore(android): drop the bellard quickjs package now that QUICKJS ali…
ammarahm-ed Aug 19, 2026
71d93ec
refactor(android): stage builds in dist/<variant> and tarballs in bui…
ammarahm-ed Aug 19, 2026
e66343f
chore(ci): point the release workflow at the moved scripts and the ne…
ammarahm-ed Aug 19, 2026
f77c921
fix(react-native): enable typings generation by default
ammarahm-ed Aug 19, 2026
847c412
chore(android): remove the inert asNapiModule build flag
ammarahm-ed Aug 19, 2026
66b0050
fix(metadata): only close over and verify a generated seed, leaving a…
ammarahm-ed Aug 19, 2026
ee5f084
feat(android): make content-keyed bindings an app-level flag instead …
ammarahm-ed Aug 19, 2026
6b82d0e
ci(release): apply vendored QuickJS patches before the Apple engine b…
NathanWalker Aug 28, 2026
7abe423
ci(release): fix NDK install on hosted runners where sdkmanager is no…
NathanWalker Aug 29, 2026
51910c7
fix: provenance repo url
NathanWalker Aug 29, 2026
1166270
fix(react-native): @nativescript/react-native skips android sources
ammarahm-ed Aug 29, 2026
f8451b1
fix(quickjs): bytecode functions should say [stripped source] instead…
ammarahm-ed Sep 12, 2026
4166ae3
fix(android): only pick assets/app folder for compiling js bundles
ammarahm-ed Sep 12, 2026
671b18b
fix: sign and restore executable permissions for macOS bytecode compi…
ammarahm-ed Sep 12, 2026
9e9a7dc
chore(android): update bytecode compilers
ammarahm-ed Sep 12, 2026
cbc0e70
fix(android): ensure metadata-filter tools are included in app template
ammarahm-ed Sep 13, 2026
3541fb4
Optimize metadata-first JNI method resolution
ammarahm-ed Sep 13, 2026
dba2639
Use metadata-first resolution for Kotlin methods
ammarahm-ed Sep 14, 2026
6b0c6be
Port metadata lookup optimization to JSI
ammarahm-ed Sep 17, 2026
9fd2f37
fix metadata overload resolution
ammarahm-ed Sep 19, 2026
1a40d3c
fix quickjs timer callbacks
ammarahm-ed Sep 19, 2026
c13e5d3
test overload and return type resolution
ammarahm-ed Sep 19, 2026
eb28324
cleanup metadata tracing
ammarahm-ed Sep 19, 2026
3b55a79
remove temporary metadata filtering docs
ammarahm-ed Sep 19, 2026
95d8234
remove stale metadata docs references
ammarahm-ed Sep 19, 2026
dc76a5c
document metadata filter tools
ammarahm-ed Sep 19, 2026
11ad54f
fix(android): Android overload return type metadata
ammarahm-ed Sep 24, 2026
a682a61
fix(android): exlcude js files app/assets folder when compiling to by…
ammarahm-ed Sep 30, 2026
43a5acf
fix(android): call the single metadata overload directly when null/JS…
ammarahm-ed Oct 1, 2026
f4b6e0b
fix(android): expose a package as $name when its global is non-writable
NathanWalker Oct 16, 2026
76b110d
ci(release): check out LFS objects for the react-native build
NathanWalker Oct 18, 2026
e9a3b14
fix(ffi/objc): key thread_local bridge caches by a per-bridge id
NathanWalker Oct 18, 2026
be991f1
fix(types): nullable blocks as (() => T) | null; declare NativeObject…
NathanWalker Oct 25, 2026
89eca35
fix(react-native): keep metadata.android when writing nativescript.re…
NathanWalker Oct 25, 2026
1bf3bb5
fix(react-native): explain a missing native module at import (#82)
NathanWalker Nov 2, 2026
eaa3a18
fix(android): use $name when a Java package's global name is taken (#86)
NathanWalker Nov 2, 2026
6a193b5
fix(ffi/objc): define only real C enum constant names as globals (#87)
NathanWalker Nov 2, 2026
0ace070
fix(android): re-attach NativeScript after a JavaScript reload (#89)
NathanWalker Nov 2, 2026
096f9e3
fix(android): deliver GC notifications under a per-runtime lock (#91)
NathanWalker Nov 2, 2026
0aa42f8
fix(android): free runtime-owned JNI refs and method callback data on…
NathanWalker Nov 2, 2026
ae86d0e
fix(android): flush queued finalizers before a jsi runtime is marked …
NathanWalker Nov 2, 2026
1270ec8
fix(android): synchronize ArgConverter's per-runtime long cache (#96)
NathanWalker Nov 2, 2026
f868f89
fix(react-native): configure the Worklets Babel plugin with strictGlo…
NathanWalker Nov 7, 2026
abb7e94
fix(ffi/objc): retire a JS-subclass object's expandos when it dealloc…
ammarahm-ed Nov 8, 2026
feaa97e
fix(quickjs): restore the V8-style property-read error messages in th…
ammarahm-ed Nov 8, 2026
4ab02c3
fix(jsc): return undefined when a Node-API callback returns NULL
ammarahm-ed Nov 8, 2026
5d2de69
test(react-native): opt the iOS smoke fixture into metadata globals
ammarahm-ed Nov 8, 2026
03778b0
fix(react-native/android): implement the TurboModule spec from the Fa…
ammarahm-ed Nov 8, 2026
12f3e00
ci: apply the QuickJS patches in the engine and performance jobs
ammarahm-ed Nov 8, 2026
9633aba
test(apple): give the timer specs room for the JSC weak-ref poll
ammarahm-ed Nov 8, 2026
55f6a1e
test(apple): give the block release specs room for the JSC weak-ref poll
ammarahm-ed Nov 8, 2026
c68bbef
bench(objc-dispatch): collect garbage before each timed case
ammarahm-ed Nov 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,38 @@ name: Build bytecode compilers
#
# Output: one artifact per (engine, host), named `bytecode-compiler-<engine>-<host>`,
# each containing `<engine>/<host>/<binary>` so the downloads merge straight into
# tools/bytecode-compiler/bin/.
# platforms/android/tools/bytecode-compiler/bin/.
#
# The final `bundle` job merges them all into a single `bytecode-compiler-bin`
# artifact laid out exactly like tools/bytecode-compiler/bin/ — download it, unzip,
# and drop its contents into tools/bytecode-compiler/bin/ as-is.
# artifact laid out exactly like platforms/android/tools/bytecode-compiler/bin/ — download it, unzip,
# and drop its contents into platforms/android/tools/bytecode-compiler/bin/ as-is.
#
# NOTE ON COMPATIBILITY: the produced bytecode must be loadable by the engine
# library the runtime ships. Hermes/PrimJS runtimes link prebuilt .so's and
# QuickJS/QuickJS-NG compile from vendored source, so the refs below must be kept
# in step with what the runtime actually bundles. Pin these to exact commits once
# library the runtime ships. Hermes/PrimJS runtimes link prebuilt binaries and
# QuickJS-NG compiles from the vendored source, so the refs below must be kept in
# step with what the runtime actually bundles. Pin these to exact commits once
# validated instead of moving branches.
on:
workflow_dispatch:
inputs:
hermes_ref:
description: "facebook/hermes ref"
# MUST match UPSTREAM_COMMIT in build-hermes, which is what produced the
# prebuilt both platforms link. See scripts/download_hermes.sh.
description: "facebook/hermes ref (match the prebuilt release)"
default: "10a40b5f1de81d007cba6afe567c4ba7a0b45f5d"
quickjs_ref:
# MUST match the quickjs submodule pin (BC_VERSION must agree with the
# runtime). See .gitmodules / scripts/vendor-engines-as-submodules.sh.
description: "bellard/quickjs ref (match the submodule pin)"
default: "04be246001599f5995fa2f2d8c91a0f198d3f34c"
quickjs_ng_ref:
# MUST match the quickjs_ng submodule pin (BC_VERSION must agree with the
# runtime, or JS_ReadObject rejects the blob). See .gitmodules /
# scripts/vendor-engines-as-submodules.sh.
description: "quickjs-ng/quickjs ref (match the submodule pin)"
# MUST match the vendored source in vendor/quickjs/source_ng, or
# JS_ReadObject rejects the blob: the compiler writes its own BC_VERSION
# and the runtime accepts only its own. d950d55e == BC_VERSION 27, which
# is what the vendored quickjs.c defines.
description: "quickjs-ng/quickjs ref (match vendor/quickjs/source_ng)"
default: "d950d55e950dd7994a96c669c31efa967b8b79f3"
primjs_ref:
description: "lynx-family/primjs ref"
default: "9c1fe150179b86f0ae5c6fbe670af7d76eca9df6"

env:
HERMES_REPO: https://github.com/facebook/hermes
QUICKJS_REPO: https://github.com/bellard/quickjs
QUICKJS_NG_REPO: https://github.com/quickjs-ng/quickjs
PRIMJS_REPO: https://github.com/lynx-family/primjs

Expand Down Expand Up @@ -80,7 +77,7 @@ jobs:
# accepts branch/tag names). GitHub allows fetching arbitrary SHAs.
run: |
set -euxo pipefail
ref="${{ github.event.inputs.hermes_ref || 'master' }}"
ref="${{ github.event.inputs.hermes_ref || '10a40b5f1de81d007cba6afe567c4ba7a0b45f5d' }}"
git init hermes
git -C hermes remote add origin "$HERMES_REPO"
git -C hermes fetch --depth 1 origin "$ref"
Expand Down Expand Up @@ -112,6 +109,10 @@ jobs:
bin="$(find build -type f \( -name hermesc -o -name hermesc.exe \) | head -n1)"
test -n "$bin"
cp "$bin" "out/hermes/${{ matrix.host }}/"
if [ "${{ runner.os }}" = "macOS" ]; then
codesign --sign - --force "out/hermes/${{ matrix.host }}/$(basename "$bin")"
codesign --verify --verbose "out/hermes/${{ matrix.host }}/$(basename "$bin")"
fi

- uses: actions/upload-artifact@v4
with:
Expand All @@ -121,81 +122,12 @@ jobs:
path: out
if-no-files-found: error

# ---------------------------------------------------------------------------
# QuickJS (bellard) — build via its own Makefile (libquickjs.a, which injects
# -D_GNU_SOURCE -DCONFIG_VERSION), then link our blob-emitting shim.
# win32-x64 is CROSS-compiled on Linux via bellard's CONFIG_WIN32 (mingw-w64);
# win32-arm64 is not possible (mingw-w64 targets x86 only).
# ---------------------------------------------------------------------------
quickjs:
name: quickjs (${{ matrix.host }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- { host: linux-x64, runner: ubuntu-24.04 }
- { host: linux-arm64, runner: ubuntu-24.04-arm }
- { host: darwin-x64, runner: macos-15-intel }
- { host: darwin-arm64, runner: macos-14 }
- { host: win32-x64, runner: ubuntu-24.04 } # mingw cross-compile
steps:
- uses: actions/checkout@v4
- name: Install toolchain (Linux)
if: runner.os == 'Linux'
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y build-essential
# mingw-w64 for the win32-x64 cross build.
if [ "${{ matrix.host }}" = "win32-x64" ]; then sudo apt-get install -y mingw-w64; fi
# macOS: make + clang ship with the Xcode command-line tools.

- name: Clone QuickJS
shell: bash
run: |
set -euxo pipefail
ref="${{ github.event.inputs.quickjs_ref || 'master' }}"
git init quickjs
git -C quickjs remote add origin "$QUICKJS_REPO"
git -C quickjs fetch --depth 1 origin "$ref"
git -C quickjs -c advice.detachedHead=false checkout FETCH_HEAD

- name: Build lib + shim
shell: bash
env:
SHIM: ${{ github.workspace }}/tools/bytecode-compiler/native/qjs-compile.c
run: |
set -euxo pipefail
cd quickjs
jobs="$(getconf _NPROCESSORS_ONLN)"
out="../out/quickjs/${{ matrix.host }}"; mkdir -p "$out"
if [ "${{ matrix.host }}" = "win32-x64" ]; then
# CONFIG_WIN32=y selects the x86_64-w64-mingw32- cross toolchain.
make -j"$jobs" CONFIG_WIN32=y libquickjs.a
# bellard's win32 LIBS are "-lm -lpthread" (winpthreads provides the
# pthread_* and clock_gettime symbols quickjs.c uses).
x86_64-w64-mingw32-gcc -O2 -DNSBC_MAGIC='"NSBCQJS"' -I. \
-o "$out/nsbc-quickjs.exe" "$SHIM" libquickjs.a -lm -lpthread
# Cross-built Windows binary — not runnable on the Linux host.
else
# Use bellard's own Makefile so CONFIG_VERSION / _GNU_SOURCE and the
# correct source set come from upstream.
make -j"$jobs" libquickjs.a
cc -O2 -DNSBC_MAGIC='"NSBCQJS"' -I. -o "$out/nsbc-quickjs" "$SHIM" libquickjs.a -lm
"$out/nsbc-quickjs" || true # usage line (exit 2) proves it links & runs
fi

- uses: actions/upload-artifact@v4
with:
name: bytecode-compiler-quickjs-${{ matrix.host }}
# Root the artifact at `out/` so it carries the full
# `quickjs/<host>/<binary>` path and merges straight into bin/.
path: out
if-no-files-found: error

# ---------------------------------------------------------------------------
# QuickJS-NG — CMake build of libqjs, then our shim (same JS_* API).
#
# There is no bellard/quickjs job: the runtime dropped that tree, and its
# QUICKJS engine is now an alias for QUICKJS_NG (see
# platforms/android/test-app/runtime/build.gradle).
# ---------------------------------------------------------------------------
quickjs-ng:
name: quickjs-ng (${{ matrix.host }})
Expand Down Expand Up @@ -226,7 +158,7 @@ jobs:
shell: bash
run: |
set -euxo pipefail
ref="${{ github.event.inputs.quickjs_ng_ref || 'master' }}"
ref="${{ github.event.inputs.quickjs_ng_ref || 'd950d55e950dd7994a96c669c31efa967b8b79f3' }}"
git init quickjs-ng
git -C quickjs-ng remote add origin "$QUICKJS_NG_REPO"
git -C quickjs-ng fetch --depth 1 origin "$ref"
Expand All @@ -235,9 +167,11 @@ jobs:
- name: Build lib + shim
shell: bash
env:
SHIM: ${{ github.workspace }}/tools/bytecode-compiler/native/qjs-compile.c
SHIM: ${{ github.workspace }}/platforms/android/tools/bytecode-compiler/native/qjs-compile.c
run: |
set -euxo pipefail
# Note: the workflow lives at the repository root, so the shim path is
# platforms/android/-prefixed; the tool tree itself is under Android.
# Build the shim as a CMake target so it uses the SAME toolchain + CRT
# as the engine lib. Linking a separately-compiled (clang) shim against
# the MSVC-built qjs.lib fails with __imp_*/CRT-mismatch link errors on
Expand All @@ -254,6 +188,10 @@ jobs:
out="out/quickjs-ng/${{ matrix.host }}"; mkdir -p "$out"
bin="$(find quickjs-ng/build -type f \( -name 'nsbc-quickjs-ng' -o -name 'nsbc-quickjs-ng.exe' \) | head -n1)"
test -n "$bin"; cp "$bin" "$out/"
if [ "${{ runner.os }}" = "macOS" ]; then
codesign --sign - --force "$out/nsbc-quickjs-ng"
codesign --verify --verbose "$out/nsbc-quickjs-ng"
fi
[ "${{ runner.os }}" = "Windows" ] || "$out/nsbc-quickjs-ng" || true

- uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -295,7 +233,7 @@ jobs:
shell: bash
run: |
set -euxo pipefail
ref="${{ github.event.inputs.primjs_ref || 'develop' }}"
ref="${{ github.event.inputs.primjs_ref || '9c1fe150179b86f0ae5c6fbe670af7d76eca9df6' }}"
git init primjs
git -C primjs remote add origin "$PRIMJS_REPO"
git -C primjs fetch --depth 1 origin "$ref"
Expand All @@ -304,7 +242,7 @@ jobs:
- name: Add shim as a GN target
shell: bash
env:
SHIM: ${{ github.workspace }}/tools/bytecode-compiler/native/primjs-compile.c
SHIM: ${{ github.workspace }}/platforms/android/tools/bytecode-compiler/native/primjs-compile.c
run: |
set -euxo pipefail
# Build as C++ (.cc); the LEPUS_* API is extern "C" so linkage is fine.
Expand Down Expand Up @@ -335,6 +273,10 @@ jobs:
ninja -C out/Default nsbc-primjs
out="../out/primjs/${{ matrix.host }}"; mkdir -p "$out"
cp out/Default/nsbc-primjs "$out/nsbc-primjs"
if [ "${{ runner.os }}" = "macOS" ]; then
codesign --sign - --force "$out/nsbc-primjs"
codesign --verify --verbose "$out/nsbc-primjs"
fi
"$out/nsbc-primjs" || true # usage line (exit 2) proves it links & runs

- uses: actions/upload-artifact@v4
Expand All @@ -347,12 +289,12 @@ jobs:

# ---------------------------------------------------------------------------
# Bundle — merge every per-(engine, host) artifact into a single artifact laid
# out exactly like tools/bytecode-compiler/bin/, ready to download-and-paste.
# out exactly like platforms/android/tools/bytecode-compiler/bin/, ready to download-and-paste.
# ---------------------------------------------------------------------------
bundle:
name: bundle bin/
runs-on: ubuntu-24.04
needs: [hermes, quickjs, quickjs-ng, primjs]
needs: [hermes, quickjs-ng, primjs]
# Run even if some engine/host builds failed, so a partial bin/ is still
# published rather than nothing.
if: always()
Expand All @@ -369,6 +311,10 @@ jobs:
- name: Show merged layout
run: find bin -type f | sort

- name: Restore executable permissions
shell: bash
run: find bin -type f -path '*/darwin-*/*' -exec chmod +x {} \;

- uses: actions/upload-artifact@v4
with:
name: bytecode-compiler-bin
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,13 @@ jobs:
- name: Generate macOS metadata
run: npm run metagen macos

- name: Apply QuickJS patches
# vendor/quickjs/source_ng is a pristine submodule checkout at its pinned
# commit; the NativeScript engine changes the Apple build needs (e.g.
# JS_EVAL_FLAG_COMPILE_ONLY_NO_RESOLVE for node:vm) live in
# vendor/quickjs/patches and are applied into the work tree here.
run: npm run patch-quickjs

- name: Build NativeScript
run: npm run build

Expand Down Expand Up @@ -92,6 +99,9 @@ jobs:
- name: Generate macOS metadata
run: npm run metagen macos

- name: Apply QuickJS patches
run: npm run patch-quickjs

- name: Run macOS test suite
env:
MACOS_COMMAND_TIMEOUT_MS: "1200000"
Expand Down Expand Up @@ -148,6 +158,7 @@ jobs:
npm run build-libffi
METADATA_GENERATOR_ARCHS="$(uname -m)" npm run build-metagen
npm run metagen macos
npm run patch-quickjs

- name: Build candidate CLI
run: |
Expand All @@ -169,8 +180,12 @@ jobs:
rm -rf ./Frameworks/hermes.xcframework ./Frameworks/hermes-headers
;;
esac
# A base that still vendors QuickJS-NG as plain files can't be
# checked out over the candidate's submodule work tree.
git submodule deinit --force vendor/quickjs/source_ng
git checkout --detach "${BASE_SHA}"
git submodule update --init --recursive
if [ -d vendor/quickjs/patches ]; then npm run patch-quickjs; fi
npm install
npm run build-libffi
METADATA_GENERATOR_ARCHS="$(uname -m)" npm run build-metagen
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/npm_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@ jobs:
echo NPM_VERSION=$NPM_VERSION >> $GITHUB_OUTPUT
echo NPM_TAG=$NPM_TAG >> $GITHUB_OUTPUT
echo BUILD_ENGINE=$BUILD_ENGINE >> $GITHUB_OUTPUT
- name: Apply QuickJS patches
# vendor/quickjs/source_ng is a pristine submodule checkout at its pinned
# commit; the NativeScript engine changes the Apple build needs (e.g.
# JS_EVAL_FLAG_COMPILE_ONLY_NO_RESOLVE for node:vm) live in
# vendor/quickjs/patches and are applied into the work tree here.
run: npm run patch-quickjs
- name: Build
run: ./scripts/build_all_ios.sh --${{ steps.npm_version_output.outputs.BUILD_ENGINE }}
- name: Upload npm package artifact
Expand Down
Loading
Loading