Добавлена маскировка nvidia-drivers через calculate/ini.env

legacy27 3.6.10
parent ad9a1a1cc9
commit d8c14903e9

@ -36,6 +36,7 @@ import calculate.lib.variables.env as libenv
from calculate.lib.encrypt import get_shadow_hash, get_grub_hash from calculate.lib.encrypt import get_shadow_hash, get_grub_hash
from calculate.core.server.admin import Admins from calculate.core.server.admin import Admins
import calculate.lib.cl_ini_parser as cl_ini_parser import calculate.lib.cl_ini_parser as cl_ini_parser
from calculate.lib.cl_template import SystemIni
from calculate.lib.cl_lang import setLocalTranslate, _ from calculate.lib.cl_lang import setLocalTranslate, _
@ -711,7 +712,23 @@ class VariableOsNvidiaMask(ReadonlyVariable):
Get nvidia card mask versions Get nvidia card mask versions
""" """
def get(self): def get_cards_id(self):
category = "0300"
vendor = "10de:"
lsPciProg = getProgPath("/usr/sbin/lspci")
nvidiacards = filter(lambda x: " %s: " % category in x,
process(lsPciProg, "-d", vendor, "-n"))
cardsid = \
map(lambda x: x.groups()[0],
filter(lambda x: x,
map(lambda x: re.search(
"[0-9a-fA-F]{4}:([0-9a-fA-F]{4})", x),
nvidiacards)))
if not cardsid:
return set()
return set(cardsid)
def get_legacy(self):
image = self.Get('cl_image') image = self.Get('cl_image')
try: try:
if image: if image:
@ -723,22 +740,11 @@ class VariableOsNvidiaMask(ReadonlyVariable):
'usr/portage/eclass/nvidia-driver.eclass') 'usr/portage/eclass/nvidia-driver.eclass')
if not os.access(nvidiaeclass, os.R_OK): if not os.access(nvidiaeclass, os.R_OK):
return "" return ""
category = "0300"
vendor = "10de:"
lsPciProg = getProgPath("/usr/sbin/lspci")
nvidiacards = filter(lambda x: " %s: " % category in x,
process(lsPciProg, "-d", vendor, "-n"))
if not nvidiacards: if not nvidiacards:
return "" return ""
cardsid = \ cardsid = self.get_cards_id()
map(lambda x: x.groups()[0],
filter(lambda x: x,
map(lambda x: re.search(
"[0-9a-fA-F]{4}:([0-9a-fA-F]{4})", x),
nvidiacards)))
if not cardsid: if not cardsid:
return "" return ""
cardsid = set(cardsid)
eclassdata = readFile(nvidiaeclass) eclassdata = readFile(nvidiaeclass)
reBlock = re.compile( reBlock = re.compile(
r"if has \$\{nvidia_gpu\}\s+\\([^;]+);\s*then(.*?)fi", re.S) r"if has \$\{nvidia_gpu\}\s+\\([^;]+);\s*then(.*?)fi", re.S)
@ -758,6 +764,22 @@ class VariableOsNvidiaMask(ReadonlyVariable):
image.close() image.close()
return "" return ""
def get_new(self, ini):
cardsid = self.get_cards_id()
for nvidia_serie in ini.getKeys('nvidia'):
nvidia_ids = set(ini.getVar('nvidia', nvidia_serie).split(','))
if cardsid & nvidia_ids:
if nvidia_serie.isdigit():
return ">=x11-drivers/nvidia-drivers-{}".format(int(nvidia_serie)+1)
return ""
def get(self):
ini = SystemIni(self.parent)
if ini.getKeys('nvidia'):
return self.get_new(ini)
else:
return self.get_legacy()
class VariableOsInstallLvmSet(ReadonlyVariable): class VariableOsInstallLvmSet(ReadonlyVariable):
""" """

Loading…
Cancel
Save