atratsevskiy
parent 64b3bad3ad
commit c321eeaba3

@ -25,6 +25,7 @@ AUX calculate-lib-3.1.1_alpha2-r12.patch 22543 SHA256 81862826eab75041974935c5b6
AUX calculate-lib-3.1.1_alpha2-r13.patch 23839 SHA256 dc6fbb8f0c18674c3d2ca38ce142ef5b2dd21290e3d43c5bda25144f190a53cb SHA512 885cd6d8e94c7bfe17e48c5ae7132c5c3d67e3a6cdc0ab7b9bd43889de6e8517f24c855672e3b04c7f9dd38eabe3f19c7962e3d745f06fca8dd99069707cc80a WHIRLPOOL 821c179dd4e3a97a4b8dc9517cbbf15cfdac1c42a83303b037a4ffea24cf41c2119c57143a4857eeece71c5d3e6ad309a3d0e3c097b6203602e1a54e7fd7f3aa
AUX calculate-lib-3.1.1_alpha2-r14.patch 22713 SHA256 76b20b93992dcad224db2deddae53976455c8ab028148fff72c25d704d42871b SHA512 bc2044b935ab064216d10fd2af76693ed1fa4be98fd0a327ccbb1ae6867f2cc6d79e01c1a9824843605d9cfc23404e660bbcba9f9bfef3f26df17e9b7f12156e WHIRLPOOL a7fcb53f180011e66cac7429b1a7b24d7604ff4af3865f6cb2022b01dc7afdfbf90b70d6f9e7e43969c05069efa94eb81a4545ee9a233a70543ec7f0a21f1d52
AUX calculate-lib-3.1.1_alpha2-r15.patch 23870 SHA256 60ec395c670de12de9aeed45b0e709911087517173d1cefc7c877e611292c690 SHA512 cc48fa500222f649b4b9a4f167be1feab0499aac4262b3d6783e2d97296ffb1e1b1b5e7a446c9f43c8ffb02a17282868203613f910a5cfc4df706d6eccc68fc8 WHIRLPOOL 215858250849f96ed569367eddce2f4232999e848c58013e4df046b35964fd9f57d73e1fc4884928c93efcf7404e898332024f1a6c805fe55d0a6550daf872d8
AUX calculate-lib-3.1.1_alpha2-r16.patch 24336 SHA256 e18b7d0b40f7cf2fac00bec1d5a59cc47e8187b90761af5cfcb5a6c91c396d28 SHA512 1c5000d02b15050f17caef7eae5b316b1dade475bf733fb2eaa28e1fe54a10a1baaa8a61915ab981ed6065e62ba41eca9ad0fb33f7448ebb4d64299f93565a9c WHIRLPOOL 9d7fb374bb1692edb96f996a54bf2ad66b55b3ba7a27c0f0cd5ef5fac39b432668bf360f8784f9ff65e8523f4712ad7007e40186956818f07b69e85d4332e7d1
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
@ -92,6 +93,7 @@ EBUILD calculate-lib-3.1.1_alpha2-r12.ebuild 822 SHA256 a32bcc7a78112615ff7f9c9b
EBUILD calculate-lib-3.1.1_alpha2-r13.ebuild 822 SHA256 2bbd80fddefe93d32e3fba719c62ab29675467313d0378905c57c150ad2bfb31 SHA512 4247768cc1ed0e716c87b08e71787c2312f6d513147945283c5e8ca3a9e5c9459080d0f3a98b2d219277222064c880b9deed3c4590d13c2f9f1bf7b95b25a209 WHIRLPOOL 64f7c24378368fee55d8d3dfd8fb6230bb5d892308d23c6730b754afc2e2514e2464f8303dd3e318e38b255ed44769ae95a70fda0802e0d5ac0c2774c35b8279
EBUILD calculate-lib-3.1.1_alpha2-r14.ebuild 822 SHA256 0cd6be310dfebc705ce732c13257131cc6152dc4ee7911a2128103434811c873 SHA512 f09bf18780d30d19001e9a53d6983954b4ab07dc1a49cf9b65dc4d41efc443899bf880d1eec319abcb5c1042c4239a8c3bc51808eb4930a52c314242f9c0c944 WHIRLPOOL fdb191c5ab7f1fd77484500ff6e19c3462c88975eb5deebd6140962cbf9b5ab7cf8679db8d9746ae8d24e3b077539ee752c1d487b26bb171c3906a6648cdd11e
EBUILD calculate-lib-3.1.1_alpha2-r15.ebuild 822 SHA256 66117e1d14dd61c1eea8bf2320946936056606b7b8f57e7224a24509adec59dd SHA512 f646e8b258e87fd672e5906bc8a41090b0ddf06d4d1c40af9f5dd58ba8d7a7ea1cb42c43238400e0177bc55ca44467d3ec15e66f2724b2e262c73cfa235bfc16 WHIRLPOOL 3bd800a95be0f0214c3c8dfe8f4bc2c52a9b70d07515ffd9f61a06aa459cc99a68696e2080857e5ccfcf2440bfabf6d7ddc234346b8d708c00b097a53a751783
EBUILD calculate-lib-3.1.1_alpha2-r16.ebuild 822 SHA256 e7eef87ce8d7e7463beb7f5ecad52572f30bc72774f6375bb2b20b9243d67226 SHA512 6dd457f628799b0937a8eb934f2a8005e37bf730f451ef3ccac6e563cdcef97041977c1e22d0644bb2ee49ee147d79522e2fd7d23449b0ac8b302d18ef858509 WHIRLPOOL d1f6893351e2fee0f50d8dc644114885f27f9207d1c684a51b1566b3b815a792a0ac39d2ee8309e3a72635d023440c276206d92bda38dfdf5eabef1bc9d8607e
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-r16.patch"
}

