config/functions: eliminate unecessary dashboard flock()

This commit is contained in:
MilhouseVH 2019-04-23 03:32:54 +01:00
parent 7e99243489
commit b272bcb999

View File

@ -1295,9 +1295,11 @@ pkg_lock_status() {
[ -n "${msg}" ] && line+=" (${msg})"
echo "${line}" >>"${THREAD_CONTROL}/history"
) 94>"${THREAD_CONTROL}/locks/.history"
[ "${DASHBOARD}" != "no" ] && update_dashboard "${status}" "${pkg}" "${task}" "${msg}"
if [ "${DASHBOARD}" != "no" ]; then
update_dashboard "${status}" "${pkg}" "${task}" "${msg}"
fi
) 94>"${THREAD_CONTROL}/locks/.history"
if [ "${status}" = "LOCKED" ]; then
echo "${PARALLEL_SEQ}" > "${THREAD_CONTROL}/locks/${pkg}.${task}.failed"
@ -1314,47 +1316,43 @@ update_dashboard() {
local line sedline preamble num elapsed projdevarch
local boldred boldgreen boldyellow endcolor
(
flock --exclusive 97
[ -n "${MTJOBID}" ] && sedline=$((MTJOBID + 2)) || sedline=1
[ -n "${MTJOBID}" ] && sedline=$((MTJOBID + 2)) || sedline=1
num=$(cat "${THREAD_CONTROL}/status" | wc -l)
while [ ${num} -lt ${sedline} ]; do echo "" >>"${THREAD_CONTROL}/status"; num=$((num + 1)); done
num=$(cat "${THREAD_CONTROL}/status" | wc -l)
while [ ${num} -lt ${sedline} ]; do echo "" >>"${THREAD_CONTROL}/status"; num=$((num + 1)); done
num=$(($(cat "${THREAD_CONTROL}/progress.prev") + 1))
projdevarch="${PROJECT}/"
[ -n "${DEVICE}" ] && projdevarch+="${DEVICE}/"
projdevarch+="${TARGET_ARCH}"
TZ=UTC0 printf -v elapsed "%(%H:%M:%S)T" $(($(date +%s) - MTBUILDSTART))
printf -v preamble "%s Dashboard (%s) - %d of %d jobs completed, %s elapsed" "${DISTRONAME}" "${projdevarch}" ${num} ${MTMAXJOBS} "${elapsed}"
printf -v preamble "%b%-105s %s" "\e[2J\e[0;0H" "${preamble//\//\\/}" "$(date "+%Y-%m-%d %H:%M:%S")"
num=$(($(cat "${THREAD_CONTROL}/progress.prev") + 1))
projdevarch="${PROJECT}/"
[ -n "${DEVICE}" ] && projdevarch+="${DEVICE}/"
projdevarch+="${TARGET_ARCH}"
TZ=UTC0 printf -v elapsed "%(%H:%M:%S)T" $(($(date +%s) - MTBUILDSTART))
printf -v preamble "%s Dashboard (%s) - %d of %d jobs completed, %s elapsed" "${DISTRONAME}" "${projdevarch}" ${num} ${MTMAXJOBS} "${elapsed}"
printf -v preamble "%b%-105s %s" "\e[2J\e[0;0H" "${preamble//\//\\/}" "$(date "+%Y-%m-%d %H:%M:%S")"
# Only update the header when caller is not a worker thread
if [ -z "${MTJOBID}" ]; then
sed -e "1s/.*/${preamble}/" -i "${THREAD_CONTROL}/status"
else
if [ "${DISABLE_COLORS}" != "yes" ]; then
boldred="\e[1;31m"
boldgreen="\e[1;32m"
boldyellow="\e[1;33m"
white="\e[0;37m"
endcolor="\e[0m"
# Only update the header when caller is not a worker thread
if [ -z "${MTJOBID}" ]; then
sed -e "1s/.*/${preamble}/" -i "${THREAD_CONTROL}/status"
else
if [ "${DISABLE_COLORS}" != "yes" ]; then
boldred="\e[1;31m"
boldgreen="\e[1;32m"
boldyellow="\e[1;33m"
white="\e[0;37m"
endcolor="\e[0m"
case "${status}" in
IDLE) color="${white}";;
STALLED) color="${boldyellow}";;
MUTEX/W) color="${boldyellow}";;
FAILED ) color="${boldred}";;
*) color="${boldgreen}";;
esac
fi
printf -v line "[%02d\/%0*d] %b%-7s%b %-7s %-35s" ${MTJOBID} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${color}" "${status//\//\\/}" "${endcolor}" "${task}" "${pkg}"
[ -n "${msg}" ] && line+=" ${msg//\//\\/}"
sed -e "1s/.*/${preamble}/;${sedline}s/.*/${line}/" -i "${THREAD_CONTROL}/status"
case "${status}" in
IDLE) color="${white}";;
STALLED) color="${boldyellow}";;
MUTEX/W) color="${boldyellow}";;
FAILED ) color="${boldred}";;
*) color="${boldgreen}";;
esac
fi
) 97>"${THREAD_CONTROL}/locks/.status"
printf -v line "[%02d\/%0*d] %b%-7s%b %-7s %-35s" ${MTJOBID} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${color}" "${status//\//\\/}" "${endcolor}" "${task}" "${pkg}"
[ -n "${msg}" ] && line+=" ${msg//\//\\/}"
sed -e "1s/.*/${preamble}/;${sedline}s/.*/${line}/" -i "${THREAD_CONTROL}/status"
fi
}
# Thread concurrency helpers to avoid concurrency issues with some code,