#!/usr/bin/env sh PROJECT=$1 LOG_DIR="/var/log/openSUSE-release-tools/${PROJECT}" [ ! -d "${LOG_DIR}" ] && mkdir ${LOG_DIR} logger() { date -Is >> ${LOG_DIR}/pkglistgen.log echo "$1" >> ${LOG_DIR}/pkglistgen.log } polling_repo() { OUTPUT=$(/usr/share/openSUSE-release-tools/verify-repo-built-successful.py -A ${API_URL} -p ${PROJECT} -r standard 2>&1) RETURNCODE=$? if [ ${RETURNCODE} -eq 0 ]; then logger "[READY] Repository is NOT building" else case ${OUTPUT} in *"Repository "*" is not yet finished"*) logger "[BUILDING] Repository is building" RETURNCODE=3 ;; *"Repository "*" has "*" packages"*) logger "[FAILED] Repository has package build failed" RETURNCODE=4 ;; *"Repository "*" has more disabled packages than succeeded"*) logger "[ERROR] Repository has more disabled packages than succeeded" RETURNCODE=5 ;; esac logger "${OUTPUT}" fi return ${RETURNCODE} } logger "[START] Start pkglistgen service: polling repository results" polling_repo # Check if repository building if [ $? -eq 3 ]; then # Repository is building, waiting it finishes while true; do logger "[WAITING] Waiting 20min before next repository status checking" sleep 20m polling_repo case $? in 0) # Stop polling repository results: Repository finished building if pgrep "osrt-pkglistgen"; then logger "[WARNING] osrt-relpkggen is running" logger "[WAITING] Waiting for osrt-relpkggen service finishes" continue else logger"[RUNNING] Running osrt-pkglistgen" /usr/bin/osrt-pkglistgen -A ${API_URL} --debug update_and_solve -p ${PROJECT} -s target --force >> ${LOG_DIR}/pkglistgen.log 2>&1 exit $? fi ;; 3) # Continue polling repository results: Repository is still building continue ;; *) # Stop polling repository results: Failed polling results exit 1 ;; esac done fi logger "[FINISH] Finish pkglistgen service"