From 75a2f8046a5782dc227f2679d6860558db4b1bfb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 3 Apr 2020 01:12:03 -0500 Subject: Add commands to facilitate Spack/Python/OS reporting (#15834) * Add --version arg to spack python command * Add `spack debug report` command --- .github/ISSUE_TEMPLATE/bug_report.md | 48 ++++++++++-------------------------- lib/spack/spack/cmd/debug.py | 18 +++++++++++++- lib/spack/spack/cmd/python.py | 9 +++++++ lib/spack/spack/test/cmd/debug.py | 14 ++++++++++- lib/spack/spack/test/cmd/python.py | 7 ++++++ share/spack/spack-completion.bash | 8 ++++-- 6 files changed, 65 insertions(+), 39 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index b38a677416..9a568285ea 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,21 +1,11 @@ --- -name: "\U0001F41E Bug report" -about: Report a bug in the core of Spack (command not working as expected, etc.) +name: "\U0001F41E Bug report" +about: Report a bug in the core of Spack (command not working as expected, etc.) labels: "bug,triage" --- - - - -### Spack version - -```console -$ spack --version - -``` + ### Steps to reproduce the issue @@ -27,38 +17,26 @@ $ spack ### Error Message - ```console -$ spack -d --stacktrace -$ spack -d --stacktrace -... +$ spack --debug --stacktrace ``` -that activate the full debug output. ---> ### Information on your system - ---> + -### General information +### Additional information -- [ ] I have run `spack --version` and reported the version of Spack + +- [ ] I have run `spack debug report` and reported the version of Spack/Python/Platform - [ ] I have searched the issues of this repo and believe this is not a duplicate - [ ] I have run the failing commands in debug mode and reported the output - \ No newline at end of file +Other than that, thanks for taking the time to contribute to Spack! --> diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py index 4fc39251af..074e95209a 100644 --- a/lib/spack/spack/cmd/debug.py +++ b/lib/spack/spack/cmd/debug.py @@ -3,7 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from __future__ import print_function + import os +import platform import re from datetime import datetime from glob import glob @@ -11,7 +14,9 @@ from glob import glob import llnl.util.tty as tty from llnl.util.filesystem import working_dir +import spack.architecture as architecture import spack.paths +from spack.main import get_version from spack.util.executable import which description = "debugging commands for troubleshooting Spack" @@ -23,6 +28,7 @@ def setup_parser(subparser): sp = subparser.add_subparsers(metavar='SUBCOMMAND', dest='debug_command') sp.add_parser('create-db-tarball', help="create a tarball of Spack's installation metadata") + sp.add_parser('report', help='print information useful for bug reports') def _debug_tarball_suffix(): @@ -78,6 +84,16 @@ def create_db_tarball(args): tty.msg('Created %s' % tarball_name) +def report(args): + print('* **Spack:**', get_version()) + print('* **Python:**', platform.python_version()) + print('* **Platform:**', architecture.Arch( + architecture.platform(), 'frontend', 'frontend')) + + def debug(parser, args): - action = {'create-db-tarball': create_db_tarball} + action = { + 'create-db-tarball': create_db_tarball, + 'report': report, + } action[args.debug_command](args) diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index 2f2290aad8..a91f3663fb 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from __future__ import print_function + import os import sys import code @@ -20,6 +22,9 @@ level = "long" def setup_parser(subparser): + subparser.add_argument( + '-V', '--version', action='store_true', + help='print the Python version number and exit') subparser.add_argument( '-c', dest='python_command', help='command to execute') subparser.add_argument( @@ -31,6 +36,10 @@ def setup_parser(subparser): def python(parser, args, unknown_args): + if args.version: + print('Python', platform.python_version()) + return + if args.module: sys.argv = ['spack-python'] + unknown_args + args.python_args runpy.run_module(args.module, run_name="__main__", alter_sys=True) diff --git a/lib/spack/spack/test/cmd/debug.py b/lib/spack/spack/test/cmd/debug.py index 4a06276abf..2898ad670e 100644 --- a/lib/spack/spack/test/cmd/debug.py +++ b/lib/spack/spack/test/cmd/debug.py @@ -3,12 +3,15 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import platform + import pytest import os import os.path -from spack.main import SpackCommand +import spack.architecture as architecture +from spack.main import SpackCommand, get_version from spack.util.executable import which debug = SpackCommand('debug') @@ -41,3 +44,12 @@ def test_create_db_tarball(tmpdir, database): spec_suffix = '%s/.spack/spec.yaml' % spec.dag_hash() assert spec_suffix in contents + + +def test_report(): + out = debug('report') + arch = architecture.Arch(architecture.platform(), 'frontend', 'frontend') + + assert get_version() in out + assert platform.python_version() in out + assert str(arch) in out diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py index 5bc05e0127..b1c9d3db00 100644 --- a/lib/spack/spack/test/cmd/python.py +++ b/lib/spack/spack/test/cmd/python.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import platform + import pytest import spack @@ -16,6 +18,11 @@ def test_python(): assert out.strip() == spack.spack_version +def test_python_version(): + out = python('-V') + assert platform.python_version() in out + + def test_python_with_module(): # pytest rewrites a lot of modules, which interferes with runpy, so # it's hard to test this. Trying to import a module like sys, that diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 38788438f7..6df546e89f 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -655,7 +655,7 @@ _spack_debug() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="create-db-tarball" + SPACK_COMPREPLY="create-db-tarball report" fi } @@ -663,6 +663,10 @@ _spack_debug_create_db_tarball() { SPACK_COMPREPLY="-h --help" } +_spack_debug_report() { + SPACK_COMPREPLY="-h --help" +} + _spack_dependencies() { if $list_options then @@ -1272,7 +1276,7 @@ _spack_pydoc() { _spack_python() { if $list_options then - SPACK_COMPREPLY="-h --help -c -m" + SPACK_COMPREPLY="-h --help -V --version -c -m" else SPACK_COMPREPLY="" fi -- cgit v1.2.3-70-g09d2