diff options
author | bill-auger <mr.j.spam.me@gmail.com> | 2022-09-19 07:48:14 -0400 |
---|---|---|
committer | bill-auger <mr.j.spam.me@gmail.com> | 2023-12-14 17:13:11 -0500 |
commit | d775ea5e54844fe0006f7090e80e6c5fbc5eb8f6 (patch) | |
tree | cfead6ad90ff7bca19f04d2cd50abbb912b66b34 | |
parent | efc8eb348c95534fd7fdef981f44d843428c435e (diff) |
[parabola-dependents]: wip
-rwxr-xr-x | parabola-dependents | 51 |
1 files changed, 35 insertions, 16 deletions
diff --git a/parabola-dependents b/parabola-dependents index 2b6b02f..a348bc0 100755 --- a/parabola-dependents +++ b/parabola-dependents @@ -3,7 +3,7 @@ readonly ABSLIBRE_DIR=/packages/abslibre readonly ABS_PACKAGES_DIR=/packages/arch/packages readonly ABS_COMMUNITY_DIR=/packages/arch/community -readonly DEBUG=0 +readonly DEBUG=1 readonly BE_VERBOSE=$( [[ "${1}" == '-v' ]] && echo 1 || echo 0 ) ; (( $BE_VERBOSE )) && shift ; readonly PKGBUILD_SED_RX='s|/PKGBUILD$|| ; s|([^/]*/)?([^/]+)/([^/]+)$|\2 \3|' @@ -61,6 +61,7 @@ readonly INVALID_ARG_MSG="no dependency package specified\n\n${USAGE}" readonly UNPRIVILEGED_MSG="this script requires super-user privileges" readonly CBLUE='\033[0;36m' readonly CRED='\033[0;31m' +readonly CYELLOW='\033[0;33m' readonly CEND='\033[0m' readonly SEP_CHAR='=' DB_DIR='' # Init() @@ -77,20 +78,28 @@ declare -A HiorderDependents # CollectResults() ## helpers ## +DBG() # (log_fmt [fmt_args]*) +{ + local log_fmt=$1 + local fmt_args=( "${@:2}" ) + + (( DEBUG )) && printf "${CYELLOW}${log_fmt}${CEND}\n" "${fmt_args[@]}" >&2 || : +} + Log() # (log_fmt [fmt_args]*) { local log_fmt=$1 - local fmt_args="${@:2}" + local fmt_args=( "${@:2}" ) - printf "${CBLUE}${log_fmt}${CEND}\n" ${fmt_args} >&2 + printf "${CBLUE}${log_fmt}${CEND}\n" "${fmt_args[@]}" >&2 } LogError() # (log_fmt [fmt_args]*) { local log_fmt=$1 - local fmt_args="${@:2}" + local fmt_args=( "${@:2}" ) - printf "${CRED}ERROR: ${log_fmt}${CEND}\n" ${fmt_args} >&2 + printf "${CRED}ERROR: ${log_fmt}${CEND}\n" "${fmt_args[@]}" >&2 } Exit() # (log_fmt [fmt_args]*) @@ -113,15 +122,15 @@ ParsePkgbuilds() # ("abs_dir" "dep_chains") local abs_dir="$1" local dep_chains=( "${@:2}" ) local pkgbuild repo pkgbase -# echo "ParsePkgbuilds() (${#dep_chains[@]}) dep_chains=${dep_chains[@]}" >&2 # ; return ; -# for ea in "${dep_chains[@]}" ; do echo "=$ea" >&2 ; done ; return ; +# DBG "ParsePkgbuilds() (${#dep_chains[@]}) dep_chains=${dep_chains[@]}" # ; return ; +# for ea in "${dep_chains[@]}" ; do DBG "=$ea" ; done ; return ; set +o errexit +o errtrace ; trap '' EXIT INT TERM ERR ; # reset debug traps cd "${abs_dir}" for pkgbuild in $(find . -name PKGBUILD) do git ls-tree master ${pkgbuild} | grep -E '/PKGBUILD$' > /dev/null || continue -# echo "ParsePkgbuilds() pkgbuild=${pkgbuild}" >&2 +# DBG "ParsePkgbuilds() pkgbuild=${pkgbuild}" source ${pkgbuild} # continue @@ -136,7 +145,7 @@ ParsePkgbuilds() # ("abs_dir" "dep_chains") : # TODO: if grep " ${makedepend} " <<<${dep_chains[@]} > /dev/null then -echo "ParsePkgbuilds() pkgbuild=${pkgbuild} makedepend=${makedepend} in-chain" >&2 +DBG "ParsePkgbuilds() pkgbuild=${pkgbuild} makedepend=${makedepend} in-chain" >&2 # else echo "ParsePkgbuilds() pkgbuild=${pkgbuild} makedepend=${makedepend} not in-chain" >&2 fi done @@ -170,7 +179,8 @@ PrintDependent() # ("dep_chain") via_pkg=$(sed 's|.*\] <- \([^ ]*\).*|\1|' <<<${dep_chain}) repo_pkg=${dep_chain/ *} n_hiorder_deps=$( tr ' ' '\n' <<<${HiorderDependents[${via_pkg}]} | wc -l ) - echo " ${repo_pkg}${SEP_CHAR}(${n_hiorder_deps} higher-order deps)" + echo " ${repo_pkg}${SEP_CHAR}(plus ${n_hiorder_deps} higher-order deps)" +DBG "PrintDependent() via_pkg=$via_pkg HiorderDependents='${HiorderDependents[${via_pkg}]}'" fi } @@ -232,12 +242,17 @@ export PATH="/code/pacman-contrib/src:${PATH}" CollectResults() { - local dep_chains n_results dep_chain dep_pkg via_pkg repos repo + local dep_chains n_results dep_chain dep_pkg via_pkg repos repo repo_pkg # query database for dependents Log "querying database ...." mapfile -t dep_chains < <(pactree ${PACTREE_OPTS} ${DEP} | sort) +DBG "CollectResults() n_results=${#dep_chains[@]} + ${#ParabolaMakedependents[*]} + ${#ArchMakedependents[*]}" +DBG "CollectResults() dep_chains=%s" "${dep_chains[@]}" +DBG "CollectResults() ParabolaMakedependents=${ParabolaMakedependents[*]}" +DBG "CollectResults() ArchMakedependents=${ArchMakedependents[*]}" + # compile results n_results=$(( ${#dep_chains[@]} + ${#ParabolaMakedependents[*]} + \ ${#ArchMakedependents[*]} )) # FIXME: @@ -252,11 +267,15 @@ CollectResults() cut -d ':' -f 2 | tr -d ' ' )" for repo in ${repos} - do if IsArchRepo ${repo} - then ArchDependents+=( "${repo}/${dep_pkg} ${dep_chain}" ) - else ParabolaDependents+=( "${repo}/${dep_pkg} ${dep_chain}" ) + do repo_pkg=${repo}/${dep_pkg} + if IsArchRepo ${repo} + then ArchDependents+=( "${repo_pkg} ${dep_chain}" ) + else ParabolaDependents+=( "${repo_pkg} ${dep_chain}" ) + fi + if ! IsFirstOrderDep "${dep_chain}" + then hiorder_deps="$(echo ${HiorderDependents[${via_pkg}]} ${repo_pkg})" + HiorderDependents[${via_pkg}]="${hiorder_deps}" fi - HiorderDependents[${via_pkg}]="${HiorderDependents[${via_pkg}]} ${dep_pkg}" done done @@ -283,7 +302,7 @@ PrintReport() if (( BE_VERBOSE || has_firstorder_deps )) then Log "\ndirect$( ! (( BE_VERBOSE )) || echo " and transitive") parabola dependents:" fi -# echo "PrintReport() ${ParabolaDependents[*]}" +# DBG "PrintReport() ${ParabolaDependents[*]}" for dep_chain in "${ParabolaDependents[@]}" do PrintDependent "${dep_chain}" done | column --table --separator="${SEP_CHAR}" --table-wrap=2 |