commit 1c24d377dee4d9681e46dc1c5f55d32b87ab8f05
parent 9632a5796b7b20c330a12aad680cda4f88a57492
Author: triesap <tyson@radroots.org>
Date: Mon, 3 Aug 2026 16:13:57 +0000
app-rt: finalize packaged sdk integration
- Isolate UniFFI bindgen tooling from production FFI dependencies
- Make package metadata and embedded provenance reproducible
- Verify path-free core and FFI archives against the local registry
- Rebuild native artifacts and generated bindings byte-for-byte
Diffstat:
2 files changed, 32 insertions(+), 29 deletions(-)
diff --git a/core/crates/tera_core/Cargo.toml b/core/crates/tera_core/Cargo.toml
@@ -9,6 +9,8 @@ description = "Application core runtime for Radroots apps"
repository.workspace = true
homepage.workspace = true
readme.workspace = true
+publish = false
+include = ["src/**", "tests/**", "build.rs", "Cargo.toml"]
[lib]
crate-type = ["rlib"]
diff --git a/core/crates/tera_core/build.rs b/core/crates/tera_core/build.rs
@@ -1,45 +1,46 @@
-use std::{
- env,
- process::Command,
- time::{SystemTime, UNIX_EPOCH},
-};
+use std::{env, process::Command};
fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-env-changed=RUSTC");
println!("cargo:rerun-if-env-changed=PROFILE");
+ println!("cargo:rerun-if-env-changed=RADROOTS_SOURCE_SHA");
+ println!("cargo:rerun-if-env-changed=SOURCE_DATE_EPOCH");
let rustc = env::var("RUSTC").expect("missing required env var RUSTC");
- if let Ok(out) = Command::new(rustc).arg("--version").output()
- && out.status.success()
- && let Ok(ver) = String::from_utf8(out.stdout)
+ if let Ok(output) = Command::new(rustc).arg("--version").output()
+ && output.status.success()
+ && let Ok(version) = String::from_utf8(output.stdout)
{
- println!("cargo:rustc-env=RUSTC_VERSION={}", ver.trim());
+ println!("cargo:rustc-env=RUSTC_VERSION={}", version.trim());
}
- if let Ok(out) = Command::new("git")
- .args(["rev-parse", "--short=12", "HEAD"])
- .output()
- && out.status.success()
- {
- let mut sha = String::from_utf8_lossy(&out.stdout).trim().to_string();
- let dirty = Command::new("git")
- .args(["status", "--porcelain"])
- .output()
- .ok()
- .is_some_and(|output| output.status.success() && !output.stdout.is_empty());
- if dirty {
- sha.push_str("-dirty");
- }
- println!("cargo:rustc-env=GIT_HASH={sha}");
+ if let Some(source_sha) = optional_source_sha() {
+ println!("cargo:rustc-env=GIT_HASH={source_sha}");
}
let profile = env::var("PROFILE").expect("missing required env var PROFILE");
println!("cargo:rustc-env=PROFILE={profile}");
- let epoch = SystemTime::now()
- .duration_since(UNIX_EPOCH)
- .map(|d| d.as_secs())
- .expect("system time before unix epoch");
- println!("cargo:rustc-env=BUILD_TIME_UNIX={epoch}");
+ if let Some(epoch) = optional_source_date_epoch() {
+ println!("cargo:rustc-env=BUILD_TIME_UNIX={epoch}");
+ }
+}
+
+fn optional_source_sha() -> Option<String> {
+ let value = env::var("RADROOTS_SOURCE_SHA").ok()?;
+ assert!(
+ (7..=64).contains(&value.len()) && value.bytes().all(|byte| byte.is_ascii_hexdigit()),
+ "RADROOTS_SOURCE_SHA must contain 7 to 64 hexadecimal characters"
+ );
+ Some(value.to_ascii_lowercase())
+}
+
+fn optional_source_date_epoch() -> Option<u64> {
+ let value = env::var("SOURCE_DATE_EPOCH").ok()?;
+ Some(
+ value
+ .parse()
+ .expect("SOURCE_DATE_EPOCH must be an unsigned Unix timestamp"),
+ )
}