import re
default_arch='x86_64'
-known_arch = ['i386','x86_64']
-default_fcdistro='f12'
-known_fcdistros = [ 'centos5','centos6','f8', 'f9','f10','f11','f12', 'f13', 'f14', 'sl6']
+known_arch = ['i386', 'i686', 'x86_64']
+default_fcdistro='f14'
+known_fcdistros = [ 'centos5','centos6',
+ 'f8', 'f10','f12', 'f14', 'f16', 'f18','f20','f22',
+ 'sl6',
+ # debians
+ 'squeeze','wheezy','jessie',
+ # ubuntus
+ 'oneiric', 'precise', 'quantal', 'raring', 'saucy' ]
default_pldistro='onelab'
-known_keywords=['groupname', 'groupdesc', 'kexclude', 'package', 'group', 'precious', 'junk', 'mirror', ]
+known_keywords=[
+ 'group', 'groupname', 'groupdesc',
+ 'package', 'pip', 'gem',
+ 'nodeyumexclude', 'plcyumexclude', 'yumexclude',
+ 'precious', 'junk', 'mirror',
+]
m_fcdistro_cutter = re.compile('([a-z]+)([0-9]+)')
ok=False
for known in known_fcdistros:
if fcdistro == known:
- (distro,version)=m_fcdistro_cutter.match(fcdistro).groups()
+ try:
+ (distro,version)=m_fcdistro_cutter.match(fcdistro).groups()
+ # debian-like names can't use numbering
+ except:
+ distro=fcdistro
+ version=0
ok=True
if ok:
self.distro=distro
included += i
excluded += e
ok = ok and o
- results = list (set(included).difference(set(excluded)))
+ # avoid set operations that would not preserve order
+ results = [ x for x in included if x not in excluded ]
results = [ x.replace('@arch@',self.arch).\
replace('@fcdistro@',self.fcdistro).\
replace('@pldistro@',self.pldistro) for x in results]
- results.sort()
+ if self.options.sort_results:
+ results.sort()
# default is space-separated
if not self.options.new_line:
print " ".join(results)
usage="Usage: %prog [options] keyword input[...]"
parser=OptionParser (usage=usage)
parser.add_option ('-a','--arch',dest='arch',action='store',default=default_arch,
- help='target arch, e.g. i386 or x86_64')
+ help='target arch, e.g. i386 or x86_64, default=%s'%default_arch)
parser.add_option ('-f','--fcdistro',dest='fcdistro',action='store', default=default_fcdistro,
help='fcdistro, e.g. f12 or centos5')
parser.add_option ('-d','--pldistro',dest='pldistro',action='store', default=default_pldistro,
help='verbose when using qualifiers')
parser.add_option ('-n', '--new-line',dest='new_line',action='store_true',default=False,
help='print outputs separated with newlines rather than with a space')
+ parser.add_option ('-u', '--no-sort',dest='sort_results',default=True,action='store_false',
+ help='keep results in the same order as in the inputs')
(options,args) = parser.parse_args()
if len(args) <=1 :
print >> stderr, 'Unsupported arch',options.arch
parser.print_help(file=stderr)
sys.exit(1)
+ if options.arch == 'i686': options.arch='i386'
if not options.fcdistro in known_fcdistros:
print >> stderr, 'Unsupported fcdistro',options.fcdistro
parser.print_help(file=stderr)