From 4bc67e8e84bfcebb774756fc0211eef81838c7e7 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sat, 6 Jul 2024 14:07:05 -0500 Subject: [PATCH] util-linux: provide uuid when new variant +uuid --- etc/spack/defaults/packages.yaml | 2 +- .../builtin/packages/util-linux/package.py | 31 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 581b01e1f61..142de558b8d 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -60,7 +60,7 @@ packages: szip: [libaec, libszip] tbb: [intel-tbb] unwind: [libunwind] - uuid: [util-linux-uuid, libuuid] + uuid: [util-linux-uuid, util-linux+uuid, libuuid] xxd: [xxd-standalone, vim] yacc: [bison, byacc] ziglang: [zig] diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py index bcd31b88d09..36b875a3e33 100644 --- a/var/spack/repos/builtin/packages/util-linux/package.py +++ b/var/spack/repos/builtin/packages/util-linux/package.py @@ -45,19 +45,39 @@ class UtilLinux(AutotoolsPackage): depends_on("libxcrypt", type="link") # sbin/sulogin variant("bash", default=False, description="Install bash completion scripts") + variant("uuid", default=False, description="Build libuuid and uuid utilities") depends_on("bash", when="+bash", type="run") + depends_on("pkgconfig", when="+uuid", type="build") + + # TODO likely applies regardless of uuid + conflicts("%gcc@:4", when="@2.37: +uuid") + + provides("uuid", when="+uuid") def url_for_version(self, version): url = "https://www.kernel.org/pub/linux/utils/util-linux/v{0}/util-linux-{1}.tar.gz" return url.format(version.up_to(2), version) + # TODO does not appear used by builtin packages + # TODO does when=[virtual=uuid] work? + @property + @when("[virtual=uuid]") + def libs(self): + return find_libraries("libuuid", self.prefix, recursive=True) + + # TODO does not appear used by builtin packages + # TODO does when=[virtual=uuid] work? + @property + @when("[virtual=uuid]") + def headers(self): + return find_headers("uuid", self.prefix, recursive=True) + def configure_args(self): config_args = [ "--disable-use-tty-group", "--disable-makeinstall-chown", "--without-systemd", - "--disable-libuuid", ] if "+bash" in self.spec: config_args.extend( @@ -72,6 +92,11 @@ def configure_args(self): else: config_args.append("--disable-bash-completion") + if self.spec.satisfied("+uuid"): + config_args.append("--enable-libuuid") + else: + config.args.append("--disable-libuuid") + if self.spec.satisfies("platform=darwin"): # Does not build on macOS config_args.extend( @@ -82,6 +107,10 @@ def configure_args(self): # Disable liblastlog2, which depends on sqlite config_args.append("--disable-liblastlog2") + # Fixes #31123 + if self.spec.satisfies("+uuid %intel"): + config_args.append("CFLAGS=-restrict") + return config_args def install(self, spec, prefix):