summaryrefslogtreecommitdiffstats
path: root/mockit
diff options
context:
space:
mode:
Diffstat (limited to 'mockit')
-rwxr-xr-xmockit200
1 files changed, 200 insertions, 0 deletions
diff --git a/mockit b/mockit
new file mode 100755
index 0000000..ade3b54
--- /dev/null
+++ b/mockit
@@ -0,0 +1,200 @@
+#!/bin/bash
+
+if [ "$2" = "" ]; then
+ echo -e "\nusage: $0 [ options ] SRPM distro [ min_ver [, max_ver [, mock_options ]]]\n"
+ echo -e "\t--redis store build command in redis queue"
+ echo -e "\t--list list queue content"
+ echo -e "\t--nobase | --scl only build SCL packages"
+ echo -e "\t--noscl | --base only build base packages\n"
+ exit 0
+fi
+
+# Script options
+BUILD_BASE=1
+BUILD_SCLS=1
+REDIS=0
+REMOTE=0
+
+# ARCH detection and check
+if [ "$(uname -m)" = "x86_64" ]; then
+ SUF=x
+ QUEUE=mockx
+ REDISCLI="redis-cli"
+else
+ SUF=a
+ QUEUE=mocka
+ REDISCLI="redis-cli -h remi"
+fi
+
+if [ "$1" == "--redis" ]; then
+ CHECK=$($REDISCLI ping)
+ [ "$CHECK" = "PONG" ] || exit 1
+ REDIS=1
+ shift
+fi
+
+# Queue commands
+if [ "$1" == "--list" ]; then
+ echo "-- x86_64 queue --"
+ $REDISCLI smembers mockx
+ echo "-- aarch64 queue --"
+ $REDISCLI smembers mocka
+ exit 0
+elif [ "$1" == "--clean" ]; then
+ $REDISCLI del mockx
+ $REDISCLI del mocka
+ exit 0
+fi
+
+if [ "$1" == "--nobase" -o "$1" == "--scl" ]; then
+ BUILD_BASE=0
+ shift
+elif [ "$1" == "--noscl" -o "$1" == "--base" ]; then
+ BUILD_SCLS=0
+ shift
+fi
+
+SRPM=$1
+DIST=$2
+shift 2
+
+# PHP version build range
+if [ "$1" = "" ]; then
+ MIN=0
+else
+ MIN=$1
+ shift
+fi
+if [ "$1" = "" ]; then
+ MAX=99
+else
+ MAX=$1
+ shift
+fi
+
+case $DIST in
+ *x)
+ if [ $SUF != x ]; then
+ echo "Not an x86_64 builder"
+ exit 1
+ fi
+ ;;
+ *a)
+ if [ $SUF != a ]; then
+ if [ $REDIS -ge 1 ]; then
+ REMOTE=1
+ else
+ echo "Not an aarch64 builder"
+ exit 1
+ fi
+ fi
+ ;;
+ *)
+ DIST=$DIST$SUF
+ ;;
+esac
+
+# SRPM abolute path
+case $DIST in
+ *x)
+ mocketc=/home/rpmbuild/SPECS/remirepo/tools/mock
+ srpmdir=/home/rpmbuild/site/rpms/SRPMS
+ ;;
+ *a)
+ mocketc=/home/remi/mock
+ srpmdir=/home/remi/SRPMS
+ ;;
+esac
+
+if [ -f $srpmdir/$SRPM ]; then
+ SRPM=$srpmdir/$SRPM
+elif [ -f $PWD/$SRPM ]; then
+ SRPM=$PWD/$SRPM
+elif [ ! -f $SRPM ]; then
+ echo "file not found '$SRPM'"
+ exit 1
+fi
+
+# Send to remote aarch64 builder
+if [ $REMOTE -ge 1 ]; then
+ LST=/tmp/srpm_aarch64_sent.list
+ touch $LST
+ if ! grep -q $SRPM $LST; then
+ scp $SRPM remi@ampere:todo/
+ echo $SRPM >>$LST
+ fi
+ mocketc=/home/remi/mock
+ QUEUE=mocka
+ SRPM=/home/remi/todo/$(basename $SRPM)
+fi
+
+# PHP version matrix
+echo mockit $SRPM $DIST $MIN $MAX $@
+case $DIST in
+ fc38x|fc39x|fc39a|fc40x|fc40a|el9x|el9a)
+ LST="82 81 74 80 83"
+ SCL="74 80 81 82 83"
+ ;;
+ el8a)
+ LST="72 73 74 80 81 82 83"
+ SCL="72 73 74 80 81 82 83"
+ ;;
+ el8x)
+ LST="72 73 74 80 81 82 83"
+ SCL="56 70 71 72 73 74 80 81 82 83"
+ ;;
+ el7x)
+ LST="54 55 56 70 71 72 73 74 80 81 82 83"
+ SCL="54 55 56 70 71 72 73 74 80 81 82 83"
+ ;;
+ allx)
+ if [ $REDIS -ge 1 ]; then
+ for i in fc38x fc39x fc40x el7x el8x el9x fc39a fc40a el8a el9a
+ do
+ [ $BUILD_BASE -ge 1 ] && $0 --redis --base $SRPM $i $MIN $MAX $@
+ [ $BUILD_SCLS -ge 1 ] && $0 --redis --scl $SRPM $i $MIN $MAX $@
+ done
+ else
+ echo Not support for direct build
+ fi
+ ;;
+ *)
+ echo Unkown DIST $DIST
+ exit 1
+ ;;
+esac
+
+ID=${QUEUE:-$PPID}
+
+# Build base/modules
+[ $BUILD_BASE -ge 1 ] && for i in $LST
+do
+ if [ 0$i -ge $MIN -a 0$i -le $MAX ]; then
+ CMD="mock -q --configdir=$mocketc -r ${DIST}${i} rebuild $SRPM $@"
+ if [ $REDIS -ge 1 ]; then
+ $REDISCLI sadd $QUEUE "$CMD"
+ else
+ echo -n "$(date +%X) $i "
+ $CMD --uniqueext=$ID && echo " Ok." || echo " Error !"
+ fi
+ fi
+done
+# Build Software Collections
+[ $BUILD_SCLS -ge 1 ] && for i in $SCL
+do
+ if [ 0$i -ge $MIN -a 0$i -le $MAX ]; then
+ CMD="mock -q --configdir=$mocketc -r ${DIST}scl${i} rebuild $SRPM $@"
+ if [ $REDIS -ge 1 ]; then
+ $REDISCLI sadd $QUEUE "$CMD"
+ else
+ echo -n "$(date +%X) scl$i "
+ $CMD --uniqueext=$ID && echo " Ok." || echo " Error !"
+ fi
+ fi
+done
+
+if [ $REDIS -ge 1 ]; then
+ echo "Queue size: " $($REDISCLI scard $QUEUE)
+else
+ date +%X
+fi