Add commands to facilitate Spack/Python/OS reporting (#15834)
* Add --version arg to spack python command * Add `spack debug report` command
This commit is contained in:
@@ -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 @@
|
||||
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)
|
||||
|
@@ -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 @@
|
||||
|
||||
|
||||
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)
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user