Skip to content
Snippets Groups Projects
Commit cab6270c authored by Vagrant Cascadian's avatar Vagrant Cascadian
Browse files

working proof of concept for num_cpus.cpus=X

parent 9d0562db
No related tags found
No related merge requests found
Pipeline #645545 passed
......@@ -333,19 +333,21 @@ def aslr(ctx, build, vary):
def num_cpus(ctx, build, vary):
_ = build
if ctx.num_cpus.cpus:
if not vary:
_ = _.append_setup_exec_raw('CPU_MAX=$(nproc)')
elif not ctx.spec.num_cpus.cpus:
_ = _.append_setup_exec_raw('CPU_MAX=$(nproc)')
else:
_ = _.append_setup_exec_raw('CPU_MAX=%s' % ctx.num_cpus.cpus)
_ = _.append_setup_exec_raw('CPU_MAX=%s' % random.choice(ctx.spec.num_cpus.cpus))
_ = _.append_setup_exec_raw('CPU_MIN=$({ echo $CPU_MAX; echo %s; } | sort -n | head -n1)' % ctx.min_cpus)
if ctx.min_cpus <= 0:
raise ValueError("--min-cpus must be a positive integer: " % ctx.min_cpus)
if not vary:
_ = _.append_setup_exec_raw('CPU_NUM=$CPU_MIN')
if ctx.num_cpus.cpus:
elif ctx.spec.num_cpus.cpus:
_ = _.append_setup_exec_raw('CPU_NUM=$(if [ $CPU_MIN = $CPU_MAX ]; \
then echo $CPU_MIN; echo >&2 "only 1 CPU is available; num_cpus is ineffective"; \
else echo %s; fi)' % ctx.num_cpus.cpus)
else echo %s; fi)' % random.choice(ctx.spec.num_cpus.cpus))
else:
# random number between min_cpus and $(nproc)
_ = _.append_setup_exec_raw('CPU_NUM=$(if [ $CPU_MIN = $CPU_MAX ]; \
......@@ -589,10 +591,10 @@ class LocalesVariation(collections.namedtuple('_LocaleVariation', 'locale')):
def default(cls):
return cls(mdiffconf.strlist_set(";"))
class NumCpusVariation(collections.namedtuple('_LocaleVariation', 'cpus')):
class NumCpusVariation(collections.namedtuple('_NumCpusVariation', 'cpus')):
@classmethod
def default(cls):
return None
return cls(mdiffconf.strlist_set(";"))
class VariationSpec(mdiffconf.ImmutableNamespace):
@classmethod
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment