@swiftbrowser/cli 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,12 +36,15 @@ down), or a plain folder of Swift sources. Options for all of them:
36
36
  (with Swift 6.4 and its Swift SDK for WebAssembly): every module of the shim,
37
37
  and an archive of each module's objects, in a *kit* under
38
38
  `~/.cache/swiftbrowser/kits/` (`SWIFTBROWSER_CACHE` moves the cache). A
39
- released CLI comes with its kit, @swiftbrowser/kit (23 MB to download) and
40
- the macros for your machine (@swiftbrowser/kit-linux-x64, -linux-arm64 or
41
- -darwin-arm64, 4 MB): the first build copies it into the cache and checks
42
- that your toolchain reads its modules. Where it cannot (another host, a
43
- toolchain whose compiler reads only modules it wrote), or in a checkout of
44
- this repository, the first build compiles the kit itself, in a minute or two. A kit takes 83 MB: 50 MB of archives, 15 MB of
39
+ released CLI comes with its kit, @swiftbrowser/kit (36 MB to download): the
40
+ first build copies it into the cache and checks that your toolchain reads its
41
+ modules. Its macros (`@Model`, `#Predicate`, `@Entry`) come built as
42
+ WebAssembly, the same files on every host: the toolchain runs them through a
43
+ small launcher in @swiftbrowser/wasm-compiler, under the Node that runs the
44
+ CLI. Where the kit cannot serve (Windows, where the compiler runs no
45
+ launcher script; a toolchain whose compiler reads only modules it wrote), or
46
+ in a checkout of this repository, the first build compiles the kit itself, in
47
+ a minute or two. A kit takes 83 MB: 50 MB of archives, 15 MB of
45
48
  modules and the 18 MB macro executable; SwiftPM's scratch path for building
46
49
  kits takes 325 MB more.
47
50
  Every app built after that, in any project, compiles its own code and
@@ -76,10 +79,15 @@ WebAssembly's files.
76
79
 
77
80
  The WebAssembly compiler builds against the kit and needs only the Swift
78
81
  SDK for WebAssembly's files: the toolchain's install, or, without a
