dieHook: Add `die` utility function

Calling `die "Error message"` causes the current script to exit with
an error, printing a backtrace

Changed files
+25 -1
pkgs
build-support
setup-hooks
top-level
+21
pkgs/build-support/setup-hooks/die.sh
···
+
# Exit with backtrace and error message
+
#
+
# Usage: die "Error message"
+
die() {
+
# Let us be a little sloppy with errors, because otherwise the final
+
# invocation of `caller` below will cause the script to exit.
+
set +e
+
+
# Print our error message
+
printf "\nBuilder called die: %b\n" "$*"
+
printf "Backtrace:\n"
+
+
# Print a backtrace.
+
local frame=0
+
while caller $frame; do
+
((frame++));
+
done
+
printf "\n"
+
+
exit 1
+
}
+4 -1
pkgs/top-level/all-packages.nix
···
diffPlugins = (callPackage ../build-support/plugins.nix {}).diffPlugins;
+
dieHook = makeSetupHook {} ../build-support/setup-hooks/die.sh;
+
dockerTools = callPackage ../build-support/docker { };
docker_compose = pythonPackages.docker_compose;
···
inherit contents compressor prepend;
};
-
makeWrapper = makeSetupHook { } ../build-support/setup-hooks/make-wrapper.sh;
+
makeWrapper = makeSetupHook { deps = [ dieHook ]; }
+
../build-support/setup-hooks/make-wrapper.sh;
makeModulesClosure = { kernel, rootModules, allowMissing ? false }:
callPackage ../build-support/kernel/modules-closure.nix {