ports-mgmt/pkg_tree: support pkg_* and pkg
retrieve data from pkg info PR: 200730 Submitted by: tatsuki_makino@hotmail.com Approved by: maintainer timeout (edwin@mavetju.org ; 18 days)
This commit is contained in:
parent
7277285198
commit
cedefb8580
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=390724
@ -3,7 +3,7 @@
|
||||
|
||||
PORTNAME= pkg_tree
|
||||
PORTVERSION= 1.1
|
||||
PORTREVISION= 2
|
||||
PORTREVISION= 3
|
||||
CATEGORIES= ports-mgmt
|
||||
MASTER_SITES= http://www.mavetju.org/download/
|
||||
|
||||
@ -12,6 +12,8 @@ COMMENT= Get a 'graphical' tree-overview of installed packages
|
||||
|
||||
USES= perl5
|
||||
|
||||
NO_ARCH= yes
|
||||
|
||||
PLIST_FILES= bin/pkg_tree man/man7/pkg_tree.7.gz
|
||||
|
||||
post-patch:
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- Makefile.orig Wed Dec 12 23:06:13 2001
|
||||
+++ Makefile Wed Dec 12 23:07:35 2001
|
||||
@@ -11,8 +11,8 @@
|
||||
--- Makefile.orig 2001-12-12 11:44:40 UTC
|
||||
+++ Makefile
|
||||
@@ -11,8 +11,8 @@ pkg_tree.7: pkg_tree.pod
|
||||
--date="December 15, 2001" pkg_tree.pod > pkg_tree.7
|
||||
|
||||
install:
|
||||
|
141
ports-mgmt/pkg_tree/files/patch-pkg__tree
Normal file
141
ports-mgmt/pkg_tree/files/patch-pkg__tree
Normal file
@ -0,0 +1,141 @@
|
||||
--- pkg_tree.orig 2001-12-12 11:44:40 UTC
|
||||
+++ pkg_tree
|
||||
@@ -26,7 +26,7 @@
|
||||
# updated by a newer version. In case of tcl-8.3.3_3, this is tcl-8.3.3_4.
|
||||
#
|
||||
# PKG-TREE is (c) Edwin Groothuis, edwin@mavetju.org
|
||||
-# For license issues, see the file LICESE.
|
||||
+# For license issues, see the file LICENSE.
|
||||
# For more information, see the website: http://www.mavetju.org
|
||||
#
|
||||
|
||||
@@ -34,31 +34,95 @@ use strict;
|
||||
|
||||
use Getopt::Std;
|
||||
|
||||
-use vars qw/ $opt_v /;
|
||||
+use vars qw/ $opt_b $opt_q $opt_t $opt_v /;
|
||||
|
||||
$opt_v=0;
|
||||
-getopts("v");
|
||||
+$opt_t=0;
|
||||
+$opt_b=0;
|
||||
+$opt_q=0;
|
||||
+getopts("bqtv");
|
||||
+
|
||||
+my @args=@ARGV;
|
||||
+my $hasargs=$#ARGV>=0;
|
||||
+
|
||||
+my %required; # this key is required by other packages
|
||||
+my %requires; # this key requires other packages
|
||||
+my @dirs;
|
||||
+my $pkg;
|
||||
+
|
||||
+`pkg -N 2>&1`;
|
||||
+my $child_error_pkg_N = $?;
|
||||
+
|
||||
+if ($child_error_pkg_N == 0) { # begin pkgng
|
||||
+
|
||||
+ my $re_trim = qr/^\s+|\s+$/o;
|
||||
+ my $re_rtrim = qr/:\s*$/o;
|
||||
+ my $re_pkg = qr/^\s+/o;
|
||||
+ my $line;
|
||||
+
|
||||
+ $line = `pkg info -r -a`;
|
||||
+ if ($? == 0) {
|
||||
+ my @lines = split(/^/, $line);
|
||||
+ $pkg = '';
|
||||
+ foreach $line (@lines) {
|
||||
+ if ($line !~ $re_pkg) {
|
||||
+ $pkg = $line;
|
||||
+ $pkg =~ s/$re_rtrim//;
|
||||
+ $required{$pkg}[0] = 0;
|
||||
+ } elsif ($pkg ne '') {
|
||||
+ $line =~ s/$re_trim//g;
|
||||
+ $required{$pkg}[++$required{$pkg}[0]] = $line;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ $line = `pkg info -d -a`;
|
||||
+ if ($? == 0) {
|
||||
+ my @lines = split(/^/, $line);
|
||||
+ $pkg = '';
|
||||
+ foreach $line (@lines) {
|
||||
+ if ($line !~ $re_pkg) {
|
||||
+ $pkg = $line;
|
||||
+ $pkg =~ s/$re_rtrim//;
|
||||
+ $requires{$pkg}[0] = 0;
|
||||
+ } elsif ($pkg ne '') {
|
||||
+ $line =~ s/$re_trim//g;
|
||||
+ $requires{$pkg}[++$requires{$pkg}[0]] = $line;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ $line = `pkg info -q`;
|
||||
+ if ($? == 0) {
|
||||
+ @dirs = split(/^/, $line);
|
||||
+ foreach $pkg (@dirs) {
|
||||
+ $pkg =~ s/$re_trim//g;
|
||||
+ unless (exists $required{$pkg}) {
|
||||
+ $required{$pkg}[0] = 0;
|
||||
+ }
|
||||
+ unless (exists $requires{$pkg}) {
|
||||
+ $requires{$pkg}[0] = 0;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+} # end pkgng
|
||||
+elsif (-e '/usr/sbin/pkg_info') { # begin pkg_install
|
||||
|
||||
my $PKGDIR="/var/db/pkg";
|
||||
|
||||
opendir DIR,$PKGDIR or die "Couldn't open $PKGDIR";
|
||||
-my @dirs=readdir DIR;
|
||||
+@dirs=readdir DIR;
|
||||
closedir DIR;
|
||||
|
||||
@dirs=grep !/^\./,@dirs;
|
||||
+@dirs=grep !/^pkgdb.db$/,@dirs;
|
||||
@dirs=sort @dirs;
|
||||
|
||||
-my @args=@ARGV;
|
||||
-my $hasargs=$#ARGV>=0;
|
||||
-
|
||||
-my %required; # this key is required by other packages
|
||||
-my %requires; # this key requires other packages
|
||||
-
|
||||
#
|
||||
# Read from every package the +REQUIRED_BY file. This file contains
|
||||
# info about the packages which require this package.
|
||||
#
|
||||
-my $pkg;
|
||||
foreach $pkg (@dirs) {
|
||||
$required{$pkg}[0]=0;
|
||||
if (open FILE,$PKGDIR."/".$pkg."/+REQUIRED_BY") {
|
||||
@@ -101,6 +165,11 @@ foreach $pkg (@dirs) {
|
||||
}
|
||||
}
|
||||
|
||||
+} # end pkg_install
|
||||
+else {
|
||||
+ die;
|
||||
+}
|
||||
+
|
||||
|
||||
#
|
||||
# Print the dependancies (recursive) of the packages
|
||||
@@ -150,8 +219,10 @@ foreach $pkg (@dirs) {
|
||||
}
|
||||
next if (!$found);
|
||||
}
|
||||
+ next if ($opt_t && $required{$pkg}[0]!=0);
|
||||
+ next if ($opt_b && $requires{$pkg}[0]!=0);
|
||||
print "$pkg\n";
|
||||
- if ($requires{$pkg}[0]!=0) {
|
||||
+ if (!$opt_q && $requires{$pkg}[0]!=0) {
|
||||
print_deps("|"," ",1,$pkg);
|
||||
}
|
||||
}
|
15
ports-mgmt/pkg_tree/files/patch-pkg__tree.pod
Normal file
15
ports-mgmt/pkg_tree/files/patch-pkg__tree.pod
Normal file
@ -0,0 +1,15 @@
|
||||
--- pkg_tree.pod.orig 2001-12-12 11:44:40 UTC
|
||||
+++ pkg_tree.pod
|
||||
@@ -53,6 +53,12 @@ E<32>[~] edwin@k7E<gt>B<pkg_tree -v linu
|
||||
|\__ freetype2-2.0.5
|
||||
\__ XFree86-libraries-4.1.0 (unknown)
|
||||
|
||||
+Use the B<-t> parameter to show only top level packages,
|
||||
+and B<-b> to show only bottom level packages. And B<-t> B<-q>
|
||||
+together will give the list of top level packages without their
|
||||
+dependencies, installing only these packages should install all
|
||||
+currently installed packages.
|
||||
+
|
||||
=head1 RETURN VALUES
|
||||
|
||||
Always 0.
|
@ -1,65 +0,0 @@
|
||||
--- pkg_tree.orig Wed Dec 12 13:44:40 2001
|
||||
+++ pkg_tree Mon Jan 6 23:02:31 2003
|
||||
@@ -26,7 +26,7 @@
|
||||
# updated by a newer version. In case of tcl-8.3.3_3, this is tcl-8.3.3_4.
|
||||
#
|
||||
# PKG-TREE is (c) Edwin Groothuis, edwin@mavetju.org
|
||||
-# For license issues, see the file LICESE.
|
||||
+# For license issues, see the file LICENSE.
|
||||
# For more information, see the website: http://www.mavetju.org
|
||||
#
|
||||
|
||||
@@ -34,10 +34,13 @@
|
||||
|
||||
use Getopt::Std;
|
||||
|
||||
-use vars qw/ $opt_v /;
|
||||
+use vars qw/ $opt_b $opt_q $opt_t $opt_v /;
|
||||
|
||||
$opt_v=0;
|
||||
-getopts("v");
|
||||
+$opt_t=0;
|
||||
+$opt_b=0;
|
||||
+$opt_q=0;
|
||||
+getopts("bqtv");
|
||||
|
||||
my $PKGDIR="/var/db/pkg";
|
||||
|
||||
@@ -46,6 +49,7 @@
|
||||
closedir DIR;
|
||||
|
||||
@dirs=grep !/^\./,@dirs;
|
||||
+@dirs=grep !/^pkgdb.db$/,@dirs;
|
||||
@dirs=sort @dirs;
|
||||
|
||||
my @args=@ARGV;
|
||||
@@ -150,8 +154,10 @@
|
||||
}
|
||||
next if (!$found);
|
||||
}
|
||||
+ next if ($opt_t && $required{$pkg}[0]!=0);
|
||||
+ next if ($opt_b && $requires{$pkg}[0]!=0);
|
||||
print "$pkg\n";
|
||||
- if ($requires{$pkg}[0]!=0) {
|
||||
+ if (!$opt_q && $requires{$pkg}[0]!=0) {
|
||||
print_deps("|"," ",1,$pkg);
|
||||
}
|
||||
}
|
||||
--- patch-aa ends here ---
|
||||
|
||||
--- patch-ab begins here ---
|
||||
--- pkg_tree.pod.orig Wed Dec 12 13:44:40 2001
|
||||
+++ pkg_tree.pod Mon Jan 6 23:20:49 2003
|
||||
@@ -53,6 +53,12 @@
|
||||
|\__ freetype2-2.0.5
|
||||
\__ XFree86-libraries-4.1.0 (unknown)
|
||||
|
||||
+Use the B<-t> parameter to show only top level packages,
|
||||
+and B<-b> to show only bottom level packages. And B<-t> B<-q>
|
||||
+together will give the list of top level packages without their
|
||||
+dependencies, installing only these packages should install all
|
||||
+currently installed packages.
|
||||
+
|
||||
=head1 RETURN VALUES
|
||||
|
||||
Always 0.
|
Loading…
Reference in New Issue
Block a user