Skip to content
Snippets Groups Projects
Commit 99269e73 authored by Olivier Benz's avatar Olivier Benz
Browse files

Freeze R version 4.0.1

parent 4f187200
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@ services:
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
R_VERSION_UPDATE: "false"
R_VERSION_UPDATE: "true"
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
......@@ -32,9 +32,9 @@ build-latest:
build-version:
stage: build
script:
- cd geospatial && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.0 -f 4.0.0.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.0
- cd geospatial && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.1 -f 4.0.1.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.1
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $R_VERSION_UPDATE != "true"
changes:
- geospatial/4.0.0.Dockerfile
- geospatial/4.0.1.Dockerfile
FROM registry.gitlab.b-data.ch/rocker/verse:4.0.1
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
lbzip2 \
libfftw3-dev \
libgdal-dev \
libgeos-dev \
libgsl0-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libhdf4-alt-dev \
libhdf5-dev \
libjq-dev \
liblwgeom-dev \
libpq-dev \
libproj-dev \
libprotobuf-dev \
libnetcdf-dev \
libsqlite3-dev \
libssl-dev \
libudunits2-dev \
netcdf-bin \
postgis \
protobuf-compiler \
sqlite3 \
tk-dev \
unixodbc-dev \
&& install2.r --error \
RColorBrewer \
RandomFields \
RNetCDF \
classInt \
deldir \
gstat \
hdf5r \
lidR \
mapdata \
maptools \
mapview \
ncdf4 \
proj4 \
raster \
rgdal \
rgeos \
rlas \
sf \
sp \
spacetime \
spatstat \
spdep \
geoR \
geosphere \
## from bioconductor
&& R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \
## Clean up
&& rm -rf /tmp/* \
&& rm -rf /var/lib/apt/lists/*
......@@ -6,7 +6,7 @@ variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
CRAN: https://cloud.r-project.org
R_VERSION_UPDATE: "false"
R_VERSION_UPDATE: "true"
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
......@@ -33,12 +33,12 @@ build-latest:
build-version:
stage: build
script:
- docker build --pull -t $CI_REGISTRY_IMAGE:4.0.0 -f r-ver/4.0.0.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.0
- docker build --pull -t $CI_REGISTRY_IMAGE:4.0.1 -f r-ver/4.0.1.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.1
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version"
changes:
- r-ver/4.0.0.Dockerfile
- r-ver/4.0.1.Dockerfile
trigger-latest-build-foreign:
stage: deploy
......@@ -75,4 +75,4 @@ trigger-version-build:
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version"
changes:
- r-ver/4.0.0.Dockerfile
- r-ver/4.0.1.Dockerfile
FROM debian:buster
LABEL org.label-schema.license="GPL-2.0" \
org.label-schema.vcs-url="https://gitlab.b-data.ch/r/docker-stack" \
maintainer="Olivier Benz <olivier.benz@b-data.ch>"
ARG R_VERSION
ARG BUILD_DATE
ENV R_VERSION=${R_VERSION:-4.0.1} \
BUILD_DATE=${BUILD_DATE:-2020-06-22} \
LC_ALL=en_US.UTF-8 \
LANG=en_US.UTF-8 \
TERM=xterm
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
bash-completion \
ca-certificates \
file \
fonts-texgyre \
g++ \
gfortran \
gsfonts \
libblas-dev \
libbz2-1.0 \
libcurl4 \
libicu63 \
libjpeg62-turbo \
libopenblas-dev \
libpangocairo-1.0-0 \
libpcre2-8-0 \
libpng16-16 \
libreadline7 \
libtiff5 \
liblzma5 \
locales \
make \
unzip \
zip \
zlib1g \
&& echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen en_US.utf8 \
&& /usr/sbin/update-locale LANG=en_US.UTF-8 \
&& BUILDDEPS="curl \
default-jdk \
libbz2-dev \
libcairo2-dev \
libcurl4-openssl-dev \
libpango1.0-dev \
libjpeg-dev \
libicu-dev \
libpcre2-dev \
libpng-dev \
libreadline-dev \
libtiff5-dev \
liblzma-dev \
libx11-dev \
libxt-dev \
perl \
tcl8.6-dev \
tk8.6-dev \
texinfo \
texlive-extra-utils \
texlive-fonts-recommended \
texlive-fonts-extra \
texlive-latex-recommended \
x11proto-core-dev \
xauth \
xfonts-base \
xvfb \
zlib1g-dev" \
&& apt-get install -y --no-install-recommends $BUILDDEPS \
&& cd tmp/ \
## Download source code
&& curl -O https://cran.r-project.org/src/base/R-4/R-${R_VERSION}.tar.gz \
## Extract source code
&& tar -xf R-${R_VERSION}.tar.gz \
&& cd R-${R_VERSION} \
## Set compiler flags
&& R_PAPERSIZE=letter \
R_BATCHSAVE="--no-save --no-restore" \
R_BROWSER=xdg-open \
PAGER=/usr/bin/pager \
PERL=/usr/bin/perl \
R_UNZIPCMD=/usr/bin/unzip \
R_ZIPCMD=/usr/bin/zip \
R_PRINTCMD=/usr/bin/lpr \
LIBnn=lib \
AWK=/usr/bin/awk \
CFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g" \
CXXFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g" \
## Configure options
./configure --enable-R-shlib \
--enable-memory-profiling \
--with-readline \
--with-blas \
--with-tcltk \
--disable-nls \
--with-recommended-packages \
## Build and install
&& make \
&& make install \
## Add a library directory (for user-installed packages)
&& mkdir -p /usr/local/lib/R/site-library \
&& chown root:staff /usr/local/lib/R/site-library \
&& chmod g+ws /usr/local/lib/R/site-library \
## Fix library path
#&& sed -i '/^R_LIBS_USER=.*$/d' /usr/local/lib/R/etc/Renviron \
&& echo "R_LIBS_SITE=\${R_LIBS_SITE-'/usr/local/lib/R/site-library'}" >> /usr/local/lib/R/etc/Renviron \
#&& echo "R_LIBS=\${R_LIBS-'/usr/local/lib/R/site-library:/usr/local/lib/R/library:/usr/lib/R/library'}" >> /usr/local/lib/R/etc/Renviron \
## Set configured CRAN mirror
&& if [ -z "$BUILD_DATE" ]; then MRAN=$CRAN; \
else MRAN=https://mran.microsoft.com/snapshot/${BUILD_DATE}; fi \
&& echo MRAN=$MRAN >> /etc/environment \
&& echo "options(repos = c(CRAN='$MRAN'), download.file.method = 'libcurl')" >> /usr/local/lib/R/etc/Rprofile.site \
## Use littler installation scripts
&& Rscript -e "install.packages(c('littler', 'docopt'), repo = '$MRAN')" \
&& ln -s /usr/local/lib/R/site-library/littler/examples/install2.r /usr/local/bin/install2.r \
&& ln -s /usr/local/lib/R/site-library/littler/examples/installGithub.r /usr/local/bin/installGithub.r \
&& ln -s /usr/local/lib/R/site-library/littler/bin/r /usr/local/bin/r \
## Clean up from R source install
&& cd / \
&& rm -rf /tmp/* \
&& apt-get remove --purge -y $BUILDDEPS \
&& apt-get autoremove -y \
&& apt-get autoclean -y \
&& rm -rf /var/lib/apt/lists/*
CMD ["R"]
......@@ -5,7 +5,7 @@ services:
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
R_VERSION_UPDATE: "false"
R_VERSION_UPDATE: "true"
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
......@@ -32,12 +32,12 @@ build-latest:
build-version:
stage: build
script:
- cd rstudio && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.0 -f 4.0.0.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.0
- cd rstudio && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.1 -f 4.0.1.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.1
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $R_VERSION_UPDATE != "true"
changes:
- rstudio/4.0.0.Dockerfile
- rstudio/4.0.1.Dockerfile
trigger-latest-build:
stage: deploy
......@@ -61,4 +61,4 @@ trigger-version-build:
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $R_VERSION_UPDATE != "true"
changes:
- rstudio/4.0.0.Dockerfile
- rstudio/4.0.1.Dockerfile
FROM registry.gitlab.b-data.ch/r/r-ver:4.0.1
ARG RSTUDIO_VERSION
ENV RSTUDIO_VERSION=${RSTUDIO_VERSION:-1.3.959}
ARG S6_VERSION
ARG PANDOC_TEMPLATES_VERSION
ENV S6_VERSION=${S6_VERSION:-v1.21.7.0}
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
ENV PATH=/usr/lib/rstudio-server/bin:$PATH
ENV PANDOC_TEMPLATES_VERSION=${PANDOC_TEMPLATES_VERSION:-2.9}
## Download and install RStudio server & dependencies
## Attempts to get detect latest version, otherwise falls back to version given in $VER
## Symlink pandoc, pandoc-citeproc so they are available system-wide
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
file \
git \
libapparmor1 \
libclang-dev \
libcurl4-openssl-dev \
libedit2 \
libssl-dev \
lsb-release \
multiarch-support \
nano \
psmisc \
procps \
python-setuptools \
sudo \
wget \
&& if [ -z "$RSTUDIO_VERSION" ]; \
then RSTUDIO_URL="https://www.rstudio.org/download/latest/stable/server/bionic/rstudio-server-latest-amd64.deb"; \
else RSTUDIO_URL="http://download2.rstudio.org/server/bionic/amd64/rstudio-server-${RSTUDIO_VERSION}-amd64.deb"; fi \
&& wget -q $RSTUDIO_URL \
&& dpkg -i rstudio-server-*-amd64.deb \
&& rm rstudio-server-*-amd64.deb \
## Symlink pandoc & standard pandoc templates for use system-wide
&& ln -s /usr/lib/rstudio-server/bin/pandoc/pandoc /usr/local/bin \
&& ln -s /usr/lib/rstudio-server/bin/pandoc/pandoc-citeproc /usr/local/bin \
&& git clone --recursive --branch ${PANDOC_TEMPLATES_VERSION} https://github.com/jgm/pandoc-templates \
&& mkdir -p /opt/pandoc/templates \
&& cp -r pandoc-templates*/* /opt/pandoc/templates && rm -rf pandoc-templates* \
&& mkdir /root/.pandoc && ln -s /opt/pandoc/templates /root/.pandoc/templates \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/ \
## RStudio wants an /etc/R, will populate from $R_HOME/etc
&& mkdir -p /etc/R \
## Write config files in $R_HOME/etc
&& echo '\n\
\n# Configure httr to perform out-of-band authentication if HTTR_LOCALHOST \
\n# is not set since a redirect to localhost may not work depending upon \
\n# where this Docker container is running. \
\nif(is.na(Sys.getenv("HTTR_LOCALHOST", unset=NA))) { \
\n options(httr_oob_default = TRUE) \
\n}' >> /usr/local/lib/R/etc/Rprofile.site \
&& echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \
## Need to configure non-root user for RStudio
&& useradd rstudio \
&& echo "rstudio:rstudio" | chpasswd \
&& mkdir /home/rstudio \
&& chown rstudio:rstudio /home/rstudio \
&& addgroup rstudio staff \
## Prevent rstudio from deciding to use /usr/bin/R if a user apt-get installs a package
&& echo 'rsession-which-r=/usr/local/bin/R' >> /etc/rstudio/rserver.conf \
## use more robust file locking to avoid errors when using shared volumes:
&& echo 'lock-type=advisory' >> /etc/rstudio/file-locks \
## configure git not to request password each time
&& git config --system credential.helper 'cache --timeout=3600' \
&& git config --system push.default simple \
## Set up S6 init system
&& wget -P /tmp/ https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-amd64.tar.gz \
&& tar xzf /tmp/s6-overlay-amd64.tar.gz -C / \
&& mkdir -p /etc/services.d/rstudio \
&& echo '#!/usr/bin/with-contenv bash \
\n## load /etc/environment vars first: \
\n for line in $( cat /etc/environment ) ; do export $line ; done \
\n exec /usr/lib/rstudio-server/bin/rserver --server-daemonize 0' \
> /etc/services.d/rstudio/run \
&& echo '#!/bin/bash \
\n rstudio-server stop' \
> /etc/services.d/rstudio/finish \
&& mkdir -p /home/rstudio/.rstudio/monitored/user-settings \
&& echo 'alwaysSaveHistory="0" \
\nloadRData="0" \
\nsaveAction="0"' \
> /home/rstudio/.rstudio/monitored/user-settings/user-settings \
&& chown -R rstudio:rstudio /home/rstudio/.rstudio
COPY userconf.sh /etc/cont-init.d/userconf
## running with "-e ADD=shiny" adds shiny server
COPY add_shiny.sh /etc/cont-init.d/add
COPY disable_auth_rserver.conf /etc/rstudio/disable_auth_rserver.conf
COPY pam-helper.sh /usr/lib/rstudio-server/bin/pam-helper
EXPOSE 8787
CMD ["/init"]
......@@ -5,7 +5,7 @@ services:
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
R_VERSION_UPDATE: "false"
R_VERSION_UPDATE: "true"
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
......@@ -32,12 +32,12 @@ build-latest:
build-version:
stage: build
script:
- cd tidyverse && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.0 -f 4.0.0.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.0
- cd tidyverse && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.1 -f 4.0.1.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.1
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $R_VERSION_UPDATE != "true"
changes:
- tidyverse/4.0.0.Dockerfile
- tidyverse/4.0.1.Dockerfile
trigger-latest-build:
stage: deploy
......@@ -61,4 +61,4 @@ trigger-version-build:
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $R_VERSION_UPDATE != "true"
changes:
- tidyverse/4.0.0.Dockerfile
- tidyverse/4.0.1.Dockerfile
FROM registry.gitlab.b-data.ch/rocker/rstudio:4.0.1
RUN apt-get update -qq && apt-get -y --no-install-recommends install \
libxml2-dev \
libcairo2-dev \
libsqlite-dev \
libmariadbd-dev \
libmariadbclient-dev \
libpq-dev \
libssh2-1-dev \
unixodbc-dev \
libsasl2-dev \
&& install2.r --error BiocManager \
&& install2.r --error \
--deps TRUE \
tidyverse \
dplyr \
devtools \
formatR \
remotes \
selectr \
caTools \
## Clean up
&& rm -rf /tmp/* \
&& rm -rf /var/lib/apt/lists/*
......@@ -5,7 +5,7 @@ services:
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
R_VERSION_UPDATE: "false"
R_VERSION_UPDATE: "true"
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
......@@ -32,12 +32,12 @@ build-latest:
build-version:
stage: build
script:
- cd verse && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.0 -f 4.0.0.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.0
- cd verse && docker build --pull -t $CI_REGISTRY_IMAGE:4.0.1 -f 4.0.1.Dockerfile .
- docker push $CI_REGISTRY_IMAGE:4.0.1
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $R_VERSION_UPDATE != "true"
changes:
- verse/4.0.0.Dockerfile
- verse/4.0.1.Dockerfile
trigger-latest-build:
stage: deploy
......@@ -61,4 +61,4 @@ trigger-version-build:
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $R_VERSION_UPDATE != "true"
changes:
- verse/4.0.0.Dockerfile
- verse/4.0.1.Dockerfile
FROM registry.gitlab.b-data.ch/rocker/tidyverse:4.0.1
# Version-stable CTAN repo from the tlnet archive at texlive.info, used in the
# TinyTeX installation: chosen as the frozen snapshot of the TeXLive release
# shipped for the base Debian image of a given rocker/r-ver tag.
# Debian buster => TeXLive 2018, frozen release snapshot 2019/02/27
ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2019/02/27/tlnet}
ENV CTAN_REPO=${CTAN_REPO}
ENV PATH=$PATH:/opt/TinyTeX/bin/x86_64-linux/
## Add LaTeX, rticles and bookdown support
RUN wget "https://travis-bin.yihui.name/texlive-local.deb" \
&& dpkg -i texlive-local.deb \
&& rm texlive-local.deb \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
cargo \
curl \
default-jdk \
fonts-roboto \
ghostscript \
less \
libbz2-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libicu-dev \
liblzma-dev \
libhunspell-dev \
libjpeg-dev \
libmagick++-dev \
libopenmpi-dev \
libpcre2-dev \
librdf0-dev \
libtiff-dev \
libv8-dev \
libzmq3-dev \
qpdf \
ssh \
texinfo \
vim \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
## Use tinytex for LaTeX installation
&& install2.r --error tinytex \
## Admin-based install of TinyTeX:
&& wget -qO- \
"https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" | \
sh -s - --admin --no-path \
&& mv ~/.TinyTeX /opt/TinyTeX \
&& if /opt/TinyTeX/bin/*/tex -v | grep -q 'TeX Live 2018'; then \
## Patch the Perl modules in the frozen TeX Live 2018 snapshot with the newer
## version available for the installer in tlnet/tlpkg/TeXLive, to include the
## fix described in https://github.com/yihui/tinytex/issues/77#issuecomment-466584510
## as discussed in https://www.preining.info/blog/2019/09/tex-services-at-texlive-info/#comments
wget -P /tmp/ ${CTAN_REPO}/install-tl-unx.tar.gz \
&& tar -xzf /tmp/install-tl-unx.tar.gz -C /tmp/ \
&& cp -Tr /tmp/install-tl-*/tlpkg/TeXLive /opt/TinyTeX/tlpkg/TeXLive \
&& rm -r /tmp/install-tl-*; \
fi \
&& /opt/TinyTeX/bin/*/tlmgr path add \
&& tlmgr install ae inconsolata listings metafont mfware parskip pdfcrop tex xcolor \
&& tlmgr path add \
&& Rscript -e "tinytex::r_texmf()" \
&& chown -R root:staff /opt/TinyTeX \
&& chmod -R g+w /opt/TinyTeX \
&& chmod -R g+wx /opt/TinyTeX/bin \
&& echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \
&& install2.r --error PKI \
## And some nice R packages for publishing-related stuff
&& install2.r --error --deps TRUE \
bookdown rticles rmdshower rJava \
## Clean up
&& rm -rf /tmp/*
#
## Consider including:
# - yihui/printr R package (when released to CRAN)
# - libgsl0-dev (GSL math library dependencies)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment