#!/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--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 if [ "$1" == "--redis" ]; then CHECK=$(redis-cli ping) [ "$CHECK" = "PONG" ] || exit 1 REDIS=1 shift 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 # ARCH detection and check if [ "$(uname -m)" = "x86_64" ]; then SUF=x else SUF=a fi case $DIST in *x) if [ $SUF != x ]; then echo "Not an x86_64 builder" exit 1 fi ;; *a) if [ $SUF != a ]; then echo "Not an aarch64 builder" exit 1 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 # 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" ;; *) 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 redis-cli sadd mock "$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" 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: " $(redis-cli scard mock) else date +%X fi