diff options
author | bill-auger <mr.j.spam.me@gmail.com> | 2022-09-19 01:01:53 -0400 |
---|---|---|
committer | bill-auger <mr.j.spam.me@gmail.com> | 2023-12-14 17:13:11 -0500 |
commit | adc943085f66e40cc19c0aa11c3e39803d49a5e6 (patch) | |
tree | d94461e7e8d594d3275243579b7a091d3e325681 | |
parent | 40ce3d91e9d53c60f0eb0696b22b428d2e35bfcd (diff) |
[parabola-dependents]: print arch abs dependency chains
-rwxr-xr-x | parabola-dependents | 68 |
1 files changed, 38 insertions, 30 deletions
diff --git a/parabola-dependents b/parabola-dependents index 8f44207..00b3dfc 100755 --- a/parabola-dependents +++ b/parabola-dependents @@ -66,8 +66,8 @@ CFG_FILE='' # Init() PACMAN_OPTS='' # Init() PACTREE_OPTS='' # Init() -Ignored=() # CollectResults() -Dependents=() # CollectResults() +ParabolaDependents=() # CollectResults() +ArchDependents=() # CollectResults() Makedependents=() # CollectResults() declare -A HiorderDependents # CollectResults() @@ -110,6 +110,23 @@ IsArchRepo() # (repo) local repo=$1 ; [[ "${repo}" =~ ^(community|core|extra|multilib|testing)$ ]] } +PrintDependent() # ("dep_chain") +{ + local dep_chain="$@" + local is_hiorder_dep=$( (( $(tr '<' '\n' <<<${dep_chain} | wc -l) > 2 )) && echo 1 || echo 0 ) + local via_pkg repo_pkg + + if (( BE_VERBOSE )) + then # display all transitive dependents + echo " ${dep_chain/ /${SEP_CHAR}}" + elif ! (( is_hiorder_dep )) + then # display only first-order dependents + via_pkg=$(sed 's|.*\] <- \([^ ]*\).*|\1|' <<<${dep_chain}) + repo_pkg=${dep_chain/ *} + n_hiorder_deps=$(( ${HiorderDependents[${via_pkg}]} - 1 )) + echo " ${repo_pkg}${SEP_CHAR}(${n_hiorder_deps} higher-order deps)" + fi +} ## business ## @@ -197,8 +214,8 @@ CollectResults() for repo in ${repos} do if IsArchRepo ${repo} - then Ignored+=( "${repo}/${dep_pkg}" ) - else Dependents+=( "${repo}/${dep_pkg} ${dep_chain}" ) + then ArchDependents+=( "${repo}/${dep_pkg} ${dep_chain}" ) + else ParabolaDependents+=( "${repo}/${dep_pkg} ${dep_chain}" ) HiorderDependents[${via_pkg}]=$(( ${HiorderDependents[${via_pkg}]} + 1 )) fi done @@ -207,27 +224,27 @@ CollectResults() PrintReport() { - local log_msg="\ndirect$( ! (( BE_VERBOSE )) || echo " and transitive") parabola dependents:" - local dep_chain is_hiorder_dep via_pkg repo_pkg + local dep_chain declare -i n_hiorder_deps # report parabola abslibre packages with some degree of run-time dependency # on the input package or sodep - (( ${#Dependents[*]} )) && Log "${log_msg}" - for dep_chain in "${Dependents[@]}" - do is_hiorder_dep=$( (( $(tr '<' '\n' <<<${dep_chain} | wc -l) > 2 )) && echo 1 || echo 0 ) - - if (( BE_VERBOSE )) - then # display all transitive dependents - echo " ${dep_chain/ /${SEP_CHAR}}" - elif ! (( is_hiorder_dep )) - then # display only first-order dependents - via_pkg=$(sed 's|.*\] <- \([^ ]*\).*|\1|' <<<${dep_chain}) - repo_pkg=${dep_chain/ *} - n_hiorder_deps=$(( ${HiorderDependents[${via_pkg}]} - 1 )) - echo " ${repo_pkg}${SEP_CHAR}(${n_hiorder_deps} higher-order deps)" - fi - done | column --table --separator="${SEP_CHAR}" --table-wrap=2 + if (( ${#ParabolaDependents[*]} )) + then Log "\ndirect$( ! (( BE_VERBOSE )) || echo " and transitive") parabola dependents:" + for dep_chain in "${ParabolaDependents[@]}" + do PrintDependent "${dep_chain}" + done | column --table --separator="${SEP_CHAR}" --table-wrap=2 + fi + + # report arch abs packages with some degree of run-time dependency + # on the input package or sodep + if (( BE_VERBOSE && ${#ArchDependents[@]} )) + then Log "\ndirect$( ! (( BE_VERBOSE )) || echo " and transitive") arch dependents:" + for dep_chain in "${ArchDependents[@]}" + do PrintDependent "${dep_chain}" + done | column --table --separator="${SEP_CHAR}" --table-wrap=2 + else echo -e "\n(plus ${#ArchDependents[@]} arch dependents)" + fi # report parabola abslibre packages with direct build-time dependency # on the input package or sodep @@ -237,15 +254,6 @@ PrintReport() printf " %s\n" ${Makedependents[*]} fi - # report arch abs packages with direct run-time dependency - # on the input package or sodep - # TODO: report arch abs packages with some degree of build-time dependency - if (( BE_VERBOSE && ${#Ignored[@]} )) - then Log "\narch dependents:" - printf " %s\n" "${Ignored[@]}" - else echo -e "\n(plus ${#Ignored[@]} arch dependents)" - fi - # TODO: report arch abs packages with some degree of build-time dependency # on the input package or sodep } |