diff options
Diffstat (limited to 'mockit')
-rwxr-xr-x | mockit | 209 |
1 files changed, 163 insertions, 46 deletions
@@ -2,29 +2,73 @@ if [ "$2" = "" ]; then echo -e "\nusage: $0 [ options ] SRPM distro [ min_ver [, max_ver [, mock_options ]]]\n" - echo -e "\t--nobase | --scl only build SCL packages" - echo -e "\t--noscl | --base only build base packages" - echo -e "\t--redis store build command in redis queue\n" + echo -e "\t--redis store build command in redis queue" + echo -e "\t--valkey store build command in valkey queue" + echo -e "\t--list list queue content" + echo -e "\t--nobase | --scl only build PHP SCL packages" + echo -e "\t--noscl | --base only build PHP base packages" + echo -e "\t--mock distro is a mock config name\n" + echo -e "Special distro: all, zts, memcached, im6, im7\n" exit 0 fi # Script options BUILD_BASE=1 BUILD_SCLS=1 +BUILD_MOCK=0 REDIS=0 +REMOTE=0 + +# ARCH detection and check +if [ "$(uname -m)" = "x86_64" ]; then + SUF=x + QUEUE=mockx + REDISCLI="valkey-cli" +else + SUF=a + QUEUE=mocka + REDISCLI="valkey-cli -h remi" +fi + +if [ "$1" == "--redis" -o "$1" == "--valkey" ]; then + CHECK=$($REDISCLI ping) + [ "$CHECK" = "PONG" ] || exit 1 + REDIS=1 + shift +fi + +# Queue commands +if [ "$1" == "--list" ]; then + a=$($REDISCLI bgsave) + echo "-- x86_64 queue: $($REDISCLI scard mockx) tasks --" + a=$($REDISCLI smembers mockx) + [ -n "$a" ] && $REDISCLI smembers mockx | \ + sed -e 's/^.*-r / /;s/rebuild/\t/;s:/.*/::' | sort | head -n 25 || \ + ps -ef | grep mock/mock | grep -v grep + + echo -e "\n-- aarch64 queue: $($REDISCLI scard mocka) tasks --" + a=$($REDISCLI smembers mocka) + [ -n "$a" ] && $REDISCLI smembers mocka | \ + sed -e 's/^.*-r / /;s/rebuild/\t/;s:/.*/::'| sort || \ + ps -ef | ssh remi@ampere 'ps -ef | grep mock/mock | grep -v grep' + + 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 -fi -if [ "$1" == "--noscl" -o "$1" == "--base" ]; then +elif [ "$1" == "--noscl" -o "$1" == "--base" ]; then BUILD_SCLS=0 shift -fi -if [ "$1" == "--redis" ]; then - CHECK=$(redis-cli ping) - [ "$CHECK" = "PONG" ] || exit 1 - REDIS=1 +elif [ "$1" == "--mock" ]; then + BUILD_BASE=0 + BUILD_SCLS=0 + BUILD_MOCK=1 shift fi @@ -34,50 +78,43 @@ shift 2 # PHP version build range if [ "$1" = "" ]; then - MIN=0 + MIN=56 else MIN=$1 shift fi if [ "$1" = "" ]; then - MAX=99 + MAX=84 else MAX=$1 shift fi -# ARCH detection and check -if [ "$(uname -m)" = "x86_64" ]; then - SUF=x -else - SUF=a -fi case $DIST in - *x) + *x|*xm|*xr|*xr62|*xr72) if [ $SUF != x ]; then echo "Not an x86_64 builder" exit 1 fi ;; - *a) + *a|*am|*ar|*ar62|*ar72) if [ $SUF != a ]; then - echo "Not an aarch64 builder" - exit 1 + if [ $REDIS -ge 1 ]; then + REMOTE=1 + else + echo "Not an aarch64 builder" + exit 1 + fi fi ;; - *) - DIST=$DIST$SUF - ;; esac # SRPM abolute path +mockref=/home/rpmbuild/SPECS/remirepo/tools/mock +mocketc=$mockref +srpmdir=/home/rpmbuild/site/rpms/SRPMS case $DIST in - - *x) - mocketc=/home/rpmbuild/SPECS/remirepo/tools/mock - srpmdir=/home/rpmbuild/site/rpms/SRPMS - ;; - *a) + *a|*am) mocketc=/home/remi/mock srpmdir=/home/remi/SRPMS ;; @@ -92,28 +129,103 @@ 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) - LST="82 81 74 80 83" - SCL="74 80 81 82 83" + fc42x|fc42a|fc40x|fc40a|fc41x|fc41a|el9x|el9a|el10x|el10a) + LST="74 80 81 82 83 84" + SCL="74 80 81 82 83 84" ;; el8a) - LST="72 73 74 80 81 82 83" - SCL="72 73 74 80 81 82 83" + LST="72 73 74 80 81 82 83 84" + SCL="72 73 74 80 81 82 83 84" ;; el8x) - LST="72 73 74 80 81 82 83" - SCL="56 70 71 72 73 74 80 81 82 83" + LST="72 73 74 80 81 82 83 84" + SCL="56 70 71 72 73 74 80 81 82 83 84" + ;; + all) + if [ $REDIS -ge 1 ]; then + for i in fc40x fc41x fc42x el8x el9x el10x fc40a fc41a fc42a el8a el9a el10a + do + [ $BUILD_BASE -ge 1 ] && $0 --valkey --base $SRPM $i $MIN $MAX $@ + [ $BUILD_SCLS -ge 1 ] && $0 --valkey --scl $SRPM $i $MIN $MAX $@ + done + else + echo Not supported for direct build + fi + ;; + zts) + if [ $REDIS -ge 1 ]; then + [ $MAX -gt 83 ] && MAX=83 + for i in fc40x el8x el9x + do + [ $BUILD_BASE -ge 1 ] && $0 --valkey --base $SRPM $i $MIN $MAX $@ + done + else + echo Not supported for direct build + fi + ;; + memcached) + if [ $REDIS -ge 1 ]; then + for i in fc40xm fc41x fc42x el8x el9xm el10xm fc40am fc41a fc42a el8a el9am el10am + do + $0 --valkey --mock $SRPM $i $MIN $MAX $@ + done + else + echo Not supported for direct build + fi + ;; + im6) + if [ $REDIS -ge 1 ]; then + for i in fc40x el8xr el9x fc40a el8ar el9a + do + $0 --valkey --mock $SRPM $i $MIN $MAX $@ + done + else + echo Not supported for direct build + fi + ;; + im7) + if [ $REDIS -ge 1 ]; then + for i in fc40x fc41x fc42x el8xr el9x el10x fc40a fc41a fc42a el8ar el9a el10a + do + $0 --valkey --mock $SRPM $i $MIN $MAX $@ + done + else + echo Not supported for direct build + fi ;; - 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" + r*) + if [ $REDIS -ge 1 ]; then + for i in fc40x el8x el9x fc40a el8a el9a + do + $0 --valkey --mock $SRPM ${i}${DIST} $MIN $MAX $@ + done + else + echo Not supported for direct build + fi ;; *) - echo Unkown DIST $DIST - exit 1 + if [ $BUILD_MOCK -eq 0 -o ! -f ${mockref}/${DIST}.cfg ]; then + [ $BUILD_MOCK -eq 0 ] && echo "BUILD_MOCK=0" + [ ! -f ${mocketc}/${DIST}.cfg ] && echo "${mockref}/${DIST}.cfg missing" + echo Unkown DIST $DIST + exit 1 + fi ;; esac @@ -125,7 +237,7 @@ 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 !" @@ -138,16 +250,21 @@ 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 !" fi fi done +# Build using mock config +if [ $BUILD_MOCK -ge 1 ]; then + CMD="mock -q --configdir=$mocketc -r ${DIST} rebuild $SRPM $@" + $REDISCLI sadd $QUEUE "$CMD" +fi if [ $REDIS -ge 1 ]; then - echo "Queue size: " $(redis-cli scard mock) + echo "Queue size: " $($REDISCLI scard $QUEUE) else date +%X fi |