Move default rpm groups loading to Pkg, call it only once.

git-svn-id: svn+ssh://rpmlint.zarb.org/home/projects/rpmlint/svn/trunk@1496 9bc8b190-ac0f-0410-8968-dc7d1f502856
This commit is contained in:
Ville Skyttä 2009-01-21 23:01:18 +00:00
parent 3b5643abd5
commit 0dcb48e043
4 changed files with 20 additions and 24 deletions

18
Pkg.py
View File

@ -161,6 +161,24 @@ def mktemp():
tmpfile = os.fdopen(tmpfd, 'w')
return tmpfile, tmpname
def get_default_valid_rpmgroups(filename = ""):
""" Get the default rpm group from filename, or from the rpm package if no
filename is given"""
groups = []
if not filename:
p = InstalledPkg('rpm')
filename = filter(lambda x: x.endswith('/GROUPS'), p.files().keys())[0]
if filename and os.path.exists(filename):
fobj = open(filename)
try:
groups = fobj.read().strip().splitlines()
finally:
fobj.close()
if not 'Development/Debug' in groups:
groups.append('Development/Debug')
groups.sort()
return groups
# classes representing package
class Pkg:

View File

@ -8,12 +8,12 @@
#############################################################################
from Filter import *
from Util import get_default_valid_rpmgroups
import AbstractCheck
import Pkg
import re
import sys
import Config
from TagsCheck import VALID_GROUPS
# Don't check for hardcoded library paths in biarch packages
DEFAULT_BIARCH_PACKAGES = '^(gcc|glibc)'
@ -22,7 +22,6 @@ DEFAULT_BIARCH_PACKAGES = '^(gcc|glibc)'
# their noarch files in /usr/lib/<package>/*, or packages that can't
# be installed on biarch systems
DEFAULT_HARDCODED_LIB_PATH_EXCEPTIONS = '/lib/(modules|cpp|perl5|rpm|hotplug|firmware)($|[\s/,])'
VALID_GROUPS = Config.getOption('ValidGroups', get_default_valid_rpmgroups())
patch_regex = re.compile("^Patch(\d*)\s*:\s*([^\s]+)", re.IGNORECASE)
applied_patch_regex = re.compile("^%patch(\d*)")
applied_patch_p_regex = re.compile("\s-P\s+(\d+)\\b")

View File

@ -8,7 +8,6 @@
#############################################################################
from Filter import *
from Util import get_default_valid_rpmgroups
import AbstractCheck
import FilesCheck
import Pkg
@ -371,7 +370,7 @@ BAD_WORDS = {
DEFAULT_INVALID_REQUIRES = ('^is$', '^not$', '^owned$', '^by$', '^any$', '^package$', '^libsafe\.so\.')
VALID_GROUPS = Config.getOption('ValidGroups', get_default_valid_rpmgroups())
VALID_GROUPS = Config.getOption('ValidGroups', Pkg.get_default_valid_rpmgroups())
VALID_LICENSES = Config.getOption('ValidLicenses', DEFAULT_VALID_LICENSES)
INVALID_REQUIRES = map(lambda x: re.compile(x), Config.getOption('InvalidRequires', DEFAULT_INVALID_REQUIRES))
packager_regex = re.compile(Config.getOption('Packager'))

20
Util.py
View File

@ -1,20 +0,0 @@
import Pkg
import os.path
def get_default_valid_rpmgroups(filename = ""):
""" Get the default rpm group from filename, or from rpm package if no
filename is given"""
groups = []
if not filename:
p = Pkg.InstalledPkg('rpm')
filename = filter(lambda x: x.endswith('/GROUPS'), p.files().keys())[0]
if filename and os.path.exists(filename):
fobj = open(filename)
try:
groups = fobj.read().strip().splitlines()
finally:
fobj.close()
if not 'Development/Debug' in groups:
groups.append('Development/Debug')
groups.sort()
return groups