canic_host/release_set/
mod.rs1use std::time::{SystemTime, UNIX_EPOCH};
4
5mod config;
6mod manifest;
7mod paths;
8mod stage;
9
10pub(crate) use config::configured_release_roles_from_config;
11pub use config::{
12 AttachedFleetRole, ConfiguredPoolExpectation, ConfiguredRoleLifecycle, DeclaredFleetRole,
13 FleetConfigDeclaration, FleetConfigError, FleetConfigIoOperation, FleetConfigMutationConflict,
14 FleetConfigNameField, FleetConfigNameIssue, FleetConfigOperation, FleetConfigPackageIssue,
15 FleetConfigSnapshot, FleetConfigTomlOperation, LOCAL_ROOT_MIN_READY_CYCLES, RenamedFleetRole,
16 attach_fleet_role, declare_fleet_role, plan_attach_fleet_role, plan_declare_fleet_role,
17 plan_rename_fleet_role, read_fleet_config_identity, rename_fleet_role,
18};
19pub use manifest::{ReleaseSetEntry, RootReleaseSetManifest, load_root_release_set_manifest};
20pub(crate) use manifest::{
21 RootReleaseSetBuildSnapshot, RootReleaseSetBuildTarget,
22 emit_root_release_set_manifest_from_build, validate_root_release_set_manifest,
23};
24pub use paths::{
25 ArtifactRootError, WorkspaceDiscoveryError, artifact_root_path, canisters_root, config_path,
26 display_workspace_path, icp_root, load_root_package_version, load_workspace_package_version,
27 resolve_artifact_root, root_release_set_manifest_path, workspace_manifest_path, workspace_root,
28};
29pub(crate) use stage::icp_query_in_environment;
30use stage::{build_release_set_entry, validate_release_artifact_relative_path};
31pub use stage::{resume_root_bootstrap, stage_root_release_set};
32
33pub(super) const CANISTERS_ROOT_RELATIVE: &str = "fleets";
34pub(super) const ROOT_CONFIG_FILE: &str = "canic.toml";
35pub(super) const WORKSPACE_MANIFEST_RELATIVE: &str = "Cargo.toml";
36pub(crate) const ROOT_RELEASE_SET_MANIFEST_FILE: &str = "root.release-set.json";
37pub(super) const GZIP_MAGIC: [u8; 2] = [0x1f, 0x8b];
38pub(super) const WASM_MAGIC: [u8; 4] = [0x00, 0x61, 0x73, 0x6d];
39
40pub(super) fn root_time_secs() -> Result<u64, Box<dyn std::error::Error>> {
43 let now = SystemTime::now()
44 .duration_since(UNIX_EPOCH)
45 .map_err(|err| format!("system clock before unix epoch: {err}"))?;
46 Ok(now.as_secs())
47}
48
49#[cfg(test)]
50mod tests;