diff --git a/config/functions b/config/functions index 648b466734..697ad0c563 100644 --- a/config/functions +++ b/config/functions @@ -1251,7 +1251,7 @@ pkg_lock() { local pkg="$1" task="$2" parent_pkg="$3" local this_job="${MTJOBID}" - local lock_job lock_seq lock_task lock_pkg locked=no + local lock_job lock_seq lock_task lock_pkg locked=no idwidth local fail_seq exec 98>"${THREAD_CONTROL}/locks/${pkg}.${task}" @@ -1262,7 +1262,8 @@ pkg_lock() { done if [ "${locked}" = "no" -a "${lock_job}/${lock_seq}" != "${this_job}/${PARALLEL_SEQ}" ]; then - pkg_lock_status "STALLED" "${parent_pkg}" "${task}" "$(printf "waiting on [%02d] %s %s" ${lock_job} "${lock_task}" "${lock_pkg}")" + [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXJOBS} || idwidth=2 + pkg_lock_status "STALLED" "${parent_pkg}" "${task}" "$(printf "waiting on [%0*d] %s %s" ${idwidth} ${lock_job} "${lock_task}" "${lock_pkg}")" flock --exclusive 98 fi @@ -1290,13 +1291,15 @@ pkg_lock_status() { [ "${MTWITHLOCKS}" != "yes" ] && return 0 local status="$1" pkg="$2" task="$3" msg="$4" - local this_job="${MTJOBID}" line + local this_job="${MTJOBID}" line idwidth + + [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXJOBS} || idwidth=2 ( flock --exclusive 94 - printf -v line "%s: <%06d> [%02d/%0*d] %-7s %-7s %-35s" \ - "$(date +%Y-%m-%d\ %H:%M:%S.%N)" $$ ${this_job} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${status}" "${task}" "${pkg}" + printf -v line "%s: <%06d> [%0*d/%0*d] %-7s %-7s %-35s" \ + "$(date +%Y-%m-%d\ %H:%M:%S.%N)" $$ ${idwidth} ${this_job} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${status}" "${task}" "${pkg}" [ -n "${msg}" ] && line+=" (${msg})" echo "${line}" >>"${THREAD_CONTROL}/history" @@ -1322,10 +1325,12 @@ update_dashboard() { local status="$1" pkg="$2" task="$3" msg="$4" local line sedline preamble num elapsed projdevarch - local boldred boldgreen boldyellow endcolor + local boldred boldgreen boldyellow endcolor idwidth sedline=$((MTJOBID + 2)) + [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXJOBS} || idwidth=2 + num=$(< "${THREAD_CONTROL}/status.max") if [ ${num} -lt ${sedline} ]; then echo ${sedline} >"${THREAD_CONTROL}/status.max" @@ -1357,7 +1362,7 @@ update_dashboard() { esac fi - printf -v line "[%02d\/%0*d] %b%-7s%b %-7s %-35s" ${MTJOBID} ${#MTMAXJOBS} ${PARALLEL_SEQ:-0} "${color}" "${status//\//\\/}" "${endcolor}" "${task}" "${pkg}" + printf -v line "[%0*d\/%0*d] %b%-7s%b %-7s %-35s" ${idwidth} ${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" @@ -1370,7 +1375,7 @@ acquire_exclusive_lock() { local pkg="$1" task="$2" lockfile="${3:-global}" local this_job="${MTJOBID}" - local lock_job lock_seq lock_task lock_pkg locked=no + local lock_job lock_seq lock_task lock_pkg locked=no idwidth exec 96>"${THREAD_CONTROL}/locks/.mutex.${lockfile}" while [ : ]; do @@ -1380,7 +1385,8 @@ acquire_exclusive_lock() { done if [ "${locked}" = "no" -a "${lock_job}/${lock_seq}" != "${this_job}/${PARALLEL_SEQ}" ]; then - pkg_lock_status "MUTEX/W" "${pkg}" "${task}" "$(printf "mutex: %s; waiting on [%02d] %s %s" "${lockfile}" ${lock_job} "${lock_task}" "${lock_pkg}")" + [ "${THREADCOUNT}" = "0" ] && idwidth=${#MTMAXJOBS} || idwidth=2 + pkg_lock_status "MUTEX/W" "${pkg}" "${task}" "$(printf "mutex: %s; waiting on [%0*d] %s %s" "${lockfile}" ${idwidth} ${lock_job} "${lock_task}" "${lock_pkg}")" flock --exclusive 96 fi