import glob import sys import subprocess import os def OSinfo(runthis): red = lambda text: '\033[0;31m' + text + '\033[0m' osstdout = subprocess.Popen(runthis, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) theInfo = osstdout.communicate()[0].strip() if osstdout.returncode!=0: print(red(runthis+" FAILED")) print(theInfo) sys.exit() def generate_compile_job_irene(revision): with open("job_compile_irene.sh", "w") as f: f.write("#!/bin/bash\n") f.write("#=====================================\n") f.write("#script generated by config_compile.py\n") f.write("#=====================================\n") f.write("#MSUB -r XIOS_rev"+revision+"\n") f.write("#MSUB -o client_output.out\n") f.write("#MSUB -e client_error.err\n") f.write("#MSUB -eo\n") f.write("#MSUB -c 48\n") f.write("#MSUB -n 1\n") f.write("#MSUB -X\n") f.write("#MSUB -x\n") f.write("#MSUB -T 1800\n") f.write("#MSUB -q skylake\n") f.write("#MSUB -A gen0826\n") f.write("#MSUB -Q test\n") f.write("#MSUB -m work,scratch\n") f.write("cd $BRIDGE_MSUB_PWD\n") f.write("cmake .\n") f.write("ctest -V\n") f.write("exit\n") def generate_compile_job_jeanzay(revision): print("generating compile job for jz") with open("job_compile_jeanzay.sh", "w") as f: f.write("#!/bin/bash\n") f.write("#=====================================\n") f.write("#script generated by config_compile.py\n") f.write("#=====================================\n") f.write("#SBATCH --ntasks=1\n") f.write("#SBATCH --cpus-per-task=40\n") f.write("#SBATCH --hint=nomultithread\n") f.write("#SBATCH -t 00:30:00\n") f.write("#SBATCH -o output.out\n") f.write("#SBATCH -e error.err \n") f.write("#SBATCH -A psl@cpu\n") f.write("#SBATCH --job-name=XIOS_rev"+revision+"\n") f.write("cd ${SLURM_SUBMIT_DIR}\n") f.write("cmake .\n") f.write("ctest -V\n") f.write("exit\n") def main(): machine=os.getenv('xios_machine_name') revision=os.getenv('revision') default_nb_config = 2 nb_config = 1 configs = [0]*default_nb_config configs_arg = [[], []] f=open("compile_param_"+machine+".def", "r") for line in f: line = line.strip() if len(line) != 0: if not line.startswith("#"): nb_config = nb_config * (line.count(",")+1) line = line.replace(",", "") line = line.replace("=", "") if line.startswith("arch"): line = line.replace("arch", "") for word in line.split(): configs[0] += 1 configs_arg[0].append(word) elif line.startswith("mode"): line = line.replace("mode", "") for word in line.split(): configs[1] += 1 configs_arg[1].append(word) f.close() f=open("CMakeLists.txt", "w") f.write("#######################################\n") f.write("# file generated by config_compile.py #\n") f.write("# DO NOT modify #\n") f.write("#######################################\n\n") f.write("cmake_minimum_required(VERSION 2.8.12.2)\n\n") f.write("project(generic_testcase)\n\n") f.write("find_package(PythonInterp REQUIRED)\n\n") f.write("enable_testing()\n\n") for i in range(len(configs_arg[0])): for j in range(len(configs_arg[1])): build_dir_name = configs_arg[0][i]+"_"+configs_arg[1][j] g=open("build_"+revision+"_"+machine+"_"+build_dir_name+".txt", "w") g.write("arch "+configs_arg[0][i]+"\n") g.write("mode "+configs_arg[1][j]+"\n") g.write("machine "+machine+"\n") g.write("revision "+revision+"\n") g.close() f.write("add_test( NAME "+build_dir_name+'\n') f.write(" COMMAND bash -c \"source ../ARCH/arch-"+configs_arg[0][i]+".env && cd ../.. && ./make_xios --arch_path `pwd`/xios_test_suite/ARCH --arch "+configs_arg[0][i]+" --"+configs_arg[1][j]+" --job 16 --build_dir xios_test_suite/BUILD/build_"+build_dir_name+" && echo $? >> xios_test_suite/COMPILE/build_"+revision+"_"+machine+"_"+build_dir_name+".txt\")\n\n") f.write("set_tests_properties( "+build_dir_name+" PROPERTIES\n") f.write(" FAIL_REGULAR_EXPRESSION \"failed\")\n\n") f.close() globals()['generate_compile_job_'+machine](revision) if __name__== "__main__": main()