mirror of
https://codeberg.org/kiss-community/kiss
synced 2024-09-28 12:22:39 -06:00
kiss: better fixdeps() solution
This commit is contained in:
parent
daa9039bde
commit
aa4e4ebcd9
51
kiss
51
kiss
@ -367,18 +367,10 @@ pkg_depends() {
|
|||||||
while read -r dep _ || [ "$dep" ]; do
|
while read -r dep _ || [ "$dep" ]; do
|
||||||
case $dep in
|
case $dep in
|
||||||
[!#]*)
|
[!#]*)
|
||||||
case $2 in
|
|
||||||
show-installed)
|
|
||||||
pkg_depends "$dep" "$2"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
pkg_list "$dep" >/dev/null 2>&1 ||
|
pkg_list "$dep" >/dev/null 2>&1 ||
|
||||||
pkg_depends "$dep"
|
pkg_depends "$dep"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done < "$repo_dir/depends"
|
done < "$repo_dir/depends"
|
||||||
|
|
||||||
# After child dependencies are added to the list,
|
# After child dependencies are added to the list,
|
||||||
@ -444,11 +436,6 @@ pkg_fixdeps() {
|
|||||||
|
|
||||||
: >> depends
|
: >> depends
|
||||||
|
|
||||||
# Generate list of all dependencies.
|
|
||||||
deps=
|
|
||||||
pkg_depends "$pkg" show-installed
|
|
||||||
deps="$deps gcc llvm $pkg ${pkg%%-bin} ${pkg%%-git}"
|
|
||||||
|
|
||||||
find "$pkg_dir/${PWD##*/}/" -type f 2>/dev/null |
|
find "$pkg_dir/${PWD##*/}/" -type f 2>/dev/null |
|
||||||
|
|
||||||
while read -r file; do
|
while read -r file; do
|
||||||
@ -456,7 +443,8 @@ pkg_fixdeps() {
|
|||||||
|
|
||||||
while read -r _ _ dep _; do
|
while read -r _ _ dep _; do
|
||||||
# Resolve path symlinks to find the real location to the library.
|
# Resolve path symlinks to find the real location to the library.
|
||||||
cd -P "${dep%/*}" 2>/dev/null || continue
|
cd -P "$KISS_ROOT/${dep%/*}" 2>/dev/null ||
|
||||||
|
continue
|
||||||
|
|
||||||
# Skip files owned by libc and POSIX.
|
# Skip files owned by libc and POSIX.
|
||||||
case ${dep##*/} in
|
case ${dep##*/} in
|
||||||
@ -472,13 +460,38 @@ pkg_fixdeps() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Check if ldd result is direct dependency of package.
|
||||||
|
case ${elf_cmd##*/} in
|
||||||
|
readelf)
|
||||||
|
"$elf_cmd" -d "$file" |
|
||||||
|
grep -q "NEEDED.* \[${dep##*/}\]"
|
||||||
|
;;
|
||||||
|
|
||||||
|
objdump)
|
||||||
|
"$elf_cmd" -p "$file" |
|
||||||
|
grep -q "NEEDED.* ${dep##*/}\$"
|
||||||
|
;;
|
||||||
|
esac || continue
|
||||||
|
|
||||||
# Figure out which package owns the file.
|
# Figure out which package owns the file.
|
||||||
dep=$(grep -lFx "${PWD#"$KISS_ROOT"}/${dep##*/}" "$@")
|
dep=$(grep -lFx "${PWD#"$KISS_ROOT"}/${dep##*/}" "$@")
|
||||||
dep=${dep%/*}
|
dep=${dep%/*}
|
||||||
dep=${dep##*/}
|
dep=${dep##*/}
|
||||||
|
|
||||||
# Only list dependencies not mentioned in any (nested) depends file.
|
case $dep in
|
||||||
contains "$deps" "$dep" || printf '%s\n' "$dep"
|
gcc | \
|
||||||
|
llvm | \
|
||||||
|
"$pkg" | \
|
||||||
|
"${pkg%%-bin}" | \
|
||||||
|
"${pkg%%-git}" | \
|
||||||
|
'')
|
||||||
|
# Do nothing.
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
printf '%s\n' "$dep"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done ||:
|
done ||:
|
||||||
done |
|
done |
|
||||||
|
|
||||||
@ -1512,6 +1525,12 @@ main() {
|
|||||||
command -v sls
|
command -v sls
|
||||||
)"} || su=su
|
)"} || su=su
|
||||||
|
|
||||||
|
# Figure out which utility is available to dump elf information.
|
||||||
|
elf_cmd=${KISS_ELFCMD:="$(
|
||||||
|
command -v readelf ||
|
||||||
|
command -v objdump
|
||||||
|
)"} ||:
|
||||||
|
|
||||||
# Store the date and time of script invocation to be used as the name of
|
# Store the date and time of script invocation to be used as the name of
|
||||||
# the log files the package manager creates uring builds.
|
# the log files the package manager creates uring builds.
|
||||||
time=$(date +%Y-%m-%d-%H:%M)
|
time=$(date +%Y-%m-%d-%H:%M)
|
||||||
|
Loading…
Reference in New Issue
Block a user