diff options
-rwxr-xr-x | bin/why_dont_you_build | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/bin/why_dont_you_build b/bin/why_dont_you_build new file mode 100755 index 0000000..714816a --- /dev/null +++ b/bin/why_dont_you_build @@ -0,0 +1,63 @@ +#!/bin/bash + +# investigate, why a certain package is not being built + +. "${0%/*}/../conf/default.conf" + +for pkg in "$@"; do + grep "^${pkg//./\\.} " "${work_dir}/build-list" | \ + while read -r package git_revision mod_git_revision repository; do + + if [ -f "${work_dir}/${package}.${git_revision}.${mod_git_revision}.${repository}.done" ] || + [ -f "${work_dir}/${package}.${git_revision}.${mod_git_revision}.${repository}.testing" ]; then + echo 'has been built' + continue + fi + + if package_locked_broken_or_blocked "${package}" "${git_revision}" "${mod_git_revision}" "${repository}"; then + echo 'is locked, broken or blocked' + continue + fi + + if [ -n "$( + ( + cat "${work_dir}/package-infos/${package}.${git_revision}.${mod_git_revision}.needs" + awk '{print $1 "." $2 "." $3}' "${work_dir}/build-list" | \ + sed " + s|^|${work_dir}/package-infos/| + s|\$|\.builds| + " | \ + xargs -r cat | \ + sort -u + ) | \ + sort | \ + uniq -d + )" ]; then + echo 'has unmet dependencies:' + ( + cat "${work_dir}/package-infos/${package}.${git_revision}.${mod_git_revision}.needs" + awk '{print $1 "." $2 "." $3}' "${work_dir}/build-list" | \ + sed " + s|^|${work_dir}/package-infos/| + s|\$|\.builds| + " | \ + xargs -r cat | \ + sort -u + ) | \ + sort | \ + uniq -d | \ + while read -r dep; do + grep -Fx "${dep}" "${work_dir}/package-infos/"*".builds" | \ + cut -d: -f1 | \ + xargs -rn1 basename | \ + cut -d. -f1 + done | \ + sort -u + + continue + fi + + echo 'would be built' + done + +done |