[DRE-commits] [SCM] pkg-ruby-extras.git branch, master, updated. a95540b18278165a64624b5538f3b3a3339cc077
Antonio Terceiro
terceiro at softwarelivre.org
Fri Jul 29 07:46:40 UTC 2011
The following commit has been merged in the master branch:
commit 6cdbac149aaa31c04960874e861d821fa9907e2d
Author: Antonio Terceiro <terceiro at softwarelivre.org>
Date: Fri Jul 29 00:33:06 2011 -0700
Instead of caching, just make a single rmadison call
This way we do not hammer the qa site with one request for each package.
Just request the data for all packages and then process the data
locally to find out the status of each package.
diff --git a/pkg-overview b/pkg-overview
index 648297d..a7d89a7 100755
--- a/pkg-overview
+++ b/pkg-overview
@@ -31,43 +31,23 @@ module Enumerable
end
end
-$CACHE_DIR = File.join(ENV['HOME'], '.cache', 'pkg-ruby-extras', 'pkg-overview')
-$CACHE_TAG = Time.now.strftime('%y%m%d%H') # keep the cache for 1 hour
-
-def initialize_cache
- FileUtils.mkdir_p($CACHE_DIR)
- Dir.glob(File.join($CACHE_DIR, '*')).each do |f|
- if f !~ /\.#{$CACHE_TAG}$/
- File.unlink(f)
- end
+def rmadison_data(packages)
+ data = {}
+ lines = `rmadison #{packages.join(' ')}`.lines.map(&:strip)
+ if $?.exitstatus != 0
+ puts "ERROR: rmadison failed!"
+ exit(1)
end
-end
-
-def rmadison_to_version(src)
- ok = false
- cache_file = File.join($CACHE_DIR, src + '.' + $CACHE_TAG)
- s = nil
- if File.exists?(cache_file)
- s = File.read(cache_file)
- else
- begin
- s = `rmadison #{src}`
- if s =~ /Internal Server Error/
- STDERR.puts "WARNING: `rmadison #{src}` Failed. Retrying."
- else
- File.open(cache_file, 'w') do |f|
- f.write(s)
- end
- ok = true
- end
- end while not ok
+ rows = lines.map { |line| line.strip.sub(/^\s*/, '').split(/\s+\|\s+/) }
+ packages.each do |pkg|
+ v = rows.select { |row| row[0] == pkg && row[2] == 'sid' && row[3] =~ /source/} \
+ .map { |row| row[1] } \
+ .map { |v| v.gsub(/^[0-9]+:/,'') } \
+ .map { |v| DebVersion::new(v) } \
+ .max
+ data[pkg] = v
end
- return nil if s == ""
- return s.lines.grep(/ sid( |\/).* source/) \
- .map { |l| l.gsub(/^[^|]*\|\s*([^ ]*)\s*\|.*/, '\1').chomp } \
- .map { |v| v.gsub(/^[0-9]+:/,'') } \
- .map { |v| DebVersion::new(v) } \
- .max
+ data
end
def changelog_version(src)
@@ -117,8 +97,6 @@ def compute_status(src, cv, tv, av)
return '0 ERROR: unknown status'
end
-initialize_cache
-
# get source packages from command line, or all available ones of none passed.
source_packages = ARGV.size > 0 ? ARGV : Dir.glob('*/debian/changelog').map { |f| File.dirname(File.dirname(f)) }.sort
#
@@ -129,8 +107,7 @@ tag_ver = source_packages.pmap { |src| { src => tag_version(src) } }.hash_merge
changelog_ver = source_packages.pmap { |src| { src => changelog_version(src) } }.hash_merge
# get versions in archive
-archive_ver = source_packages.pmap(10) { |src| { src => rmadison_to_version(src) } }.hash_merge
-#archive_ver = {}
+archive_ver = rmadison_data(source_packages)
status = source_packages.pmap { |src| { src => compute_status(src, changelog_ver[src], tag_ver[src], archive_ver[src]) } }.hash_merge
--
pkg-ruby-extras.git
More information about the Pkg-ruby-extras-commits
mailing list