atratsevskiy
parent 052d94b13a
commit 6fe6e2be73

@ -22,6 +22,7 @@ AUX calculate-lib-3.1.1_alpha2-r1.patch 1801 SHA256 e0fa0a7db2cd8d8fe290d04cbd60
AUX calculate-lib-3.1.1_alpha2-r10.patch 20562 SHA256 d2674a24eb94a14e8cbe87aad5c13e78e0264ed271a543b983675335449615fe SHA512 08106ee48571f9418e95ffa12c82660c0d90238e7f7ba146557839571571a7cfe88ed036b2695994823b762fac5fa7a5b155beea0646535211d884b679b7bd9f WHIRLPOOL ceb6809d46ff6edeae637e2ba44834201aac3f9ce2d91a92b46e94d54e7fddd8761f00f9cf604a0db166bb7af6a0a4e6c5d9d0cf80eb0c4f5cefdd6c88f36c63
AUX calculate-lib-3.1.1_alpha2-r11.patch 21269 SHA256 c09feb8e381fcb50b3a808c63eaa2394cad7c42fd7278485ed4b82e8767e120f SHA512 78763010024f732eb337947c398a648ea3d6d9be3520f3bdc3cf14b0410734c0612c9dc358e76342e3cdd1a09fd8eb40858f32fc1aa0721b8cedfe9418757919 WHIRLPOOL 02ad3f9e26da7f23999943a2ac9f469162f2865636f3a657733684980bb6842d1b67bed72767058831f3bacf5bc3e7fc2d2cd55f8728a201792f13a5ea318755
AUX calculate-lib-3.1.1_alpha2-r12.patch 22543 SHA256 81862826eab75041974935c5b630be51eb69247152984a21c00102d6efd13980 SHA512 b7cde891a0be34f97de1c6c370b8fb025ab48790a3fa118cf4f8d2eb5c16435f27abbd3ad06915a27ccf34470cd7951295ca67d60e1c283978ac63bf7dcb7ec0 WHIRLPOOL a43009855bdc17a88e8be0d266a47b96061ec2a3f8f259a875afd1a7ed84f11c8485ca9be87665db272f7ade28d08581a72617e9e62f62daf8bb2f63ff26dccd
AUX calculate-lib-3.1.1_alpha2-r13.patch 23839 SHA256 dc6fbb8f0c18674c3d2ca38ce142ef5b2dd21290e3d43c5bda25144f190a53cb SHA512 885cd6d8e94c7bfe17e48c5ae7132c5c3d67e3a6cdc0ab7b9bd43889de6e8517f24c855672e3b04c7f9dd38eabe3f19c7962e3d745f06fca8dd99069707cc80a WHIRLPOOL 821c179dd4e3a97a4b8dc9517cbbf15cfdac1c42a83303b037a4ffea24cf41c2119c57143a4857eeece71c5d3e6ad309a3d0e3c097b6203602e1a54e7fd7f3aa
AUX calculate-lib-3.1.1_alpha2-r2.patch 2386 SHA256 2e4616804916e9054fe51e799ecd4a355d8b3ce404c91328b45c4ee2a53be561 SHA512 0c0b49e7c43de8655e6df49805e4cf8e4ee621f6b7f134cc42dc5ac4be4a753f16036c0d7db4763a81ff620a9d3145b892b2c3b47f5863929c0ddf0e8db585e5 WHIRLPOOL 5d6017a88a0a4a12ca4d85a572452ba8ca6dd80292dc009ff3768d4dfbdc39b32b3c293f7df9ffbc3a83cfdb5b412a579b1e80064b2e8ab5163834dacad6304f
AUX calculate-lib-3.1.1_alpha2-r3.patch 4920 SHA256 3d3490321e45744947d70ac1668ae939b1a62fd7644fd2e7a4a9de1b4395bc44 SHA512 9cd94862a5cedb624e5d1e4787464bebfadbef638bd9f678fd24f16d3905d46c1c36f419e5ec63946830058ba74d0d04eeaa69fc62e2aaa59ab4639a134ab5c3 WHIRLPOOL b762a30632f3753c38c8d870d56dc65b7679e3f3308e854259d03f2b977c9d07398f9f730ebe0eefa1f7c8580b5c3e394411edb4488b16e210f4532990e8df41
AUX calculate-lib-3.1.1_alpha2-r4.patch 6797 SHA256 6067424bac12b0dd2c113e98038db7157705d48669c8574e93dc4308bf217e18 SHA512 bb4f49192ea410be808867e6f3124a6b859c4818a8262f486af03b93fa18cbb1d7b8d705595fd1c441fbd40a47d8919164b2bbb0cdb8677303fcaf0f8b1caab1 WHIRLPOOL d378bba2b0831fd776fbea8fae2597268c2c863597178eab31148b87e91032f2501e932244e596ad24146beb68843fd95cf12cd2c438380ce58903aae1866966
@ -86,6 +87,7 @@ EBUILD calculate-lib-3.1.1_alpha2-r1.ebuild 821 SHA256 1189d428581e6cde80b3a0877
EBUILD calculate-lib-3.1.1_alpha2-r10.ebuild 822 SHA256 27a01f7e3f9b8bb0db6fb9db11620201427c93b44b52dd702f148d2f4b0216e8 SHA512 3ddf1897f1baa4fc7de1f1c01bf00b7a25e8815489aee47279f656355c36a3b8455efabdf1fb6e2b6bc5a79e49c05a8b333c9e5b0c638879ed2ac2fae252625d WHIRLPOOL 2d827fb0312bea5e6682a76dc0d62203bbac8677ca956eb3a2655cc96534c7ce0c48513777eeac1bf4160e6be24ed55f4056261bc487863a1dc344bfc686ebd9
EBUILD calculate-lib-3.1.1_alpha2-r11.ebuild 822 SHA256 52ef776e73f6537cc597f7db6fd08c37c61a44a8de3c356ce616f38a5b2dfa49 SHA512 e74e42f8b945462b0ebf88b63b0c302c2932c4a2eda2bbf806d48feab4e8489e92fb82bc8ed0dc701f078532a017c814fa78031bb78f54b3fc88e7187ea3cc4a WHIRLPOOL a13fefc33ab6dae778f9d7eb0d2a7b2084e2eb199af4357dcbb1405db735a73ef4e2731595ad413d98baf0b58acc34f7afef8cadb44847b0c38fc24eb9d3b293
EBUILD calculate-lib-3.1.1_alpha2-r12.ebuild 822 SHA256 a32bcc7a78112615ff7f9c9b7a50a096f8ca8cc0ca9591a52d99eea484ae3dcc SHA512 26f0dbf9ad00ebf2864506c47e17e027cf142596c57b257709514e15bc35e43442c0e2ab04d2b1c4d64b404c7f5843d413f32cf39e4843b0b417f626680a6dfc WHIRLPOOL 2c0c569857f2deaa267bf971ac232e0f9797017f80c8ff89149bd119543548de725cb903f93a49a66be018982f71861bedf5126cd1f125c7f6e4f0f8b94d8f38
EBUILD calculate-lib-3.1.1_alpha2-r13.ebuild 822 SHA256 2bbd80fddefe93d32e3fba719c62ab29675467313d0378905c57c150ad2bfb31 SHA512 4247768cc1ed0e716c87b08e71787c2312f6d513147945283c5e8ca3a9e5c9459080d0f3a98b2d219277222064c880b9deed3c4590d13c2f9f1bf7b95b25a209 WHIRLPOOL 64f7c24378368fee55d8d3dfd8fb6230bb5d892308d23c6730b754afc2e2514e2464f8303dd3e318e38b255ed44769ae95a70fda0802e0d5ac0c2774c35b8279
EBUILD calculate-lib-3.1.1_alpha2-r2.ebuild 821 SHA256 cd223474f7f4cd3c87f1cf6d75f7fda61fd6d33461e27f3a753710b7217840a7 SHA512 48a12926e36b8513b9feb1444f95f3b9ed80fac69329e9f0f17c97e42cab4cb11f44f1d678a6690e4a68268c07d8dad48b5cd05b04f7ac0034ce82e748dfe24c WHIRLPOOL 0d14e28c63383bfaeabf59d87d891d3a32ca4b9fd4e88af0743d27af24e1198781a2b435ab62be7c609f3debbad3b57fed8cde0a58d5a8890bbbed0a19bbdb80
EBUILD calculate-lib-3.1.1_alpha2-r3.ebuild 821 SHA256 c417d3904830c64de5978e26ef11f3b40b16d05c8fade33b299c3ff6e38c6bd1 SHA512 be152bf60027668ab3e49cdd15ff4e06f7599956db497f883d7c6c018dbfbb3a723b5c0b6b25de1eb1661474179a26f8ae5fd8d9e1a13eaf8bc8dae7c2024b9c WHIRLPOOL 93f32e6461d387fccb814b2332411c006c9a58e9280c8d96fb02ba4a5712c2e41203480512486fd11800faf8fce80546c27cdeb5c09f5e58d895e5dd11bcd5f9
EBUILD calculate-lib-3.1.1_alpha2-r4.ebuild 821 SHA256 c562f85ff455b300a04674f3b5e8d88efd85e3a09a28d1f62e18138b32326ff5 SHA512 442d202a23d9f6db5d3c18ebf367821ddb3c28b6a70c194403f5e7df250e2477b415a518b8117e0dfc3d927057ee9bc79958259b19581fbdfc9954bf31f29c87 WHIRLPOOL cd3cf784d4cf68cdf6d0be541377b9fb43342e60cdc7e6b41beb153fc2c2b1d2141468bd43534758265cf4349f83fc4b79360388ca955c9490481e8af68a8f57

