From 86afcfed3495aa11176a27ddb95e0036af506a9d Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi Date: Tue, 17 Feb 2026 12:25:20 +0100 Subject: [PATCH 1/6] split build systems --- .../builtin/packages/libfuse/package.py | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/repos/spack_repo/builtin/packages/libfuse/package.py b/repos/spack_repo/builtin/packages/libfuse/package.py index c6f3743350c..bf20ce8bfe7 100644 --- a/repos/spack_repo/builtin/packages/libfuse/package.py +++ b/repos/spack_repo/builtin/packages/libfuse/package.py @@ -5,12 +5,12 @@ import os import re -from spack_repo.builtin.build_systems.meson import MesonPackage +from spack_repo.builtin.build_systems import autotools, meson from spack.package import * -class Libfuse(MesonPackage): +class Libfuse(autotools.AutotoolsPackage, meson.MesonPackage): """The reference implementation of the Linux FUSE (Filesystem in Userspace) interface""" @@ -59,13 +59,21 @@ def url_for_version(self, version): ) variant("utils", default=True, description="Build and install helper and example programs.") + build_system( + conditional("meson", when="@3:"), + conditional("autotools", when="@:2"), + default="meson", + ) + depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - depends_on("autoconf", type="build", when="@:2") - depends_on("automake", type="build", when="@:2") - depends_on("libtool", type="build", when="@:2") - depends_on("gettext", type="build", when="@:2") + with when("build_system=autotools"): + depends_on("autoconf", type="build", when="@:2") + depends_on("automake", type="build", when="@:2") + depends_on("libtool", type="build", when="@:2") + depends_on("gettext", type="build", when="@:2") + depends_on("gmake", type="build") provides("fuse") @@ -112,6 +120,8 @@ def determine_version(cls, exe): match = re.search(r"^fusermount.*version: (\S+)", output) return match.group(1) if match else None + +class MesonBuilder(meson.MesonBuilder): def meson_args(self): args = [] @@ -139,9 +149,9 @@ def meson_args(self): return args - # Before libfuse 3.x this was an autotools package - @when("@:2") - def meson(self, spec, prefix): + +class AutotoolsBuilder(autotools.AutotoolsBuilder): + def configure_args(self): ar_args = ["-ivf"] for dep in self.spec.dependencies(deptype="build"): if os.path.exists(dep.prefix.share.aclocal): @@ -149,7 +159,6 @@ def meson(self, spec, prefix): autoreconf(*ar_args) args = [ - "--prefix={0}".format(prefix), "MOUNT_FUSE_PATH={0}".format(self.prefix.sbin), "UDEV_RULES_PATH={0}".format(self.prefix.etc), "INIT_D_PATH={0}".format(self.prefix.etc), @@ -166,12 +175,4 @@ def meson(self, spec, prefix): else "--disable-shared" ) - configure(*args) - - @when("@:2") - def build(self, spec, prefix): - make() - - @when("@:2") - def install(self, spec, prefix): - make("install") + return args From 9eae0467df3ac974e1c33fc11269bd7bcf65c39d Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi Date: Tue, 17 Feb 2026 12:26:03 +0100 Subject: [PATCH 2/6] drop manual management of autotools build deps --- repos/spack_repo/builtin/packages/libfuse/package.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/repos/spack_repo/builtin/packages/libfuse/package.py b/repos/spack_repo/builtin/packages/libfuse/package.py index bf20ce8bfe7..b4ba88551be 100644 --- a/repos/spack_repo/builtin/packages/libfuse/package.py +++ b/repos/spack_repo/builtin/packages/libfuse/package.py @@ -152,12 +152,6 @@ def meson_args(self): class AutotoolsBuilder(autotools.AutotoolsBuilder): def configure_args(self): - ar_args = ["-ivf"] - for dep in self.spec.dependencies(deptype="build"): - if os.path.exists(dep.prefix.share.aclocal): - ar_args.extend(["-I", dep.prefix.share.aclocal]) - autoreconf(*ar_args) - args = [ "MOUNT_FUSE_PATH={0}".format(self.prefix.sbin), "UDEV_RULES_PATH={0}".format(self.prefix.etc), From 060086ae748c9f61d21e190a36f340ab115fa83c Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi Date: Tue, 17 Feb 2026 12:26:53 +0100 Subject: [PATCH 3/6] drop non-existing variant --- repos/spack_repo/builtin/packages/libfuse/package.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/repos/spack_repo/builtin/packages/libfuse/package.py b/repos/spack_repo/builtin/packages/libfuse/package.py index b4ba88551be..d352f701a77 100644 --- a/repos/spack_repo/builtin/packages/libfuse/package.py +++ b/repos/spack_repo/builtin/packages/libfuse/package.py @@ -158,15 +158,4 @@ def configure_args(self): "INIT_D_PATH={0}".format(self.prefix.etc), ] - args.append( - "--enable-static" - if self.spec.satisfies("default_library=static") - else "--disable-static" - ) - args.append( - "--enable-shared" - if self.spec.satisfies("default_library=shared") - else "--disable-shared" - ) - return args From 25f620d284dca89888de14fa0de68a84386e737f Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi Date: Tue, 17 Feb 2026 12:46:07 +0100 Subject: [PATCH 4/6] drop implicit constraint --- repos/spack_repo/builtin/packages/libfuse/package.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/repos/spack_repo/builtin/packages/libfuse/package.py b/repos/spack_repo/builtin/packages/libfuse/package.py index d352f701a77..8b6f0554a3f 100644 --- a/repos/spack_repo/builtin/packages/libfuse/package.py +++ b/repos/spack_repo/builtin/packages/libfuse/package.py @@ -69,10 +69,10 @@ def url_for_version(self, version): depends_on("cxx", type="build") # generated with when("build_system=autotools"): - depends_on("autoconf", type="build", when="@:2") - depends_on("automake", type="build", when="@:2") - depends_on("libtool", type="build", when="@:2") - depends_on("gettext", type="build", when="@:2") + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + depends_on("gettext", type="build") depends_on("gmake", type="build") From 0bfc8cf2bdd6b67341ec99ba2434a395175a0d8e Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi Date: Tue, 17 Feb 2026 13:30:30 +0100 Subject: [PATCH 5/6] fix format --- repos/spack_repo/builtin/packages/libfuse/package.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/repos/spack_repo/builtin/packages/libfuse/package.py b/repos/spack_repo/builtin/packages/libfuse/package.py index 8b6f0554a3f..e317fc28484 100644 --- a/repos/spack_repo/builtin/packages/libfuse/package.py +++ b/repos/spack_repo/builtin/packages/libfuse/package.py @@ -2,7 +2,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import os import re from spack_repo.builtin.build_systems import autotools, meson @@ -60,9 +59,7 @@ def url_for_version(self, version): variant("utils", default=True, description="Build and install helper and example programs.") build_system( - conditional("meson", when="@3:"), - conditional("autotools", when="@:2"), - default="meson", + conditional("meson", when="@3:"), conditional("autotools", when="@:2"), default="meson" ) depends_on("c", type="build") # generated From c5a7d7c15cb7d20b5b1abe19c2543bd9836c8373 Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi Date: Mon, 23 Feb 2026 09:23:40 +0100 Subject: [PATCH 6/6] make gmake just an autotools dependency --- repos/spack_repo/builtin/packages/libfuse/package.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/repos/spack_repo/builtin/packages/libfuse/package.py b/repos/spack_repo/builtin/packages/libfuse/package.py index e317fc28484..9f1dcb431c6 100644 --- a/repos/spack_repo/builtin/packages/libfuse/package.py +++ b/repos/spack_repo/builtin/packages/libfuse/package.py @@ -70,8 +70,7 @@ def url_for_version(self, version): depends_on("automake", type="build") depends_on("libtool", type="build") depends_on("gettext", type="build") - - depends_on("gmake", type="build") + depends_on("gmake", type="build") provides("fuse") conflicts("+useroot", when="~system_install", msg="useroot requires system_install")