mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-11-03 11:48:17 +00:00
Allow filtering by architecture list.
This commit is contained in:
@@ -158,6 +158,8 @@ class OnlPackage(object):
|
||||
|
||||
return self.pkg['name'] + ':' + self.pkg['arch']
|
||||
|
||||
def arch(self):
|
||||
return self.pkg['arch']
|
||||
|
||||
@staticmethod
|
||||
def idparse(pkgid, ex=True):
|
||||
@@ -406,6 +408,14 @@ class OnlPackageGroup(object):
|
||||
def __init__(self):
|
||||
self.filtered = False
|
||||
|
||||
def archcheck(self, arches):
|
||||
if arches is None:
|
||||
return True
|
||||
else:
|
||||
for p in self.packages:
|
||||
if p.arch() not in arches:
|
||||
return False
|
||||
return True
|
||||
|
||||
def prerequisite_packages(self):
|
||||
return list(onlu.sflatten(self._pkgs.get('prerequisites', {}).get('packages', [])))
|
||||
@@ -749,12 +759,13 @@ class OnlPackageManager(object):
|
||||
self.opr = OnlPackageRepo(repodir, ops.repo_package_dir)
|
||||
|
||||
|
||||
def filter(self, subdir=None, arch=None, substr=None):
|
||||
def filter(self, subdir=None, arches=None, substr=None):
|
||||
|
||||
for pg in self.package_groups:
|
||||
|
||||
if subdir and not pg.is_child(subdir):
|
||||
pg.filtered = True
|
||||
if not pg.archcheck(arches):
|
||||
pg.filtered = True
|
||||
|
||||
|
||||
def load(self, basedir, usecache=True, rebuildcache=False):
|
||||
@@ -995,6 +1006,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', 'all']),
|
||||
ap.add_argument("--pmake", action='store_true')
|
||||
ap.add_argument("--prereq-packages", action='store_true')
|
||||
ap.add_argument("--lookup", metavar='PACKAGE')
|
||||
@@ -1023,6 +1035,12 @@ if __name__ == '__main__':
|
||||
|
||||
ops = ap.parse_args()
|
||||
|
||||
archlist = []
|
||||
for a in ops.arches:
|
||||
al = a.split(',')
|
||||
archlist = archlist + al
|
||||
ops.arches = archlist
|
||||
|
||||
if ops.include_env_json:
|
||||
for j in ops.include_env_json.split(':'):
|
||||
data = json.load(open(j))
|
||||
@@ -1100,7 +1118,7 @@ if __name__ == '__main__':
|
||||
if ops.list_all:
|
||||
print pm
|
||||
|
||||
pm.filter(subdir = ops.subdir)
|
||||
pm.filter(subdir = ops.subdir, arches=ops.arches)
|
||||
|
||||
if ops.list:
|
||||
print pm
|
||||
|
||||
Reference in New Issue
Block a user