77 lines
1.9 KiB
Bash
Executable File
77 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
guix_source_dir=${GUIX_SOURCE_DIR:-"$HOME/repos/guix"}
|
|
script_dir=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
|
runner_scm=$script_dir/gnu-which-guix-phase-runner.scm
|
|
|
|
if [ ! -d "$guix_source_dir/guix" ]; then
|
|
echo "Guix source tree not found at $guix_source_dir" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "${GUILE_BIN:-}" ]; then
|
|
guile_bin=$GUILE_BIN
|
|
elif [ -x /tmp/guile-freebsd-validate-install/bin/guile ]; then
|
|
guile_bin=/tmp/guile-freebsd-validate-install/bin/guile
|
|
else
|
|
cat >&2 <<'EOF'
|
|
A fixed local Guile build is required for this harness.
|
|
The packaged FreeBSD guile3 binary still crashes in system*/spawn/open-pipe*.
|
|
Set GUILE_BIN to a locally built fixed Guile, for example:
|
|
GUILE_BIN=/tmp/guile-freebsd-validate-install/bin/guile
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -x "$guile_bin" ]; then
|
|
echo "Guile binary is not executable: $guile_bin" >&2
|
|
exit 1
|
|
fi
|
|
|
|
guile_prefix=$(CDPATH= cd -- "$(dirname "$guile_bin")/.." && pwd)
|
|
guile_lib_dir=$guile_prefix/lib
|
|
if [ -e "$guile_lib_dir/libguile-3.0.so.1" ]; then
|
|
if [ -n "${LD_LIBRARY_PATH:-}" ]; then
|
|
export LD_LIBRARY_PATH="$guile_lib_dir:$LD_LIBRARY_PATH"
|
|
else
|
|
export LD_LIBRARY_PATH="$guile_lib_dir"
|
|
fi
|
|
fi
|
|
|
|
cleanup=0
|
|
if [ -n "${WORKDIR:-}" ]; then
|
|
workdir=$WORKDIR
|
|
mkdir -p "$workdir"
|
|
else
|
|
workdir=$(mktemp -d /tmp/fruix-gnu-which-guix.XXXXXX)
|
|
cleanup=1
|
|
fi
|
|
|
|
if [ "${KEEP_WORKDIR:-0}" -eq 1 ]; then
|
|
cleanup=0
|
|
fi
|
|
|
|
cleanup_workdir() {
|
|
if [ "$cleanup" -eq 1 ]; then
|
|
rm -rf "$workdir"
|
|
fi
|
|
}
|
|
trap cleanup_workdir EXIT INT TERM
|
|
|
|
export GUILE_BIN="$guile_bin"
|
|
export GUIX_SOURCE_DIR="$guix_source_dir"
|
|
export WORKDIR="$workdir"
|
|
export GUILE_AUTO_COMPILE=0
|
|
if [ -n "${GUILE_LOAD_PATH:-}" ]; then
|
|
export GUILE_LOAD_PATH="$guix_source_dir:$GUILE_LOAD_PATH"
|
|
else
|
|
export GUILE_LOAD_PATH="$guix_source_dir"
|
|
fi
|
|
|
|
printf 'Using Guile: %s\n' "$guile_bin"
|
|
printf 'Using LD_LIBRARY_PATH: %s\n' "${LD_LIBRARY_PATH:-<unset>}"
|
|
printf 'Working directory: %s\n' "$workdir"
|
|
|
|
"$guile_bin" -s "$runner_scm"
|