#!/bin/sh set -eu project_root=${PROJECT_ROOT:-$(pwd)} guix_source_dir=${GUIX_SOURCE_DIR:-"$HOME/repos/guix"} script_dir=$(CDPATH= cd -- "$(dirname "$0")" && pwd) runner_scm=$script_dir/freebsd-package-profile-prototype.scm 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. 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-freebsd-package-profile.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 GUILE_AUTO_COMPILE=0 export WORKDIR="$workdir" export PROJECT_ROOT="$project_root" if [ -n "${GUILE_LOAD_PATH:-}" ]; then export GUILE_LOAD_PATH="$project_root/modules:$guix_source_dir:$GUILE_LOAD_PATH" else export GUILE_LOAD_PATH="$project_root/modules:$guix_source_dir" fi printf 'Using Guile: %s\n' "$guile_bin" printf 'Using LD_LIBRARY_PATH: %s\n' "${LD_LIBRARY_PATH:-}" printf 'Working directory: %s\n' "$workdir" "$guile_bin" -s "$runner_scm"