From 75862b4a1e1b784d94cef7a8c8d392c6215f870f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=B8=D1=80=D0=B5=D1=86=D0=BA=D0=B8=D0=B9=20=D0=9C?= =?UTF-8?q?=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Wed, 21 Apr 2021 16:09:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=81=D0=BA=D0=B0=D1=87=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B8=D0=BD=D1=80=D0=B0=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=BE=D0=B2=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20nvidia,=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pym/builder/builder.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/pym/builder/builder.py b/pym/builder/builder.py index 8817c72..9fdfeca 100644 --- a/pym/builder/builder.py +++ b/pym/builder/builder.py @@ -846,19 +846,24 @@ class Builder(Update): Id = 'nvidia-drivers' Package = 'x11-drivers/nvidia-drivers' Eclass = 'usr/portage/eclass/nvidia-driver.eclass' - SkipVers = ('71', '96', '173', '304', '340') + SkipVers = ('72.0.0', '97.0.0', '177.0.0', '305.0.0', '341.0.0') def generate(self): nvidia_eclass = path.join(self.builder_path, self.Eclass) - mask_prefix = "mask_" - for mask in (x for x in readLinesFile(nvidia_eclass) - if x.startswith(mask_prefix)): - # пропустить сборку для 71, 96 и 173 - if any(mask.startswith("%s%s" % (mask_prefix, x)) - for x in self.SkipVers): - continue - mask = mask.partition('=')[2].strip("\n") - yield (self.Id, mask, mask.replace('>=', '<')) + eclassdata = readFile(nvidia_eclass) + reBlock = re.compile( + r"if has \$\{nvidia_gpu\}\s+\\([^;]+);\s*then(.*?)fi", re.S) + reMask = re.compile('>=x11-drivers/nvidia-drivers[^"]+') + for block in reBlock.findall(eclassdata): + nvidia_ids, mask_data = block + m = reMask.search(mask_data) + if m: + mask_str = m.group() + maskver = mask_str.rpartition("-")[2].strip() + # пропустить сборку для 71, 96, 304,. 340 + if maskver in self.SkipVers: + continue + yield (self.Id, mask_str, mask_str.replace('>=', '\\<')) def pretend_package_install(self, atom, chroot_path, logfile=None): """ @@ -936,7 +941,7 @@ class Builder(Update): while driver_list or repeat_driver_list: drv_name, drv_mask, drv_atom = driver_list.pop(0) self.startTask(_("Calculating dependencies for %s") % - drv_atom.strip('"').replace("<", "<")) + drv_atom.strip('"').replace("\\","").replace("<", "<")) package_list = self.pretend_package_install(drv_atom, builder_path, logfile=logfile)