From da7f64f682831aac2328f544916db12df60e1b9f Mon Sep 17 00:00:00 2001 From: Shahzad Malik Muzaffar Date: Sun, 31 Mar 2024 12:32:24 +0200 Subject: [PATCH 1/3] Order vectorization and pgo packages --- cmsBuild | 61 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/cmsBuild b/cmsBuild index d0cdef6..9662b6e 100755 --- a/cmsBuild +++ b/cmsBuild @@ -1488,16 +1488,6 @@ class PackageFactory(object): self.__requiresCache = CacheProxy(self.__requires_cache, self.__cacheKeyDecorator) self.checksums_cache = {} self.virtual_packages = self.updateVirtualPackages(options.cmsdist) - self.vpackages = [] - for pkg in self.virtual_packages: - if ' vectorized_package ' in self.virtual_packages[pkg]: - for v in options.vectorization: - xstr = '_%s' % v - if pkg.endswith(xstr): - pkg = pkg[:-len(v)-1] - if pkg not in self.vpackages: - self.vpackages .append(pkg) - break return def __getPreamble(self, options): @@ -1525,18 +1515,26 @@ class PackageFactory(object): def updateVirtualPackages(self, cmsdist): global pgo_packages pkgs = {} - for vp in glob(join(cmsdist,'*','cmsdist_packages.py')): - pkg_dir = dirname(vp) - if pkg_dir.endswith("/pgo") and (not self.options.PGOGenerate) and (not self.options.PGOUse): + virtual_pkd_dirs = [] + for odir in ["vectorization", "pgo"]: + if exists(join(cmsdist,odir,"cmsdist_packages.py")): + virtual_pkd_dirs.append(odir) + all_virtual_pkd_dirs = [x.split(os.sep)[-2] for x in glob(join(cmsdist,"*","cmsdist_packages.py"))] + for vp in virtual_pkd_dirs + [x for x in all_virtual_pkd_dirs if not x in virtual_pkd_dirs]: + if (vp=="vectorization") and (not self.options.vectorization): continue - sys.path.insert(0,pkg_dir) - pkg = __import__('cmsdist_packages') + if (vp=="pgo") and (not self.options.PGOGenerate) and (not self.options.PGOUse): + continue + sys.path.insert(0,join(cmsdist, vp)) + pkg = __import__("cmsdist_packages") try: - pkg.packages(pkgs, self) - if pkg_dir.endswith("/pgo"): - pgo_packages = pkg.pgo_packages[:] + pkg.packages(pkgs, self) except TypeError as e: - pkg.packages(pkgs) + pkg.packages(pkgs) + if vp=="pgo": + pgo_packages = pkg.pgo_packages[:] + if vp=="vectorization": + self.vpackages = pkg.MULTI_TARGET_PACKAGES[:] sys.modules.pop('cmsdist_packages') x=sys.path.pop(0) return pkgs @@ -1564,15 +1562,28 @@ class PackageFactory(object): def readSpec(self, pkgName): specLines = [] filename = specFilename(self.options, pkgName) + + def get_output(cmd): + e , o = getstatusoutput(cmd) + if e: + fatal("Unable to generate package:%s: %s" % (pkgName, o)) + return o + try: - if exists(filename) and (not pkgName in pgo_packages): + if exists(filename) and (not pkgName in self.virtual_packages): specLines = open(filename).readlines() elif pkgName in self.virtual_packages: - cmd = self.virtual_packages[pkgName] - e , o = getstatusoutput(cmd) - if e: - fatal("Unable to generate package:%s: %s" % (pkgName, o)) - specLines = [ l+"\n" for l in o.split("\n")] + pkgdata = self.virtual_packages[pkgName] + out = "" + if isinstance(pkgdata, list): + for line in pkgdata: + if line.startswith("cmd:"): + out += get_output(line[4:]) +'\n' + else: + out += line +'\n' + else: + out = get_output(pkgdata) + specLines = [ l+"\n" for l in out.split("\n")] else: raise FileNotFound(filename) except IOError as e: From e1e87c62e219d946942c90c6ba8596b9d58fd497 Mon Sep 17 00:00:00 2001 From: Shahzad Malik Muzaffar Date: Sun, 31 Mar 2024 12:38:19 +0200 Subject: [PATCH 2/3] initialize PackageFactory.vpackages --- cmsBuild | 1 + 1 file changed, 1 insertion(+) diff --git a/cmsBuild b/cmsBuild index 9662b6e..93336fa 100755 --- a/cmsBuild +++ b/cmsBuild @@ -1487,6 +1487,7 @@ class PackageFactory(object): self.__packageCache = CacheProxy(self.__package_cache, self.__cacheKeyDecorator) self.__requiresCache = CacheProxy(self.__requires_cache, self.__cacheKeyDecorator) self.checksums_cache = {} + self.vpackages = [] self.virtual_packages = self.updateVirtualPackages(options.cmsdist) return From 6744c81c5beb6ab047157565e8cdb8c607474f33 Mon Sep 17 00:00:00 2001 From: Shahzad Malik Muzaffar Date: Mon, 1 Apr 2024 14:30:28 +0200 Subject: [PATCH 3/3] remove unused vectorize pack list --- cmsBuild | 7 ------- 1 file changed, 7 deletions(-) diff --git a/cmsBuild b/cmsBuild index 93336fa..21d4c2b 100755 --- a/cmsBuild +++ b/cmsBuild @@ -1487,7 +1487,6 @@ class PackageFactory(object): self.__packageCache = CacheProxy(self.__package_cache, self.__cacheKeyDecorator) self.__requiresCache = CacheProxy(self.__requires_cache, self.__cacheKeyDecorator) self.checksums_cache = {} - self.vpackages = [] self.virtual_packages = self.updateVirtualPackages(options.cmsdist) return @@ -1534,8 +1533,6 @@ class PackageFactory(object): pkg.packages(pkgs) if vp=="pgo": pgo_packages = pkg.pgo_packages[:] - if vp=="vectorization": - self.vpackages = pkg.MULTI_TARGET_PACKAGES[:] sys.modules.pop('cmsdist_packages') x=sys.path.pop(0) return pkgs @@ -2711,10 +2708,6 @@ class Package(object): xtext = getSourcesChecksum(self, self.sourcesNumbers) if xtext: self.spec += "\n"+xtext - if PKGFactory.vpackages: - self.spec += "%%define vectorized_packages %s\n" % (" ".join(PKGFactory.vpackages)) - else: - self.spec += "%define vectorized_packages %{nil}\n" for section in self.sections.keys(): for subsection in self.sections[section].keys(): sectionContents = self.sections[section][subsection].strip("\n ")