Allows building deb packages for R on ubuntu-1804 (#12)

* Allows building deb packages for R on ubuntu-1804

this update provides a mechanism for building deb packages on Ubunto
1804. Several changes have been necessary to facilitate this:

* Dockerfile has been updated. It now includes:
    - fpm - a tool tool to create OS specific packages
    - copying the package script into the image
* the OS specific package.ubuntu-1804 packaging script
    - this is the script that uses fpm to build the package
* Updates to build.sh. It now includes:
    - runs the package script if it exists
    - stores the resultant package to s3

* removed duplicate dependencies

* fixed minor bug with output directory creation

* moved package creation to after the clean step

* Changed deb priority to "optional"

The fpm default priority is "extra" which is now deprecated.

https://github.com/jordansissel/fpm/issues/1398

* Added additional package fields

Added 'Bugs', URL (Homepage), 'Description', 'Maintainer' and 'License'

* Fixed the repo URL

* Added passthrough for Jenkins BUILD_NUMBER

Jenkins sets the BUILD_NUMBER environment variable for all jobs.
This change sets that env var inside the container as BUILD_NO.
BUILD_NO is used bythe packaging scripts in place of a version number
for all of the created packages.

* removed liblapack

* Improved consistency of environment variable use

Removed the needless renaming of environment variables to improve
overall consistency and readability

* No longer tries to version the packages

Previous commits relied on the idea that the Jenkins BUILD_NUMBER
environment variable could be used as a version number for the package
itself (in addition to R's existing version numbers). This is not the
case and having a version number for the package is not deemed desirable
at this time. This change pins *all* packages produced to version 1.

* Moved additional apt package installations

Packages were being installed in two places, have rationalised to a
single location to reduce the number of layers in the final container.

* Tidy up of package script

Alphabetised the dependencies to make things easier to find.

* Added additional dependencies

These dependencies were added as they were identified to be missing when
running against the R 3.6.1 build during testing

* Removed an unrequired dependency

Further trimming down the dependency list based on reviewer feedback.

* Swapped liblapack-dev for libopenblas-dev
This commit is contained in:
sellorm 2019-07-20 01:17:48 +01:00 committed by GitHub
commit a20cff273b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -19,6 +19,12 @@ upload_r() {
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}
# check if PKG_FILE has been set by a packager script and act accordingly
if [ -n "$PKG_FILE" ] && [ "$PKG_FILE" != "" ]; then
if [ -f "$PKG_FILE" ]; then
aws s3 cp ${PKG_FILE} s3://${S3_BUCKET}/${S3_BUCKET_PREFIX}${baseName}/pkgs/$(basename ${PKG_FILE})
fi
fi
fi
if [ -n "$LOCAL_STORE" ] && [ "$LOCAL_STORE" != '' ]; then
echo "Storing artifact locally: ${LOCAL_STORE}, tarball: ${TARBALL_NAME}"
@ -89,6 +95,16 @@ compile_r() {
make install
}
# check for packager script
## If it exists this build is ready for packaging with fpm, so run the script
## else do nothing
package_r() {
if [[ -f /package.sh ]]; then
export R_VERSION=${1}
source /package.sh
fi
}
set_up_environment() {
mkdir -p /opt/R
}
@ -102,5 +118,6 @@ set_up_environment
fetch_r_source $R_VERSION
compile_r $R_VERSION
clean_r
package_r $R_VERSION
archive_r $R_VERSION
upload_r $R_VERSION