Cleanup OS detection, add --use-pdebuild-internal automatically to pbuilder as needed. master
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Mon, 7 Sep 2015 15:13:41 +0000 (17:13 +0200)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Mon, 7 Sep 2015 15:25:38 +0000 (17:25 +0200)
mock.sh

diff --git a/mock.sh b/mock.sh
index 53624b9..5d88e84 100755 (executable)
--- a/mock.sh
+++ b/mock.sh
 # pbuilder --create --hookdir `pwd`/pbuilder --distribution squeeze
 #
 
 # pbuilder --create --hookdir `pwd`/pbuilder --distribution squeeze
 #
 
-KEY_ID=${KEY_ID:-'64FA8786'}
-top_srcdir=${top_srcdir}
-DEBREPO_MAIN=${DEBREPO_MAIN:-~/debian}
-DEBREPO_DEPS=${DEBREPO_DEPS:-~/debian-externals}
-DEBDISTRO=${DEBDISTRO:-stable}
-#PBUILDER_OPTS='--debbuildopts "-j8"'
-#PDEBUILD_OPTS='--use-pdebuild-internal'
-EXCLUDE=${EXCLUDE:-''}
-
 if test "x$1" = "x-r"; then
        CONF="$2"
        shift
        shift
 fi
 
 if test "x$1" = "x-r"; then
        CONF="$2"
        shift
        shift
 fi
 
+reg='^\(\w*\)\s\+\(\(GNU/Linux\|Linux\|release\)\s*\)*\([0-9]*\).*'
 if test -f /etc/redhat-release; then
 if test -f /etc/redhat-release; then
-  OS=`cat /etc/redhat-release | head -n 1`
+  ISSUE=`cat /etc/redhat-release | head -n 1`
 else
 else
-  OS=`cat /etc/issue | head -n 1`
+  ISSUE=`cat /etc/issue | head -n 1`
 fi
 fi
+
+OS=`echo ${ISSUE} | sed "s,${reg},\1,"`
+OS_VER=`echo ${ISSUE} | sed "s,${reg},\4,"`
 ARCH=`uname -i`
 
 ARCH=`uname -i`
 
-was_build=
-was_external=
+if ! echo ${ISSUE} | grep -q "${reg}" || test -z "${OS}" || test -z "${OS_VER}" ; then
+       echo "Unknown platform: ${ISSUE}"
+       exit 1
+fi
 
 
-#CONF=sl-5-x86_64
-#CONF=sl-5-i386
-#CONF=sl-6-x86_64
-if test -z "$CONF"; then
-       case $OS in
-       Debian*|Ubuntu*)
+if test -z "${CONF}"; then
+       case ${OS} in
+       Debian|Ubuntu)
                CONF=pbuilder
                ;;
                CONF=pbuilder
                ;;
-       Scientific*5.*)
-               CONF=sl-5-$ARCH
-               ;;
-       Scientific*6.*)
-               CONF=sl-6-$ARCH
+       Scientific)
+               CONF=sl-${OS_VER}-${ARCH}
                ;;
                ;;
-       Scientific*7.*)
-               CONF=sl-7-$ARCH
+       Fedora)
+               CONF=fed-${OS_VER}-${ARCH}
                ;;
                ;;
-       Fedora*)
-               major=`rpm -q fedora-release | sed 's/fedora-release-\([0-9]*\)-.*/\1/'`
-               CONF=fed-$major-$ARCH
-               ;;
-       Red*Hat*)
-               CONF=epel-7-$ARCH
+       Red*)
+               CONF=epel-${OS_VER}-${ARCH}
                ;;
        *)
                echo "Unknown OS '$OS'"
                ;;
        *)
                echo "Unknown OS '$OS'"
@@ -79,16 +66,38 @@ if test -z "$CONF"; then
        esac
 fi
 
        esac
 fi
 
+# workaround pbuilder bugs
+if test ${OS} = 'Debian' -a ${OS_VER} -ge 7 -o \
+        ${OS} = 'Ubuntu' -a ${OS_VER} -ge 14
+then
+       required_internal=1
+fi
+
+KEY_ID=${KEY_ID:-'64FA8786'}
+top_srcdir=${top_srcdir}
+DEBREPO_MAIN=${DEBREPO_MAIN:-~/debian}
+DEBREPO_DEPS=${DEBREPO_DEPS:-~/debian-externals}
+DEBDISTRO=${DEBDISTRO:-stable}
+EXCLUDE=${EXCLUDE:-''}
+if test -n "${required_internal}"; then
+       PBUILDER_OPTS="${PBUILDER_OPTS} --debbuildopts \"-j8\""
+       PDEBUILD_OPTS="${PDEBUILD_OPTS} --use-pdebuild-internal"
+fi
+
 LAUNCHDIR=`dirname $0`
 LAUNCHDIR=`(cd $LAUNCHDIR; pwd)`
 REPORTS=reports
 CMD="mock --configdir=mock -r $CONF --resultdir `pwd`/$REPORTS"
 
 LAUNCHDIR=`dirname $0`
 LAUNCHDIR=`(cd $LAUNCHDIR; pwd)`
 REPORTS=reports
 CMD="mock --configdir=mock -r $CONF --resultdir `pwd`/$REPORTS"
 
+was_build=
+was_external=
+
+
 if test "$1" != "clean"; then
        mkdir externals 2>/dev/null || :
        mkdir results 2>/dev/null || :
        mkdir -p $REPORTS 2>/dev/null || :
 if test "$1" != "clean"; then
        mkdir externals 2>/dev/null || :
        mkdir results 2>/dev/null || :
        mkdir -p $REPORTS 2>/dev/null || :
-       if test "$CONF" != "pbuilder"; then
+       if ! test "$CONF" = "pbuilder"; then
                mkdir mock 2>/dev/null || :
                ln -s /etc/mock/logging.ini mock/ 2>/dev/null || :
                if ! test -f mock/site-defaults.cfg; then
                mkdir mock 2>/dev/null || :
                ln -s /etc/mock/logging.ini mock/ 2>/dev/null || :
                if ! test -f mock/site-defaults.cfg; then
@@ -224,6 +233,9 @@ while test -n "$1"; do
                        # fragile mini-dinstall
                        mkdir -p $DEBREPO_DEPS/mini-dinstall/incoming
                        touch $DEBREPO_DEPS/$DEBDISTRO/Packages
                        # fragile mini-dinstall
                        mkdir -p $DEBREPO_DEPS/mini-dinstall/incoming
                        touch $DEBREPO_DEPS/$DEBDISTRO/Packages
+
+                       # required for '--use-pdebuild-internal'
+                       mkdir -p results/pbuilder || :
                fi
                exit 0
                ;;
                fi
                exit 0
                ;;