Fix detect directory shortname and version

master3.3
Mike Hiretsky 14 years ago
parent 2bba5332d8
commit 4e5552e62d

@ -14,6 +14,7 @@ from cl_utils import runOsCommand,isMount,removeDir,typeFile,pathJoin
from shutil import copyfile
from cl_template import _terms
from subprocess import Popen,PIPE
from cl_fill import fillVars
import threading
@ -89,6 +90,61 @@ class DistributiveRepository:
else:
return {}
def _get_from_metapackage(self,directory,shortname):
"""Get version from meta package"""
metaPkgs = filter(lambda x:"%s-meta"%shortname.lower() in x,
os.listdir(pathjoin(directory,
'var/db/pkg/app-misc/')))
if metaPkgs:
reFindVer = re.compile("(?<=\-)\d+\.?\d*\.?\d*")
findVer = reFindVer.search(metaPkgs[0])
if findVer:
return findVer.group()
return None
def _get_from_calculate_ini(self,directory):
"""Get version from calculate ini"""
path = pathjoin(directory,'/etc/calculate/calculate.ini')
if os.path.exists(path):
FD = open(path)
data = FD.readlines()
FD.close()
shortNameList = filter(lambda y:y,
map(lambda x:\
len(x.split("="))==2 and\
x.split("=")[0]=="linuxver" and\
x.split("=")[1].strip(), data))
if shortNameList:
return shortNameList[0]
def _getdistrshortname(self,directory='/'):
"""Get distributive shortname"""
makeprofile = pathjoin(directory,'etc/make.profile')
if os.path.exists(makeprofile):
link = os.readlink(makeprofile)
reMakeProfileLink = re.compile('calculate/(desktop|server)/(%s)'%
"|".join(fillVars.dictLinuxName.keys()),re.S)
shortnameSearch = reMakeProfileLink.search(link)
if shortnameSearch:
return shortnameSearch.groups()[1]
path = pathjoin(directory,'etc/calculate/calculate.ini')
if os.path.exists(path):
FD = open(path)
data = FD.readlines()
FD.close()
shortNameList = filter(lambda y:y,
map(lambda x:\
len(x.split("="))==2 and\
x.split("=")[0]=="calculate" and\
x.split("=")[1].strip(), data))
if shortNameList:
return shortNameList[0]
gentooFile = pathjoin(directory,"etc/gentoo-release")
shortName = "Linux"
if os.path.exists(gentooFile):
shortName = "Gentoo"
return shortName
def _getdistrinfo(self,filename):
"""Get information by distributive"""
if os.path.isdir(filename):
@ -100,10 +156,10 @@ class DistributiveRepository:
d['march']= 'i686'
if d:
d['ext'] = 'dir'
if "calculate" in d:
d["name"] = d["calculate"]
if "linuxver" in d:
d['ver'] = d['linuxver']
d["name"] = self._getdistrshortname(filename)
d['ver'] = self._get_from_metapackage(filename,d["name"]) or \
self._get_from_calculate_ini(filename) or \
"0"
return d
else:
match = self.reDistName.match(filename)
@ -127,7 +183,7 @@ class DistributiveRepository:
else:
return True
def listdistr(path):
if pathexists(pathjoin(path,'etc/calculate')):
if pathexists(pathjoin(path,'etc/make.profile')):
return [path]
else:
# discard inner directories

Loading…
Cancel
Save