1460e776883f

chore: Pin Rust build provenance (PB-26-032, v2.14.96)

time
2026-09-02 11:55 UTC · 1 month ago
machine
koh2
parent
6f6df5c7d877
5 files VERSION+1 −1build.gradle+2 −2scripts/build-noise-core.sh+20 −0scripts/build-rust-host.sh+31 −0scripts/rust-toolchain.sh+29 −0
VERSION+1 −1
@@ -1 +1 @@1-2.14.951+2.14.96

view file

build.gradle+2 −2
@@ -12,6 +12,6 @@1212     onlyIf {1313         coreDir.exists()1414     }15-    workingDir coreDir16-    commandLine "cargo", "build", "--locked", "--release"15+    workingDir rootDir16+    commandLine "sh", file("scripts/build-rust-host.sh"), coreDir1717 }

view file

scripts/build-noise-core.sh+20 −0
@@ -6,6 +6,10 @@66 CORE_REPOSITORY=${PEACH_NOISE_CORE_DIR:-"$ANDROID_REPOSITORY/../peach-browser/crypto-core"}77 NDK_HOME=${ANDROID_NDK_HOME:-/opt/homebrew/share/android-commandlinetools/ndk/27.3.13750724}88 9+# shellcheck source=scripts/rust-toolchain.sh10+. "$SCRIPT_DIR/rust-toolchain.sh"11+require_pinned_rust_toolchain12+913 if [ ! -f "$CORE_REPOSITORY/Cargo.toml" ]; then1014   echo "Canonical Peach Noise core not found: $CORE_REPOSITORY" >&21115   exit 1@@ -32,3 +36,19 @@3236 3337 shasum -a 256 "$ANDROID_REPOSITORY"/app/src/main/jniLibs/*/libpeach_noise_core.so3438 39+PROVENANCE_DIRECTORY="$ANDROID_REPOSITORY/build/provenance"40+mkdir -p "$PROVENANCE_DIRECTORY"41+{42+  echo "rustc=$PINNED_RUSTC_VERSION"43+  echo "cargo=$PINNED_CARGO_VERSION"44+  echo "cargo_toml_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.toml")"45+  echo "cargo_lock_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.lock")"46+  echo "rust_sources_sha256=$(hash_rust_sources "$CORE_REPOSITORY/src")"47+  echo "ndk=$NDK_HOME"48+  echo "android_api=26"49+  echo "targets=arm64-v8a,armeabi-v7a,x86,x86_64"50+  for native_library in "$ANDROID_REPOSITORY"/app/src/main/jniLibs/*/libpeach_noise_core.so; do51+    target_name=$(basename "$(dirname "$native_library")")52+    echo "artifact_${target_name}_sha256=$(hash_file "$native_library")"53+  done54+} > "$PROVENANCE_DIRECTORY/noise-core-android.txt"

view file

scripts/build-rust-host.sh+31 −0
@@ -0,0 +1,31 @@1+#!/bin/sh2+set -eu3+4+SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)5+ANDROID_REPOSITORY=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)6+CORE_REPOSITORY=${1:-${PEACH_NOISE_CORE_DIR:-"$ANDROID_REPOSITORY/../peach-browser/crypto-core"}}7+8+# shellcheck source=scripts/rust-toolchain.sh9+. "$SCRIPT_DIR/rust-toolchain.sh"10+require_pinned_rust_toolchain11+12+if [ ! -f "$CORE_REPOSITORY/Cargo.toml" ] || [ ! -f "$CORE_REPOSITORY/Cargo.lock" ]; then13+    echo "Canonical Peach Noise core manifest/lock not found: $CORE_REPOSITORY" >&214+    exit 115+fi16+17+(cd "$CORE_REPOSITORY" && cargo build --locked --release)18+19+PROVENANCE_DIRECTORY="$ANDROID_REPOSITORY/build/provenance"20+mkdir -p "$PROVENANCE_DIRECTORY"21+HOST_LIBRARY="$CORE_REPOSITORY/target/release/libpeach_noise_core.dylib"22+{23+    echo "rustc=$PINNED_RUSTC_VERSION"24+    echo "cargo=$PINNED_CARGO_VERSION"25+    echo "cargo_toml_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.toml")"26+    echo "cargo_lock_sha256=$(hash_file "$CORE_REPOSITORY/Cargo.lock")"27+    echo "rust_sources_sha256=$(hash_rust_sources "$CORE_REPOSITORY/src")"28+    echo "target=aarch64-apple-darwin"29+    echo "host_library_sha256=$(hash_file "$HOST_LIBRARY")"30+} > "$PROVENANCE_DIRECTORY/noise-core-host.txt"31+

view file

scripts/rust-toolchain.sh+29 −0
@@ -0,0 +1,29 @@1+#!/bin/sh2+3+PINNED_RUSTC_VERSION='rustc 1.96.1 (31fca3adb 2026-06-26)'4+PINNED_CARGO_VERSION='cargo 1.96.1 (356927216 2026-06-26)'5+6+require_pinned_rust_toolchain() {7+    actual_rustc=$(rustc --version 2>/dev/null || true)8+    actual_cargo=$(cargo --version 2>/dev/null || true)9+    if [ "$actual_rustc" != "$PINNED_RUSTC_VERSION" ]; then10+        echo "Rust compiler mismatch; required: $PINNED_RUSTC_VERSION" >&211+        exit 112+    fi13+    if [ "$actual_cargo" != "$PINNED_CARGO_VERSION" ]; then14+        echo "Cargo mismatch; required: $PINNED_CARGO_VERSION" >&215+        exit 116+    fi17+}18+19+hash_file() {20+    shasum -a 256 "$1" | awk '{print $1}'21+}22+23+hash_rust_sources() {24+    source_directory=$125+    find "$source_directory" -type f -print | LC_ALL=C sort |26+        while IFS= read -r source_file; do shasum -a 256 "$source_file"; done |27+        shasum -a 256 | awk '{print $1}'28+}29+

view file