summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2022-02-07 20:22:15 -0500
committerbill-auger <mr.j.spam.me@gmail.com>2023-12-14 17:13:11 -0500
commit8471798b4447d9fe50d441a69b0d6d01dcf3d325 (patch)
tree6486735372e1f869afb4b020f760e528db41e498
parent82af74f6a240a6ba834c0074cd151168a3c39a4b (diff)
[lddtree-parabola-packages]: wip
-rwxr-xr-xlddtree-parabola-packages31
1 files changed, 25 insertions, 6 deletions
diff --git a/lddtree-parabola-packages b/lddtree-parabola-packages
index 8d51273..28ee75b 100755
--- a/lddtree-parabola-packages
+++ b/lddtree-parabola-packages
@@ -1,22 +1,41 @@
#!/bin/bash
-LogLibErr() { echo "ERROR: no lib $lib" >&2 ; } ;
-LogPkgErr() { echo "ERROR: no pkg $pkg for lib $lib" >&2 ; } ;
+readonly REPOS_RX='^(libre|nonprism|nonsystem|pcr)'
+
+
+LogLibErr() { echo "ERROR: no lib ${lib}" >&2 ; } ;
+LogPkgErr() { echo "ERROR: no pkg ${pkg} for lib ${lib}" >&2 ; } ;
Main()
{
local a_bin="$(which $1)"
+ local libs=()
+ local pkg
+ local lib
+ local file_meta
+ local repo
+ local name
+ local parabola_pkgs=()
+ local upstream_pkgs=()
+
+ [[ -x "${a_bin}" ]] || ! echo "USAGE: $0 <elf_file>" >&2 || return 1
- [[ -x "$a_bin" ]] || ! echo "USAGE: $0 <elf_file>" >&2 || return 1
+ libs=( $(lddtree ${a_bin} | cut -d '>' -f 2 | sort -u | grep '\.so[^\)]*$') )
- for pkg in $( for lib in $(lddtree $a_bin | cut -d '>' -f 2 | sort -u)
- do [[ -f "$lib" ]] && pkgfile $lib || LogLibErr
+ echo "digging the linkage chain for: '${a_bin}'"
+ for pkg in $( for lib in "${libs[@]}"
+ do file_meta="$(file --dereference "${lib}")"
+
+ [[ "${file_meta}" =~ "${lib}: ELF " ]] && pkgfile ${lib} || LogLibErr
done | sort -u )
do repo=${pkg/\/*/}
name=${pkg/*\//}
- [[ "$repo" =~ ^(libre|nonprism|nonsystem|pcr) ]] && echo "is parabola package: $pkg $name $repo"
+ [[ "${repo}" =~ ${REPOS_RX} ]] && parabola_pkgs+=(${pkg}) || upstream_pkgs+=(${pkg})
done
+
+ echo -e "\nupstream packages:" ; (( ${#upstream_pkgs[@]} )) && printf "\t%s\n" "${upstream_pkgs[@]}"
+ echo -e "\nparabola packages:" ; (( ${#parabola_pkgs[@]} )) && printf "\t%s\n" "${parabola_pkgs[@]}"
}