79
- toolchain, the CLI's own download (`swiftbrowser doctor --install`, 93 MB
80
- into the cache; src/wasmSdk.ts). Without a toolchain it uses the released
81
- kit (@swiftbrowser/kit, checked by type-checking an import of every module;
82
- no host package needed) and cannot build one. It runs the kit's macros
82
+ toolchain, the CLI's own copy (`swiftbrowser doctor --install`; src/wasmSdk.ts).
83
+ That copy comes from npm: the SDK's files the compiler reads, split into
84
+ packages by who needs them (@swiftbrowser/wasm-sdk, -foundation, -icu,
85
+ -icu-data, -testing and -cxx, at the CLI's version; src/sdkPackages.ts),
86
+ 51 MB to download and laid out in the cache as one SDK. A CLI whose version
87
+ has no such packages downloads swift.org's pinned bundle instead (93 MB).
88
+ Without a toolchain it uses the released
89
+ kit (@swiftbrowser/kit, checked by type-checking an import of every module)
90
+ and cannot build one. It runs the kit's macros
83
91
  built as WebAssembly: @swiftbrowser/kit has them, and a kit made here gets
84
92
  them from `swiftbrowser kit --wasm-macros` or the first WebAssembly build
85
93
  (with a toolchain; minutes the first time, swift-syntax compiling for
@@ -68,9 +68,13 @@ export async function doctor(options = {}) {
68
68
  }
69
69
  else if (!toolchain && options.install) {
70
70
  // No toolchain to install it: the WebAssembly compiler needs only the files.
71
- info(` downloading ${WASM_SDK} (93 MB)…`);
71
+ info(` installing the files of ${WASM_SDK}…`);
72
72
  try {
73
- sdk = await installManagedWasmSdk();
73
+ sdk = await installManagedWasmSdk({
74
+ onSource: (source) => info(dim('package' in source
75
+ ? ` @swiftbrowser/${source.package}${source.from === 'local' ? ' (installed)' : ''}`
76
+ : ` no SDK packages for this version: downloading ${source.bundle} (93 MB)…`)),
77
+ });
74
78
  info(ok(`the Swift SDK for WebAssembly's files ${dim(sdk.root)}`));
75
79
  }
76
80
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
package/dist/icu.d.ts CHANGED
@@ -84,7 +84,7 @@ export declare function normalizeLanguages(languages: readonly string[]): string
84
84
  export declare function icuCacheDir(): string;
85
85
  /**
86
86
  * The trimmed ICU package for `languages`, from the cache or freshly made
87
- * from the wasm SDK's archive (a second or two; cached per SDK archive and
87
+ * from the wasm SDK's data (a second or two; cached per SDK archive and
88
88
  * language set under `~/.cache/swiftbrowser/icu/`).
89
89
  */
90
90
  export declare function prepareICUData(sdk: WasmSdk, languages: readonly string[], options?: {
package/dist/icu.js CHANGED
@@ -17,7 +17,7 @@
17
17
  // Everything here is plain parsing: the `ar` archive, the wasm object's data
18
18
  // section, and the CmnD table of contents (udata.cpp's layout).
19
19
  import { createHash } from 'node:crypto';
20
- import { existsSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
20
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, writeFileSync } from 'node:fs';
21
21
  import path from 'node:path';
22
22
  import { CliError } from './log.js';
23
23
  import { WASM_SDK, cacheDir } from './toolchain.js';
@@ -266,13 +266,24 @@ export function normalizeLanguages(languages) {
266
266
  export function icuCacheDir() {
267
267
  return path.join(cacheDir(), 'icu');
268
268
  }
269
+ /**
270
+ * The SDK's whole ICU data package as its own file (`icudtNNl.dat` beside
271
+ * the archive), where the SDK came from npm (sdkPackages.ts: the archive's
272
+ * data member is emptied there); null for an SDK as swift.org ships it.
273
+ */
274
+ function icuDataFile(sdk) {
275
+ const dir = wasmSdkLibDir(sdk);
276
+ const name = existsSync(dir) ? readdirSync(dir).find((file) => /^icudt\d+l\.dat$/.test(file)) : undefined;
277
+ return name ? path.join(dir, name) : null;
278
+ }
269
279
  /**
270
280
  * The trimmed ICU package for `languages`, from the cache or freshly made
271
- * from the wasm SDK's archive (a second or two; cached per SDK archive and
281
+ * from the wasm SDK's data (a second or two; cached per SDK archive and
272
282
  * language set under `~/.cache/swiftbrowser/icu/`).
273
283
  */
274
284
  export function prepareICUData(sdk, languages, options = {}) {
275
- const archivePath = path.join(wasmSdkLibDir(sdk), ICU_ARCHIVE);
285
+ const dataFile = icuDataFile(sdk);
286
+ const archivePath = dataFile ?? path.join(wasmSdkLibDir(sdk), ICU_ARCHIVE);
276
287
  if (!existsSync(archivePath))
277
288
  throw new CliError(`cannot find ${ICU_ARCHIVE} in the Swift SDK for WebAssembly (${WASM_SDK}, ${sdk.root}); run \`swiftbrowser doctor\``);
278
289
  const stat = statSync(archivePath);
@@ -286,10 +297,18 @@ export function prepareICUData(sdk, languages, options = {}) {
286
297
  if (existsSync(info.file) && statSync(info.file).size === info.bytes)
287
298
  return info;
288
299
  }
289
- const object = archiveMember(readFileSync(archivePath), ICU_MEMBER);
290
- if (!object)
291
- throw new CliError(`${archivePath} has no ${ICU_MEMBER} member; is this the ${WASM_SDK} SDK?`);
292
- const { symbol, data } = icuDataFromObject(object);
300
+ let symbol;
301
+ let data;
302
+ if (dataFile) {
303
+ symbol = `icudt${/icudt(\d+)l\.dat$/.exec(dataFile)[1]}_dat`;
304
+ data = readFileSync(dataFile);
305
+ }
306
+ else {
307
+ const object = archiveMember(readFileSync(archivePath), ICU_MEMBER);
308
+ if (!object)
309
+ throw new CliError(`${archivePath} has no ${ICU_MEMBER} member; is this the ${WASM_SDK} SDK?`);
310
+ ({ symbol, data } = icuDataFromObject(object));
311
+ }
293
312
  const trimmed = trimPackage(data, wanted, { collation });
294
313
  const version = /icudt(\d+)_dat/.exec(symbol)[1];
295
314
  mkdirSync(dir, { recursive: true });
package/dist/icu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"icu.js","sourceRoot":"","sources":["../src/icu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"icu.js","sourceRoot":"","sources":["../src/icu.ts"],"names":[],"mappings":"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"}
package/dist/kit.d.ts CHANGED
@@ -17,12 +17,14 @@ export interface KitManifest {
17
17
  targets: Record<string, string[]>;
18
18
  /** The shim's library products and their targets. */
19
19
  products: Record<string, string[]>;
20
- /** The shim's macro targets: the host executables under `plugins/`. */
20
+ /** The shim's macro targets: what the native compiler runs, under `plugins/`. */
21
21
  macros: string[];
22
22
  /** The macros built as WebAssembly, under `wasm-plugins/<macro>.wasm`. */
23
23
  wasmPlugins?: string[];
24
24
  /** Copied from @swiftbrowser/kit rather than built here. */
25
25
  packaged?: boolean;
26
+ /** `plugins/` holds launchers of the WebAssembly macros (`writePluginLaunchers`), not host executables. */
27
+ pluginLaunchers?: boolean;
26
28
  }
27
29
  export interface Kit {
28
30
  dir: string;
@@ -41,6 +43,8 @@ export declare function kitsDir(): string;
41
43
  export declare function shimFiles(swiftPackagePath: string): string[];
42
44
  /** Names the kit for this shim, toolchain and SDK: any change to one of them is another kit. */
43
45
  export declare function kitId(swiftPackagePath: string, toolchain: Pick<Toolchain, 'version'>, sdkChecksum?: string): string;
46
+ /** `kitId` of the shim's files as [path, bytes], sorted by path (@swiftbrowser/swift's `publishedFiles` reads them from a checkout). */
47
+ export declare function kitIdOf(files: Iterable<readonly [string, Uint8Array]>, toolchain: Pick<Toolchain, 'version'>, sdkChecksum?: string): string;
44
48
  /** `swift package dump-package`'s view of the shim, as far as kits need it. */
45
49
  interface DumpedPackage {
46
50
  targets: {
@@ -83,6 +87,18 @@ export declare function writeKitPackage(dir: string, manifest: KitManifest): str
83
87
  export declare function kitSwiftFlags(kit: Pick<Kit, 'dir' | 'manifest'>): string[];
84
88
  /** The kit with this id, if it was built (its package rewritten if the kit moved). */
85
89
  export declare function findKit(id: string, toolchain: Pick<Toolchain, 'version'>): Kit | null;
90
+ /** The launcher that runs a macro plugin built as WebAssembly as an executable (@swiftbrowser/wasm-compiler); null without it. */
91
+ export declare function pluginExecutable(): string | null;
92
+ /** The script that stands in for a macro's host executable: Node runs its WebAssembly through the launcher. */
93
+ export declare function pluginLauncherScript(node: string, launcher: string, wasm: string, macro: string): string;
94
+ /**
95
+ * Writes `plugins/<macro>` for each macro: a script that runs its WebAssembly
96
+ * (`wasm-plugins/<macro>.wasm`) with this Node and the launcher, so that a
97
+ * native toolchain expands the macros of a released kit on any host. False
98
+ * where that cannot work: on Windows (the compiler spawns no script), without
99
+ * the launcher, or without a macro's WebAssembly.
100
+ */
101
+ export declare function writePluginLaunchers(dir: string, macros: readonly string[], node?: string, launcher?: string | null): boolean;
86
102
  /** The package that compiles every module of the shim: one target depending on all its library products. */
87
103
  export declare function kitBuilderManifest(swiftPackagePath: string, products: readonly string[]): string;
88
104
  export interface KitProgress {
@@ -96,26 +112,25 @@ export interface KitProgress {
96
112
  export declare function buildKit(toolchain: Toolchain, swiftPackagePath: string, id: string, progress?: KitProgress): Promise<Kit>;
97
113
  /** Removes all but the newest kits (and leftovers of interrupted builds). */
98
114
  export declare function pruneKits(current: string, root?: string): void;
99
- /** Where npm put a released kit: the package with the modules, and this host's macros. */
115
+ /** Where npm put a released kit. */
100
116
  export interface PackagedKit {
101
117
  /** @swiftbrowser/kit's directory (kit.json, the modules and archives, `wasm-plugins`). */
102
118
  dir: string;
103
- /** The host package's `plugins` directory; null when npm installed none for this host. */
104
- plugins: string | null;
105
119
  }
106
- /** The package with this host's macros: @swiftbrowser/kit-linux-x64, -linux-arm64, -darwin-arm64. */
107
- export declare function hostKitPackage(platform?: string, arch?: string): string;
108
- /** @swiftbrowser/kit and this host's package, as npm installed them next to the CLI; null without the kit. */
109
- export declare function packagedKit(from?: string, host?: string): PackagedKit | null;
120
+ /** @swiftbrowser/kit, as npm installed it next to the CLI; null without it. */
121
+ export declare function packagedKit(from?: string): PackagedKit | null;
110
122
  /**
111
123
  * Copies a released kit into the cache as the kit `id`, when it was made for
112
- * this shim, Swift version and SDK and has the macros the compiler runs: this
113
- * host's executables for a native toolchain (`nativeMacros`), else the
114
- * WebAssembly ones. Null otherwise. The copy is what builds use: npm may
115
- * replace or remove the package.
124
+ * this shim, Swift version and SDK and has its macros built as WebAssembly.
125
+ * For a native toolchain (`nativeMacros`) it writes the launchers that run
126
+ * them (`writePluginLaunchers`), and is null where they cannot run. Null
127
+ * otherwise. The copy is what builds use: npm may replace or remove the
128
+ * package.
116
129
  */
117
130
  export declare function installPackagedKit(packaged: PackagedKit, id: string, toolchain: Pick<Toolchain, 'version'>, options?: {
118
131
  nativeMacros?: boolean;
132
+ node?: string;
133
+ launcher?: string | null;
119
134
  }): Kit | null;
120
135
  /**
121
136
  * Whether this toolchain reads a kit's modules: a released kit was compiled
package/dist/kit.js CHANGED
@@ -13,11 +13,11 @@
13
13
  // finds the modules through `-I` (`kitSwiftFlags`).
14
14
  //
15
15
  // Released CLIs come with their kit: @swiftbrowser/kit holds its modules and
16
- // archives and its macros built as WebAssembly, and one small package per host
17
- // (@swiftbrowser/kit-linux-x64 and so on) its macros as host executables
18
- // (`packagedKit`). The CLI copies the one made for its shim into the cache,
19
- // checks that the compiler can read its modules, and builds a kit only when
20
- // there is none to use.
16
+ // archives and its macros built as WebAssembly (`packagedKit`). The CLI copies
17
+ // the one made for its shim into the cache, checks that the compiler can read
18
+ // its modules, and builds a kit only when there is none to use. A native
19
+ // toolchain runs the released macros through a launcher in place of host
20
+ // executables (`writePluginLaunchers`), so the same files serve every host.
21
21
  //
22
22
  // The WebAssembly compiler (wasmCompiler.ts) runs the kit's macros as
23
23
  // WebAssembly (`wasm-plugins/<macro>.wasm`), built from the same sources as
@@ -29,6 +29,7 @@ import { createHash } from 'node:crypto';
29
29
  import { createRequire } from 'node:module';
30
30
  import { chmodSync, copyFileSync, cpSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, symlinkSync, writeFileSync } from 'node:fs';
31
31
  import path from 'node:path';
32
+ import { fileURLToPath } from 'node:url';
32
33
  import { run } from './build.js';
33
34
  import { CliError } from './log.js';
34
35
  import { WASM_SDK, WASM_SDK_CHECKSUM, cacheDir, toolchainEnv } from './toolchain.js';
@@ -64,10 +65,15 @@ export function shimFiles(swiftPackagePath) {
64
65
  }
65
66
  /** Names the kit for this shim, toolchain and SDK: any change to one of them is another kit. */
66
67
  export function kitId(swiftPackagePath, toolchain, sdkChecksum = WASM_SDK_CHECKSUM) {
68
+ const files = shimFiles(swiftPackagePath).map((file) => [file.split(path.sep).join('/'), readFileSync(path.join(swiftPackagePath, file))]);
69
+ return kitIdOf(files, toolchain, sdkChecksum);
70
+ }
71
+ /** `kitId` of the shim's files as [path, bytes], sorted by path (@swiftbrowser/swift's `publishedFiles` reads them from a checkout). */
72
+ export function kitIdOf(files, toolchain, sdkChecksum = WASM_SDK_CHECKSUM) {
67
73
  const hash = createHash('sha256').update(`kit ${KIT_FORMAT}\nswift ${toolchain.version}\nsdk ${sdkChecksum}\n`);
68
- for (const file of shimFiles(swiftPackagePath)) {
69
- hash.update(`${file.split(path.sep).join('/')}\n`);
70
- hash.update(readFileSync(path.join(swiftPackagePath, file)));
74
+ for (const [file, data] of files) {
75
+ hash.update(`${file}\n`);
76
+ hash.update(data);
71
77
  hash.update('\n');
72
78
  }
73
79
  return hash.digest('hex').slice(0, 20);
@@ -199,8 +205,52 @@ export function findKit(id, toolchain) {
199
205
  writeKitPackage(dir, manifest);
200
206
  writeFileSync(file, `${JSON.stringify(manifest, null, 2)}\n`);
201
207
  }
208
+ // They name this Node and this CLI's launcher, which may have moved since.
209
+ if (manifest.pluginLaunchers)
210
+ writePluginLaunchers(dir, manifest.macros);
202
211
  return { dir, manifest, package: pkg };
203
212
  }
213
+ /** The launcher that runs a macro plugin built as WebAssembly as an executable (@swiftbrowser/wasm-compiler); null without it. */
214
+ export function pluginExecutable() {
215
+ try {
216
+ const file = fileURLToPath(import.meta.resolve('@swiftbrowser/wasm-compiler/plugin-executable'));
217
+ return existsSync(file) ? file : null;
218
+ }
219
+ catch {
220
+ return null;
221
+ }
222
+ }
223
+ /** A path as one word of a POSIX shell script. */
224
+ function shellWord(text) {
225
+ return `'${text.replace(/'/g, `'\\''`)}'`;
226
+ }
227
+ /** The script that stands in for a macro's host executable: Node runs its WebAssembly through the launcher. */
228
+ export function pluginLauncherScript(node, launcher, wasm, macro) {
229
+ return `#!/bin/sh
230
+ # Generated by @swiftbrowser/cli (kit.ts): ${macro}, built as WebAssembly, as
231
+ # the plugin executable the compiler spawns.
232
+ exec ${shellWord(node)} ${shellWord(launcher)} ${shellWord(wasm)}
233
+ `;
234
+ }
235
+ /**
236
+ * Writes `plugins/<macro>` for each macro: a script that runs its WebAssembly
237
+ * (`wasm-plugins/<macro>.wasm`) with this Node and the launcher, so that a
238
+ * native toolchain expands the macros of a released kit on any host. False
239
+ * where that cannot work: on Windows (the compiler spawns no script), without
240
+ * the launcher, or without a macro's WebAssembly.
241
+ */
242
+ export function writePluginLaunchers(dir, macros, node = process.execPath, launcher = pluginExecutable()) {
243
+ if (process.platform === 'win32' || !launcher)
244
+ return false;
245
+ if (!macros.every((macro) => existsSync(kitWasmPlugin(dir, macro))))
246
+ return false;
247
+ mkdirSync(path.join(dir, 'plugins'), { recursive: true });
248
+ for (const macro of macros) {
249
+ writeIfDifferent(kitPlugin(dir, macro), pluginLauncherScript(node, launcher, kitWasmPlugin(dir, macro), macro));
250
+ chmodSync(kitPlugin(dir, macro), 0o755);
251
+ }
252
+ return true;
253
+ }
204
254
  /** The package that compiles every module of the shim: one target depending on all its library products. */
205
255
  export function kitBuilderManifest(swiftPackagePath, products) {
206
256
  return `// swift-tools-version: 6.0
@@ -316,12 +366,8 @@ export function pruneKits(current, root = kitsDir()) {
316
366
  for (const kit of [...leftovers, ...complete.slice(KEPT_KITS)])
317
367
  rmSync(kit.dir, { recursive: true, force: true });
318
368
  }
319
- /** The package with this host's macros: @swiftbrowser/kit-linux-x64, -linux-arm64, -darwin-arm64. */
320
- export function hostKitPackage(platform = process.platform, arch = process.arch) {
321
- return `@swiftbrowser/kit-${platform}-${arch}`;
322
- }
323
- /** @swiftbrowser/kit and this host's package, as npm installed them next to the CLI; null without the kit. */
324
- export function packagedKit(from = import.meta.url, host = hostKitPackage()) {
369
+ /** @swiftbrowser/kit, as npm installed it next to the CLI; null without it. */
370
+ export function packagedKit(from = import.meta.url) {
325
371
  let dir;
326
372
  try {
327
373
  dir = path.dirname(createRequire(from).resolve('@swiftbrowser/kit/package.json'));
@@ -329,26 +375,15 @@ export function packagedKit(from = import.meta.url, host = hostKitPackage()) {
329
375
  catch {
330
376
  return null;
331
377
  }
332
- if (!existsSync(path.join(dir, 'kit.json')))
333
- return null;
334
- let plugins = null;
335
- try {
336
- // The host package is an optional dependency of @swiftbrowser/kit: npm puts it where the kit resolves it.
337
- const candidate = path.join(path.dirname(createRequire(path.join(dir, 'package.json')).resolve(`${host}/package.json`)), 'plugins');
338
- if (existsSync(candidate))
339
- plugins = candidate;
340
- }
341
- catch {
342
- // No package for this host: only the WebAssembly compiler can use the kit.
343
- }
344
- return { dir, plugins };
378
+ return existsSync(path.join(dir, 'kit.json')) ? { dir } : null;
345
379
  }
346
380
  /**
347
381
  * Copies a released kit into the cache as the kit `id`, when it was made for
348
- * this shim, Swift version and SDK and has the macros the compiler runs: this
349
- * host's executables for a native toolchain (`nativeMacros`), else the
350
- * WebAssembly ones. Null otherwise. The copy is what builds use: npm may
351
- * replace or remove the package.
382
+ * this shim, Swift version and SDK and has its macros built as WebAssembly.
383
+ * For a native toolchain (`nativeMacros`) it writes the launchers that run
384
+ * them (`writePluginLaunchers`), and is null where they cannot run. Null
385
+ * otherwise. The copy is what builds use: npm may replace or remove the
386
+ * package.
352
387
  */
353
388
  export function installPackagedKit(packaged, id, toolchain, options = {}) {
354
389
  const nativeMacros = options.nativeMacros ?? true;
@@ -361,30 +396,27 @@ export function installPackagedKit(packaged, id, toolchain, options = {}) {
361
396
  }
362
397
  if (manifest.format !== KIT_FORMAT || manifest.id !== id || manifest.swift !== toolchain.version || manifest.sdk !== WASM_SDK_CHECKSUM)
363
398
  return null;
364
- const hasNative = packaged.plugins !== null && manifest.macros.every((macro) => existsSync(path.join(packaged.plugins, macro)));
365
399
  const wasmPlugins = (manifest.wasmPlugins ?? []).filter((macro) => existsSync(kitWasmPlugin(packaged.dir, macro)));
366
- const hasWasm = manifest.macros.every((macro) => wasmPlugins.includes(macro));
367
- if (nativeMacros ? !hasNative : !hasWasm)
400
+ if (!manifest.macros.every((macro) => wasmPlugins.includes(macro)))
368
401
  return null;
369
402
  const dir = path.join(kitsDir(), id);
370
403
  const temp = `${dir}.tmp-${process.pid}`;
371
404
  rmSync(temp, { recursive: true, force: true });
372
405
  mkdirSync(temp, { recursive: true });
373
406
  cpSync(path.join(packaged.dir, KIT_TRIPLE), path.join(temp, KIT_TRIPLE), { recursive: true });
374
- if (hasNative) {
375
- mkdirSync(path.join(temp, 'plugins'), { recursive: true });
376
- for (const macro of manifest.macros) {
377
- copyFileSync(path.join(packaged.plugins, macro), kitPlugin(temp, macro));
378
- chmodSync(kitPlugin(temp, macro), 0o755);
379
- }
380
- }
381
407
  for (const macro of wasmPlugins) {
382
408
  mkdirSync(path.join(temp, 'wasm-plugins'), { recursive: true });
383
409
  copyFileSync(kitWasmPlugin(packaged.dir, macro), kitWasmPlugin(temp, macro));
384
410
  }
385
411
  rmSync(dir, { recursive: true, force: true });
386
412
  renameSync(temp, dir);
387
- const installed = { ...manifest, dir, packaged: true, wasmPlugins };
413
+ // Written where the kit stays: the scripts name its WebAssembly by path.
414
+ const launchers = writePluginLaunchers(dir, manifest.macros, options.node, options.launcher === undefined ? pluginExecutable() : options.launcher);
415
+ if (nativeMacros && !launchers) {
416
+ rmSync(dir, { recursive: true, force: true });
417
+ return null;
418
+ }
419
+ const installed = { ...manifest, dir, packaged: true, wasmPlugins, ...(launchers ? { pluginLaunchers: true } : {}) };
388
420
  writeKitPackage(dir, installed);
389
421
  writeFileSync(path.join(dir, 'kit.json'), `${JSON.stringify(installed, null, 2)}\n`);
390
422
  return { dir, manifest: installed, package: path.join(dir, 'package') };
@@ -428,7 +460,8 @@ export async function ensureKit(source, swiftPackagePath, events = {}, packaged
428
460
  const version = { version: source.version };
429
461
  const id = kitId(swiftPackagePath, version);
430
462
  const found = findKit(id, version);
431
- if (found)
463
+ // A released kit installed for the WebAssembly compiler alone has nothing a native toolchain can run for its macros.
464
+ if (found && !(toolchain && !found.manifest.macros.every((macro) => existsSync(kitPlugin(found.dir, macro)))))
432
465
  return found;
433
466
  const installed = packaged ? installPackagedKit(packaged, id, version, { nativeMacros: toolchain !== null }) : null;
434
467
  if (installed) {