spack bootstrap dev: detect git as an external (#39417)
#36770 added git as a dependency to `setuptools-scm`. This in turn makes `git` a transitive dependency for our bootstrapping process. Since `git` may take a long time to build, and is found on most systems, try to detect it as an external.
This commit is contained in:
		| @@ -480,11 +480,18 @@ def _add_externals_if_missing() -> None: | ||||
|         spack.repo.PATH.get_pkg_class("bison"), | ||||
|         # GnuPG | ||||
|         spack.repo.PATH.get_pkg_class("gawk"), | ||||
|         # develop deps | ||||
|         spack.repo.PATH.get_pkg_class("git"), | ||||
|     ] | ||||
|     if IS_WINDOWS: | ||||
|         search_list.append(spack.repo.PATH.get_pkg_class("winbison")) | ||||
|     detected_packages = spack.detection.by_executable(search_list) | ||||
|     spack.detection.update_configuration(detected_packages, scope="bootstrap") | ||||
|     externals = spack.detection.by_executable(search_list) | ||||
|     # System git is typically deprecated, so mark as non-buildable to force it as external | ||||
|     non_buildable_externals = {k: externals.pop(k) for k in ("git",) if k in externals} | ||||
|     spack.detection.update_configuration(externals, scope="bootstrap", buildable=True) | ||||
|     spack.detection.update_configuration( | ||||
|         non_buildable_externals, scope="bootstrap", buildable=False | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| def clingo_root_spec() -> str: | ||||
|   | ||||
| @@ -23,6 +23,7 @@ | ||||
| 
 | ||||
| from ._common import _root_spec | ||||
| from .config import root_path, spec_for_current_python, store_path | ||||
| from .core import _add_externals_if_missing | ||||
| 
 | ||||
| 
 | ||||
| class BootstrapEnvironment(spack.environment.Environment): | ||||
| @@ -185,6 +186,7 @@ def pytest_root_spec() -> str: | ||||
| 
 | ||||
| def ensure_environment_dependencies() -> None: | ||||
|     """Ensure Spack dependencies from the bootstrap environment are installed and ready to use""" | ||||
|     _add_externals_if_missing() | ||||
|     with BootstrapEnvironment() as env: | ||||
|         env.update_installations() | ||||
|         env.update_syspath_and_environ() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Harmen Stoppels
					Harmen Stoppels