diff --git a/justfile b/justfile index c51bae7..7c089d8 100644 --- a/justfile +++ b/justfile @@ -307,11 +307,13 @@ __build_packages $system $outdir +$attrpaths: test -z "${_JUST_NIX_INSTANTIATE_ARGS:-}" || echo >&2 "_JUST_NIX_INSTANTIATE_ARGS = $_JUST_NIX_INSTANTIATE_ARGS" test -d "$outdir" && { rm -rf "$outdir"/.gcroot + rm -rf "$outdir"/_views fd . "$outdir" --type l -X rm -v fd \\\.log$ "$outdir" --type f -X rm -v } declare -a attrpaths=("${@:3}") mkdir -p "$outdir/.gcroot" + mkdir -p "$outdir/_views/"{succeeded,failed} export _JUST_NIX_INSTANTIATE_CACHE=$(mktemp -d) export NOTFOUNDDIR="$(mktemp -d)"; touch "$NOTFOUNDDIR"/no-eval # set -x @@ -322,6 +324,8 @@ __build_packages $system $outdir +$attrpaths: worker() { local attrpath="$1" local dst="$outdir/$attrpath" + local dst2a="$outdir/_views/succeeded/$attrpath" + local dst2b="$outdir/_views/failed/$attrpath" local gcroot="$outdir/.gcroot/$attrpath" # workaround since .drv!dev will always append "-dev" to --out-path local drvpath=$( just _instantiate_packages "$system" "$attrpath" ) set -x @@ -349,12 +353,19 @@ __build_packages $system $outdir +$attrpaths: if [[ -L "$dst" ]]; then nice -n5 nix log $(readlink "$dst") > "$dst".log 2>/dev/null ||: # nice -n5 nix log --option substituters "" $(readlink "$dst") > "$dst".log 2>/dev/null ||: + ln -sr "$dst" "$dst2a" + ln -sr "$dst".log "$dst2a".log else if [[ -z "$drvpath" ]]; then - ln -s "$NOTFOUNDDIR"/no-eval "$dst" + ln -sr "$NOTFOUNDDIR"/no-eval "$dst" + ln -sr "$NOTFOUNDDIR"/no-eval "$dst2b" + NIXPKGS_ALLOW_UNFREE=1 NIXPKGS_ALLOW_INSECURE=1 nice -n5 nix-instantiate . -A "$attrpath" >& "$dst.log" # a third time... + ln -sr "$dst".log "$dst2b".log else - ln -s /build-failure-"$attrpath" "$dst" + ln -sr /build-failure-"$attrpath" "$dst" + ln -sr /build-failure-"$attrpath" "$dst2b" nice -n5 nix log --option substituters "" ".#$attrpath" --system "$system" ${_JUST_NIX_INSTANTIATE_ARGS:-} > "$dst".log 2>/dev/null ||: + ln -sr "$dst".log "$dst2b".log fi fi }