summaryrefslogtreecommitdiff
path: root/usr.sbin/pkg_add
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2004-12-28 13:56:09 +0000
committerMarc Espie <espie@cvs.openbsd.org>2004-12-28 13:56:09 +0000
commit72ea6221a88cd4f2d95b39e2ade757014ed3d97d (patch)
treec8af521abd6f90ce1ed984e0f038e3afd7d6fbe5 /usr.sbin/pkg_add
parentd154e99ca9414323ee1e8d5954d7987f8a6a28d1 (diff)
improve message quality: don't say we can't update stuff when we are going
to force it. Group the verification of forward dependencies, so that it is less verbose. Also, register .libs conflict, even if it's not that useful.
Diffstat (limited to 'usr.sbin/pkg_add')
-rw-r--r--usr.sbin/pkg_add/OpenBSD/Update.pm61
1 files changed, 42 insertions, 19 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Update.pm b/usr.sbin/pkg_add/OpenBSD/Update.pm
index 6b9e0e74cc5..43c7956e1e4 100644
--- a/usr.sbin/pkg_add/OpenBSD/Update.pm
+++ b/usr.sbin/pkg_add/OpenBSD/Update.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: Update.pm,v 1.48 2004/12/27 22:40:42 espie Exp $
+# $OpenBSD: Update.pm,v 1.49 2004/12/28 13:56:08 espie Exp $
#
# Copyright (c) 2004 Marc Espie <espie@openbsd.org>
#
@@ -146,8 +146,12 @@ sub validate_depend
}
return unless OpenBSD::PkgSpec::match($self->{pattern}, $toreplace);
if (!OpenBSD::PkgSpec::match($self->{pattern}, $replacement)) {
- $state->{okay} = 0;
- Warn "Can't update forward dependency of $wanting on $toreplace\n";
+ if ($state->{forced}->{updatedepends}) {
+ Warn "Forward dependency of $wanting on $toreplace doesn't match, forcing it\n";
+ } else {
+ $state->{okay} = 0;
+ Warn "Can't update forward dependency of $wanting on $toreplace\n";
+ }
}
}
@@ -207,8 +211,12 @@ sub validate_depend
}
return unless OpenBSD::PkgSpec::match($self->{pattern}, $toreplace);
if (!OpenBSD::PkgSpec::match($self->{pattern}, $replacement)) {
- $state->{okay} = 0;
- Warn "Can't update forward dependency of $wanting on $toreplace\n";
+ if ($state->{forced}->{updatedepends}) {
+ Warn "Forward dependency of $wanting on $toreplace doesn't match, forcing it\n";
+ } else {
+ $state->{okay} = 0;
+ Warn "Can't update forward dependency of $wanting on $toreplace\n";
+ }
}
}
@@ -221,8 +229,12 @@ sub validate_depend
return unless OpenBSD::PkgSpec::match($self->{pattern}, $toreplace);
if (!OpenBSD::PkgSpec::match($self->{pattern}, $replacement)) {
- $state->{okay} = 0;
- Warn "Can't update forward dependency of $wanting on $toreplace\n";
+ if ($state->{forced}->{updatedepends}) {
+ Warn "Forward dependency of $wanting on $toreplace doesn't match, forcing it\n";
+ } else {
+ $state->{okay} = 0;
+ Warn "Can't update forward dependency of $wanting on $toreplace\n";
+ }
}
}
@@ -245,21 +257,25 @@ sub can_do
$plist->visit('can_update', 0, $state);
if ($state->{okay} == 0) {
Warn "Old package ", $plist->pkgname(), " contains unsafe operations\n";
- }
- if ($state->{forced}->{update}) {
- $state->{okay} = 1;
+ if ($state->{forced}->{update}) {
+ Warn "(forcing update)\n";
+ $state->{okay} = 1;
+ }
}
my @wantlist = OpenBSD::RequiredBy->new($toreplace)->list();
+ my @r = ();
for my $wanting (@wantlist) {
- next if defined $ignore->{$wanting};
- print "Verifying dependencies still match for $wanting\n" if $state->{verbose};
- my $p2 = OpenBSD::PackingList->from_installation($wanting,
- \&OpenBSD::PackingList::DependOnly);
- $p2->visit('validate_depend', $state, $wanting, $toreplace, $replacement);
+ push(@r, $wanting) if !defined $ignore->{$wanting};
}
-
- if ($state->{forced}->{updatedepends}) {
- $state->{okay} = 1;
+ if (@r) {
+ print "Verifying dependencies still match for ",
+ join(', ', @r), "\n" if $state->{verbose};
+ for my $wanting (@wantlist) {
+ my $p2 = OpenBSD::PackingList->from_installation(
+ $wanting, \&OpenBSD::PackingList::DependOnly);
+ $p2->visit('validate_depend', $state, $wanting,
+ $toreplace, $replacement);
+ }
}
if ($state->{okay}) {
@@ -285,8 +301,12 @@ sub is_safe
if ($state->{okay} == 0) {
Warn "New package ", $plist->pkgname(),
" contains unsafe operations\n";
+ if ($state->{forced}->{update}) {
+ Warn "(forcing update)\n";
+ $state->{okay} = 1;
+ }
}
- return $state->{okay} || $state->{forced}->{update};
+ return $state->{okay};
}
# create a packing-list with only the libraries we want to keep around.
@@ -417,6 +437,9 @@ sub save_old_libraries
}
add_installed($stub_name);
+ require OpenBSD::PkgCfl;
+ OpenBSD::PkgCfl::register($stub_list, $state);
+
walk_depends_closure($old_plist->pkgname(), $stub_name, $state);
} else {
print "No libraries to keep\n" if $state->{beverbose};