fix merge conflict

This commit is contained in:
Michael Mayer 2024-05-02 13:00:48 +02:00
commit 8e2dbc253a
41 changed files with 13241 additions and 7325 deletions

View file

@ -33,8 +33,6 @@ RUN yum -y update \
python3-pip \
readline-devel \
rpm-build \
ruby \
ruby-devel \
tcl-devel \
tex \
texinfo-tex \
@ -51,8 +49,11 @@ RUN yum -y update \
RUN pip3 install awscli --upgrade --user && \
ln -s /root/.local/bin/aws /usr/bin/aws
# Pin fpm for compatibility with Ruby < 2.3
RUN gem install ffi:1.12.2 fpm:1.11.0
RUN if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(cat /tmp/arch).rpm" && \
yum install -y "nfpm_$(cat /tmp/arch).rpm" && \
rm "nfpm_$(cat /tmp/arch).rpm"
RUN chmod 0777 /opt
@ -72,4 +73,5 @@ ENV R_RD4PDF="times,hyper"
COPY package.centos-7 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -34,8 +34,6 @@ RUN dnf -y upgrade \
python3-pip \
readline-devel \
rpm-build \
ruby \
ruby-devel \
tcl-devel \
tex \
texinfo-tex \
@ -52,8 +50,11 @@ RUN dnf -y upgrade \
RUN pip3 install awscli --upgrade --user \
&& ln -s /root/.local/bin/aws /usr/bin/aws
# Pin fpm to avoid git dependency in 1.12.0
RUN gem install fpm:1.11.0
RUN if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(cat /tmp/arch).rpm" && \
dnf install -y "nfpm_$(cat /tmp/arch).rpm" && \
rm "nfpm_$(cat /tmp/arch).rpm"
RUN chmod 0777 /opt
@ -73,4 +74,5 @@ ENV R_RD4PDF="times,hyper"
COPY package.centos-8 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -6,20 +6,22 @@ RUN set -x \
&& export DEBIAN_FRONTEND=noninteractive \
&& echo 'deb-src http://deb.debian.org/debian buster main' >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y gcc libcurl4-openssl-dev libicu-dev \
libopenblas-base libpcre2-dev make python3-pip ruby ruby-dev wget \
&& apt-get install -y curl gcc libcurl4-openssl-dev libicu-dev \
libopenblas-base libpcre2-dev make python3-pip wget \
&& apt-get build-dep -y r-base
RUN pip3 install awscli
RUN chmod 0777 /opt
# Pin fpm to avoid git dependency in 1.12.0
RUN gem install fpm:1.11.0
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(dpkg --print-architecture).deb" && \
apt install -y "./nfpm_$(dpkg --print-architecture).deb" && \
rm "nfpm_$(dpkg --print-architecture).deb"
# Override the default pager used by R
ENV PAGER /usr/bin/pager
COPY package.debian-10 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -6,15 +6,17 @@ RUN set -x \
&& export DEBIAN_FRONTEND=noninteractive \
&& echo 'deb-src http://deb.debian.org/debian bullseye main' >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y gcc libcurl4-openssl-dev libicu-dev \
libopenblas-base libpcre2-dev make python3-pip ruby ruby-dev wget \
&& apt-get install -y curl gcc libcurl4-openssl-dev libicu-dev \
libopenblas-base libpcre2-dev make python3-pip wget \
&& apt-get build-dep -y r-base
RUN pip3 install awscli
RUN chmod 0777 /opt
RUN gem install fpm
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(dpkg --print-architecture).deb" && \
apt install -y "./nfpm_$(dpkg --print-architecture).deb" && \
rm "nfpm_$(dpkg --print-architecture).deb"
# Override the default pager used by R
ENV PAGER /usr/bin/pager
@ -24,4 +26,5 @@ ENV INCLUDE_PCRE2_IN_R_3 yes
COPY package.debian-11 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -0,0 +1,34 @@
FROM debian:bookworm
ENV OS_IDENTIFIER debian-12
RUN set -x \
&& export DEBIAN_FRONTEND=noninteractive \
&& echo 'deb-src http://deb.debian.org/debian bookworm main' >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y curl gcc libcurl4-openssl-dev libicu-dev \
libopenblas0 libpcre2-dev make unzip wget \
&& apt-get build-dep -y r-base
# Install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf aws awscliv2.zip
RUN chmod 0777 /opt
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(dpkg --print-architecture).deb" && \
apt install -y "./nfpm_$(dpkg --print-architecture).deb" && \
rm "nfpm_$(dpkg --print-architecture).deb"
# Override the default pager used by R
ENV PAGER /usr/bin/pager
# R 3.x requires PCRE2 for Pango support on Debian 12
ENV INCLUDE_PCRE2_IN_R_3 yes
COPY package.debian-12 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -1,25 +0,0 @@
FROM debian:stretch
ENV OS_IDENTIFIER debian-9
RUN set -x \
&& export DEBIAN_FRONTEND=noninteractive \
&& echo 'deb-src http://deb.debian.org/debian stretch main' >> /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y gcc libcurl4-openssl-dev libicu-dev \
libopenblas-base libpcre2-dev make python-pip ruby ruby-dev wget \
&& apt-get build-dep -y r-base
RUN pip install awscli
RUN chmod 0777 /opt
# Pin fpm to avoid git dependency in 1.12.0
RUN gem install fpm:1.11.0
# Override the default pager used by R
ENV PAGER /usr/bin/pager
COPY package.debian-9 /package.sh
COPY build.sh .
ENTRYPOINT ./build.sh

