Enables output of Linux OS packages for CentOS 7 (#20)

* Enables output of Linux OS packages for CentOS 7

* Changed vendor to RStudio

* Added post install script to swap in openBLAS shared library

* tidied up some dependencies

* Added a post remove step to cleanup install dir

As we swap in the openBlas shared object file during installation
the RPM database knows that the RPM installation has been "interefered"
with. Because of this `yum remove` does not clean out the full directory
tree. This update therefore prunes the directory tree at
/opt/R/R_VERSION
This commit is contained in:
sellorm 2019-08-06 23:17:45 +01:00 committed by GitHub
commit 60474b593b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 0 deletions

View file

@ -30,6 +30,9 @@ RUN yum -y update \
pcre-devel \
pcre2-devel \
readline-devel \
rpm-build \
ruby \
ruby-devel \
tcl-devel \
tex \
texinfo-tex \
@ -50,6 +53,8 @@ RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
RUN pip install awscli --upgrade --user && \
ln -s /root/.local/bin/aws /usr/bin/aws
RUN gem install fpm
RUN chmod 0777 /opt
# Configure flags for CentOS 7 that don't use the defaults in build.sh
@ -66,5 +71,6 @@ ENV CONFIGURE_OPTIONS="\
# RHEL 7 doesn't have the inconsolata font, so override the defaults.
ENV R_RD4PDF="times,hyper"
COPY package.centos-7 /package.sh
COPY build.sh .
ENTRYPOINT ./build.sh

59
builder/package.centos-7 Normal file
View file

@ -0,0 +1,59 @@
if [[ ! -d /tmp/output/centos-7 ]]; then
mkdir -p /tmp/output/centos-7
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
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}
fi
EOF
fpm \
-s dir \
-t rpm \
-v 1 \
-n R-${R_VERSION} \
--vendor "RStudio Inc." \
--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 Inc 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-devel \
-d pcre2-devel \
-d perl-Digest-MD5 \
-d tcl \
-d tk \
-d tre \
-d which \
-d xz-devel \
-d zlib-devel \
/opt/R/${R_VERSION}
shopt -s extglob
export PKG_FILE=$(ls /tmp/output/centos-7/[rR]-${R_VERSION}*.@(deb|rpm) | head -1)