summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2009-12-29 20:52:44 +0000
committerespie <espie@openbsd.org>2009-12-29 20:52:44 +0000
commite71b64c04d7c60a26f8598fea24c44b6bb4a09da (patch)
tree1caafac4d40b80118967e58a380fdebc46c1f602
parenttemporary fix for .libs update issue. (diff)
downloadwireguard-openbsd-e71b64c04d7c60a26f8598fea24c44b6bb4a09da.tar.xz
wireguard-openbsd-e71b64c04d7c60a26f8598fea24c44b6bb4a09da.zip
do "not reinstalling" in a more intelligent way, by moving things into
kept, and then, just nop'ing a set with nothing to do...
-rw-r--r--usr.sbin/pkg_add/pkg_add22
1 files changed, 15 insertions, 7 deletions
diff --git a/usr.sbin/pkg_add/pkg_add b/usr.sbin/pkg_add/pkg_add
index 95aaf3b5c42..220f9663474 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.449 2009/12/29 18:16:14 espie Exp $
+# $OpenBSD: pkg_add,v 1.450 2009/12/29 20:52:44 espie Exp $
#
# Copyright (c) 2003-2009 Marc Espie <espie@openbsd.org>
#
@@ -226,14 +226,20 @@ sub complete
!$state->{defines}->{installed} &&
!$plist->has_new_sig($state) &&
!$plist->uses_old_libs)) {
- $n->{tweaked} =
+ my $o = $set->{older}->{$pkgname};
+ if (!defined $o) {
+ $o = OpenBSD::Handle->create_old($pkgname, $state);
+ $set->add_older($o);
+ }
+ $o->{update_found} = $o;
+ $set->move_kept($o);
+ $o->{tweaked} =
OpenBSD::Add::tweak_package_status($pkgname, $state);
$state->say("Not reinstalling $pkgname")
if $state->verbose >= 2 and !$n->{tweaked};
- $state->tracker->uptodate($set);
- $state->tracker->{uptodate}->{$pkgname} = 1;
- $n->cleanup(OpenBSD::Handle::ALREADY_INSTALLED);
- }
+ delete $set->{newer}->{$pkgname};
+ $n->cleanup;
+ }
return 1 if $n->has_error;
}
for my $o ($set->older) {
@@ -775,7 +781,9 @@ sub install_set
return ();
}
}
- really_add($set, $state);
+ if ($set->newer > 0 || $set->older_to_do > 0) {
+ really_add($set, $state);
+ }
$set->cleanup;
$state->tracker->done($set);
return ();