Add multi-platform release builds for 0.9.0 (closes #138).
Some checks failed
Tagged release / prepare-release (push) Failing after 5s
Tagged release / build-macos (push) Has been skipped
Tagged release / build-linux-arm64 (push) Has been skipped
Tagged release / build-linux-x64 (push) Has been skipped
Tagged release / build-windows (push) Has been skipped
Tagged release / publish-release (push) Has been skipped

This commit is contained in:
Hermes Agent
2026-08-14 09:03:42 +00:00
parent 20f9d15b46
commit 917947a421
14 changed files with 3134 additions and 127 deletions

View File

@@ -29,6 +29,7 @@ objc2-foundation = { version = "0.3", features = ["objc2-core-services"] }
[dev-dependencies]
fluent-syntax = { workspace = true }
serde_yaml = { workspace = true }
syn = { version = "3", features = ["full", "visit"] }
tempfile = "3"

View File

@@ -3872,7 +3872,7 @@ impl BdsApp {
menu::action_enabled(
action,
self.active_project.is_some(),
self.active_tab_type(),
self.active_tab_type().as_ref(),
self.offline_mode,
!self.search_index_rebuild_running,
) && (action != MenuAction::DisconnectServer || self.remote_client.is_some())

View File

@@ -60,6 +60,7 @@ fn desktop_packages_have_native_icons_and_cargo_commands() {
assert!(workspace_manifest.contains("Georg Bauer <gb@rfc1437.de>"));
assert!(workspace_manifest.contains("strip = \"symbols\""));
assert!(workspace_manifest.contains("ort-download-binaries-rustls-tls"));
assert!(workspace_manifest.contains("\"sync-secret-service\", \"vendored\""));
let core_manifest =
fs::read_to_string(Path::new(CRATE_DIR).join("../bds-core/Cargo.toml")).unwrap();
@@ -82,3 +83,86 @@ fn desktop_packages_have_native_icons_and_cargo_commands() {
assert!(packager.contains("CARGO_PACKAGER_FORMAT"));
assert!(!packager.contains("--options"));
}
#[test]
fn tagged_releases_are_built_and_packaged_with_rust_tools() {
let workspace = Path::new(CRATE_DIR).join("../..");
let manifest = fs::read_to_string(workspace.join("Cargo.toml")).unwrap();
assert!(manifest.contains("\"crates/bds-release\""));
for dependency in [
"apple-bundles = \"0.21\"",
"apple-codesign = { version = \"0.29\", default-features = false }",
"apple-dmg = \"0.5\"",
] {
assert!(manifest.contains(dependency), "missing {dependency}");
}
let release_manifest =
fs::read_to_string(workspace.join("crates/bds-release/Cargo.toml")).unwrap();
for dependency in [
"apple-bundles.workspace = true",
"apple-codesign.workspace = true",
"apple-dmg.workspace = true",
"flate2",
"tar",
"zip",
] {
assert!(
release_manifest.contains(dependency),
"release packager is missing {dependency}"
);
}
let workflow = fs::read_to_string(workspace.join(".gitea/workflows/release.yml")).unwrap();
serde_yaml::from_str::<serde_yaml::Value>(&workflow).expect("valid release workflow YAML");
for required in [
"tags:",
"runs-on: linux-arm64",
"cargo-zigbuild",
"aarch64-apple-darwin",
"x86_64-apple-darwin",
"aarch64-unknown-linux-gnu",
"x86_64-unknown-linux-gnu",
"cargo-xwin",
"x86_64-pc-windows-msvc",
"bds-release",
"prepare",
"package",
"publish",
"PKG_CONFIG_ALLOW_CROSS",
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER",
] {
assert!(
workflow.contains(required),
"release workflow is missing {required}"
);
}
for forbidden in ["python", "curl ", "hdiutil", "makensis", "tar -"] {
assert!(
!workflow.contains(forbidden),
"release workflow must not use host tool {forbidden}"
);
}
let linux_dependencies =
fs::read_to_string(workspace.join(".gitea/scripts/install-linux-build-dependencies.sh"))
.unwrap();
for required in [
"libwebkit2gtk-4.1-dev",
"libgtk-3-dev",
"libxdo-dev",
"libwebkit2gtk-4.1-dev:amd64",
"gcc-x86-64-linux-gnu",
] {
assert!(
linux_dependencies.contains(required),
"Linux dependency setup is missing {required}"
);
}
let release_source =
fs::read_to_string(workspace.join("crates/bds-release/src/packaging.rs")).unwrap();
assert!(release_source.contains("LC_ID_DYLIB"));
assert!(release_source.contains("rewrite_macho_rpaths"));
assert!(!release_source.contains("Linux releases contain the portable CLI tools"));
}