extra debug statements
Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>
This commit is contained in:
parent
74684ea089
commit
b7ebcc4a7b
@ -765,6 +765,12 @@ def test_install_only_dependencies_of_all_in_env(
|
|||||||
assert os.path.exists(dep.prefix)
|
assert os.path.exists(dep.prefix)
|
||||||
|
|
||||||
|
|
||||||
|
def hline(label):
|
||||||
|
width = 100 - len(label) - 1
|
||||||
|
print()
|
||||||
|
print(f"{label} {'=' * width}")
|
||||||
|
|
||||||
|
|
||||||
def test_install_no_add_in_env(tmpdir, mock_fetch, install_mockery, mutable_mock_env_path):
|
def test_install_no_add_in_env(tmpdir, mock_fetch, install_mockery, mutable_mock_env_path):
|
||||||
# To test behavior of --add option, we create the following environment:
|
# To test behavior of --add option, we create the following environment:
|
||||||
#
|
#
|
||||||
@ -779,6 +785,9 @@ def test_install_no_add_in_env(tmpdir, mock_fetch, install_mockery, mutable_mock
|
|||||||
# ^pkg-b
|
# ^pkg-b
|
||||||
# pkg-a
|
# pkg-a
|
||||||
# ^pkg-b
|
# ^pkg-b
|
||||||
|
|
||||||
|
hline("START TEST")
|
||||||
|
|
||||||
e = ev.create("test", with_view=False)
|
e = ev.create("test", with_view=False)
|
||||||
e.add("mpileaks")
|
e.add("mpileaks")
|
||||||
e.add("libelf@0.8.10") # so env has both root and dep libelf specs
|
e.add("libelf@0.8.10") # so env has both root and dep libelf specs
|
||||||
@ -786,14 +795,14 @@ def test_install_no_add_in_env(tmpdir, mock_fetch, install_mockery, mutable_mock
|
|||||||
e.add("pkg-a ~bvv")
|
e.add("pkg-a ~bvv")
|
||||||
e.concretize()
|
e.concretize()
|
||||||
e.write()
|
e.write()
|
||||||
env_specs = e.all_specs()
|
initial_concrete_specs = e.all_specs()
|
||||||
|
|
||||||
a_spec = None
|
a_spec = None
|
||||||
b_spec = None
|
b_spec = None
|
||||||
mpi_spec = None
|
mpi_spec = None
|
||||||
|
|
||||||
# First find and remember some target concrete specs in the environment
|
# First find and remember some target concrete specs in the environment
|
||||||
for e_spec in env_specs:
|
for e_spec in initial_concrete_specs:
|
||||||
if e_spec.satisfies(Spec("pkg-a ~bvv")):
|
if e_spec.satisfies(Spec("pkg-a ~bvv")):
|
||||||
a_spec = e_spec
|
a_spec = e_spec
|
||||||
elif e_spec.name == "pkg-b":
|
elif e_spec.name == "pkg-b":
|
||||||
@ -813,28 +822,92 @@ def test_install_no_add_in_env(tmpdir, mock_fetch, install_mockery, mutable_mock
|
|||||||
|
|
||||||
# Activate the environment
|
# Activate the environment
|
||||||
with e:
|
with e:
|
||||||
|
hline("INITIAL CONCRETE SPECS")
|
||||||
|
find_output = find("-lc", output=str)
|
||||||
|
print()
|
||||||
|
initial_spec_tuples = [str((s.dag_hash(7), s.name, id(s))) for s in initial_concrete_specs]
|
||||||
|
print("\n".join(initial_spec_tuples))
|
||||||
|
|
||||||
|
initial_libelf = next(s for s in initial_concrete_specs if s.satisfies("libelf@0.8.10"))
|
||||||
|
|
||||||
# Assert using --no-add with a spec not in the env fails
|
# Assert using --no-add with a spec not in the env fails
|
||||||
|
hline("INSTALLING WITHOUT ADD")
|
||||||
inst_out = install("--no-add", "boost", fail_on_error=False, output=str)
|
inst_out = install("--no-add", "boost", fail_on_error=False, output=str)
|
||||||
|
|
||||||
assert "You can add specs to the environment with 'spack add " in inst_out
|
assert "You can add specs to the environment with 'spack add boost'" in inst_out
|
||||||
|
|
||||||
# Without --add, ensure that two packages "a" get installed
|
# Without --add, ensure that two packages "a" get installed
|
||||||
|
hline("INSTALLING WITH ADD")
|
||||||
inst_out = install("pkg-a", output=str)
|
inst_out = install("pkg-a", output=str)
|
||||||
|
|
||||||
|
# 2 pkg-a's are installed
|
||||||
assert len([x for x in e.all_specs() if x.installed and x.name == "pkg-a"]) == 2
|
assert len([x for x in e.all_specs() if x.installed and x.name == "pkg-a"]) == 2
|
||||||
|
|
||||||
|
hline("AFTER FIRST INSTALL")
|
||||||
|
# debug print output
|
||||||
|
find_output = find("-l", output=str)
|
||||||
|
|
||||||
# Install an unambiguous dependency spec (that already exists as a dep
|
# Install an unambiguous dependency spec (that already exists as a dep
|
||||||
# in the environment) and make sure it gets installed (w/ deps),
|
# in the environment) and make sure it gets installed (w/ deps),
|
||||||
# but is not added to the environment.
|
# but is not added to the environment.
|
||||||
|
hline("INSTALLING DYNINST")
|
||||||
install("dyninst")
|
install("dyninst")
|
||||||
|
|
||||||
|
hline("AFTER DYNINST INSTALL")
|
||||||
find_output = find("-l", output=str)
|
find_output = find("-l", output=str)
|
||||||
|
|
||||||
assert "dyninst" in find_output
|
assert "dyninst" in find_output
|
||||||
assert "libdwarf" in find_output
|
assert "libdwarf" in find_output
|
||||||
assert "libelf" in find_output
|
assert "libelf" in find_output
|
||||||
assert "callpath" not in find_output
|
assert "callpath" not in find_output
|
||||||
|
|
||||||
post_install_specs = e.all_specs()
|
hline("ARE ALL post_install_concrete_specs IN initial_concrete_specs?")
|
||||||
assert all([s in env_specs for s in post_install_specs])
|
post_install_concrete_specs = e.all_specs()
|
||||||
|
|
||||||
|
post_specs_in_initial_specs = [
|
||||||
|
str((s.dag_hash(7), s.name, id(s), s in initial_concrete_specs))
|
||||||
|
for s in post_install_concrete_specs
|
||||||
|
]
|
||||||
|
print("\n".join(post_specs_in_initial_specs))
|
||||||
|
|
||||||
|
hline("WEIRD SPECS")
|
||||||
|
final_libelf = next(s for s in post_install_concrete_specs if s.satisfies("libelf@0.8.10"))
|
||||||
|
print(initial_libelf.to_json())
|
||||||
|
print(final_libelf.to_json())
|
||||||
|
print(initial_libelf.to_json() == final_libelf.to_json())
|
||||||
|
print(initial_libelf._package_hash, final_libelf._package_hash)
|
||||||
|
print()
|
||||||
|
print(initial_libelf._artifact_hashes)
|
||||||
|
print(final_libelf._artifact_hashes)
|
||||||
|
print(initial_libelf._artifact_hashes == final_libelf._artifact_hashes)
|
||||||
|
print()
|
||||||
|
print(hash(initial_libelf))
|
||||||
|
print(hash(final_libelf))
|
||||||
|
print()
|
||||||
|
print(tuple(initial_libelf._cmp_iter()))
|
||||||
|
print(tuple(final_libelf._cmp_iter()))
|
||||||
|
print(
|
||||||
|
"\n".join(
|
||||||
|
[
|
||||||
|
str((x == y, x, y))
|
||||||
|
for x, y in zip(initial_libelf._cmp_iter(), final_libelf._cmp_iter())
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
print()
|
||||||
|
print(initial_libelf.variants == final_libelf.variants)
|
||||||
|
print(initial_libelf.variants)
|
||||||
|
print(final_libelf.variants)
|
||||||
|
print()
|
||||||
|
print(initial_libelf == final_libelf)
|
||||||
|
print(id(initial_libelf), id(final_libelf))
|
||||||
|
print(initial_libelf in initial_concrete_specs)
|
||||||
|
print(initial_libelf in post_install_concrete_specs)
|
||||||
|
|
||||||
|
for s in post_install_concrete_specs:
|
||||||
|
assert (
|
||||||
|
s in initial_concrete_specs
|
||||||
|
), f"installed spec {s.format('{name}{@version}{/hash:7}')} not in original env"
|
||||||
|
|
||||||
# Make sure we can install a concrete dependency spec from a spec.json
|
# Make sure we can install a concrete dependency spec from a spec.json
|
||||||
# file on disk, and the spec is installed but not added as a root
|
# file on disk, and the spec is installed but not added as a root
|
||||||
|
Loading…
Reference in New Issue
Block a user