12 def depglob(pool, name, globname, globdep)
13 id = pool.str2id(name, 0)
16 providers = pool.providers(id)
17 if globname && providers.find {|s| s.nameid == id }
18 return [ pool.Job(Solv::Job::SOLVER_SOLVABLE_NAME, id) ]
21 puts "[using capability match for '#{name}']" if globname && globdep
22 return [ pool.Job(Solv::Job::SOLVER_SOLVABLE_PROVIDES, id) ]
25 return [] unless name =~ /[\[*?]/;
28 for d in pool.Dataiterator(0, Solv::SOLVABLE_NAME, name, Solv::Dataiterator::SEARCH_GLOB)
30 idmatches[s.nameid] = 1 if s.installable?
33 return idmatches.keys.sort.collect { |id| pool.Job(Solv::Job::SOLVER_SOLVABLE_NAME, id) }
37 idmatches = pool.matchprovidingids(name, Solv::Dataiterator::SEARCH_GLOB);
39 puts "[using capability match for '#{name}']"
40 return idmatches.sort.collect { |id| pool.Job(Solv::Job::SOLVER_SOLVABLE_PROVIDES, id) }
47 pool = Solv::Pool.new()
48 repo = pool.add_repo("TEST")
50 repo.add_solv("/var/cache/solv/@System.solv", 0);
53 pool.createwhatprovides
54 jobs = depglob(pool, ARGV[0], true, true)
56 job.how |= Solv::Job::SOLVER_ERASE
59 problems = solver.solve(jobs)
60 for problem in problems
61 puts "Problem #{problem.id}:"
62 puts problem.findproblemrule.info.problemstr
63 solutions = problem.solutions
64 for solution in solutions
65 puts " Solution #{solution.id}:"
66 elements = solution.elements
67 for element in elements:
68 puts " - type #{element.type}"