#!/bin/bash # Script to facilitate building r-base binaries for CRAN in a chroot # Matching CRAN sources must be in /etc/apt/sources.list of the chroot # TBD: Check if the build already exists in the local repository usage() { echo "Usage: ./build [options] sourcepackage" echo "Options:" echo " -s, --skip Skip apt-get update/upgrade" } command -v lsb_release >/dev/null 2>&1 || { echo "Could not find lsb_release. Please install lsb-release" exit 1 } DIST=`lsb_release -cs` # URL of the local CRAN repo for checking for existing builds localcran="http://tux/r-cran/$DIST-cran34/" skip=false while test -n "${1}"; do case "$1" in -s | --skip) skip=true shift ;; -*) echo "Error: Unknown option: $1" >&2 usage exit 1 ;; *) # No more options break ;; esac done # Positional argument if [ $# -lt 1 ]; then usage; exit 1; fi pkg=$1 if ls $pkg-* 1> /dev/null 2>&1 then echo "Please check if sources from previous backport or build need to be cleaned up" exit 1 fi if [ "$skip" = false ] then apt-get update apt-get upgrade fi # stretch needs --only-source (at least for rkward source packages), jessie # does not know this argument if [ $DIST == "jessie" ]; then apt-get build-dep $pkg apt-get source $pkg fi if [ $DIST == "stretch" ]; then apt --only-source build-dep $pkg apt --only-source source $pkg fi # Move sources to $DIST directory to enable parallel builds mkdir -p $DIST mv $pkg\_* $DIST mv $pkg-* $DIST cd $DIST/$pkg-* debuild --no-lintian -ui -uc -us -B cd ../.. keep=false # We do not want to keep local sources for binary builds # Clean sources from $DIST directory if [ "$keep" = false ] then rm -f $DIST/$pkg\_*.{dsc,changes,diff.gz,tgz,tar.gz,tar.xz} #rm -rf $DIST/$pkg-* # This removes e.g. r-base-core* debs which is not intended fi