Добавлена маскировка 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.core.server.admin import Admins
import calculate.lib.cl_ini_parser as cl_ini_parser
from calculate.lib.cl_template import SystemIni
from calculate.lib.cl_lang import setLocalTranslate, _
@ -711,7 +712,23 @@ class VariableOsNvidiaMask(ReadonlyVariable):
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')
try:
if image:
@ -723,22 +740,11 @@ class VariableOsNvidiaMask(ReadonlyVariable):
'usr/portage/eclass/nvidia-driver.eclass')
if not os.access(nvidiaeclass, os.R_OK):
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:
return ""
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)))
cardsid = self.get_cards_id()
if not cardsid:
return ""
cardsid = set(cardsid)
eclassdata = readFile(nvidiaeclass)
reBlock = re.compile(
r"if has \$\{nvidia_gpu\}\s+\\([^;]+);\s*then(.*?)fi", re.S)
@ -758,6 +764,22 @@ class VariableOsNvidiaMask(ReadonlyVariable):
image.close()
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):
"""

Loading…
Cancel
Save