fpm has had multiple Ruby gem dependency issues, and nfpm has better support for code signing if we wanted to do that in the future. The rest of the platforms may be migrated to nfpm later.
88 lines
2.4 KiB
Shell
88 lines
2.4 KiB
Shell
#!/bin/bash
|
|
|
|
if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then
|
|
mkdir -p "/tmp/output/${OS_IDENTIFIER}"
|
|
fi
|
|
|
|
# R 3.x requires PCRE1
|
|
pcre_lib='pcre2-devel'
|
|
if [[ "${R_VERSION}" =~ ^3 ]]; then
|
|
pcre_lib='pcre-devel'
|
|
fi
|
|
|
|
# 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 RSPM's binary packages.
|
|
#
|
|
# On Ubuntu/Debian, we link R against the external BLAS instead (--with-blas/--with-lapack),
|
|
# as those distributions use the alternatives system to swap BLAS libraries at runtime.
|
|
# The default R distributions on Ubuntu/Debian use the external BLAS, so we do as well
|
|
# for portability.
|
|
#
|
|
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Shared-BLAS
|
|
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, which won't be cleaned up automatically.
|
|
cat <<EOF >> /after-remove.sh
|
|
if [ -d /opt/R/${R_VERSION} ]; then
|
|
rm -r /opt/R/${R_VERSION}
|
|
fi
|
|
EOF
|
|
|
|
cat <<EOF > /tmp/nfpm.yml
|
|
name: R-${R_VERSION}
|
|
version: 1
|
|
version_schema: none
|
|
release: 1
|
|
maintainer: RStudio, PBC <https://github.com/rstudio/r-builds>
|
|
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
|
|
|
|
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)
|