diff options
author | Mikael Simberg <mikael.simberg@iki.fi> | 2024-08-28 17:44:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-28 17:44:02 +0200 |
commit | b9e4e98f15b4a07814adf8b22da19e631f2749e4 (patch) | |
tree | 651c20c3d02e6b08c592b7c4b76f62c3600b2074 | |
parent | 85487f23bcf53258282d3b44a124693753d048ed (diff) | |
download | spack-b9e4e98f15b4a07814adf8b22da19e631f2749e4.tar.gz spack-b9e4e98f15b4a07814adf8b22da19e631f2749e4.tar.bz2 spack-b9e4e98f15b4a07814adf8b22da19e631f2749e4.tar.xz spack-b9e4e98f15b4a07814adf8b22da19e631f2749e4.zip |
boost: install `BoostConfig.cmake` even when header-only (#46062)
* Install BoostConfig.cmake even when header-only
* boost: Only use --without-libraries when --with-libraries would have an empty list
-rw-r--r-- | var/spack/repos/builtin/packages/boost/package.py | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 9b8cb167c9..6ea37cb50e 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -497,7 +497,7 @@ class Boost(Package): spec["python"].libs[0], ) - def determine_bootstrap_options(self, spec, with_libs, options): + def determine_bootstrap_options(self, spec, with_libs, without_libs, options): boost_toolset_id = self.determine_toolset(spec) # Arm compiler bootstraps with 'gcc' (but builds as 'clang') @@ -505,7 +505,10 @@ class Boost(Package): options.append("--with-toolset=gcc") else: options.append("--with-toolset=%s" % boost_toolset_id) - options.append("--with-libraries=%s" % ",".join(with_libs)) + if with_libs: + options.append("--with-libraries=%s" % ",".join(with_libs)) + else: + options.append("--without-libraries=%s" % ",".join(without_libs)) if spec.satisfies("+python"): options.append("--with-python=%s" % spec["python"].command.path) @@ -677,43 +680,46 @@ class Boost(Package): env["PATH"] = newdir + ":" + env["PATH"] with_libs = list() + without_libs = list() for lib in Boost.all_libs: if "+{0}".format(lib) in spec: with_libs.append(lib) + else: + without_libs.append(lib) + + remove_if_in_list = lambda lib, libs: libs.remove(lib) if lib in libs else None # Remove libraries that the release version does not support - if spec.satisfies("@1.69.0:") and "signals" in with_libs: - with_libs.remove("signals") - if not spec.satisfies("@1.54.0:") and "log" in with_libs: - with_libs.remove("log") - if not spec.satisfies("@1.53.0:") and "atomic" in with_libs: - with_libs.remove("atomic") - if not spec.satisfies("@1.48.0:") and "locale" in with_libs: - with_libs.remove("locale") - if not spec.satisfies("@1.47.0:") and "chrono" in with_libs: - with_libs.remove("chrono") - if not spec.satisfies("@1.43.0:") and "random" in with_libs: - with_libs.remove("random") - if not spec.satisfies("@1.39.0:") and "exception" in with_libs: - with_libs.remove("exception") + if spec.satisfies("@1.69.0:"): + remove_if_in_list("signals", with_libs) + remove_if_in_list("signals", without_libs) + if not spec.satisfies("@1.54.0:"): + remove_if_in_list("log", with_libs) + remove_if_in_list("log", without_libs) + if not spec.satisfies("@1.53.0:"): + remove_if_in_list("atomic", with_libs) + remove_if_in_list("atomic", without_libs) + if not spec.satisfies("@1.48.0:"): + remove_if_in_list("locale", with_libs) + remove_if_in_list("locale", without_libs) + if not spec.satisfies("@1.47.0:"): + remove_if_in_list("chrono", with_libs) + remove_if_in_list("chrono", without_libs) + if not spec.satisfies("@1.43.0:"): + remove_if_in_list("random", with_libs) + remove_if_in_list("random", without_libs) + if not spec.satisfies("@1.39.0:"): + remove_if_in_list("exception", with_libs) + remove_if_in_list("exception", without_libs) if spec.satisfies("+graph") and spec.satisfies("+mpi"): with_libs.append("graph_parallel") - - if not with_libs: - # if no libraries are specified for compilation, then you dont have - # to configure/build anything, just copy over to the prefix - # directory. - src = join_path(self.stage.source_path, "boost") - mkdirp(join_path(prefix, "include")) - dst = join_path(prefix, "include", "boost") - install_tree(src, dst) - return + remove_if_in_list("graph_parallel", without_libs) # to make Boost find the user-config.jam env["BOOST_BUILD_PATH"] = self.stage.source_path bootstrap_options = ["--prefix=%s" % prefix] - self.determine_bootstrap_options(spec, with_libs, bootstrap_options) + self.determine_bootstrap_options(spec, with_libs, without_libs, bootstrap_options) if self.spec.satisfies("platform=windows"): bootstrap = Executable("cmd.exe") |