Добавлено определение python с которым собраны portage

legacy27 3.6.7.21
Mike Hiretsky 4 years ago
parent 78b424a4b7
commit ea0c1d7983

@ -146,9 +146,9 @@ def getPkgSlot(pkg, prefix='/'):
for x in pkgs]
def getPkgActiveUses(fullpkg):
def getPkgActiveUses(fullpkg, prefix="/"):
"""Get active uses from package"""
res = getPkgUses(fullpkg)
res = getPkgUses(fullpkg, prefix=prefix)
if not res:
return None
return list(set(res[0]) & set(res[1]))
@ -196,6 +196,16 @@ def getInstalledAtom(str_atom, prefix='/'):
continue
yield find_atom
def getPortagePython(prefix='/'):
"""
Получить python с которым может рабоать portage
"""
for use in getPkgActiveUses("sys-apps/portage", prefix=prefix):
if use.startswith("python_targets_python3"):
return "/usr/bin/%s" % use[15:].replace("_",".")
return "/usr/bin/python3"
def getSquashList():
"""Get supprted squashfs compressions method"""
@ -1640,13 +1650,14 @@ class tbz2(object):
Python3 portage.xpak.tbz2 simple wrapper
"""
def __init__(self, tbzfile):
self.python3 = getPortagePython()
self.tbzfile = tbzfile
def _escape(self, s):
return s.replace("'","\\'")
def decompose(self, workdir):
p = process('/usr/bin/python3')
p = process(self.python3)
p.write("from portage.xpak import tbz2\n"
"tbz2('%s').decompose('%s')" % (
self._escape(self.tbzfile),
@ -1656,7 +1667,7 @@ class tbz2(object):
raise PackageError(_("Failed to decompose %s") % self.tbzfile)
def compose(self, workdir):
p = process('/usr/bin/python3')
p = process(self.python3)
p.write("from portage.xpak import tbz2\n"
"tbz2('%s').compose('%s')" % (
self._escape(self.tbzfile),

@ -24,7 +24,7 @@ from calculate.lib.datavars import (TableVariable, Variable, ReadonlyVariable,
from calculate.lib.utils.files import (listDirectory, process, PIPE, pathJoin,
readFileEx)
from calculate.lib.utils.portage import (isPkgInstalled, RepositoryPath,
getInstalledAtom)
getInstalledAtom, getPortagePython)
from calculate.lib.utils.common import cmpVersion
from calculate.lib.datavars import DataVars
from itertools import dropwhile
@ -619,12 +619,14 @@ class PortageConfigWrapper(object):
@classmethod
def getconfig_chroot(cls, chroot):
python3 = getPortagePython(prefix=chroot)
return cls.getconfig_python(process("/usr/bin/chroot",
chroot, "/usr/bin/python3"))
chroot, python3))
@classmethod
def getconfig(cls):
return cls.getconfig_python(process("/usr/bin/python3"))
python3 = getPortagePython()
return cls.getconfig_python(process(python3))
@classmethod
def getconfig_python(cls, pythonprocess):

Loading…
Cancel
Save