summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2009-04-19 15:18:23 +0000
committerespie <espie@openbsd.org>2009-04-19 15:18:23 +0000
commit461b2904cecfef51224d881d6d7396c14ea0a6ae (patch)
tree7bcb067f5065ec6baac037a186248d281293361f
parentFix interrupt mapping for devices behind PCI-PCI bridges. (diff)
downloadwireguard-openbsd-461b2904cecfef51224d881d6d7396c14ea0a6ae.tar.xz
wireguard-openbsd-461b2904cecfef51224d881d6d7396c14ea0a6ae.zip
remove class FatPackageLocation. Instead make PackageLocation a hierarchy
so that I can handle installed packages without playing ping-pong with the PackageRepository hierarchy (mostly)
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackageLocation.pm56
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackageRepository.pm6
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm41
-rw-r--r--usr.sbin/pkg_add/OpenBSD/Search.pm4
4 files changed, 49 insertions, 58 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm b/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm
index f58c05cf844..edf77c7c328 100644
--- a/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: PackageLocation.pm,v 1.16 2009/04/19 14:58:32 espie Exp $
+# $OpenBSD: PackageLocation.pm,v 1.17 2009/04/19 15:18:23 espie Exp $
#
# Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org>
#
@@ -143,7 +143,6 @@ sub find_fat_contents
if ($plist->has('arch')) {
if ($plist->{arch}->check($self->{arch})) {
$self->{filter} = $prefix;
- bless $self, "OpenBSD::FatPackageLocation";
return $contents;
}
}
@@ -164,7 +163,7 @@ sub contents
return $self->{contents};
}
-sub grabInfoFiles
+sub grab_info
{
my $self = shift;
my $dir = $self->{dir} = OpenBSD::Temp->dir;
@@ -223,7 +222,7 @@ sub info
my $self = shift;
if (!defined $self->{dir}) {
- $self->{repository}->grab_info($self);
+ $self->grab_info;
}
return $self->{dir};
}
@@ -231,13 +230,6 @@ sub info
sub plist
{
my ($self, $code) = @_;
- $self->{repository}->get_plist($self, $code);
-}
-
-sub _plist
-{
- my ($self, $code) = @_;
-
require OpenBSD::PackingList;
if (defined $self->{dir} && -f $self->{dir}.CONTENTS) {
@@ -331,7 +323,20 @@ sub getNext
{
my $self = shift;
- return $self->{_archive}->next;
+ my $e = $self->{_archive}->next;
+ if (defined $self->{filter}) {
+ if ($e->{name} =~ m/^(.*?)\/(.*)$/o) {
+ my ($beg, $name) = ($1, $2);
+ if (index($beg, $self->{filter}) == -1) {
+ return $self->getNext;
+ }
+ $e->{name} = $name;
+ if ($e->isHardLink) {
+ $e->{linkname} =~ s/^(.*?)\///o;
+ }
+ }
+ }
+ return $e;
}
sub skip
@@ -340,25 +345,22 @@ sub skip
return $self->{_archive}->skip;
}
-package OpenBSD::FatPackageLocation;
-our @ISA=qw(OpenBSD::PackageLocation);
+package OpenBSD::PackageLocation::Installed;
+our @ISA = qw(OpenBSD::PackageLocation);
-sub getNext
+
+sub info
{
my $self = shift;
+ require OpenBSD::PackageInfo;
+ $self->{dir} = OpenBSD::PackageInfo::installed_info($self->name);
+}
- my $e = $self->SUPER::getNext;
- if ($e->{name} =~ m/^(.*?)\/(.*)$/o) {
- my ($beg, $name) = ($1, $2);
- if (index($beg, $self->{filter}) == -1) {
- return $self->next;
- }
- $e->{name} = $name;
- if ($e->isHardLink) {
- $e->{linkname} =~ s/^(.*?)\///o;
- }
- }
- return $e;
+sub plist
+{
+ my ($self, $code) = @_;
+ require OpenBSD::PackingList;
+ return OpenBSD::PackingList->from_installation($self->name, $code);
}
1;
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm b/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm
index 796e6260861..d94953d8509 100644
--- a/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PackageRepository.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: PackageRepository.pm,v 1.63 2009/04/19 14:58:32 espie Exp $
+# $OpenBSD: PackageRepository.pm,v 1.64 2009/04/19 15:18:23 espie Exp $
#
# Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org>
#
@@ -229,7 +229,7 @@ sub open
sub find
{
my ($repository, $name, $arch) = @_;
- my $self = OpenBSD::PackageLocation->new($repository, $name, $arch);
+ my $self = $repository->new_location($name, $arch);
if ($self->contents) {
return $self;
@@ -239,7 +239,7 @@ sub find
sub grabPlist
{
my ($repository, $name, $arch, $code) = @_;
- my $self = OpenBSD::PackageLocation->new($repository, $name, $arch);
+ my $self = $repository->new_location($name, $arch);
return $self->grabPlist($code);
}
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm b/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm
index ff926d516a8..b2addb1e63b 100644
--- a/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PackageRepository/Installed.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: Installed.pm,v 1.13 2009/04/19 14:58:32 espie Exp $
+# $OpenBSD: Installed.pm,v 1.14 2009/04/19 15:18:23 espie Exp $
#
# Copyright (c) 2007 Marc Espie <espie@openbsd.org>
#
@@ -88,6 +88,16 @@ sub canonicalize
return $name;
}
+sub new_location
+{
+ my ($self, @args) = @_;
+
+ return $self->locationClassName->new($self, @args);
+}
+
+sub locationClassName
+{ "OpenBSD::PackageLocation" }
+
sub locations_list
{
my $self = shift;
@@ -96,24 +106,13 @@ sub locations_list
require OpenBSD::PackageLocation;
for my $name (@{$self->list}) {
- push @$l, OpenBSD::PackageLocation->new($self, $name);
+ push @$l, $self->new_location($name);
}
$self->{locations} = $l;
}
return $self->{locations};
}
-sub grab_info
-{
- my ($repository, $location) = @_;
- $location->grabInfoFiles;
-}
-
-sub get_plist
-{
- my ($repository, $location, $code) = @_;
- $location->_plist($code);
-}
package OpenBSD::PackageRepository::Installed;
our @ISA = (qw(OpenBSD::PackageRepositoryBase));
@@ -158,24 +157,14 @@ sub find
if (is_installed($name)) {
require OpenBSD::PackageLocation;
- $self = OpenBSD::PackageLocation->new($repository, $name);
+ $self = $repository->new_location($name);
$self->{dir} = installed_info($name);
}
return $self;
}
-sub grab_info
-{
- my ($repository, $location) = @_;
- $location->{dir} = installed_info($location->name);
-}
-
-sub get_plist
-{
- my ($repository, $location, $code) = @_;
- require OpenBSD::PackingList;
- return OpenBSD::PackingList->from_installation($location->name, $code);
-}
+sub locationClassName
+{ "OpenBSD::PackageLocation::Installed" }
sub grabPlist
{
diff --git a/usr.sbin/pkg_add/OpenBSD/Search.pm b/usr.sbin/pkg_add/OpenBSD/Search.pm
index 3a5137911d6..feda52db719 100644
--- a/usr.sbin/pkg_add/OpenBSD/Search.pm
+++ b/usr.sbin/pkg_add/OpenBSD/Search.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: Search.pm,v 1.9 2009/04/19 14:58:32 espie Exp $
+# $OpenBSD: Search.pm,v 1.10 2009/04/19 15:18:23 espie Exp $
#
# Copyright (c) 2007 Marc Espie <espie@openbsd.org>
#
@@ -21,7 +21,7 @@ sub match_locations
my ($self, $o) = @_;
require OpenBSD::PackageLocation;
- my @l = map {OpenBSD::PackageLocation->new($o, $_)} $self->match($o);
+ my @l = map {$o->new_location($_)} $self->match($o);
return \@l;
}