class Repo_rpmmd < Repo_generic
def find(what)
- di = @handle.Dataiterator(Solv::SOLVID_META, Solv::REPOSITORY_REPOMD_TYPE, what, Solv::Dataiterator::SEARCH_STRING)
+ di = @handle.Dataiterator_meta(Solv::REPOSITORY_REPOMD_TYPE, what, Solv::Dataiterator::SEARCH_STRING)
di.prepend_keyname(Solv::REPOSITORY_REPOMD)
for d in di
dp = d.parentpos()
class Repo_susetags < Repo_generic
def find(what)
- di = @handle.Dataiterator(Solv::SOLVID_META, Solv::SUSETAGS_FILE_NAME, what, Solv::Dataiterator::SEARCH_STRING)
+ di = @handle.Dataiterator_meta(Solv::SUSETAGS_FILE_NAME, what, Solv::Dataiterator::SEARCH_STRING)
di.prepend_keyname(Solv::SUSETAGS_FILE)
for d in di
dp = d.parentpos()
@handle.add_content(f, 0)
f.close
puts "fetching"
- defvendorid = @handle.lookup_id(Solv::SOLVID_META, Solv::SUSETAGS_DEFAULTVENDOR)
- descrdir = @handle.lookup_str(Solv::SOLVID_META, Solv::SUSETAGS_DESCRDIR)
+ defvendorid = @handle.meta.lookup_id(Solv::SUSETAGS_DEFAULTVENDOR)
+ descrdir = @handle.meta.lookup_str(Solv::SUSETAGS_DESCRDIR)
descrdir = "suse/setup/descr" unless descrdir
(filename, filechksum) = find('packages.gz')
(filename, filechksum) = find('packages') unless filename
def add_exts
repodata = @handle.add_repodata(0)
- di = @handle.Dataiterator(Solv::SOLVID_META, Solv::SUSETAGS_FILE_NAME, nil, 0)
+ di = @handle.Dataiterator_meta(Solv::SUSETAGS_FILE_NAME, nil, 0)
di.prepend_keyname(Solv::SUSETAGS_FILE)
for d in di
filename = d.str
return true
end
puts "fetching]\n"
- defvendorid = @handle.lookup_id(Solv::SOLVID_META, Solv::SUSETAGS_DEFAULTVENDOR)
- descrdir = @handle.lookup_str(Solv::SOLVID_META, Solv::SUSETAGS_DESCRDIR)
+ defvendorid = @handle.meta.lookup_id(Solv::SUSETAGS_DEFAULTVENDOR)
+ descrdir = @handle.meta.lookup_str(Solv::SUSETAGS_DESCRDIR)
descrdir = "suse/setup/descr" unless descrdir
filechksum = repodata.lookup_checksum(Solv::SOLVID_META, Solv::SUSETAGS_FILE_CHECKSUM)
f = download("#{descrdir}/#{filename}", true, filechksum)
end
def packagespath()
- datadir = @handle.lookup_str(Solv::SOLVID_META, Solv::SUSETAGS_DATADIR)
+ datadir = @handle.meta.lookup_str(Solv::SUSETAGS_DATADIR)
datadir = "suse" unless datadir
return datadir + '/'
end
if @handle.respond_to? :add_products
@handle.add_products("/etc/products.d", Solv::Repo::REPO_NO_INTERNALIZE)
end
- @handle.add_rpmdb(nil, Solv::Repo::REPO_REUSE_REPODATA)
+ f = Solv::xfopen(cachepath())
+ @handle.add_rpmdb_reffp(f, Solv::Repo::REPO_REUSE_REPODATA)
+ f.close
writecachedrepo(nil)
return true
end
args = ARGV
cmd = args.shift
-cmdabbrev = { 'li' => 'list', 'in' => 'install', 'rm' => 'erase',
+cmdabbrev = { 'ls' => 'list', 'in' => 'install', 'rm' => 'erase',
've' => 'verify', 'se' => 'search' }
cmd = cmdabbrev[cmd] if cmdabbrev.has_key?(cmd)
for reposdir in reposdirs do
next unless FileTest.directory?(reposdir)
for reponame in Dir["#{reposdir}/*.repo"].sort do
- cfg = IniFile.new(reponame)
+ cfg = IniFile.load(reponame)
cfg.each_section do |ali|
repoattr = { 'alias' => ali, 'enabled' => 0, 'priority' => 99, 'autorefresh' => 1, 'type' => 'rpm-md', 'metadata_expire' => 900}
repoattr.update(cfg[ali])
if cmd == 'search'
pool.createwhatprovides()
sel = pool.Selection
- for di in pool.Dataiterator(0, Solv::SOLVABLE_NAME, args[0], Solv::Dataiterator::SEARCH_SUBSTRING | Solv::Dataiterator::SEARCH_NOCASE)
+ for di in pool.Dataiterator(Solv::SOLVABLE_NAME, args[0], Solv::Dataiterator::SEARCH_SUBSTRING | Solv::Dataiterator::SEARCH_NOCASE)
sel.add_raw(Solv::Job::SOLVER_SOLVABLE, di.solvid)
end
for s in sel.solvables
jobs = []
for arg in args
- flags = Solv::Selection::SELECTION_NAME | Solv::Selection::SELECTION_PROVIDES|Solv::Selection::SELECTION_GLOB
+ flags = Solv::Selection::SELECTION_NAME | Solv::Selection::SELECTION_PROVIDES | Solv::Selection::SELECTION_GLOB
flags |= Solv::Selection::SELECTION_CANON | Solv::Selection::SELECTION_DOTARCH | Solv::Selection::SELECTION_REL
if arg =~ /^\//
flags |= Solv::Selection::SELECTION_FILELIST
end
if jobs.empty? && (cmd == 'up' || cmd == 'dup' || cmd == 'verify')
- sel = pool.Selection()
- sel.add_raw(Solv::Job::SOLVER_SOLVABLE_ALL, 0)
+ sel = pool.Selection_all()
jobs += sel.jobs(cmdactionmap[cmd])
end
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
- puts "Problem #{problem.id}:"
- puts problem.findproblemrule.info.problemstr
+ puts "Problem #{problem.id}/#{problems.count}:"
+ puts problem
solutions = problem.solutions
for solution in solutions
puts " Solution #{solution.id}:"
end
puts "\nTransaction summary:\n"
-for cl in trans.classify()
+for cl in trans.classify(Solv::Transaction::SOLVER_TRANSACTION_SHOW_OBSOLETES | Solv::Transaction::SOLVER_TRANSACTION_OBSOLETE_IS_UPGRADE)
if cl.type == Solv::Transaction::SOLVER_TRANSACTION_ERASE
puts "#{cl.count} erased packages:"
elsif cl.type == Solv::Transaction::SOLVER_TRANSACTION_INSTALL
elsif cl.type == Solv::Transaction::SOLVER_TRANSACTION_UPGRADED
puts "#{cl.count} upgraded packages:"
elsif cl.type == Solv::Transaction::SOLVER_TRANSACTION_VENDORCHANGE
- puts "#{cl.count} vendor changes from '#{cl.fromdep}' to '#{cl.todep}':"
+ puts "#{cl.count} vendor changes from '#{cl.fromstr}' to '#{cl.tostr}':"
elsif cl.type == Solv::Transaction::SOLVER_TRANSACTION_ARCHCHANGE
- puts "#{cl.count} arch changes from '#{cl.fromdep}' to '#{cl.todep}':"
+ puts "#{cl.count} arch changes from '#{cl.fromstr}' to '#{cl.tostr}':"
else
next
end
end
puts "install size change: #{trans.calc_installsizechange()} K\n\n"
-while true:
+while true
print("OK to continue (y/n)? ")
STDOUT.flush
yn = STDIN.gets.strip
break if yn == 'y'
- abort if yn == 'n'
+ abort if yn == 'n' || yn == 'q'
end
-newpkgs = trans.newpackages()
+newpkgs = trans.newsolvables()
newpkgsfp = {}
if !newpkgs.empty?
downloadsize = 0
puts "Committing transaction:"
puts
-trans.order(0)
+trans.order()
for p in trans.steps
steptype = trans.steptype(p, Solv::Transaction::SOLVER_TRANSACTION_RPM_ONLY)
if steptype == Solv::Transaction::SOLVER_TRANSACTION_ERASE