summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2022-09-19 07:48:14 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2023-12-14 17:13:11 -0500
commitd775ea5e54844fe0006f7090e80e6c5fbc5eb8f6 (patch)
treecfead6ad90ff7bca19f04d2cd50abbb912b66b34
parentefc8eb348c95534fd7fdef981f44d843428c435e (diff)
[parabola-dependents]: wip
-rwxr-xr-xparabola-dependents51
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