@ -0,0 +1,35 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="3"
SUPPORT_PYTHON_ABIS="1"
PYTHON_DEPEND="2:2.7"
RESTRICT_PYTHON_ABIS="2.4 2.5 2.6 3.*"
inherit distutils eutils
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/calculate3/${PN}/${P}.tar.bz2"
DESCRIPTION="The library for Calculate 3"
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
LICENSE="Apache-2.0"
SLOT="3"
KEYWORDS=""
IUSE="minimal"
DEPEND="!minimal? ( dev-python/py-smbpasswd )
>=dev-python/pyxml-0.8
sys-apps/iproute2
sys-apps/pciutils
sys-fs/lvm2
sys-fs/mdadm
dev-python/pyinotify
sys-apps/file[python]"
RDEPEND="${DEPEND}"
src_unpack() {
unpack "${A}"
cd "${S}"
# apply revision changes
epatch "${FILESDIR}/calculate-lib-3.1.1_alpha2-r13.patch"
}

@ -0,0 +1,511 @@
diff --git calculate/lib/cl_template.py calculate/lib/cl_template.py
index 24ad307..9e3e25a 100644
--- calculate/lib/cl_template.py
+++ calculate/lib/cl_template.py
@@ -39,8 +39,9 @@ from utils.common import _error, _warning
from utils.text import _toUNICODE, convertStrListDict
from utils.portage import isPkgInstalled
from utils.content import PkgContents
-from utils.files import (getModeFile, removeDir, typeFile, scanDirectory,
- pathJoin,process,STDOUT)
+from utils.files import (getModeFile, listDirectory,removeDir, typeFile,
+ scanDirectory,
+ pathJoin,readFile,readLinesFile,process,STDOUT)
from datavars import DataVarsError
from calculate.lib.cl_lang import setLocalTranslate
@@ -502,7 +503,7 @@ class fileHeader(_terms):
headerTerm = True
def __init__(self, templateName, text, comment=False, fileType=False,
- objVar=False, function=False):
+ objVar=False, function=False, templateObj=None):
self.body = text
# Объект с переменными
self.objVar=objVar
@@ -564,6 +565,7 @@ class fileHeader(_terms):
self.body = self.body[reL.end():]
else:
self.body = ""
+ paramLine = templateObj.applyFuncTemplate(paramLine,templateName)
paramList = self.splitParLine(paramLine)
if paramList:
for i in paramList:
@@ -2181,6 +2183,10 @@ class _file(_error):
F_CONF = open (nameFileConfig, "r+")
except:
try:
+ if os.path.isdir(nameFileConfig):
+ self.setWarning(_("unable to open the directory as file:")
+ + nameFileConfig)
+ return False
F_CONF = open(nameFileConfig, "w+")
except:
self.setError(_("unable to open the file:")
@@ -2482,6 +2488,9 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
# директория установленных программ
basePkgDir = "/var/db/pkg"
+ # кэш для проверки наличия пакета в портежах
+ cachePortdir = {}
+
# стек глобальных переменных
stackGlobalVars = []
@@ -2498,6 +2507,11 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
# Текст функции шаблона
functText = ""
+ # regular for discard sort number and version
+ reData = re.compile(r"^(?:\d+-)?(.+?)(?:-(?:|always|\d+|\d(?:\d|\.|pre|_"
+ "|-always|alpha|beta|pre|rc|[a-z][^a-z])*[a-z]?)(?:"
+ "-r\d+)?)?$",re.S)
+
currentBelong = ""
def __init__(self, objVar):
@@ -2756,7 +2770,8 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
"""
for pkgname,category,ver,slot in pkgs:
fullname = "%s/%s"%(category,pkgname)
- if not fullname in self.installProg:
+ if not fullname in self.installProg or \
+ type(self.installProg[fullname]) != dict:
self.installProg[fullname] = self.installProg[pkgname] = {}
if force or not slot in self.installProg[fullname]:
self.installProg[fullname][slot] = ver
@@ -2799,10 +2814,47 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
else:
return ""
+ def funcWorld(self, funArgv, resS, localVars, textTemplateTmp, nameTemp):
+ """
+ Function for world generation
+ """
+ # source file
+ fileName = funArgv.replace(" ","")
+ source = readFile(fileName)
+ replace = []
+
+ for line in filter(None,
+ filter(lambda x:not x.startswith('#'),
+ map(lambda x:x.strip(),
+ source.split('\n')))):
+ category, spl, nameProg = line.partition("/")
+ nameProg, spl, slot = nameProg.partition(":")
+ if not category in self.installCategory:
+ self.getInstallPkgGentoo(category=category)
+ self.installCategory.append(category)
+ if self.pkg(nameProg, slot=slot or None):
+ replace.append(line)
+
+ textTemplateTmp = textTemplateTmp[:resS.start()] + "\n".join(replace) +\
+ textTemplateTmp[resS.end():]
+ return textTemplateTmp
+
def funcPkg(self, funArgv, resS, localVars, textTemplateTmp, nameTemp):
"""Функция шаблона pkg(), выдает номер версии программы"""
# Название программы
nameProg = funArgv.replace(" ","")
+ if not nameProg:
+ fileName = os.path.split(self.nameTemplate)[1]
+ if fileName == '.calculate_directory':
+ parentDir = os.path.dirname(self.nameTemplate)
+ parentDir, pkgName = os.path.split(parentDir)
+ else:
+ parentDir, pkgName = os.path.split(self.nameTemplate)
+ category = os.path.split(parentDir)[1]
+ # reg for discard version and sort number
+ pkgName = self.reData.search(pkgName).group(1)
+ category = self.reData.search(category).group(1)
+ nameProg = "%s/%s"%(category,pkgName)
# Замена функции в тексте шаблона
replace = ""
if "/" in nameProg:
@@ -2810,6 +2862,7 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
nameProg, spl, slot = nameProg.partition(":")
if not category in self.installCategory:
self.getInstallPkgGentoo(category=category)
+ self.installCategory.append(category)
replace = self.pkg(nameProg, slot=slot or None)
else:
if not self.flagAllPkgScan:
@@ -2894,6 +2947,31 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
textTemplateTmp[resS.end():]
return textTemplateTmp
+ def funcIn(self, funArgv, resS, localVars, textTemplateTmp, nameTemp):
+ """
+ Function in for check value in variable
+ """
+ terms = funArgv.replace(" ","").split(",")
+ # Название локальной переменной
+ nameLocVar = terms[0]
+ flagFoundVar = False
+ try:
+ value = self.objVar.Get(nameLocVar)
+ flagFoundVar = True
+ except:
+ pass
+ if flagFoundVar:
+ if value in terms[1:]:
+ replace = "1"
+ else:
+ replace = ""
+ else:
+ self.raiseErrTemplate(_("error: variable %s does not exist")\
+ %str(nameLocVar))
+ textTemplateTmp = textTemplateTmp[:resS.start()] + replace +\
+ textTemplateTmp[resS.end():]
+ return textTemplateTmp
+
def funcPush(self, funArgv, resS, localVars, textTemplateTmp, nameTemp):
"""локальная функция записывает значение переменной
@@ -3215,12 +3293,63 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
return textTemplateTmp
def funcBelong(self, funArgv, resS, localVars, textTemplateTmp, nameTemp):
- #self.setWarning(
- # _("Function '{funcname}' used by {template} is depricated"
- # " and will be removed at the future").format(
- # funcname="belong",template=nameTemp))
- return self.funcMerge(funArgv, resS, localVars,
- textTemplateTmp, nameTemp)
+ self.setWarning(
+ _("Function '{funcname}' used by {template} is depricated"
+ " and will be removed at the future").format(
+ funcname="belong",template=nameTemp))
+ replace = ""
+ return textTemplateTmp[:resS.start()] + replace +\
+ textTemplateTmp[resS.end():]
+
+ def checkCorrectPkgName(self,package):
+ """
+ Check pkg name (in /var/db/pkg,/usr/portage,/var/lib/layman/calculate
+ and other overlays)
+ """
+ category,spl,pkgname = package.partition('/')
+ pkgname, spl, slot = pkgname.partition(":")
+ # check installed package in system
+ if not category in self.installCategory:
+ self.getInstallPkgGentoo(category=category)
+ self.installCategory.append(category)
+ if self.pkg("%s/%s"%(category,pkgname), slot=slot or None):
+ return True
+ # check package in portage and calculate,overlay
+ def queuePortdir():
+ yield "/usr/portage"
+ calculate = "/var/lib/layman/calculate"
+ yield calculate
+ for portdir in filter(lambda x:x!=calculate,
+ self.objVar.Get('cl_portdir_overlay')):
+ yield portdir
+
+ for portdir in queuePortdir():
+ if not portdir in self.cachePortdir:
+ lPortdir = len(portdir)+1
+ self.cachePortdir[portdir] = \
+ list(set(
+ map(lambda x:x[lPortdir:].rpartition('/')[0],
+ glob.glob("%s/*/*/*.ebuild"%portdir))))
+ if package in self.cachePortdir[portdir]:
+ return True
+ else:
+ if portdir == "/usr/portage" and \
+ not self.cachePortdir[portdir]:
+ #raise TemplatesError(_("Ebuild files are not found in portage"))
+ return True
+ if not "portage/update" in self.cachePortdir:
+ updateFiles = sorted(listDirectory('/usr/portage/profiles/updates'),
+ key=lambda x:tuple(reversed(x.split('Q-'))),reverse=True)
+ if updateFiles:
+ self.cachePortdir["portage/update"] = \
+ map(lambda x:x.split(' ')[1],
+ filter(lambda x:x.startswith('move '),
+ readLinesFile(os.path.join('/usr/portage/profiles/updates',
+ updateFiles[0]))))
+ if package in self.cachePortdir:
+ self.printWARNING(_("Package {frompkg} was renamed").format(frompkg=package))
+ return True
+ return False
def funcMerge(self, funArgv, resS, localVars, textTemplateTmp, nameTemp):
"""
@@ -3234,11 +3363,27 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
self.raiseErrTemplate()
funcPkg = terms[0]
if not funcPkg:
- funcPkg = os.path.split(self.nameTemplate)[1]
- if funcPkg == '.calculate_directory':
- funcPkg = os.path.split(os.path.dirname(self.nameTemplate))[1]
- if not funcPkg:
- self.raiseErrTemplate(_("incorrect template path"))
+ fileName = os.path.split(self.nameTemplate)[1]
+ if fileName == '.calculate_directory':
+ parentDir = os.path.dirname(self.nameTemplate)
+ parentDir, pkgName = os.path.split(parentDir)
+ else:
+ parentDir, pkgName = os.path.split(self.nameTemplate)
+ category = os.path.split(parentDir)[1]
+ # reg for discard version and sort number
+ pkgName = self.reData.search(pkgName).group(1)
+ category = self.reData.search(category).group(1)
+ funcPkg = "%s/%s"%(category,pkgName)
+ try:
+ if not self.checkCorrectPkgName(funcPkg):
+ self.printWARNING(
+ _("Package {pkgName} specified in the merge() into "
+ "{templName} template is not found").format(
+ pkgName=funcPkg,templName=self.nameTemplate))
+ return textTemplateTmp[:resS.start()] + \
+ textTemplateTmp[resS.end():]
+ except TemplatesError as e:
+ self.printWARNING(str(e))
self.currentBelong = funcPkg
pkg = self.objVar.Get("cl_merge_pkg")
replace = ""
@@ -3601,6 +3746,9 @@ re.M|re.S)
self.allTemplates = 0
# Объект функций шаблона
self.functObj = templateFunction(self.objVar)
+ self.functObj.printSUCCESS = self.printSUCCESS
+ self.functObj.printWARNING = self.printWARNING
+ self.functObj.printERROR = self.printERROR
# Метод применения функций к шаблонам
self.applyFuncTemplate = self.functObj.applyFuncTemplate
# Объект для определения типа файла шаблона
@@ -3658,7 +3806,8 @@ re.M|re.S)
def executeTemplate(self, code, execPath):
"""Execute template"""
- p = process(execPath,lang=self.objVar.Get('os_locale_locale'))
+ p = process(execPath,lang=self.objVar.Get('os_locale_locale'),
+ envdict=os.environ)
if "/bin/bash" in code.partition('\n')[0]:
p.write("""function translate() {
gettext -d cl_template "$*"
@@ -4131,9 +4280,8 @@ gettext -d cl_template "$*"
for pkg in self.objVar.Get('cl_merge_pkg'):
category = isPkgInstalled(pkg)
if category:
- category = category[0].rpartition('/')[2]
pkgContents = PkgContents("{CATEGORY}/{PF}".format(
- **isPkgInstalled("%s/%s"%(category,pkg))[0]))
+ **category[0]))
for filename in pkgContents.content.keys():
if not filename in self.cltObj.filterApplyTemplates:
self.cltObj.filterApplyTemplates[filename] = []
@@ -4281,6 +4429,11 @@ gettext -d cl_template "$*"
self.getApplyHeadDir(newDir, dirInfoFile, opt)
if createdDirs:
self.createdDirs += createdDirs
+ if os.path.isfile(pathDir):
+ self.setWarning(_("{dirpath} is file").format(dirpath=pathDir))
+ self.setWarning(_("templates in {tempath} is skipped"
+ ).format(tempath=path))
+ return None
if objHeadDir:
return pathDir, objHeadDir
else:
@@ -4392,11 +4545,11 @@ gettext -d cl_template "$*"
# add packeges for reconfigure
if "merge" in objHead.params:
mergePkgs = objHead.params['merge'].split(',')
- reRight = re.compile(r'^(\w+-\w+/)?[\w+-]+$')
- for wrongPkg in (x for x in mergePkgs if not reRight.match(x)):
- self.setError(_("Wrong value '%s' for 'merge' in the template")%
+ for wrongPkg in (x for x in mergePkgs \
+ if not self.functObj.checkCorrectPkgName(x)):
+ self.printWARNING(
+ _("Wrong package '%s' for 'merge' in the template")%
wrongPkg + ": " + nameFileTemplate)
- return ([], False)
for pkg in mergePkgs:
if not pkg in self.objVar.Get('cl_merge_pkg_new') and \
not pkg in self.objVar.Get('cl_merge_pkg_pass'):
@@ -4668,7 +4821,7 @@ gettext -d cl_template "$*"
self.closeTemplFile()
objHeadNew = fileHeader(nameFileTemplate, self.textTemplate, False,
templateFileType ,objVar=self.objVar,
- function=function)
+ function=function,templateObj=self)
# файл шаблона не будет применен
if not objHeadNew.headerTerm:
if objHeadNew.getError():
@@ -4679,11 +4832,11 @@ gettext -d cl_template "$*"
# add packeges for reconfigure
if "merge" in objHeadNew.params:
mergePkgs = objHeadNew.params['merge'].split(',')
- reRight = re.compile(r'^(\w+-\w+/)?[\w+-]+$')
- for wrongPkg in (x for x in mergePkgs if not reRight.match(x)):
- self.setError(_("Wrong value '%s' for 'merge' in the template")%
+ for wrongPkg in (x for x in mergePkgs \
+ if not self.functObj.checkCorrectPkgName(x)):
+ self.printWARNING(
+ _("Wrong package '%s' for 'merge' in the template")%
wrongPkg + ": " + nameFileTemplate)
- return ([], False)
for pkg in mergePkgs:
if not pkg in self.objVar.Get('cl_merge_pkg_new') and \
not pkg in self.objVar.Get('cl_merge_pkg_pass'):
@@ -5052,7 +5205,7 @@ gettext -d cl_template "$*"
def fileIsUtf(self, fileName):
"""Проверяет файл на кодировку UTF-8"""
- if os.path.exists(fileName):
+ if os.path.isfile(fileName):
FD = open(os.path.abspath(fileName))
newTemplate = FD.read()
FD.close()
@@ -5060,7 +5213,8 @@ gettext -d cl_template "$*"
newTemplate.decode("UTF-8")
except:
return False
- return True
+ return True
+ return False
def joinTemplate(self, nameFileTemplate, nameFileConfig, optFile={}):
"""Объединения шаблона и конф. файла
@@ -5092,15 +5246,9 @@ gettext -d cl_template "$*"
return []
if templateFileType != "bin":
- # Вычисляем условные блоки
- self.textTemplate = self.applyTermsTemplate(self.textTemplate,
- nameFileTemplate)
# Заменяем переменные на их значения
self.textTemplate = self.applyVarsTemplate(self.textTemplate,
nameFileTemplate)
- # Вычисляем функции
- self.textTemplate = self.applyFuncTemplate(self.textTemplate,
- nameFileTemplate)
flagCopyTemplate = False
if not optFile:
optFile = {"path":os.path.split(nameFileConfig)[0]}
@@ -5110,6 +5258,13 @@ gettext -d cl_template "$*"
optFile)
if not objHeadNew:
return filesApply
+ if templateFileType != "bin":
+ # Вычисляем условные блоки
+ objHeadNew.body = self.applyTermsTemplate(objHeadNew.body,
+ nameFileTemplate)
+ # Вычисляем функции
+ objHeadNew.body = self.applyFuncTemplate(objHeadNew.body,
+ nameFileTemplate)
# Настоящее имя конфигурационного файла
nameFileConfig = filesApply[0]
# Флаг - кодировка с бинарными примесями у файла шаблона включаем при
diff --git calculate/lib/datavars.py calculate/lib/datavars.py
index 02b1d4a..1791281 100644
--- calculate/lib/datavars.py
+++ calculate/lib/datavars.py
@@ -33,9 +33,9 @@ from types import StringTypes
def addStdConfig(fileLst,prefix='/'):
stdPath = path.join(prefix,
- "/var/lib/layman/calculate/profiles/calculate.env")
+ "var/lib/layman/calculate/profiles/calculate.env")
if not stdPath in map(os.path.abspath,fileLst):
- return fileLst + [stdPath]
+ return [stdPath] + fileLst
return fileLst
def itemgetter(*args,**kwargs):
@@ -757,9 +757,10 @@ class SimpleDataVars:
searchProfile(iniFile,'calculate.env'),prefix=self.systemRoot),""))
else:
config = cl_template.iniParser(iniFile)
+ importVars = config.getAreaVars("main")
for varname in self.allVars.keys():
if not varname in self.cache:
- val = self.unserialize("string",config.getVar('main',varname))
+ val = self.unserialize("string",importVars.get(varname,''))
if val:
self.cache[varname] = val.encode('utf-8')
diff --git calculate/lib/format/world.py calculate/lib/format/world.py
index 69bfc4f..7d93488 100644
--- calculate/lib/format/world.py
+++ calculate/lib/format/world.py
@@ -22,7 +22,7 @@ class world(objShare):
"""Класс для обработки конфигурационного файла типа procmail
"""
- _comment = ""
+ _comment = "#"
configName = "world"
configVersion = "0.1"
sepFields = "\n"
@@ -66,15 +66,15 @@ class world(objShare):
for k in txtLines:
textLine = k + endtxtLines[z]
z += 1
- #findComment = self.reComment.search(textLine)
+ findComment = self.reComment.search(textLine)
if not textLine.strip():
field.br = textLine
fields.append(field)
field = fieldData()
- #elif findComment:
- # field.comment = textLine
- # fields.append(field)
- # field = fieldData()
+ elif findComment:
+ field.comment = textLine
+ fields.append(field)
+ field = fieldData()
else:
pars = textLine.strip()
field.name = pars
diff --git calculate/lib/variables/env.py calculate/lib/variables/env.py
index 44da0c3..af1a6a3 100644
--- calculate/lib/variables/env.py
+++ calculate/lib/variables/env.py
@@ -252,3 +252,28 @@ class VariableClEbuildPhase(ReadonlyVariable):
"""
def get(self):
return os.environ.get("EBUILD_PHASE","")
+
+class VariableClEmergeInfo(ReadonlyVariable):
+ """
+ Emerge --info cache
+ """
+ type = "list"
+
+ def get(self):
+ return filter(lambda x:x.startswith('PORTDIR_OVERLAY=') or \
+ x.startswith('PORTDIR='),
+ process("emerge","--info",envdict=os.environ).read().split('\n'))
+
+class VariableClPortdirOverlay(ReadonlyVariable):
+ """
+ Overlays path
+ """
+ type = "list"
+
+ def get(self):
+ emergeInfo = self.Get('cl_emerge_info')
+ for line in filter(lambda x:x.startswith("PORTDIR_OVERLAY="),
+ emergeInfo):
+ return filter(None,
+ line.partition("=")[2].strip('\n"\'').split(' '))
+ return []
diff --git calculate/lib/variables/linux.py calculate/lib/variables/linux.py
index be3bbb2..e3e6bdd 100644
--- calculate/lib/variables/linux.py
+++ calculate/lib/variables/linux.py
@@ -240,8 +240,9 @@ class LinuxDataVars(SimpleDataVars):
VariableOsLinuxBuild(systemRoot=systemRoot))
makeprofile = path.join(systemRoot,'etc/make.profile')
if os.path.exists(makeprofile):
- inifile = path.join('/etc',os.readlink('/etc/make.profile'))
- self.flIniFileFrom(makeprofile)
+ inifile = path.join(systemRoot,'etc',
+ os.readlink(path.join(systemRoot,'etc/make.profile')))
+ self.flIniFileFrom(inifile)
inifile = "etc/calculate/calculate.env"
self.flIniFileFrom(path.join(systemRoot,inifile))
iniFile = "etc/calculate/calculate3.env"

