summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorMikael Simberg <mikael.simberg@iki.fi>2024-09-10 08:16:47 +0200
committerGitHub <noreply@github.com>2024-09-10 08:16:47 +0200
commit78117877e002fcb8afec74044b21adffc7655cd3 (patch)
treebef9cbec49fee1acc0ef892ed799feee7736770b /var
parent975f4fbf8449acc471b3e49c492f4b860cb81899 (diff)
downloadspack-78117877e002fcb8afec74044b21adffc7655cd3.tar.gz
spack-78117877e002fcb8afec74044b21adffc7655cd3.tar.bz2
spack-78117877e002fcb8afec74044b21adffc7655cd3.tar.xz
spack-78117877e002fcb8afec74044b21adffc7655cd3.zip
boost: Refactor header-only install and add missing compiled libraries (#46281)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/boost/package.py54
1 files changed, 23 insertions, 31 deletions
diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py
index 1f2ff0f0ac..366a14509a 100644
--- a/var/spack/repos/builtin/packages/boost/package.py
+++ b/var/spack/repos/builtin/packages/boost/package.py
@@ -116,7 +116,9 @@ class Boost(Package):
# support. The header-only library is installed when no variant is given.
all_libs = [
"atomic",
+ "charconv",
"chrono",
+ "cobalt",
"container",
"context",
"contract",
@@ -146,6 +148,7 @@ class Boost(Package):
"thread",
"timer",
"type_erasure",
+ "url",
"wave",
]
@@ -497,7 +500,7 @@ class Boost(Package):
spec["python"].libs[0],
)
- def determine_bootstrap_options(self, spec, with_libs, without_libs, options):
+ def determine_bootstrap_options(self, spec, with_libs, options):
boost_toolset_id = self.determine_toolset(spec)
# Arm compiler bootstraps with 'gcc' (but builds as 'clang')
@@ -506,9 +509,9 @@ class Boost(Package):
else:
options.append("--with-toolset=%s" % boost_toolset_id)
if with_libs:
- options.append("--with-libraries=%s" % ",".join(with_libs))
+ options.append("--with-libraries=%s" % ",".join(sorted(with_libs)))
else:
- options.append("--without-libraries=%s" % ",".join(without_libs))
+ options.append("--with-libraries=headers")
if spec.satisfies("+python"):
options.append("--with-python=%s" % spec["python"].command.path)
@@ -679,50 +682,39 @@ class Boost(Package):
force_symlink("/usr/bin/libtool", join_path(newdir, "libtool"))
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
+ with_libs = {f"{lib}" for lib in Boost.all_libs if f"+{lib}" in spec}
# Remove libraries that the release version does not support
+ if not spec.satisfies("@1.85.0:"):
+ with_libs.discard("charconv")
+ if not spec.satisfies("@1.84.0:"):
+ with_libs.discard("cobalt")
+ if not spec.satisfies("@1.81.0:"):
+ with_libs.discard("url")
if not spec.satisfies("@1.75.0:"):
- remove_if_in_list("json", with_libs)
- remove_if_in_list("json", without_libs)
+ with_libs.discard("json")
if spec.satisfies("@1.69.0:"):
- remove_if_in_list("signals", with_libs)
- remove_if_in_list("signals", without_libs)
+ with_libs.discard("signals")
if not spec.satisfies("@1.54.0:"):
- remove_if_in_list("log", with_libs)
- remove_if_in_list("log", without_libs)
+ with_libs.discard("log")
if not spec.satisfies("@1.53.0:"):
- remove_if_in_list("atomic", with_libs)
- remove_if_in_list("atomic", without_libs)
+ with_libs.discard("atomic")
if not spec.satisfies("@1.48.0:"):
- remove_if_in_list("locale", with_libs)
- remove_if_in_list("locale", without_libs)
+ with_libs.discard("locale")
if not spec.satisfies("@1.47.0:"):
- remove_if_in_list("chrono", with_libs)
- remove_if_in_list("chrono", without_libs)
+ with_libs.discard("chrono")
if not spec.satisfies("@1.43.0:"):
- remove_if_in_list("random", with_libs)
- remove_if_in_list("random", without_libs)
+ with_libs.discard("random")
if not spec.satisfies("@1.39.0:"):
- remove_if_in_list("exception", with_libs)
- remove_if_in_list("exception", without_libs)
+ with_libs.discard("exception")
if spec.satisfies("+graph") and spec.satisfies("+mpi"):
- with_libs.append("graph_parallel")
- remove_if_in_list("graph_parallel", without_libs)
+ with_libs.add("graph_parallel")
# 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, without_libs, bootstrap_options)
+ self.determine_bootstrap_options(spec, with_libs, bootstrap_options)
if self.spec.satisfies("platform=windows"):
bootstrap = Executable("cmd.exe")