Skip to content

Commit 2ac1291

Browse files
committed
feat: enable parallel builds
1 parent 8135cf1 commit 2ac1291

File tree

4 files changed

+34
-23
lines changed

4 files changed

+34
-23
lines changed

.cargo/config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
[build]
22
target = "wasm32-wasip1"
3+
target-dir = "targets/2020"

.gitignore

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_I
1111
# Rust
1212
# will have compiled files and executables
1313
debug/
14-
target/
14+
targets
15+
1516

1617
# These are backup files generated by rustfmt
1718
**/*.rs.bk
@@ -24,4 +25,5 @@ target/
2425
*.local
2526
.DS_Store
2627

27-
dist
28+
dist
29+

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
"lint": "bun run --filter \"*\" lint",
99
"typecheck": "bun run --filter \"*\" typecheck",
1010
"build:wasm": "bun ./scripts/cargo-msfs.ts",
11-
"build:wasm:2020": "bun ./scripts/cargo-msfs.ts --version msfs2020",
12-
"build:wasm:2024": "bun ./scripts/cargo-msfs.ts --version msfs2024",
11+
"build:wasm:2020": "bun ./scripts/cargo-msfs.ts --version 2020",
12+
"build:wasm:2024": "bun ./scripts/cargo-msfs.ts --version 2024",
1313
"package": "bun run build:wasm && bestzip wasm.zip dist/wasm/*"
1414
},
1515
"devDependencies": {
@@ -26,4 +26,4 @@
2626
"peerDependencies": {
2727
"typescript": "^5.0.0"
2828
}
29-
}
29+
}

scripts/cargo-msfs.ts

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ function findWorkspaceRoot() {
3838
}
3939

4040
// Determine which version(s) to build based on command line argument --version
41-
const allowedVersions = ["msfs2020", "msfs2024"];
41+
const allowedVersions = ["2020", "2024"];
4242

4343
const { values } = parseArgs({
4444
args: Bun.argv,
@@ -91,20 +91,28 @@ if (existsSync(outDir)) rmdirSync(outDir, { recursive: true });
9191
const relativeWorkdDir = process.cwd().replace(workspaceRoot, "").replaceAll("\\", "/");
9292

9393
// Build the selected versions
94-
for (const version of versionsToBuild) {
95-
console.info(`[*] Building for ${version}`);
96-
97-
// Create the subfolder
98-
const simDir = join(outDir, version);
99-
const relativeSimDir = simDir.replace(workspaceRoot, "").replaceAll("\\", "/");
100-
mkdirSync(simDir, { recursive: true });
101-
102-
// Run cargo-msfs
103-
await $`docker run \
104-
-v ${workspaceRoot}:/workspace \
105-
-w /workspace${relativeWorkdDir} \
106-
${IMAGE_NAME} \
107-
bash -c "cargo-msfs build ${version} -i ./src/wasm -o ./${relativeSimDir}/msfs_navigation_data_interface.wasm"`.catch(
108-
(err: { exitCode?: number }) => process.exit(err.exitCode ?? 1),
109-
);
110-
}
94+
await Promise.all(
95+
versionsToBuild.map(async simVersion => {
96+
console.info(`[*] Building for ${simVersion}`);
97+
98+
// Create the subfolder
99+
const simDir = join(outDir, simVersion);
100+
const relativeSimDir = simDir.replace(workspaceRoot, "").replaceAll("\\", "/");
101+
mkdirSync(simDir, { recursive: true });
102+
103+
// Run cargo-msfs
104+
await $`docker run \
105+
--rm -t \
106+
--name msfs-${simVersion}-wasm-builder \
107+
-v ${workspaceRoot}:/workspace \
108+
-w /workspace${relativeWorkdDir} \
109+
-e CARGO_TARGET_DIR=/workspace/targets/${simVersion} \
110+
${IMAGE_NAME} \
111+
bash -c "cargo-msfs build msfs${simVersion} -i ./src/wasm -o ./${relativeSimDir}/msfs_navigation_data_interface.wasm 1> >(sed "s/^/[${simVersion}]/") 2> >(sed "s/^/[${simVersion}]/" >&2)"`.catch(
112+
(err: { exitCode?: number; stderr?: Buffer }) => {
113+
console.error(`[-] Error building for ${simVersion}: ${err.exitCode} ${err.stderr?.toString()}`);
114+
process.exit(1);
115+
},
116+
);
117+
}),
118+
);

0 commit comments

Comments
 (0)