From 3e8f056c549730c6f5d0ea076d10d821adb55f20 Mon Sep 17 00:00:00 2001 From: bielj Date: Tue, 28 Jul 2026 10:52:46 -0700 Subject: [PATCH] build(base): add less + tcsh; bump to 0.1.1 Added to a late apt layer rather than the build-time list at the top, so the unpinned conda solve and chimerax-daily fetch stay cache-hit and this patch release can't silently ship a different scientific stack. tcsh registers /bin/csh via update-alternatives. Bumping pyproject.toml is the whole release mechanism: build-images.yml derives every image tag from it and pushes :latest, on push to astera only. Also trims the actl smoke check to binaries actually inherited from upstream, which the ENV PATH override can shadow silently. Co-Authored-By: Claude Opus 5 (1M context) --- Dockerfile.actl | 7 +++++-- Dockerfile.base | 8 ++++++++ README.md | 5 +++-- pyproject.toml | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Dockerfile.actl b/Dockerfile.actl index 38dc8c9..da2c508 100644 --- a/Dockerfile.actl +++ b/Dockerfile.actl @@ -79,12 +79,15 @@ case "$-" in ;; esac EOF +# Smoke-check only binaries inherited from base/gromacs: the ENV PATH override above can shadow +# them silently. Packages from the apt layer need no check -- apt-get already fails the build. RUN chmod 0644 /usr/local/share/actl-md-workflows-shell-init.sh \ && printf '\n# Astera md-workflows environment\n[ -r /usr/local/share/actl-md-workflows-shell-init.sh ] && . /usr/local/share/actl-md-workflows-shell-init.sh\n' >> /etc/bash.bashrc \ && printf '\n# Astera md-workflows environment\n[ -r /usr/local/share/actl-md-workflows-shell-init.sh ] && . /usr/local/share/actl-md-workflows-shell-init.sh\n' >> /etc/zsh/zshrc \ && for cmd in \ - md_workflows.mdmx gmx micromamba curl wget rsync tini vim nano emacs git zsh htop tmux ncdu ping dig; do \ - command -v "${cmd}" >/dev/null; \ + md_workflows.mdmx gmx micromamba less tcsh; do \ + command -v "${cmd}" >/dev/null \ + || { echo "actl: inherited binary missing from PATH: ${cmd}" >&2; exit 1; }; \ done WORKDIR /home/dev diff --git a/Dockerfile.base b/Dockerfile.base index 2b8bb98..2ae4fdd 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -130,6 +130,14 @@ apt-get install -y /tmp/chimerax.deb \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /home/dev/.config/ChimeraX +# ---------- interactive shells & pager ---------- +# Kept out of the build-time list at the top so runtime additions don't invalidate the unpinned +# conda solve and ChimeraX fetch above. tcsh also provides /bin/csh (via update-alternatives). +RUN apt-get update && apt-get install -y --no-install-recommends \ + less \ + tcsh \ + && rm -rf /var/lib/apt/lists/* + # ---------- shell init (minimal) ---------- # Runs as root by default (see end of file); downstream images (Dockerfile.actl) own the # general user environment. Put the micromamba hook in the *global* bashrc so `micromamba diff --git a/README.md b/README.md index d392d4a..f507b18 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,9 @@ without rebuilding the base: | base | `Dockerfile.base` | CUDA 12.6 devel toolchain, micromamba/conda `lunus` env, lunus, ChimeraX. Architecture-neutral. | | gromacs | `Dockerfile.gromacs` | GROMACS (CUDA, tuned for H100 / AVX-512 by default) + the `md_workflows` package. The consumable image. | -(An Astera-specific `Dockerfile.actl` overlay lives on the `astera` branch and adds workspace -conventions on top of `gromacs`.) +(An Astera-specific `Dockerfile.actl` overlay adds workspace conventions on top of `gromacs`. It +is tracked here so it stays under CI lint coverage, but is built and published only from the +`astera` deployment branch.) ## 1) Build the images diff --git a/pyproject.toml b/pyproject.toml index 0e42fd4..039597b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "md-workflows" -version = "0.1.0" +version = "0.1.1" description = "Molecular dynamics workflow orchestration scripts" requires-python = ">=3.10"