require 'rexml/document' include REXML out = {} freedesktop = REXML::Document.new( File.open( 'freedesktop-2.15.92.modules' ) ) gnome = REXML::Document.new( File.open( 'gnome-2.15.92.modules' ) ) gnutls = REXML::Document.new( File.open( 'gnutls-2.15.92.modules' ) ) freedesktop.root.each_element( 'tarball') { |tarball| out[tarball.attributes['id']] = tarball.attributes['version'] } gnome.root.each_element( 'tarball') { |tarball| out[tarball.attributes['id']] = tarball.attributes['version'] } #gnutls.root.each_element( 'tarball') { |tarball| # gnutls_out[tarball.attributes[id]] = tarball.attributes[version] #} def find_version(t) File.open(t) do |file| while line = file.gets.strip! if line.include? "version" str = line.split[2] return str.delete("'") break end end end end def normalize_pkg_name (str) case str when "mozilla" return "firefox" when "libsigc++2" return "libsigc++" when "gnome-control-center" return "control-center" when "gconf" return "GConf" when "gtk+" return "gtk" when "gdm2" return "gdm" when "hal-0-5-7" return "hal" when "gnomemm/libgnomeuimm" return "libgnomeuimm" when "gnomemm/libglademm" return "libglademm" when "gnomemm/libgnomecanvasmm" return "libgnomecanvasmm" when "gnomemm/gnome-vfsmm" return "gnome-vfsmm" when "gnomemm/libgnomemm" return "libgnomemm" when "gnomemm/gconfmm" return "gconfmm" else return str end end out.each do |pkg| nname = '' target = "/home/am/conary/all-1-devel/" nname << normalize_pkg_name(pkg[0]) target << nname if File.exist?(target) existing = find_version(target << '/' << nname<<'.recipe') if existing == pkg[1] p "#{nname}-#{existing} is up-to-date" else p "#{nname} should be #{pkg[1]} but is #{existing}" end else p "#{nname}-#{pkg[1]} seems missing" end end