#!/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() { logger "[CHECKING] Checking standard repository from ${PROJECT}" OUTPUT=$(timeout 3m /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" elif [ ${RETURNCODE} -eq 124 ]; then logger "[TIMEOUT] Verifying repository status reaches a timeout" 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 osrt-pkglistgen@${PROJECT}.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 10min before next repository status check" sleep 10m polling_repo case $? in 0) # Stop polling repository results: Repository finished building if systemctl is-active --quiet osrt-relpkggen@${PROJECT}.service; then logger "[WARNING] osrt-relpkggen@${PROJECT}.service is running" logger "[WAITING] Waiting for osrt-relpkggen@${PROJECT}.service finishes" continue else logger"[RUNNING] Running osrt-pkglistgen" /usr/bin/osrt-pkglistgen -A ${API_URL} --debug update_and_solve -p ${PROJECT} -s target --custom-cache-tag product --force >> ${LOG_DIR}/pkglistgen.log 2>&1 exit $? fi ;; 3) # Continue polling repository results: Repository is still building continue ;; 124) # Retry polling repository results: Verifying repository results reaches a timeout continue ;; *) # Stop polling repository results: Failed polling results exit 1 ;; esac done fi logger "[FINISH] Finish osrt-pkglistgen@${PROJECT}.service"