View file

@ -0,0 +1,88 @@
FROM fedora:38
ENV OS_IDENTIFIER fedora-38
RUN dnf -y upgrade \
&& dnf -y install dnf-plugins-core \
&& dnf -y install \
autoconf \
automake \
bzip2-devel \
cairo-devel \
flexiblas-devel \
gcc-c++ \
gcc-gfortran \
java-11-openjdk-devel \
libICE-devel \
libSM-devel \
libX11-devel \
libXmu-devel \
libXt-devel \
libcurl-devel \
libicu-devel \
libjpeg-devel \
libpng-devel \
libtiff-devel \
libtool \
make \
ncurses-devel \
pango-devel \
pcre-devel \
pcre2-devel \
readline-devel \
rpm-build \
tcl-devel \
tex \
texinfo-tex \
texlive-collection-latexrecommended \
tk-devel \
unzip \
valgrind-devel \
which \
wget \
xz-devel \
zlib-devel \
&& dnf clean all
# Install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf aws awscliv2.zip
RUN if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(cat /tmp/arch).rpm" && \
dnf install -y "nfpm_$(cat /tmp/arch).rpm" && \
rm "nfpm_$(cat /tmp/arch).rpm"
RUN chmod 0777 /opt
# Configure flags that don't use the defaults in build.sh
ENV CONFIGURE_OPTIONS="\
--enable-R-shlib \
--with-tcltk \
--enable-memory-profiling \
--with-x \
--with-system-valgrind-headers \
--with-tcl-config=/usr/lib64/tclConfig.sh \
--with-tk-config=/usr/lib64/tkConfig.sh \
--enable-prebuilt-html \
--with-blas=flexiblas \
--with-lapack=flexiblas"
# Make sure that patching Java does not break R.
# R's default JAVA_HOME path includes the exact Java version on CentOS/RHEL, which
# requires users to run `R CMD javareconf` even on minor/patch upgrades. Use the
# major version symlink to avoid this.
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support
# https://solutions.posit.co/envs-pkgs/using-rjava/
ENV JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
# R 3.x requires PCRE2 for Pango support on RHEL 9
ENV INCLUDE_PCRE2_IN_R_3 yes
COPY package.fedora-38 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -0,0 +1,88 @@
FROM fedora:39
ENV OS_IDENTIFIER fedora-39
RUN dnf -y upgrade \
&& dnf -y install dnf-plugins-core \
&& dnf -y install \
autoconf \
automake \
bzip2-devel \
cairo-devel \
flexiblas-devel \
gcc-c++ \
gcc-gfortran \
java-11-openjdk-devel \
libICE-devel \
libSM-devel \
libX11-devel \
libXmu-devel \
libXt-devel \
libcurl-devel \
libicu-devel \
libjpeg-devel \
libpng-devel \
libtiff-devel \
libtool \
make \
ncurses-devel \
pango-devel \
pcre-devel \
pcre2-devel \
readline-devel \
rpm-build \
tcl-devel \
tex \
texinfo-tex \
texlive-collection-latexrecommended \
tk-devel \
unzip \
valgrind-devel \
which \
wget \
xz-devel \
zlib-devel \
&& dnf clean all
# Install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf aws awscliv2.zip
RUN if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(cat /tmp/arch).rpm" && \
dnf install -y "nfpm_$(cat /tmp/arch).rpm" && \
rm "nfpm_$(cat /tmp/arch).rpm"
RUN chmod 0777 /opt
# Configure flags for that don't use the defaults in build.sh
ENV CONFIGURE_OPTIONS="\
--enable-R-shlib \
--with-tcltk \
--enable-memory-profiling \
--with-x \
--with-system-valgrind-headers \
--with-tcl-config=/usr/lib64/tclConfig.sh \
--with-tk-config=/usr/lib64/tkConfig.sh \
--enable-prebuilt-html \
--with-blas=flexiblas \
--with-lapack=flexiblas"
# Make sure that patching Java does not break R.
# R's default JAVA_HOME path includes the exact Java version on CentOS/RHEL, which
# requires users to run `R CMD javareconf` even on minor/patch upgrades. Use the
# major version symlink to avoid this.
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support
# https://solutions.posit.co/envs-pkgs/using-rjava/
ENV JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
# R 3.x requires PCRE2 for Pango support on RHEL 9
ENV INCLUDE_PCRE2_IN_R_3 yes
COPY package.fedora-39 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -0,0 +1,103 @@
FROM opensuse/leap:15.4
ENV OS_IDENTIFIER opensuse-154
# Most of these packages, and also the configure options that follow were determined
# by reviewing "R-base.spec" from the following OpenSUSE RPM:
# https://download.opensuse.org/repositories/devel:/languages:/R:/released/openSUSE_Leap_42.3/src/R-base-3.5.3-103.1.src.rpm
RUN zypper --non-interactive update
RUN zypper --non-interactive --gpg-auto-import-keys -n install \
bzip2 \
cairo-devel \
curl \
fdupes \
gcc \
gcc-c++ \
gcc-fortran \
glib2-devel \
glibc-locale \
help2man \
# Like openSUSE/SLES 15.3, SUSE 15.4 ships with both ICU 65 (libicu-devel) and
# ICU 69 (icu.691-devel). Prefer ICU 69 because the devel packages can't coexist, and
# zypper resolves libicu-devel to icu.691-devel when installing RPMs.
icu.691-devel \
java-11-openjdk-devel \
libX11-devel \
libXScrnSaver-devel \
libXmu-devel \
libXt-devel \
libbz2-devel \
libcurl-devel \
libjpeg-devel \
libpng-devel \
libtiff-devel \
make \
pango-devel \
pcre-devel \
pcre2-devel \
perl \
perl-macros \
readline-devel \
rpm-build \
shadow \
tcl-devel \
texinfo \
texlive-ae \
texlive-bibtex \
texlive-cm-super \
texlive-dvips \
texlive-fancyvrb \
texlive-helvetic \
texlive-inconsolata \
texlive-latex \
texlive-makeindex \
texlive-metafont \
texlive-psnfss \
texlive-tex \
texlive-times \
tk-devel \
unzip \
wget \
xdg-utils \
xorg-x11-devel \
xz-devel \
zip \
zlib-devel \
&& zypper clean
# Install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf aws awscliv2.zip
RUN if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(cat /tmp/arch).rpm" && \
zypper --non-interactive --no-gpg-checks install "nfpm_$(cat /tmp/arch).rpm" && \
rm "nfpm_$(cat /tmp/arch).rpm"
RUN chmod 0777 /opt
# Configure flags for SUSE that don't use the defaults in build.sh
ENV CONFIGURE_OPTIONS="\
--enable-R-shlib \
--with-tcltk \
--with-x \
--enable-memory-profiling \
--with-tcl-config=/usr/lib64/tclConfig.sh \
--with-tk-config=/usr/lib64/tkConfig.sh"
# Make sure that patching Java does not break R.
# On SUSE, the default JAVA_HOME path always uses the major Java version only,
# but the JDK path is chosen by default. We change this to the JRE path to
# support users who only want to install the JRE (non-devel) package.
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support
# https://solutions.posit.co/envs-pkgs/using-rjava/
ENV JAVA_HOME=/usr/lib64/jvm/jre-11-openjdk
COPY package.opensuse-154 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -0,0 +1,103 @@
FROM opensuse/leap:15.5
ENV OS_IDENTIFIER opensuse-155
# Most of these packages, and also the configure options that follow were determined
# by reviewing "R-base.spec" from the following OpenSUSE RPM:
# https://download.opensuse.org/repositories/devel:/languages:/R:/released/openSUSE_Leap_42.3/src/R-base-3.5.3-103.1.src.rpm
RUN zypper --non-interactive update
RUN zypper --non-interactive --gpg-auto-import-keys -n install \
bzip2 \
cairo-devel \
curl \
fdupes \
gcc \
gcc-c++ \
gcc-fortran \
glib2-devel \
glibc-locale \
help2man \
# Like openSUSE/SLES 15.4, SUSE 15.5 ships with both ICU 65 (libicu-devel) and
# ICU 69 (icu.691-devel). Prefer ICU 69 because the devel packages can't coexist, and
# zypper resolves libicu-devel to icu.691-devel when installing RPMs.
icu.691-devel \
java-11-openjdk-devel \
libX11-devel \
libXScrnSaver-devel \
libXmu-devel \
libXt-devel \
libbz2-devel \
libcurl-devel \
libjpeg-devel \
libpng-devel \
libtiff-devel \
make \
pango-devel \
pcre-devel \
pcre2-devel \
perl \
perl-macros \
readline-devel \
rpm-build \
shadow \
tcl-devel \
texinfo \
texlive-ae \
texlive-bibtex \
texlive-cm-super \
texlive-dvips \
texlive-fancyvrb \
texlive-helvetic \
texlive-inconsolata \
texlive-latex \
texlive-makeindex \
texlive-metafont \
texlive-psnfss \
texlive-tex \
texlive-times \
tk-devel \
unzip \
wget \
xdg-utils \
xorg-x11-devel \
xz-devel \
zip \
zlib-devel \
&& zypper clean
# Install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf aws awscliv2.zip
RUN if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(cat /tmp/arch).rpm" && \
zypper --non-interactive --no-gpg-checks install "nfpm_$(cat /tmp/arch).rpm" && \
rm "nfpm_$(cat /tmp/arch).rpm"
RUN chmod 0777 /opt
# Configure flags for SUSE that don't use the defaults in build.sh
ENV CONFIGURE_OPTIONS="\
--enable-R-shlib \
--with-tcltk \
--with-x \
--enable-memory-profiling \
--with-tcl-config=/usr/lib64/tclConfig.sh \
--with-tk-config=/usr/lib64/tkConfig.sh"
# Make sure that patching Java does not break R.
# On SUSE, the default JAVA_HOME path always uses the major Java version only,
# but the JDK path is chosen by default. We change this to the JRE path to
# support users who only want to install the JRE (non-devel) package.
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support
# https://solutions.posit.co/envs-pkgs/using-rjava/
ENV JAVA_HOME=/usr/lib64/jvm/jre-11-openjdk
COPY package.opensuse-155 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

