From: Michael Schroeder Date: Wed, 11 Jan 2012 15:15:55 +0000 (+0100) Subject: - cleanup bindings example code a bit X-Git-Tag: BASE-SuSE-Code-12_2-Branch~208 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=879073e2808d5e63b2bc863066a03d5cd990512f;p=platform%2Fupstream%2Flibsolv.git - cleanup bindings example code a bit --- diff --git a/bindings/solv.i b/bindings/solv.i index 2a47ef0..0aa9105 100644 --- a/bindings/solv.i +++ b/bindings/solv.i @@ -1871,11 +1871,15 @@ typedef struct { return new_XSolvable(e->solv->pool, e->rp); } SWIGINTERN int Solutionelement_jobidx_get(Solutionelement *e) { + if (e->type != SOLVER_SOLUTION_JOB) + return -1; return (e->p - 1) / 2; } %} %newobject Job; Job *Job() { + if ($self->type == SOLVER_SOLUTION_JOB) + return new_Job($self->solv->pool, SOLVER_NOOP, 0); if ($self->type == SOLVER_SOLUTION_INFARCH || $self->type == SOLVER_SOLUTION_DISTUPGRADE) return new_Job($self->solv->pool, SOLVER_INSTALL|SOLVER_SOLVABLE, $self->p); if ($self->type == SOLVER_SOLUTION_REPLACE || $self->type == SOLVER_SOLUTION_REPLACE_DOWNGRADE || $self->type == SOLVER_SOLUTION_REPLACE_ARCHCHANGE || $self->type == SOLVER_SOLUTION_REPLACE_VENDORCHANGE) diff --git a/examples/p5solv b/examples/p5solv index 4de66cc..7aeb79f 100755 --- a/examples/p5solv +++ b/examples/p5solv @@ -772,29 +772,8 @@ if ($cmd eq 'install' || $cmd eq 'erase' || $cmd eq 'up' || $cmd eq 'dup' || $cm my @solutions = $problem->solutions(); for my $solution (@solutions) { print " Solution $solution->{'id'}:\n"; - for my $element ($solution->elements()) { - my $etype = $element->{'type'}; - if ($etype == $solv::Solver::SOLVER_SOLUTION_JOB) { - print " - do not ask to ".$jobs[$element->{'jobidx'}]->str()."\n"; - } elsif ($etype == $solv::Solver::SOLVER_SOLUTION_INFARCH) { - if ($element->{'solvable'}->isinstalled()) { - print " - keep ".$element->{'solvable'}->str()." despite the inferior architecture\n"; - } else { - print " - install ".$element->{'solvable'}->str()." despite the inferior architecture\n"; - } - } elsif ($etype == $solv::Solver::SOLVER_SOLUTION_DISTUPGRADE) { - if ($element->{'solvable'}->isinstalled()) { - print " - keep obsolete ".$element->{'solvable'}->str()."\n"; - } else { - print " - install ".$element->{'solvable'}->str()." from excluded repository\n"; - } - } elsif ($etype == $solv::Solver::SOLVER_SOLUTION_REPLACE) { - print " - allow replacement of ".$element->{'solvable'}->str()." with ".$element->{'replacement'}->str()."\n"; - } elsif ($etype == $solv::Solver::SOLVER_SOLUTION_ERASE) { - print " - allow deinstallation of ".$element->{'solvable'}->str()."\n"; - } else { - print " - allow something else\n"; - } + for my $element ($solution->elements(1)) { + print " - ".$element->str()."\n"; } print "\n"; } @@ -809,11 +788,10 @@ if ($cmd eq 'install' || $cmd eq 'erase' || $cmd eq 'up' || $cmd eq 'dup' || $cm exit(1) if $sol eq 'q'; my $solution = $solutions[$sol - 1]; for my $element ($solution->elements()) { - my $etype = $element->{'type'}; - if ($etype == $solv::Solver::SOLVER_SOLUTION_JOB) { - $jobs[$element->{'jobidx'}] = $pool->Job($solv::Job::SOLVER_NOOP, 0); + my $newjob = $element->Job(); + if ($element->{'type'} == $solv::Solver::SOLVER_SOLUTION_JOB) { + $jobs[$element->{'jobidx'}] = $newjob; } else { - my $newjob = $element->Job(); push @jobs, $newjob if $newjob && !grep {$_ == $newjob} @jobs; } } diff --git a/examples/pysolv b/examples/pysolv index a63c5e4..7c628da 100755 --- a/examples/pysolv +++ b/examples/pysolv @@ -848,14 +848,14 @@ if cmd == 'install' or cmd == 'erase' or cmd == 'up' or cmd == 'dup' or cmd == ' solver = None while True: solver = pool.Solver() - solver.set_flag(Solver.SOLVER_FLAG_IGNORE_ALREADY_RECOMMENDED, 1); - solver.set_flag(Solver.SOLVER_FLAG_SPLITPROVIDES, 1); + solver.set_flag(Solver.SOLVER_FLAG_IGNORE_ALREADY_RECOMMENDED, 1); + solver.set_flag(Solver.SOLVER_FLAG_SPLITPROVIDES, 1); if cmd == 'erase': - solver.set_flag(Solver.SOLVER_FLAG_ALLOW_UNINSTALL, 1); + solver.set_flag(Solver.SOLVER_FLAG_ALLOW_UNINSTALL, 1); if cmd == 'dup' and len(jobs) == 1 and jobs[0].how == (Job.SOLVER_DISTUPGRADE | Job.SOLVER_SOLVABLE_ALL): - solver.set_flag(Solver.SOLVER_FLAG_ALLOW_DOWNGRADE, 1); - solver.set_flag(Solver.SOLVER_FLAG_ALLOW_VENDORCHANGE, 1); - solver.set_flag(Solver.SOLVER_FLAG_ALLOW_ARCHCHANGE, 1); + solver.set_flag(Solver.SOLVER_FLAG_ALLOW_DOWNGRADE, 1); + solver.set_flag(Solver.SOLVER_FLAG_ALLOW_VENDORCHANGE, 1); + solver.set_flag(Solver.SOLVER_FLAG_ALLOW_ARCHCHANGE, 1); problems = solver.solve(jobs) if not problems: break @@ -867,36 +867,9 @@ if cmd == 'install' or cmd == 'erase' or cmd == 'up' or cmd == 'dup' or cmd == ' solutions = problem.solutions() for solution in solutions: print " Solution %d:" % solution.id - elements = solution.elements() + elements = solution.elements(True) for element in elements: - etype = element.type - if etype == Solver.SOLVER_SOLUTION_JOB: - print " - do not ask to", jobs[element.jobidx] - elif etype == Solver.SOLVER_SOLUTION_INFARCH: - if element.solvable.isinstalled(): - print " - keep %s despite the inferior architecture" % element.solvable - else: - print " - install %s despite the inferior architecture" % element.solvable - elif etype == Solver.SOLVER_SOLUTION_DISTUPGRADE: - if element.solvable.isinstalled(): - print " - keep obsolete %s" % element.solvable - else: - print " - install %s from excluded repository" % element.solvable - elif etype == Solver.SOLVER_SOLUTION_REPLACE: - illegal = element.illegalreplace() - if illegal & solver.POLICY_ILLEGAL_DOWNGRADE: - print " - allow downgrade of %s to %s" % (element.solvable, element.replacement) - if illegal & solver.POLICY_ILLEGAL_ARCHCHANGE: - print " - allow architecture change of %s to %s" % (element.solvable, element.replacement) - if illegal & solver.POLICY_ILLEGAL_VENDORCHANGE: - if element.replacement.vendorid: - print " - allow vendor change from '%s' (%s) to '%s' (%s)" % (element.solvable.vendor, element.solvable, element.replacement.vendor, element.replacement) - else: - print " - allow vendor change from '%s' (%s) to no vendor (%s)" % (element.solvable.vendor, element.solvable, element.replacement) - if illegal == 0: - print " - allow replacement of %s with %s" % (element.solvable, element.replacement) - elif etype == Solver.SOLVER_SOLUTION_ERASE: - print " - allow deinstallation of %s" % element.solvable + print " - %s" % element.str print sol = '' while not (sol == 's' or sol == 'q' or (sol.isdigit() and int(sol) >= 1 and int(sol) <= len(solutions))): @@ -909,11 +882,10 @@ if cmd == 'install' or cmd == 'erase' or cmd == 'up' or cmd == 'dup' or cmd == ' sys.exit(1) solution = solutions[int(sol) - 1] for element in solution.elements(): - etype = element.type - if etype == Solver.SOLVER_SOLUTION_JOB: - jobs[element.jobidx] = pool.Job(Job.SOLVER_NOOP, 0) + newjob = element.Job() + if element.type == Solver.SOLVER_SOLUTION_JOB: + jobs[element.jobidx] = newjob else: - newjob = element.Job() if newjob and newjob not in jobs: jobs.append(newjob) diff --git a/examples/rbsolv b/examples/rbsolv index ef6f021..a53f191 100755 --- a/examples/rbsolv +++ b/examples/rbsolv @@ -790,11 +790,11 @@ if cmd == 'install' || cmd == 'erase' || cmd == 'up' || cmd == 'dup' || cmd == ' abort if sol == 'q' solution = solutions[sol.to_i - 1] for element in solution.elements + newjob = element.Job() if element.type == Solv::Solver::SOLVER_SOLUTION_JOB - jobs[element.jobidx] = pool.Job(Solv::Job::SOLVER_NOOP, 0) + jobs[element.jobidx] = newjob else - newjob = element.Job() - jobs.push(newjob) if newjob && !jobs.find {|j| j.how == newjob.how && j.what == newjob.what} + jobs.push(newjob) if newjob && !jobs.include?(newjob) end end end