equal
deleted
inserted
replaced
14 from mira import schedule, misc |
14 from mira import schedule, misc |
15 from mira.environment import scheduler |
15 from mira.environment import scheduler |
16 from mira import repositories |
16 from mira import repositories |
17 |
17 |
18 # build and evaluation tools |
18 # build and evaluation tools |
|
19 |
|
20 DEFAULT_TIMEOUT = 2 * 60 * 60 |
|
21 SMLNJ_TIMEOUT = 72 * 60 * 60 |
19 |
22 |
20 def prepare_isabelle_repository(loc_isabelle, loc_dependency_heaps, more_settings=''): |
23 def prepare_isabelle_repository(loc_isabelle, loc_dependency_heaps, more_settings=''): |
21 |
24 |
22 # patch settings |
25 # patch settings |
23 extra_settings = ''' |
26 extra_settings = ''' |
89 'image_size': extract_image_size(isabelle_home) } |
92 'image_size': extract_image_size(isabelle_home) } |
90 |
93 |
91 |
94 |
92 def isabelle_build(env, case, paths, dep_paths, playground, *cmdargs, **kwargs): |
95 def isabelle_build(env, case, paths, dep_paths, playground, *cmdargs, **kwargs): |
93 |
96 |
94 more_settings=kwargs.get('more_settings', '') |
97 more_settings = kwargs.get('more_settings', '') |
95 keep_results=kwargs.get('keep_results', True) |
98 keep_results = kwargs.get('keep_results', True) |
|
99 timeout = kwargs.get('timeout', DEFAULT_TIMEOUT) |
96 |
100 |
97 isabelle_home = paths[0] |
101 isabelle_home = paths[0] |
98 |
102 |
99 # copy over build results from dependencies |
103 # copy over build results from dependencies |
100 heap_dir = path.join(isabelle_home, 'heaps') |
104 heap_dir = path.join(isabelle_home, 'heaps') |
116 ''' |
120 ''' |
117 |
121 |
118 prepare_isabelle_repository(isabelle_home, None, more_settings=more_settings) |
122 prepare_isabelle_repository(isabelle_home, None, more_settings=more_settings) |
119 os.chdir(isabelle_home) |
123 os.chdir(isabelle_home) |
120 |
124 |
|
125 args = (['-o', 'timeout=%s' % timeout] if timeout is not None else []) + cmdargs |
|
126 |
121 # invoke build tool |
127 # invoke build tool |
122 (return_code, log) = env.run_process('%s/bin/isabelle' % isabelle_home, 'build', '-s', '-v', *cmdargs) |
128 (return_code, log) = env.run_process('%s/bin/isabelle' % isabelle_home, 'build', '-s', '-v', *args) |
123 |
129 |
124 # collect report |
130 # collect report |
125 return (return_code == 0, extract_isabelle_run_summary(log), |
131 return (return_code == 0, extract_isabelle_run_summary(log), |
126 extract_report_data(isabelle_home, log), {'log': log}, heap_dir if keep_results else None) |
132 extract_report_data(isabelle_home, log), {'log': log}, heap_dir if keep_results else None) |
127 |
133 |
324 ''' |
330 ''' |
325 |
331 |
326 @configuration(repos = [Isabelle], deps = [(Pure, [0])]) |
332 @configuration(repos = [Isabelle], deps = [(Pure, [0])]) |
327 def SML_HOL(*args): |
333 def SML_HOL(*args): |
328 """HOL image built with SML/NJ""" |
334 """HOL image built with SML/NJ""" |
329 return isabelle_build(*(args + ("-b", "HOL")), more_settings=smlnj_settings) |
335 return isabelle_build(*(args + ("-b", "HOL")), more_settings=smlnj_settings, timeout=SMLNJ_TIMEOUT) |
330 |
336 |
331 @configuration(repos = [Isabelle], deps = []) |
337 @configuration(repos = [Isabelle], deps = []) |
332 def SML_makeall(*args): |
338 def SML_makeall(*args): |
333 """SML/NJ build of all possible sessions""" |
339 """SML/NJ build of all possible sessions""" |
334 return isabelle_build(*(args + ("-j", "3", "-a")), more_settings=smlnj_settings) |
340 return isabelle_build(*(args + ("-j", "3", "-a")), more_settings=smlnj_settings, timeout=SMLNJ_TIMEOUT) |
335 |
341 |
336 |
342 |