]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
make.sh: Add command to find dependencies
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 13 May 2020 10:52:59 +0000 (11:52 +0100)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sun, 17 May 2020 08:04:47 +0000 (08:04 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
make.sh
tools/find-dependencies [new file with mode: 0755]

diff --git a/make.sh b/make.sh
index 78c4edc9097edd9a1e067114392bad7ddc37a676..4acce807feb3b78beb952d14d42cc297a541a924 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -1993,8 +1993,12 @@ lang)
 update-contributors)
        update_contributors
        ;;
+find-dependencies)
+       shift
+       exec "${BASEDIR}/tools/find-dependencies" "${BASEDIR}/build" "$@"
+       ;;
 *)
-       echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors}"
+       echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors|find-dependencies}"
        cat doc/make.sh-usage
        ;;
 esac
diff --git a/tools/find-dependencies b/tools/find-dependencies
new file mode 100755 (executable)
index 0000000..25e6cdd
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+main() {
+       if [ $# -lt 2 ]; then
+               echo "${0}: Usage: PATH LIBRARY ..."
+               return 2
+       fi
+
+       local root="${1}"
+       shift
+
+       if [ ! -d "${root}" ]; then
+               echo "${0}: ${root}: No such file or directory"
+               return 1
+       fi
+
+       local libraries="$@"
+
+       # Build the regex filter
+       local filter="(${libraries[*]// /|})"
+
+       local file
+       for file in $(find "${root}" -xdev -type f -executable); do
+               if readelf -d "${file}" 2>/dev/null | grep -qE "NEEDED.*\[${filter}\]$"; then
+                       echo "${file}"
+               fi
+       done
+
+       return 0
+}
+
+main "$@" || exit $?