@ -0,0 +1,517 @@
diff --git calculate/lib/cl_template.py calculate/lib/cl_template.py
index 24ad307..1e6d6cd 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
@@ -301,6 +302,8 @@ class _terms(_error, _shareTermsFunction):
else:
try:
valVars = self.objVar.Get(vals[0])
+ if not valVars:
+ valVars = ""
except DataVarsError, e:
raise TemplatesError("{header}\n{body}".format(
header=textError,body=str(e)))
@@ -502,7 +505,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 +567,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 +2185,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 +2490,9 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
# директория установленных программ
basePkgDir = "/var/db/pkg"
+ # кэш для проверки наличия пакета в портежах
+ cachePortdir = {}
+
# стек глобальных переменных
stackGlobalVars = []
@@ -2498,6 +2509,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 +2772,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
@@ -2803,6 +2820,18 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
"""Функция шаблона 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 +2839,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:
@@ -2875,7 +2905,11 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
" is neither 'upper' or 'lower' or"
" 'capitalize'"))
try:
- strValue = str(self.objVar.Get(terms[1]))
+ strValue = self.objVar.Get(terms[1])
+ if not strValue:
+ strValue = ""
+ else:
+ strValue = str(strValue)
except:
raise TemplatesError(
_("error in template %s")%self.nameTemplate + "\n" +
@@ -2894,6 +2928,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 +3274,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 +3344,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 +3727,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 +3787,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 "$*"
@@ -3771,7 +3901,11 @@ gettext -d cl_template "$*"
varName = mark[self._deltVarStart:-self._deltVarEnd]
varValue = ""
try:
- varValue = str(self.objVar.Get(varName))
+ varValue = self.objVar.Get(varName)
+ if not varValue:
+ varValue = ""
+ else:
+ varValue = str(varValue)
except DataVarsError, e:
raise TemplatesError(_("error in template %s")%nameTemplate
+ "\n" + str(e))
@@ -4131,9 +4265,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 +4414,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 +4530,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 +4806,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 +4817,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 +5190,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 +5198,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 +5231,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 +5243,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"

@ -94,6 +94,7 @@ EBUILD calculate-utilities-3.1.1_alpha2-r20.ebuild 825 SHA256 80b79af534d6266465
EBUILD calculate-utilities-3.1.1_alpha2-r21.ebuild 825 SHA256 190f3763f47cf8dbe0f783142f7601a02a52206b0c2dcfc448c8e3635630a45d SHA512 fb1cc39ff58b73e434afbe2e3289bba07cd59b16221579ba6d5179845219d582d0f2c58f464279dfbc6755d7fc96c2b652c5f7806d563ed4cd3cdae911165f8e WHIRLPOOL fc056ca1d67d867179de893f12ffa3af9bcb0a91429620279ce88473dae46ef57e41b4bef5f8c6ce895a2c81949d8971629e2db8eed2bad8b588129d3fbc8b30
EBUILD calculate-utilities-3.1.1_alpha2-r22.ebuild 825 SHA256 606e680d83155a596e621b60a39cbe8c7ec858526e499d939a7de7739559fa24 SHA512 38f3de96766f3968d45a174f86564a3fef1413604c51ed3d580b714245c53e402d155d0d3ab7e7b218022d79bcdca246ef213b1b24c6fad1d170eee1bd5cbb11 WHIRLPOOL 1646c283d3a565489b789e4504925d771f9e9a28da7f49ca2f3dccacd343a1a4a47bbc83dbaf3416b67c4fbbe4fd8170e2913b79d14501da3ccfc496ffd57f24
EBUILD calculate-utilities-3.1.1_alpha2-r23.ebuild 825 SHA256 a27470af85063ca90cd615f192a1cc5fbfef05ea232cdf556324b32dec6808ee SHA512 da6c32376dc5546fa4b6ac4731a25214478da26bc662d6d952f7a2fc460d854d820fbdd232a60a1a7b033deb46209f2da9c8b52a4e35d792e63e64ed52a45e15 WHIRLPOOL ba89e1f9e3d540a5c72622fac22caf1cb4e6ba7766248076af2f21a2863dd83ea05dda3b2a9f77c877c411e6c4aa5f85188c3f28da58e546add707ed1a943388
EBUILD calculate-utilities-3.1.1_alpha2-r24.ebuild 825 SHA256 71affbfba490b0fc56c4e64bb2d09dea2faf1e95412779e266695799b22b018c SHA512 96919719cc62d0f547dd6b712c30091a87cd074f00c2bebbb4292df0562c137d367a05da0dd2c5fe2f6df5533d334d54c867b23b4cc6d896798754681e8a77da WHIRLPOOL 91a07ade34eb74a014ec4e28fa2963a0533996e08239ad8d1713e2e764f40feabf17fb69ed32ee964693454da96d6c11ed1043d0ae667e489c89d60da937473c
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
EBUILD calculate-utilities-3.1.1_alpha2-r5.ebuild 815 SHA256 9564585c5246c43680f53cde260fd42778e1623d51c379b2d5c27590f7173297 SHA512 944e6d28beccbb82a3b633f93b8c6beb93b24554619e27feb1fefeef28364e78e8294ebd776e144cd8e5d8c80708f1fb6168c2ee49b0bd04eb2e2ddf42366bcf WHIRLPOOL b5cdbe8e5588b430818da660c1faa9445c2d271e7530b59b68829ea90454f7579f5eb530d7f09b5ff739874f2701262f10f247f04cc4b9e062f5396b0ec615eb

@ -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-r5
=sys-apps/calculate-i18n-3.1.1_alpha2-r1
=sys-apps/calculate-lib-3.1.1_alpha2-r16
=sys-apps/calculate-core-3.1.1_alpha2-r6
=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-r1 )
cl_console? ( =sys-apps/calculate-console-3.1.1_alpha2 )
"
Loading…
Cancel
Save