#!/usr/bin/env bash # Run inside a restored tree with private Cargo/Rustup caches and no network. source "$(dirname -- "${BASH_SOURCE[0]}")/lib.sh" (( $# > 0 )) || die 'Usage: tools/in-frozen-build COMMAND [ARGUMENT...]' [[ -f $FDS_ROOT/.host/frozen/lock.json ]] || die 'Use tools/frozen-inputs restore first' (( EUID != 0 )) || die 'Run as an ordinary user' export CARGO_HOME="$FDS_ROOT/.host/repro-cargo" export RUSTUP_HOME="$FDS_ROOT/.host/repro-rustup" export FDS_OFFLINE=1 export CARGO_NET_OFFLINE=true check_void_pin rust_bin=$(dirname -- "$(rustup which rustc)") # Keep the workstation read-only; all writable caches and output stay in the # restored tree. Network isolation covers xbps-src and every nested child too. exec bwrap --unshare-user --unshare-net --ro-bind / / --bind "$FDS_ROOT" "$FDS_ROOT" \ --tmpfs /tmp --dev /dev --proc /proc \ --setenv PATH "$rust_bin:$PATH" --chdir "$FDS_ROOT" "$@"