From af62a062cc18626ccf039ee5b4bef5a7d04cc118 Mon Sep 17 00:00:00 2001 From: Nathan Hanford Date: Thu, 10 Oct 2024 15:48:58 -0700 Subject: [PATCH] Installer: rewire spliced specs via RewireTask (#39136) This PR allows users to configure explicit splicing replacement of an abstract spec in the concretizer. concretizer: splice: explicit: - target: mpi replacement: mpich/abcdef transitive: true This config block would mean "for any spec that concretizes to use mpi, splice in mpich/abcdef in place of the mpi it would naturally concretize to use. See #20262, #26873, #27919, and #46382 for PRs enabling splicing in the Spec object. This PR will be the first place the splice method is used in a user-facing manner. See https://spack.readthedocs.io/en/latest/spack.html#spack.spec.Spec.splice for more information on splicing. This will allow users to reuse generic public binaries while splicing in the performant local mpi implementation on their system. In the config file, the target may be any abstract spec. The replacement must be a spec that includes an abstract hash `/abcdef`. The transitive key is optional, defaulting to true if left out. Two important items to note: 1. When writing explicit splice config, the user is in charge of ensuring that the replacement specs they use are binary compatible with whatever targets they replace. In practice, this will likely require either specific knowledge of what packages will be installed by the user's workflow, or somewhat more specific abstract "target" specs for splicing, to ensure binary compatibility. 2. Explicit splices can cause the output of the concretizer not to satisfy the input. For example, using the config above and consider a package in a binary cache `hdf5/xyzabc` that depends on mvapich2. Then the command `spack install hdf5/xyzabc` will instead install the result of splicing `mpich/abcdef` into `hdf5/xyzabc` in place of whatever mvapich2 spec it previously depended on. When this occurs, a warning message is printed `Warning: explicit splice configuration has caused the the concretized spec {concrete_spec} not to satisfy the input spec {input_spec}". Highlighted technical details of implementation: 1. This PR required modifying the installer to have two separate types of Tasks, `RewireTask` and `BuildTask`. Spliced specs are queued as `RewireTask` and standard specs are queued as `BuildTask`. Each spliced spec retains a pointer to its build_spec for provenance. If a RewireTask is dequeued and the associated `build_spec` is neither available in the install_tree nor from a binary cache, the RewireTask is requeued with a new dependency on a BuildTask for the build_spec, and BuildTasks are queued for the build spec and its dependencies. 2. Relocation is modified so that a spack binary can be simultaneously installed and rewired. This ensures that installing the build_spec is not necessary when splicing from a binary cache. 3. The splicing model is modified to more accurately represent build dependencies -- that is, spliced specs do not have build dependencies, as spliced specs are never built. Their build_specs retain the build dependencies, as they may be built as part of installing the spliced spec. 4. There were vestiges of the compiler bootstrapping logic that were not removed in #46237 because I asked alalazo to leave them in to avoid making the rebase for this PR harder than it needed to be. Those last remains are removed in this PR. Co-authored-by: Nathan Hanford Co-authored-by: Gregory Becker Co-authored-by: Tamara Dahlgren --- .github/workflows/valid-style.yml | 2 +- lib/spack/docs/build_settings.rst | 71 ++++ lib/spack/docs/images/splices.png | Bin 0 -> 366972 bytes lib/spack/spack/binary_distribution.py | 75 +++- lib/spack/spack/environment/environment.py | 13 +- lib/spack/spack/installer.py | 443 +++++++++++++-------- lib/spack/spack/rewiring.py | 19 +- lib/spack/spack/schema/concretizer.py | 20 + lib/spack/spack/solver/asp.py | 35 +- lib/spack/spack/spec.py | 117 +++--- lib/spack/spack/test/bindist.py | 49 +-- lib/spack/spack/test/buildtask.py | 4 +- lib/spack/spack/test/cmd/env.py | 33 ++ lib/spack/spack/test/concretize.py | 24 ++ lib/spack/spack/test/conftest.py | 35 ++ lib/spack/spack/test/installer.py | 205 +++++++--- lib/spack/spack/test/rewiring.py | 45 ++- lib/spack/spack/test/spec_semantics.py | 59 +-- 18 files changed, 875 insertions(+), 374 deletions(-) create mode 100644 lib/spack/docs/images/splices.png diff --git a/.github/workflows/valid-style.yml b/.github/workflows/valid-style.yml index 1e133371c05..d107fdb1978 100644 --- a/.github/workflows/valid-style.yml +++ b/.github/workflows/valid-style.yml @@ -85,7 +85,7 @@ jobs: source share/spack/setup-env.sh spack debug report spack -d bootstrap now --dev - spack style -t black + spack -d style -t black spack unit-test -V import-check: runs-on: ubuntu-latest diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index d545c70d18d..97c81bf17a4 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -166,3 +166,74 @@ while `py-numpy` still needs an older version: Up to Spack v0.20 ``duplicates:strategy:none`` was the default (and only) behavior. From Spack v0.21 the default behavior is ``duplicates:strategy:minimal``. + +-------- +Splicing +-------- + +The ``splice`` key covers config attributes for splicing specs in the solver. + +"Splicing" is a method for replacing a dependency with another spec +that provides the same package or virtual. There are two types of +splices, referring to different behaviors for shared dependencies +between the root spec and the new spec replacing a dependency: +"transitive" and "intransitive". A "transitive" splice is one that +resolves all conflicts by taking the dependency from the new node. An +"intransitive" splice is one that resolves all conflicts by taking the +dependency from the original root. From a theory perspective, hybrid +splices are possible but are not modeled by Spack. + +All spliced specs retain a ``build_spec`` attribute that points to the +original Spec before any splice occurred. The ``build_spec`` for a +non-spliced spec is itself. + +The figure below shows examples of transitive and intransitive splices: + +.. figure:: images/splices.png + :align: center + +The concretizer can be configured to explicitly splice particular +replacements for a target spec. Splicing will allow the user to make +use of generically built public binary caches, while swapping in +highly optimized local builds for performance critical components +and/or components that interact closely with the specific hardware +details of the system. The most prominent candidate for splicing is +MPI providers. MPI packages have relatively well-understood ABI +characteristics, and most High Performance Computing facilities deploy +highly optimized MPI packages tailored to their particular +hardware. The following config block configures Spack to replace +whatever MPI provider each spec was concretized to use with the +particular package of ``mpich`` with the hash that begins ``abcdef``. + +.. code-block:: yaml + + concretizer: + splice: + explicit: + - target: mpi + replacement: mpich/abcdef + transitive: false + +.. warning:: + + When configuring an explicit splice, you as the user take on the + responsibility for ensuring ABI compatibility between the specs + matched by the target and the replacement you provide. If they are + not compatible, Spack will not warn you and your application will + fail to run. + +The ``target`` field of an explicit splice can be any abstract +spec. The ``replacement`` field must be a spec that includes the hash +of a concrete spec, and the replacement must either be the same +package as the target, provide the virtual that is the target, or +provide a virtual that the target provides. The ``transitive`` field +is optional -- by default, splices will be transitive. + +.. note:: + + With explicit splices configured, it is possible for Spack to + concretize to a spec that does not satisfy the input. For example, + with the config above ``hdf5 ^mvapich2`` will concretize to user + ``mpich/abcdef`` instead of ``mvapich2`` as the MPI provider. Spack + will warn the user in this case, but will not fail the + concretization. diff --git a/lib/spack/docs/images/splices.png b/lib/spack/docs/images/splices.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a3e99837347850b7ce6a09eace5af784da46b2 GIT binary patch literal 366972 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 z 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 XJZHajDXyKO{%Aeae^7bvS@{10Gwb@z literal 0 HcmV?d00001 diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index baa04f9df6d..1f0d33f00ee 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -35,6 +35,7 @@ import spack.caches import spack.config as config import spack.database as spack_db +import spack.deptypes as dt import spack.error import spack.hash_types as ht import spack.hooks @@ -712,15 +713,32 @@ def get_buildfile_manifest(spec): return data -def hashes_to_prefixes(spec): - """Return a dictionary of hashes to prefixes for a spec and its deps, excluding externals""" - return { - s.dag_hash(): str(s.prefix) +def deps_to_relocate(spec): + """Return the transitive link and direct run dependencies of the spec. + + This is a special traversal for dependencies we need to consider when relocating a package. + + Package binaries, scripts, and other files may refer to the prefixes of dependencies, so + we need to rewrite those locations when dependencies are in a different place at install time + than they were at build time. + + This traversal covers transitive link dependencies and direct run dependencies because: + + 1. Spack adds RPATHs for transitive link dependencies so that packages can find needed + dependency libraries. + 2. Packages may call any of their *direct* run dependencies (and may bake their paths into + binaries or scripts), so we also need to search for run dependency prefixes when relocating. + + This returns a deduplicated list of transitive link dependencies and direct run dependencies. + """ + deps = [ + s for s in itertools.chain( spec.traverse(root=True, deptype="link"), spec.dependencies(deptype="run") ) if not s.external - } + ] + return llnl.util.lang.dedupe(deps, key=lambda s: s.dag_hash()) def get_buildinfo_dict(spec): @@ -736,7 +754,7 @@ def get_buildinfo_dict(spec): "relocate_binaries": manifest["binary_to_relocate"], "relocate_links": manifest["link_to_relocate"], "hardlinks_deduped": manifest["hardlinks_deduped"], - "hash_to_prefix": hashes_to_prefixes(spec), + "hash_to_prefix": {d.dag_hash(): str(d.prefix) for d in deps_to_relocate(spec)}, } @@ -1631,7 +1649,6 @@ def _oci_push( Dict[str, spack.oci.oci.Blob], List[Tuple[Spec, BaseException]], ]: - # Spec dag hash -> blob checksums: Dict[str, spack.oci.oci.Blob] = {} @@ -2201,11 +2218,36 @@ def relocate_package(spec): # First match specific prefix paths. Possibly the *local* install prefix # of some dependency is in an upstream, so we cannot assume the original # spack store root can be mapped uniformly to the new spack store root. - for dag_hash, new_dep_prefix in hashes_to_prefixes(spec).items(): - if dag_hash in hash_to_old_prefix: - old_dep_prefix = hash_to_old_prefix[dag_hash] - prefix_to_prefix_bin[old_dep_prefix] = new_dep_prefix - prefix_to_prefix_text[old_dep_prefix] = new_dep_prefix + # + # If the spec is spliced, we need to handle the simultaneous mapping + # from the old install_tree to the new install_tree and from the build_spec + # to the spliced spec. + # Because foo.build_spec is foo for any non-spliced spec, we can simplify + # by checking for spliced-in nodes by checking for nodes not in the build_spec + # without any explicit check for whether the spec is spliced. + # An analog in this algorithm is any spec that shares a name or provides the same virtuals + # in the context of the relevant root spec. This ensures that the analog for a spec s + # is the spec that s replaced when we spliced. + relocation_specs = deps_to_relocate(spec) + build_spec_ids = set(id(s) for s in spec.build_spec.traverse(deptype=dt.ALL & ~dt.BUILD)) + for s in relocation_specs: + analog = s + if id(s) not in build_spec_ids: + analogs = [ + d + for d in spec.build_spec.traverse(deptype=dt.ALL & ~dt.BUILD) + if s._splice_match(d, self_root=spec, other_root=spec.build_spec) + ] + if analogs: + # Prefer same-name analogs and prefer higher versions + # This matches the preferences in Spec.splice, so we will find same node + analog = max(analogs, key=lambda a: (a.name == s.name, a.version)) + + lookup_dag_hash = analog.dag_hash() + if lookup_dag_hash in hash_to_old_prefix: + old_dep_prefix = hash_to_old_prefix[lookup_dag_hash] + prefix_to_prefix_bin[old_dep_prefix] = str(s.prefix) + prefix_to_prefix_text[old_dep_prefix] = str(s.prefix) # Only then add the generic fallback of install prefix -> install prefix. prefix_to_prefix_text[old_prefix] = new_prefix @@ -2543,10 +2585,10 @@ def install_root_node(spec, unsigned=False, force=False, sha256=None): warnings.warn("Package for spec {0} already installed.".format(spec.format())) return - download_result = download_tarball(spec, unsigned) + download_result = download_tarball(spec.build_spec, unsigned) if not download_result: msg = 'download of binary cache file for spec "{0}" failed' - raise RuntimeError(msg.format(spec.format())) + raise RuntimeError(msg.format(spec.build_spec.format())) if sha256: checker = spack.util.crypto.Checker(sha256) @@ -2565,6 +2607,11 @@ def install_root_node(spec, unsigned=False, force=False, sha256=None): with spack.util.path.filter_padding(): tty.msg('Installing "{0}" from a buildcache'.format(spec.format())) extract_tarball(spec, download_result, force) + spec.package.windows_establish_runtime_linkage() + if spec.spliced: # overwrite old metadata with new + spack.store.STORE.layout.write_spec( + spec, spack.store.STORE.layout.spec_file_path(spec) + ) spack.hooks.post_install(spec, False) spack.store.STORE.db.add(spec) diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index 4f5cd14df8d..8837e2cecd8 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -2165,6 +2165,13 @@ def _concrete_specs_dict(self): # Assumes no legacy formats, since this was just created. spec_dict[ht.dag_hash.name] = s.dag_hash() concrete_specs[s.dag_hash()] = spec_dict + + if s.build_spec is not s: + for d in s.build_spec.traverse(): + build_spec_dict = d.node_dict_with_hashes(hash=ht.dag_hash) + build_spec_dict[ht.dag_hash.name] = d.dag_hash() + concrete_specs[d.dag_hash()] = build_spec_dict + return concrete_specs def _concrete_roots_dict(self): @@ -2324,7 +2331,7 @@ def filter_specs(self, reader, json_specs_by_hash, order_concretized): specs_by_hash[lockfile_key] = spec # Second pass: For each spec, get its dependencies from the node dict - # and add them to the spec + # and add them to the spec, including build specs for lockfile_key, node_dict in json_specs_by_hash.items(): name, data = reader.name_and_data(node_dict) for _, dep_hash, deptypes, _, virtuals in reader.dependencies_from_node_dict(data): @@ -2332,6 +2339,10 @@ def filter_specs(self, reader, json_specs_by_hash, order_concretized): specs_by_hash[dep_hash], depflag=dt.canonicalize(deptypes), virtuals=virtuals ) + if "build_spec" in node_dict: + _, bhash, _ = reader.extract_build_spec_info_from_node_dict(node_dict) + specs_by_hash[lockfile_key]._build_spec = specs_by_hash[bhash] + # Traverse the root specs one at a time in the order they appear. # The first time we see each DAG hash, that's the one we want to # keep. This is only required as long as we support older lockfile diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index e4a5c33dd33..f1b33f1660a 100644 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -2,8 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -""" -This module encapsulates package installation functionality. +"""This module encapsulates package installation functionality. The PackageInstaller coordinates concurrent builds of packages for the same Spack instance by leveraging the dependency DAG and file system locks. It @@ -17,13 +16,14 @@ File system locks enable coordination such that no two processes attempt to build the same or a failed dependency package. -Failures to install dependency packages result in removal of their dependents' -build tasks from the current process. A failure file is also written (and -locked) so that other processes can detect the failure and adjust their build -tasks accordingly. +If a dependency package fails to install, its dependents' tasks will be +removed from the installing process's queue. A failure file is also written +and locked. Other processes use this file to detect the failure and dequeue +its dependents. This module supports the coordination of local and distributed concurrent installations of packages in a Spack instance. + """ import copy @@ -59,6 +59,7 @@ import spack.package_base import spack.package_prefs as prefs import spack.repo +import spack.rewiring import spack.spec import spack.store import spack.util.executable @@ -110,13 +111,22 @@ def _write_timer_json(pkg, timer, cache): return -class InstallAction: +class ExecuteResult(enum.Enum): + # Task succeeded + SUCCESS = enum.auto() + # Task failed + FAILED = enum.auto() + # Task is missing build spec and will be requeued + MISSING_BUILD_SPEC = enum.auto() + + +class InstallAction(enum.Enum): #: Don't perform an install - NONE = 0 + NONE = enum.auto() #: Do a standard install - INSTALL = 1 + INSTALL = enum.auto() #: Do an overwrite install - OVERWRITE = 2 + OVERWRITE = enum.auto() class InstallStatus: @@ -440,7 +450,7 @@ def _process_binary_cache_tarball( """ with timer.measure("fetch"): download_result = binary_distribution.download_tarball( - pkg.spec, unsigned, mirrors_for_spec + pkg.spec.build_spec, unsigned, mirrors_for_spec ) if download_result is None: @@ -451,6 +461,11 @@ def _process_binary_cache_tarball( with timer.measure("install"), spack.util.path.filter_padding(): binary_distribution.extract_tarball(pkg.spec, download_result, force=False, timer=timer) + if pkg.spec.spliced: # overwrite old metadata with new + spack.store.STORE.layout.write_spec( + pkg.spec, spack.store.STORE.layout.spec_file_path(pkg.spec) + ) + if hasattr(pkg, "_post_buildcache_install_hook"): pkg._post_buildcache_install_hook() @@ -686,7 +701,7 @@ def log(pkg: "spack.package_base.PackageBase") -> None: def package_id(spec: "spack.spec.Spec") -> str: """A "unique" package identifier for installation purposes - The identifier is used to track build tasks, locks, install, and + The identifier is used to track tasks, locks, install, and failure statuses. The identifier needs to distinguish between combinations of compilers @@ -745,14 +760,14 @@ def __init__(self, pkg: "spack.package_base.PackageBase", install_args: dict): ) def __repr__(self) -> str: - """Returns a formal representation of the build request.""" + """Return a formal representation of the build request.""" rep = f"{self.__class__.__name__}(" for attr, value in self.__dict__.items(): rep += f"{attr}={value.__repr__()}, " return f"{rep.strip(', ')})" def __str__(self) -> str: - """Returns a printable version of the build request.""" + """Return a printable version of the build request.""" return f"package={self.pkg.name}, install_args={self.install_args}" def _add_default_args(self) -> None: @@ -849,8 +864,8 @@ def traverse_dependencies(self, spec=None, visited=None) -> Iterator["spack.spec yield dep -class BuildTask: - """Class for representing the build task for a package.""" +class Task: + """Base class for representing a task for a package.""" def __init__( self, @@ -864,13 +879,11 @@ def __init__( installed: Set[str] = set(), ): """ - Instantiate a build task for a package. + Instantiate a task for a package. Args: - pkg: the package to be built and installed and whose spec is - concrete + pkg: the package to be built and installed request: the associated install request - compiler: whether task is for a bootstrap compiler start: the initial start time for the package, in seconds attempts: the number of attempts to install the package, which should be 0 when the task is initially instantiated @@ -909,12 +922,12 @@ def __init__( # The initial build task cannot have status "removed". if attempts == 0 and status == BuildStatus.REMOVED: raise spack.error.InstallError( - f"Cannot create a build task for {self.pkg_id} with status '{status}'", pkg=pkg + f"Cannot create a task for {self.pkg_id} with status '{status}'", pkg=pkg ) self.status = status - # Package is associated with a bootstrap compiler - self.compiler = compiler + # cache the PID, which is used for distributed build messages in self.execute + self.pid = os.getpid() # The initial start time for processing the spec self.start = start @@ -945,7 +958,7 @@ def __init__( ) # List of uninstalled dependencies, which is used to establish - # the priority of the build task. + # the priority of the task. self.uninstalled_deps = set( pkg_id for pkg_id in self.dependencies if pkg_id not in installed ) @@ -954,6 +967,13 @@ def __init__( self.attempts = attempts self._update() + def execute(self, install_status: InstallStatus) -> ExecuteResult: + """Execute the work of this task. + + The ``install_status`` is an ``InstallStatus`` object used to format progress reporting for + this task in the context of the full ``BuildRequest``.""" + raise NotImplementedError + def __eq__(self, other): return self.key == other.key @@ -973,14 +993,14 @@ def __ne__(self, other): return self.key != other.key def __repr__(self) -> str: - """Returns a formal representation of the build task.""" + """Returns a formal representation of the task.""" rep = f"{self.__class__.__name__}(" for attr, value in self.__dict__.items(): rep += f"{attr}={value.__repr__()}, " return f"{rep.strip(', ')})" def __str__(self) -> str: - """Returns a printable version of the build task.""" + """Returns a printable version of the task.""" dependencies = f"#dependencies={len(self.dependencies)}" return "priority={0}, status={1}, start={2}, {3}".format( self.priority, self.status, self.start, dependencies @@ -997,8 +1017,7 @@ def _update(self) -> None: def add_dependent(self, pkg_id: str) -> None: """ - Ensure the dependent package id is in the task's list so it will be - properly updated when this package is installed. + Ensure the package is in this task's ``dependents`` list. Args: pkg_id: package identifier of the dependent package @@ -1007,6 +1026,20 @@ def add_dependent(self, pkg_id: str) -> None: tty.debug(f"Adding {pkg_id} as a dependent of {self.pkg_id}") self.dependents.add(pkg_id) + def add_dependency(self, pkg_id, installed=False): + """ + Ensure the package is in this task's ``dependencies`` list. + + Args: + pkg_id (str): package identifier of the dependency package + installed (bool): install status of the dependency package + """ + if pkg_id != self.pkg_id and pkg_id not in self.dependencies: + tty.debug(f"Adding {pkg_id} as a depencency of {self.pkg_id}") + self.dependencies.add(pkg_id) + if not installed: + self.uninstalled_deps.add(pkg_id) + def flag_installed(self, installed: List[str]) -> None: """ Ensure the dependency is not considered to still be uninstalled. @@ -1023,6 +1056,39 @@ def flag_installed(self, installed: List[str]) -> None: level=2, ) + def _setup_install_dir(self, pkg: "spack.package_base.PackageBase") -> None: + """ + Create and ensure proper access controls for the install directory. + Write a small metadata file with the current spack environment. + + Args: + pkg: the package to be built and installed + """ + # Move to a module level method. + if not os.path.exists(pkg.spec.prefix): + path = spack.util.path.debug_padded_filter(pkg.spec.prefix) + tty.debug(f"Creating the installation directory {path}") + spack.store.STORE.layout.create_install_directory(pkg.spec) + else: + # Set the proper group for the prefix + group = prefs.get_package_group(pkg.spec) + if group: + fs.chgrp(pkg.spec.prefix, group) + + # Set the proper permissions. + # This has to be done after group because changing groups blows + # away the sticky group bit on the directory + mode = os.stat(pkg.spec.prefix).st_mode + perms = prefs.get_package_dir_permissions(pkg.spec) + if mode != perms: + os.chmod(pkg.spec.prefix, perms) + + # Ensure the metadata path exists as well + fs.mkdirp(spack.store.STORE.layout.metadata_path(pkg.spec), mode=perms) + + # Always write host environment - we assume this can change + spack.store.STORE.layout.write_host_environment(pkg.spec) + @property def explicit(self) -> bool: return self.pkg.spec.dag_hash() in self.request.install_args.get("explicit", []) @@ -1053,7 +1119,7 @@ def key(self) -> Tuple[int, int]: """The key is the tuple (# uninstalled dependencies, sequence).""" return (self.priority, self.sequence) - def next_attempt(self, installed) -> "BuildTask": + def next_attempt(self, installed) -> "Task": """Create a new, updated task for the next installation attempt.""" task = copy.copy(self) task._update() @@ -1067,6 +1133,100 @@ def priority(self): return len(self.uninstalled_deps) +class BuildTask(Task): + """Class for representing a build task for a package.""" + + def execute(self, install_status): + """ + Perform the installation of the requested spec and/or dependency + represented by the build task. + """ + install_args = self.request.install_args + tests = install_args.get("tests") + unsigned = install_args.get("unsigned") + + pkg, pkg_id = self.pkg, self.pkg_id + + tty.msg(install_msg(pkg_id, self.pid, install_status)) + self.start = self.start or time.time() + self.status = BuildStatus.INSTALLING + + # Use the binary cache if requested + if self.use_cache: + if _install_from_cache(pkg, self.explicit, unsigned): + return ExecuteResult.SUCCESS + elif self.cache_only: + raise spack.error.InstallError( + "No binary found when cache-only was specified", pkg=pkg + ) + else: + tty.msg(f"No binary for {pkg_id} found: installing from source") + + pkg.run_tests = tests is True or tests and pkg.name in tests + + # hook that allows tests to inspect the Package before installation + # see unit_test_check() docs. + if not pkg.unit_test_check(): + return ExecuteResult.FAILED + + try: + # Create stage object now and let it be serialized for the child process. That + # way monkeypatch in tests works correctly. + pkg.stage + + self._setup_install_dir(pkg) + + # Create a child process to do the actual installation. + # Preserve verbosity settings across installs. + spack.package_base.PackageBase._verbose = spack.build_environment.start_build_process( + pkg, build_process, install_args + ) + + # Note: PARENT of the build process adds the new package to + # the database, so that we don't need to re-read from file. + spack.store.STORE.db.add(pkg.spec, explicit=self.explicit) + except spack.error.StopPhase as e: + # A StopPhase exception means that do_install was asked to + # stop early from clients, and is not an error at this point + pid = f"{self.pid}: " if tty.show_pid() else "" + tty.debug(f"{pid}{str(e)}") + tty.debug(f"Package stage directory: {pkg.stage.source_path}") + return ExecuteResult.SUCCESS + + +class RewireTask(Task): + """Class for representing a rewire task for a package.""" + + def execute(self, install_status): + """Execute rewire task + + Rewire tasks are executed by either rewiring self.package.spec.build_spec that is already + installed or downloading and rewiring a binary for the it. + + If not available installed or as binary, return ExecuteResult.MISSING_BUILD_SPEC. + This will prompt the Installer to requeue the task with a dependency on the BuildTask + to install self.pkg.spec.build_spec + """ + oldstatus = self.status + self.status = BuildStatus.INSTALLING + tty.msg(install_msg(self.pkg_id, self.pid, install_status)) + self.start = self.start or time.time() + if not self.pkg.spec.build_spec.installed: + try: + install_args = self.request.install_args + unsigned = install_args.get("unsigned") + _process_binary_cache_tarball(self.pkg, explicit=self.explicit, unsigned=unsigned) + _print_installed_pkg(self.pkg.prefix) + return ExecuteResult.SUCCESS + except BaseException as e: + tty.error(f"Failed to rewire {self.pkg.spec} from binary. {e}") + self.status = oldstatus + return ExecuteResult.MISSING_BUILD_SPEC + spack.rewiring.rewire_node(self.pkg.spec, self.explicit) + _print_installed_pkg(self.pkg.prefix) + return ExecuteResult.SUCCESS + + class PackageInstaller: """ Class for managing the install process for a Spack instance based on a bottom-up DAG approach. @@ -1160,11 +1320,11 @@ def __init__( # List of build requests self.build_requests = [BuildRequest(pkg, install_args) for pkg in packages] - # Priority queue of build tasks - self.build_pq: List[Tuple[Tuple[int, int], BuildTask]] = [] + # Priority queue of tasks + self.build_pq: List[Tuple[Tuple[int, int], Task]] = [] - # Mapping of unique package ids to build task - self.build_tasks: Dict[str, BuildTask] = {} + # Mapping of unique package ids to task + self.build_tasks: Dict[str, Task] = {} # Cache of package locks for failed packages, keyed on package's ids self.failed: Dict[str, Optional[lk.Lock]] = {} @@ -1185,6 +1345,9 @@ def __init__( # fast then that option applies to all build requests. self.fail_fast = False + # Initializing all_dependencies to empty. This will be set later in _init_queue. + self.all_dependencies: Dict[str, Set[str]] = {} + def __repr__(self) -> str: """Returns a formal representation of the package installer.""" rep = f"{self.__class__.__name__}(" @@ -1204,25 +1367,18 @@ def _add_init_task( self, pkg: "spack.package_base.PackageBase", request: BuildRequest, - is_compiler: bool, all_deps: Dict[str, Set[str]], ) -> None: """ - Creates and queus the initial build task for the package. + Creates and queues the initial task for the package. Args: pkg: the package to be built and installed request: the associated install request - is_compiler: whether task is for a bootstrap compiler all_deps: dictionary of all dependencies and associated dependents """ - task = BuildTask( - pkg, - request=request, - compiler=is_compiler, - status=BuildStatus.QUEUED, - installed=self.installed, - ) + cls = RewireTask if pkg.spec.spliced else BuildTask + task = cls(pkg, request=request, status=BuildStatus.QUEUED, installed=self.installed) for dep_id in task.dependencies: all_deps[dep_id].add(package_id(pkg.spec)) @@ -1296,7 +1452,7 @@ def _check_deps_status(self, request: BuildRequest) -> None: else: lock.release_read() - def _prepare_for_install(self, task: BuildTask) -> None: + def _prepare_for_install(self, task: Task) -> None: """ Check the database and leftover installation directories/files and prepare for a new install attempt for an uninstalled package. @@ -1304,7 +1460,7 @@ def _prepare_for_install(self, task: BuildTask) -> None: and ensuring the database is up-to-date. Args: - task (BuildTask): the build task whose associated package is + task: the task whose associated package is being checked """ install_args = task.request.install_args @@ -1355,7 +1511,7 @@ def _prepare_for_install(self, task: BuildTask) -> None: spack.store.STORE.db.update_explicit(task.pkg.spec, True) def _cleanup_all_tasks(self) -> None: - """Cleanup all build tasks to include releasing their locks.""" + """Cleanup all tasks to include releasing their locks.""" for pkg_id in self.locks: self._release_lock(pkg_id) @@ -1387,7 +1543,7 @@ def _cleanup_failed(self, pkg_id: str) -> None: def _cleanup_task(self, pkg: "spack.package_base.PackageBase") -> None: """ - Cleanup the build task for the spec + Cleanup the task for the spec Args: pkg: the package being installed @@ -1459,7 +1615,7 @@ def _ensure_locked( if lock_type == "read": # Wait until the other process finishes if there are no more - # build tasks with priority 0 (i.e., with no uninstalled + # tasks with priority 0 (i.e., with no uninstalled # dependencies). no_p0 = len(self.build_tasks) == 0 or not self._next_is_pri0() timeout = None if no_p0 else 3.0 @@ -1511,6 +1667,33 @@ def _ensure_locked( self.locks[pkg_id] = (lock_type, lock) return self.locks[pkg_id] + def _requeue_with_build_spec_tasks(self, task): + """Requeue the task and its missing build spec dependencies""" + # Full install of the build_spec is necessary because it didn't already exist somewhere + spec = task.pkg.spec + for dep in spec.build_spec.traverse(): + dep_pkg = dep.package + + dep_id = package_id(dep) + if dep_id not in self.build_tasks: + self._add_init_task(dep_pkg, task.request, self.all_dependencies) + + # Clear any persistent failure markings _unless_ they are + # associated with another process in this parallel build + # of the spec. + spack.store.STORE.failure_tracker.clear(dep, force=False) + + # Queue the build spec. + build_pkg_id = package_id(spec.build_spec) + build_spec_task = self.build_tasks[build_pkg_id] + spec_pkg_id = package_id(spec) + spec_task = task.next_attempt(self.installed) + spec_task.status = BuildStatus.QUEUED + # Convey a build spec as a dependency of a deployed spec. + build_spec_task.add_dependent(spec_pkg_id) + spec_task.add_dependency(build_pkg_id) + self._push_task(spec_task) + def _add_tasks(self, request: BuildRequest, all_deps): """Add tasks to the priority queue for the given build request. @@ -1540,7 +1723,7 @@ def _add_tasks(self, request: BuildRequest, all_deps): dep_id = package_id(dep) if dep_id not in self.build_tasks: - self._add_init_task(dep_pkg, request, is_compiler=False, all_deps=all_deps) + self._add_init_task(dep_pkg, request, all_deps=all_deps) # Clear any persistent failure markings _unless_ they are # associated with another process in this parallel build @@ -1558,80 +1741,29 @@ def _add_tasks(self, request: BuildRequest, all_deps): self._check_deps_status(request) # Now add the package itself, if appropriate - self._add_init_task(request.pkg, request, is_compiler=False, all_deps=all_deps) + self._add_init_task(request.pkg, request, all_deps=all_deps) # Ensure if one request is to fail fast then all requests will. fail_fast = bool(request.install_args.get("fail_fast")) self.fail_fast = self.fail_fast or fail_fast - def _install_task(self, task: BuildTask, install_status: InstallStatus) -> None: + def _install_task(self, task: Task, install_status: InstallStatus) -> None: """ Perform the installation of the requested spec and/or dependency - represented by the build task. + represented by the task. Args: - task: the installation build task for a package + task: the installation task for a package install_status: the installation status for the package""" - - explicit = task.explicit - install_args = task.request.install_args - cache_only = task.cache_only - use_cache = task.use_cache - tests = install_args.get("tests", False) - assert isinstance(tests, (bool, list)) # make mypy happy. - unsigned: Optional[bool] = install_args.get("unsigned") - - pkg, pkg_id = task.pkg, task.pkg_id - - tty.msg(install_msg(pkg_id, self.pid, install_status)) - task.start = task.start or time.time() - task.status = BuildStatus.INSTALLING - - # Use the binary cache if requested - if use_cache: - if _install_from_cache(pkg, explicit, unsigned): - self._update_installed(task) - return - elif cache_only: - raise spack.error.InstallError( - "No binary found when cache-only was specified", pkg=pkg - ) - else: - tty.msg(f"No binary for {pkg_id} found: installing from source") - - pkg.run_tests = tests if isinstance(tests, bool) else pkg.name in tests - - # hook that allows tests to inspect the Package before installation - # see unit_test_check() docs. - if not pkg.unit_test_check(): - return - - try: - self._setup_install_dir(pkg) - - # Create stage object now and let it be serialized for the child process. That - # way monkeypatch in tests works correctly. - pkg.stage - - # Create a child process to do the actual installation. - # Preserve verbosity settings across installs. - spack.package_base.PackageBase._verbose = spack.build_environment.start_build_process( - pkg, build_process, install_args - ) - # Note: PARENT of the build process adds the new package to - # the database, so that we don't need to re-read from file. - spack.store.STORE.db.add(pkg.spec, explicit=explicit) - - except spack.error.StopPhase as e: - # A StopPhase exception means that the installer was asked to stop early from clients, - # and is not an error at this point - pid = f"{self.pid}: " if tty.show_pid() else "" - tty.debug(f"{pid}{str(e)}") - tty.debug(f"Package stage directory: {pkg.stage.source_path}") + rc = task.execute(install_status) + if rc == ExecuteResult.MISSING_BUILD_SPEC: + self._requeue_with_build_spec_tasks(task) + else: # if rc == ExecuteResult.SUCCESS or rc == ExecuteResult.FAILED + self._update_installed(task) def _next_is_pri0(self) -> bool: """ - Determine if the next build task has priority 0 + Determine if the next task has priority 0 Return: True if it does, False otherwise @@ -1641,9 +1773,9 @@ def _next_is_pri0(self) -> bool: task = self.build_pq[0][1] return task.priority == 0 - def _pop_task(self) -> Optional[BuildTask]: + def _pop_task(self) -> Optional[Task]: """ - Remove and return the lowest priority build task. + Remove and return the lowest priority task. Source: Variant of function at docs.python.org/2/library/heapq.html """ @@ -1655,17 +1787,17 @@ def _pop_task(self) -> Optional[BuildTask]: return task return None - def _push_task(self, task: BuildTask) -> None: + def _push_task(self, task: Task) -> None: """ - Push (or queue) the specified build task for the package. + Push (or queue) the specified task for the package. Source: Customization of "add_task" function at docs.python.org/2/library/heapq.html Args: - task: the installation build task for a package + task: the installation task for a package """ - msg = "{0} a build task for {1} with status '{2}'" + msg = "{0} a task for {1} with status '{2}'" skip = "Skipping requeue of task for {0}: {1}" # Ensure do not (re-)queue installed or failed packages whose status @@ -1678,7 +1810,7 @@ def _push_task(self, task: BuildTask) -> None: tty.debug(skip.format(task.pkg_id, "failed")) return - # Remove any associated build task since its sequence will change + # Remove any associated task since its sequence will change self._remove_task(task.pkg_id) desc = ( "Queueing" if task.attempts == 1 else f"Requeueing ({ordinal(task.attempts)} attempt)" @@ -1713,9 +1845,9 @@ def _release_lock(self, pkg_id: str) -> None: except Exception as exc: tty.warn(err.format(exc.__class__.__name__, ltype, pkg_id, str(exc))) - def _remove_task(self, pkg_id: str) -> Optional[BuildTask]: + def _remove_task(self, pkg_id: str) -> Optional[Task]: """ - Mark the existing package build task as being removed and return it. + Mark the existing package task as being removed and return it. Raises KeyError if not found. Source: Variant of function at docs.python.org/2/library/heapq.html @@ -1724,19 +1856,19 @@ def _remove_task(self, pkg_id: str) -> Optional[BuildTask]: pkg_id: identifier for the package to be removed """ if pkg_id in self.build_tasks: - tty.debug(f"Removing build task for {pkg_id} from list") + tty.debug(f"Removing task for {pkg_id} from list") task = self.build_tasks.pop(pkg_id) task.status = BuildStatus.REMOVED return task else: return None - def _requeue_task(self, task: BuildTask, install_status: InstallStatus) -> None: + def _requeue_task(self, task: Task, install_status: InstallStatus) -> None: """ Requeues a task that appears to be in progress by another process. Args: - task (BuildTask): the installation build task for a package + task (Task): the installation task for a package """ if task.status not in [BuildStatus.INSTALLED, BuildStatus.INSTALLING]: tty.debug( @@ -1748,47 +1880,15 @@ def _requeue_task(self, task: BuildTask, install_status: InstallStatus) -> None: new_task.status = BuildStatus.INSTALLING self._push_task(new_task) - def _setup_install_dir(self, pkg: "spack.package_base.PackageBase") -> None: - """ - Create and ensure proper access controls for the install directory. - Write a small metadata file with the current spack environment. - - Args: - pkg: the package to be built and installed - """ - if not os.path.exists(pkg.spec.prefix): - path = spack.util.path.debug_padded_filter(pkg.spec.prefix) - tty.debug(f"Creating the installation directory {path}") - spack.store.STORE.layout.create_install_directory(pkg.spec) - else: - # Set the proper group for the prefix - group = prefs.get_package_group(pkg.spec) - if group: - fs.chgrp(pkg.spec.prefix, group) - - # Set the proper permissions. - # This has to be done after group because changing groups blows - # away the sticky group bit on the directory - mode = os.stat(pkg.spec.prefix).st_mode - perms = prefs.get_package_dir_permissions(pkg.spec) - if mode != perms: - os.chmod(pkg.spec.prefix, perms) - - # Ensure the metadata path exists as well - fs.mkdirp(spack.store.STORE.layout.metadata_path(pkg.spec), mode=perms) - - # Always write host environment - we assume this can change - spack.store.STORE.layout.write_host_environment(pkg.spec) - def _update_failed( - self, task: BuildTask, mark: bool = False, exc: Optional[BaseException] = None + self, task: Task, mark: bool = False, exc: Optional[BaseException] = None ) -> None: """ Update the task and transitive dependents as failed; optionally mark - externally as failed; and remove associated build tasks. + externally as failed; and remove associated tasks. Args: - task: the build task for the failed package + task: the task for the failed package mark: ``True`` if the package and its dependencies are to be marked as "failed", otherwise, ``False`` exc: optional exception if associated with the failure @@ -1806,19 +1906,19 @@ def _update_failed( if dep_id in self.build_tasks: tty.warn(f"Skipping build of {dep_id} since {pkg_id} failed") # Ensure the dependent's uninstalled dependents are - # up-to-date and their build tasks removed. + # up-to-date and their tasks removed. dep_task = self.build_tasks[dep_id] self._update_failed(dep_task, mark) self._remove_task(dep_id) else: - tty.debug(f"No build task for {dep_id} to skip since {pkg_id} failed") + tty.debug(f"No task for {dep_id} to skip since {pkg_id} failed") - def _update_installed(self, task: BuildTask) -> None: + def _update_installed(self, task: Task) -> None: """ - Mark the task as installed and ensure dependent build tasks are aware. + Mark the task as installed and ensure dependent tasks are aware. Args: - task (BuildTask): the build task for the installed package + task: the task for the installed package """ task.status = BuildStatus.INSTALLED self._flag_installed(task.pkg, task.dependents) @@ -1827,7 +1927,7 @@ def _flag_installed( self, pkg: "spack.package_base.PackageBase", dependent_ids: Optional[Set[str]] = None ) -> None: """ - Flag the package as installed and ensure known by all build tasks of + Flag the package as installed and ensure known by all tasks of known dependents. Args: @@ -1855,7 +1955,7 @@ def _flag_installed( dep_task = self.build_tasks[dep_id] self._push_task(dep_task.next_attempt(self.installed)) else: - tty.debug(f"{dep_id} has no build task to update for {pkg_id}'s success") + tty.debug(f"{dep_id} has no task to update for {pkg_id}'s success") def _init_queue(self) -> None: """Initialize the build queue from the list of build requests.""" @@ -1874,8 +1974,9 @@ def _init_queue(self) -> None: task = self.build_tasks[dep_id] for dependent_id in dependents.difference(task.dependents): task.add_dependent(dependent_id) + self.all_dependencies = all_dependencies - def _install_action(self, task: BuildTask) -> int: + def _install_action(self, task: Task) -> InstallAction: """ Determine whether the installation should be overwritten (if it already exists) or skipped (if has been handled by another process). @@ -2023,7 +2124,6 @@ def install(self) -> None: self._update_installed(task) path = spack.util.path.debug_padded_filter(pkg.prefix) _print_installed_pkg(path) - else: # At this point we've failed to get a write or a read # lock, which means another process has taken a write @@ -2063,8 +2163,6 @@ def install(self) -> None: # wrapper -- silence mypy OverwriteInstall(self, spack.store.STORE.db, task, install_status).install() # type: ignore[arg-type] # noqa: E501 - self._update_installed(task) - # If we installed then we should keep the prefix stop_before_phase = getattr(pkg, "stop_before_phase", None) last_phase = getattr(pkg, "last_phase", None) @@ -2108,7 +2206,9 @@ def install(self) -> None: ) # Terminate if requested to do so on the first failure. if self.fail_fast: - raise spack.error.InstallError(f"{fail_fast_err}: {str(exc)}", pkg=pkg) + raise spack.error.InstallError( + f"{fail_fast_err}: {str(exc)}", pkg=pkg + ) from exc # Terminate when a single build request has failed, or summarize errors later. if task.is_build_request: @@ -2124,7 +2224,8 @@ def install(self) -> None: # Perform basic task cleanup for the installed spec to # include downgrading the write to a read lock - self._cleanup_task(pkg) + if pkg.spec.installed: + self._cleanup_task(pkg) # Cleanup, which includes releasing all of the read locks self._cleanup_all_tasks() @@ -2423,7 +2524,7 @@ def __init__( self, installer: PackageInstaller, database: spack.database.Database, - task: BuildTask, + task: Task, install_status: InstallStatus, ): self.installer = installer diff --git a/lib/spack/spack/rewiring.py b/lib/spack/spack/rewiring.py index 3b1a9ba451a..ae7eb0a8d85 100644 --- a/lib/spack/spack/rewiring.py +++ b/lib/spack/spack/rewiring.py @@ -12,6 +12,7 @@ from llnl.util.symlink import readlink, symlink import spack.binary_distribution as bindist +import spack.deptypes as dt import spack.error import spack.hooks import spack.platforms @@ -52,6 +53,7 @@ def rewire_node(spec, explicit): its subgraph. Binaries, text, and links are all changed in accordance with the splice. The resulting package is then 'installed.'""" tempdir = tempfile.mkdtemp() + # copy anything installed to a temporary directory shutil.copytree(spec.build_spec.prefix, os.path.join(tempdir, spec.dag_hash())) @@ -59,8 +61,21 @@ def rewire_node(spec, explicit): # compute prefix-to-prefix for every node from the build spec to the spliced # spec prefix_to_prefix = OrderedDict({spec.build_spec.prefix: spec.prefix}) - for build_dep in spec.build_spec.traverse(root=False): - prefix_to_prefix[build_dep.prefix] = spec[build_dep.name].prefix + build_spec_ids = set(id(s) for s in spec.build_spec.traverse(deptype=dt.ALL & ~dt.BUILD)) + for s in bindist.deps_to_relocate(spec): + analog = s + if id(s) not in build_spec_ids: + analogs = [ + d + for d in spec.build_spec.traverse(deptype=dt.ALL & ~dt.BUILD) + if s._splice_match(d, self_root=spec, other_root=spec.build_spec) + ] + if analogs: + # Prefer same-name analogs and prefer higher versions + # This matches the preferences in Spec.splice, so we will find same node + analog = max(analogs, key=lambda a: (a.name == s.name, a.version)) + + prefix_to_prefix[analog.prefix] = s.prefix manifest = bindist.get_buildfile_manifest(spec.build_spec) platform = spack.platforms.by_name(spec.platform) diff --git a/lib/spack/spack/schema/concretizer.py b/lib/spack/spack/schema/concretizer.py index e1c4d64ce1c..0b222d923e1 100644 --- a/lib/spack/spack/schema/concretizer.py +++ b/lib/spack/spack/schema/concretizer.py @@ -55,6 +55,26 @@ "unify": { "oneOf": [{"type": "boolean"}, {"type": "string", "enum": ["when_possible"]}] }, + "splice": { + "type": "object", + "additionalProperties": False, + "properties": { + "explicit": { + "type": "array", + "default": [], + "items": { + "type": "object", + "required": ["target", "replacement"], + "additionalProperties": False, + "properties": { + "target": {"type": "string"}, + "replacement": {"type": "string"}, + "transitive": {"type": "boolean", "default": False}, + }, + }, + } + }, + }, "duplicates": { "type": "object", "properties": { diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 3fd8b9cc8d8..92734e9afd5 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -523,7 +523,12 @@ def _compute_specs_from_answer_set(self): node = SpecBuilder.make_node(pkg=providers[0]) candidate = answer.get(node) - if candidate and candidate.satisfies(input_spec): + if candidate and candidate.build_spec.satisfies(input_spec): + if not candidate.satisfies(input_spec): + tty.warn( + "explicit splice configuration has caused the concretized spec" + f" {candidate} not to satisfy the input spec {input_spec}" + ) self._concrete_specs.append(answer[node]) self._concrete_specs_by_input[input_spec] = answer[node] else: @@ -3814,7 +3819,33 @@ def build_specs(self, function_tuples): spack.version.git_ref_lookup.GitRefLookup(spec.fullname) ) - return self._specs + specs = self.execute_explicit_splices() + + return specs + + def execute_explicit_splices(self): + splice_config = spack.config.CONFIG.get("concretizer:splice:explicit", []) + splice_triples = [] + for splice_set in splice_config: + target = splice_set["target"] + replacement = spack.spec.Spec(splice_set["replacement"]) + assert replacement.abstract_hash + replacement.replace_hash() + transitive = splice_set.get("transitive", False) + splice_triples.append((target, replacement, transitive)) + + specs = {} + for key, spec in self._specs.items(): + current_spec = spec + for target, replacement, transitive in splice_triples: + if target in current_spec: + # matches root or non-root + # e.g. mvapich2%gcc + current_spec = current_spec.splice(replacement, transitive) + new_key = NodeArgument(id=key.id, pkg=current_spec.name) + specs[new_key] = current_spec + + return specs def _develop_specs_from_env(spec, env): diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 030bb50913f..d64507a9a17 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -4183,7 +4183,7 @@ def _virtuals_provided(self, root): """Return set of virtuals provided by self in the context of root""" if root is self: # Could be using any virtual the package can provide - return set(self.package.virtuals_provided) + return set(v.name for v in self.package.virtuals_provided) hashes = [s.dag_hash() for s in root.traverse()] in_edges = set( @@ -4206,7 +4206,7 @@ def _splice_match(self, other, self_root, other_root): return True return bool( - self._virtuals_provided(self_root) + bool(self._virtuals_provided(self_root)) and self._virtuals_provided(self_root) <= other._virtuals_provided(other_root) ) @@ -4226,29 +4226,24 @@ def _splice_detach_and_add_dependents(self, replacement, context): # Only set it if it hasn't been spliced before ancestor._build_spec = ancestor._build_spec or ancestor.copy() ancestor.clear_cached_hashes(ignore=(ht.package_hash.attr,)) + for edge in ancestor.edges_to_dependencies(depflag=dt.BUILD): + if edge.depflag & ~dt.BUILD: + edge.depflag &= ~dt.BUILD + else: + ancestor._dependencies[edge.spec.name].remove(edge) + edge.spec._dependents[ancestor.name].remove(edge) # For each direct dependent in the link/run graph, replace the dependency on # node with one on replacement - # For each build dependent, restrict the edge to build-only for edge in self.edges_from_dependents(): if edge.parent not in ancestors_in_context: continue - build_dep = edge.depflag & dt.BUILD - other_dep = edge.depflag & ~dt.BUILD - if build_dep: - parent_edge = [e for e in edge.parent._dependencies[self.name] if e.spec is self] - assert len(parent_edge) == 1 - edge.depflag = dt.BUILD - parent_edge[0].depflag = dt.BUILD - else: - edge.parent._dependencies.edges[self.name].remove(edge) - self._dependents.edges[edge.parent.name].remove(edge) + edge.parent._dependencies.edges[self.name].remove(edge) + self._dependents.edges[edge.parent.name].remove(edge) + edge.parent._add_dependency(replacement, depflag=edge.depflag, virtuals=edge.virtuals) - if other_dep: - edge.parent._add_dependency(replacement, depflag=other_dep, virtuals=edge.virtuals) - - def _splice_helper(self, replacement, self_root, other_root): + def _splice_helper(self, replacement): """Main loop of a transitive splice. The while loop around a traversal of self ensures that changes to self from previous @@ -4276,8 +4271,7 @@ def _splice_helper(self, replacement, self_root, other_root): replacements_by_name[node.name].append(node) virtuals = node._virtuals_provided(root=replacement) for virtual in virtuals: - # Virtual may be spec or str, get name or return str - replacements_by_name[getattr(virtual, "name", virtual)].append(node) + replacements_by_name[virtual].append(node) changed = True while changed: @@ -4298,8 +4292,8 @@ def _splice_helper(self, replacement, self_root, other_root): for virtual in node._virtuals_provided(root=self): analogs += [ r - for r in replacements_by_name[getattr(virtual, "name", virtual)] - if r._splice_match(node, self_root=self_root, other_root=other_root) + for r in replacements_by_name[virtual] + if node._splice_match(r, self_root=self, other_root=replacement) ] # No match, keep iterating over self @@ -4313,34 +4307,56 @@ def _splice_helper(self, replacement, self_root, other_root): # No splice needed here, keep checking if analog == node: continue + node._splice_detach_and_add_dependents(analog, context=self) changed = True break - def splice(self, other, transitive): - """Splices dependency "other" into this ("target") Spec, and return the - result as a concrete Spec. - If transitive, then other and its dependencies will be extrapolated to - a list of Specs and spliced in accordingly. - For example, let there exist a dependency graph as follows: - T - | \ - Z<-H - In this example, Spec T depends on H and Z, and H also depends on Z. - Suppose, however, that we wish to use a different H, known as H'. This - function will splice in the new H' in one of two ways: - 1. transitively, where H' depends on the Z' it was built with, and the - new T* also directly depends on this new Z', or - 2. intransitively, where the new T* and H' both depend on the original - Z. - Since the Spec returned by this splicing function is no longer deployed - the same way it was built, any such changes are tracked by setting the - build_spec to point to the corresponding dependency from the original - Spec. - """ + def splice(self, other: "Spec", transitive: bool = True) -> "Spec": + """Returns a new, spliced concrete Spec with the "other" dependency and, + optionally, its dependencies. + + Args: + other: alternate dependency + transitive: include other's dependencies + + Returns: a concrete, spliced version of the current Spec + + When transitive is "True", use the dependencies from "other" to reconcile + conflicting dependencies. When transitive is "False", use dependencies from self. + + For example, suppose we have the following dependency graph: + + T + | \ + Z<-H + + Spec T depends on H and Z, and H also depends on Z. Now we want to use + a different H, called H'. This function can be used to splice in H' to + create a new spec, called T*. If H' was built with Z', then transitive + "True" will ensure H' and T* both depend on Z': + + T* + | \ + Z'<-H' + + If transitive is "False", then H' and T* will both depend on + the original Z, resulting in a new H'* + + T* + | \ + Z<-H'* + + Provenance of the build is tracked through the "build_spec" property + of the spliced spec and any correspondingly modified dependency specs. + The build specs are set to that of the original spec, so the original + spec's provenance is preserved unchanged.""" assert self.concrete assert other.concrete + if self._splice_match(other, self_root=self, other_root=other): + return other.copy() + if not any( node._splice_match(other, self_root=self, other_root=other) for node in self.traverse(root=False, deptype=dt.LINK | dt.RUN) @@ -4379,12 +4395,12 @@ def mask_build_deps(in_spec): # Transitively splice any relevant nodes from new into base # This handles all shared dependencies between self and other - spec._splice_helper(replacement, self_root=self, other_root=other) + spec._splice_helper(replacement) else: # Do the same thing as the transitive splice, but reversed node_pairs = make_node_pairs(other, replacement) mask_build_deps(replacement) - replacement._splice_helper(spec, self_root=other, other_root=self) + replacement._splice_helper(spec) # Intransitively splice replacement into spec # This is very simple now that all shared dependencies have been handled @@ -4392,13 +4408,14 @@ def mask_build_deps(in_spec): if node._splice_match(other, self_root=spec, other_root=other): node._splice_detach_and_add_dependents(replacement, context=spec) - # Set up build dependencies for modified nodes - # Also modify build_spec because the existing ones had build deps removed + # For nodes that were spliced, modify the build spec to ensure build deps are preserved + # For nodes that were not spliced, replace the build deps on the spec itself for orig, copy in node_pairs: - for edge in orig.edges_to_dependencies(depflag=dt.BUILD): - copy._add_dependency(edge.spec, depflag=dt.BUILD, virtuals=edge.virtuals) if copy._build_spec: copy._build_spec = orig.build_spec.copy() + else: + for edge in orig.edges_to_dependencies(depflag=dt.BUILD): + copy._add_dependency(edge.spec, depflag=dt.BUILD, virtuals=edge.virtuals) return spec @@ -4797,7 +4814,7 @@ def _load(cls, data): virtuals=virtuals, ) if "build_spec" in node.keys(): - _, bhash, _ = cls.build_spec_from_node_dict(node, hash_type=hash_type) + _, bhash, _ = cls.extract_build_spec_info_from_node_dict(node, hash_type=hash_type) node_spec._build_spec = hash_dict[bhash]["node_spec"] return hash_dict[root_spec_hash]["node_spec"] @@ -4925,7 +4942,7 @@ def extract_info_from_dep(cls, elt, hash): return dep_hash, deptypes, hash_type, virtuals @classmethod - def build_spec_from_node_dict(cls, node, hash_type=ht.dag_hash.name): + def extract_build_spec_info_from_node_dict(cls, node, hash_type=ht.dag_hash.name): build_spec_dict = node["build_spec"] return build_spec_dict["name"], build_spec_dict[hash_type], hash_type diff --git a/lib/spack/spack/test/bindist.py b/lib/spack/spack/test/bindist.py index f2be8fd0045..77b11ce98f6 100644 --- a/lib/spack/spack/test/bindist.py +++ b/lib/spack/spack/test/bindist.py @@ -68,22 +68,6 @@ def cache_directory(tmpdir): spack.config.caches = old_cache_path -@pytest.fixture(scope="module") -def mirror_dir(tmpdir_factory): - dir = tmpdir_factory.mktemp("mirror") - dir.ensure("build_cache", dir=True) - yield str(dir) - dir.join("build_cache").remove() - - -@pytest.fixture(scope="function") -def test_mirror(mirror_dir): - mirror_url = url_util.path_to_file_url(mirror_dir) - mirror_cmd("add", "--scope", "site", "test-mirror-func", mirror_url) - yield mirror_dir - mirror_cmd("rm", "--scope=site", "test-mirror-func") - - @pytest.fixture(scope="module") def config_directory(tmp_path_factory): # Copy defaults to a temporary "site" scope @@ -222,9 +206,9 @@ def dummy_prefix(tmpdir): @pytest.mark.requires_executables(*args) @pytest.mark.maybeslow @pytest.mark.usefixtures( - "default_config", "cache_directory", "install_dir_default_layout", "test_mirror" + "default_config", "cache_directory", "install_dir_default_layout", "temporary_mirror" ) -def test_default_rpaths_create_install_default_layout(mirror_dir): +def test_default_rpaths_create_install_default_layout(temporary_mirror_dir): """ Test the creation and installation of buildcaches with default rpaths into the default directory layout scheme. @@ -237,13 +221,12 @@ def test_default_rpaths_create_install_default_layout(mirror_dir): install_cmd("--no-cache", sy_spec.name) # Create a buildache - buildcache_cmd("push", "-u", mirror_dir, cspec.name, sy_spec.name) - + buildcache_cmd("push", "-u", temporary_mirror_dir, cspec.name, sy_spec.name) # Test force overwrite create buildcache (-f option) - buildcache_cmd("push", "-uf", mirror_dir, cspec.name) + buildcache_cmd("push", "-uf", temporary_mirror_dir, cspec.name) # Create mirror index - buildcache_cmd("update-index", mirror_dir) + buildcache_cmd("update-index", temporary_mirror_dir) # List the buildcaches in the mirror buildcache_cmd("list", "-alv") @@ -271,9 +254,9 @@ def test_default_rpaths_create_install_default_layout(mirror_dir): @pytest.mark.maybeslow @pytest.mark.nomockstage @pytest.mark.usefixtures( - "default_config", "cache_directory", "install_dir_non_default_layout", "test_mirror" + "default_config", "cache_directory", "install_dir_non_default_layout", "temporary_mirror" ) -def test_default_rpaths_install_nondefault_layout(mirror_dir): +def test_default_rpaths_install_nondefault_layout(temporary_mirror_dir): """ Test the creation and installation of buildcaches with default rpaths into the non-default directory layout scheme. @@ -294,9 +277,9 @@ def test_default_rpaths_install_nondefault_layout(mirror_dir): @pytest.mark.maybeslow @pytest.mark.nomockstage @pytest.mark.usefixtures( - "default_config", "cache_directory", "install_dir_default_layout", "test_mirror" + "default_config", "cache_directory", "install_dir_default_layout", "temporary_mirror" ) -def test_relative_rpaths_install_default_layout(mirror_dir): +def test_relative_rpaths_install_default_layout(temporary_mirror_dir): """ Test the creation and installation of buildcaches with relative rpaths into the default directory layout scheme. @@ -323,9 +306,9 @@ def test_relative_rpaths_install_default_layout(mirror_dir): @pytest.mark.maybeslow @pytest.mark.nomockstage @pytest.mark.usefixtures( - "default_config", "cache_directory", "install_dir_non_default_layout", "test_mirror" + "default_config", "cache_directory", "install_dir_non_default_layout", "temporary_mirror" ) -def test_relative_rpaths_install_nondefault(mirror_dir): +def test_relative_rpaths_install_nondefault(temporary_mirror_dir): """ Test the installation of buildcaches with relativized rpaths into the non-default directory layout scheme. @@ -374,9 +357,9 @@ def test_push_and_fetch_keys(mock_gnupghome, tmp_path): @pytest.mark.maybeslow @pytest.mark.nomockstage @pytest.mark.usefixtures( - "default_config", "cache_directory", "install_dir_non_default_layout", "test_mirror" + "default_config", "cache_directory", "install_dir_non_default_layout", "temporary_mirror" ) -def test_built_spec_cache(mirror_dir): +def test_built_spec_cache(temporary_mirror_dir): """Because the buildcache list command fetches the buildcache index and uses it to populate the binary_distribution built spec cache, when this test calls get_mirrors_for_spec, it is testing the popluation of @@ -397,7 +380,7 @@ def fake_dag_hash(spec, length=None): return "tal4c7h4z0gqmixb1eqa92mjoybxn5l6"[:length] -@pytest.mark.usefixtures("install_mockery", "mock_packages", "mock_fetch", "test_mirror") +@pytest.mark.usefixtures("install_mockery", "mock_packages", "mock_fetch", "temporary_mirror") def test_spec_needs_rebuild(monkeypatch, tmpdir): """Make sure needs_rebuild properly compares remote hash against locally computed one, avoiding unnecessary rebuilds""" @@ -518,7 +501,7 @@ def mock_list_url(url, recursive=False): @pytest.mark.usefixtures("mock_fetch", "install_mockery") -def test_update_sbang(tmpdir, test_mirror): +def test_update_sbang(tmpdir, temporary_mirror): """Test the creation and installation of buildcaches with default rpaths into the non-default directory layout scheme, triggering an update of the sbang. @@ -529,7 +512,7 @@ def test_update_sbang(tmpdir, test_mirror): old_spec_hash_str = "/{0}".format(old_spec.dag_hash()) # Need a fake mirror with *function* scope. - mirror_dir = test_mirror + mirror_dir = temporary_mirror # Assume all commands will concretize old_spec the same way. install_cmd("--no-cache", old_spec.name) diff --git a/lib/spack/spack/test/buildtask.py b/lib/spack/spack/test/buildtask.py index 4f018eb53e1..3e90c9ad7e3 100644 --- a/lib/spack/spack/test/buildtask.py +++ b/lib/spack/spack/test/buildtask.py @@ -27,17 +27,19 @@ def test_build_task_errors(install_mockery): # Using a concretized package now means the request argument is checked. spec.concretize() assert spec.concrete + with pytest.raises(TypeError, match="is not a valid build request"): inst.BuildTask(spec.package, None) # Using a valid package and spec, the next check is the status argument. request = inst.BuildRequest(spec.package, {}) + with pytest.raises(TypeError, match="is not a valid build status"): inst.BuildTask(spec.package, request, status="queued") # Now we can check that build tasks cannot be create when the status # indicates the task is/should've been removed. - with pytest.raises(spack.error.InstallError, match="Cannot create a build task"): + with pytest.raises(spack.error.InstallError, match="Cannot create a task"): inst.BuildTask(spec.package, request, status=inst.BuildStatus.REMOVED) # Also make sure to not accept an incompatible installed argument value. diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index 1dbc808ad88..014151688ad 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -38,6 +38,7 @@ import spack.util.spack_json as sjson import spack.util.spack_yaml from spack.cmd.env import _env_create +from spack.installer import PackageInstaller from spack.main import SpackCommand, SpackCommandError from spack.spec import Spec from spack.stage import stage_prefix @@ -803,6 +804,38 @@ def test_user_removed_spec(environment_from_manifest): assert not any(x.name == "hypre" for x in env_specs) +def test_lockfile_spliced_specs(environment_from_manifest, install_mockery): + """Test that an environment can round-trip a spliced spec.""" + # Create a local install for zmpi to splice in + # Default concretization is not using zmpi + zmpi = spack.spec.Spec("zmpi").concretized() + PackageInstaller([zmpi.package], fake=True).install() + + e1 = environment_from_manifest( + f""" +spack: + specs: + - mpileaks + concretizer: + splice: + explicit: + - target: mpi + replacement: zmpi/{zmpi.dag_hash()} +""" + ) + with e1: + e1.concretize() + e1.write() + + # By reading into a second environment, we force a round trip to json + e2 = _env_create("test2", init_file=e1.lock_path) + + # The one spec is mpileaks + for _, spec in e2.concretized_specs(): + assert spec.spliced + assert spec["mpi"].satisfies(zmpi) + + def test_init_from_lockfile(environment_from_manifest): """Test that an environment can be instantiated from a lockfile.""" e1 = environment_from_manifest( diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 9f4d411aecc..04807d6cde8 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -2281,6 +2281,30 @@ def test_virtuals_are_annotated_on_edges(self, spec_str): edges = spec.edges_to_dependencies(name="callpath") assert len(edges) == 1 and edges[0].virtuals == () + @pytest.mark.parametrize("transitive", [True, False]) + def test_explicit_splices( + self, mutable_config, database_mutable_config, mock_packages, transitive, capfd + ): + mpich_spec = database_mutable_config.query("mpich")[0] + splice_info = { + "target": "mpi", + "replacement": f"/{mpich_spec.dag_hash()}", + "transitive": transitive, + } + spack.config.CONFIG.set("concretizer", {"splice": {"explicit": [splice_info]}}) + + spec = spack.spec.Spec("hdf5 ^zmpi").concretized() + + assert spec.satisfies(f"^mpich/{mpich_spec.dag_hash()}") + assert spec.build_spec.dependencies(name="zmpi", deptype="link") + assert not spec.build_spec.satisfies(f"^mpich/{mpich_spec.dag_hash()}") + assert not spec.dependencies(name="zmpi", deptype="link") + + captured = capfd.readouterr() + assert "Warning: explicit splice configuration has caused" in captured.err + assert "hdf5 ^zmpi" in captured.err + assert str(spec) in captured.err + @pytest.mark.db @pytest.mark.parametrize( "spec_str,mpi_name", diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index dc53f50688c..613a51162a4 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -62,8 +62,11 @@ import spack.version from spack.fetch_strategy import URLFetchStrategy from spack.installer import PackageInstaller +from spack.main import SpackCommand from spack.util.pattern import Bunch +mirror_cmd = SpackCommand("mirror") + @pytest.fixture(autouse=True) def check_config_fixture(request): @@ -989,6 +992,38 @@ def install_mockery(temporary_store: spack.store.Store, mutable_config, mock_pac temporary_store.failure_tracker.clear_all() +@pytest.fixture(scope="module") +def temporary_mirror_dir(tmpdir_factory): + dir = tmpdir_factory.mktemp("mirror") + dir.ensure("build_cache", dir=True) + yield str(dir) + dir.join("build_cache").remove() + + +@pytest.fixture(scope="function") +def temporary_mirror(temporary_mirror_dir): + mirror_url = url_util.path_to_file_url(temporary_mirror_dir) + mirror_cmd("add", "--scope", "site", "test-mirror-func", mirror_url) + yield temporary_mirror_dir + mirror_cmd("rm", "--scope=site", "test-mirror-func") + + +@pytest.fixture(scope="function") +def mutable_temporary_mirror_dir(tmpdir_factory): + dir = tmpdir_factory.mktemp("mirror") + dir.ensure("build_cache", dir=True) + yield str(dir) + dir.join("build_cache").remove() + + +@pytest.fixture(scope="function") +def mutable_temporary_mirror(mutable_temporary_mirror_dir): + mirror_url = url_util.path_to_file_url(mutable_temporary_mirror_dir) + mirror_cmd("add", "--scope", "site", "test-mirror-func", mirror_url) + yield mutable_temporary_mirror_dir + mirror_cmd("rm", "--scope=site", "test-mirror-func") + + @pytest.fixture(scope="function") def temporary_store(tmpdir, request): """Hooks a temporary empty store for the test function.""" diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py index f2d9df672fc..bf231c0f2ab 100644 --- a/lib/spack/spack/test/installer.py +++ b/lib/spack/spack/test/installer.py @@ -29,6 +29,7 @@ import spack.store import spack.util.lock as lk from spack.installer import PackageInstaller +from spack.main import SpackCommand def _mock_repo(root, namespace): @@ -640,6 +641,88 @@ def test_prepare_for_install_on_installed(install_mockery, monkeypatch): installer._prepare_for_install(task) +def test_installer_init_requests(install_mockery): + """Test of installer initial requests.""" + spec_name = "dependent-install" + with spack.config.override("config:install_missing_compilers", True): + installer = create_installer([spec_name], {}) + + # There is only one explicit request in this case + assert len(installer.build_requests) == 1 + request = installer.build_requests[0] + assert request.pkg.name == spec_name + + +@pytest.mark.parametrize("transitive", [True, False]) +def test_install_spliced(install_mockery, mock_fetch, monkeypatch, capsys, transitive): + """Test installing a spliced spec""" + spec = spack.spec.Spec("splice-t").concretized() + dep = spack.spec.Spec("splice-h+foo").concretized() + + # Do the splice. + out = spec.splice(dep, transitive) + installer = create_installer([out], {"verbose": True, "fail_fast": True}) + installer.install() + for node in out.traverse(): + assert node.installed + assert node.build_spec.installed + + +@pytest.mark.parametrize("transitive", [True, False]) +def test_install_spliced_build_spec_installed(install_mockery, capfd, mock_fetch, transitive): + """Test installing a spliced spec with the build spec already installed""" + spec = spack.spec.Spec("splice-t").concretized() + dep = spack.spec.Spec("splice-h+foo").concretized() + + # Do the splice. + out = spec.splice(dep, transitive) + PackageInstaller([out.build_spec.package]).install() + + installer = create_installer([out], {"verbose": True, "fail_fast": True}) + installer._init_queue() + for _, task in installer.build_pq: + assert isinstance(task, inst.RewireTask if task.pkg.spec.spliced else inst.BuildTask) + installer.install() + for node in out.traverse(): + assert node.installed + assert node.build_spec.installed + + +@pytest.mark.not_on_windows("lacking windows support for binary installs") +@pytest.mark.parametrize("transitive", [True, False]) +@pytest.mark.parametrize( + "root_str", ["splice-t^splice-h~foo", "splice-h~foo", "splice-vt^splice-a"] +) +def test_install_splice_root_from_binary( + install_mockery, mock_fetch, mutable_temporary_mirror, transitive, root_str +): + """Test installing a spliced spec with the root available in binary cache""" + # Test splicing and rewiring a spec with the same name, different hash. + original_spec = spack.spec.Spec(root_str).concretized() + spec_to_splice = spack.spec.Spec("splice-h+foo").concretized() + + PackageInstaller([original_spec.package, spec_to_splice.package]).install() + + out = original_spec.splice(spec_to_splice, transitive) + + buildcache = SpackCommand("buildcache") + buildcache( + "push", + "--unsigned", + "--update-index", + mutable_temporary_mirror, + str(original_spec), + str(spec_to_splice), + ) + + uninstall = SpackCommand("uninstall") + uninstall("-ay") + + PackageInstaller([out.package], unsigned=True).install() + + assert len(spack.store.STORE.db.query()) == len(list(out.traverse())) + + def test_install_task_use_cache(install_mockery, monkeypatch): installer = create_installer(["trivial-install-test-package"], {}) request = installer.build_requests[0] @@ -650,6 +733,33 @@ def test_install_task_use_cache(install_mockery, monkeypatch): assert request.pkg_id in installer.installed +def test_install_task_requeue_build_specs(install_mockery, monkeypatch, capfd): + """Check that a missing build_spec spec is added by _install_task.""" + + # This test also ensures coverage of most of the new + # _requeue_with_build_spec_tasks method. + def _missing(*args, **kwargs): + return inst.ExecuteResult.MISSING_BUILD_SPEC + + # Set the configuration to ensure _requeue_with_build_spec_tasks actually + # does something. + with spack.config.override("config:install_missing_compilers", True): + installer = create_installer(["depb"], {}) + installer._init_queue() + request = installer.build_requests[0] + task = create_build_task(request.pkg) + + # Drop one of the specs so its task is missing before _install_task + popped_task = installer._pop_task() + assert inst.package_id(popped_task.pkg.spec) not in installer.build_tasks + + monkeypatch.setattr(task, "execute", _missing) + installer._install_task(task, None) + + # Ensure the dropped task/spec was added back by _install_task + assert inst.package_id(popped_task.pkg.spec) in installer.build_tasks + + def test_release_lock_write_n_exception(install_mockery, tmpdir, capsys): """Test _release_lock for supposed write lock with exception.""" installer = create_installer(["trivial-install-test-package"], {}) @@ -745,8 +855,10 @@ def _chgrp(path, group, follow_symlinks=True): monkeypatch.setattr(prefs, "get_package_group", _get_group) monkeypatch.setattr(fs, "chgrp", _chgrp) - installer = create_installer(["trivial-install-test-package"], {}) - spec = installer.build_requests[0].pkg.spec + build_task = create_build_task( + spack.spec.Spec("trivial-install-test-package").concretized().package + ) + spec = build_task.request.pkg.spec fs.touchp(spec.prefix) metadatadir = spack.store.STORE.layout.metadata_path(spec) @@ -756,7 +868,7 @@ def _chgrp(path, group, follow_symlinks=True): metadatadir = None # Should fail with a "not a directory" error with pytest.raises(OSError, match=metadatadir): - installer._setup_install_dir(spec.package) + build_task._setup_install_dir(spec.package) out = str(capfd.readouterr()[0]) @@ -843,79 +955,74 @@ def test_install_failed_not_fast(install_mockery, monkeypatch, capsys): assert "Skipping build of pkg-a" in out -def test_install_fail_on_interrupt(install_mockery, monkeypatch): +def _interrupt(installer, task, install_status, **kwargs): + if task.pkg.name == "pkg-a": + raise KeyboardInterrupt("mock keyboard interrupt for pkg-a") + else: + return installer._real_install_task(task, None) + # installer.installed.add(task.pkg.name) + + +def test_install_fail_on_interrupt(install_mockery, mock_fetch, monkeypatch): """Test ctrl-c interrupted install.""" spec_name = "pkg-a" err_msg = "mock keyboard interrupt for {0}".format(spec_name) - - def _interrupt(installer, task, install_status, **kwargs): - if task.pkg.name == spec_name: - raise KeyboardInterrupt(err_msg) - else: - installer.installed.add(task.pkg.name) - installer = create_installer([spec_name], {}) - + setattr(inst.PackageInstaller, "_real_install_task", inst.PackageInstaller._install_task) # Raise a KeyboardInterrupt error to trigger early termination monkeypatch.setattr(inst.PackageInstaller, "_install_task", _interrupt) with pytest.raises(KeyboardInterrupt, match=err_msg): installer.install() - assert "pkg-b" in installer.installed # ensure dependency of pkg-a is 'installed' - assert spec_name not in installer.installed + assert not any(i.startswith("pkg-a-") for i in installer.installed) + assert any( + i.startswith("pkg-b-") for i in installer.installed + ) # ensure dependency of a is 'installed' -def test_install_fail_single(install_mockery, monkeypatch): +class MyBuildException(Exception): + pass + + +def _install_fail_my_build_exception(installer, task, install_status, **kwargs): + print(task, task.pkg.name) + if task.pkg.name == "pkg-a": + raise MyBuildException("mock internal package build error for pkg-a") + else: + # No need for more complex logic here because no splices + task.execute(install_status) + installer._update_installed(task) + + +def test_install_fail_single(install_mockery, mock_fetch, monkeypatch): """Test expected results for failure of single package.""" - spec_name = "pkg-a" - err_msg = "mock internal package build error for {0}".format(spec_name) - - class MyBuildException(Exception): - pass - - def _install(installer, task, install_status, **kwargs): - if task.pkg.name == spec_name: - raise MyBuildException(err_msg) - else: - installer.installed.add(task.pkg.name) - - installer = create_installer([spec_name], {}) + installer = create_installer(["pkg-a"], {}) # Raise a KeyboardInterrupt error to trigger early termination - monkeypatch.setattr(inst.PackageInstaller, "_install_task", _install) + monkeypatch.setattr(inst.PackageInstaller, "_install_task", _install_fail_my_build_exception) - with pytest.raises(MyBuildException, match=err_msg): + with pytest.raises(MyBuildException, match="mock internal package build error for pkg-a"): installer.install() - assert "pkg-b" in installer.installed # ensure dependency of a is 'installed' - assert spec_name not in installer.installed + # ensure dependency of a is 'installed' and a is not + assert any(pkg_id.startswith("pkg-b-") for pkg_id in installer.installed) + assert not any(pkg_id.startswith("pkg-a-") for pkg_id in installer.installed) -def test_install_fail_multi(install_mockery, monkeypatch): +def test_install_fail_multi(install_mockery, mock_fetch, monkeypatch): """Test expected results for failure of multiple packages.""" - spec_name = "pkg-c" - err_msg = "mock internal package build error" - - class MyBuildException(Exception): - pass - - def _install(installer, task, install_status, **kwargs): - if task.pkg.name == spec_name: - raise MyBuildException(err_msg) - else: - installer.installed.add(task.pkg.name) - - installer = create_installer([spec_name, "pkg-a"], {}) + installer = create_installer(["pkg-a", "pkg-c"], {}) # Raise a KeyboardInterrupt error to trigger early termination - monkeypatch.setattr(inst.PackageInstaller, "_install_task", _install) + monkeypatch.setattr(inst.PackageInstaller, "_install_task", _install_fail_my_build_exception) with pytest.raises(spack.error.InstallError, match="Installation request failed"): installer.install() - assert "pkg-a" in installer.installed # ensure the the second spec installed - assert spec_name not in installer.installed + # ensure the the second spec installed but not the first + assert any(pkg_id.startswith("pkg-c-") for pkg_id in installer.installed) + assert not any(pkg_id.startswith("pkg-a-") for pkg_id in installer.installed) def test_install_fail_fast_on_detect(install_mockery, monkeypatch, capsys): diff --git a/lib/spack/spack/test/rewiring.py b/lib/spack/spack/test/rewiring.py index 4c770e19889..9cf16ce6c27 100644 --- a/lib/spack/spack/test/rewiring.py +++ b/lib/spack/spack/test/rewiring.py @@ -9,6 +9,7 @@ import pytest +import spack.deptypes as dt import spack.rewiring import spack.store from spack.installer import PackageInstaller @@ -22,6 +23,18 @@ args.extend(["g++", "patchelf"]) +def check_spliced_spec_prefixes(spliced_spec): + """check the file in the prefix has the correct paths""" + for node in spliced_spec.traverse(root=True): + text_file_path = os.path.join(node.prefix, node.name) + with open(text_file_path, "r") as f: + text = f.read() + print(text) + for modded_spec in node.traverse(root=True, deptype=dt.ALL & ~dt.BUILD): + print(modded_spec) + assert modded_spec.prefix in text + + @pytest.mark.requires_executables(*args) @pytest.mark.parametrize("transitive", [True, False]) def test_rewire_db(mock_fetch, install_mockery, transitive): @@ -42,13 +55,8 @@ def test_rewire_db(mock_fetch, install_mockery, transitive): installed_in_db = rec.installed if rec else False assert installed_in_db - # check the file in the prefix has the correct paths - for node in spliced_spec.traverse(root=True): - text_file_path = os.path.join(node.prefix, node.name) - with open(text_file_path, "r") as f: - text = f.read() - for modded_spec in node.traverse(root=True, deptype=("link", "run")): - assert modded_spec.prefix in text + # check for correct prefix paths + check_spliced_spec_prefixes(spliced_spec) @pytest.mark.requires_executables(*args) @@ -150,3 +158,26 @@ def test_rewire_not_installed_fails(mock_fetch, install_mockery): match="failed due to missing install of build spec", ): spack.rewiring.rewire(spliced_spec) + + +def test_rewire_virtual(mock_fetch, install_mockery): + """Check installed package can successfully splice an alternate virtual implementation""" + dep = "splice-a" + alt_dep = "splice-h" + + spec = Spec(f"splice-vt^{dep}").concretized() + alt_spec = Spec(alt_dep).concretized() + + PackageInstaller([spec.package, alt_spec.package]).install() + + spliced_spec = spec.splice(alt_spec, True) + spack.rewiring.rewire(spliced_spec) + + # Confirm the original spec still has the original virtual implementation. + assert spec.satisfies(f"^{dep}") + + # Confirm the spliced spec uses the new virtual implementation. + assert spliced_spec.satisfies(f"^{alt_dep}") + + # check for correct prefix paths + check_spliced_spec_prefixes(spliced_spec) diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 88414e7a295..a821c53f2fb 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -1056,12 +1056,11 @@ def test_splice_intransitive_complex(self, setup_complex_splice): spliced = a_red.splice(c_blue, transitive=False) assert spliced.satisfies( "pkg-a color=red ^pkg-b color=red ^pkg-c color=blue " - "^pkg-d color=red ^pkg-e color=red ^pkg-f color=blue ^pkg-g@3 color=blue" - ) - assert set(spliced.dependencies(deptype=dt.BUILD)) == set( - a_red.dependencies(deptype=dt.BUILD) + "^pkg-d color=red ^pkg-e color=red ^pkg-f color=blue ^pkg-g@2 color=red" ) + assert set(spliced.dependencies(deptype=dt.BUILD)) == set() assert spliced.build_spec == a_red + # We cannot check spliced["b"].build_spec is spliced["b"] because Spec.__getitem__ creates # a new wrapper object on each invocation. So we select once and check on that object # For the rest of the unchanged specs we will just check the s._build_spec is None. @@ -1072,11 +1071,9 @@ def test_splice_intransitive_complex(self, setup_complex_splice): assert spliced["pkg-c"].satisfies( "pkg-c color=blue ^pkg-d color=red ^pkg-e color=red " - "^pkg-f color=blue ^pkg-g@3 color=blue" - ) - assert set(spliced["pkg-c"].dependencies(deptype=dt.BUILD)) == set( - c_blue.dependencies(deptype=dt.BUILD) + "^pkg-f color=blue ^pkg-g@2 color=red" ) + assert set(spliced["pkg-c"].dependencies(deptype=dt.BUILD)) == set() assert spliced["pkg-c"].build_spec == c_blue assert set(spliced["pkg-c"].dependents()) == {spliced} @@ -1101,14 +1098,12 @@ def test_splice_intransitive_complex(self, setup_complex_splice): # Build dependent edge to f because f originally dependended on the e this was copied from assert set(spliced["pkg-e"].dependents(deptype=dt.BUILD)) == {spliced["pkg-b"]} - assert spliced["pkg-f"].satisfies("pkg-f color=blue ^pkg-e color=red ^pkg-g@3 color=blue") - assert set(spliced["pkg-f"].dependencies(deptype=dt.BUILD)) == set( - c_blue["pkg-f"].dependencies(deptype=dt.BUILD) - ) + assert spliced["pkg-f"].satisfies("pkg-f color=blue ^pkg-e color=red ^pkg-g@2 color=red") + assert set(spliced["pkg-f"].dependencies(deptype=dt.BUILD)) == set() assert spliced["pkg-f"].build_spec == c_blue["pkg-f"] assert set(spliced["pkg-f"].dependents()) == {spliced["pkg-c"]} - # spliced["g"] is g3, but spliced["b"]["g"] is g1 + # spliced["pkg-g"] is g2, but spliced["pkg-b"]["pkg-g"] is g1 assert spliced["pkg-g"] == a_red["pkg-g"] assert spliced["pkg-g"]._build_spec is None assert set(spliced["pkg-g"].dependents(deptype=dt.LINK)) == { @@ -1117,7 +1112,6 @@ def test_splice_intransitive_complex(self, setup_complex_splice): spliced["pkg-f"], a_red["pkg-c"], } - assert set(spliced["pkg-g"].dependents(deptype=dt.BUILD)) == {spliced, a_red["pkg-c"]} assert spliced["pkg-b"]["pkg-g"] == a_red["pkg-b"]["pkg-g"] assert spliced["pkg-b"]["pkg-g"]._build_spec is None @@ -1131,14 +1125,7 @@ def test_splice_intransitive_complex(self, setup_complex_splice): # traverse_edges creates a synthetic edge with no deptypes to the root if edge.depflag: depflag = dt.LINK - if (edge.parent.name, edge.spec.name) not in [ - ("pkg-a", "pkg-c"), # These are the spliced edges - ("pkg-c", "pkg-d"), - ("pkg-f", "pkg-e"), - ("pkg-c", "pkg-g"), - ("pkg-f", "pkg-g"), - ("pkg-c", "pkg-f"), # ancestor to spliced edge - ]: + if not edge.parent.spliced: depflag |= dt.BUILD assert edge.depflag == depflag @@ -1150,21 +1137,17 @@ def test_splice_transitive_complex(self, setup_complex_splice): "pkg-a color=red ^pkg-b color=red ^pkg-c color=blue ^pkg-d color=blue " "^pkg-e color=blue ^pkg-f color=blue ^pkg-g@3 color=blue" ) - assert set(spliced.dependencies(deptype=dt.BUILD)) == set( - a_red.dependencies(deptype=dt.BUILD) - ) + assert set(spliced.dependencies(deptype=dt.BUILD)) == set() assert spliced.build_spec == a_red assert spliced["pkg-b"].satisfies( "pkg-b color=red ^pkg-d color=blue ^pkg-e color=blue ^pkg-g@2 color=blue" ) - assert set(spliced["pkg-b"].dependencies(deptype=dt.BUILD)) == set( - a_red["pkg-b"].dependencies(deptype=dt.BUILD) - ) + assert set(spliced["pkg-b"].dependencies(deptype=dt.BUILD)) == set() assert spliced["pkg-b"].build_spec == a_red["pkg-b"] assert set(spliced["pkg-b"].dependents()) == {spliced} - # We cannot check spliced["b"].build_spec is spliced["b"] because Spec.__getitem__ creates + # We cannot check spliced["c"].build_spec is spliced["c"] because Spec.__getitem__ creates # a new wrapper object on each invocation. So we select once and check on that object # For the rest of the unchanged specs we will just check the s._build_spec is None. c = spliced["pkg-c"] @@ -1211,17 +1194,7 @@ def test_splice_transitive_complex(self, setup_complex_splice): # traverse_edges creates a synthetic edge with no deptypes to the root if edge.depflag: depflag = dt.LINK - if (edge.parent.name, edge.spec.name) not in [ - ("pkg-a", "pkg-c"), # These are the spliced edges - ("pkg-a", "pkg-g"), - ("pkg-b", "pkg-d"), - ("pkg-b", "pkg-e"), - ("pkg-b", "pkg-g"), - ( - "pkg-a", - "pkg-b", - ), # This edge not spliced, but b was spliced invalidating edge - ]: + if not edge.parent.spliced: depflag |= dt.BUILD assert edge.depflag == depflag @@ -1365,10 +1338,10 @@ def test_splice_swap_names(self, default_mock_concretization, transitive): @pytest.mark.parametrize("transitive", [True, False]) def test_splice_swap_names_mismatch_virtuals(self, default_mock_concretization, transitive): - spec = default_mock_concretization("splice-t") - dep = default_mock_concretization("splice-vh+foo") + vt = default_mock_concretization("splice-vt") + vh = default_mock_concretization("splice-vh+foo") with pytest.raises(spack.spec.SpliceError, match="virtual"): - spec.splice(dep, transitive) + vt.splice(vh, transitive) def test_spec_override(self): init_spec = Spec("pkg-a foo=baz foobar=baz cflags=-O3 cxxflags=-O1")