diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2009-10-19 14:07:27 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2009-10-19 14:07:27 +0000 |
commit | 7094a1d6c3f904768d247810bcb24097c6bc2351 (patch) | |
tree | d6ad8868338e3b79e80c9bb0ee4a78f8df3f0300 /usr.sbin/pkg_add/OpenBSD | |
parent | 5ee5e2e3fe83bf75469c502000e0990d8e369b8d (diff) |
basic routines to handle the merging of updatesets: mark updatesets as
already done, separate remove/mark_installed in tracker, create a merge
method that allows the merging of updatesets.
Diffstat (limited to 'usr.sbin/pkg_add/OpenBSD')
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Tracker.pm | 14 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/UpdateSet.pm | 24 |
2 files changed, 34 insertions, 4 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Tracker.pm b/usr.sbin/pkg_add/OpenBSD/Tracker.pm index fa761ca4ace..bb5af15b4e5 100644 --- a/usr.sbin/pkg_add/OpenBSD/Tracker.pm +++ b/usr.sbin/pkg_add/OpenBSD/Tracker.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Tracker.pm,v 1.3 2009/10/16 18:29:43 espie Exp $ +# $OpenBSD: Tracker.pm,v 1.4 2009/10/19 14:07:26 espie Exp $ # # Copyright (c) 2009 Marc Espie <espie@openbsd.org> # @@ -50,18 +50,26 @@ sub add_sets return $self; } -sub mark_installed +sub remove_set { my ($self, $set) = @_; for my $n ($set->newer) { delete $self->{to_install}->{$n->pkgname}; - $self->{installed}->{$n->pkgname} = 1; } for my $n ($set->older) { delete $self->{to_update}->{$n->pkgname}; } } +sub mark_installed +{ + my ($self, $set) = @_; + for my $n ($set->newer) { + $self->{installed}->{$n->pkgname} = 1; + } + $self->remove_set($set); +} + sub is_installed { my ($self, $pkg) = @_; diff --git a/usr.sbin/pkg_add/OpenBSD/UpdateSet.pm b/usr.sbin/pkg_add/OpenBSD/UpdateSet.pm index ce651f2e8ac..a8c38d0c13c 100644 --- a/usr.sbin/pkg_add/OpenBSD/UpdateSet.pm +++ b/usr.sbin/pkg_add/OpenBSD/UpdateSet.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: UpdateSet.pm,v 1.9 2009/10/15 10:45:47 espie Exp $ +# $OpenBSD: UpdateSet.pm,v 1.10 2009/10/19 14:07:26 espie Exp $ # # Copyright (c) 2007 Marc Espie <espie@openbsd.org> # @@ -267,6 +267,28 @@ sub from_location return $set; } +# Merge several updatesets together +sub merge +{ + my ($self, $tracker, @sets) = @_; + # Apparently simple, just add the missing parts + for my $set (@sets) { + for my $p ($set->newer) { + $self->add_newer($p); + } + for my $p ($set->older) { + $self->add_older($p); + } + # BUT XXX tell the tracker we killed the set + $tracker->remove_set($set); + # ... and mark it as already done + $set->{finished} = 1; + } + # then regen tracker info for $self + $tracker->add_set($self); + return $self; +} + package OpenBSD::PackingList; sub compute_size { |