Files
benilla-octo/scripts/sccache.sh
T
chairmanpow 2f6f35b054 build: scripts/sccache.sh wraps rustc when sccache is installed, and the gates source it
A build cache serves a dependency rebuild after a branch switch or a `git clean` instead of
recompiling it, which is most of what the in-loop verify spends. It stays a convenience and
never a requirement: with nothing on `PATH` nothing is exported and a clone needs only stable
Rust and a C compiler, exactly as before.

`check.sh`, `gates.sh` and `smoke.sh` source it, so the loops pick it up without being asked
and a machine that would rather not have it sets `BENILLA_NO_SCCACHE=1`. An existing
`RUSTC_WRAPPER` wins. Only rustc is wrapped — the vendored Lua build wants its own
`CC="sccache cc"`, so it is not cached by this.
2026-10-02 13:37:01 +01:00

26 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Use sccache for rustc when it is installed. It is a developer convenience, never a requirement:
# without it nothing is exported and a clone needs only stable Rust and a C compiler.
#
# Sourced, it exports RUSTC_WRAPPER into the current shell for later cargo commands; run with a
# command, it wraps just that command. The verify, land and smoke scripts source it themselves.
#
# . scripts/sccache.sh && cargo play
# scripts/sccache.sh cargo play
#
# An existing RUSTC_WRAPPER wins, BENILLA_NO_SCCACHE=1 skips this, and SCCACHE_DISABLE=1 turns
# sccache itself off. Only rustc is wrapped: the vendored Lua build wants its own `CC="sccache cc"`.
# Sourced, it must not change the caller's shell options.
enable() {
[ -n "${RUSTC_WRAPPER:-}" ] && return 0
[ -n "${BENILLA_NO_SCCACHE:-}" ] && return 0
command -v sccache >/dev/null 2>&1 || return 0
export RUSTC_WRAPPER=sccache
}
enable
# Executed with a command: run it wrapped. Sourced: leave the caller's positionals alone.
if [ "${BASH_SOURCE[0]}" = "$0" ] && [ "$#" -gt 0 ]; then
exec "$@"
fi