Skip to content

Releases

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 00:16

Changed

  • Major refactor of shelley to be more modular and less repetitive to support
    incoming CVMFS repos
  • Large and messy CVMFSModuleBuilder class replaced with a new set of core classes and functions
    for better error handling and reusability
  • New logic for build so artefacts are deleted when a build is cancelled or
    fails. This ensures shelley clean doesn't leave any stray artefacts.
  • Version ordering follows the same rules as Bioconda to account for uncommon version
    specs (e.g. 0.4.0-dev for dev work, seqtk/r93)
  • If GitHub cannot be reached, the build stops before writing anything and says so,
    e.g. "Couldn't reach GitHub (raw.githubusercontent.com): the request timed out
    after 10 s. Try again in a few seconds.", instead of building a module without
    the tool's command
  • Improved CVMFS error handling (e.g. all errors do not raise generic "check if CVMFS is mounted")
  • Upgrade python dependencies for packaging, pytest, pytest-asyncio, mypy

Added

  • conda's version-ordering code is vendored in shelley/_vendor/ (BSD-3-Clause,
    licence included), because conda cannot be installed as a library dependency.

Removed

  • The 0.4.0 command code: commands/build.py, commands/find.py, commands/search.py,
    commands/clean.py, utils/batch.py, utils/cache.py and builder/cvmfs_builder.py.
    shelley.CVMFSModuleBuilder is no longer exported; shelley.cli_main is the only
    public name.

Fixed

  • shelley search and shelley find -v no longer end in a traceback when output is
    piped or run from a script; with no terminal to page on, they print the first page.
  • CI: ruff no longer checks the design notes under tmp/, which had made lint fail
  • find version ordering fixed
  • build correctly selects latest tool version

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 01:39
443c05a

Added

  • shelley clean removes built modules.
  • Support build for tools with no shpc registry BioShell/#22
  • Dependabot opens monthly, grouped PRs into dev for GitHub Actions and uv.lock
    updates; see docs/how-to/developer-setup.md.
  • Release workflow: pushing a vX.Y.Z tag on main checks that the versions and
    CHANGELOG match, builds and smoke-tests the wheel, and creates the GitHub release
    with the wheel and sdist attached. See docs/how-to/developer-setup.md.
  • Monthly data refresh workflow: regenerates rsec_meta.json.gz and
    galaxy_singularity_cache.json.gz, and opens a PR into
    dev when their content changes. See docs/how-to/maintain-corpus.md.
  • Test coverage reporting with pytest-cov (in the dev extra). CI prints coverage
    for every test run and adds a summary table to the run's page. See
    docs/how-to/developer-setup.md.
  • README badges for CI status, latest release, supported Python, licence, ruff and uv.
  • Release docs cover Zenodo archiving and DOIs, and why shelley is not yet on PyPI.
    See docs/how-to/developer-setup.md.

Changed

  • Local registries are now built in versioned subdirectories for shelley clean to
    correctly uninstall tool versions.
  • Development tooling now uses ruff for linting and
    formatting, replacing the unused black and flake8 in the dev extra. CI enforces
    ruff check and ruff format --check on every pull request. The codebase was
    reformatted once to match; see docs/how-to/developer-setup.md.

Removed

  • print_about() and ShelleyStyle.create_about_panel() from shelley.utils. They were
    unused and raised NameError if called.
  • Support for Python 3.10. shelley now requires Python 3.11 or later.

Fixed

  • docs/how-to/maintain-corpus.md pointed to a removed script for regenerating the
    Galaxy cache; it now uses shelley-build-galaxy.

v0.3.0

Choose a tag to compare

@fredjaya fredjaya released this 30 Jul 22:22
3ac63c6

[0.3.0] - 2026-07-31

Multi-user module builds.

