- iterators for solver decisions
[platform/upstream/libsolv.git] / examples / ruby / basic.rb
1 require 'satsolver'
2
3 include Satsolver
4
5 pool = Pool.new
6 #puts pool.methods.sort
7
8 #s = pool.add_empty_source
9
10 f = File.open('../../testsuite/data.libzypp/basic-exercises/exercise-20-packages.solv', 'r')
11 s = pool.add_source_solv(f, 'foo')
12
13 f = File.open('../../testsuite/data.libzypp/basic-exercises/exercise-20-system.solv', 'r')
14 installed = pool.add_source_solv(f, 'system')
15
16 pool.each_source do |repo|
17   puts repo.name
18 end
19
20 s.each_solvable do |r|
21   puts r
22 end
23
24 q = Queue.new
25 puts q.empty?
26
27 r = pool.select_solvable(s, 'G')
28 puts r
29
30 # push one command and one resolvable to the queue
31 q.push(SOLVER_INSTALL_SOLVABLE)
32 q.push(r)
33
34 pool.prepare
35 pool.promoteepoch = true
36
37 # no packages installed so use add_empty_source
38 solv = Solver.new(pool, installed)
39
40 solv.fixsystem = 0
41 solv.updatesystem = 0
42 solv.allowdowngrade = 0
43 solv.allowuninstall = 0
44 solv.noupdateprovide = 0
45
46 # solve the queue
47 solv.solve(q)
48
49 #solv.print_decisions
50
51 solv.each_to_install do |i|
52   puts "to install #{i}"
53 end
54
55 solv.each_to_remove do |i|
56   puts "to remove #{i}"
57 end