From: Michael Schroeder Date: Mon, 4 Feb 2013 16:41:31 +0000 (+0100) Subject: reuse solver in examples X-Git-Tag: BASE-SuSE-Code-12_3-Branch~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=460454535325e5b00c78f9f30afa3bc67e3f6038;p=thirdparty%2Flibsolv.git reuse solver in examples --- diff --git a/examples/p5solv b/examples/p5solv index e02d6da4..324d30df 100755 --- a/examples/p5solv +++ b/examples/p5solv @@ -617,11 +617,11 @@ for my $job (@jobs) { $job->{'how'} ^= $solv::Job::SOLVER_UPDATE ^ $solv::Job::SOLVER_INSTALL if $cmd eq 'up' && $job->isemptyupdate(); } -my $solver; +my $solver = $pool->Solver(); +$solver->set_flag($solv::Solver::SOLVER_FLAG_SPLITPROVIDES, 1); +$solver->set_flag($solv::Solver::SOLVER_FLAG_ALLOW_UNINSTALL, 1) if $cmd eq 'erase'; + while (1) { - $solver = $pool->Solver(); - $solver->set_flag($solv::Solver::SOLVER_FLAG_SPLITPROVIDES, 1); - $solver->set_flag($solv::Solver::SOLVER_FLAG_ALLOW_UNINSTALL, 1) if $cmd eq 'erase'; my @problems = $solver->solve(\@jobs); last unless @problems; for my $problem (@problems) { diff --git a/examples/pysolv b/examples/pysolv index d7fc9bde..18327d7c 100755 --- a/examples/pysolv +++ b/examples/pysolv @@ -689,7 +689,7 @@ for arg in args: jobs.append(pool.Job(Job.SOLVER_SOLVABLE, cmdlinerepo['packages'][arg])) else: flags = Selection.SELECTION_NAME|Selection.SELECTION_PROVIDES|Selection.SELECTION_GLOB - flags |= Selection.SELECTION_CANON|Selection.SELECTION_DOTARCH|Selection.SELECTION_REL + flags |= Selection.SELECTION_CANON|Selection.SELECTION_DOTARCH|Selection.SELECTION_REL if len(arg) and arg[0] == '/': flags |= Selection.SELECTION_FILELIST if cmd == 'erase': @@ -752,12 +752,12 @@ for job in jobs: job.how |= Job.SOLVER_CLEANDEPS #pool.set_debuglevel(2) -solver = None +solver = pool.Solver() +solver.set_flag(Solver.SOLVER_FLAG_SPLITPROVIDES, 1); +if cmd == 'erase': + solver.set_flag(Solver.SOLVER_FLAG_ALLOW_UNINSTALL, 1); + while True: - solver = pool.Solver() - solver.set_flag(Solver.SOLVER_FLAG_SPLITPROVIDES, 1); - if cmd == 'erase': - solver.set_flag(Solver.SOLVER_FLAG_ALLOW_UNINSTALL, 1); problems = solver.solve(jobs) if not problems: break diff --git a/examples/rbsolv b/examples/rbsolv index b91bbaec..3c87d3db 100755 --- a/examples/rbsolv +++ b/examples/rbsolv @@ -629,12 +629,12 @@ for job in jobs job.how ^= Solv::Job::SOLVER_UPDATE ^ Solv::Job::SOLVER_INSTALL if cmd == 'up' and job.isemptyupdate? end -solver = nil +solver = pool.Solver +solver.set_flag(Solv::Solver::SOLVER_FLAG_SPLITPROVIDES, 1) +solver.set_flag(Solv::Solver::SOLVER_FLAG_ALLOW_UNINSTALL, 1) if cmd == 'erase' #pool.set_debuglevel(1) + while true - solver = pool.Solver - solver.set_flag(Solv::Solver::SOLVER_FLAG_SPLITPROVIDES, 1) - solver.set_flag(Solv::Solver::SOLVER_FLAG_ALLOW_UNINSTALL, 1) if cmd == 'erase' problems = solver.solve(jobs) break if problems.empty? for problem in problems diff --git a/examples/solv.c b/examples/solv.c index 0ef5daa2..4daa5724 100644 --- a/examples/solv.c +++ b/examples/solv.c @@ -2833,17 +2833,17 @@ main(int argc, char **argv) #if defined(ENABLE_RPMDB) && (defined(SUSE) || defined(FEDORA)) rerunsolver: #endif + solv = solver_create(pool); + solver_set_flag(solv, SOLVER_FLAG_SPLITPROVIDES, 1); + if (mainmode == MODE_ERASE) + solver_set_flag(solv, SOLVER_FLAG_ALLOW_UNINSTALL, 1); /* don't nag */ + solver_set_flag(solv, SOLVER_FLAG_BEST_OBEY_POLICY, 1); + for (;;) { Id problem, solution; int pcnt, scnt; - solv = solver_create(pool); - solver_set_flag(solv, SOLVER_FLAG_SPLITPROVIDES, 1); - if (mainmode == MODE_ERASE) - solver_set_flag(solv, SOLVER_FLAG_ALLOW_UNINSTALL, 1); /* don't nag */ - solver_set_flag(solv, SOLVER_FLAG_BEST_OBEY_POLICY, 1); - if (!solver_solve(solv, &job)) break; pcnt = solver_problem_count(solv); @@ -2894,8 +2894,6 @@ rerunsolver: continue; solver_take_solution(solv, problem, take, &job); } - solver_free(solv); - solv = 0; } trans = solver_create_transaction(solv); @@ -3149,8 +3147,8 @@ rerunsolver: fclose(newpkgsfps[i]); newpkgsfps = solv_free(newpkgsfps); solver_free(solv); + solv = 0; pool_add_fileconflicts_deps(pool, &conflicts); - pool_createwhatprovides(pool); /* Hmm... */ goto rerunsolver; } }