summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackageLocation.pm7
-rw-r--r--usr.sbin/pkg_add/pkg_add16
2 files changed, 16 insertions, 7 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm b/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm
index 3541a71f36b..91f44122cb7 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.13 2007/06/04 18:55:47 espie Exp $
+# $OpenBSD: PackageLocation.pm,v 1.14 2007/06/10 15:24:36 espie Exp $
#
# Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org>
#
@@ -207,8 +207,11 @@ sub plist
my $value = $self->{contents};
return OpenBSD::PackingList->fromfile(\$value, $code);
} elsif (defined $self->{dir} && -f $self->{dir}.CONTENTS) {
- return OpenBSD::PackingList->fromfile($self->{dir}.CONTENTS,
+ my $plist =
+ OpenBSD::PackingList->fromfile($self->{dir}.CONTENTS,
$code);
+ $plist->set_infodir($self->{dir});
+ return $plist;
}
# hopeless
$self->close_with_client_error;
diff --git a/usr.sbin/pkg_add/pkg_add b/usr.sbin/pkg_add/pkg_add
index 2d478072b07..d165c1211d9 100644
--- a/usr.sbin/pkg_add/pkg_add
+++ b/usr.sbin/pkg_add/pkg_add
@@ -1,7 +1,7 @@
#! /usr/bin/perl
# ex:ts=8 sw=4:
-# $OpenBSD: pkg_add,v 1.318 2007/06/10 15:11:05 espie Exp $
+# $OpenBSD: pkg_add,v 1.319 2007/06/10 15:24:36 espie Exp $
#
# Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org>
#
@@ -165,19 +165,25 @@ sub can_install
return;
}
- my $rplist = OpenBSD::PackingList->from_installation($toreplace);
+ my $old_handle = OpenBSD::Handle->new;
+ $old_handle->{pkgname} = $toreplace;
+ $old_handle->{location} = OpenBSD::PackageRepository::Installed->new->find($toreplace, $state->{arch});
+ if (!$old_handle->{location}) {
+ Fatal "Can't find $toreplace as an installed package\n";
+ }
+ my $rplist = $old_handle->{location}->plist;
if (!defined $rplist) {
Fatal "Couldn't find packing-list for $toreplace\n";
}
+ $old_handle->{plist} = $rplist;
+
if (!OpenBSD::Replace::can_old_package_be_replaced($rplist,
$pkgname, $state, \%conflicts)) {
print "Can't update $toreplace into $pkgname\n";
$handle->set_error(OpenBSD::Handle::CANT_INSTALL);
return;
}
- my $old_handle = OpenBSD::Handle->new;
- $old_handle->{plist} = $rplist;
- $old_handle->{pkgname} = $toreplace;
+
$set->add_older($old_handle);
if ($rplist->has('manual-installation') &&
!$plist->has('manual-installation')) {