diff --git a/packages/agent-browser/build.ncl b/packages/agent-browser/build.ncl index 20b03d88e..b29cc2408 100644 --- a/packages/agent-browser/build.ncl +++ b/packages/agent-browser/build.ncl @@ -1,10 +1,10 @@ -let { standaloneTest, Attrs, BuildSpec, Local, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in +let { standaloneTest, subsetOf, Attrs, BuildSpec, Local, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let toolchain = import "../toolchain/build.ncl" in let make = import "../make/build.ncl" in let pkgconf = import "../pkgconf/build.ncl" in let rust = import "../rust/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let pnpm = import "../pnpm/build.ncl" in let bash = import "../bash/build.ncl" in @@ -66,12 +66,12 @@ let version = "0.15.1" in make, pkgconf, rust, - node, + node-lts, pnpm, ], runtime_deps = [ bash, - node, + subsetOf node-lts ["node"], glibc, chromium-headless-shell-bin, ], diff --git a/packages/bash-language-server/build.ncl b/packages/bash-language-server/build.ncl index 158835457..1e550103e 100644 --- a/packages/bash-language-server/build.ncl +++ b/packages/bash-language-server/build.ncl @@ -1,7 +1,7 @@ -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let version = "5.8.0" in { @@ -9,11 +9,11 @@ let version = "5.8.0" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], runtime_deps = [ coreutils, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/capy/build.ncl b/packages/capy/build.ncl index ab87affc5..e30c20be2 100644 --- a/packages/capy/build.ncl +++ b/packages/capy/build.ncl @@ -1,4 +1,4 @@ -let { Attrs, BuildSpec, Local, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let glibc = import "../glibc/build.ncl" in @@ -28,7 +28,7 @@ let version = "0.9.1" in coreutils, # `capy` shebang resolves node via /usr/bin/env ca-certificates, # HTTPS to the Capy API (sync, decryption) git, # capy shells out to git for repo/branch detection - node-lts, # capy is a Node CLI (#!/usr/bin/env node) + subsetOf node-lts ["node"], # capy is a Node CLI (#!/usr/bin/env node); interpreter only, no npm (#751) ], cmd = "./build.sh", diff --git a/packages/cf/build.ncl b/packages/cf/build.ncl index fe2b4a5e0..f78f45f2d 100644 --- a/packages/cf/build.ncl +++ b/packages/cf/build.ncl @@ -1,7 +1,7 @@ -let { standaloneTest, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, .. } = import "minimal.ncl" in +let { standaloneTest, subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in # cf is Cloudflare's unified CLI (technical preview). It is closed-source and # distributed only as a pre-bundled npm package — there is no public source @@ -20,11 +20,11 @@ let version = "0.1.0" in sha256 = "758b65757a10cf6ef918c3ec02da45374d6b4ec402ebe39b6907e46b8ac25c1b", } | Source, base, - node, + node-lts, ], runtime_deps = [ coreutils, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/emscripten/build.ncl b/packages/emscripten/build.ncl index 26d032cb0..6741356db 100644 --- a/packages/emscripten/build.ncl +++ b/packages/emscripten/build.ncl @@ -2,7 +2,7 @@ let { subsetOf, Attrs, BuildSpec, Local, OutputBin, OutputData, Source, Test, .. let base = import "../base/build.ncl" in let binaryen = import "../binaryen/build.ncl" in let llvm = import "../llvm/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let python = import "../python/build.ncl" in let glibc = import "../glibc/build.ncl" in @@ -42,7 +42,7 @@ let version = "4.0.11" in runtime_deps = [ binaryen, glibc, - node, + subsetOf node-lts ["node"], python, subsetOf llvm ["bins", "libllvm", "libs_clang", "liblld", "libclang"], ], diff --git a/packages/eslint/build.ncl b/packages/eslint/build.ncl index 024c0d6fe..02fcd8150 100644 --- a/packages/eslint/build.ncl +++ b/packages/eslint/build.ncl @@ -1,8 +1,8 @@ # Imported from Wolfi `eslint` by `pkgmgr import-wolfi` (node build), # with outputs refined from a verified `minimal package` build. -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let version = "10.9.1" in { @@ -10,9 +10,9 @@ let version = "10.9.1" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], - runtime_deps = [coreutils, node], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {}, diff --git a/packages/json-server/build.ncl b/packages/json-server/build.ncl index 505460a2a..191127474 100644 --- a/packages/json-server/build.ncl +++ b/packages/json-server/build.ncl @@ -1,8 +1,8 @@ # Imported from Wolfi `json-server` by `pkgmgr import-wolfi` (node build), # with outputs refined from a verified `minimal package` build. -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let version = "0.17.4" in { @@ -10,9 +10,9 @@ let version = "0.17.4" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], - runtime_deps = [coreutils, node], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {}, diff --git a/packages/lerna/build.ncl b/packages/lerna/build.ncl index 7089fec8b..291bec069 100644 --- a/packages/lerna/build.ncl +++ b/packages/lerna/build.ncl @@ -1,8 +1,8 @@ # Imported from Wolfi `lerna` by `pkgmgr import-wolfi` (node build), # with outputs refined from a verified `minimal package` build. -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let version = "10.0.1" in { @@ -10,9 +10,9 @@ let version = "10.0.1" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], - runtime_deps = [coreutils, node], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {}, diff --git a/packages/mermaid-cli/build.ncl b/packages/mermaid-cli/build.ncl index abfe0b1d0..3cd646b5f 100644 --- a/packages/mermaid-cli/build.ncl +++ b/packages/mermaid-cli/build.ncl @@ -1,8 +1,8 @@ -let { standaloneTest, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in +let { standaloneTest, subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let curl = import "../curl/build.ncl" in let gh = import "../gh/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in # chromium-headless-shell-bin provides the headless-shell binary (which # Puppeteer drives in mermaid's "headless: shell" mode) and its full @@ -24,12 +24,12 @@ let version = "11.17.0" in base, curl, gh, - node, + node-lts, ], runtime_deps = [ base, chromium-headless-shell-bin, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/next/build.ncl b/packages/next/build.ncl index af9d8f862..c1bb4f31d 100644 --- a/packages/next/build.ncl +++ b/packages/next/build.ncl @@ -1,10 +1,10 @@ -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, Test, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let glib = import "../glib/build.ncl" in let libvips = import "../libvips/build.ncl" in let make = import "../make/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let pkgconf = import "../pkgconf/build.ncl" in let pnpm = import "../pnpm/build.ncl" in let python = import "../python/build.ncl" in @@ -24,7 +24,7 @@ let version = "16.3.5" in base, glib, make, - node, + node-lts, pkgconf, pnpm, python, @@ -34,7 +34,7 @@ let version = "16.3.5" in coreutils, glib, libvips, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/next/build.sh b/packages/next/build.sh index d3e9b66c0..ad49c8dae 100755 --- a/packages/next/build.sh +++ b/packages/next/build.sh @@ -99,8 +99,14 @@ if [ -d src/build ]; then fi fi -# Copy the source-built sharp into next's node_modules +# Copy the source-built sharp into next's node_modules, REPLACING the sharp npm +# already installed there: sharp is one of next's optionalDependencies. With +# the target present, `cp -r` nests the build at sharp/sharp/, which nothing +# loads. The npm copy then wins with its prebuilt @img binaries (deleted +# below): no binary at all on amd64, and on arm64 a silent fallback to the +# prebuilt addon plus bundled libvips. cd "$SHARP_STAGING" +rm -rf "$NEXT_DIR/node_modules/sharp" cp -r node_modules/sharp "$NEXT_DIR/node_modules/sharp" # Copy sharp's runtime dependencies @@ -110,14 +116,30 @@ for dep in detect-libc semver; do fi done mkdir -p "$NEXT_DIR/node_modules/@img" -if [ -d "node_modules/@img/colour" ]; then +if [ -d "node_modules/@img/colour" ] && [ ! -d "$NEXT_DIR/node_modules/@img/colour" ]; then cp -r node_modules/@img/colour "$NEXT_DIR/node_modules/@img/colour" fi -# Remove any prebuilt platform binaries (we use source-built sharp + system libvips) -rm -rf "$NEXT_DIR/node_modules/@img/sharp-linux-x64" -rm -rf "$NEXT_DIR/node_modules/@img/sharp-libvips-linux-x64" -rm -rf "$NEXT_DIR/node_modules/sharp/node_modules/@img/sharp-linux-x64" -rm -rf "$NEXT_DIR/node_modules/sharp/node_modules/@img/sharp-libvips-linux-x64" -rm -rf "$NEXT_DIR/node_modules/sharp/node_modules/@img/sharp-linuxmusl-x64" -rm -rf "$NEXT_DIR/node_modules/sharp/node_modules/@img/sharp-libvips-linuxmusl-x64" +# Remove every prebuilt platform binary, for EVERY arch (we use source-built +# sharp + system libvips). Naming only the x64 ones left arm64's +# @img/sharp-linux-arm64 in place, so arm64 quietly loaded the prebuilt addon. +# @img/colour is a JS dependency, not a binary; it stays. +for img in "$NEXT_DIR/node_modules/@img" "$NEXT_DIR/node_modules/sharp/node_modules/@img"; do + [ -d "$img" ] || continue + find "$img" -mindepth 1 -maxdepth 1 -name 'sharp-*' -exec rm -rf {} + +done + +# Prove it at build time, not in a later test: sharp must load from the +# installed tree, from its source-built addon, with a libvips version. +node -e ' +const path = require("path"); +const dir = process.argv[1]; +const s = require(dir); +const addon = Object.keys(require.cache).find((f) => f.endsWith(".node")); +const want = path.join(dir, "src", "build", "Release") + path.sep; +if (!addon || !addon.startsWith(want)) { + throw new Error("sharp did not load its source-built addon (loaded: " + addon + ")"); +} +if (!s.versions.vips) throw new Error("sharp loaded without libvips"); +console.log("sharp", s.versions.sharp, "vips", s.versions.vips, "addon", path.basename(addon)); +' "$NEXT_DIR/node_modules/sharp" diff --git a/packages/pi/build.ncl b/packages/pi/build.ncl index da05d85d6..756815389 100644 --- a/packages/pi/build.ncl +++ b/packages/pi/build.ncl @@ -1,7 +1,7 @@ -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Source, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in # pi is the Pi coding agent (pi.dev), published to npm as # @earendil-works/pi-coding-agent. It is installed from the sha256-pinned @@ -21,11 +21,11 @@ let version = "0.84.4" in sha256 = "5bce766d19c3ceba18f3fbaad91c449c9f9d73981f9e3400ecef932006f06968", } | Source, base, - node, + node-lts, ], runtime_deps = [ coreutils, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/pnpm/build.ncl b/packages/pnpm/build.ncl index 6bd7ee0fd..d9284ed8f 100644 --- a/packages/pnpm/build.ncl +++ b/packages/pnpm/build.ncl @@ -3,7 +3,7 @@ let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let tar = import "../tar/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let version = "11.21.0" in { @@ -18,28 +18,22 @@ let version = "11.21.0" in tar, ], runtime_deps = [ - # `node`, NOT `node-lts`. pnpm only needs *a* node for its - # `#!/usr/bin/env node` shebang, but whichever one it names lands in the - # closure of every package that builds with pnpm. `next` and - # `agent-browser` both declare `node` themselves, so naming `node-lts` here - # put TWO npm installs in one sandbox — and since the sandbox hardlinks - # closure members first-writer-wins PER FILE, the resulting - # /usr/lib/node_modules/npm was a blend of both versions: - # minipass-flush/index.js from npm 11.17.0 (named `{ Minipass }` import) - # beside a nested minipass@3.3.6 from npm 11.11.1 (default export only). - # That tree has never existed upstream and cannot load — every - # `npm install` died, which broke `next` for two days. See pkgs#665/#670. - # ONLY the `node` binary — deliberately NOT npm/npx/node_modules. + # ONLY the `node` binary from `node-lts` — deliberately NOT npm/npx/node_modules. # # pnpm needs a node to interpret its `#!/usr/bin/env node` shebang and - # nothing else. Depending on the whole package dragged a SECOND npm into - # the closure of everything built with pnpm, and since the sandbox - # hardlinks closure members first-writer-wins PER FILE, the resulting - # /usr/lib/node_modules/npm was a blend of two npm versions that cannot - # load (see the commit message and pkgs#665). Taking the subset means pnpm - # can never contribute an npm tree at all, so that class is closed even if - # a consumer later picks a different node. - subsetOf node ["node"], + # nothing else, but whatever it names lands in the closure of every package + # built with pnpm. Depending on a whole node package dragged a SECOND npm + # into that closure; the sandbox (and a user session) hardlinks closure + # members first-writer-wins PER FILE, so /usr/lib/node_modules/npm became a + # blend of two npm versions that cannot load ("Class extends value + # undefined"). That broke `next` for two days (#665/#670) and webapp's + # sessions (#751). The subset means pnpm can never contribute an npm tree. + # + # `node-lts`, like every other node consumer: one runtime flavor across the + # catalog means every package ships the same /usr/bin/node, so there is no + # first-writer race on the interpreter either (#751 review). `node` (Current) + # stays available as an explicit opt-in for users. + subsetOf node-lts ["node"], coreutils, ], needs = diff --git a/packages/prettier/build.ncl b/packages/prettier/build.ncl index 3212e44ac..fe74c6b54 100644 --- a/packages/prettier/build.ncl +++ b/packages/prettier/build.ncl @@ -1,9 +1,9 @@ # Imported from npm `prettier` by `pkgmgr import npm` (node build). # TODO: REVIEWER — installs `prettier` from npm; add any peer packages the # tool needs (cf. typescript-language-server pulling `typescript`). -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let version = "3.9.8" in { @@ -13,9 +13,9 @@ let version = "3.9.8" in { file = "package.json" } | Local, { file = "package-lock.json" } | Local, base, - node, + node-lts, ], - runtime_deps = [coreutils, node], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {}, diff --git a/packages/pyright/build.ncl b/packages/pyright/build.ncl index d5af2b34b..7736c346e 100644 --- a/packages/pyright/build.ncl +++ b/packages/pyright/build.ncl @@ -1,7 +1,7 @@ -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let version = "1.1.413" in { @@ -9,11 +9,11 @@ let version = "1.1.413" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], runtime_deps = [ coreutils, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/serve/build.ncl b/packages/serve/build.ncl index 9b07fc6b5..ce9a9d890 100644 --- a/packages/serve/build.ncl +++ b/packages/serve/build.ncl @@ -1,8 +1,8 @@ # Imported from Wolfi `serve` by `pkgmgr import-wolfi` (node build), # with outputs refined from a verified `minimal package` build. -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let version = "14.2.6" in { @@ -10,9 +10,9 @@ let version = "14.2.6" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], - runtime_deps = [coreutils, node], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {}, diff --git a/packages/typescript-language-server/build.ncl b/packages/typescript-language-server/build.ncl index 66b5e4ddd..85e1ff3db 100644 --- a/packages/typescript-language-server/build.ncl +++ b/packages/typescript-language-server/build.ncl @@ -1,7 +1,7 @@ -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let version = "5.3.0" in { @@ -9,11 +9,11 @@ let version = "5.3.0" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], runtime_deps = [ coreutils, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/typescript/build.ncl b/packages/typescript/build.ncl index 540619a84..d4f698198 100644 --- a/packages/typescript/build.ncl +++ b/packages/typescript/build.ncl @@ -1,9 +1,9 @@ # Imported from npm `typescript` by `pkgmgr import npm` (node build). # TODO: REVIEWER — installs `typescript` from npm; add any peer packages the # tool needs (cf. typescript-language-server pulling `typescript`). -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let version = "7.0.2" in { @@ -13,9 +13,9 @@ let version = "7.0.2" in { file = "package.json" } | Local, { file = "package-lock.json" } | Local, base, - node, + node-lts, ], - runtime_deps = [coreutils, node], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {}, diff --git a/packages/vlt/build.ncl b/packages/vlt/build.ncl index ba31fa702..84922c4a4 100644 --- a/packages/vlt/build.ncl +++ b/packages/vlt/build.ncl @@ -47,7 +47,7 @@ # take it OFF that arm onto the repo-purl arm, where GHSA's npm advisories — # which are keyed by package name, not repo — would no longer match. Absent is # correct here, not an oversight. -let { standaloneTest, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Test, .. } = import "minimal.ncl" in +let { standaloneTest, subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, Test, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in @@ -61,7 +61,7 @@ let version = "1.0.5" in base, node-lts, ], - runtime_deps = [coreutils, node-lts], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {}, diff --git a/packages/wrangler/build.ncl b/packages/wrangler/build.ncl index dac04242e..10ff5066e 100644 --- a/packages/wrangler/build.ncl +++ b/packages/wrangler/build.ncl @@ -1,7 +1,7 @@ -let { standaloneTest, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { standaloneTest, subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in let coreutils = import "../coreutils/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let version = "4.125.0" in { @@ -9,11 +9,11 @@ let version = "4.125.0" in build_deps = [ { file = "build.sh" } | Local, base, - node, + node-lts, ], runtime_deps = [ coreutils, - node, + subsetOf node-lts ["node"], ], needs = { diff --git a/packages/yarn/build.ncl b/packages/yarn/build.ncl index 630f19c33..2a961648f 100644 --- a/packages/yarn/build.ncl +++ b/packages/yarn/build.ncl @@ -1,9 +1,9 @@ # Imported from npm `yarn` by `pkgmgr import npm` (node build). # TODO: REVIEWER — installs `yarn` from npm; add any peer packages the # tool needs (cf. typescript-language-server pulling `typescript`). -let { Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in +let { subsetOf, Attrs, BuildSpec, Local, Needs, OutputBin, OutputData, .. } = import "minimal.ncl" in let base = import "../base/build.ncl" in -let node = import "../node/build.ncl" in +let node-lts = import "../node-lts/build.ncl" in let coreutils = import "../coreutils/build.ncl" in let version = "1.22.22" in { @@ -13,9 +13,9 @@ let version = "1.22.22" in { file = "package.json" } | Local, { file = "package-lock.json" } | Local, base, - node, + node-lts, ], - runtime_deps = [coreutils, node], + runtime_deps = [coreutils, subsetOf node-lts ["node"]], needs = { dns = {},