94
builder/Dockerfile.rhel-9 Normal file
View file

@ -0,0 +1,94 @@
FROM rockylinux:9
ENV OS_IDENTIFIER rhel-9
RUN dnf -y upgrade \
&& dnf -y install dnf-plugins-core \
&& dnf config-manager --set-enabled crb \
&& dnf install -y epel-release \
&& dnf -y install \
autoconf \
automake \
bzip2-devel \
cairo-devel \
flexiblas-devel \
gcc-c++ \
gcc-gfortran \
java-11-openjdk-devel \
libICE-devel \
libSM-devel \
libX11-devel \
libXmu-devel \
libXt-devel \
libcurl-devel \
libicu-devel \
libjpeg-devel \
libpng-devel \
libtiff-devel \
libtool \
make \
ncurses-devel \
pango-devel \
pcre-devel \
pcre2-devel \
readline-devel \
rpm-build \
tcl-devel \
tex \
texinfo-tex \
texlive-collection-latexrecommended \
tk-devel \
unzip \
valgrind-devel \
which \
wget \
xz-devel \
zlib-devel \
&& dnf clean all
# Install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf aws awscliv2.zip
RUN if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(cat /tmp/arch).rpm" && \
dnf install -y "nfpm_$(cat /tmp/arch).rpm" && \
rm "nfpm_$(cat /tmp/arch).rpm"
RUN chmod 0777 /opt
# Configure flags for RHEL 9 that don't use the defaults in build.sh
ENV CONFIGURE_OPTIONS="\
--enable-R-shlib \
--with-tcltk \
--enable-memory-profiling \
--with-x \
--with-system-valgrind-headers \
--with-tcl-config=/usr/lib64/tclConfig.sh \
--with-tk-config=/usr/lib64/tkConfig.sh \
--enable-prebuilt-html"
# RHEL 9 doesn't have the inconsolata font, so override the defaults.
# This may be removed if RHEL ever adds the texlive-inconsolata package from Fedora.
# Or check `dnf provides '*/inconsolata.sty'` for a package that provides it.
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Making-the-manuals
ENV R_RD4PDF="times,hyper"
# Make sure that patching Java does not break R.
# R's default JAVA_HOME path includes the exact Java version on CentOS/RHEL, which
# requires users to run `R CMD javareconf` even on minor/patch upgrades. Use the
# major version symlink to avoid this.
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support
# https://solutions.posit.co/envs-pkgs/using-rjava/
ENV JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
# R 3.x requires PCRE2 for Pango support on RHEL 9
ENV INCLUDE_PCRE2_IN_R_3 yes
COPY package.rhel-9 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -1,24 +0,0 @@
FROM ubuntu:bionic
ENV OS_IDENTIFIER ubuntu-1804
RUN set -x \
&& sed -i "s|# deb-src|deb-src|g" /etc/apt/sources.list \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install -y libcurl4-openssl-dev libicu-dev libopenblas-base libpcre2-dev wget python-pip ruby ruby-dev \
&& apt-get build-dep -y r-base
RUN pip install awscli
# Pin fpm to avoid git dependency in 1.12.0
RUN gem install fpm:1.11.0
RUN chmod 0777 /opt
# Override the default pager used by R
ENV PAGER /usr/bin/pager
COPY package.ubuntu-1804 /package.sh
COPY build.sh .
ENTRYPOINT ./build.sh

