Skip to content

revert: remove arf (Alternative R Frontend) from all images, upgrade to R 4.6.0#128

Merged
Robinlovelace merged 6 commits into
masterfrom
revert-arf-and-upgrade-r
Jun 7, 2026
Merged

revert: remove arf (Alternative R Frontend) from all images, upgrade to R 4.6.0#128
Robinlovelace merged 6 commits into
masterfrom
revert-arf-and-upgrade-r

Conversation

@Robinlovelace

@Robinlovelace Robinlovelace commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Removes the Alternative R Frontend (arf) that was added in #121 (commit e215b17), upgrades R to 4.6.0, and fixes a broken qgis build. Also adds CI checks on PRs to verify images build before merge.

What changed

arf removal (8 files, -58 lines)

File Change
minimal/Dockerfile Removed arf install, alias, and r.rterm.linux from devcontainer.metadata
osgeo/Dockerfile Same — also removed devcontainer.metadata entirely (pre-arf, the image didn't have one)
pythonr/Dockerfile Same — also removed devcontainer.metadata label
.devcontainer/devcontainer.json Removed r.rterm.linux, r.rterm.option, r.bracketedPaste settings
README.Rmd / README.md Stripped arf documentation from the Devcontainers section
dockerfiles/archive/binder/Dockerfile Removed arf install
dockerfiles/archive/geocompy/Dockerfile Removed arf install

R 4.6.0 upgrade

  • pythonr/Dockerfile: ARG R_VERSION=4.5.1 -> ARG R_VERSION=4.6.0

The rocker-based images (minimal, osgeo, qgis) already get R 4.6.0 via rocker/geospatial:latest and rocker/geospatial:dev-osgeo.

qgis fix: remove SAGA NextGen plugin download

Removed the broken download from north-road/qgis-processing-saga-nextgen (repo deleted, was causing build failure with exit code 8). SAGA remains available via apt, but the QGIS bridge plugin is no longer available.

CI: build on PR, publish only on main

  • ci.yml: Added pull_request trigger on master/main
  • build-docker.yml: Login and push now skipped on PRs (github.event_name != 'pull_request'); the build step always runs to validate Dockerfiles compile and package installs succeed

Downstream images inheriting these changes

The following images inherit via FROM chain and are automatically covered:

  • minimal -> suggests, buildbook, rust, latest
  • minimal -> rocker-rpy -> rocker-rpyjl
  • python -> pythonr
  • osgeo -> qgis

Effect on running containers

The R command now resolves to the standard R binary rather than arf. Non-interactive scripts (Rscript, CI, Makefiles) were never affected by the alias mechanism, which only applies in interactive bash shells.

This reverts the arf integration added in e215b17 / #121.

Removed from all active Dockerfiles (minimal, osgeo, pythonr) and their
downstream dependents (suggests, buildbook, latest, rocker-rpy,
rocker-rpyjl, rust) which inherit the base image:

- Drop arf binary installation (no longer ships /usr/local/bin/arf)
- Remove system-wide shell alias 'alias R=arf' from /etc/bash.bashrc
- Remove devcontainer.metadata setting r.rterm.linux=/usr/local/bin/arf
- Strip arf-specific settings from .devcontainer/devcontainer.json
- Remove arf documentation from README.Rmd / README.md
- Also clean up archived Dockerfiles (binder, geocompy)

The default R command now runs the standard R binary.

Also bumps pythonr/Dockerfile R_VERSION from 4.5.1 to 4.6.0 to match
the R version already shipped by rocker/geospatial:latest.
- Add pull_request trigger to ci.yml for PRs targeting master/main
- Modify build-docker.yml to always build but only push to GHCR on
  non-PR events (push to main, schedule, workflow_dispatch)
- On PRs, build step runs without login/push, verifying Dockerfiles
  and package installs succeed before merge

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR reverts prior arf (Alternative R Frontend) integration across the image set, upgrades the pythonr image’s R installation to R 4.6.0, and updates CI so Docker images are built on pull requests while publishing remains restricted to non-PR events.

Changes:

  • Removed arf installation, shell aliasing, and VS Code/devcontainer configuration pointing at arf.
  • Upgraded pythonr to install R 4.6.0 from Posit’s Debian 12 packages.
  • Enabled CI on pull_request and adjusted build workflow to avoid registry login/push on PRs.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
README.Rmd Removes arf-specific devcontainer documentation from the source README.
README.md Removes rendered arf-specific devcontainer documentation.
pythonr/Dockerfile Drops arf install/alias and bumps R_VERSION to 4.6.0.
osgeo/Dockerfile Drops arf install/alias and removes devcontainer metadata label.
minimal/Dockerfile Removes arf-related VS Code settings from devcontainer metadata label.
dockerfiles/archive/geocompy/Dockerfile Removes arf install from archived image.
dockerfiles/archive/binder/Dockerfile Removes arf install from archived image.
.github/workflows/ci.yml Adds pull_request trigger for CI build validation.
.github/workflows/build-docker.yml Skips registry login on PRs and conditionally disables pushing.
.devcontainer/devcontainer.json Removes arf-specific VS Code R terminal settings.
Comments suppressed due to low confidence (1)

.github/workflows/build-docker.yml:57

  • On pull_request runs, this workflow still passes secrets.GITHUB_TOKEN into the Docker build as a BuildKit secret (GITHUB_PAT). Since the PR now triggers builds, a malicious Dockerfile change could exfiltrate the token during the PR build; additionally, none of the repo Dockerfiles appear to use secret mounts (no --mount=type=secret usage found), so this secret is currently unnecessary.
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          secrets: |
            "GITHUB_PAT=${{ secrets.GITHUB_TOKEN }}"

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 52 to +53
file: ${{ inputs.dockerfile }}
push: true
push: ${{ github.event_name != 'pull_request' }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Updated the step name to "Build and push (push skipped on pull_request)" to make it clear that push is conditional and disabled on pull_request events.

Robinlovelace and others added 2 commits June 7, 2026 20:51
The north-road/qgis-processing-saga-nextgen repository has been deleted,
causing the Docker build to fail. Remove the plugin download, install,
and registry lines. SAGA itself remains available via apt, but the
QGIS bridge plugin is no longer available.

See also PR #126 on the remove-saga-plugin branch.
SAGA GIS is no longer installed as part of the qgis image, reducing
image size and build time. SAGA can still be installed manually with
'apt-get install saga' if needed.
@Robinlovelace

Copy link
Copy Markdown
Contributor Author

Reasoning: arf has some rough edges still, e.g. eitsupi/arf#213

Also it seemed to have continued issues in tests with students today.

Split the geocompkg install in qgis/Dockerfile into two steps:

1. Compile sf, terra, stars, lwgeom from CRAN source — these link
   against ubuntugis-unstable GDAL/PROJ/GEOS where no CRAN binary
   is available.

2. Install everything else via pak::pak() which fetches pre-compiled
   binaries from RSPM for the remaining dependencies.

Removes the old single install.packages() call with dependencies=TRUE
that was compiling everything from source.
@Robinlovelace Robinlovelace merged commit 4728cad into master Jun 7, 2026
4 checks passed
@Robinlovelace Robinlovelace deleted the revert-arf-and-upgrade-r branch June 7, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants