From 09f2b8df70cda5beefc86178ece3604aa5910948 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 4 Mar 2019 03:25:34 +0000 Subject: [PATCH] gencontrol: Introduce and use arch/featureset/flavour iterator functions --- debian/bin/gencontrol.py | 11 +++--- debian/lib/python/debian_linux/gencontrol.py | 38 +++++++++++++------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index 817d00739..d815027aa 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -11,7 +11,8 @@ import re from debian_linux import config from debian_linux.debian import PackageDescription, PackageRelation, \ PackageRelationEntry, PackageRelationGroup, VersionLinux -from debian_linux.gencontrol import Gencontrol as Base, merge_packages +from debian_linux.gencontrol import Gencontrol as Base, merge_packages, \ + iter_featuresets from debian_linux.utils import Templates, read_control locale.setlocale(locale.LC_CTYPE, "C.UTF-8") @@ -147,11 +148,7 @@ class Gencontrol(Base): .append(package) def do_main_makefile(self, makefile, makeflags, extra): - fs_enabled = [featureset - for featureset in self.config['base', ]['featuresets'] - if (self.config.merge('base', None, featureset) - .get('enabled', True))] - for featureset in fs_enabled: + for featureset in iter_featuresets(self.config): makeflags_featureset = makeflags.copy() makeflags_featureset['FEATURESET'] = featureset cmds_source = ["$(MAKE) -f debian/rules.real source-featureset %s" @@ -162,7 +159,7 @@ class Gencontrol(Base): makefile.add('source', ['source_%s' % featureset]) makeflags = makeflags.copy() - makeflags['ALL_FEATURESETS'] = ' '.join(fs_enabled) + makeflags['ALL_FEATURESETS'] = ' '.join(iter_featuresets(self.config)) super(Gencontrol, self).do_main_makefile(makefile, makeflags, extra) def do_main_packages(self, packages, vars, makeflags, extra): diff --git a/debian/lib/python/debian_linux/gencontrol.py b/debian/lib/python/debian_linux/gencontrol.py index 1a322024a..69619da3e 100644 --- a/debian/lib/python/debian_linux/gencontrol.py +++ b/debian/lib/python/debian_linux/gencontrol.py @@ -72,6 +72,26 @@ class MakeFlags(dict): return self.__class__(super(MakeFlags, self).copy()) +def iter_featuresets(config): + for featureset in config['base', ]['featuresets']: + if config.merge('base', None, featureset).get('enabled', True): + yield featureset + + +def iter_arches(config): + return iter(config['base', ]['arches']) + + +def iter_arch_featuresets(config, arch): + for featureset in config['base', arch].get('featuresets', []): + if config.merge('base', arch, featureset).get('enabled', True): + yield featureset + + +def iter_flavours(config, arch, featureset): + return iter(config['base', arch, featureset]['flavours']) + + class Gencontrol(object): makefile_targets = ('binary-arch', 'build-arch', 'setup') makefile_targets_indep = ('binary-indep', 'build-indep', 'setup') @@ -124,12 +144,10 @@ class Gencontrol(object): pass def do_main_recurse(self, packages, makefile, vars, makeflags, extra): - for featureset in self.config['base', ]['featuresets']: - if self.config.merge('base', None, featureset) \ - .get('enabled', True): - self.do_indep_featureset(packages, makefile, featureset, - vars.copy(), makeflags.copy(), extra) - for arch in iter(self.config['base', ]['arches']): + for featureset in iter_featuresets(self.config): + self.do_indep_featureset(packages, makefile, featureset, + vars.copy(), makeflags.copy(), extra) + for arch in iter_arches(self.config): self.do_arch(packages, makefile, arch, vars.copy(), makeflags.copy(), extra) @@ -214,16 +232,12 @@ class Gencontrol(object): def do_arch_recurse(self, packages, makefile, arch, vars, makeflags, extra): - for featureset in self.config['base', arch].get('featuresets', ()): + for featureset in iter_arch_featuresets(self.config, arch): self.do_featureset(packages, makefile, arch, featureset, vars.copy(), makeflags.copy(), extra) def do_featureset(self, packages, makefile, arch, featureset, vars, makeflags, extra): - config_base = self.config.merge('base', arch, featureset) - if not config_base.get('enabled', True): - return - vars['localversion'] = '' if featureset != 'none': vars['localversion'] = '-' + featureset @@ -256,7 +270,7 @@ class Gencontrol(object): def do_featureset_recurse(self, packages, makefile, arch, featureset, vars, makeflags, extra): - for flavour in self.config['base', arch, featureset]['flavours']: + for flavour in iter_flavours(self.config, arch, featureset): self.do_flavour(packages, makefile, arch, featureset, flavour, vars.copy(), makeflags.copy(), extra)