name: libnode development pack (Linux x64, macOS) description: >- Provide a libnode pack for the Node island tests and export SCRIPTC_LIBNODE: restored from the cache, or on a miss assembled from the pinned, checksum-verified inputs in packages/libnode-common/dev-pack.json for the runner's platform (a prebuilt libnode and Node's headers; the bridge builds in seconds). Temporary until the NI-13 packs exist. Fails the job if no pack results: the island tests must never skip in CI. runs: using: composite steps: - name: Name the runner's platform id: platform shell: bash run: node -p '`name=${process.platform}-${process.arch}`' >> "$GITHUB_OUTPUT" - uses: actions/cache@v4 id: libnode with: path: ${{ runner.temp }}/libnode-dev-pack key: libnode-dev-pack-${{ steps.platform.outputs.name }}-${{ hashFiles('packages/libnode-common/dev-pack.json', 'packages/libnode-common/build-pack.mjs', 'packages/libnode-common/fetch-dev-pack.mjs', 'packages/libnode-common/bridge/**', 'packages/runtime/src/scr_node_bridge.h') }} - name: Assemble the libnode pack if: steps.libnode.outputs.cache-hit != 'true' shell: bash run: node packages/libnode-common/fetch-dev-pack.mjs --out "$RUNNER_TEMP/libnode-dev-pack" - name: Export SCRIPTC_LIBNODE shell: bash run: | case "$RUNNER_OS" in macOS) bridge=libscr_node_bridge.dylib ;; *) bridge=libscr_node_bridge.so ;; esac test -f "$RUNNER_TEMP/libnode-dev-pack/manifest.json" test -f "$RUNNER_TEMP/libnode-dev-pack/$bridge" echo "SCRIPTC_LIBNODE=$RUNNER_TEMP/libnode-dev-pack" >> "$GITHUB_ENV"