montana/_internal-private/MontanaOS-archived-20260521/scripts/build-montanaos.sh

44 lines
1.2 KiB
Bash
Raw Normal View History

2026-05-26 21:14:51 +03:00
#!/usr/bin/env bash
set -euo pipefail
DEVICE="${1:-komodo}"
WORK_DIR="${MONTANAOS_WORK:-$HOME/montanaos-build}"
MONTANAOS_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
LOCK_COMMIT="$(git -C "$MONTANAOS_ROOT" rev-parse HEAD)"
LOCK_SHORT="$(git -C "$MONTANAOS_ROOT" rev-parse --short=12 HEAD)"
SOURCE_DATE_EPOCH="$(git -C "$MONTANAOS_ROOT" log -1 --format=%ct HEAD)"
export SOURCE_DATE_EPOCH
if [[ -n "$(git -C "$MONTANAOS_ROOT" status --porcelain)" ]]; then
echo "ERROR: working tree dirty. Reproducible builds require clean tree."
echo "Either commit changes or stash before building a release."
exit 1
fi
cd "$WORK_DIR/grapheneos"
unset USE_CCACHE
export USE_CCACHE=0
source build/envsetup.sh
lunch "${DEVICE}-cur-user"
m vendorbootimage vendorkernelbootimage
m target-files-package
OUT_DIR="out/target/product/$DEVICE"
ZIP_NAME="MontanaOS-${DEVICE}-${LOCK_SHORT}.zip"
if [[ -f "$OUT_DIR/$ZIP_NAME" ]]; then
echo
echo "Build complete: $OUT_DIR/$ZIP_NAME"
echo "MontanaOS commit: $LOCK_COMMIT"
echo "SOURCE_DATE_EPOCH: $SOURCE_DATE_EPOCH"
sha256sum "$OUT_DIR/$ZIP_NAME"
else
echo "ERROR: expected output $OUT_DIR/$ZIP_NAME not found"
ls "$OUT_DIR" | head
exit 1
fi