diff options
-rwxr-xr-x | mockit | 107 | ||||
-rwxr-xr-x | mockrun | 20 |
2 files changed, 109 insertions, 18 deletions
@@ -1,33 +1,64 @@ #!/bin/bash if [ "$2" = "" ]; then - echo usage SRPM distro [ min_ver [, max_ver [, mock_options ]]] + 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 -if [ "$1" == "--nobase" -o "$1" == "--scl" ]; then - BUILD_BASE=0 - shift -fi -if [ "$1" == "--noscl" -o "$1" == "--base" ]; then - BUILD_SCLS=0 - shift +# 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=$(redis-cli ping) + 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 @@ -35,7 +66,7 @@ else shift fi if [ "$1" = "" ]; then - MAX=999 + MAX=99 else MAX=$1 shift @@ -43,6 +74,29 @@ 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 ;; @@ -61,6 +115,20 @@ elif [ ! -f $SRPM ]; then 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) @@ -79,6 +147,17 @@ case $DIST in 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 @@ -87,24 +166,26 @@ 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 - redis-cli sadd mock "$CMD" + $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 - redis-cli sadd mock "$CMD" + $REDISCLI sadd $QUEUE "$CMD" else echo -n "$(date +%X) scl$i " $CMD --uniqueext=$ID && echo " Ok." || echo " Error !" @@ -113,7 +194,7 @@ do done if [ $REDIS -ge 1 ]; then - echo "Queue size: " $(redis-cli scard mock) + echo "Queue size: " $($REDISCLI scard $QUEUE) else date +%X fi @@ -1,6 +1,15 @@ #!/bin/bash -CHECK=$(redis-cli ping) +# ARCH detection and check +if [ "$(uname -m)" = "x86_64" ]; then + QUEUE=mockx + REDISCLI="redis-cli" +else + QUEUE=mocka + REDISCLI="redis-cli -h remi" +fi + +CHECK=$($REDISCLI ping) [ "$CHECK" = "PONG" ] || exit 1 if [ "$1" = "-h" -o "$1" = "--help" ]; then @@ -12,17 +21,17 @@ if [ "$1" = "-h" -o "$1" = "--help" ]; then exit 0 elif [ "$1" = "-l" -o "$1" = "--list" ]; then - redis-cli smembers mock + $REDISCLI smembers $QUEUE exit 0 elif [ "$1" = "-e" -o "$1" = "--erase" ]; then - redis-cli del mock + $REDISCLI del $QUEUE exit 0 fi while true do - CMD=$(redis-cli spop mock) + CMD=$($REDISCLI spop $QUEUE) if [ -z "$CMD" ]; then if [ "$1" = "-p" -o "$1" = "--perm" ]; then echo -n . @@ -33,7 +42,8 @@ do fi fi TXT="$(echo $CMD | sed -e 's/^.*-r //;s/ .*$//') " - echo -en "\r$(date +%X) ${TXT:0:10}" + RPM="$(echo $CMD | sed -e 's:\.rpm.*$:.rpm:;s:^.*/::')" + echo -en "\r$(date +%X) $RPM ${TXT:0:10}" $CMD --uniqueext=$PPID && echo " Ok." || echo " Error !" done |