@ -85,6 +85,7 @@ EBUILD calculate-utilities-3.1.1_alpha2-r13.ebuild 822 SHA256 98ec5be356e5dff453
EBUILD calculate-utilities-3.1.1_alpha2-r14.ebuild 822 SHA256 531dffa5dcbfe59ea58c47f66ea396bc6a2c6144c0a5f66f92da4d4b0e9a894d SHA512 960798703eb3230187f4e44b2678b6f6bcb610b224b41eb7fa6d0eb681473b85f3d61b054f609f4269deed2758a5bcf26b49bed7f0c92a8d1c128661f67d1d5e WHIRLPOOL 3d7758e9792ca0e9a0e975d56a0175c5864c8bf540d50d020ee96f604d87956f0a1f92b73466fd32fa6949b4b83c9db06280e0b822644baea8db45e7c12e7c0b
EBUILD calculate-utilities-3.1.1_alpha2-r15.ebuild 822 SHA256 bdaa8ed4122488d477f322b577a91038054329d718abec82a1198601e4f3e498 SHA512 0fc78ea5f4c536604546ba81c93de348bfecfad841294e122930c903e3730bf462f752b5268c18880088787aff2925e5581841bbec623c61ef3e0f38524a456d WHIRLPOOL 41e957e4959088257cd152e8350ac0fa0f0186644360e94d858b9634644d3a1c3e87ee0823642d3c6f10d14970187836a5cace9f0bea3c01ab3caadd52a29479
EBUILD calculate-utilities-3.1.1_alpha2-r16.ebuild 822 SHA256 07f19ed42cb6a9a43a31fd351745a4d08f636ec7584e902d888c2cdfbadb1403 SHA512 6e17c39599f5a225501a872e79251c1434b0c0922c502d3e54abe65cb2289eb65e8fcad4c838434e3fe3dd98911d496ed13decb0374826fecae6af1f911e7d1c WHIRLPOOL 56404dfebef36bbcab394d0fc998e44a43ec0e6a13f6bfac9a18df1ac04ff29e554d749502a97fc798da46bc78872d112713690c24f46be9b1b131c09b3b69b3
EBUILD calculate-utilities-3.1.1_alpha2-r17.ebuild 822 SHA256 df1b6bdb6902a3b9a4bc5362a2cf76e1a4fa6a0016da8992249005f8d28e03b7 SHA512 aca9c1ba7ef9cf7f16f54b37b27d65251d2cf46aced86651f7bba16c07ea72fea392c2983cee79258d18d66e75fdce3391f597f0ea65140cf2370e44658c41fd WHIRLPOOL ee09da558d7ee499261a577026a018c1c49f769d41165d18d3fb01b752683dbfb0e33d1ca7d3ce4b831e39cd0cce02d7b57e882bf695e6a236b8c23f66416e5b
EBUILD calculate-utilities-3.1.1_alpha2-r2.ebuild 812 SHA256 a3f7e50a7d5e7ee612a797b144bb99deb8c4a6a5d52e53fe9db026f834e46bae SHA512 14aa168f9a77d5a1fe099e5fbe04c48287b5524bf099180f7d62739f9ce113358ed092ae50d2cd019dbd9cf6ccc643491accf6fcbf3963355ec8e3976ec230d7 WHIRLPOOL a7c7a8c12436ac1fc0847872c8ed2bfe4be49aec8d896ca7b52cfc08d8f0ca1625d0ad7485932b219f01cb3332d949991c713c090fba14dd42e95354620d996c
EBUILD calculate-utilities-3.1.1_alpha2-r3.ebuild 812 SHA256 0487e98bdecdd898deb5226b0d65aef9b34f5c0338865484718fece5afb2e59f SHA512 22d698366844041accad94a7464f9f9bdfaf137328ae628e7e37ecf080293f2b472fabceca1098ad5a09254430e01b44fb01ae2e20dd5c6f53abfe1cb97f4722 WHIRLPOOL faddda116dca5eaa52c6b9d505923cae96382f7f39d1921d1c84816af484f08b7e9da856b9514e8133cd8f8daa74782930223a14a3f90222a76cbf691bd159ba
EBUILD calculate-utilities-3.1.1_alpha2-r4.ebuild 815 SHA256 12c8d2ca9c3813aaa2ac0f831ea5b362c99adc09b3018070c143f681ede69c70 SHA512 42d207ebffddf00d5863bde87ca4ddf247df4032ade14cdb488ea78aa47a45fd2f4933fe8dd1d8bf1e8ce590feaeba032643c65cd5fbb309b6f33ba3e503a5cb WHIRLPOOL 1d41a910d291f246fec99376c3be44abf51829cab9ff2067ff2f5e1a15bfe16691f9013ba5aeee5a0d549ef880249de0b472538df8acc6798f276358e0da911f

@ -0,0 +1,26 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=4
DESCRIPTION="Calculate Utilities meta package"
HOMEPAGE="http://www.calculate-linux.org/main/en/calculate2"
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="3"
KEYWORDS=""
IUSE="cl_consolegui cl_client cl_desktop cl_console"
RDEPEND="${RDEPEND}
=sys-apps/calculate-install-3.1.1_alpha2-r4
=sys-apps/calculate-i18n-3.1.1_alpha2-r1
=sys-apps/calculate-lib-3.1.1_alpha2-r13
=sys-apps/calculate-core-3.1.1_alpha2-r3
=sys-apps/calculate-update-3.1.1_alpha2-r3
cl_client? ( =sys-apps/calculate-client-3.1.1_alpha2 )
cl_desktop? ( =sys-apps/calculate-desktop-3.1.1_alpha2-r2 )
cl_consolegui? ( =sys-apps/calculate-console-gui-3.1.1_alpha2 )
cl_console? ( =sys-apps/calculate-console-3.1.1_alpha2 )
"
Loading…
Cancel
Save