Fixed

  • shelley build now produces modules every user on the machine can load. shelley
    never told shpc where to install, so it inherited shpc's default of
    module_base: $HOME/shpc/modules. Because the build re-execs under sudo -E, which
    preserves HOME, root wrote the modules and wrapper scripts into the invoking user's
    home directory — unreadable and untraversable by anyone else, leaving the modulefile
    symlink under /apps/Modules/modulefiles pointing into an inaccessible tree.
    Artifacts now land under /apps/shpc and /apps/local as documented.
  • Build artifacts are readable and executable by all users: directories 0755, files
    0644, wrapper scripts 0755, never group- or other-writable. Enforced by a
    umask 022 set before anything forks, plus an explicit chmod pass over the subtrees
    each build touched. A restrictive umask in the invoking shell no longer leaks into
    /apps.
  • /apps/shpc and /apps/local are created on first build. Previously nothing created
    them, and the one line referencing /apps/shpc targeted a path that did not exist.
  • The sudo probe now covers all three build roots, not just
    /apps/Modules/modulefiles, so a first run on a fresh machine escalates correctly.
  • shelley find no longer reports a module as installed when its modulefile symlink does
    not resolve to a readable file — which is the case for every module built by an earlier
    version into a home directory.
  • The sudo re-exec now re-runs the shelley that is actually running, via
    sys.executable -m shelley, instead of resolving shelley on PATH. A PATH lookup can
    find a different installation: with a system-wide shelley present, running a checkout
    handed the privileged half of the build to the system copy, so the process that actually
    installs could be an older version. The symptom was baffling — the unprivileged half
    printed the new version's output while the build behaved like the old one, writing to
    $HOME/shpc anyway. Requires the new shelley/__main__.py.

Changed

  • Every shpc invocation is pinned to a shelley-managed settings file at
    /apps/shpc/settings.yml via --settings-file. This is the highest-precedence layer in
    shpc's resolution chain, so a per-user ~/.singularity-hpc/settings.yml can no longer
    redirect a shared build. The file is partial — shpc still merges its own defaults
    underneath — and is regenerated only when stale.
  • /apps/local is declared in that settings file rather than registered with
    shpc config add registry, which would have expanded the override file into a frozen
    snapshot of every site default.

Added

  • SHELLEY_SHPC_BASE, SHELLEY_LOCAL_REGISTRY and SHELLEY_LMOD_MODULES_PATH override
    the build roots (defaults /apps/shpc, /apps/local,
    /apps/Modules/modulefiles). They are forwarded explicitly across the sudo re-exec, so
    the elevated child agrees with the parent. Note that SHELLEY_SHPC_BASE is effectively
    write-once: a generated module.lua bakes in absolute paths, so changing it after
    modules exist invalidates them.

Removed

  • The chown -R $SUDO_USER:$SUDO_USER over the shpc base. Handing the tree to a single
    account is what made builds single-user, and it let one unprivileged user rewrite
    modules everyone else executes.

Migration

Modules built with 0.2.0 or earlier live under the original builder's home directory and
cannot be salvaged — module.lua bakes in absolute wrapper and container paths, so they
cannot be moved or chmodded into working order. Find them with
find /apps/Modules/modulefiles -type l -lname '/home/*' and rebuild those tools.

v0.2.0

Choose a tag to compare

@fredjaya fredjaya released this 22 Jul 04:46
5ea3504

[0.2.0] - 2026-07-22

Pinned version for BioShell launch.

Added

  • shelley find <tool> -v — lists every individual container build (one row per
    --hash) with the date modified, install status and the full CVMFS container path.
  • [EXPERIMENTAL] shelley build <tool> -i (--interactive) — opens an interactive session to
    curate the aliases a module exposes (deselect, rename, and add) for both
    upstream and local builds.
  • Update check — on startup shelley compares its version against the main
    branch and prints upgrade instructions when a newer release is available. The
    result is cached for a day and fails silently on any network error.
  • shelley update — upgrades shelley in place. It detects whether the install is
    system-wide (/opt/uv/tools) or per-user and runs the matching
    uv tool upgrade shelley for you.

Changed

  • Merged the versions command into find. Run shelley find <tool> -v
    (or --verbose) to see the full, paginated list of container versions.

Removed

  • versions command. Use shelley find <tool> -v instead.

Fixed

  • shpc and singularity are now loaded when required i.e. during shelley build.

v0.1.0

Choose a tag to compare

@fredjaya fredjaya released this 03 Jul 02:59

What's Changed

New Contributors

Full Changelog: https://github.com/Sydney-Informatics-Hub/shelley/commits/v0.1.0