Add Bento build recipes (macos, linux, windows)
Per-platform .rhai recipes under dist/recipes/ for bentod. egui app, no iOS;
recipes wrap the self-contained dist/build-*.sh scripts. Windows builds
natively via build-msi-native.ps1 (no cross-compile).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 files changed,
+81 insertions,
-0 deletions
|
1 |
+ |
// audiofiles — Linux release recipe for Bento (x86_64 on fw13, aarch64 on astra).
|
|
2 |
+ |
//
|
|
3 |
+ |
// One recipe, both arches via build_host(). audiofiles ships its own
|
|
4 |
+ |
// self-contained dist scripts: build-appimage.sh and build-deb.sh, each of which
|
|
5 |
+ |
// runs `cargo build -p audiofiles-app` and emits its artifact into dist/
|
|
6 |
+ |
// (AudioFiles-<version>-<arch>.AppImage, audiofiles_<version>_<arch>.deb). We
|
|
7 |
+ |
// run both, then collect the results into Bento's dist tree.
|
|
8 |
+ |
|
|
9 |
+ |
let h = build_host();
|
|
10 |
+ |
let v = version();
|
|
11 |
+ |
let r = repo();
|
|
12 |
+ |
|
|
13 |
+ |
step("checkout");
|
|
14 |
+ |
sh_ok(h, "cd " + r + " && git pull --ff-only");
|
|
15 |
+ |
|
|
16 |
+ |
step("build");
|
|
17 |
+ |
sh_ok(h, "cd " + r + " && ./dist/build-appimage.sh");
|
|
18 |
+ |
sh_ok(h, "cd " + r + " && ./dist/build-deb.sh");
|
|
19 |
+ |
|
|
20 |
+ |
step("collect");
|
|
21 |
+ |
let appimage = sh(h, "ls -t " + r + "/dist/*.AppImage | head -1").stdout_tail.trim();
|
|
22 |
+ |
if appimage == "" { throw "no .AppImage produced for " + target(); }
|
|
23 |
+ |
collect(h, appimage, "audiofiles", v);
|
|
24 |
+ |
let deb = sh(h, "ls -t " + r + "/dist/*.deb 2>/dev/null | head -1").stdout_tail.trim();
|
|
25 |
+ |
if deb != "" { collect(h, deb, "audiofiles", v); }
|
|
26 |
+ |
log("audiofiles " + target() + " v" + v + " collected.");
|
|
1 |
+ |
// audiofiles — macOS (aarch64) release recipe for Bento.
|
|
2 |
+ |
//
|
|
3 |
+ |
// audiofiles is an egui app (no Tauri), so it builds through its own
|
|
4 |
+ |
// self-contained dist/build-macos.sh: cargo build -p audiofiles-app, assemble
|
|
5 |
+ |
// the .app bundle, codesign (Developer ID), notarize (notarytool keychain
|
|
6 |
+ |
// profile), staple, and emit dist/Audiofiles_<version>_<arch>.dmg. Runs on mbp
|
|
7 |
+ |
// over the in-session ops-agent transport (login.keychain unlocked there). We
|
|
8 |
+ |
// re-verify Gatekeeper here and collect the DMG into Bento's dist tree.
|
|
9 |
+ |
|
|
10 |
+ |
let h = build_host();
|
|
11 |
+ |
let v = version();
|
|
12 |
+ |
let r = repo();
|
|
13 |
+ |
|
|
14 |
+ |
step("checkout");
|
|
15 |
+ |
sh_ok(h, "cd " + r + " && git pull --ff-only");
|
|
16 |
+ |
|
|
17 |
+ |
// build-macos.sh: build + sign + notarize + staple, DMG into dist/.
|
|
18 |
+ |
step("build");
|
|
19 |
+ |
sh_ok(h, "cd " + r + " && ./dist/build-macos.sh");
|
|
20 |
+ |
|
|
21 |
+ |
// DMG name uses `uname -m` (arm64), not the target arch slug — resolve it.
|
|
22 |
+ |
step("verify");
|
|
23 |
+ |
let dmg = sh(h, "ls -t " + r + "/dist/Audiofiles_*.dmg | head -1").stdout_tail.trim();
|
|
24 |
+ |
if dmg == "" { throw "no .dmg produced under dist/"; }
|
|
25 |
+ |
if !verify_gatekeeper(h, dmg) {
|
|
26 |
+ |
throw "DMG is not Gatekeeper-accepted as Notarized Developer ID: " + dmg;
|
|
27 |
+ |
}
|
|
28 |
+ |
|
|
29 |
+ |
step("collect");
|
|
30 |
+ |
collect(h, dmg, "audiofiles", v);
|
|
31 |
+ |
log("audiofiles macOS v" + v + " built, notarized, and collected.");
|
|
1 |
+ |
// audiofiles — Windows (x86_64) release recipe for Bento.
|
|
2 |
+ |
//
|
|
3 |
+ |
// UNSUPPORTED at launch: the MSI/EXE ship unsigned (Azure certificate blocker —
|
|
4 |
+ |
// see docs/deploy.md). Best-effort, not exercised end-to-end through Bento.
|
|
5 |
+ |
//
|
|
6 |
+ |
// Built NATIVELY on windows-x86 via dist/build-msi-native.ps1 (WiX) — the
|
|
7 |
+ |
// no-cross-compile house rule rules out build-windows.sh's cargo-xwin path. The
|
|
8 |
+ |
// checkout is at a Windows path (not repo()), and commands run through
|
|
9 |
+ |
// PowerShell over ssh. Output: dist/Audiofiles_<version>_x86_64.msi (+ .exe).
|
|
10 |
+ |
|
|
11 |
+ |
let h = build_host();
|
|
12 |
+ |
let v = version();
|
|
13 |
+ |
let win_repo = "C:/Users/me/Code/Apps/audiofiles";
|
|
14 |
+ |
|
|
15 |
+ |
step("checkout");
|
|
16 |
+ |
sh_ok(h, "powershell -Command \"cd " + win_repo + "; git pull --ff-only\"");
|
|
17 |
+ |
|
|
18 |
+ |
step("build");
|
|
19 |
+ |
sh_ok(h, "powershell -Command \"cd " + win_repo + "; pwsh -File dist\\build-msi-native.ps1\"");
|
|
20 |
+ |
|
|
21 |
+ |
step("collect");
|
|
22 |
+ |
collect(h, win_repo + "/dist/*.msi", "audiofiles", v);
|
|
23 |
+ |
collect(h, win_repo + "/dist/Audiofiles*.exe", "audiofiles", v);
|
|
24 |
+ |
log("audiofiles windows/x86_64 v" + v + " collected (unsigned, unsupported).");
|