diff --git a/lib/spack/spack/cmd/buildcache.py b/lib/spack/spack/cmd/buildcache.py index a76cfa767f6..80a579a3b71 100644 --- a/lib/spack/spack/cmd/buildcache.py +++ b/lib/spack/spack/cmd/buildcache.py @@ -76,9 +76,6 @@ def setup_parser(subparser: argparse.ArgumentParser): default=False, help="regenerate buildcache index after building package(s)", ) - push.add_argument( - "--spec-file", default=None, help="create buildcache entry for spec from json or yaml file" - ) push.add_argument( "--only", default="package,dependencies", @@ -192,28 +189,14 @@ def setup_parser(subparser: argparse.ArgumentParser): default=lambda: spack.config.default_modify_scope(), help="configuration scope containing mirrors to check", ) - # Unfortunately there are 3 ways to do the same thing here: - check_specs = check.add_mutually_exclusive_group() - check_specs.add_argument( - "-s", "--spec", help="check single spec instead of release specs file" - ) - check_specs.add_argument( - "--spec-file", - help="check single spec from json or yaml file instead of release specs file", - ) + arguments.add_common_arguments(check, ["specs"]) check.set_defaults(func=check_fn) # Download tarball and specfile download = subparsers.add_parser("download", help=download_fn.__doc__) - download_spec_or_specfile = download.add_mutually_exclusive_group(required=True) - download_spec_or_specfile.add_argument( - "-s", "--spec", help="download built tarball for spec from mirror" - ) - download_spec_or_specfile.add_argument( - "--spec-file", help="download built tarball for spec (from json or yaml file) from mirror" - ) + download.add_argument("-s", "--spec", help="download built tarball for spec from mirror") download.add_argument( "-p", "--path", @@ -223,28 +206,10 @@ def setup_parser(subparser: argparse.ArgumentParser): ) download.set_defaults(func=download_fn) - # Get buildcache name - getbuildcachename = subparsers.add_parser( - "get-buildcache-name", help=get_buildcache_name_fn.__doc__ - ) - getbuildcachename_spec_or_specfile = getbuildcachename.add_mutually_exclusive_group( - required=True - ) - getbuildcachename_spec_or_specfile.add_argument( - "-s", "--spec", help="spec string for which buildcache name is desired" - ) - getbuildcachename_spec_or_specfile.add_argument( - "--spec-file", help="path to spec json or yaml file for which buildcache name is desired" - ) - getbuildcachename.set_defaults(func=get_buildcache_name_fn) - # Given the root spec, save the yaml of the dependent spec to a file savespecfile = subparsers.add_parser("save-specfile", help=save_specfile_fn.__doc__) savespecfile_spec_or_specfile = savespecfile.add_mutually_exclusive_group(required=True) savespecfile_spec_or_specfile.add_argument("--root-spec", help="root spec of dependent spec") - savespecfile_spec_or_specfile.add_argument( - "--root-specfile", help="path to json or yaml file containing root spec of dependent spec" - ) savespecfile.add_argument( "-s", "--specs", @@ -380,14 +345,8 @@ def _specs_to_be_packaged( def push_fn(args): """create a binary package and push it to a mirror""" - if args.spec_file: - tty.warn( - "The flag `--spec-file` is deprecated and will be removed in Spack 0.22. " - "Use positional arguments instead." - ) - - if args.specs or args.spec_file: - roots = _matching_specs(spack.cmd.parse_specs(args.specs or args.spec_file)) + if args.specs: + roots = _matching_specs(spack.cmd.parse_specs(args.specs)) else: roots = spack.cmd.require_active_env(cmd_name="buildcache push").concrete_roots() @@ -529,22 +488,7 @@ def check_fn(args: argparse.Namespace): this command uses the process exit code to indicate its result, specifically, if the exit code is non-zero, then at least one of the indicated specs needs to be rebuilt """ - if args.spec_file: - specs_arg = ( - args.spec_file if os.path.sep in args.spec_file else os.path.join(".", args.spec_file) - ) - tty.warn( - "The flag `--spec-file` is deprecated and will be removed in Spack 0.22. " - f"Use `spack buildcache check {specs_arg}` instead." - ) - elif args.spec: - specs_arg = args.spec - tty.warn( - "The flag `--spec` is deprecated and will be removed in Spack 0.23. " - f"Use `spack buildcache check {specs_arg}` instead." - ) - else: - specs_arg = args.specs + specs_arg = args.specs if specs_arg: specs = _matching_specs(spack.cmd.parse_specs(specs_arg)) @@ -578,13 +522,7 @@ def download_fn(args): code indicates that the command failed to download at least one of the required buildcache components """ - if args.spec_file: - tty.warn( - "The flag `--spec-file` is deprecated and will be removed in Spack 0.22. " - "Use --spec instead." - ) - - specs = _matching_specs(spack.cmd.parse_specs(args.spec or args.spec_file)) + specs = _matching_specs(spack.cmd.parse_specs(args.spec)) if len(specs) != 1: tty.die("a single spec argument is required to download from a buildcache") @@ -593,15 +531,6 @@ def download_fn(args): sys.exit(1) -def get_buildcache_name_fn(args): - """get name (prefix) of buildcache entries for this spec""" - tty.warn("This command is deprecated and will be removed in Spack 0.22.") - specs = _matching_specs(spack.cmd.parse_specs(args.spec or args.spec_file)) - if len(specs) != 1: - tty.die("a single spec argument is required to get buildcache name") - print(bindist.tarball_name(specs[0], "")) - - def save_specfile_fn(args): """get full spec for dependencies and write them to files in the specified output directory @@ -609,13 +538,7 @@ def save_specfile_fn(args): successful. if any errors or exceptions are encountered, or if expected command-line arguments are not provided, then the exit code will be non-zero """ - if args.root_specfile: - tty.warn( - "The flag `--root-specfile` is deprecated and will be removed in Spack 0.22. " - "Use --root-spec instead." - ) - - specs = spack.cmd.parse_specs(args.root_spec or args.root_specfile) + specs = spack.cmd.parse_specs(args.root_spec) if len(specs) != 1: tty.die("a single spec argument is required to save specfile") diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index b1201efbe74..da1ce50c77e 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -873,10 +873,6 @@ def test_push_to_build_cache( ci.copy_stage_logs_to_artifacts(concrete_spec, str(logs_dir)) assert "spack-build-out.txt.gz" in os.listdir(logs_dir) - dl_dir = scratch / "download_dir" - buildcache_cmd("download", "--spec-file", json_path, "--path", str(dl_dir)) - assert len(os.listdir(dl_dir)) == 2 - def test_push_to_build_cache_exceptions(monkeypatch, tmp_path, capsys): def push_or_raise(*args, **kwargs): diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 65d276b9743..7abaf6ff785 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -563,14 +563,14 @@ _spack_buildcache() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="push create install list keys check download get-buildcache-name save-specfile sync update-index rebuild-index" + SPACK_COMPREPLY="push create install list keys check download save-specfile sync update-index rebuild-index" fi } _spack_buildcache_push() { if $list_options then - SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --spec-file --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" + SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" else _mirrors fi @@ -579,7 +579,7 @@ _spack_buildcache_push() { _spack_buildcache_create() { if $list_options then - SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --spec-file --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" + SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" else _mirrors fi @@ -610,22 +610,18 @@ _spack_buildcache_keys() { _spack_buildcache_check() { if $list_options then - SPACK_COMPREPLY="-h --help -m --mirror-url -o --output-file --scope -s --spec --spec-file" + SPACK_COMPREPLY="-h --help -m --mirror-url -o --output-file --scope" else _all_packages fi } _spack_buildcache_download() { - SPACK_COMPREPLY="-h --help -s --spec --spec-file -p --path" -} - -_spack_buildcache_get_buildcache_name() { - SPACK_COMPREPLY="-h --help -s --spec --spec-file" + SPACK_COMPREPLY="-h --help -s --spec -p --path" } _spack_buildcache_save_specfile() { - SPACK_COMPREPLY="-h --help --root-spec --root-specfile -s --specs --specfile-dir" + SPACK_COMPREPLY="-h --help --root-spec -s --specs --specfile-dir" } _spack_buildcache_sync() { diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 0a6c986757f..9d53ea526ec 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -693,7 +693,6 @@ complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a list -d complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a keys -d 'get public keys available on mirrors' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a check -d 'check specs against remote binary mirror(s) to see if any need to be rebuilt' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a download -d 'download buildcache entry from a remote mirror to local folder' -complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a get-buildcache-name -d 'get name (prefix) of buildcache entries for this spec' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a save-specfile -d 'get full spec for dependencies and write them to files in the specified output directory' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a sync -d 'sync binaries (and associated metadata) from one mirror to another' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a update-index -d 'update a buildcache index' @@ -702,7 +701,7 @@ complete -c spack -n '__fish_spack_using_command buildcache' -s h -l help -f -a complete -c spack -n '__fish_spack_using_command buildcache' -s h -l help -d 'show this help message and exit' # spack buildcache push -set -g __fish_spack_optspecs_spack_buildcache_push h/help f/force u/unsigned signed k/key= update-index spec-file= only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= +set -g __fish_spack_optspecs_spack_buildcache_push h/help f/force u/unsigned signed k/key= update-index only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= complete -c spack -n '__fish_spack_using_command_pos_remainder 1 buildcache push' -f -k -a '(__fish_spack_specs)' complete -c spack -n '__fish_spack_using_command buildcache push' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache push' -s h -l help -d 'show this help message and exit' @@ -716,8 +715,6 @@ complete -c spack -n '__fish_spack_using_command buildcache push' -l key -s k -r complete -c spack -n '__fish_spack_using_command buildcache push' -l key -s k -r -d 'key for signing' complete -c spack -n '__fish_spack_using_command buildcache push' -l update-index -l rebuild-index -f -a update_index complete -c spack -n '__fish_spack_using_command buildcache push' -l update-index -l rebuild-index -d 'regenerate buildcache index after building package(s)' -complete -c spack -n '__fish_spack_using_command buildcache push' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache push' -l spec-file -r -d 'create buildcache entry for spec from json or yaml file' complete -c spack -n '__fish_spack_using_command buildcache push' -l only -r -f -a 'package dependencies' complete -c spack -n '__fish_spack_using_command buildcache push' -l only -r -d 'select the buildcache mode. The default is to build a cache for the package along with all its dependencies. Alternatively, one can decide to build a cache for only the package or only the dependencies' complete -c spack -n '__fish_spack_using_command buildcache push' -l with-build-dependencies -f -a with_build_dependencies @@ -736,7 +733,7 @@ complete -c spack -n '__fish_spack_using_command buildcache push' -s j -l jobs - complete -c spack -n '__fish_spack_using_command buildcache push' -s j -l jobs -r -d 'explicitly set number of parallel jobs' # spack buildcache create -set -g __fish_spack_optspecs_spack_buildcache_create h/help f/force u/unsigned signed k/key= update-index spec-file= only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= +set -g __fish_spack_optspecs_spack_buildcache_create h/help f/force u/unsigned signed k/key= update-index only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= complete -c spack -n '__fish_spack_using_command_pos_remainder 1 buildcache create' -f -k -a '(__fish_spack_specs)' complete -c spack -n '__fish_spack_using_command buildcache create' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache create' -s h -l help -d 'show this help message and exit' @@ -750,8 +747,6 @@ complete -c spack -n '__fish_spack_using_command buildcache create' -l key -s k complete -c spack -n '__fish_spack_using_command buildcache create' -l key -s k -r -d 'key for signing' complete -c spack -n '__fish_spack_using_command buildcache create' -l update-index -l rebuild-index -f -a update_index complete -c spack -n '__fish_spack_using_command buildcache create' -l update-index -l rebuild-index -d 'regenerate buildcache index after building package(s)' -complete -c spack -n '__fish_spack_using_command buildcache create' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache create' -l spec-file -r -d 'create buildcache entry for spec from json or yaml file' complete -c spack -n '__fish_spack_using_command buildcache create' -l only -r -f -a 'package dependencies' complete -c spack -n '__fish_spack_using_command buildcache create' -l only -r -d 'select the buildcache mode. The default is to build a cache for the package along with all its dependencies. Alternatively, one can decide to build a cache for only the package or only the dependencies' complete -c spack -n '__fish_spack_using_command buildcache create' -l with-build-dependencies -f -a with_build_dependencies @@ -811,7 +806,7 @@ complete -c spack -n '__fish_spack_using_command buildcache keys' -s f -l force complete -c spack -n '__fish_spack_using_command buildcache keys' -s f -l force -d 'force new download of keys' # spack buildcache check -set -g __fish_spack_optspecs_spack_buildcache_check h/help m/mirror-url= o/output-file= scope= s/spec= spec-file= +set -g __fish_spack_optspecs_spack_buildcache_check h/help m/mirror-url= o/output-file= scope= complete -c spack -n '__fish_spack_using_command_pos_remainder 0 buildcache check' -f -k -a '(__fish_spack_specs)' complete -c spack -n '__fish_spack_using_command buildcache check' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache check' -s h -l help -d 'show this help message and exit' @@ -821,39 +816,22 @@ complete -c spack -n '__fish_spack_using_command buildcache check' -s o -l outpu complete -c spack -n '__fish_spack_using_command buildcache check' -s o -l output-file -r -d 'file where rebuild info should be written' complete -c spack -n '__fish_spack_using_command buildcache check' -l scope -r -f -a '_builtin defaults system site user command_line' complete -c spack -n '__fish_spack_using_command buildcache check' -l scope -r -d 'configuration scope containing mirrors to check' -complete -c spack -n '__fish_spack_using_command buildcache check' -s s -l spec -r -f -a spec -complete -c spack -n '__fish_spack_using_command buildcache check' -s s -l spec -r -d 'check single spec instead of release specs file' -complete -c spack -n '__fish_spack_using_command buildcache check' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache check' -l spec-file -r -d 'check single spec from json or yaml file instead of release specs file' # spack buildcache download -set -g __fish_spack_optspecs_spack_buildcache_download h/help s/spec= spec-file= p/path= +set -g __fish_spack_optspecs_spack_buildcache_download h/help s/spec= p/path= complete -c spack -n '__fish_spack_using_command buildcache download' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache download' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command buildcache download' -s s -l spec -r -f -a spec complete -c spack -n '__fish_spack_using_command buildcache download' -s s -l spec -r -d 'download built tarball for spec from mirror' -complete -c spack -n '__fish_spack_using_command buildcache download' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache download' -l spec-file -r -d 'download built tarball for spec (from json or yaml file) from mirror' complete -c spack -n '__fish_spack_using_command buildcache download' -s p -l path -r -f -a path complete -c spack -n '__fish_spack_using_command buildcache download' -s p -l path -r -d 'path to directory where tarball should be downloaded' -# spack buildcache get-buildcache-name -set -g __fish_spack_optspecs_spack_buildcache_get_buildcache_name h/help s/spec= spec-file= -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s h -l help -f -a help -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s h -l help -d 'show this help message and exit' -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s s -l spec -r -f -a spec -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s s -l spec -r -d 'spec string for which buildcache name is desired' -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -l spec-file -r -d 'path to spec json or yaml file for which buildcache name is desired' - # spack buildcache save-specfile -set -g __fish_spack_optspecs_spack_buildcache_save_specfile h/help root-spec= root-specfile= s/specs= specfile-dir= +set -g __fish_spack_optspecs_spack_buildcache_save_specfile h/help root-spec= s/specs= specfile-dir= complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-spec -r -f -a root_spec complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-spec -r -d 'root spec of dependent spec' -complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-specfile -r -f -a root_specfile -complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-specfile -r -d 'path to json or yaml file containing root spec of dependent spec' complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s s -l specs -r -f -a specs complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s s -l specs -r -d 'list of dependent specs for which saved yaml is desired' complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l specfile-dir -r -f -a specfile_dir