Исправлена маскировка nvidia-drivers в зависимости от ID карты

develop
parent e62d86880c
commit 144ca153cd

@ -719,20 +719,21 @@ class VariableOsNvidiaMask(ReadonlyVariable):
nvidiacards)))
if not cardsid:
return ""
cardsid = set(cardsid)
eclassdata = readFile(nvidiaeclass)
drv_categories = re.findall('^drv_([^=]+)="', eclassdata, re.M)
drvs = map(lambda x: (x[0], x[1].replace('\\\n', '').split()),
re.findall(
'\ndrv_(%s)="(.*?)"' % "|".join(drv_categories),
eclassdata, re.S))
mask_categories = re.findall('^mask_([^=]+)="', eclassdata, re.M)
masks = dict(map(lambda x: (x[0], x[1].replace('\\\n', '')),
re.findall('\nmask_(%s)="(.*?)"' % "|".join(
drv_categories),
eclassdata, re.S)))
drvsForCardsid = filter(lambda x: set(x[1]) & set(cardsid), drvs)
if drvsForCardsid and drvsForCardsid[0][0] in masks:
return masks[drvsForCardsid[0][0]]
reBlock = re.compile(
r"if has \$\{nvidia_gpu\}\s+\\([^;]+);\s*then(.*?)fi", re.S)
reMask = re.compile('>=x11-drivers/nvidia-drivers[^"]+')
masks = []
for block in reBlock.findall(eclassdata):
nvidia_ids, mask_data = block
nvidia_ids = nvidia_ids.strip().replace('\\','')
nvidia_ids = {x for x in nvidia_ids.split() if x}
m = reMask.search(mask_data)
if m:
mask_str = m.group()
if cardsid & nvidia_ids:
return mask_str
finally:
if image:
image.close()

Loading…
Cancel
Save