61 строка
1.7 KiB
Python
61 строка
1.7 KiB
Python
|
#!/usr/bin/python
|
||
|
|
||
|
import getopt
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
LONG_OPTIONS = ["shard=", "shards="]
|
||
|
BASE_COMMAND = "./configure --enable-internal-stats --enable-experimental"
|
||
|
|
||
|
def RunCommand(command):
|
||
|
run = subprocess.Popen(command, shell=True)
|
||
|
output = run.communicate()
|
||
|
if run.returncode:
|
||
|
print "Non-zero return code: " + str(run.returncode) + " => exiting!"
|
||
|
sys.exit(1)
|
||
|
|
||
|
def list_of_experiments():
|
||
|
experiments = []
|
||
|
configure_file = open("configure")
|
||
|
list_start = False
|
||
|
for line in configure_file.read().split("\n"):
|
||
|
if line == 'EXPERIMENT_LIST="':
|
||
|
list_start = True
|
||
|
elif line == '"':
|
||
|
list_start = False
|
||
|
elif list_start:
|
||
|
currently_broken = ["csm"]
|
||
|
experiment = line[4:]
|
||
|
if experiment not in currently_broken:
|
||
|
experiments.append(experiment)
|
||
|
return experiments
|
||
|
|
||
|
def main(argv):
|
||
|
# Parse arguments
|
||
|
options = {"--shard": 0, "--shards": 1}
|
||
|
o, _ = getopt.getopt(argv[1:], None, LONG_OPTIONS)
|
||
|
options.update(o)
|
||
|
|
||
|
# Shard experiment list
|
||
|
shard = int(options["--shard"])
|
||
|
shards = int(options["--shards"])
|
||
|
experiments = list_of_experiments()
|
||
|
configs = [BASE_COMMAND]
|
||
|
configs += ["%s --enable-%s" % (BASE_COMMAND, e) for e in experiments]
|
||
|
my_configs = zip(configs, range(len(configs)))
|
||
|
my_configs = filter(lambda x: x[1] % shards == shard, my_configs)
|
||
|
my_configs = [e[0] for e in my_configs]
|
||
|
|
||
|
# Run configs for this shard
|
||
|
for config in my_configs:
|
||
|
test_build(config)
|
||
|
|
||
|
def test_build(configure_command):
|
||
|
print "\033[34m\033[47mTesting %s\033[0m" % (configure_command)
|
||
|
RunCommand(configure_command)
|
||
|
RunCommand("make clean")
|
||
|
RunCommand("make")
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main(sys.argv)
|