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
|