@scriptc/compiler 0.0.36 → 0.1.1
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/ambient/scriptc-node-fallback.d.ts +7 -5
- package/ambient/scriptc-overrides.d.ts +0 -7
- package/ambient/scriptc.d.ts +1 -1
- package/dist/backend/c/exprs.js +69 -45
- package/dist/backend/c/exprs.js.map +1 -1
- package/dist/backend/c/may-throw.js +3 -0
- package/dist/backend/c/may-throw.js.map +1 -1
- package/dist/backend/c/stmts.js +18 -0
- package/dist/backend/c/stmts.js.map +1 -1
- package/dist/backend/c/walkers.js +5 -7
- package/dist/backend/c/walkers.js.map +1 -1
- package/dist/backend/external-c.d.ts +33 -0
- package/dist/backend/external-c.js +51 -0
- package/dist/backend/external-c.js.map +1 -0
- package/dist/backend/link-plan.d.ts +37 -0
- package/dist/backend/link-plan.js +26 -0
- package/dist/backend/link-plan.js.map +1 -0
- package/dist/backend/linker.d.ts +22 -0
- package/dist/backend/linker.js +236 -0
- package/dist/backend/linker.js.map +1 -0
- package/dist/backend/llvm/dyn.js +7 -0
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.js +34 -7
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +68 -54
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +20 -0
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +25 -1
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/walkers.js +31 -4
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +8 -1
- package/dist/backend/native-codegen.js +39 -25
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +42 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info.d.ts +1 -1
- package/dist/backend/native-link-info.js +42 -18
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +5 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.d.ts +1 -0
- package/dist/backend/runtime-pack-targets.test.js +54 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -0
- package/dist/backend/runtime-pack.d.ts +5 -30
- package/dist/backend/runtime-pack.js +46 -141
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +49 -14
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/targets.d.ts +63 -17
- package/dist/backend/targets.js +251 -35
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +27 -5
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/coverage/surface-manifest.js +10 -1
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -0
- package/dist/frontend/lowering/array-values.js +60 -0
- package/dist/frontend/lowering/array-values.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +22 -0
- package/dist/frontend/lowering/lower-array-sort.js +619 -0
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.js +164 -4
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +3 -4
- package/dist/frontend/lowering/lower-calls.js +260 -27
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.js +728 -655
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
- package/dist/frontend/lowering/lower-exprs.js +769 -101
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +47 -33
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +5 -4
- package/dist/frontend/lowering/lower-island.js +10 -5
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +10 -0
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +302 -71
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +74 -2
- package/dist/frontend/lowering/lowerer.js +1087 -10
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +10 -2
- package/dist/frontend/lowering/surfaces.js +15 -3
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +45 -23
- package/dist/index.js.map +1 -1
- package/dist/ir/ir.d.ts +65 -11
- package/dist/ir/ir.js +25 -25
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/validate.js +84 -37
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +3 -1
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.js +12 -1
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.test.js +5 -5
- package/dist/startup-cache.d.ts +9 -1
- package/dist/startup-cache.js +16 -1
- package/dist/startup-cache.js.map +1 -1
- package/package.json +17 -4
- package/surface-manifest.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { afterEach, expect, test } from "vitest";
|
|
6
|
+
import { loadRuntimePack } from "./runtime-pack.js";
|
|
7
|
+
import { LINUX_ARM64_GNU_TARGET, LINUX_ARM64_MUSL_TARGET, LINUX_X64_GNU_TARGET, LINUX_X64_MUSL_TARGET, MACOS_X64_TARGET, WASM32_WASI_TARGET, WINDOWS_X64_MSVC_TARGET, } from "./targets.js";
|
|
8
|
+
import { compilerReleaseVersion } from "../library/sidecar.js";
|
|
9
|
+
const dirs = [];
|
|
10
|
+
afterEach(async () => Promise.all(dirs.splice(0).map((dir) => rm(dir, { recursive: true, force: true }))));
|
|
11
|
+
async function fixture(target) {
|
|
12
|
+
const root = await mkdtemp(join(tmpdir(), "scriptc-runtime-pack-target-"));
|
|
13
|
+
dirs.push(root);
|
|
14
|
+
const packagePath = join(root, "package.json");
|
|
15
|
+
const bytes = Buffer.from("runtime object");
|
|
16
|
+
const artifact = { path: "artifacts/runtime.o", sha256: createHash("sha256").update(bytes).digest("hex"), size: bytes.length };
|
|
17
|
+
await mkdir(dirname(join(root, artifact.path)), { recursive: true });
|
|
18
|
+
await Promise.all([
|
|
19
|
+
writeFile(join(root, artifact.path), bytes),
|
|
20
|
+
writeFile(join(root, "LICENSE"), "license"),
|
|
21
|
+
writeFile(packagePath, JSON.stringify({ name: target.runtimePackPackage, version: compilerReleaseVersion() })),
|
|
22
|
+
]);
|
|
23
|
+
const manifest = {
|
|
24
|
+
schema: "scriptc.runtime-pack.v1", format: 1, package: target.runtimePackPackage, version: compilerReleaseVersion(),
|
|
25
|
+
target: { name: target.name, llvm_triple: target.llvmTriple, architecture: target.architecture, object_format: target.objectFormat, minimum_os: target.minimumOs },
|
|
26
|
+
runtime_abi: { version: 1, marker: "scr_runtime_abi_v1" },
|
|
27
|
+
compiler: { command: "fixture", identity: "fixture", target: target.llvmTriple },
|
|
28
|
+
macros: { executable: [], excluded: ["SCR_LIB"], sanitizer: "external-toolchain-required" },
|
|
29
|
+
flavors: {
|
|
30
|
+
release: { optimization: "-O2", runtime_units: [{ source: "scr_runtime.c", predicate: true, variants: [{ id: "default", when: {}, defines: [], ...artifact }] }] },
|
|
31
|
+
dev: { optimization: "-O0", runtime_units: [{ source: "scr_runtime.c", predicate: true, variants: [{ id: "default", when: {}, defines: [], ...artifact }] }] },
|
|
32
|
+
},
|
|
33
|
+
archives: [], system_libraries: [], licenses: [{ path: "LICENSE", license: "fixture" }],
|
|
34
|
+
};
|
|
35
|
+
await writeFile(join(root, "runtime-pack.json"), JSON.stringify(manifest));
|
|
36
|
+
return { packagePath };
|
|
37
|
+
}
|
|
38
|
+
const features = {
|
|
39
|
+
dynamic: false, regex: false, copying: false, textDecoderLegacy: false, fileHandle: false,
|
|
40
|
+
fetch: false, netIsland: false, zlib: false, assert: false, inspect: false, dynInvoke: false,
|
|
41
|
+
dc: false, dynAsync: false, events: false, emitter: false, symbol: false, searchParams: false,
|
|
42
|
+
qs: false, parseArgs: false, stream: false, net: false, http: false, http2: false,
|
|
43
|
+
dgram: false, watch: false, foreignFfi: false, nodeTest: false, tls: false, tlsCa: false,
|
|
44
|
+
};
|
|
45
|
+
test.each([
|
|
46
|
+
MACOS_X64_TARGET, LINUX_X64_GNU_TARGET, LINUX_ARM64_GNU_TARGET,
|
|
47
|
+
WINDOWS_X64_MSVC_TARGET, LINUX_X64_MUSL_TARGET, LINUX_ARM64_MUSL_TARGET, WASM32_WASI_TARGET,
|
|
48
|
+
])("runtime-pack validation selects the exact $name package", async (target) => {
|
|
49
|
+
const pack = await fixture(target);
|
|
50
|
+
const result = await loadRuntimePack({ target, features, optimization: "release", resolver: () => pack.packagePath });
|
|
51
|
+
expect(result.manifest.package).toBe(target.runtimePackPackage);
|
|
52
|
+
expect(result.manifest.target).toMatchObject({ name: target.name, architecture: target.architecture, object_format: target.objectFormat });
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=runtime-pack-targets.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-pack-targets.test.js","sourceRoot":"","sources":["../../src/backend/runtime-pack-targets.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { FfiProfile } from "../ffi/ffi-manifest.js";
|
|
2
1
|
import type { NativeLinkFeatures } from "./native-link-info.js";
|
|
3
2
|
import { type NativeArtifactDependency } from "./native-toolchain.js";
|
|
4
3
|
import type { NativeTargetSpec } from "./targets.js";
|
|
@@ -36,7 +35,7 @@ export interface RuntimePackManifest {
|
|
|
36
35
|
target: {
|
|
37
36
|
name: NativeTargetSpec["name"];
|
|
38
37
|
llvm_triple: NativeTargetSpec["llvmTriple"];
|
|
39
|
-
architecture: "
|
|
38
|
+
architecture: NativeTargetSpec["architecture"];
|
|
40
39
|
object_format: NativeTargetSpec["objectFormat"];
|
|
41
40
|
minimum_os: NativeTargetSpec["minimumOs"];
|
|
42
41
|
};
|
|
@@ -92,17 +91,6 @@ export interface RuntimePackSelection {
|
|
|
92
91
|
selectedRuntimeArtifacts: RuntimePackArtifact[];
|
|
93
92
|
selectedArchiveArtifacts: RuntimePackArtifact[];
|
|
94
93
|
}
|
|
95
|
-
export interface RuntimeLinkPlan {
|
|
96
|
-
target: NativeTargetSpec;
|
|
97
|
-
outputPath: string;
|
|
98
|
-
inputs: string[];
|
|
99
|
-
systemLibraries: string[];
|
|
100
|
-
driverFlags: string[];
|
|
101
|
-
dependencyPaths: string[];
|
|
102
|
-
/** Inputs already snapshotted by the stage that produced the program object. */
|
|
103
|
-
programObjectDependencies: NativeArtifactDependency[];
|
|
104
|
-
runtimePack: RuntimePackSelection;
|
|
105
|
-
}
|
|
106
94
|
export declare class RuntimePackError extends Error {
|
|
107
95
|
readonly code: "missing" | "invalid" | "unsupported";
|
|
108
96
|
constructor(message: string, code: "missing" | "invalid" | "unsupported");
|
|
@@ -110,6 +98,10 @@ export declare class RuntimePackError extends Error {
|
|
|
110
98
|
export declare function parseRuntimePackManifest(value: unknown): RuntimePackManifest;
|
|
111
99
|
export declare function effectiveRuntimeFeatures(features: NativeLinkFeatures, env?: NodeJS.ProcessEnv): RuntimeFeatureSet;
|
|
112
100
|
export declare function evaluateRuntimePredicate(predicate: RuntimePredicate, features: object): boolean;
|
|
101
|
+
export declare function stageRuntimePackArtifacts(selection: RuntimePackSelection): Promise<{
|
|
102
|
+
root: string;
|
|
103
|
+
replacements: Map<string, string>;
|
|
104
|
+
}>;
|
|
113
105
|
export declare function loadRuntimePack(options: {
|
|
114
106
|
target: NativeTargetSpec;
|
|
115
107
|
features: NativeLinkFeatures;
|
|
@@ -117,21 +109,4 @@ export declare function loadRuntimePack(options: {
|
|
|
117
109
|
env?: NodeJS.ProcessEnv;
|
|
118
110
|
resolver?: (specifier: string) => string;
|
|
119
111
|
}): Promise<RuntimePackSelection>;
|
|
120
|
-
export declare function createRuntimeLinkPlan(options: {
|
|
121
|
-
target: NativeTargetSpec;
|
|
122
|
-
programObject: string;
|
|
123
|
-
outPath: string;
|
|
124
|
-
features: NativeLinkFeatures;
|
|
125
|
-
ffi: FfiProfile | null;
|
|
126
|
-
optimization: "release" | "dev";
|
|
127
|
-
programObjectDependencies?: readonly NativeArtifactDependency[];
|
|
128
|
-
env?: NodeJS.ProcessEnv;
|
|
129
|
-
resolver?: (specifier: string) => string;
|
|
130
|
-
}): Promise<RuntimeLinkPlan>;
|
|
131
|
-
export declare function linkRuntimePackExecutable(plan: RuntimeLinkPlan, options?: {
|
|
132
|
-
linker?: string;
|
|
133
|
-
onArtifactReady?: (artifact: {
|
|
134
|
-
dependencies: NativeArtifactDependency[];
|
|
135
|
-
}) => Promise<void>;
|
|
136
|
-
}): Promise<void>;
|
|
137
112
|
export {};
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
1
|
import { createHash } from "node:crypto";
|
|
3
2
|
import { createRequire } from "node:module";
|
|
4
|
-
import { mkdir, mkdtemp, readFile,
|
|
3
|
+
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
|
5
4
|
import { tmpdir } from "node:os";
|
|
6
|
-
import {
|
|
7
|
-
import { promisify } from "node:util";
|
|
5
|
+
import { dirname, join } from "node:path";
|
|
8
6
|
import { compilerReleaseVersion } from "../library/sidecar.js";
|
|
9
|
-
import {
|
|
7
|
+
import { nativeArtifactDependenciesStillMatch, } from "./native-toolchain.js";
|
|
10
8
|
import { RUNTIME_ABI_MARKER, RUNTIME_ABI_VERSION } from "./runtime-abi.js";
|
|
11
|
-
const execFileAsync = promisify(execFile);
|
|
12
9
|
export const RUNTIME_PACK_SCHEMA = "scriptc.runtime-pack.v1";
|
|
13
10
|
export const RUNTIME_PACK_FORMAT = 1;
|
|
14
11
|
export class RuntimePackError extends Error {
|
|
@@ -68,11 +65,10 @@ export function parseRuntimePackManifest(value) {
|
|
|
68
65
|
};
|
|
69
66
|
if (manifest?.schema !== RUNTIME_PACK_SCHEMA || manifest.format !== RUNTIME_PACK_FORMAT ||
|
|
70
67
|
typeof manifest.package !== "string" || typeof manifest.version !== "string" ||
|
|
71
|
-
target
|
|
72
|
-
target.architecture !== "arm64" || target.object_format !== "macho" || target.minimum_os !== "14.0" ||
|
|
68
|
+
!isRuntimePackTarget(target) ||
|
|
73
69
|
abi?.version !== RUNTIME_ABI_VERSION || abi.marker !== RUNTIME_ABI_MARKER ||
|
|
74
70
|
typeof compiler?.command !== "string" || typeof compiler.identity !== "string" ||
|
|
75
|
-
compiler.target !== target
|
|
71
|
+
compiler.target !== (target?.llvm_triple) ||
|
|
76
72
|
!Array.isArray(macros?.executable) || !macros.executable.every((entry) => typeof entry === "string") ||
|
|
77
73
|
!Array.isArray(macros.excluded) || !macros.excluded.every((entry) => typeof entry === "string") ||
|
|
78
74
|
macros.sanitizer !== "external-toolchain-required" ||
|
|
@@ -92,6 +88,14 @@ export function parseRuntimePackManifest(value) {
|
|
|
92
88
|
throw new RuntimePackError("installed runtime-pack.json is malformed or incompatible", "invalid");
|
|
93
89
|
return manifest;
|
|
94
90
|
}
|
|
91
|
+
function isRuntimePackTarget(target) {
|
|
92
|
+
return target !== null &&
|
|
93
|
+
typeof target.name === "string" &&
|
|
94
|
+
typeof target.llvm_triple === "string" &&
|
|
95
|
+
(target.architecture === "arm64" || target.architecture === "x64" || target.architecture === "wasm32") &&
|
|
96
|
+
(target.object_format === "macho" || target.object_format === "elf" || target.object_format === "coff" || target.object_format === "wasm") &&
|
|
97
|
+
typeof target.minimum_os === "string";
|
|
98
|
+
}
|
|
95
99
|
export function effectiveRuntimeFeatures(features, env = process.env) {
|
|
96
100
|
const curlFetch = features.dynamic && features.fetch && env["SCRIPTC_FETCH_CURL"] === "1";
|
|
97
101
|
if (curlFetch) {
|
|
@@ -147,7 +151,36 @@ async function verifyArtifact(root, artifact) {
|
|
|
147
151
|
}
|
|
148
152
|
return path;
|
|
149
153
|
}
|
|
150
|
-
async function
|
|
154
|
+
async function snapshotDependencies(paths) {
|
|
155
|
+
const { lstat, realpath, stat } = await import("node:fs/promises");
|
|
156
|
+
const { resolve } = await import("node:path");
|
|
157
|
+
return Promise.all([...new Set(paths.map((path) => resolve(path)))].sort().map(async (path) => {
|
|
158
|
+
const info = await lstat(path);
|
|
159
|
+
const kind = info.isFile() ? "file" : info.isDirectory() ? "directory" : "symlink";
|
|
160
|
+
const dependency = {
|
|
161
|
+
path,
|
|
162
|
+
kind,
|
|
163
|
+
dev: Number(info.dev), ino: Number(info.ino), size: Number(info.size),
|
|
164
|
+
mtimeMs: Number(info.mtimeMs), ctimeMs: Number(info.ctimeMs),
|
|
165
|
+
};
|
|
166
|
+
if (kind === "symlink") {
|
|
167
|
+
const targetPath = await realpath(path);
|
|
168
|
+
const target = await stat(path);
|
|
169
|
+
const targetKind = target.isFile() ? "file" : target.isDirectory() ? "directory" : null;
|
|
170
|
+
if (targetKind === null)
|
|
171
|
+
throw new Error(`unsupported runtime-pack dependency: ${path}`);
|
|
172
|
+
dependency.targetPath = targetPath;
|
|
173
|
+
dependency.targetKind = targetKind;
|
|
174
|
+
dependency.targetDev = Number(target.dev);
|
|
175
|
+
dependency.targetIno = Number(target.ino);
|
|
176
|
+
dependency.targetSize = Number(target.size);
|
|
177
|
+
dependency.targetMtimeMs = Number(target.mtimeMs);
|
|
178
|
+
dependency.targetCtimeMs = Number(target.ctimeMs);
|
|
179
|
+
}
|
|
180
|
+
return dependency;
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
export async function stageRuntimePackArtifacts(selection) {
|
|
151
184
|
if (!(await nativeArtifactDependenciesStillMatch(selection.sourceDependencies).catch(() => false))) {
|
|
152
185
|
throw new RuntimePackError("runtime pack changed after artifact selection", "invalid");
|
|
153
186
|
}
|
|
@@ -182,16 +215,14 @@ async function stageRuntimePackArtifacts(selection) {
|
|
|
182
215
|
}
|
|
183
216
|
}
|
|
184
217
|
export async function loadRuntimePack(options) {
|
|
185
|
-
const packageName = options.target.
|
|
186
|
-
? "@scriptc/runtime-darwin-arm64"
|
|
187
|
-
: (() => { throw new RuntimePackError(`no runtime pack supports ${options.target.name}`, "unsupported"); })();
|
|
218
|
+
const packageName = options.target.runtimePackPackage;
|
|
188
219
|
const resolvePackageJson = options.resolver ?? ((specifier) => createRequire(import.meta.url).resolve(specifier));
|
|
189
220
|
let packagePath;
|
|
190
221
|
try {
|
|
191
222
|
packagePath = resolvePackageJson(`${packageName}/package.json`);
|
|
192
223
|
}
|
|
193
224
|
catch {
|
|
194
|
-
throw new RuntimePackError(`precompiled runtime package ${packageName} is not installed; reinstall scriptc with optional dependencies enabled for
|
|
225
|
+
throw new RuntimePackError(`precompiled runtime package ${packageName} is not installed; reinstall scriptc with optional dependencies enabled for ${options.target.name}`, "missing");
|
|
195
226
|
}
|
|
196
227
|
const root = dirname(packagePath);
|
|
197
228
|
const manifestPath = join(root, "runtime-pack.json");
|
|
@@ -221,6 +252,7 @@ export async function loadRuntimePack(options) {
|
|
|
221
252
|
}
|
|
222
253
|
if (manifest.target.name !== options.target.name ||
|
|
223
254
|
manifest.target.llvm_triple !== options.target.llvmTriple ||
|
|
255
|
+
manifest.target.architecture !== options.target.architecture ||
|
|
224
256
|
manifest.target.object_format !== options.target.objectFormat ||
|
|
225
257
|
manifest.target.minimum_os !== options.target.minimumOs)
|
|
226
258
|
throw new RuntimePackError(`runtime pack does not support target ${options.target.name}`, "invalid");
|
|
@@ -270,131 +302,4 @@ export async function loadRuntimePack(options) {
|
|
|
270
302
|
selectedArchiveArtifacts: selectedArchives,
|
|
271
303
|
};
|
|
272
304
|
}
|
|
273
|
-
export async function createRuntimeLinkPlan(options) {
|
|
274
|
-
const runtimePack = await loadRuntimePack(options);
|
|
275
|
-
return {
|
|
276
|
-
target: options.target,
|
|
277
|
-
outputPath: options.outPath,
|
|
278
|
-
inputs: [
|
|
279
|
-
options.programObject,
|
|
280
|
-
...(options.ffi?.libraries ?? []),
|
|
281
|
-
...runtimePack.runtimeObjects,
|
|
282
|
-
...runtimePack.archives,
|
|
283
|
-
],
|
|
284
|
-
systemLibraries: [...new Set([
|
|
285
|
-
...(options.ffi?.systemLibraries ?? []),
|
|
286
|
-
...runtimePack.systemLibraries,
|
|
287
|
-
])],
|
|
288
|
-
driverFlags: [
|
|
289
|
-
"-target", options.target.llvmTriple, "-pthread",
|
|
290
|
-
...executableSectionEliminationFlags("darwin").link,
|
|
291
|
-
],
|
|
292
|
-
dependencyPaths: [
|
|
293
|
-
...runtimePack.dependencyPaths,
|
|
294
|
-
...(options.ffi?.libraries ?? []),
|
|
295
|
-
],
|
|
296
|
-
programObjectDependencies: [...(options.programObjectDependencies ?? [])],
|
|
297
|
-
runtimePack,
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
async function snapshotDependencies(paths) {
|
|
301
|
-
const { lstat } = await import("node:fs/promises");
|
|
302
|
-
return Promise.all([...new Set(paths.map((path) => resolve(path)))].sort().map(async (path) => {
|
|
303
|
-
const info = await lstat(path);
|
|
304
|
-
const kind = info.isFile() ? "file" : info.isDirectory() ? "directory" : "symlink";
|
|
305
|
-
const dependency = {
|
|
306
|
-
path,
|
|
307
|
-
kind,
|
|
308
|
-
dev: Number(info.dev), ino: Number(info.ino), size: Number(info.size),
|
|
309
|
-
mtimeMs: Number(info.mtimeMs), ctimeMs: Number(info.ctimeMs),
|
|
310
|
-
};
|
|
311
|
-
if (kind === "symlink") {
|
|
312
|
-
const targetPath = await realpath(path);
|
|
313
|
-
const target = await stat(path);
|
|
314
|
-
const targetKind = target.isFile() ? "file" : target.isDirectory() ? "directory" : null;
|
|
315
|
-
if (targetKind === null)
|
|
316
|
-
throw new Error(`unsupported linker dependency: ${path}`);
|
|
317
|
-
dependency.targetPath = targetPath;
|
|
318
|
-
dependency.targetKind = targetKind;
|
|
319
|
-
dependency.targetDev = Number(target.dev);
|
|
320
|
-
dependency.targetIno = Number(target.ino);
|
|
321
|
-
dependency.targetSize = Number(target.size);
|
|
322
|
-
dependency.targetMtimeMs = Number(target.mtimeMs);
|
|
323
|
-
dependency.targetCtimeMs = Number(target.ctimeMs);
|
|
324
|
-
}
|
|
325
|
-
return dependency;
|
|
326
|
-
}));
|
|
327
|
-
}
|
|
328
|
-
export async function linkRuntimePackExecutable(plan, options = {}) {
|
|
329
|
-
const linker = options.linker ?? process.env["SCRIPTC_LINKER"] ?? "clang";
|
|
330
|
-
// ld64 derives an ad-hoc signature identifier from the output basename.
|
|
331
|
-
// Keep that basename caller-visible while a private sibling directory gives
|
|
332
|
-
// the link its own inode and preserves an atomic same-filesystem install.
|
|
333
|
-
const privateOutRoot = await mkdtemp(join(dirname(plan.outputPath), ".scriptc-runtime-pack-link-"));
|
|
334
|
-
const privateOut = join(privateOutRoot, basename(plan.outputPath));
|
|
335
|
-
let stagedRoot = null;
|
|
336
|
-
try {
|
|
337
|
-
const staged = await stageRuntimePackArtifacts(plan.runtimePack);
|
|
338
|
-
stagedRoot = staged.root;
|
|
339
|
-
const args = [
|
|
340
|
-
...plan.driverFlags,
|
|
341
|
-
...plan.inputs.map((input) => staged.replacements.get(input) ?? input),
|
|
342
|
-
...plan.systemLibraries.map((name) => `-l${name}`),
|
|
343
|
-
"-o", privateOut,
|
|
344
|
-
];
|
|
345
|
-
// The pack snapshots bracket both verification passes and private staging;
|
|
346
|
-
// the program-object snapshot begins before helper emission. Snapshot the
|
|
347
|
-
// remaining cache-bearing inputs before the linker consumes them, then
|
|
348
|
-
// require the complete set to remain stable through publication.
|
|
349
|
-
const inheritedDependencies = [
|
|
350
|
-
...plan.runtimePack.sourceDependencies,
|
|
351
|
-
...plan.programObjectDependencies,
|
|
352
|
-
];
|
|
353
|
-
const inheritedDependencyPaths = new Set(inheritedDependencies.map((dependency) => resolve(dependency.path)));
|
|
354
|
-
const additionalDependencyPaths = plan.dependencyPaths.filter((path) => !inheritedDependencyPaths.has(resolve(path)));
|
|
355
|
-
const preLinkDependencies = options.onArtifactReady === undefined ||
|
|
356
|
-
!(await nativeArtifactDependenciesStillMatch(inheritedDependencies).catch(() => false))
|
|
357
|
-
? null
|
|
358
|
-
: await nativeLinkerDependencyPaths(linker, [
|
|
359
|
-
...plan.driverFlags,
|
|
360
|
-
...plan.systemLibraries.map((name) => `-l${name}`),
|
|
361
|
-
])
|
|
362
|
-
.then(async (toolchain) => [
|
|
363
|
-
...inheritedDependencies,
|
|
364
|
-
...await snapshotDependencies([...toolchain, ...additionalDependencyPaths]),
|
|
365
|
-
])
|
|
366
|
-
.catch(() => null);
|
|
367
|
-
await execFileAsync(linker, args);
|
|
368
|
-
const output = await stat(privateOut);
|
|
369
|
-
if (!output.isFile() || output.size === 0)
|
|
370
|
-
throw new Error("linker produced no executable");
|
|
371
|
-
await rename(privateOut, plan.outputPath).catch(async () => {
|
|
372
|
-
await rm(plan.outputPath, { force: true });
|
|
373
|
-
await rename(privateOut, plan.outputPath);
|
|
374
|
-
});
|
|
375
|
-
if (options.onArtifactReady !== undefined && preLinkDependencies !== null &&
|
|
376
|
-
await nativeArtifactDependenciesStillMatch(preLinkDependencies).catch(() => false)) {
|
|
377
|
-
// A complete executable cache entry is published only when the driver,
|
|
378
|
-
// platform linker, compiler runtime, selected SDK stubs/settings, pack,
|
|
379
|
-
// and FFI inputs all remained unchanged across the link. Failure to
|
|
380
|
-
// prove any ambient input keeps a correct executable but no complete
|
|
381
|
-
// cache.
|
|
382
|
-
await options.onArtifactReady({ dependencies: preLinkDependencies }).catch(() => undefined);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
catch (error) {
|
|
386
|
-
if (error instanceof CcCompileError || error instanceof RuntimePackError)
|
|
387
|
-
throw error;
|
|
388
|
-
const detail = subprocessFailureDetail(error);
|
|
389
|
-
throw new CcCompileError(linker, detail, `${linker} failed linking ${basename(plan.outputPath)} from the precompiled runtime pack.\n${detail}`);
|
|
390
|
-
}
|
|
391
|
-
finally {
|
|
392
|
-
await Promise.all([
|
|
393
|
-
rm(privateOutRoot, { recursive: true, force: true }).catch(() => undefined),
|
|
394
|
-
stagedRoot === null
|
|
395
|
-
? Promise.resolve()
|
|
396
|
-
: rm(stagedRoot, { recursive: true, force: true }).catch(() => undefined),
|
|
397
|
-
]);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
305
|
//# sourceMappingURL=runtime-pack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-pack.js","sourceRoot":"","sources":["../../src/backend/runtime-pack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-pack.js","sourceRoot":"","sources":["../../src/backend/runtime-pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EACL,oCAAoC,GAErC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAkC,CAAC;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAU,CAAC;AAoF9C,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACH;IAAtC,YAAY,OAAe,EAAW,IAA2C;QAC/E,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,SAAI,GAAJ,IAAI,CAAuC;QAE/E,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAK,IAAI,CAAC,GAAG,CAAe,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CACrG,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACjF,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QACpE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,YAAoB,EAAW,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,MAAM,EAAE,YAAY,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACjF,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;oBACvE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE;oBAC7F,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;oBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACnC,OAAO,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;wBAClF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC;wBAChE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAClG,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,IACE,QAAQ,EAAE,MAAM,KAAK,mBAAmB,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB;QACnF,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;QAC5E,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC5B,GAAG,EAAE,OAAO,KAAK,mBAAmB,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAkB;QACzE,OAAO,QAAQ,EAAE,OAAO,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QAC9E,QAAQ,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;QACzC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACpG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QAC/F,MAAM,CAAC,SAAS,KAAK,6BAA6B;QAClD,OAAO,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QAC5F,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC,CAAC;QACF,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC,CAAC;QACF,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC;IAClF,CAAC,CAAC;QACF,MAAM,IAAI,gBAAgB,CAAC,0DAA0D,EAAE,SAAS,CAAC,CAAC;IACpG,OAAO,QAA0C,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAsC;IACjE,OAAO,MAAM,KAAK,IAAI;QACpB,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QACtC,CAAC,MAAM,CAAC,YAAY,KAAK,OAAO,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC;QACtG,CAAC,MAAM,CAAC,aAAa,KAAK,OAAO,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC;QAC1I,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAA4B,EAC5B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC;IAC1F,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,gBAAgB,CACxB,6HAA6H,EAC7H,aAAa,CACd,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,IAAI,WAAW,IAAI,kBAAkB,CAAC;IACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,IAAI,WAAW,IAAI,kBAAkB,CAAC;IACzE,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,IAAI,WAAW,IAAI,kBAAkB,CAAC;IACvE,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC;IACtD,OAAO;QACL,GAAG,QAAQ;QACX,WAAW;QACX,kBAAkB;QAClB,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,cAAc;QACd,aAAa,EAAE,QAAQ,CAAC,IAAI,IAAI,WAAW;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAA2B,EAC3B,QAAgB;IAEhB,MAAM,MAAM,GAAG,QAAmC,CAAC;IACnD,IAAI,OAAO,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;QACpE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;QAC9D,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,aAAa,CAAC,IAAqB,EAAE,QAA2B;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAA+B,CAAC,KAAK,QAAQ,CAAC,CACjH,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,gBAAgB,CAAC,mCAAmC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,QAA6B;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3G,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,KAAwB;IAC1D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,MAAM,UAAU,GAA6B;YAC3C,IAAI;YACJ,IAAI;YACJ,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACrE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAC7D,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YACxF,IAAI,UAAU,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;YACzF,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;YACnC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;YACnC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClD,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,SAA+B;IAI7E,IAAI,CAAC,CAAC,MAAM,oCAAoC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,gBAAgB,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/C,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,SAAS,CAAC,wBAAwB;YACrC,GAAG,SAAS,CAAC,wBAAwB;SACtC,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC9C,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;YACH,IACE,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI;gBAC9B,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,MAAM,EACpE,CAAC;gBACD,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,CAAC,MAAM,oCAAoC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnG,MAAM,IAAI,gBAAgB,CAAC,uDAAuD,EAAE,SAAS,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAMrC;IACC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1H,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,kBAAkB,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CACxB,+BAA+B,WAAW,+EAA+E,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAC9I,SAAS,CACV,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACrD,IAAI,oBAAgD,CAAC;IACrD,IAAI,CAAC;QACH,oBAAoB,GAAG,MAAM,oBAAoB,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,WAAW,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,eAAoD,CAAC;IACzD,IAAI,QAA6B,CAAC;IAClC,IAAI,CAAC;QACH,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1F,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB;YAAE,MAAM,KAAK,CAAC;QACnD,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,WAAW,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAC3F,CAAC;IACD,IACE,eAAe,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW;QACxE,eAAe,CAAC,OAAO,KAAK,sBAAsB,EAAE,IAAI,QAAQ,CAAC,OAAO,KAAK,sBAAsB,EAAE,EACrG,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,2CAA2C,WAAW,IAAI,sBAAsB,EAAE,WAAW,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,EAAE,EAC9I,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IACE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI;QAC5C,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU;QACzD,QAAQ,CAAC,MAAM,CAAC,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY;QAC5D,QAAQ,CAAC,MAAM,CAAC,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY;QAC7D,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,SAAS;QACvD,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACvG,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa;SACzD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ;SACvC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9E,MAAM,qBAAqB,GAAG;QAC5B,GAAG,gBAAgB;QACnB,GAAG,gBAAgB;KACpB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,IAAI,oBAAgD,CAAC;IACrD,IAAI,CAAC;QACH,oBAAoB,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,EAAE,SAAS,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;KAChF,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACnG,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC,CAAC;IAC9E,IAAI,CAAC,CAAC,MAAM,oCAAoC,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,gBAAgB,CAAC,yDAAyD,EAAE,SAAS,CAAC,CAAC;IACnG,CAAC;IACD,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;QACd,QAAQ;QACR,eAAe,EAAE,QAAQ,CAAC,gBAAgB;aACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;aACtE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,eAAe,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC;QAC5E,kBAAkB;QAClB,wBAAwB,EAAE,gBAAgB;QAC1C,wBAAwB,EAAE,gBAAgB;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -5,7 +5,9 @@ import { basename, dirname, join } from "node:path";
|
|
|
5
5
|
import { describe, expect, test } from "vitest";
|
|
6
6
|
import { compilerReleaseVersion } from "../library/sidecar.js";
|
|
7
7
|
import { snapshotNativeArtifactDependencies } from "./native-toolchain.js";
|
|
8
|
-
import {
|
|
8
|
+
import { effectiveRuntimeFeatures, evaluateRuntimePredicate, loadRuntimePack, parseRuntimePackManifest, RuntimePackError, } from "./runtime-pack.js";
|
|
9
|
+
import { createNativeLinkPlan } from "./link-plan.js";
|
|
10
|
+
import { executableLinkerEnvironmentFingerprint, linkNativeExecutable, platformLinkerSupportsPersistentCache, resolvePlatformLinker, } from "./linker.js";
|
|
9
11
|
import { MACOS_ARM64_TARGET } from "./targets.js";
|
|
10
12
|
const VERSION = compilerReleaseVersion();
|
|
11
13
|
const BASE = {
|
|
@@ -109,6 +111,39 @@ async function fixture() {
|
|
|
109
111
|
return { root, packagePath, manifest };
|
|
110
112
|
}
|
|
111
113
|
describe("runtime pack manifests", () => {
|
|
114
|
+
test("the object linker is configured independently from the C compiler", () => {
|
|
115
|
+
expect(resolvePlatformLinker({})).toBe("clang");
|
|
116
|
+
expect(resolvePlatformLinker({ SCRIPTC_LINKER: "ld-driver" })).toBe("ld-driver");
|
|
117
|
+
expect(platformLinkerSupportsPersistentCache({ SCRIPTC_LINKER: "wrapper" })).toBe(false);
|
|
118
|
+
expect(platformLinkerSupportsPersistentCache({ LIBRARY_PATH: "/mutable" })).toBe(false);
|
|
119
|
+
expect(platformLinkerSupportsPersistentCache({ SDKROOT: "/mutable" })).toBe(false);
|
|
120
|
+
});
|
|
121
|
+
test("the linker environment follows the effective clang behind a stable driver", async () => {
|
|
122
|
+
const root = await mkdtemp(join(tmpdir(), "scriptc-linker-environment-"));
|
|
123
|
+
const linker = join(root, "linker.mjs");
|
|
124
|
+
const selectedOne = join(root, "selected-one");
|
|
125
|
+
const selectedTwo = join(root, "selected-two");
|
|
126
|
+
await Promise.all([
|
|
127
|
+
writeFile(selectedOne, "one"),
|
|
128
|
+
writeFile(selectedTwo, "two"),
|
|
129
|
+
writeFile(linker, [
|
|
130
|
+
"#!/bin/sh",
|
|
131
|
+
'test "$1" = "-print-prog-name=clang" || exit 2',
|
|
132
|
+
'printf "%s\\n" "$SCRIPTC_TEST_SELECTED_CLANG"',
|
|
133
|
+
"",
|
|
134
|
+
].join("\n")),
|
|
135
|
+
]);
|
|
136
|
+
await chmod(linker, 0o755);
|
|
137
|
+
const first = await executableLinkerEnvironmentFingerprint({
|
|
138
|
+
SCRIPTC_LINKER: linker,
|
|
139
|
+
SCRIPTC_TEST_SELECTED_CLANG: selectedOne,
|
|
140
|
+
});
|
|
141
|
+
const second = await executableLinkerEnvironmentFingerprint({
|
|
142
|
+
SCRIPTC_LINKER: linker,
|
|
143
|
+
SCRIPTC_TEST_SELECTED_CLANG: selectedTwo,
|
|
144
|
+
});
|
|
145
|
+
expect(second).not.toBe(first);
|
|
146
|
+
});
|
|
112
147
|
test("feature implications and predicates are deterministic", () => {
|
|
113
148
|
const features = effectiveRuntimeFeatures({ ...BASE, dynamic: true, fetch: true });
|
|
114
149
|
expect(features).toMatchObject({
|
|
@@ -125,7 +160,7 @@ describe("runtime pack manifests", () => {
|
|
|
125
160
|
});
|
|
126
161
|
test("static runtime-pack executable links dead-strip too", async () => {
|
|
127
162
|
const { packagePath, root } = await fixture();
|
|
128
|
-
const plan = await
|
|
163
|
+
const plan = await createNativeLinkPlan({
|
|
129
164
|
target: MACOS_ARM64_TARGET,
|
|
130
165
|
programObject: join(root, "program.o"),
|
|
131
166
|
outPath: join(root, "program"),
|
|
@@ -185,7 +220,7 @@ describe("runtime pack manifests", () => {
|
|
|
185
220
|
].join("\n")),
|
|
186
221
|
]);
|
|
187
222
|
await chmod(linker, 0o755);
|
|
188
|
-
const plan = await
|
|
223
|
+
const plan = await createNativeLinkPlan({
|
|
189
224
|
target: MACOS_ARM64_TARGET,
|
|
190
225
|
programObject,
|
|
191
226
|
outPath: output,
|
|
@@ -195,7 +230,7 @@ describe("runtime pack manifests", () => {
|
|
|
195
230
|
resolver: () => packagePath,
|
|
196
231
|
});
|
|
197
232
|
await writeFile(join(root, "artifacts/base.o"), "tampered");
|
|
198
|
-
await expect(
|
|
233
|
+
await expect(linkNativeExecutable(plan, { linker })).rejects.toBeInstanceOf(RuntimePackError);
|
|
199
234
|
expect(await stat(output).then(() => true, () => false)).toBe(false);
|
|
200
235
|
});
|
|
201
236
|
test("links a private verified copy when the installed artifact changes during linking", async () => {
|
|
@@ -219,7 +254,7 @@ describe("runtime pack manifests", () => {
|
|
|
219
254
|
].join("\n")),
|
|
220
255
|
]);
|
|
221
256
|
await chmod(linker, 0o755);
|
|
222
|
-
const plan = await
|
|
257
|
+
const plan = await createNativeLinkPlan({
|
|
223
258
|
target: MACOS_ARM64_TARGET,
|
|
224
259
|
programObject,
|
|
225
260
|
outPath: output,
|
|
@@ -228,7 +263,7 @@ describe("runtime pack manifests", () => {
|
|
|
228
263
|
optimization: "release",
|
|
229
264
|
resolver: () => packagePath,
|
|
230
265
|
});
|
|
231
|
-
await
|
|
266
|
+
await linkNativeExecutable(plan, { linker });
|
|
232
267
|
expect(await readFile(output, "utf8")).toBe("base");
|
|
233
268
|
expect(await readFile(runtimeObject, "utf8")).toBe("tampered");
|
|
234
269
|
});
|
|
@@ -249,7 +284,7 @@ describe("runtime pack manifests", () => {
|
|
|
249
284
|
].join("\n")),
|
|
250
285
|
]);
|
|
251
286
|
await chmod(linker, 0o755);
|
|
252
|
-
const plan = await
|
|
287
|
+
const plan = await createNativeLinkPlan({
|
|
253
288
|
target: MACOS_ARM64_TARGET,
|
|
254
289
|
programObject,
|
|
255
290
|
outPath: output,
|
|
@@ -258,7 +293,7 @@ describe("runtime pack manifests", () => {
|
|
|
258
293
|
optimization: "release",
|
|
259
294
|
resolver: () => packagePath,
|
|
260
295
|
});
|
|
261
|
-
await
|
|
296
|
+
await linkNativeExecutable(plan, { linker });
|
|
262
297
|
const privateOutput = JSON.parse(await readFile(output, "utf8"));
|
|
263
298
|
expect(privateOutput).not.toBe(output);
|
|
264
299
|
expect(basename(privateOutput)).toBe(basename(output));
|
|
@@ -284,7 +319,7 @@ describe("runtime pack manifests", () => {
|
|
|
284
319
|
await chmod(linker, 0o755);
|
|
285
320
|
const helperDependencies = await snapshotNativeArtifactDependencies([helper]);
|
|
286
321
|
await writeFile(helper, "helper replaced during emission");
|
|
287
|
-
const plan = await
|
|
322
|
+
const plan = await createNativeLinkPlan({
|
|
288
323
|
target: MACOS_ARM64_TARGET,
|
|
289
324
|
programObject,
|
|
290
325
|
outPath: output,
|
|
@@ -295,7 +330,7 @@ describe("runtime pack manifests", () => {
|
|
|
295
330
|
resolver: () => packagePath,
|
|
296
331
|
});
|
|
297
332
|
let published = false;
|
|
298
|
-
await
|
|
333
|
+
await linkNativeExecutable(plan, {
|
|
299
334
|
linker,
|
|
300
335
|
onArtifactReady: async () => { published = true; },
|
|
301
336
|
});
|
|
@@ -350,7 +385,7 @@ describe("runtime pack manifests", () => {
|
|
|
350
385
|
].join("\n")),
|
|
351
386
|
]);
|
|
352
387
|
await chmod(driver, 0o755);
|
|
353
|
-
const plan = await
|
|
388
|
+
const plan = await createNativeLinkPlan({
|
|
354
389
|
target: MACOS_ARM64_TARGET,
|
|
355
390
|
programObject,
|
|
356
391
|
outPath: output,
|
|
@@ -360,7 +395,7 @@ describe("runtime pack manifests", () => {
|
|
|
360
395
|
resolver: () => packagePath,
|
|
361
396
|
});
|
|
362
397
|
let dependencyPaths = [];
|
|
363
|
-
await
|
|
398
|
+
await linkNativeExecutable(plan, {
|
|
364
399
|
linker: driver,
|
|
365
400
|
onArtifactReady: async ({ dependencies }) => {
|
|
366
401
|
dependencyPaths = dependencies.map((dependency) => dependency.path);
|
|
@@ -416,7 +451,7 @@ describe("runtime pack manifests", () => {
|
|
|
416
451
|
].join("\n")),
|
|
417
452
|
]);
|
|
418
453
|
await chmod(linker, 0o755);
|
|
419
|
-
const plan = await
|
|
454
|
+
const plan = await createNativeLinkPlan({
|
|
420
455
|
target: MACOS_ARM64_TARGET,
|
|
421
456
|
programObject,
|
|
422
457
|
outPath: output,
|
|
@@ -427,7 +462,7 @@ describe("runtime pack manifests", () => {
|
|
|
427
462
|
resolver: () => packagePath,
|
|
428
463
|
});
|
|
429
464
|
let published = false;
|
|
430
|
-
await
|
|
465
|
+
await linkNativeExecutable(plan, {
|
|
431
466
|
linker,
|
|
432
467
|
onArtifactReady: async () => { published = true; },
|
|
433
468
|
});
|