#!/usr/bin/python
marcs_trunk_build = {
- 'tags':['planetlab-tags.mk'],
+ 'tags':'planetlab-tags.mk',
'distro':['centos5','f8'],
'personality':['linux32','linux64'],
'test': 0,
- 'release':['k22'],
+ 'release':'k22',
}
sapans_k27_build = {
- 'tags':['k27-tags.mk'],
- 'distro':['centos5'],
- 'personality':['linux32'],
+ 'tags':'k27-tags.mk',
+ 'distro':'centos5',
+ 'personality':'linux32',
'test':1,
- 'release':['k27']
+ 'release':'k27'
}
###
+#
+# Defaults: Any values that you leave out from the above specs will get filled in by the defaults specified below
+#
+#
personality_to_arch={'linux32':'i386','linux64':'x86_64'}
'svnpath':'http://svn.planet-lab.org/svn/build/trunk',
'personality':'linux32',
### Define lambdas at the end, because they may need the above values to be filled in for their evaluation
- 'arch':lambda concrete_build: personality_to_arch[concrete_build['personality']]
+ 'arch':lambda build: personality_to_arch[concrete_build['personality']]
}
new_concrete_build = current_concrete_build.copy()
new_concrete_build[cur_param_name] = value
concrete_build_list = interpret_build(build, remaining_param_names, new_concrete_build, concrete_build_list)
- elif (type(cur_param)==type(lambda x:x)):
- # XXX Assumes that the value is behind it
- current_concrete_build[cur_param_name] = cur_param(current_concrete_build)
- concrete_build_list = interpret_build(build, remaining_param_names, current_concrete_build,concrete_build_list)
+
# If not, just tack on the value and move on
else:
current_concrete_build[cur_param_name] = cur_param
return cmdline
+# reduce dependencies in a build
+def reduce_dependencies(concrete_build):
+ for b in concrete_build.keys():
+ val = concrete_build[b]
+ if (type(val)==type(lambda x:x)):
+ concrete_build[b] = val(concrete_build)
+ return concrete_build
+
# Turn build parameter dicts into commandlines and execute them
def process_builds (builds, build_names, default_build):
for build_name in build_names:
build = complete_build_spec_with_defaults (builds[build_name], default_build)
- concrete_builds = interpret_build (build, build.keys())
+ concrete_builds_without_deps = interpret_build (build, build.keys())
+ concrete_builds = map(lambda cb: reduce_dependencies(cb), concrete_builds_without_deps)
for concrete_build in concrete_builds:
build_commandline = concrete_build_to_commandline(concrete_build)
print build_commandline