From 288811edbf3c6d42602a6540b7b5cd7144abc40b Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Fri, 22 May 2026 15:37:03 -0600 Subject: [PATCH 1/9] Add workbench-session std/min variants, expand std optional packages - bakery.yaml: add Standard (std, primary) and Minimal (min) variants to workbench-session, mirroring workbench. Existing tags without a variant suffix continue to resolve to std. - workbench-session/template: conditionally COPY and install optional packages on the std variant only, assert in goss on Standard only, document the new tag format and variants in the README. - workbench std + workbench-session std optional package lists: expand to a curated dev-header + tooling set covering the most- downloaded CRAN packages and common Python source-build paths. Templates are grouped with Jinja {# ... -#} annotations explaining each group; rendered .txt files stay annotation-free until posit-dev/images-shared#550 lands. Rationale, exclusion list, and tag examples are documented in the PR description. Co-Authored-By: Claude Opus 4.7 (1M context) --- bakery.yaml | 8 ++ workbench-session/README.md | 25 +++- ...buntu2204 => Containerfile.ubuntu2204.min} | 0 .../matrix/Containerfile.ubuntu2204.std | 95 +++++++++++++ ...buntu2404 => Containerfile.ubuntu2404.min} | 0 .../matrix/Containerfile.ubuntu2404.std | 103 ++++++++++++++ .../deps/ubuntu-22.04_optional_packages.txt | 78 +++++++++++ .../deps/ubuntu-24.04_optional_packages.txt | 78 +++++++++++ workbench-session/matrix/test/goss.yaml | 9 ++ .../template/Containerfile.ubuntu2204.jinja2 | 6 + .../template/Containerfile.ubuntu2404.jinja2 | 6 + .../ubuntu-22.04_optional_packages.txt.jinja2 | 102 ++++++++++++++ .../ubuntu-24.04_optional_packages.txt.jinja2 | 108 +++++++++++++++ .../template/test/goss.yaml.jinja2 | 9 ++ .../ubuntu-22.04_optional_packages.txt.jinja2 | 124 +++++++++++++---- .../ubuntu-24.04_optional_packages.txt.jinja2 | 128 ++++++++++++++---- 16 files changed, 817 insertions(+), 62 deletions(-) rename workbench-session/matrix/{Containerfile.ubuntu2204 => Containerfile.ubuntu2204.min} (100%) create mode 100644 workbench-session/matrix/Containerfile.ubuntu2204.std rename workbench-session/matrix/{Containerfile.ubuntu2404 => Containerfile.ubuntu2404.min} (100%) create mode 100644 workbench-session/matrix/Containerfile.ubuntu2404.std create mode 100644 workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt create mode 100644 workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt create mode 100644 workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 create mode 100644 workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 diff --git a/bakery.yaml b/bakery.yaml index 961b62a8..30c2e643 100644 --- a/bakery.yaml +++ b/bakery.yaml @@ -176,6 +176,14 @@ images: buildSecrets: - id: github_token envVar: GITHUB_TOKEN + variants: + - name: Standard + extension: std + tagDisplayName: std + primary: true + - name: Minimal + extension: min + tagDisplayName: min matrix: namePattern: "R{{ Dependencies.R }}-python{{ Dependencies.python }}" dependencyConstraints: diff --git a/workbench-session/README.md b/workbench-session/README.md index c417248a..90568224 100644 --- a/workbench-session/README.md +++ b/workbench-session/README.md @@ -55,14 +55,16 @@ Posit publishes images to: - Docker Hub: `docker.io/posit/workbench-session` - GitHub Container Registry: `ghcr.io/posit-dev/workbench-session` -Ubuntu 24.04 is the default OS. +Ubuntu 24.04 is the default OS. The Standard (`std`) variant is the default; tags without a variant suffix resolve to it. -The tag format is: `R{r_version}-python{python_version}-{os}` +The tag format is: `R{r_version}-python{python_version}-{os}[-{variant}]` Examples: -- `R4.5.2-python3.14.3-ubuntu-24.04` — R 4.5.2, Python 3.14.3, Ubuntu 24.04 -- `R4.4.3-python3.12.12-ubuntu-22.04` — R 4.4.3, Python 3.12.12, Ubuntu 22.04 -- `R4.3.3-python3.11.15-ubuntu-24.04` — R 4.3.3, Python 3.11.15, Ubuntu 24.04 +- `R4.5.2-python3.14.3-ubuntu-24.04` — R 4.5.2, Python 3.14.3, Ubuntu 24.04, standard variant +- `R4.5.2-python3.14.3-ubuntu-24.04-std` — Explicit standard variant +- `R4.5.2-python3.14.3-ubuntu-24.04-min` — Minimal variant +- `R4.4.3-python3.12.12-ubuntu-22.04` — R 4.4.3, Python 3.12.12, Ubuntu 22.04, standard variant +- `R4.3.3-python3.11.15-ubuntu-24.04` — R 4.3.3, Python 3.11.15, Ubuntu 24.04, standard variant ## Architectures @@ -86,6 +88,19 @@ Each image includes: These images do not bundle the Workbench session components themselves. The `workbench-session-init` init container provides those components at runtime through a shared volume. +## Image variants + +Two variants are available: + +| Variant | Description | +|---|---| +| Standard (`std`) | Opinionated image, runs out of the box. Bundles R, Python, Jupyter, Quarto, TinyTeX, and Posit Professional Drivers, plus a curated set of system development libraries that cover the most commonly used CRAN and PyPI packages. | +| Minimal (`min`) | Same runtime stack as Standard (R, Python, Jupyter, Quarto, TinyTeX, Posit Professional Drivers) without the additional system development libraries. Use this variant as a starting point for custom images when you want to control which system libraries are present. | + +Both variants ship the same R, Python, Jupyter, Quarto, TinyTeX, and Posit Professional Drivers versions for a given tag. The Containerfiles in this repository under `workbench-session/matrix/` document the exact packages installed in any tag. + +See [extending examples](https://github.com/posit-dev/images-examples/tree/main/extending) for how to build on the Minimal image. + ## User These images do not declare a `USER`. Containers start as `root`. The Workbench Job Launcher manages the runtime user when scheduling session pods, dropping privileges to the signed-in user as configured by the Workbench administrator. diff --git a/workbench-session/matrix/Containerfile.ubuntu2204 b/workbench-session/matrix/Containerfile.ubuntu2204.min similarity index 100% rename from workbench-session/matrix/Containerfile.ubuntu2204 rename to workbench-session/matrix/Containerfile.ubuntu2204.min diff --git a/workbench-session/matrix/Containerfile.ubuntu2204.std b/workbench-session/matrix/Containerfile.ubuntu2204.std new file mode 100644 index 00000000..becb385c --- /dev/null +++ b/workbench-session/matrix/Containerfile.ubuntu2204.std @@ -0,0 +1,95 @@ +# Build Python using uv in a separate stage +FROM ghcr.io/astral-sh/uv:debian-slim AS python-builder + +ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy +ENV UV_PYTHON_INSTALL_DIR=/opt/python +ENV UV_PYTHON_PREFERENCE=only-managed + +ARG PYTHON_VERSION +RUN uv python install $PYTHON_VERSION +RUN mv /opt/python/cpython-$PYTHON_VERSION-linux-*/ /opt/python/$PYTHON_VERSION + + +FROM docker.io/library/ubuntu:22.04 +LABEL org.opencontainers.image.base.name="docker.io/library/ubuntu:22.04" + +### ARG declarations ### +ARG DEBIAN_FRONTEND=noninteractive +ARG BUILDARCH +ARG TARGETARCH=${BUILDARCH} +ARG R_VERSION +ARG PYTHON_VERSION +ARG QUARTO_VERSION + +### Install Apt Packages ### +RUN echo 'Acquire::Retries "3"; Acquire::http::Timeout "30"; Acquire::https::Timeout "30";' > /etc/apt/apt.conf.d/99-retries && \ + apt-get update -yqq --fix-missing && \ + apt-get upgrade -yqq && \ + apt-get dist-upgrade -yqq && \ + apt-get autoremove -yqq --purge && \ + apt-get install -yqq --no-install-recommends \ + curl \ + ca-certificates \ + gnupg \ + tar && \ + bash -c "$(curl -1fsSL 'https://dl.posit.co/public/pro/setup.deb.sh')" && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* + +COPY workbench-session/matrix/deps/ubuntu-22.04_packages.txt /tmp/ubuntu-22.04_packages.txt +COPY workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt /tmp/ubuntu-22.04_optional_packages.txt +RUN apt-get update -yqq && \ + xargs -a /tmp/ubuntu-22.04_packages.txt apt-get install -yqq --no-install-recommends && \ + xargs -a /tmp/ubuntu-22.04_optional_packages.txt apt-get install -yqq --no-install-recommends && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* + + +# Install Python from previous stage +COPY --from=python-builder /opt/python /opt/python + +### Install Jupyter ### +RUN /opt/python/$PYTHON_VERSION/bin/python -m venv /opt/python/jupyter && \ + /opt/python/jupyter/bin/pip install --no-cache-dir --upgrade pip setuptools wheel && \ + /opt/python/jupyter/bin/pip install --no-cache-dir --upgrade \ + "jupyterlab<5" \ + notebook \ + "pwb_jupyterlab<2" && \ + rm -rf /opt/python/jupyter/lib/python*/site-packages/jupyterlab/tests && \ + rm -rf /opt/python/jupyter/lib/python*/site-packages/jupyterlab/galata && \ + rm -f /opt/python/jupyter/lib/python*/site-packages/jupyterlab/staging/yarn.lock && \ + ln -s /opt/python/jupyter/bin/jupyter /usr/local/bin/jupyter + +### Install Jupyter kernel ### +RUN /opt/python/$PYTHON_VERSION/bin/pip install --no-cache-dir --upgrade --break-system-packages \ + ipykernel && \ + /opt/python/$PYTHON_VERSION/bin/python -m ipykernel install --user --name python$PYTHON_VERSION --display-name "Python $PYTHON_VERSION" + +# Install R +RUN RUN_UNATTENDED=1 R_VERSION=$R_VERSION bash -c "$(curl -fsSL https://rstd.io/r-install)" && \ + find . -type f -name '[rR]-$R_VERSION.*\.(deb|rpm)' -delete + +### Install Quarto ### +RUN bash -c "$(curl -1fsSL 'https://dl.posit.co/public/open/setup.deb.sh')" && \ + apt-get install -yqq --no-install-recommends \ + quarto=$QUARTO_VERSION && \ + apt-mark hold quarto && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* + +### Install TinyTeX ### +# ADD busts the cache on new TinyTeX releases. +# HOME="/opt" workaround: https://github.com/quarto-dev/quarto-cli/issues/11800 +ADD https://github.com/rstudio/tinytex-releases/releases/latest /tmp/tinytex-release.json +RUN apt-get update -yqq && \ + apt-get install -yqq --no-install-recommends \ + xz-utils && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* && \ + GH_TOKEN="$([ -s /run/secrets/github_token ] && cat /run/secrets/github_token)" HOME="/opt" /opt/quarto/bin/quarto install tinytex --no-prompt --update-path && \ + rm -f /tmp/tinytex-release.json + +COPY workbench-session/matrix/conf/vscode.extensions.conf /etc/rstudio/vscode.extensions.conf +COPY workbench-session/matrix/conf/positron.extensions.conf /etc/rstudio/positron.extensions.conf + +EXPOSE 8788/tcp diff --git a/workbench-session/matrix/Containerfile.ubuntu2404 b/workbench-session/matrix/Containerfile.ubuntu2404.min similarity index 100% rename from workbench-session/matrix/Containerfile.ubuntu2404 rename to workbench-session/matrix/Containerfile.ubuntu2404.min diff --git a/workbench-session/matrix/Containerfile.ubuntu2404.std b/workbench-session/matrix/Containerfile.ubuntu2404.std new file mode 100644 index 00000000..7c976332 --- /dev/null +++ b/workbench-session/matrix/Containerfile.ubuntu2404.std @@ -0,0 +1,103 @@ +# Build Python using uv in a separate stage +FROM ghcr.io/astral-sh/uv:debian-slim AS python-builder + +ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy +ENV UV_PYTHON_INSTALL_DIR=/opt/python +ENV UV_PYTHON_PREFERENCE=only-managed + +ARG PYTHON_VERSION +RUN uv python install $PYTHON_VERSION +RUN mv /opt/python/cpython-$PYTHON_VERSION-linux-*/ /opt/python/$PYTHON_VERSION + + +FROM docker.io/library/ubuntu:24.04 +LABEL org.opencontainers.image.base.name="docker.io/library/ubuntu:24.04" + +### ARG declarations ### +ARG DEBIAN_FRONTEND=noninteractive +ARG BUILDARCH +ARG TARGETARCH=${BUILDARCH} +ARG R_VERSION +ARG PYTHON_VERSION +ARG QUARTO_VERSION + +### Install Apt Packages ### +RUN echo 'Acquire::Retries "3"; Acquire::http::Timeout "30"; Acquire::https::Timeout "30";' > /etc/apt/apt.conf.d/99-retries && \ + apt-get update -yqq --fix-missing && \ + apt-get upgrade -yqq && \ + apt-get dist-upgrade -yqq && \ + apt-get autoremove -yqq --purge && \ + apt-get install -yqq --no-install-recommends \ + curl \ + ca-certificates \ + gnupg \ + tar && \ + bash -c "$(curl -1fsSL 'https://dl.posit.co/public/pro/setup.deb.sh')" && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* + +COPY workbench-session/matrix/deps/ubuntu-24.04_packages.txt /tmp/ubuntu-24.04_packages.txt +COPY workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt /tmp/ubuntu-24.04_optional_packages.txt +RUN apt-get update -yqq && \ + xargs -a /tmp/ubuntu-24.04_packages.txt apt-get install -yqq --no-install-recommends && \ + xargs -a /tmp/ubuntu-24.04_optional_packages.txt apt-get install -yqq --no-install-recommends && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* + + +### Install Pro Drivers ### +RUN apt-get update -yqq && \ + apt-get install -yqq --no-install-recommends \ + rstudio-drivers && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* +RUN cp /opt/rstudio-drivers/odbcinst.ini.sample /etc/odbcinst.ini + +# Install Python from previous stage +COPY --from=python-builder /opt/python /opt/python + +### Install Jupyter ### +RUN /opt/python/$PYTHON_VERSION/bin/python -m venv /opt/python/jupyter && \ + /opt/python/jupyter/bin/pip install --no-cache-dir --upgrade pip setuptools wheel && \ + /opt/python/jupyter/bin/pip install --no-cache-dir --upgrade \ + "jupyterlab<5" \ + notebook \ + "pwb_jupyterlab<2" && \ + rm -rf /opt/python/jupyter/lib/python*/site-packages/jupyterlab/tests && \ + rm -rf /opt/python/jupyter/lib/python*/site-packages/jupyterlab/galata && \ + rm -f /opt/python/jupyter/lib/python*/site-packages/jupyterlab/staging/yarn.lock && \ + ln -s /opt/python/jupyter/bin/jupyter /usr/local/bin/jupyter + +### Install Jupyter kernel ### +RUN /opt/python/$PYTHON_VERSION/bin/pip install --no-cache-dir --upgrade --break-system-packages \ + ipykernel && \ + /opt/python/$PYTHON_VERSION/bin/python -m ipykernel install --user --name python$PYTHON_VERSION --display-name "Python $PYTHON_VERSION" + +# Install R +RUN RUN_UNATTENDED=1 R_VERSION=$R_VERSION bash -c "$(curl -fsSL https://rstd.io/r-install)" && \ + find . -type f -name '[rR]-$R_VERSION.*\.(deb|rpm)' -delete + +### Install Quarto ### +RUN bash -c "$(curl -1fsSL 'https://dl.posit.co/public/open/setup.deb.sh')" && \ + apt-get install -yqq --no-install-recommends \ + quarto=$QUARTO_VERSION && \ + apt-mark hold quarto && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* + +### Install TinyTeX ### +# ADD busts the cache on new TinyTeX releases. +# HOME="/opt" workaround: https://github.com/quarto-dev/quarto-cli/issues/11800 +ADD https://github.com/rstudio/tinytex-releases/releases/latest /tmp/tinytex-release.json +RUN apt-get update -yqq && \ + apt-get install -yqq --no-install-recommends \ + xz-utils && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* && \ + GH_TOKEN="$([ -s /run/secrets/github_token ] && cat /run/secrets/github_token)" HOME="/opt" /opt/quarto/bin/quarto install tinytex --no-prompt --update-path && \ + rm -f /tmp/tinytex-release.json + +COPY workbench-session/matrix/conf/vscode.extensions.conf /etc/rstudio/vscode.extensions.conf +COPY workbench-session/matrix/conf/positron.extensions.conf /etc/rstudio/positron.extensions.conf + +EXPOSE 8788/tcp diff --git a/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt b/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt new file mode 100644 index 00000000..01b93a4d --- /dev/null +++ b/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt @@ -0,0 +1,78 @@ +autoconf +automake +cmake +gfortran +make +patch +pkg-config +bzip2 +unzip +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript +gsfonts +imagemagick +libcairo2-dev +libfontconfig1-dev +libfreetype6-dev +libfribidi-dev +libharfbuzz-dev +libjpeg-dev +libmagick++-dev +libpango1.0-dev +libpng-dev +libtiff-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev +libuv1-dev +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev +tcl +tk +tk-dev +tk-table +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +gdb +perl +strace diff --git a/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt new file mode 100644 index 00000000..01b93a4d --- /dev/null +++ b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt @@ -0,0 +1,78 @@ +autoconf +automake +cmake +gfortran +make +patch +pkg-config +bzip2 +unzip +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript +gsfonts +imagemagick +libcairo2-dev +libfontconfig1-dev +libfreetype6-dev +libfribidi-dev +libharfbuzz-dev +libjpeg-dev +libmagick++-dev +libpango1.0-dev +libpng-dev +libtiff-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev +libuv1-dev +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev +tcl +tk +tk-dev +tk-table +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +gdb +perl +strace diff --git a/workbench-session/matrix/test/goss.yaml b/workbench-session/matrix/test/goss.yaml index 1e010850..a3e3c105 100644 --- a/workbench-session/matrix/test/goss.yaml +++ b/workbench-session/matrix/test/goss.yaml @@ -5,6 +5,15 @@ package: {{.}}: installed: true {{end}} + {{ if eq .Env.IMAGE_VARIANT "Standard" }} + + {{ $apt_optional_package_list_path := printf "/tmp/version/deps/%s-%s_optional_packages.txt" .Env.IMAGE_OS_NAME .Env.IMAGE_OS_VERSION }} + {{ $apt_optional_package_list := readFile $apt_optional_package_list_path | splitList "\n" }} + {{- range $apt_optional_package_list }} + {{.}}: + installed: true + {{end}} + {{ end }} quarto: installed: true versions: diff --git a/workbench-session/template/Containerfile.ubuntu2204.jinja2 b/workbench-session/template/Containerfile.ubuntu2204.jinja2 index 2509c4a3..894b40ed 100644 --- a/workbench-session/template/Containerfile.ubuntu2204.jinja2 +++ b/workbench-session/template/Containerfile.ubuntu2204.jinja2 @@ -26,8 +26,14 @@ SHELL ["/bin/bash", "-euo", "pipefail", "-c"] ### Install Apt Packages ### {{ apt.run_setup() }} +{% if Image.Variant != "Minimal" -%} +COPY {{ Path.Version }}/deps/ubuntu-22.04_packages.txt /tmp/ubuntu-22.04_packages.txt +COPY {{ Path.Version }}/deps/ubuntu-22.04_optional_packages.txt /tmp/ubuntu-22.04_optional_packages.txt +{{ apt.run_install(files = ['/tmp/ubuntu-22.04_packages.txt', '/tmp/ubuntu-22.04_optional_packages.txt']) }} +{% else -%} COPY {{ Path.Version }}/deps/ubuntu-22.04_packages.txt /tmp/ubuntu-22.04_packages.txt {{ apt.run_install(files = '/tmp/ubuntu-22.04_packages.txt') }} +{%- endif %} ### Install Pro Drivers ### {{ apt.run_install(packages="rstudio-drivers") }} diff --git a/workbench-session/template/Containerfile.ubuntu2404.jinja2 b/workbench-session/template/Containerfile.ubuntu2404.jinja2 index f2c24e9d..58c45fa0 100644 --- a/workbench-session/template/Containerfile.ubuntu2404.jinja2 +++ b/workbench-session/template/Containerfile.ubuntu2404.jinja2 @@ -26,8 +26,14 @@ SHELL ["/bin/bash", "-euo", "pipefail", "-c"] ### Install Apt Packages ### {{ apt.run_setup() }} +{% if Image.Variant != "Minimal" -%} +COPY {{ Path.Version }}/deps/ubuntu-24.04_packages.txt /tmp/ubuntu-24.04_packages.txt +COPY {{ Path.Version }}/deps/ubuntu-24.04_optional_packages.txt /tmp/ubuntu-24.04_optional_packages.txt +{{ apt.run_install(files = ['/tmp/ubuntu-24.04_packages.txt', '/tmp/ubuntu-24.04_optional_packages.txt']) }} +{% else -%} COPY {{ Path.Version }}/deps/ubuntu-24.04_packages.txt /tmp/ubuntu-24.04_packages.txt {{ apt.run_install(files = '/tmp/ubuntu-24.04_packages.txt') }} +{%- endif %} ### Install Pro Drivers ### {{ apt.run_install(packages="rstudio-drivers") }} diff --git a/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 new file mode 100644 index 00000000..096a431c --- /dev/null +++ b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -0,0 +1,102 @@ +{#- +Standard-variant optional apt packages for the workbench-session matrix +image on Ubuntu 22.04 (jammy). Mirrors the 24.04 session list - see that +template for what is included vs. dropped relative to the workbench image, +and the workbench 22.04 template for jammy-specific naming notes. +-#} +{# Build toolchain - source installs of compiled R/Python pkgs (Matrix, RcppArmadillo, scipy) -#} +autoconf +automake +cmake +gfortran +make +patch +pkg-config +{# Compression CLI tools - source archive extraction, Quarto bundles -#} +bzip2 +unzip +zip +{# Compression headers - data.table, httpuv, Pillow, scipy, lxml from source -#} +libbz2-dev +liblzma-dev +zlib1g-dev +{# TLS / HTTP / crypto - curl, httr, httr2, openssl, urllib3, cryptography, sodium, plumber -#} +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +{# FFI / readline / regex - Python cffi/cryptography, source rebuilds of R + Python -#} +libffi-dev +libpcre2-dev +libreadline-dev +{# XML / Unicode / text - xml2, XML, stringi, lxml, arrow -#} +libicu-dev +libxml2-dev +libxslt1-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev +{# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} +libgit2-dev +openssh-client +wget +{# Geospatial - sf, terra, stars, geopandas, rasterio, pyproj -#} +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +{# Graphics / fonts / imaging - ragg, systemfonts, textshaping, magick, Cairo, Pillow, matplotlib -#} +fonts-dejavu-core +fonts-liberation +ghostscript +gsfonts +imagemagick +libcairo2-dev +libfontconfig1-dev +libfreetype6-dev +libfribidi-dev +libharfbuzz-dev +libjpeg-dev +libmagick++-dev +libpango1.0-dev +libpng-dev +libtiff-dev +libwebp-dev +{# Math libraries - igraph (GLPK), gmp, Rmpfr, gsl, RcppGSL, Bioconductor numerics -#} +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +{# V8 / protobuf / arrow / httpuv source build -#} +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev +libuv1-dev +protobuf-compiler +{# PDF processing - pdftools, pdfminer.six, pdf2image, magick PDF rasterization -#} +libpoppler-cpp-dev +poppler-data +poppler-utils +{# X11 / OpenGL - rgl, plotly 3D, configure-script probes that test for X libs -#} +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev +{# Tcl/Tk - tcltk R pkg, Python tkinter -#} +tcl +tk +tk-dev +tk-table +{# Java - rJava, RJDBC, xlsx, JPype1; run R CMD javareconf after install -#} +default-jdk +{# Authentication / directory - mongolite, pymongo GSSAPI, python-ldap, requests-kerberos -#} +libkrb5-dev +libldap2-dev +libsasl2-dev +{# Debug / scripting - session diagnostic flow, R configure perl scripts -#} +gdb +perl +strace diff --git a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 new file mode 100644 index 00000000..b829f3e7 --- /dev/null +++ b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -0,0 +1,108 @@ +{#- +Standard-variant optional apt packages for the workbench-session matrix +image. Same Tier 1 set as the workbench image, minus: + - workbench-server-only packages (sssd, libapparmor1, libedit2, + oddjob-mkhomedir) - the session image is the runtime, not the server. + - python3 / python3-dev / python3-venv - the matrix image already ships + a uv-managed Python at /opt/python that includes the standard library. + - packages already in the base list (git, libpq-dev, krb5-user, libuser, + libuser1-dev, rrdtool, subversion, xz-utils, ca-certificates, curl). +Per-group annotations cannot move into the rendered .txt until +posit-dev/images-shared#550 lands. +-#} +{# Build toolchain - source installs of compiled R/Python pkgs (Matrix, RcppArmadillo, scipy) -#} +autoconf +automake +cmake +gfortran +make +patch +pkg-config +{# Compression CLI tools - source archive extraction, Quarto bundles -#} +bzip2 +unzip +zip +{# Compression headers - data.table, httpuv, Pillow, scipy, lxml from source -#} +libbz2-dev +liblzma-dev +zlib1g-dev +{# TLS / HTTP / crypto - curl, httr, httr2, openssl, urllib3, cryptography, sodium, plumber -#} +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +{# FFI / readline / regex - Python cffi/cryptography, source rebuilds of R + Python -#} +libffi-dev +libpcre2-dev +libreadline-dev +{# XML / Unicode / text - xml2, XML, stringi, lxml, arrow -#} +libicu-dev +libxml2-dev +libxslt1-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev +{# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} +libgit2-dev +openssh-client +wget +{# Geospatial - sf, terra, stars, geopandas, rasterio, pyproj -#} +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +{# Graphics / fonts / imaging - ragg, systemfonts, textshaping, magick, Cairo, Pillow, matplotlib -#} +fonts-dejavu-core +fonts-liberation +ghostscript +gsfonts +imagemagick +libcairo2-dev +libfontconfig1-dev +libfreetype6-dev +libfribidi-dev +libharfbuzz-dev +libjpeg-dev +libmagick++-dev +libpango1.0-dev +libpng-dev +libtiff-dev +libwebp-dev +{# Math libraries - igraph (GLPK), gmp, Rmpfr, gsl, RcppGSL, Bioconductor numerics -#} +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +{# V8 / protobuf / arrow / httpuv source build -#} +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev +libuv1-dev +protobuf-compiler +{# PDF processing - pdftools, pdfminer.six, pdf2image, magick PDF rasterization -#} +libpoppler-cpp-dev +poppler-data +poppler-utils +{# X11 / OpenGL - rgl, plotly 3D, configure-script probes that test for X libs -#} +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev +{# Tcl/Tk - tcltk R pkg, Python tkinter -#} +tcl +tk +tk-dev +tk-table +{# Java - rJava, RJDBC, xlsx, JPype1; run R CMD javareconf after install -#} +default-jdk +{# Authentication / directory - mongolite, pymongo GSSAPI, python-ldap, requests-kerberos -#} +libkrb5-dev +libldap2-dev +libsasl2-dev +{# Debug / scripting - session diagnostic flow, R configure perl scripts -#} +gdb +perl +strace diff --git a/workbench-session/template/test/goss.yaml.jinja2 b/workbench-session/template/test/goss.yaml.jinja2 index 74c3c5a2..e0156552 100644 --- a/workbench-session/template/test/goss.yaml.jinja2 +++ b/workbench-session/template/test/goss.yaml.jinja2 @@ -11,6 +11,15 @@ package: {{.}}: installed: true {{end}} + {{ if eq .Env.IMAGE_VARIANT "Standard" }} + + {{ $apt_optional_package_list_path := printf "/tmp/version/deps/%s-%s_optional_packages.txt" .Env.IMAGE_OS_NAME .Env.IMAGE_OS_VERSION }} + {{ $apt_optional_package_list := readFile $apt_optional_package_list_path | splitList "\n" }} + {{- range $apt_optional_package_list }} + {{.}}: + installed: true + {{end}} + {{ end }} {%- endraw %} quarto: installed: true diff --git a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 index 06467eee..1ebcc900 100644 --- a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -1,46 +1,114 @@ +{#- +Standard-variant optional apt packages for the workbench image on Ubuntu +22.04 (jammy). Mirrors the 24.04 list - see that template for selection +rationale and the bakery-issue pointer. On jammy, `default-libmysqlclient-dev` +resolves to MySQL instead of MariaDB; the interface is compatible and the +mariadb-flavored headers also exist on jammy so the list is shared. +-#} +{# Build toolchain - source installs of compiled R/Python pkgs (Matrix, RcppArmadillo, scipy) -#} +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +{# Compression CLI tools - source archive extraction, Quarto bundles, conda envs -#} +bzip2 +unzip +xz-utils +zip +{# Compression headers - data.table, httpuv, Pillow, scipy, lxml from source -#} +libbz2-dev +liblzma-dev +zlib1g-dev +{# TLS / HTTP / crypto - curl, httr, httr2, openssl, urllib3, cryptography, sodium, plumber -#} +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +{# FFI / readline / regex - Python cffi/cryptography, source rebuilds of R + Python -#} +libffi-dev +libpcre2-dev +libreadline-dev +{# XML / Unicode / text - xml2, XML, stringi, lxml, arrow -#} +libicu-dev +libxml2-dev +libxslt1-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev +{# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} git +libgit2-dev +openssh-client +wget +{# Geospatial - sf, terra, stars, geopandas, rasterio, pyproj -#} +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +{# Graphics / fonts / imaging - ragg, systemfonts, textshaping, magick, Cairo, Pillow, matplotlib -#} +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +{# Math libraries - igraph (GLPK), gmp, Rmpfr, gsl, RcppGSL, Bioconductor numerics -#} +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +{# V8 / protobuf / arrow / httpuv source build -#} +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +{# PDF processing - pdftools, pdfminer.six, pdf2image, magick PDF rasterization -#} +libpoppler-cpp-dev +poppler-data +poppler-utils +{# X11 / OpenGL - rgl, plotly 3D, configure-script probes that test for X libs -#} +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev +{# Tcl/Tk - tcltk R pkg, Python tkinter -#} tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +{# Java - rJava, RJDBC, xlsx, JPype1; run R CMD javareconf after install -#} +default-jdk +{# Authentication / directory - mongolite, pymongo GSSAPI, python-ldap, requests-kerberos -#} +libkrb5-dev +libldap2-dev +libsasl2-dev +{# System Python - reticulate venv probes, fallback for source-built extensions on arm64 -#} +python3 +python3-dev +python3-venv +{# Workbench-server identity / PAM / SSSD / AppArmor profiles -#} +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +{# Debug / scripting - rstudio-server diagnostic flow, R configure perl scripts -#} +gdb +perl +strace diff --git a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index cc3f55d9..7271bead 100644 --- a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -1,46 +1,116 @@ +{#- +Standard-variant optional apt packages for the workbench image. Groups +mirror the sysreq categories that pak/PPM resolve for the most-downloaded +CRAN packages plus the common Python source-build paths. Selection +sources, curation rationale, and intentional exclusions live in the +commit message and PR description; the per-group annotations below +cannot move into the rendered .txt until posit-dev/images-shared#550 +lands. +-#} +{# Build toolchain - source installs of compiled R/Python pkgs (Matrix, RcppArmadillo, scipy) -#} +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +{# Compression CLI tools - source archive extraction, Quarto bundles, conda envs -#} +bzip2 +unzip +xz-utils +zip +{# Compression headers - data.table, httpuv, Pillow, scipy, lxml from source -#} +libbz2-dev +liblzma-dev +zlib1g-dev +{# TLS / HTTP / crypto - curl, httr, httr2, openssl, urllib3, cryptography, sodium, plumber -#} +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +{# FFI / readline / regex - Python cffi/cryptography, source rebuilds of R + Python -#} +libffi-dev +libpcre2-dev +libreadline-dev +{# XML / Unicode / text - xml2, XML, stringi, lxml, arrow -#} +libicu-dev +libxml2-dev +libxslt1-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev +{# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} git +libgit2-dev +openssh-client +wget +{# Geospatial - sf, terra, stars, geopandas, rasterio, pyproj -#} +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +{# Graphics / fonts / imaging - ragg, systemfonts, textshaping, magick, Cairo, Pillow, matplotlib -#} +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev -libfreetype-dev +libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +{# Math libraries - igraph (GLPK), gmp, Rmpfr, gsl, RcppGSL, Bioconductor numerics -#} +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +{# V8 / protobuf / arrow / httpuv source build -#} +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +{# PDF processing - pdftools, pdfminer.six, pdf2image, magick PDF rasterization -#} +libpoppler-cpp-dev +poppler-data +poppler-utils +{# X11 / OpenGL - rgl, plotly 3D, configure-script probes that test for X libs -#} +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev +{# Tcl/Tk - tcltk R pkg, Python tkinter -#} tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +{# Java - rJava, RJDBC, xlsx, JPype1; run R CMD javareconf after install -#} +default-jdk +{# Authentication / directory - mongolite, pymongo GSSAPI, python-ldap, requests-kerberos -#} +libkrb5-dev +libldap2-dev +libsasl2-dev +{# System Python - reticulate venv probes, fallback for source-built extensions on arm64 -#} +python3 +python3-dev +python3-venv +{# Workbench-server identity / PAM / SSSD / AppArmor profiles -#} +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +{# Debug / scripting - rstudio-server diagnostic flow, R configure perl scripts -#} +gdb +perl +strace From 4816e8a2f775a852d3ae5b86de48fd017c5b604b Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Tue, 2 Jun 2026 13:28:55 -0600 Subject: [PATCH 2/9] chore: regenerate deps after rebase --- .../deps/ubuntu-22.04_optional_packages.txt | 97 ++++++++++++------ .../deps/ubuntu-24.04_optional_packages.txt | 99 +++++++++++++------ .../deps/ubuntu-22.04_optional_packages.txt | 97 ++++++++++++------ .../deps/ubuntu-24.04_optional_packages.txt | 99 +++++++++++++------ .../deps/ubuntu-22.04_optional_packages.txt | 97 ++++++++++++------ .../deps/ubuntu-24.04_optional_packages.txt | 99 +++++++++++++------ .../deps/ubuntu-22.04_optional_packages.txt | 97 ++++++++++++------ .../deps/ubuntu-24.04_optional_packages.txt | 99 +++++++++++++------ 8 files changed, 556 insertions(+), 228 deletions(-) diff --git a/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt b/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt index 06467eee..94ce8114 100644 --- a/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace diff --git a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt index cc3f55d9..94ce8114 100644 --- a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev -libfreetype-dev +libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace diff --git a/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt index 06467eee..94ce8114 100644 --- a/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace diff --git a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt index cc3f55d9..94ce8114 100644 --- a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev -libfreetype-dev +libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace diff --git a/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt index 06467eee..94ce8114 100644 --- a/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace diff --git a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt index cc3f55d9..94ce8114 100644 --- a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev -libfreetype-dev +libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace diff --git a/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt index 06467eee..94ce8114 100644 --- a/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace diff --git a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt index cc3f55d9..94ce8114 100644 --- a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt @@ -1,46 +1,87 @@ +autoconf +automake cmake -default-jdk -gdal-bin -gdb +gfortran +make +patch +pkg-config +bzip2 +unzip +xz-utils +zip +libbz2-dev +liblzma-dev +zlib1g-dev +libcurl4-openssl-dev +libsodium-dev +libssh2-1-dev +libffi-dev +libpcre2-dev +libreadline-dev +libicu-dev +libxml2-dev +libxslt1-dev +default-libmysqlclient-dev +libmariadb-dev +libmariadb-dev-compat +libsqlite3-dev +unixodbc-dev git +libgit2-dev +openssh-client +wget +gdal-bin +libgdal-dev +libgeos-dev +libproj-dev +libudunits2-dev +fonts-dejavu-core +fonts-liberation +ghostscript gsfonts imagemagick -libapparmor1 libcairo2-dev -libcurl4-openssl-dev -libedit2 libfontconfig1-dev -libfreetype-dev +libfreetype6-dev libfribidi-dev -libgdal-dev -libgeos-dev -libgl1-mesa-dev -libglpk-dev -libglu1-mesa-dev libharfbuzz-dev -libicu-dev libjpeg-dev libmagick++-dev -libmysqlclient-dev -libnode-dev +libpango1.0-dev libpng-dev -libproj-dev -libsodium-dev -libsqlite3-dev -libssh2-1-dev libtiff-dev -libudunits2-dev +libwebp-dev +libglpk-dev +libgmp3-dev +libgsl-dev +libmpfr-dev +libabsl-dev +libnode-dev +libprotobuf-dev +libprotoc-dev libuv1-dev -libxml2-dev -make -oddjob-mkhomedir -python3 -strace -sssd +protobuf-compiler +libpoppler-cpp-dev +poppler-data +poppler-utils +libgl1-mesa-dev +libglu1-mesa-dev +libx11-dev tcl tk tk-dev tk-table -unixodbc-dev -xz-utils -zlib1g-dev +default-jdk +libkrb5-dev +libldap2-dev +libsasl2-dev +python3 +python3-dev +python3-venv +libapparmor1 +libedit2 +oddjob-mkhomedir +sssd +gdb +perl +strace From fd87085004e97f7ccb252143ce7f4203dde2ec74 Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Wed, 3 Jun 2026 08:50:59 -0600 Subject: [PATCH 3/9] chore: render workbench-session definitions --- .../matrix/Containerfile.ubuntu2204.std | 16 +++++++++++----- .../matrix/Containerfile.ubuntu2404.std | 8 +++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/workbench-session/matrix/Containerfile.ubuntu2204.std b/workbench-session/matrix/Containerfile.ubuntu2204.std index becb385c..cc9c9fd3 100644 --- a/workbench-session/matrix/Containerfile.ubuntu2204.std +++ b/workbench-session/matrix/Containerfile.ubuntu2204.std @@ -21,6 +21,8 @@ ARG R_VERSION ARG PYTHON_VERSION ARG QUARTO_VERSION +SHELL ["/bin/bash", "-euo", "pipefail", "-c"] + ### Install Apt Packages ### RUN echo 'Acquire::Retries "3"; Acquire::http::Timeout "30"; Acquire::https::Timeout "30";' > /etc/apt/apt.conf.d/99-retries && \ apt-get update -yqq --fix-missing && \ @@ -45,6 +47,14 @@ RUN apt-get update -yqq && \ rm -rf /var/lib/apt/lists/* +### Install Pro Drivers ### +RUN apt-get update -yqq && \ + apt-get install -yqq --no-install-recommends \ + rstudio-drivers && \ + apt-get clean -yqq && \ + rm -rf /var/lib/apt/lists/* +RUN cp /opt/rstudio-drivers/odbcinst.ini.sample /etc/odbcinst.ini + # Install Python from previous stage COPY --from=python-builder /opt/python /opt/python @@ -81,11 +91,7 @@ RUN bash -c "$(curl -1fsSL 'https://dl.posit.co/public/open/setup.deb.sh')" && \ # ADD busts the cache on new TinyTeX releases. # HOME="/opt" workaround: https://github.com/quarto-dev/quarto-cli/issues/11800 ADD https://github.com/rstudio/tinytex-releases/releases/latest /tmp/tinytex-release.json -RUN apt-get update -yqq && \ - apt-get install -yqq --no-install-recommends \ - xz-utils && \ - apt-get clean -yqq && \ - rm -rf /var/lib/apt/lists/* && \ +RUN --mount=type=secret,id=github_token,required=false \ GH_TOKEN="$([ -s /run/secrets/github_token ] && cat /run/secrets/github_token)" HOME="/opt" /opt/quarto/bin/quarto install tinytex --no-prompt --update-path && \ rm -f /tmp/tinytex-release.json diff --git a/workbench-session/matrix/Containerfile.ubuntu2404.std b/workbench-session/matrix/Containerfile.ubuntu2404.std index 7c976332..7b818e50 100644 --- a/workbench-session/matrix/Containerfile.ubuntu2404.std +++ b/workbench-session/matrix/Containerfile.ubuntu2404.std @@ -21,6 +21,8 @@ ARG R_VERSION ARG PYTHON_VERSION ARG QUARTO_VERSION +SHELL ["/bin/bash", "-euo", "pipefail", "-c"] + ### Install Apt Packages ### RUN echo 'Acquire::Retries "3"; Acquire::http::Timeout "30"; Acquire::https::Timeout "30";' > /etc/apt/apt.conf.d/99-retries && \ apt-get update -yqq --fix-missing && \ @@ -89,11 +91,7 @@ RUN bash -c "$(curl -1fsSL 'https://dl.posit.co/public/open/setup.deb.sh')" && \ # ADD busts the cache on new TinyTeX releases. # HOME="/opt" workaround: https://github.com/quarto-dev/quarto-cli/issues/11800 ADD https://github.com/rstudio/tinytex-releases/releases/latest /tmp/tinytex-release.json -RUN apt-get update -yqq && \ - apt-get install -yqq --no-install-recommends \ - xz-utils && \ - apt-get clean -yqq && \ - rm -rf /var/lib/apt/lists/* && \ +RUN --mount=type=secret,id=github_token,required=false \ GH_TOKEN="$([ -s /run/secrets/github_token ] && cat /run/secrets/github_token)" HOME="/opt" /opt/quarto/bin/quarto install tinytex --no-prompt --update-path && \ rm -f /tmp/tinytex-release.json From 1b7e1550b5994aef0c0744b19d54f392bc280d7b Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Wed, 3 Jun 2026 08:51:30 -0600 Subject: [PATCH 4/9] chore: render workbench definitions --- workbench/2026.04/Containerfile.ubuntu2204.std | 6 ++++++ workbench/2026.04/Containerfile.ubuntu2404.std | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/workbench/2026.04/Containerfile.ubuntu2204.std b/workbench/2026.04/Containerfile.ubuntu2204.std index 51a75d1b..c70c3101 100644 --- a/workbench/2026.04/Containerfile.ubuntu2204.std +++ b/workbench/2026.04/Containerfile.ubuntu2204.std @@ -122,6 +122,12 @@ RUN mkdir -p /var/lib/rstudio-server/monitor/log \ ### Install TinyTeX using Quarto ### # Caches won't invalidate correctly on new releases for TinyTeX installs. This ADD instruction is a workaround to bust # the cache on new releases. +# +# TinyTeX is installed under HOME="/opt" so the install lands at /opt/.TinyTeX, +# which is readable by non-root runtime users. `--update-path` makes tlmgr +# symlink the TinyTeX binaries into /usr/local/bin. +# TODO: Remove `HOME="/opt"` once Quarto supports custom install locations +# for TinyTeX, see https://github.com/quarto-dev/quarto-cli/issues/11800. ADD https://github.com/rstudio/tinytex-releases/releases/latest /tmp/tinytex-release.json RUN --mount=type=secret,id=github_token,required=false \ GH_TOKEN="$([ -s /run/secrets/github_token ] && cat /run/secrets/github_token)" HOME="/opt" /lib/rstudio-server/bin/quarto/bin/quarto install tinytex --no-prompt --update-path \ diff --git a/workbench/2026.04/Containerfile.ubuntu2404.std b/workbench/2026.04/Containerfile.ubuntu2404.std index e31f04a3..4fc1e8e2 100644 --- a/workbench/2026.04/Containerfile.ubuntu2404.std +++ b/workbench/2026.04/Containerfile.ubuntu2404.std @@ -122,6 +122,12 @@ RUN mkdir -p /var/lib/rstudio-server/monitor/log \ ### Install TinyTeX using Quarto ### # Caches won't invalidate correctly on new releases for TinyTeX installs. This ADD instruction is a workaround to bust # the cache on new releases. +# +# TinyTeX is installed under HOME="/opt" so the install lands at /opt/.TinyTeX, +# which is readable by non-root runtime users. `--update-path` makes tlmgr +# symlink the TinyTeX binaries into /usr/local/bin. +# TODO: Remove `HOME="/opt"` once Quarto supports custom install locations +# for TinyTeX, see https://github.com/quarto-dev/quarto-cli/issues/11800. ADD https://github.com/rstudio/tinytex-releases/releases/latest /tmp/tinytex-release.json RUN --mount=type=secret,id=github_token,required=false \ GH_TOKEN="$([ -s /run/secrets/github_token ] && cat /run/secrets/github_token)" HOME="/opt" /lib/rstudio-server/bin/quarto/bin/quarto install tinytex --no-prompt --update-path \ From 602fbf0957fb43a2f48a347294dd02346df97147 Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Wed, 3 Jun 2026 09:56:50 -0600 Subject: [PATCH 5/9] Drop default-libmysqlclient-dev to fix MariaDB conflict default-libmysqlclient-dev is a metapackage that on jammy resolves to the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat (both provide mysql.h / libmysqlclient). On noble it merely re-pulls the two MariaDB packages we already list explicitly. Keep libmariadb-dev + libmariadb-dev-compat: this matches Posit Connect's documented Ubuntu 24.04 list and the -compat package still provides the mysql.h / libmysqlclient symlinks that mysqlclient (PyPI), RMySQL, and RMariaDB build against. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../matrix/deps/ubuntu-22.04_optional_packages.txt | 1 - .../matrix/deps/ubuntu-24.04_optional_packages.txt | 1 - .../deps/ubuntu-22.04_optional_packages.txt.jinja2 | 5 +++-- .../deps/ubuntu-24.04_optional_packages.txt.jinja2 | 6 ++++-- .../2025.09/deps/ubuntu-22.04_optional_packages.txt | 1 - .../2025.09/deps/ubuntu-24.04_optional_packages.txt | 1 - .../2026.01/deps/ubuntu-22.04_optional_packages.txt | 1 - .../2026.01/deps/ubuntu-24.04_optional_packages.txt | 1 - .../2026.04/deps/ubuntu-22.04_optional_packages.txt | 1 - .../2026.04/deps/ubuntu-24.04_optional_packages.txt | 1 - .../2026.05/deps/ubuntu-22.04_optional_packages.txt | 1 - .../2026.05/deps/ubuntu-24.04_optional_packages.txt | 1 - .../deps/ubuntu-22.04_optional_packages.txt.jinja2 | 11 ++++++----- .../deps/ubuntu-24.04_optional_packages.txt.jinja2 | 6 ++++-- 14 files changed, 17 insertions(+), 21 deletions(-) diff --git a/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt b/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt index 01b93a4d..ffbccf85 100644 --- a/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt @@ -20,7 +20,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt index 01b93a4d..ffbccf85 100644 --- a/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt @@ -20,7 +20,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 index 096a431c..81cb1b75 100644 --- a/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -32,8 +32,9 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} -default-libmysqlclient-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. + Use libmariadb-dev + libmariadb-dev-compat, not default-libmysqlclient-dev: on jammy the + metapackage pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index b829f3e7..45f40a19 100644 --- a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -38,8 +38,10 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} -default-libmysqlclient-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. + libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built + against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy it + pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt b/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt index 94ce8114..3d132fa8 100644 --- a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt @@ -21,7 +21,6 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -default-libmysqlclient-dev libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 index 1ebcc900..5b66b7a6 100644 --- a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -1,9 +1,10 @@ {#- Standard-variant optional apt packages for the workbench image on Ubuntu 22.04 (jammy). Mirrors the 24.04 list - see that template for selection -rationale and the bakery-issue pointer. On jammy, `default-libmysqlclient-dev` -resolves to MySQL instead of MariaDB; the interface is compatible and the -mariadb-flavored headers also exist on jammy so the list is shared. +rationale and the bakery-issue pointer. The MariaDB client headers are used +directly (libmariadb-dev + libmariadb-dev-compat) rather than the +default-libmysqlclient-dev metapackage, which on jammy resolves to the real +libmysqlclient-dev and Conflicts: with libmariadb-dev-compat. -#} {# Build toolchain - source installs of compiled R/Python pkgs (Matrix, RcppArmadillo, scipy) -#} autoconf @@ -34,8 +35,8 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} -default-libmysqlclient-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. + See header note: use libmariadb-dev + libmariadb-dev-compat, not default-libmysqlclient-dev. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index 7271bead..20e6194a 100644 --- a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -36,8 +36,10 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc -#} -default-libmysqlclient-dev +{# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. + libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built + against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy it + pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev From 9cf2d4713297b9996ac5909ffec982b08ea6bde1 Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Wed, 3 Jun 2026 09:59:57 -0600 Subject: [PATCH 6/9] chore: comment revisions --- .../deps/ubuntu-22.04_optional_packages.txt.jinja2 | 5 +++-- .../deps/ubuntu-24.04_optional_packages.txt.jinja2 | 4 ++-- .../deps/ubuntu-22.04_optional_packages.txt.jinja2 | 9 ++++----- .../deps/ubuntu-24.04_optional_packages.txt.jinja2 | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 index 81cb1b75..c306db0e 100644 --- a/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -33,8 +33,9 @@ libicu-dev libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. - Use libmariadb-dev + libmariadb-dev-compat, not default-libmysqlclient-dev: on jammy the - metapackage pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} + libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built + against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble + it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index 45f40a19..f19c5a7c 100644 --- a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -40,8 +40,8 @@ libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built - against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy it - pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} + against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble + it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 index 5b66b7a6..49e0d4da 100644 --- a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -1,10 +1,7 @@ {#- Standard-variant optional apt packages for the workbench image on Ubuntu 22.04 (jammy). Mirrors the 24.04 list - see that template for selection -rationale and the bakery-issue pointer. The MariaDB client headers are used -directly (libmariadb-dev + libmariadb-dev-compat) rather than the -default-libmysqlclient-dev metapackage, which on jammy resolves to the real -libmysqlclient-dev and Conflicts: with libmariadb-dev-compat. +rationale and the bakery-issue pointer. -#} {# Build toolchain - source installs of compiled R/Python pkgs (Matrix, RcppArmadillo, scipy) -#} autoconf @@ -36,7 +33,9 @@ libicu-dev libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. - See header note: use libmariadb-dev + libmariadb-dev-compat, not default-libmysqlclient-dev. -#} + libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built + against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble + it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev diff --git a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index 20e6194a..964d4452 100644 --- a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -38,8 +38,8 @@ libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built - against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy it - pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} + against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble + it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} libmariadb-dev libmariadb-dev-compat libsqlite3-dev From 33c6b7ad13c679557e8cb0af14bc76ae7ca01c0b Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Thu, 4 Jun 2026 10:00:48 -0600 Subject: [PATCH 7/9] Remove libmariadb-dev libraries as they conflict with libgdal-dev --- .../matrix/deps/ubuntu-22.04_optional_packages.txt | 3 +-- .../matrix/deps/ubuntu-24.04_optional_packages.txt | 3 +-- .../deps/ubuntu-22.04_optional_packages.txt.jinja2 | 8 +++----- .../deps/ubuntu-24.04_optional_packages.txt.jinja2 | 8 +++----- workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt | 3 +-- workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt | 3 +-- workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt | 3 +-- workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt | 3 +-- workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt | 3 +-- workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt | 3 +-- workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt | 3 +-- workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt | 3 +-- .../deps/ubuntu-22.04_optional_packages.txt.jinja2 | 8 +++----- .../deps/ubuntu-24.04_optional_packages.txt.jinja2 | 8 +++----- 14 files changed, 22 insertions(+), 40 deletions(-) diff --git a/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt b/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt index ffbccf85..8bdf4c19 100644 --- a/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench-session/matrix/deps/ubuntu-22.04_optional_packages.txt @@ -20,8 +20,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev libgit2-dev diff --git a/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt index ffbccf85..8bdf4c19 100644 --- a/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt @@ -20,8 +20,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev libgit2-dev diff --git a/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 index c306db0e..bdfe226c 100644 --- a/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -33,11 +33,9 @@ libicu-dev libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. - libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built - against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble - it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} -libmariadb-dev -libmariadb-dev-compat + libgdal-bin requires default-libmysqlclient-dev and must be removed to install libmariadb-dev + and libmariadb-dev-compat as the packages conflict. -#} +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev {# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} diff --git a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index f19c5a7c..4d1f2d7f 100644 --- a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -39,11 +39,9 @@ libicu-dev libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. - libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built - against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble - it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} -libmariadb-dev -libmariadb-dev-compat + libgdal-bin requires default-libmysqlclient-dev and must be removed to install libmariadb-dev + and libmariadb-dev-compat as the packages conflict. -#} +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev {# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} diff --git a/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt b/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2025.09/deps/ubuntu-22.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.01/deps/ubuntu-22.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.04/deps/ubuntu-22.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt b/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt +++ b/workbench/2026.05/deps/ubuntu-22.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt index 3d132fa8..c55f36f8 100644 --- a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt @@ -21,8 +21,7 @@ libreadline-dev libicu-dev libxml2-dev libxslt1-dev -libmariadb-dev -libmariadb-dev-compat +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev git diff --git a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 index 49e0d4da..bd4cde3d 100644 --- a/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-22.04_optional_packages.txt.jinja2 @@ -33,11 +33,9 @@ libicu-dev libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. - libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built - against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble - it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} -libmariadb-dev -libmariadb-dev-compat + libgdal-bin requires default-libmysqlclient-dev and must be removed to install libmariadb-dev + and libmariadb-dev-compat as the packages conflict. -#} +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev {# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} diff --git a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index 964d4452..42f625ea 100644 --- a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -37,11 +37,9 @@ libicu-dev libxml2-dev libxslt1-dev {# Database client headers - RPostgres, RMariaDB, odbc, DBI, psycopg2, mysqlclient, pyodbc. - libmariadb-dev-compat provides the mysql.h / libmysqlclient symlinks so packages built - against the MySQL names still compile. Do NOT add default-libmysqlclient-dev: on jammy/noble - it pulls the real libmysqlclient-dev, which Conflicts: with libmariadb-dev-compat. -#} -libmariadb-dev -libmariadb-dev-compat + libgdal-bin requires default-libmysqlclient-dev and must be removed to install libmariadb-dev + and libmariadb-dev-compat as the packages conflict. -#} +default-libmysqlclient-dev libsqlite3-dev unixodbc-dev {# Version control / network - gert, git2r, renv from GitHub, pip git+ installs, SSH transports -#} From ce55ba36be31b1deb60f3fcd736e25a6bb814ac2 Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Thu, 4 Jun 2026 12:19:16 -0600 Subject: [PATCH 8/9] Change libfreetype6-dev transitional package name to libfreetype-dev --- .../matrix/deps/ubuntu-24.04_optional_packages.txt | 2 +- .../template/deps/ubuntu-24.04_optional_packages.txt.jinja2 | 2 +- workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt | 2 +- workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt | 2 +- workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt | 2 +- workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt | 2 +- .../template/deps/ubuntu-24.04_optional_packages.txt.jinja2 | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt index 8bdf4c19..cad1ff60 100644 --- a/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench-session/matrix/deps/ubuntu-24.04_optional_packages.txt @@ -38,7 +38,7 @@ gsfonts imagemagick libcairo2-dev libfontconfig1-dev -libfreetype6-dev +libfreetype-dev libfribidi-dev libharfbuzz-dev libjpeg-dev diff --git a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index 4d1f2d7f..2fe477c1 100644 --- a/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -62,7 +62,7 @@ gsfonts imagemagick libcairo2-dev libfontconfig1-dev -libfreetype6-dev +libfreetype-dev libfribidi-dev libharfbuzz-dev libjpeg-dev diff --git a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt index c55f36f8..03766c20 100644 --- a/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2025.09/deps/ubuntu-24.04_optional_packages.txt @@ -40,7 +40,7 @@ gsfonts imagemagick libcairo2-dev libfontconfig1-dev -libfreetype6-dev +libfreetype-dev libfribidi-dev libharfbuzz-dev libjpeg-dev diff --git a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt index c55f36f8..03766c20 100644 --- a/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.01/deps/ubuntu-24.04_optional_packages.txt @@ -40,7 +40,7 @@ gsfonts imagemagick libcairo2-dev libfontconfig1-dev -libfreetype6-dev +libfreetype-dev libfribidi-dev libharfbuzz-dev libjpeg-dev diff --git a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt index c55f36f8..03766c20 100644 --- a/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.04/deps/ubuntu-24.04_optional_packages.txt @@ -40,7 +40,7 @@ gsfonts imagemagick libcairo2-dev libfontconfig1-dev -libfreetype6-dev +libfreetype-dev libfribidi-dev libharfbuzz-dev libjpeg-dev diff --git a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt index c55f36f8..03766c20 100644 --- a/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt +++ b/workbench/2026.05/deps/ubuntu-24.04_optional_packages.txt @@ -40,7 +40,7 @@ gsfonts imagemagick libcairo2-dev libfontconfig1-dev -libfreetype6-dev +libfreetype-dev libfribidi-dev libharfbuzz-dev libjpeg-dev diff --git a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 index 42f625ea..d1dacf59 100644 --- a/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 +++ b/workbench/template/deps/ubuntu-24.04_optional_packages.txt.jinja2 @@ -61,7 +61,7 @@ gsfonts imagemagick libcairo2-dev libfontconfig1-dev -libfreetype6-dev +libfreetype-dev libfribidi-dev libharfbuzz-dev libjpeg-dev From 52ff852bc6d7bc3309386b741bec83d4dcf15b21 Mon Sep 17 00:00:00 2001 From: "Ian H. Pittwood" Date: Thu, 4 Jun 2026 13:08:59 -0600 Subject: [PATCH 9/9] Remove `libuv1-dev` from core packages in favor of optional --- workbench-session/matrix/deps/ubuntu-22.04_packages.txt | 1 - workbench-session/matrix/deps/ubuntu-24.04_packages.txt | 1 - workbench-session/template/deps/ubuntu-22.04_packages.txt.jinja2 | 1 - workbench-session/template/deps/ubuntu-24.04_packages.txt.jinja2 | 1 - 4 files changed, 4 deletions(-) diff --git a/workbench-session/matrix/deps/ubuntu-22.04_packages.txt b/workbench-session/matrix/deps/ubuntu-22.04_packages.txt index bb288771..268608dd 100644 --- a/workbench-session/matrix/deps/ubuntu-22.04_packages.txt +++ b/workbench-session/matrix/deps/ubuntu-22.04_packages.txt @@ -5,7 +5,6 @@ krb5-user libpq-dev libuser libuser1-dev -libuv1-dev rrdtool subversion xz-utils diff --git a/workbench-session/matrix/deps/ubuntu-24.04_packages.txt b/workbench-session/matrix/deps/ubuntu-24.04_packages.txt index bb288771..268608dd 100644 --- a/workbench-session/matrix/deps/ubuntu-24.04_packages.txt +++ b/workbench-session/matrix/deps/ubuntu-24.04_packages.txt @@ -5,7 +5,6 @@ krb5-user libpq-dev libuser libuser1-dev -libuv1-dev rrdtool subversion xz-utils diff --git a/workbench-session/template/deps/ubuntu-22.04_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-22.04_packages.txt.jinja2 index bb288771..268608dd 100644 --- a/workbench-session/template/deps/ubuntu-22.04_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-22.04_packages.txt.jinja2 @@ -5,7 +5,6 @@ krb5-user libpq-dev libuser libuser1-dev -libuv1-dev rrdtool subversion xz-utils diff --git a/workbench-session/template/deps/ubuntu-24.04_packages.txt.jinja2 b/workbench-session/template/deps/ubuntu-24.04_packages.txt.jinja2 index bb288771..268608dd 100644 --- a/workbench-session/template/deps/ubuntu-24.04_packages.txt.jinja2 +++ b/workbench-session/template/deps/ubuntu-24.04_packages.txt.jinja2 @@ -5,7 +5,6 @@ krb5-user libpq-dev libuser libuser1-dev -libuv1-dev rrdtool subversion xz-utils