|
|
@ -14,6 +14,7 @@ from cl_utils import runOsCommand,isMount,removeDir,typeFile,pathJoin
|
|
|
|
from shutil import copyfile
|
|
|
|
from shutil import copyfile
|
|
|
|
from cl_template import _terms
|
|
|
|
from cl_template import _terms
|
|
|
|
from subprocess import Popen,PIPE
|
|
|
|
from subprocess import Popen,PIPE
|
|
|
|
|
|
|
|
from cl_fill import fillVars
|
|
|
|
|
|
|
|
|
|
|
|
import threading
|
|
|
|
import threading
|
|
|
|
|
|
|
|
|
|
|
@ -89,6 +90,61 @@ class DistributiveRepository:
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return {}
|
|
|
|
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):
|
|
|
|
def _getdistrinfo(self,filename):
|
|
|
|
"""Get information by distributive"""
|
|
|
|
"""Get information by distributive"""
|
|
|
|
if os.path.isdir(filename):
|
|
|
|
if os.path.isdir(filename):
|
|
|
@ -100,10 +156,10 @@ class DistributiveRepository:
|
|
|
|
d['march']= 'i686'
|
|
|
|
d['march']= 'i686'
|
|
|
|
if d:
|
|
|
|
if d:
|
|
|
|
d['ext'] = 'dir'
|
|
|
|
d['ext'] = 'dir'
|
|
|
|
if "calculate" in d:
|
|
|
|
d["name"] = self._getdistrshortname(filename)
|
|
|
|
d["name"] = d["calculate"]
|
|
|
|
d['ver'] = self._get_from_metapackage(filename,d["name"]) or \
|
|
|
|
if "linuxver" in d:
|
|
|
|
self._get_from_calculate_ini(filename) or \
|
|
|
|
d['ver'] = d['linuxver']
|
|
|
|
"0"
|
|
|
|
return d
|
|
|
|
return d
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
match = self.reDistName.match(filename)
|
|
|
|
match = self.reDistName.match(filename)
|
|
|
@ -127,7 +183,7 @@ class DistributiveRepository:
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
def listdistr(path):
|
|
|
|
def listdistr(path):
|
|
|
|
if pathexists(pathjoin(path,'etc/calculate')):
|
|
|
|
if pathexists(pathjoin(path,'etc/make.profile')):
|
|
|
|
return [path]
|
|
|
|
return [path]
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
# discard inner directories
|
|
|
|
# discard inner directories
|
|
|
|