make repo public
This commit is contained in:
commit
bd3505e426
1 changed files with 5447 additions and 0 deletions
107
builder/build.sh
Executable file
107
builder/build.sh
Executable file
|
|
@ -0,0 +1,107 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
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"
|
||||
|
||||
# Some Dockerfiles may copy a `/env.sh` to set up environment variables
|
||||
# that require command substitution. If this file exists, source it.
|
||||
if [[ -f /env.sh ]]; then
|
||||
echo "Sourcing environment variables"
|
||||
source /env.sh
|
||||
fi
|
||||
|
||||
# upload_r()
|
||||
upload_r() {
|
||||
baseName="r/${OS_IDENTIFIER}"
|
||||
if [ -n "$S3_BUCKET" ] && [ "$S3_BUCKET" != "" ]; then
|
||||
echo "Storing artifact on s3: ${S3_BUCKET}, tarball: ${TARBALL_NAME}"
|
||||
aws s3 cp /tmp/${TARBALL_NAME} s3://${S3_BUCKET}/${S3_BUCKET_PREFIX}${baseName}/${TARBALL_NAME}
|
||||
fi
|
||||
if [ -n "$LOCAL_STORE" ] && [ "$LOCAL_STORE" != '' ]; then
|
||||
echo "Storing artifact locally: ${LOCAL_STORE}, tarball: ${TARBALL_NAME}"
|
||||
mkdir -p ${LOCAL_STORE}/${baseName}
|
||||
cp /tmp/${TARBALL_NAME} ${LOCAL_STORE}/${baseName}/${TARBALL_NAME}.tar.gz
|
||||
fi
|
||||
}
|
||||
|
||||
# archive_r() - $1 as r version
|
||||
archive_r() {
|
||||
tar czf /tmp/${TARBALL_NAME} --directory=/opt/R ${1} --owner=0 --group=0
|
||||
}
|
||||
|
||||
fetch_r_source() {
|
||||
echo "Downloading R-${1}"
|
||||
wget -q ${CRAN}/src/base/R-3/R-${1}.tar.gz -O /tmp/R-${1}.tar.gz
|
||||
echo "Extracting R-${1}"
|
||||
tar xf /tmp/R-${1}.tar.gz -C /tmp
|
||||
rm /tmp/R-${1}.tar.gz
|
||||
}
|
||||
|
||||
# On CentOS 6, we need to clean up references to the static library and header paths.
|
||||
clean_r() {
|
||||
if [[ -f /clean.sh ]]; then
|
||||
echo "Cleaning R build on CentOS 6"
|
||||
source /clean.sh
|
||||
fi
|
||||
}
|
||||
|
||||
# compile_r() - $1 as r version
|
||||
compile_r() {
|
||||
cd /tmp/R-${1}
|
||||
|
||||
# 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=''
|
||||
fi
|
||||
|
||||
# Default configure options. Some Dockerfiles override this with an ENV directive.
|
||||
default_configure_options="\
|
||||
--enable-R-shlib \
|
||||
--with-tcltk \
|
||||
--enable-memory-profiling \
|
||||
--with-x \
|
||||
--with-blas \
|
||||
--with-lapack"
|
||||
|
||||
CONFIGURE_OPTIONS=${CONFIGURE_OPTIONS:-$default_configure_options}
|
||||
|
||||
# set some common environment variables for the configure step
|
||||
AWK=/usr/bin/awk \
|
||||
LIBnn=lib \
|
||||
PAGER=/usr/bin/pager \
|
||||
PERL=/usr/bin/perl \
|
||||
R_PDFVIEWER=xdg-open \
|
||||
R_BROWSER=xdg-open \
|
||||
R_PAPERSIZE=letter \
|
||||
R_PRINTCMD=/usr/bin/lpr \
|
||||
R_UNZIPCMD=/usr/bin/unzip \
|
||||
R_ZIPCMD=/usr/bin/zip \
|
||||
./configure \
|
||||
--prefix=/opt/R/${1} \
|
||||
${CONFIGURE_OPTIONS} \
|
||||
${build_flag}
|
||||
make clean
|
||||
make
|
||||
make install
|
||||
}
|
||||
|
||||
set_up_environment() {
|
||||
mkdir -p /opt/R
|
||||
}
|
||||
|
||||
_version_is_greater_than() {
|
||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
||||
}
|
||||
|
||||
###### RUN R COMPILE PROCEDURE ######
|
||||
set_up_environment
|
||||
fetch_r_source $R_VERSION
|
||||
compile_r $R_VERSION
|
||||
clean_r
|
||||
archive_r $R_VERSION
|
||||
upload_r $R_VERSION
|
||||
Loading…
Reference in a new issue