From ce19018897a7f27eba38c0a3e654fac2c9bfc69b Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Tue, 25 Dec 2018 15:29:32 +0000 Subject: [PATCH] Package Distribution Restrictions Packages can now restrict the debian distribution for which they can build using the new 'dists' package key. This is a csv list of distribution codenames. If the currently building distribution is not in the list then the package is ignored. --- tools/onlpm.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/onlpm.py b/tools/onlpm.py index 4701daed..3b1cf745 100755 --- a/tools/onlpm.py +++ b/tools/onlpm.py @@ -136,8 +136,10 @@ class OnlPackage(object): 'BUILD_DIR' : 'BUILD/%s' % g_dist_codename, # Default Templates Location - 'ONL_TEMPLATES' : "%s/packages/base/any/templates" % os.getenv("ONL") + 'ONL_TEMPLATES' : "%s/packages/base/any/templates" % os.getenv("ONL"), + # Default Distribution + 'DISTS' : g_dist_codename, } ############################################################ @@ -503,6 +505,13 @@ class OnlPackageGroup(object): return False return True + def distcheck(self): + for p in self.packages: + if p.pkg.get("dists", None): + if g_dist_codename not in p.pkg['dists'].split(','): + return False + return True + def prerequisite_packages(self): rv = [] for e in list(onlu.sflatten(self._pkgs.get('prerequisites', {}).get('packages', []))): @@ -863,7 +872,8 @@ class OnlPackageManager(object): pg.filtered = True if not pg.archcheck(arches): pg.filtered = True - + if not pg.distcheck(): + pg.filtered = True def load(self, basedir, usecache=True, rebuildcache=False): pkgspec = [ 'PKG.yml', 'pkg.yml' ] @@ -1089,6 +1099,8 @@ class OnlPackageManager(object): def list_platforms(self, arch): platforms = [] for pg in self.package_groups: + if not pg.distcheck(): + continue for p in pg.packages: (name, pkgArch) = OnlPackage.idparse(p.id()) m = re.match(r'onl-platform-config-(?P.*)', name) @@ -1103,7 +1115,7 @@ def defaultPm(): packagedirs = os.environ['ONLPM_OPTION_PACKAGEDIRS'].split(':') repoPackageDir = os.environ.get('ONLPM_OPTION_REPO_PACKAGE_DIR', 'packages') subdir = os.getcwd() - arches = ['amd64', 'powerpc', 'armel', 'arm64', 'all',] + arches = ['amd64', 'powerpc', 'armel', 'armhf', 'arm64', 'all',] if envJson: for j in envJson.split(':'): @@ -1139,7 +1151,7 @@ if __name__ == '__main__': ap.add_argument("--csv", action='store_true') ap.add_argument("--show-group", action='store_true') ap.add_argument("--arch") - ap.add_argument("--arches", nargs='+', default=['amd64', 'powerpc', 'armel', 'arm64', 'all']), + ap.add_argument("--arches", nargs='+', default=['amd64', 'powerpc', 'armel', 'armhf', 'arm64', 'all']), ap.add_argument("--pmake", action='store_true') ap.add_argument("--prereq-packages", action='store_true') ap.add_argument("--lookup", metavar='PACKAGE')