45 lines
717 B
Bash
45 lines
717 B
Bash
#!/usr/bin/env bash
|
|
|
|
# Prints build logs for failed derivations in quiet build mode (-Q).
|
|
# See https://github.com/NixOS/nix/issues/443
|
|
#
|
|
# Usage:
|
|
#
|
|
# set -o pipefail
|
|
# nix-build ... -Q ... | whatsupnix
|
|
#
|
|
|
|
|
|
GAWK=${GAWK:-gawk}
|
|
NIX_STORE=${NIX_STORE:-nix-store}
|
|
|
|
broken=$(mktemp)
|
|
trap 'rm -f -- "$broken"' EXIT
|
|
|
|
exec >&2
|
|
|
|
$GAWK -v broken="$broken" -f <(cat - <<- 'AWK'
|
|
match($0, /builder for .*(\/nix\/store\/.+\.drv).* failed/, m) {
|
|
print m[1] >> broken
|
|
}
|
|
{ print $0 }
|
|
AWK
|
|
)
|
|
|
|
export NIX_PAGER='' # for nix-store
|
|
while read -r drv; do
|
|
title="** FAILED $drv LOG **"
|
|
frame=${title//?/*}
|
|
|
|
echo "$frame"
|
|
echo "$title"
|
|
echo "$frame"
|
|
echo
|
|
|
|
$NIX_STORE -l "$drv"
|
|
|
|
echo
|
|
done < "$broken"
|
|
|
|
exit 0
|