Skip to content

charliecloud: require squashfuse 0.4.0 or newer for 0.44 and later - #7083

Merged
cmelone merged 1 commit into
spack:developfrom
bhargavchintam:fix/5400-charliecloud-squashfuse
Nov 11, 2026
Merged

cmelone merged 1 commit into
spack:developfrom
bhargavchintam:fix/5400-charliecloud-squashfuse

Conversation

@bhargavchintam

Copy link
Copy Markdown
Contributor

Fixes #5400.

Why

In #5400, @reidpr (a Charliecloud maintainer) reports that Charliecloud 0.44 enabled multi-threaded FUSE and that older SquashFUSE seems not to support it well; I have not tested that myself, and this change follows his read. The package currently allows squashfuse@0.1.105:0.2.0,0.4.0: for every version from 0.36 on, so today a 0.44 build against SquashFUSE 0.2.0 concretizes without complaint. Upstream's own install docs moved the floor between releases: the 0.44 install page still says "SquashFUSE v0.1.105 or later, excluding v0.3.0", while the 0.45 and main pages say "SquashFUSE v0.4.0 or later".

What changed

One file, repos/spack_repo/builtin/packages/charliecloud/package.py, inside with when("+squashfuse")::

  • the existing squashfuse@0.1.105:0.2.0,0.4.0: rule is capped to when="@0.36:0.43";
  • a new depends_on("squashfuse@0.4.0:", type="link", when="@0.44:") follows it, with a three-line comment pointing at charliecloud: update SquashFUSE dependency #5400.

Versions 0.36 to 0.43 keep the range they had, since the issue names 0.44 as the first affected release. The 0.35 line and the configure arguments are untouched.

Checks

Run in a Linux container (spack 1.3.0.dev0, this repo at f469a0b plus this diff; charliecloud has conflicts("platform=darwin"), so I could not run these on macOS). Spec output is trimmed to the charliecloud and squashfuse lines.

Before, on develop:

$ spack spec charliecloud@0.44 ^squashfuse@0.2.0
 -   charliecloud@0.44+cdi~docs+squashfuse build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
 -       ^squashfuse@0.2.0+lz4+lzo~min_size+shared+static+xz+zlib+zstd build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
exit=0

$ spack spec charliecloud@main ^squashfuse@0.2.0
 -   charliecloud@main+cdi~docs+squashfuse build_system=autotools commit=974d8d9d7b34ff3e6bc5326007aa33c1b035ff9a platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
 -       ^squashfuse@0.2.0+lz4+lzo~min_size+shared+static+xz+zlib+zstd build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
exit=0

After, on this branch:

$ spack spec charliecloud@0.44 ^squashfuse@0.2.0
==> Error: failed to concretize `charliecloud@0.44 ^squashfuse@0.2.0` for the following reasons:
       1. Cannot satisfy 'squashfuse@0.2.0'
==> Error:      2. Cannot satisfy 'squashfuse@0.2.0' (version 0.6.1 does not match)
        required because charliecloud@0.44 ^squashfuse@0.2.0 requested explicitly
     3. Cannot satisfy 'squashfuse@0.4.0:' and 'squashfuse@0.2.0'
        required because charliecloud@0.44 ^squashfuse@0.2.0 requested explicitly
        required because charliecloud depends on squashfuse@0.4.0: when @0.44:+squashfuse
exit=1

$ spack spec charliecloud@0.44
 -   charliecloud@0.44+cdi~docs+squashfuse build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
 -       ^squashfuse@0.6.1+lz4+lzo~min_size+shared+static+xz+zlib+zstd build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
exit=0

$ spack spec charliecloud@0.43 ^squashfuse@0.2.0
 -   charliecloud@0.43+cdi~docs+squashfuse build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
 -       ^squashfuse@0.2.0+lz4+lzo~min_size+shared+static+xz+zlib+zstd build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
exit=0

$ spack spec charliecloud@0.44 ^squashfuse@0.4.0
 -   charliecloud@0.44+cdi~docs+squashfuse build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
 -       ^squashfuse@0.4.0+lz4+lzo~min_size+shared+static+xz+zlib+zstd build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
exit=0

$ spack spec charliecloud@main ^squashfuse@0.2.0
==> Error: failed to concretize `charliecloud@main ^squashfuse@0.2.0` for the following reasons:
       1. Cannot satisfy 'charliecloud@main'
==> Error:      2. Cannot satisfy 'charliecloud@main' (version 0.43 does not match)
exit=1

$ spack spec charliecloud@main ^squashfuse@0.4.0
 -   charliecloud@main+cdi~docs+squashfuse build_system=autotools commit=974d8d9d7b34ff3e6bc5326007aa33c1b035ff9a platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
 -       ^squashfuse@0.4.0+lz4+lzo~min_size+shared+static+xz+zlib+zstd build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
exit=0

$ spack spec charliecloud@0.44 ~squashfuse
 -   charliecloud@0.44+cdi~docs~squashfuse build_system=autotools platform=linux os=ubuntu24.04 target=cascadelake %c=gcc@13.3.0
exit=0

The @main error message blames charliecloud@main rather than the squashfuse rule, so on its own it is not proof; read with the before run (main accepted 0.2.0, exit 0) and the main ^squashfuse@0.4.0 run (exit 0), it shows main now sits under the @0.44: rule, which is what I expect since Spack treats branch versions as newest.

Repo checks on the branch:

$ .ci/style_check.sh develop
repos/spack_repo/builtin/packages/charliecloud/package.py
==> running ruff format
1 file already formatted
==> running ruff check
All checks passed!
==> style checks passed
exit=0

$ spack style
==> Running ruff-format checks
  ruff-format checks were clean
==> Running ruff-check checks
  ruff-check checks were clean
==> Running mypy checks
Success: no issues found in 654 source files
  mypy checks were clean
==> spack style checks were clean
exit=0

$ spack audit packages charliecloud
PKG-DIRECTIVES: passed
PKG-ATTRIBUTES: passed
PKG-PROPERTIES: passed
exit=0

Note

If you would rather tighten the whole @0.36: range instead of splitting at 0.44, I can change it; I kept the split because the issue only names 0.44 and up. This is my first PR here and I am doing it as part of a course; I used Claude as a coding assistant for the checks and drafting, and the change and this text are mine.

Charliecloud 0.44 enabled multi-threaded FUSE, which the Charliecloud
maintainers report older SquashFUSE seems not to support well. Keep the
existing 0.1.105:0.2.0,0.4.0: range for 0.36 through 0.43 and require
squashfuse@0.4.0: from 0.44 on.

Fixes spack#5400
@spackbot-triage spackbot-triage Bot added dependencies Modifications with a `depends_on()` directive update-package Modifications to packages in the repository labels Oct 15, 2026
@spackbot-triage
spackbot-triage Bot requested review from j-ogas and reidpr October 15, 2026 09:48
@bhargavchintam

Copy link
Copy Markdown
Contributor Author

@j-ogas @reidpr, the ci workflow on this PR is still waiting for a maintainer to approve it (run 38715587562 shows action_required), so ci/gitlab-ci has not started. Could one of you approve the run when you have a moment? The change is the one-line squashfuse split in charliecloud/package.py.

@j-ogas j-ogas left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks, and sorry for the delayed response.

@cmelone
cmelone enabled auto-merge (squash) November 11, 2026 01:01
@cmelone
cmelone merged commit 4ec61c9 into spack:develop Nov 11, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Modifications with a `depends_on()` directive update-package Modifications to packages in the repository

Projects

None yet

Development

Successfully merging this pull request may close these issues.

charliecloud: update SquashFUSE dependency

3 participants