Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This change fixes the longstanding issue of not being able to rebuild our R image, which was causing many issues. It solves the problem of reproducing the R library versions as in the current R docker image by using renv to manage a lockfile of versions. This is bit nuanced - renv is not really designed for this use case - but it does work. Check the Dockerfile comments for details. With a cold cache, it is very slow to build all the initial packages (i.e. 1-2 hours). But the build process keeps a local cache of them on the host, so rebuilds are fast. Whilst there are no R library version changes, there are some system library changes, as we moved from 18.04 to 20.04 as a base image. This was necessary because a) 18.04 is EOL shortly and b) we don't maintain a base 18.04 image. The file `20.04-library-changes.txt` contains a summary of differences, basically a bunch of uprades to system libraries. Also, we upgraded to the latest point release of R 4.0 series, 4.0.2 -> 4.0.5. Additionally, many unused components have been removed from the image: - all build toolchain/-dev packages - java/python integration - various x11/gtk dependencies These made the original image heavier, and to the best of our knowledge, have never been used by any projects. If this turns out to be mistaken, we can add things back easily enough. The old image was 4.5G from dockers - the new one is 1.9G. Testing: An R image build with this process was used to test ~30 OpenSAFELY project.yamls with R code in, and it all worked, so we have some confidence we've not broken anything. We'll keep the old image unter r:legacy tag or something, so we can easily access it if needed. Note: this does not add a publishing workflow to the repo, and thus does not change the current image by landing. Whether we can build it in GH remains to be seend. With no cache, I'd expect it to take multiple hours.
- Loading branch information