summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2022-10-24 03:12:38 +0200
committerGitHub <noreply@github.com>2022-10-23 18:12:38 -0700
commit7d99fbcafd4720babe2a0d325df099ed9056f5e1 (patch)
treee369403ebb5808e3984db5c23fbf8b8fd1edfb2f
parent6c32c6fbdba52109de9f112dfe785c66b7d114e8 (diff)
downloadspack-7d99fbcafd4720babe2a0d325df099ed9056f5e1.tar.gz
spack-7d99fbcafd4720babe2a0d325df099ed9056f5e1.tar.bz2
spack-7d99fbcafd4720babe2a0d325df099ed9056f5e1.tar.xz
spack-7d99fbcafd4720babe2a0d325df099ed9056f5e1.zip
backtraces with --backtrace (#33478)
* backtraces without --debug Currently `--debug` is too verbose and not-`--debug` gives to little context about where exceptions are coming from. So, instead, it'd be nice to have `spack --backtrace` and `SPACK_BACKTRACE=1` as methods to get something inbetween: no verbose debug messages, but always a full backtrace. This is useful for CI, where we don't want to drown in debug messages when installing deps, but we do want to get details where something goes wrong if it goes wrong. * completion
-rw-r--r--lib/spack/spack/main.py10
-rwxr-xr-xshare/spack/spack-completion.bash2
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py
index 7e84be5781..998d0e2022 100644
--- a/lib/spack/spack/main.py
+++ b/lib/spack/spack/main.py
@@ -528,6 +528,12 @@ def make_argument_parser(**kwargs):
help="add stacktraces to all printed statements",
)
parser.add_argument(
+ "--backtrace",
+ action="store_true",
+ default="SPACK_BACKTRACE" in os.environ,
+ help="always show backtraces for exceptions",
+ )
+ parser.add_argument(
"-V", "--version", action="store_true", help="show version number and exit"
)
parser.add_argument(
@@ -561,8 +567,10 @@ def setup_main_options(args):
# debug must be set first so that it can even affect behavior of
# errors raised by spack.config.
+ if args.debug or args.backtrace:
+ spack.error.debug = True
+
if args.debug:
- spack.error.debug = args.debug
spack.util.debug.register_interrupt_handler()
spack.config.set("config:debug", True, scope="command_line")
spack.util.environment.tracing_enabled = True
diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash
index 819b131bca..dac7f67f99 100755
--- a/share/spack/spack-completion.bash
+++ b/share/spack/spack-completion.bash
@@ -335,7 +335,7 @@ _spacktivate() {
_spack() {
if $list_options
then
- SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -b --bootstrap -p --profile --sorted-profile --lines -v --verbose --stacktrace -V --version --print-shell-vars"
+ SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -b --bootstrap -p --profile --sorted-profile --lines -v --verbose --stacktrace --backtrace -V --version --print-shell-vars"
else
SPACK_COMPREPLY="activate add arch audit blame bootstrap build-env buildcache cd change checksum ci clean clone commands compiler compilers concretize config containerize create deactivate debug dependencies dependents deprecate dev-build develop diff docs edit env extensions external fetch find gc gpg graph help info install license list load location log-parse maintainers make-installer mark mirror module patch pkg providers pydoc python reindex remove rm repo resource restage solve spec stage style tags test test-env tutorial undevelop uninstall unit-test unload url verify versions view"
fi