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

develop
parent e62d86880c
commit 144ca153cd

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

Loading…
Cancel
Save