Author: kkaempf Date: Sat Dec 22 18:12:45 2007 New Revision: 8142 URL: http://svn.opensuse.org/viewcvs/zypp?rev=8142&view=rev Log: - move repo loading from Repo to Pool: add_solv, add_rpmdb - add Solver class can solve now but result access is still missing Added: trunk/sat-solver/bindings/ruby/tests/solver.rb Modified: trunk/sat-solver/bindings/ruby/tests/repo.rb trunk/sat-solver/bindings/ruby/tests/solvable.rb trunk/sat-solver/bindings/ruby/tests/transaction.rb trunk/sat-solver/bindings/satsolver.i Modified: trunk/sat-solver/bindings/ruby/tests/repo.rb URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/ruby/tests/repo.rb?rev=8142&r1=8141&r2=8142&view=diff ============================================================================== --- trunk/sat-solver/bindings/ruby/tests/repo.rb (original) +++ trunk/sat-solver/bindings/ruby/tests/repo.rb Sat Dec 22 18:12:45 2007 @@ -15,20 +15,17 @@ def test_repo_add pool = SatSolver::Pool.new assert pool - repo = SatSolver::Repo.new( pool, "test" ) - assert repo pool.arch = "i686" - puts repo.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) - puts repo.name - puts repo.size + repo = pool.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) + repo.name = "test" + assert repo.name == "test" + assert repo.size > 0 end def test_deps pool = SatSolver::Pool.new assert pool - repo = SatSolver::Repo.new( pool, "test" ) - assert repo pool.arch = "i686" - puts repo.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) + repo = pool.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) repo.each_solvable{ |s| puts s } Modified: trunk/sat-solver/bindings/ruby/tests/solvable.rb URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/ruby/tests/solvable.rb?rev=8142&r1=8141&r2=8142&view=diff ============================================================================== --- trunk/sat-solver/bindings/ruby/tests/solvable.rb (original) +++ trunk/sat-solver/bindings/ruby/tests/solvable.rb Sat Dec 22 18:12:45 2007 @@ -5,16 +5,16 @@ def show_dep name, deps return unless deps - puts "#{deps.size} #{name}: " + puts " #{deps.size} #{name}: " i = 0 while (i < deps.size) d = deps[i] - puts "#{d.name} : #{d}" + puts "\t#{d.name} : #{d}" i += 1 end -# does not work yet + deps.each { |d| - puts "#{d.name} #{d.op} #{d.evr}" + puts "\t#{d.name} #{d.op} #{d.evr}" } end @@ -22,14 +22,12 @@ def setup @pool = SatSolver::Pool.new assert @pool - @repo = SatSolver::Repo.new( @pool, "test" ) - assert @repo @pool.arch = "i686" - @repo.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) - assert @repo.size > 0 + @pool.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) + assert @pool.size > 0 end def test_solvable - solv = @repo[0] + solv = @pool[2] assert solv puts solv puts "#{solv.id}: #{solv.name}-#{solv.evr}.#{solv.arch}[#{solv.vendor}]" @@ -37,7 +35,7 @@ puts "#{solv.id}: #{solv.name}-#{solv.evr}.#{solv.arch}[#{solv.vendor}]" end def test_deps - @repo.each_solvable{ |s| + @pool.each { |s| puts s show_dep "Provides", s.provides show_dep "Requires", s.requires Added: trunk/sat-solver/bindings/ruby/tests/solver.rb URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/ruby/tests/solver.rb?rev=8142&view=auto ============================================================================== --- trunk/sat-solver/bindings/ruby/tests/solver.rb (added) +++ trunk/sat-solver/bindings/ruby/tests/solver.rb Sat Dec 22 18:12:45 2007 @@ -0,0 +1,24 @@ +$: << "../../../build/bindings/ruby" +# test Solver +require 'test/unit' +require 'SatSolver' + +class SolverTest < Test::Unit::TestCase + def test_solver + pool = SatSolver::Pool.new + assert pool + pool.arch = "i686" + system = pool.add_rpmdb( "/" ) + repo = pool.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) + repo.name = "test" + + transaction = SatSolver::Transaction.new( pool ) + transaction.install( "A" ) + transaction.erase( "xorg-x11" ) + + solver = SatSolver::Solver.new( pool, system ) + solver.allow_uninstall = 1 + solver.solve( transaction ) + solver.print_decisions + end +end Modified: trunk/sat-solver/bindings/ruby/tests/transaction.rb URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/ruby/tests/transaction.rb?rev=8142&r1=8141&r2=8142&view=diff ============================================================================== --- trunk/sat-solver/bindings/ruby/tests/transaction.rb (original) +++ trunk/sat-solver/bindings/ruby/tests/transaction.rb Sat Dec 22 18:12:45 2007 @@ -7,13 +7,21 @@ def test_transaction pool = SatSolver::Pool.new assert pool + pool.arch = "i686" + repo = pool.add_solv( "../../../testsuite/data.libzypp/basic-exercises/exercise-1-packages.solv" ) + repo.name = "test" + puts "repo[0] #{repo[0]}" + puts "repo[1] #{repo[1]}" + transaction = SatSolver::Transaction.new( pool ) assert transaction transaction.install( "foo" ) + transaction.install( repo[0] ) transaction.install( SatSolver::Relation.new( pool, "foo", SatSolver::REL_EQ, "42-7" ) ) transaction.erase( "bar" ) + transaction.erase( repo[1] ) transaction.erase( SatSolver::Relation.new( pool, "bar", SatSolver::REL_EQ, "42-7" ) ) - assert transaction.size == 4 + assert transaction.size == 6 transaction.each { |a| cmd = case a.cmd when SatSolver::INSTALL_SOLVABLE: "install" Modified: trunk/sat-solver/bindings/satsolver.i URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/bindings/satsolver.i?rev=8142&r1=8141&r2=8142&view=diff ============================================================================== --- trunk/sat-solver/bindings/satsolver.i (original) +++ trunk/sat-solver/bindings/satsolver.i Sat Dec 22 18:12:45 2007 @@ -125,6 +125,10 @@ %rename(Transaction) _Transaction; typedef struct _Transaction {} Transaction; +%nodefault solver; +%rename(Solver) solver; +typedef struct solver {} Solver; + /*-------------------------------------------------------------*/ /* Pool */ @@ -177,9 +181,27 @@ * Repo management */ + Repo *add_solv( FILE *fp ) + { + Repo *repo = repo_create( $self, NULL ); + repo_add_solv( repo, fp ); + return repo; + } + + Repo *add_solv( const char *fname ) + { + Repo *repo = repo_create( $self, NULL ); + FILE *fp = fopen( fname, "r"); + if (fp) { + repo_add_solv( repo, fp ); + fclose( fp ); + } + return repo; + } + Repo *add_rpmdb( const char *rootdir ) { - Repo *repo = repo_create( $self, "system" ); + Repo *repo = repo_create( $self, NULL ); repo_add_rpmdb( repo, NULL, rootdir ); return repo; } @@ -222,6 +244,16 @@ Solvable *id2solvable( Id p ) { return pool_id2solvable( $self, p ); } +#if defined(SWIGRUBY) + /* %rename is rejected by swig for [] */ + %alias get_solvable "[]"; +#endif + Solvable *get_solvable( int i ) + { + if (i < 0) return NULL; + if (i >= $self->nsolvables) return NULL; + return $self->solvables + i; + } void each() { Solvable *s; @@ -279,24 +311,22 @@ %extend Repo { Repo( Pool *pool, const char *reponame ) { return repo_create( pool, reponame ); } - int add_solv( FILE *fp ) - { return repo_add_solv( $self, fp ); } - int add_solv( const char *fname ) - { - int result = -1; - FILE *fp = fopen( fname, "r"); - if (fp) { - result = repo_add_solv( $self, fp ); - fclose( fp ); - } - return result; - } int size() { return $self->nsolvables; } const char *name() { return $self->name; } +#if defined(SWIGRUBY) + %rename( "name=" ) set_name( const char *name ); +#endif + void set_name( const char *name ) + { $self->name = name; } int priority() { return $self->priority; } +#if defined(SWIGRUBY) + %rename( "priority=" ) set_priority( int i ); +#endif + void set_priority( int i ) + { $self->priority = i; } Pool *pool() { return $self->pool; } @@ -587,24 +617,65 @@ } -#if 0 - -%include "solver.h" +/*-------------------------------------------------------------*/ +/* Solver */ %extend Solver { - - Solver( Pool *pool, Repo *installed ) { return solver_create(pool, installed); } - ~Solver() { solver_free($self); } - %rename("fix_system") fixsystem; - %rename("update_system") updatesystem; - %rename("allow_downgrade") allowdowngrade; - %rename("allow_uninstall") allowuninstall; - %rename("no_update_provide") noupdateprovide; + Solver( Pool *pool, Repo *installed ) + { return solver_create( pool, installed ); } + ~Solver() + { solver_free( $self ); } + + /* yeah, thats awkward. But %including solver.h and adding lots + of %ignores is even worse ... */ + + int fix_system() + { return $self->fixsystem; } +#if defined(SWIGRUBY) + %rename( "fix_system=" ) set_fix_system( int i ); +#endif + void set_fix_system( int i ) + { $self->fixsystem = i; } + + int update_system() + { return $self->updatesystem; } +#if defined(SWIGRUBY) + %rename( "update_system=" ) set_update_system( int i ); +#endif + void set_update_system( int i ) + { $self->updatesystem = i; } + + int allow_downgrade() + { return $self->allowdowngrade; } +#if defined(SWIGRUBY) + %rename( "allow_downgrade=" ) set_allow_downgrade( int i ); +#endif + void set_allow_downgrade( int i ) + { $self->allowdowngrade = i; } + + int allow_uninstall() + { return $self->allowuninstall; } +#if defined(SWIGRUBY) + %rename( "allow_uninstall=" ) set_allow_uninstall( int i ); +#endif + void set_allow_uninstall( int i ) + { $self->allowuninstall = i; } + + int no_update_provide() + { return $self->noupdateprovide; } +#if defined(SWIGRUBY) + %rename( "no_update_provide=" ) set_no_update_provide( int i ); +#endif + void set_no_update_provide( int i ) + { $self->noupdateprovide = i; } - void solve(Queue *job) { solver_solve($self, job); } - void print_decisions() { printdecisions($self); } + void solve( Transaction *t ) + { solver_solve( $self, &(t->queue)); } + void print_decisions() + { printdecisions( $self ); } +#if 0 void each_to_install() { Id p; @@ -641,8 +712,11 @@ rb_yield(SWIG_NewPointerObj((void*) s, SWIGTYPE_p__Solvable, 0)); } } +#endif }; +#if 0 + %include "repo.h" %include "repo_solv.h" -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org