From 736c46e22dd861a5ff508c3ca4ee07b20bff5fe7 Mon Sep 17 00:00:00 2001 From: Douglas Jacobsen Date: Thu, 12 Oct 2023 13:56:24 -0600 Subject: [PATCH] Isolate util/cpus.py --- lib/spack/spack/bootstrap/environment.py | 2 +- lib/spack/spack/build_systems/racket.py | 3 ++- lib/spack/spack/package.py | 1 - lib/spack/spack/util/cpus.py | 17 +++++++++++------ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/bootstrap/environment.py b/lib/spack/spack/bootstrap/environment.py index 71d54a8ad14..a68c31a2d52 100644 --- a/lib/spack/spack/bootstrap/environment.py +++ b/lib/spack/spack/bootstrap/environment.py @@ -137,7 +137,7 @@ def _install_with_depfile(self) -> None: "-C", str(self.environment_root()), "-j", - str(spack.util.cpus.determine_number_of_jobs(parallel=True)), + str(spack.util.cpus.determine_number_of_jobs(parallel=True, config=spack.config.CONFIG)), **kwargs, ) diff --git a/lib/spack/spack/build_systems/racket.py b/lib/spack/spack/build_systems/racket.py index 50c4944a5d7..9829a24df6a 100644 --- a/lib/spack/spack/build_systems/racket.py +++ b/lib/spack/spack/build_systems/racket.py @@ -10,6 +10,7 @@ import llnl.util.tty as tty import spack.builder +import spack.config from spack.build_environment import SPACK_NO_PARALLEL_MAKE from spack.directives import build_system, extends, maintainers from spack.package_base import PackageBase @@ -93,7 +94,7 @@ def install(self, pkg, spec, prefix): "--copy", "-i", "-j", - str(determine_number_of_jobs(parallel=parallel)), + str(determine_number_of_jobs(parallel=parallel, config=spack.config.CONFIG)), "--", os.getcwd(), ] diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 8113d363dd7..0c01f4f2ef5 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -101,7 +101,6 @@ on_package_attributes, ) from spack.spec import InvalidSpecDetected, Spec -from spack.util.cpus import determine_number_of_jobs from spack.util.executable import * from spack.variant import ( any_combination_of, diff --git a/lib/spack/spack/util/cpus.py b/lib/spack/spack/util/cpus.py index b8b371ebb08..76a36bab49a 100644 --- a/lib/spack/spack/util/cpus.py +++ b/lib/spack/spack/util/cpus.py @@ -7,8 +7,6 @@ import os from typing import Optional -import spack.config - def cpus_available(): """ @@ -28,6 +26,7 @@ def determine_number_of_jobs( parallel: bool = False, max_cpus: int = cpus_available(), config: Optional["spack.config.Configuration"] = None, + config_path: str = 'config:build_jobs', ) -> int: """ Packages that require sequential builds need 1 job. Otherwise we use the @@ -39,18 +38,24 @@ def determine_number_of_jobs( parallel: true when package supports parallel builds max_cpus: maximum number of CPUs to use (defaults to cpus_available()) config: configuration object (defaults to global config) + config_path: configuration path to read number of jobs from """ if not parallel: return 1 - cfg = config or spack.config.CONFIG - # Command line overrides all + config_jobs = 16 try: - command_line = cfg.get("config:build_jobs", default=None, scope="command_line") + command_line = None + if config is not None: + command_line = config.get(config_path, default=None, scope="command_line") + if command_line is not None: return command_line except ValueError: pass - return min(max_cpus, cfg.get("config:build_jobs", 16)) + if config is not None: + config_jobs = config.get(config_path, 16) + + return min(max_cpus, config_jobs)