summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2007-05-17 13:36:22 +0000
committerMarc Espie <espie@cvs.openbsd.org>2007-05-17 13:36:22 +0000
commit75d08106f4156346da597ca3c8f04e4f1444cc68 (patch)
tree730a23d0d3685cff96ae36abe6720db3128a3566
parent55c3d5892e76b52a6f54fad4c7a259ce1c3bb3a0 (diff)
tweak the solver object a bit, now that I have a clearer idea of what
it's going to be used for.
-rw-r--r--usr.sbin/pkg_add/OpenBSD/Dependencies.pm23
-rw-r--r--usr.sbin/pkg_add/pkg_add7
2 files changed, 17 insertions, 13 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Dependencies.pm b/usr.sbin/pkg_add/OpenBSD/Dependencies.pm
index e5fb18af201..6901ca72f39 100644
--- a/usr.sbin/pkg_add/OpenBSD/Dependencies.pm
+++ b/usr.sbin/pkg_add/OpenBSD/Dependencies.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: Dependencies.pm,v 1.30 2007/05/14 18:19:25 espie Exp $
+# $OpenBSD: Dependencies.pm,v 1.31 2007/05/17 13:36:21 espie Exp $
#
# Copyright (c) 2005-2007 Marc Espie <espie@openbsd.org>
#
@@ -35,8 +35,14 @@ sub find_candidate
sub new
{
- my $class = shift;
- bless {to_install => {}, deplist => [], to_register => {} }, $class;
+ my ($class, $plist) = @_;
+ bless {plist => $plist, to_install => {}, deplist => [], to_register => {} }, $class;
+}
+
+sub pkgname
+{
+ my $self = shift;
+ return $self->{plist}->pkgname;
}
sub add_todo
@@ -108,7 +114,7 @@ sub solve_dependency
@candidates = ((grep {$_ eq $dep->{def}} @candidates),
(sort (grep {$_ ne $dep->{def}} @candidates)));
my $choice =
- OpenBSD::Interactive::ask_list('Ambiguous: choose dependency for '.$self->{pkgname}.': ',
+ OpenBSD::Interactive::ask_list('Ambiguous: choose dependency for '.$self->pkgname.': ',
$state->{interactive}, @candidates);
$self->add_new_dep($choice);
return;
@@ -120,17 +126,14 @@ sub solve_dependency
sub solve
{
- my ($self, $state, $handle, @extra) = @_;
- my $plist = $handle->{plist};
+ my ($self, $state, @extra) = @_;
$self->add_todo(@extra);
- $self->{pkgname} = $plist->pkgname;
- for my $dep (@{$plist->{depend}}) {
+ for my $dep (@{$self->{plist}->{depend}}) {
$self->solve_dependency($state, $dep);
}
- $handle->{solved_dependencies} = $self->{to_register};
return @{$self->{deplist}};
}
@@ -138,7 +141,7 @@ sub dump
{
my $self = shift;
if (%{$self->{to_register}}) {
- print "Dependencies for ", $self->{pkgname}, " resolve to: ",
+ print "Dependencies for ", $self->pkgname, " resolve to: ",
join(', ', keys %{$self->{to_register}});
print " (todo: ", join(',', @{$self->{deplist}}), ")"
if @{$self->{deplist}} > 0;
diff --git a/usr.sbin/pkg_add/pkg_add b/usr.sbin/pkg_add/pkg_add
index eb7d07f039f..65f3b54ba5b 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.247 2007/05/14 18:19:25 espie Exp $
+# $OpenBSD: pkg_add,v 1.248 2007/05/17 13:36:21 espie Exp $
#
# Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org>
#
@@ -530,8 +530,9 @@ sub install_package
}
}
if (!defined $handle->{solved_dependencies}) {
- my $solver = OpenBSD::Dependencies::Solver->new;
- my @deps = $solver->solve($state, $handle, @todo);
+ my $solver = OpenBSD::Dependencies::Solver->new($handle->{plist});
+ my @deps = $solver->solve($state, @todo);
+ $handle->{solved_dependencies} = $solver->{to_register};
if ($state->{verbose}) {
$solver->dump;
}