Browse Source
added a script to check multiple cmake configurations and updated the release checklist
tempestpy_adaptions
added a script to check multiple cmake configurations and updated the release checklist
tempestpy_adaptions
TimQu
7 years ago
3 changed files with 124 additions and 0 deletions
-
1doc/checklist_new_release.md
-
118doc/scripts/test_build_configurations.py
-
5doc/scripts/test_build_configurations.txt
@ -0,0 +1,118 @@ |
|||||
|
import subprocess |
||||
|
import os |
||||
|
import shutil |
||||
|
import time |
||||
|
import math |
||||
|
import sys |
||||
|
|
||||
|
logfileDir = "test_build_configurations_logs" |
||||
|
pathToConfigFile = "" |
||||
|
globalCmakeArguments = "" |
||||
|
globalMakeArguments = "" |
||||
|
|
||||
|
if len(sys.argv) == 1 or len(sys.argv) > 5: |
||||
|
print "Usage: " + sys.argv[0] + "/path/to/storm /path/to/configurations.txt \"optional make arguments\" \"optional cmake arguments\"" |
||||
|
print "Example: " + sys.argv[0] + " ~/storm test_build_configurations.txt \"-j 48 -k\" \"-DZ3_ROOT=/path/to/z3/\"" |
||||
|
sys.exit(0) |
||||
|
|
||||
|
pathToStorm = sys.argv[1] |
||||
|
pathToConfigFile = sys.argv[2] |
||||
|
|
||||
|
if len(sys.argv) > 3: |
||||
|
globalMakeArguments = sys.argv[3] |
||||
|
print globalMakeArguments |
||||
|
if len(sys.argv) > 4: |
||||
|
globalCmakeArguments = sys.argv[4] |
||||
|
print globalCmakeArguments |
||||
|
|
||||
|
# create directory for log files |
||||
|
if not os.path.exists(logfileDir): |
||||
|
os.makedirs(logfileDir) |
||||
|
|
||||
|
unsuccessfulConfigs = "" |
||||
|
globalStartTime = time.time() |
||||
|
|
||||
|
with open(pathToConfigFile) as configfile: |
||||
|
localStartTime = time.time() |
||||
|
configId=0 |
||||
|
for localCmakeArguments in configfile: |
||||
|
|
||||
|
cmakeArguments = globalCmakeArguments + " " + localCmakeArguments.strip('\n') |
||||
|
buildDir = os.path.join(pathToStorm, "build{}".format(configId)) |
||||
|
logfilename = os.path.join(logfileDir, "build{}".format(configId) + "_" + time.strftime("%Y-%m-%d-%H-%M-%S") + ".log") |
||||
|
|
||||
|
|
||||
|
print "Building configuration {} with cmake options ".format(configId) + cmakeArguments |
||||
|
print "\tCreating log file " + logfilename + " ..." |
||||
|
with open(logfilename, "w") as logfile: |
||||
|
success=True |
||||
|
logfile.write("Log for test configuration " + cmakeArguments + "\n") |
||||
|
|
||||
|
print "\tCreating build directory" + buildDir + " ..." |
||||
|
if os.path.exists(buildDir): |
||||
|
print "\t\tRemoving existing directory " + buildDir |
||||
|
shutil.rmtree(buildDir, ignore_errors=True) |
||||
|
os.makedirs(buildDir) |
||||
|
logfile.write("Build directory is " + buildDir + "\n") |
||||
|
print "\t\tdone" |
||||
|
|
||||
|
if success: |
||||
|
print "\tInvoking cmake ..." |
||||
|
cmakeCommand = "cmake .. {}".format(cmakeArguments) |
||||
|
logfile.write ("\n\n CALLING CMAKE \n\n" + cmakeCommand + "\n") |
||||
|
try: |
||||
|
cmakeOutput = subprocess.check_output("cd " + buildDir + "; " + cmakeCommand , shell=True,stderr=subprocess.STDOUT) |
||||
|
print "\t\tdone" |
||||
|
logfile.write(cmakeOutput) |
||||
|
except subprocess.CalledProcessError as e: |
||||
|
success=False |
||||
|
print "\t\tfail" |
||||
|
print e.output |
||||
|
logfile.write(e.output) |
||||
|
|
||||
|
if success: |
||||
|
print "\tInvoking make ..." |
||||
|
makeCommand = "make {}".format(globalMakeArguments) |
||||
|
logfile.write ("\n\n CALLING MAKE \n\n" + makeCommand + "\n") |
||||
|
try: |
||||
|
makeOutput = subprocess.check_output("cd " + buildDir + "; " + makeCommand , shell=True,stderr=subprocess.STDOUT) |
||||
|
print "\t\tdone" |
||||
|
logfile.write(makeOutput) |
||||
|
except subprocess.CalledProcessError as e: |
||||
|
success=False |
||||
|
print "\t\tfail" |
||||
|
print e.output |
||||
|
logfile.write(e.output) |
||||
|
|
||||
|
if success: |
||||
|
print "\tInvoking make check..." |
||||
|
makeCheckCommand = "make check" |
||||
|
logfile.write ("\n\n CALLING MAKE CHECK \n\n" + makeCheckCommand + "\n") |
||||
|
try: |
||||
|
makeCheckOutput = subprocess.check_output("cd " + buildDir + "; " + makeCheckCommand , shell=True,stderr=subprocess.STDOUT) |
||||
|
print "\t\tdone" |
||||
|
logfile.write(makeCheckOutput) |
||||
|
except subprocess.CalledProcessError as e: |
||||
|
success=False |
||||
|
print "\t\tfail" |
||||
|
print e.output |
||||
|
logfile.write(e.output) |
||||
|
|
||||
|
localEndTime = time.time() |
||||
|
if success: |
||||
|
print "\tConfiguration build and tested successfully within {} minutes.".format(int((localEndTime - localStartTime)/60)) |
||||
|
else: |
||||
|
print "\tAn error occurred for this configuration." |
||||
|
unsuccessfulConfigs += buildDir + " with arguments " + cmakeArguments + "\n" |
||||
|
|
||||
|
configId += 1 |
||||
|
globalEndTime = time.time() |
||||
|
print "All tests completed after {} minutes.".format(int((globalEndTime - globalStartTime)/60)) |
||||
|
if unsuccessfulConfigs == "": |
||||
|
print "All configurations were build and tested successfully." |
||||
|
else: |
||||
|
print "The following configurations failed: \n" + unsuccessfulConfigs |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,5 @@ |
|||||
|
-DSTORM_USE_CLN_EA=OFF -DSTORM_USE_CLN_RF=OFF |
||||
|
-DSTORM_USE_CLN_EA=OFF -DSTORM_USE_CLN_RF=ON |
||||
|
-DSTORM_USE_CLN_EA=ON -DSTORM_USE_CLN_RF=OFF |
||||
|
-DSTORM_USE_CLN_EA=ON -DSTORM_USE_CLN_RF=ON |
||||
|
-DCMAKE_BUILD_TYPE=DEBUG -DSTORM_DEVELOPER=ON |
Write
Preview
Loading…
Cancel
Save
Reference in new issue