diff --git a/builder/Dockerfile.debian-11 b/builder/Dockerfile.debian-11 index ba4d1bd..1845673 100644 --- a/builder/Dockerfile.debian-11 +++ b/builder/Dockerfile.debian-11 @@ -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_amd64.deb && \ + apt install -y ./nfpm_amd64.deb && \ + rm nfpm_amd64.deb # Override the default pager used by R ENV PAGER /usr/bin/pager diff --git a/builder/Dockerfile.rhel-9 b/builder/Dockerfile.rhel-9 index 9d7f37f..e57eb31 100644 --- a/builder/Dockerfile.rhel-9 +++ b/builder/Dockerfile.rhel-9 @@ -32,8 +32,6 @@ RUN dnf -y upgrade \ pcre2-devel \ readline-devel \ rpm-build \ - ruby \ - ruby-devel \ tcl-devel \ tex \ texinfo-tex \ @@ -53,7 +51,9 @@ RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2 ./aws/install && \ rm -rf aws awscliv2.zip -RUN gem install fpm +RUN curl -LO https://github.com/goreleaser/nfpm/releases/download/v2.18.1/nfpm_amd64.rpm && \ + dnf install -y nfpm_amd64.rpm && \ + rm nfpm_amd64.rpm RUN chmod 0777 /opt diff --git a/builder/Dockerfile.ubuntu-2204 b/builder/Dockerfile.ubuntu-2204 index 4416aec..5d28093 100644 --- a/builder/Dockerfile.ubuntu-2204 +++ b/builder/Dockerfile.ubuntu-2204 @@ -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_amd64.deb && \ + apt install -y ./nfpm_amd64.deb && \ + rm nfpm_amd64.deb RUN chmod 0777 /opt diff --git a/builder/package.debian-11 b/builder/package.debian-11 index 27f1d0f..b897a5a 100644 --- a/builder/package.debian-11 +++ b/builder/package.debian-11 @@ -1,59 +1,69 @@ #!/bin/bash -if [[ ! -d /tmp/output/debian-11 ]]; then - mkdir -p /tmp/output/debian-11 +if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then + mkdir -p "/tmp/output/${OS_IDENTIFIER}" fi # R 3.x requires PCRE1. On Debian 11, R 3.x also requires PCRE2 for Pango support. -pcre_lib_flags='-d libpcre2-dev' +pcre_libs='- libpcre2-dev' if [[ "${R_VERSION}" =~ ^3 ]]; then - pcre_lib_flags='-d libpcre2-dev -d libpcre3-dev' + pcre_libs='- libpcre2-dev +- 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-11/ \ - -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 \ - ${pcre_lib_flags} \ - -d libpng16-16 \ - -d libreadline8 \ - -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 < /tmp/nfpm.yml +name: r-${R_VERSION} +version: 1 +version_schema: none +section: gnu-r +priority: optional +maintainer: RStudio, PBC +description: | + GNU R statistical computation and graphics system +vendor: RStudio, 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_libs} +- libpng16-16 +- libreadline8 +- libtcl8.6 +- libtiff5 +- libtk8.6 +- libx11-6 +- libxt6 +- make +- ucf +- unzip +- zip +- zlib1g-dev +contents: +- src: /opt/R/${R_VERSION} + dst: /opt/R/${R_VERSION} +EOF -shopt -s extglob -export PKG_FILE=$(ls /tmp/output/debian-11/[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) diff --git a/builder/package.rhel-9 b/builder/package.rhel-9 index 9338288..064bacf 100644 --- a/builder/package.rhel-9 +++ b/builder/package.rhel-9 @@ -1,5 +1,7 @@ -if [[ ! -d /tmp/output/rhel-9 ]]; then - mkdir -p /tmp/output/rhel-9 +#!/bin/bash + +if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then + mkdir -p "/tmp/output/${OS_IDENTIFIER}" fi # R 3.x requires PCRE1 @@ -37,40 +39,50 @@ if [ -d /opt/R/${R_VERSION} ]; then fi EOF -fpm \ - -s dir \ - -t rpm \ - -v 1 \ - -n "R-${R_VERSION}" \ - --vendor "RStudio, PBC" \ - --url "https://www.r-project.org" \ - --description "GNU R statistical computation and graphics system" \ - --maintainer "RStudio, PBC " \ - --license "GPLv2+" \ - --after-install /post-install.sh \ - --after-remove /after-remove.sh \ - -p /tmp/output/rhel-9/ \ - -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}" +cat < /tmp/nfpm.yml +name: R-${R_VERSION} +version: 1 +version_schema: none +release: 1 +maintainer: RStudio, PBC +description: | + GNU R statistical computation and graphics system +vendor: RStudio, 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: /opt/R/${R_VERSION} + dst: /opt/R/${R_VERSION} +scripts: + postinstall: /post-install.sh + postremove: /after-remove.sh +EOF -export PKG_FILE=$(ls /tmp/output/rhel-9/R-${R_VERSION}*.rpm | head -1) +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) diff --git a/builder/package.ubuntu-2204 b/builder/package.ubuntu-2204 index b7df72d..175065c 100644 --- a/builder/package.ubuntu-2204 +++ b/builder/package.ubuntu-2204 @@ -1,58 +1,69 @@ #!/bin/bash -if [[ ! -d /tmp/output/ubuntu-2204 ]]; then - mkdir -p /tmp/output/ubuntu-2204 +if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then + mkdir -p "/tmp/output/${OS_IDENTIFIER}" fi # R 3.x requires PCRE1. On Ubuntu 22, R 3.x also requires PCRE2 for Pango support. -pcre_lib_flags='-d libpcre2-dev' +pcre_libs='- libpcre2-dev' if [[ "${R_VERSION}" =~ ^3 ]]; then - pcre_lib_flags='-d libpcre2-dev -d libpcre3-dev' + pcre_libs='- libpcre2-dev +- 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/ubuntu-2204/ \ - -d g++ \ - -d gcc \ - -d gfortran \ - -d libbz2-dev \ - -d libc6 \ - -d libcairo2 \ - -d libcurl4 \ - -d libglib2.0-0 \ - -d libgomp1 \ - -d libicu-dev \ - -d libjpeg8 \ - -d liblzma-dev \ - -d libopenblas-dev \ - -d libpango-1.0-0 \ - -d libpangocairo-1.0-0 \ - -d libpaper-utils \ - ${pcre_lib_flags} \ - -d libpng16-16 \ - -d libreadline8 \ - -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 < /tmp/nfpm.yml +name: r-${R_VERSION} +version: 1 +version_schema: none +section: universe/math +priority: optional +maintainer: RStudio, PBC +description: | + GNU R statistical computation and graphics system +vendor: RStudio, PBC +homepage: https://www.r-project.org +license: GPL-2 +deb: + fields: + Bugs: https://github.com/rstudio/r-builds/issues +depends: +- g++ +- gcc +- gfortran +- libbz2-dev +- libc6 +- libcairo2 +- libcurl4 +- libglib2.0-0 +- libgomp1 +- libicu-dev +- libjpeg8 +- liblzma-dev +- libopenblas-dev +- libpango-1.0-0 +- libpangocairo-1.0-0 +- libpaper-utils +${pcre_libs} +- libpng16-16 +- libreadline8 +- libtcl8.6 +- libtiff5 +- libtk8.6 +- libx11-6 +- libxt6 +- make +- ucf +- unzip +- zip +- zlib1g-dev +contents: +- src: /opt/R/${R_VERSION} + dst: /opt/R/${R_VERSION} +EOF -shopt -s extglob -export PKG_FILE=$(ls /tmp/output/ubuntu-2204/[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)