summary refs log tree commit diff
path: root/pkgs/build-support/setup-hooks/die.sh
diff options
context:
space:
mode:
authorTaahir Ahmed <ahmed.taahir@gmail.com>2017-04-13 02:43:50 -0500
committerTaahir Ahmed <ahmed.taahir@gmail.com>2017-08-08 00:17:56 -0500
commit12354b8eb55fd76db73df6efab82aa083c7cfae4 (patch)
tree97ef848cee7491254f2135fcc01b8e8d6007ac4d /pkgs/build-support/setup-hooks/die.sh
parentba68231273bea4cba01413fd2a0e56d68db9234c (diff)
downloadnixlib-12354b8eb55fd76db73df6efab82aa083c7cfae4.tar
nixlib-12354b8eb55fd76db73df6efab82aa083c7cfae4.tar.gz
nixlib-12354b8eb55fd76db73df6efab82aa083c7cfae4.tar.bz2
nixlib-12354b8eb55fd76db73df6efab82aa083c7cfae4.tar.lz
nixlib-12354b8eb55fd76db73df6efab82aa083c7cfae4.tar.xz
nixlib-12354b8eb55fd76db73df6efab82aa083c7cfae4.tar.zst
nixlib-12354b8eb55fd76db73df6efab82aa083c7cfae4.zip
dieHook: Add `die` utility function
Calling `die "Error message"` causes the current script to exit with
an error, printing a backtrace
Diffstat (limited to 'pkgs/build-support/setup-hooks/die.sh')
-rw-r--r--pkgs/build-support/setup-hooks/die.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/pkgs/build-support/setup-hooks/die.sh b/pkgs/build-support/setup-hooks/die.sh
new file mode 100644
index 000000000000..0db41e030f4c
--- /dev/null
+++ b/pkgs/build-support/setup-hooks/die.sh
@@ -0,0 +1,21 @@
+# 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
+}