annotate misc/debian-dependencies.sh @ 460:f84413dd5a7a

Avoid trying to look up non-file dependencies
author Chris Cannam
date Thu, 21 Jul 2011 09:56:57 +0100
parents 84fd4bb8d656
children ac805901f02a
rev   line source
Chris@378 1 #!/bin/bash
Chris@378 2
Chris@378 3 target=$1
Chris@378 4
Chris@378 5 if [ ! -f "$target" ]; then
Chris@378 6 echo "Usage: $0 target-executable"
Chris@378 7 exit 1
Chris@378 8 fi
Chris@378 9
Chris@378 10 pfile=/tmp/packages_$$
Chris@378 11 rfile=/tmp/redundant_$$
Chris@378 12
Chris@378 13 trap "rm -f $pfile $rfile" 0
Chris@378 14 echo
Chris@378 15
Chris@460 16 ldd "$target" | awk '{ print $3; }' | grep '^/' | while read lib; do
Chris@378 17 if test -n "$lib" ; then
Chris@378 18 dpkg-query -S "$lib"
Chris@378 19 fi
Chris@378 20 done | grep ': ' | awk -F: '{ print $1 }' | sort | uniq > $pfile
Chris@378 21
Chris@378 22 echo "Packages providing required libraries:"
Chris@378 23 cat $pfile
Chris@378 24 echo
Chris@378 25
Chris@378 26 for p in `cat $pfile`; do
Chris@460 27 echo Looking at $p 1>&2
Chris@378 28 apt-cache showpkg "$p" | grep '^ ' | grep ',' | awk -F, '{ print $1; }' | \
Chris@378 29 while read d; do
Chris@378 30 if grep -q '^'$d'$' $pfile; then
Chris@378 31 echo $p
Chris@378 32 fi
Chris@378 33 done
Chris@378 34 done | sort | uniq > $rfile
Chris@378 35
Chris@378 36 echo "Packages that can be eliminated because other packages depend on them:"
Chris@378 37 cat $rfile
Chris@378 38 echo
Chris@378 39
Chris@378 40 echo "Remaining required packages:"
Chris@378 41 cat $pfile $rfile | sort | uniq -u
Chris@378 42