View file

@ -6,13 +6,14 @@ RUN set -x \
&& sed -i "s|# deb-src|deb-src|g" /etc/apt/sources.list \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install -y libopenblas-dev libcurl4-openssl-dev libicu-dev libpcre2-dev wget python3-pip ruby ruby-dev \
&& apt-get install -y curl libopenblas-dev libcurl4-openssl-dev libicu-dev liblapack-dev libpcre2-dev wget python3-pip \
&& apt-get build-dep -y r-base
RUN pip3 install awscli
# Pin fpm to avoid git dependency in 1.12.0
RUN gem install fpm:1.11.0
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(dpkg --print-architecture).deb" && \
apt install -y "./nfpm_$(dpkg --print-architecture).deb" && \
rm "nfpm_$(dpkg --print-architecture).deb"
RUN chmod 0777 /opt
@ -21,4 +22,5 @@ ENV PAGER /usr/bin/pager
COPY package.ubuntu-2004 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -6,12 +6,14 @@ RUN set -x \
&& sed -i "s|# deb-src|deb-src|g" /etc/apt/sources.list \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install -y libcurl4-openssl-dev libicu-dev libopenblas-base libpcre2-dev wget python3-pip ruby ruby-dev \
&& apt-get install -y curl libcurl4-openssl-dev libicu-dev libopenblas-base libpcre2-dev wget python3-pip \
&& apt-get build-dep -y r-base
RUN pip3 install awscli
RUN gem install fpm
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(dpkg --print-architecture).deb" && \
apt install -y "./nfpm_$(dpkg --print-architecture).deb" && \
rm "nfpm_$(dpkg --print-architecture).deb"
RUN chmod 0777 /opt
@ -23,4 +25,5 @@ ENV INCLUDE_PCRE2_IN_R_3 yes
COPY package.ubuntu-2204 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -0,0 +1,33 @@
FROM ubuntu:noble
ENV OS_IDENTIFIER ubuntu-2404
RUN set -x \
&& sed -i "s|Types: deb|Types: deb deb-src|g" /etc/apt/sources.list.d/ubuntu.sources \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt update \
&& apt install -y curl libcurl4-openssl-dev libicu-dev libopenblas0-pthread libpcre2-dev libpcre3-dev unzip wget \
&& apt build-dep -y r-base
# Install AWS CLI
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf aws awscliv2.zip
RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_$(dpkg --print-architecture).deb" && \
apt install -y "./nfpm_$(dpkg --print-architecture).deb" && \
rm "nfpm_$(dpkg --print-architecture).deb"
RUN chmod 0777 /opt
# Override the default pager used by R
ENV PAGER /usr/bin/pager
# R 3.x requires PCRE2 for Pango support on Ubuntu 24
ENV INCLUDE_PCRE2_IN_R_3 yes
COPY package.ubuntu-2404 /package.sh
COPY build.sh .
COPY patches /patches
ENTRYPOINT ./build.sh

