|
|
|
@ -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):
|
|
|
|
|
"""
|
|
|
|
|