Package: apt-rdepends
Version: 1.3.0-1.1
Severity: wishlist

The attached patch adds --given-only to apt-rdepends. This is e.g. useful if
you install a new package and want a small diagrapm showing which packages
are pulled in by dependencies.

apt-cache on the other hand is unable to only graph depends. I agree that
all the functionality should finally go to apt-cache, but hacking
apt-rdepends was much quicker an easier :-)


-- System Information:
Debian Release: lenny/sid
  APT prefers hardy-updates
  APT policy: (500, 'hardy-updates'), (500, 'hardy-security'), (500, 
'hardy-backports'), (500, 'hardy')
Architecture: i386 (i686)

Kernel: Linux 2.6.24-19-generic (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages apt-rdepends depends on:
ii  libapt-pkg-perl             0.1.21build3 Perl interface to libapt-pkg
ii  perl                        5.8.8-12     Larry Wall's Practical Extraction 

apt-rdepends recommends no packages.

-- no debconf information
--- /usr/bin/apt-rdepends       2007-10-26 16:14:34.000000000 +0200
+++ apt-rdepends        2008-08-05 14:48:01.000000000 +0200
@@ -36,6 +36,8 @@
 my $reverse = 0;
 # Are we following Build-Depends?
 my $builddep = 0;
+# Do we only recurse on packages given on commandline
+my $givenonly = 0;
 # We kind of output do we generate?  (console, dotty, vcg)
 my $output = "console";
 # Which types of dependencies do we follow?
@@ -69,6 +71,7 @@
            'option|o=s'       => [EMAIL PROTECTED],
            'help|h|?'         => \$help,
            'version'          => \$ver,
+           'given-only'       => \$givenonly,
            'man'              => \$man) or pod2usage(verbose => 0);
 print_version() if ($ver);
 pod2usage(verbose => 2) if ($man);
@@ -267,7 +270,13 @@
     my $state = ($reverse
                 ? $dep->{ParentPkg}->{CurrentState}
                 : $dep->{TargetPkg}->{CurrentState});
+    my $name = $dep->{$PkgReference}->{Name};
     # Push the name of this package into the right pigeonhole.
+    if (   $givenonly
+       && grep {0+$dep->{DepType} eq $_} @follow
+       && ! grep {$name eq $_} @ARGV) {
+       next;
+    }
     $$results{0+$dep->{DepType}}{$dep->{$PkgReference}->{Name}} =
       [ $version, $state, "$dep->{DepType}"];
     # Populate the dictionaries of names for this lcoale
@@ -553,6 +562,7 @@
  -d, --dotty                generates a dotty graph
  -p, --print-state          show the state of each dependency
  -r, --reverse              list packages that depend on the specified one
+ -g, --given-only           only follow packages given on commandline
  -f, --follow=DEPENDS       only follow DEPENDS dependencies recursively
  -s, --show=DEPENDS         only show DEPENDS dependencies
      --state-follow=STATES  only follow STATES states recursively

Reply via email to