gencontrol: Introduce and use arch/featureset/flavour iterator functions

This commit is contained in:
Ben Hutchings 2019-03-04 03:25:34 +00:00
parent 5cb904c8a9
commit 09f2b8df70
2 changed files with 30 additions and 19 deletions

View File

@ -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):

View File

@ -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)