View file

@ -5,6 +5,7 @@ export CRAN=${CRAN-"https://cran.rstudio.com"}
export S3_BUCKET_PREFIX=${S3_BUCKET_PREFIX-""}
export OS_IDENTIFIER=${OS_IDENTIFIER-"unknown"}
export TARBALL_NAME="R-${R_VERSION}-${OS_IDENTIFIER}.tar.gz"
export R_INSTALL_PATH=${R_INSTALL_PATH:-"/opt/R/${R_VERSION}"}
# Some Dockerfiles may copy a `/env.sh` to set up environment variables
# that require command substitution. If this file exists, source it.
@ -33,9 +34,11 @@ upload_r() {
fi
}
# archive_r() - $1 as r version
# archive_r()
archive_r() {
tar czf /tmp/${TARBALL_NAME} --directory=/opt/R ${1} --owner=0 --group=0
dir=$(dirname "$R_INSTALL_PATH")
base=$(basename "$R_INSTALL_PATH")
tar czf "/tmp/${TARBALL_NAME}" --directory="$dir" "$base" --owner=0 --group=0
}
fetch_r_source() {
@ -61,14 +64,32 @@ fetch_r_source() {
rm /tmp/R-${1}.tar.gz
}
# Apply a patch for this R version if present. Typically for R-devel.
patch_r() {
cd /tmp/R-${1}
if [ -f "/patches/R-${1}.patch" ]; then
patch -p1 < "/patches/R-${1}.patch"
fi
if [ -f "/patches/R-${1}-${OS_IDENTIFIER}.patch" ]; then
patch -p1 < "/patches/R-${1}-${OS_IDENTIFIER}.patch"
fi
if [ -f "/patches/R-${1}-`arch`.patch" ]; then
patch -p1 < "/patches/R-${1}-`arch`.patch"
fi
}
# compile_r() - $1 as r version
compile_r() {
cd /tmp/R-${1}
r_version=${1}
cd "/tmp/R-${r_version}"
# tools/config.guess in R versions older than 3.2.2 guess 'unknown' instead of 'pc'
# test the version and properly set the flag.
build_flag='--build=x86_64-pc-linux-gnu'
if _version_is_greater_than ${R_VERSION} 3.2.2; then
build_flag="--build=$(uname -m)-pc-linux-gnu"
if _version_is_greater_than "${r_version}" 3.2.2; then
build_flag=''
fi
@ -81,7 +102,7 @@ compile_r() {
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Using-Fortran
# https://gcc.gnu.org/gcc-10/porting_to.html
gcc_major_version=$(gcc -dumpversion | cut -d '.' -f 1)
if _version_is_less_than "${R_VERSION}" 3.6.2 && _version_is_greater_than "${gcc_major_version}" 9; then
if _version_is_less_than "${r_version}" 3.6.2 && _version_is_greater_than "${gcc_major_version}" 9; then
# Default CFLAGS/FFLAGS for all R 3.x versions is '-g -O2' when using GCC
export CFLAGS='-g -O2 -fcommon'
export FFLAGS='-g -O2 -fallow-argument-mismatch'
@ -97,9 +118,9 @@ compile_r() {
#
# The INCLUDE_PCRE2_IN_R_3 environment variable can be set to include PCRE2
# in R 3.x builds, for distributions where PCRE2 is always required.
# In Debian 11/Ubuntu 22, Pango now depends on PCRE2, so R 3.x will not be compiled with
# In Debian 11/Ubuntu 22/RHEL 9, Pango now depends on PCRE2, so R 3.x will not be compiled with
# Pango support if the PCRE2 pkg-config file is missing.
if [[ "${1}" =~ ^3 ]] && pkg-config --exists libpcre2-8 && [ -z "$INCLUDE_PCRE2_IN_R_3" ]; then
if [[ "${r_version}" =~ ^3 ]] && pkg-config --exists libpcre2-8 && [ -z "$INCLUDE_PCRE2_IN_R_3" ]; then
mkdir -p /tmp/pcre2
pc_dir=$(pkg-config --variable pcfiledir libpcre2-8)
mv ${pc_dir}/libpcre2-8.pc /tmp/pcre2
@ -108,6 +129,15 @@ compile_r() {
trap "{ mv /tmp/pcre2/libpcre2-8.pc ${pc_dir}; mv /tmp/pcre2/pcre2-config ${config_bin}; }" EXIT
fi
# Allow libcurl 8.x to be used in R 4.2 and below. Despite a change in major
# version number, libcurl 8 changes neither API nor ABI. This applies the same
# change to configure made in R 4.3.0, replacing exit(1) with exit(0) when
# LIBCURL_VERSION_MAJOR > 7.
# https://github.com/wch/r-source/commit/da6638896413bcbb5970b2335b92582853f94e3c
if _version_is_less_than "${r_version}" 4.3.0; then
sed -i -z 's/#if LIBCURL_VERSION_MAJOR > 7\n exit(1)/#if LIBCURL_VERSION_MAJOR > 7\n exit(0)/' configure
fi
# Default configure options. Some Dockerfiles override this with an ENV directive.
default_configure_options="\
--enable-R-shlib \
@ -119,6 +149,16 @@ compile_r() {
CONFIGURE_OPTIONS=${CONFIGURE_OPTIONS:-$default_configure_options}
# For RHEL 9, link to external FlexiBLAS starting from R 4.3.0 to align with EPEL 9
if _version_is_greater_than "${R_VERSION}" 4.2.10; then
if [[ "${OS_IDENTIFIER}" = "rhel-9" ]]; then
CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS \
--with-blas=flexiblas --with-lapack=flexiblas"
fi
fi
echo "Using CONFIGURE_OPTIONS: ${CONFIGURE_OPTIONS}"
# set some common environment variables for the configure step
AWK=/usr/bin/awk \
LIBnn=lib \
@ -130,7 +170,7 @@ compile_r() {
R_UNZIPCMD=/usr/bin/unzip \
R_ZIPCMD=/usr/bin/zip \
./configure \
--prefix=/opt/R/${1} \
--prefix="${R_INSTALL_PATH}" \
${CONFIGURE_OPTIONS} \
${build_flag}
make clean
@ -139,7 +179,7 @@ compile_r() {
# Add OS identifier to the default HTTP user agent.
# Set this in the system Rprofile so it works when R is run with --vanilla.
cat <<EOF >> /opt/R/${1}/lib/R/library/base/R/Rprofile
cat <<EOF >> "${R_INSTALL_PATH}"/lib/R/library/base/R/Rprofile
## Set the default HTTP user agent
local({
os_identifier <- if (file.exists("/etc/os-release")) {
@ -157,7 +197,7 @@ EOF
}
# check for packager script
## If it exists this build is ready for packaging with fpm, so run the script
## If it exists this build is ready for packaging with nFPM, so run the script
## else do nothing
package_r() {
if [[ -f /package.sh ]]; then
@ -167,7 +207,7 @@ package_r() {
}
set_up_environment() {
mkdir -p /opt/R
mkdir -p "$R_INSTALL_PATH"
}
_version_is_greater_than() {
@ -181,7 +221,8 @@ _version_is_less_than() {
###### RUN R COMPILE PROCEDURE ######
set_up_environment
fetch_r_source $R_VERSION
patch_r $R_VERSION
compile_r $R_VERSION
package_r $R_VERSION
archive_r $R_VERSION
archive_r
upload_r $R_VERSION

View file

@ -1,21 +1,9 @@
version: '2.0'
services:
ubuntu-1804:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.ubuntu-1804
image: r-builds:ubuntu-1804
volumes:
- ./integration/tmp:/tmp/output
ubuntu-2004:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
@ -27,6 +15,7 @@ services:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
@ -34,21 +23,23 @@ services:
image: r-builds:ubuntu-2204
volumes:
- ./integration/tmp:/tmp/output
debian-9:
ubuntu-2404:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.debian-9
image: r-builds:debian-9
dockerfile: Dockerfile.ubuntu-2404
image: r-builds:ubuntu-2404
volumes:
- ./integration/tmp:/tmp/output
debian-10:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
@ -60,6 +51,7 @@ services:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
@ -67,10 +59,23 @@ services:
image: r-builds:debian-11
volumes:
- ./integration/tmp:/tmp/output
debian-12:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.debian-12
image: r-builds:debian-12
volumes:
- ./integration/tmp:/tmp/output
centos-7:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
@ -82,6 +87,7 @@ services:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
@ -89,14 +95,63 @@ services:
image: r-builds:centos-8
volumes:
- ./integration/tmp:/tmp/output
opensuse-153:
rhel-9:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.opensuse-153
image: r-builds:opensuse-153
dockerfile: Dockerfile.rhel-9
image: r-builds:rhel-9
volumes:
- ./integration/tmp:/tmp/output
opensuse-155:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.opensuse-155
image: r-builds:opensuse-155
volumes:
- ./integration/tmp:/tmp/output
opensuse-154:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.opensuse-154
image: r-builds:opensuse-154
volumes:
- ./integration/tmp:/tmp/output
fedora-38:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.fedora-38
image: r-builds:fedora-38
volumes:
- ./integration/tmp:/tmp/output
fedora-39:
command: ./build.sh
environment:
- R_VERSION=${R_VERSION}
- R_INSTALL_PATH=${R_INSTALL_PATH}
- LOCAL_STORE=/tmp/output
build:
context: .
dockerfile: Dockerfile.fedora-39
image: r-builds:fedora-39
volumes:
- ./integration/tmp:/tmp/output

View file

@ -1,7 +1,7 @@
#!/bin/bash
if [[ ! -d /tmp/output/centos-7 ]]; then
mkdir -p /tmp/output/centos-7
if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then
mkdir -p "/tmp/output/${OS_IDENTIFIER}"
fi
# R 3.x requires PCRE1
@ -12,55 +12,64 @@ fi
# create post-install script required for openblas
cat <<EOF >> /post-install.sh
mv /opt/R/${R_VERSION}/lib/R/lib/libRblas.so /opt/R/${R_VERSION}/lib/R/lib/libRblas.so.keep
ln -s /usr/lib64/libopenblasp.so /opt/R/${R_VERSION}/lib/R/lib/libRblas.so
mv ${R_INSTALL_PATH}/lib/R/lib/libRblas.so ${R_INSTALL_PATH}/lib/R/lib/libRblas.so.keep
ln -s /usr/lib64/libopenblasp.so ${R_INSTALL_PATH}/lib/R/lib/libRblas.so
EOF
# create after-remove script to remove internal blas
cat <<EOF >> /before-remove.sh
if [ -d /opt/R/${R_VERSION} ]; then
rm -r /opt/R/${R_VERSION}
cat <<EOF >> /after-remove.sh
if [ -d ${R_INSTALL_PATH} ]; then
rm -r ${R_INSTALL_PATH}
fi
EOF
fpm \
-s dir \
-t rpm \
-v 1 \
-n R-${R_VERSION} \
--vendor "RStudio, PBC" \
--deb-priority "optional" \
--deb-field 'Bugs: https://github.com/rstudio/r-builds/issues' \
--url "http://www.r-project.org/" \
--description "GNU R statistical computation and graphics system" \
--maintainer "RStudio, PBC https://github.com/rstudio/r-builds" \
--license "GPL-2" \
--after-install /post-install.sh \
--after-remove /before-remove.sh \
-p /tmp/output/centos-7/ \
-d bzip2-devel \
-d gcc \
-d gcc-c++ \
-d gcc-gfortran \
-d libcurl-devel \
-d libicu-devel \
-d libSM \
-d libtiff \
-d libXmu \
-d libXt \
-d make \
-d openblas-devel \
-d pango \
-d ${pcre_lib} \
-d tcl \
-d tk \
-d unzip \
-d which \
-d xz-devel \
-d zip \
-d zlib-devel \
/opt/R/${R_VERSION}
if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
shopt -s extglob
export PKG_FILE=$(ls /tmp/output/centos-7/[rR]-${R_VERSION}*.@(deb|rpm) | head -1)
cat <<EOF > /tmp/nfpm.yml
name: R-${R_VERSION}
version: 1
version_schema: none
arch: $(cat /tmp/arch)
release: 1
maintainer: Posit Software, PBC <https://github.com/rstudio/r-builds>
description: |
GNU R statistical computation and graphics system
vendor: Posit Software, PBC
homepage: https://www.r-project.org
license: GPLv2+
depends:
- bzip2-devel
- gcc
- gcc-c++
- gcc-gfortran
- libcurl-devel
- libicu-devel
- libSM
- libtiff
- libXmu
- libXt
- make
- openblas-devel
- pango
- ${pcre_lib}
- tcl
- tk
- unzip
- which
- xz-devel
- zip
- zlib-devel
contents:
- src: ${R_INSTALL_PATH}
dst: ${R_INSTALL_PATH}
scripts:
postinstall: /post-install.sh
postremove: /after-remove.sh
EOF
nfpm package \
-f /tmp/nfpm.yml \
-p rpm \
-t "/tmp/output/${OS_IDENTIFIER}"
export PKG_FILE=$(ls /tmp/output/${OS_IDENTIFIER}/R-${R_VERSION}*.rpm | head -1)

View file

@ -1,5 +1,7 @@
if [[ ! -d /tmp/output/centos-8 ]]; then
mkdir -p /tmp/output/centos-8
#!/bin/bash
if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then
mkdir -p "/tmp/output/${OS_IDENTIFIER}"
fi
# R 3.x requires PCRE1
@ -8,57 +10,79 @@ if [[ "${R_VERSION}" =~ ^3 ]]; then
pcre_lib='pcre-devel'
fi
# create post-install script required for openblas
# Create post-install script required for OpenBLAS.
#
# On RHEL and SUSE, we link R against the internal shared BLAS to make the
# R binaries more portable and allow users to switch BLAS implementations without
# having to recompile R. We default to OpenBLAS, but users may prefer other implementations.
#
# Binary packages built against the shared BLAS are also more portable and may be used
# with the default R distributed by RHEL/SUSE, or other R installations using
# shared BLAS and configured with a different BLAS (such as Microsoft R Open with MKL).
# This is especially important for Posit Package Manager's binary packages.
#
# However, as of R 4.2.3, EPEL 8's R no longer uses shared BLAS and now links to an
# external OpenBLAS (OpenMP). This means EPEL R no longer has a swappable BLAS and
# is no longer compatible with these R builds.
cat <<EOF >> /post-install.sh
mv /opt/R/${R_VERSION}/lib/R/lib/libRblas.so /opt/R/${R_VERSION}/lib/R/lib/libRblas.so.keep
ln -s /usr/lib64/libopenblasp.so.0 /opt/R/${R_VERSION}/lib/R/lib/libRblas.so
mv ${R_INSTALL_PATH}/lib/R/lib/libRblas.so ${R_INSTALL_PATH}/lib/R/lib/libRblas.so.keep
ln -s /usr/lib64/libopenblasp.so.0 ${R_INSTALL_PATH}/lib/R/lib/libRblas.so
EOF
# create after-remove script to remove internal blas
cat <<EOF >> /before-remove.sh
if [ -d /opt/R/${R_VERSION} ]; then
rm -r /opt/R/${R_VERSION}
cat <<EOF >> /after-remove.sh
if [ -d ${R_INSTALL_PATH} ]; then
rm -r ${R_INSTALL_PATH}
fi
EOF
fpm \
-s dir \
-t rpm \
-v 1 \
-n R-${R_VERSION} \
--vendor "RStudio, PBC" \
--deb-priority "optional" \
--deb-field 'Bugs: https://github.com/rstudio/r-builds/issues' \
--url "http://www.r-project.org/" \
--description "GNU R statistical computation and graphics system" \
--maintainer "RStudio, PBC https://github.com/rstudio/r-builds" \
--license "GPL-2" \
--after-install /post-install.sh \
--after-remove /before-remove.sh \
-p /tmp/output/centos-8/ \
-d bzip2-devel \
-d gcc \
-d gcc-c++ \
-d gcc-gfortran \
-d libcurl-devel \
-d libicu-devel \
-d libSM \
-d libtiff \
-d libXmu \
-d libXt \
-d make \
-d openblas-threads \
-d pango \
-d ${pcre_lib} \
-d tcl \
-d tk \
-d unzip \
-d which \
-d xz-devel \
-d zip \
-d zlib-devel \
/opt/R/${R_VERSION}
if [ "$(arch)" == "aarch64" ]; then echo arm64; else echo amd64; fi > /tmp/arch
shopt -s extglob
export PKG_FILE=$(ls /tmp/output/centos-8/[rR]-${R_VERSION}*.@(deb|rpm) | head -1)
cat <<EOF > /tmp/nfpm.yml
name: R-${R_VERSION}
version: 1
version_schema: none
arch: $(cat /tmp/arch)
release: 1
maintainer: Posit Software, PBC <https://github.com/rstudio/r-builds>
description: |
GNU R statistical computation and graphics system
vendor: Posit Software, PBC
homepage: https://www.r-project.org
license: GPLv2+
depends:
- bzip2-devel
- gcc
- gcc-c++
- gcc-gfortran
- libcurl-devel
- libicu-devel
- libSM
- libtiff
- libXmu
- libXt
- make
- openblas-threads
- pango
- ${pcre_lib}
- tcl
- tk
- unzip
- which
- xz-devel
- zip
- zlib-devel
contents:
- src: ${R_INSTALL_PATH}
dst: ${R_INSTALL_PATH}
scripts:
postinstall: /post-install.sh
postremove: /after-remove.sh
EOF
nfpm package \
-f /tmp/nfpm.yml \
-p rpm \
-t "/tmp/output/${OS_IDENTIFIER}"
export PKG_FILE=$(ls /tmp/output/${OS_IDENTIFIER}/R-${R_VERSION}*.rpm | head -1)

View file

@ -1,7 +1,7 @@
#!/bin/bash
if [[ ! -d /tmp/output/debian-10 ]]; then
mkdir -p /tmp/output/debian-10
if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then
mkdir -p "/tmp/output/${OS_IDENTIFIER}"
fi
# R 3.x requires PCRE1
@ -10,50 +10,60 @@ if [[ "${R_VERSION}" =~ ^3 ]]; then
pcre_lib='libpcre3-dev'
fi
fpm \
-s dir \
-t deb \
-v 1 \
-n R-${R_VERSION} \
--vendor "RStudio, PBC" \
--deb-priority "optional" \
--deb-field 'Bugs: https://github.com/rstudio/r-builds/issues' \
--url "http://www.r-project.org/" \
--description "GNU R statistical computation and graphics system" \
--maintainer "RStudio, PBC https://github.com/rstudio/r-builds" \
--license "GPL-2" \
-p /tmp/output/debian-10/ \
-d ca-certificates \
-d g++ \
-d gcc \
-d gfortran \
-d libbz2-dev \
-d libc6 \
-d libcairo2 \
-d libcurl4-openssl-dev \
-d libglib2.0-0 \
-d libgomp1 \
-d libicu-dev \
-d liblzma-dev \
-d libopenblas-dev \
-d libpango-1.0-0 \
-d libpangocairo-1.0-0 \
-d libpaper-utils \
-d ${pcre_lib} \
-d libpng16-16 \
-d libreadline7 \
-d libtcl8.6 \
-d libtiff5 \
-d libtk8.6 \
-d libx11-6 \
-d libxt6 \
-d make \
-d ucf \
-d unzip \
-d zip \
-d zlib1g-dev \
/opt/R/${R_VERSION}
cat <<EOF > /tmp/nfpm.yml
name: r-${R_VERSION}
version: 1
version_schema: none
section: gnu-r
arch: $(dpkg --print-architecture)
priority: optional
maintainer: Posit Software, PBC <https://github.com/rstudio/r-builds>
description: |
GNU R statistical computation and graphics system
vendor: Posit Software, PBC
homepage: https://www.r-project.org
license: GPL-2
deb:
fields:
Bugs: https://github.com/rstudio/r-builds/issues
depends:
- ca-certificates
- g++
- gcc
- gfortran
- libbz2-dev
- libc6
- libcairo2
- libcurl4-openssl-dev
- libglib2.0-0
- libgomp1
- libicu-dev
- liblzma-dev
- libopenblas-dev
- libpango-1.0-0
- libpangocairo-1.0-0
- libpaper-utils
- ${pcre_lib}
- libpng16-16
- libreadline7
- libtcl8.6
- libtiff5
- libtk8.6
- libx11-6
- libxt6
- make
- ucf
- unzip
- zip
- zlib1g-dev
contents:
- src: ${R_INSTALL_PATH}
dst: ${R_INSTALL_PATH}
EOF
shopt -s extglob
export PKG_FILE=$(ls /tmp/output/debian-10/[rR]-${R_VERSION}*.@(deb|rpm) | head -1)
nfpm package \
-f /tmp/nfpm.yml \
-p deb \
-t "/tmp/output/${OS_IDENTIFIER}"
export PKG_FILE=$(ls /tmp/output/${OS_IDENTIFIER}/r-${R_VERSION}*.deb | head -1)

Some files were not shown because too many files have changed in this diff Show more