whatsupnix: init
Import from https://github.com/NixOS/nix/issues/443#issuecomment-296752535
This commit is contained in:
parent
66f9170f52
commit
015649b9b3
krebs/5pkgs/whatsupnix
15
krebs/5pkgs/whatsupnix/default.nix
Normal file
15
krebs/5pkgs/whatsupnix/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ bash, coreutils, gawk, nix, makeWrapper, stdenv }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "whatsupnix";
|
||||
phases = [ "installPhase" ];
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cat - ${./whatsupnix.bash} > $out/bin/whatsupnix <<\EOF
|
||||
#! ${bash}/bin/bash
|
||||
export PATH=${stdenv.lib.makeBinPath [ coreutils gawk nix ]}
|
||||
EOF
|
||||
chmod +x $out/bin/whatsupnix
|
||||
'';
|
||||
}
|
44
krebs/5pkgs/whatsupnix/whatsupnix.bash
Normal file
44
krebs/5pkgs/whatsupnix/whatsupnix.bash
Normal file
|
@ -0,0 +1,44 @@
|
|||
#!/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
|
Loading…
Reference in a new issue