diff options
author | Harmen Stoppels <harmenstoppels@gmail.com> | 2023-05-19 18:44:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-19 18:44:54 +0200 |
commit | bf45a2b6d3bafc2c87d0741abf13151ac63973e7 (patch) | |
tree | 4186fd927d6a44e355cce546b8125a21f2296c1c /lib | |
parent | 475ce955e72470ec60f7a85684518a1a3b393fb3 (diff) | |
download | spack-bf45a2b6d3bafc2c87d0741abf13151ac63973e7.tar.gz spack-bf45a2b6d3bafc2c87d0741abf13151ac63973e7.tar.bz2 spack-bf45a2b6d3bafc2c87d0741abf13151ac63973e7.tar.xz spack-bf45a2b6d3bafc2c87d0741abf13151ac63973e7.zip |
spack env create: generate a view when newly created env has concrete specs (#37799)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/cmd/env.py | 5 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/env.py | 19 |
2 files changed, 23 insertions, 1 deletions
diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index 3e122087f6..6774b15afd 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -302,7 +302,7 @@ def env_create(args): # the environment should not include a view. with_view = None - _env_create( + env = _env_create( args.create_env, init_file=args.envfile, dir=args.dir, @@ -310,6 +310,9 @@ def env_create(args): keep_relative=args.keep_relative, ) + # Generate views, only really useful for environments created from spack.lock files. + env.regenerate_views() + def _env_create(name_or_path, *, init_file=None, dir=False, with_view=None, keep_relative=False): """Create a new environment, with an optional yaml description. diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index f26e5f7f3d..5855e0e208 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -3299,3 +3299,22 @@ def test_environment_created_in_users_location(mutable_config, tmpdir): assert dir_name in out assert env_dir in ev.root(dir_name) assert os.path.isdir(os.path.join(env_dir, dir_name)) + + +def test_environment_created_from_lockfile_has_view(mock_packages, tmpdir): + """When an env is created from a lockfile, a view should be generated for it""" + env_a = str(tmpdir.join("a")) + env_b = str(tmpdir.join("b")) + + # Create an environment and install a package in it + env("create", "-d", env_a) + with ev.Environment(env_a): + add("libelf") + install("--fake") + + # Create another environment from the lockfile of the first environment + env("create", "-d", env_b, os.path.join(env_a, "spack.lock")) + + # Make sure the view was created + with ev.Environment(env_b) as e: + assert os.path.isdir(e.view_path_default) |