2022-07-14 18:39:38 -03:00
|
|
|
#!/usr/bin/env sh
|
2022-07-14 18:43:43 -03:00
|
|
|
|
2022-07-19 21:09:50 -03:00
|
|
|
PROJECT=$1
|
|
|
|
LOG_DIR="/var/log/openSUSE-release-tools/${PROJECT}"
|
2022-07-14 18:43:43 -03:00
|
|
|
[ ! -d "${LOG_DIR}" ] && mkdir ${LOG_DIR}
|
|
|
|
|
2022-08-01 12:51:25 -03:00
|
|
|
logger() {
|
|
|
|
date -Is >> ${LOG_DIR}/pkglistgen.log
|
|
|
|
echo "$1" >> ${LOG_DIR}/pkglistgen.log
|
|
|
|
}
|
|
|
|
|
2022-07-19 21:09:50 -03:00
|
|
|
polling_repo() {
|
2022-08-03 13:32:36 -03:00
|
|
|
logger "[CHECKING] Checking standard repository from ${PROJECT}"
|
2023-01-24 13:48:47 -03:00
|
|
|
OUTPUT=$(timeout 3m /usr/share/openSUSE-release-tools/verify-repo-built-successful.py -A ${API_URL} -p ${PROJECT} -r standard 2>&1)
|
2022-07-19 21:09:50 -03:00
|
|
|
RETURNCODE=$?
|
|
|
|
if [ ${RETURNCODE} -eq 0 ]; then
|
2022-08-01 12:51:25 -03:00
|
|
|
logger "[READY] Repository is NOT building"
|
2023-01-24 13:48:47 -03:00
|
|
|
elif [ ${RETURNCODE} -eq 124 ]; then
|
|
|
|
logger "[TIMEOUT] Verifying repository status reaches a timeout"
|
2022-07-19 21:09:50 -03:00
|
|
|
else
|
|
|
|
case ${OUTPUT} in
|
|
|
|
*"Repository "*" is not yet finished"*)
|
2022-08-01 12:51:25 -03:00
|
|
|
logger "[BUILDING] Repository is building"
|
2022-07-19 21:09:50 -03:00
|
|
|
RETURNCODE=3
|
|
|
|
;;
|
|
|
|
*"Repository "*" has "*" packages"*)
|
2022-08-01 12:51:25 -03:00
|
|
|
logger "[FAILED] Repository has package build failed"
|
2022-07-19 21:09:50 -03:00
|
|
|
RETURNCODE=4
|
|
|
|
;;
|
|
|
|
*"Repository "*" has more disabled packages than succeeded"*)
|
2022-08-01 12:51:25 -03:00
|
|
|
logger "[ERROR] Repository has more disabled packages than succeeded"
|
2022-07-19 21:09:50 -03:00
|
|
|
RETURNCODE=5
|
|
|
|
;;
|
|
|
|
esac
|
2022-08-01 12:51:25 -03:00
|
|
|
logger "${OUTPUT}"
|
2022-07-19 21:09:50 -03:00
|
|
|
fi
|
|
|
|
return ${RETURNCODE}
|
|
|
|
}
|
|
|
|
|
2022-08-03 13:32:36 -03:00
|
|
|
logger "[START] Start osrt-pkglistgen@${PROJECT}.service: polling repository results"
|
2022-08-01 12:51:25 -03:00
|
|
|
polling_repo
|
|
|
|
# Check if repository building
|
|
|
|
if [ $? -eq 3 ]; then
|
|
|
|
# Repository is building, waiting it finishes
|
|
|
|
while true; do
|
2022-08-03 13:32:36 -03:00
|
|
|
logger "[WAITING] Waiting 10min before next repository status check"
|
|
|
|
sleep 10m
|
2022-08-01 12:51:25 -03:00
|
|
|
polling_repo
|
|
|
|
case $? in
|
|
|
|
0)
|
|
|
|
# Stop polling repository results: Repository finished building
|
2022-08-03 13:32:36 -03:00
|
|
|
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"
|
2022-07-19 21:09:50 -03:00
|
|
|
continue
|
2022-08-01 12:51:25 -03:00
|
|
|
else
|
|
|
|
logger"[RUNNING] Running osrt-pkglistgen"
|
2022-08-03 13:32:36 -03:00
|
|
|
/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
|
2022-08-01 12:51:25 -03:00
|
|
|
exit $?
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
3)
|
|
|
|
# Continue polling repository results: Repository is still building
|
|
|
|
continue
|
|
|
|
;;
|
2023-01-24 13:48:47 -03:00
|
|
|
124)
|
|
|
|
# Retry polling repository results: Verifying repository results reaches a timeout
|
|
|
|
continue
|
|
|
|
;;
|
2022-08-01 12:51:25 -03:00
|
|
|
*)
|
|
|
|
# Stop polling repository results: Failed polling results
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
fi
|
2022-08-03 13:32:36 -03:00
|
|
|
logger "[FINISH] Finish osrt-pkglistgen@${PROJECT}.service"
|