32 |
32 |
33 |
33 |
34 |
34 |
35 /** particular tasks **/ |
35 /** particular tasks **/ |
36 |
36 |
37 /* identify Isabelle + AFP repository snapshots */ |
37 /* identify Isabelle + AFP repository snapshots and build release */ |
38 |
38 |
39 private val isabelle_identify = |
39 private val build_release = |
40 Logger_Task("isabelle_identify", logger => |
40 Logger_Task("build_release", logger => |
41 { |
41 Isabelle_System.with_tmp_dir("isadist")(base_dir => |
42 val isabelle_id = Mercurial.repository(isabelle_repos).id() |
42 { |
43 val afp_id = Mercurial.setup_repository(afp_source, afp_repos).id() |
43 val rev = Mercurial.repository(isabelle_repos).id() |
44 |
44 val afp_rev = Mercurial.setup_repository(afp_source, afp_repos).id() |
45 File.write(logger.log_dir + Build_Log.log_filename("isabelle_identify", logger.start_date), |
45 |
46 terminate_lines( |
46 File.write(logger.log_dir + Build_Log.log_filename("isabelle_identify", logger.start_date), |
47 List("isabelle_identify: " + Build_Log.print_date(logger.start_date), |
47 terminate_lines( |
48 "", |
48 List("isabelle_identify: " + Build_Log.print_date(logger.start_date), |
49 "Isabelle version: " + isabelle_id, |
49 "", |
50 "AFP version: " + afp_id))) |
50 "Isabelle version: " + rev, |
51 }) |
51 "AFP version: " + afp_rev))) |
|
52 |
|
53 val new_snapshot = release_snapshot.ext("new") |
|
54 val old_snapshot = release_snapshot.ext("old") |
|
55 |
|
56 Isabelle_System.rm_tree(new_snapshot) |
|
57 Isabelle_System.rm_tree(old_snapshot) |
|
58 |
|
59 Build_Release.build_release(base_dir, rev = rev, afp_rev = afp_rev, |
|
60 parallel_jobs = 4, remote_mac = "macbroy31", website = Some(new_snapshot)) |
|
61 |
|
62 if (release_snapshot.is_dir) File.mv(release_snapshot, old_snapshot) |
|
63 File.mv(new_snapshot, release_snapshot) |
|
64 Isabelle_System.rm_tree(old_snapshot) |
|
65 })) |
52 |
66 |
53 |
67 |
54 /* integrity test of build_history vs. build_history_base */ |
68 /* integrity test of build_history vs. build_history_base */ |
55 |
69 |
56 private val build_history_base = |
70 private val build_history_base = |
66 } { |
80 } { |
67 result.check |
81 result.check |
68 File.copy(log_path, logger.log_dir + log_path.base) |
82 File.copy(log_path, logger.log_dir + log_path.base) |
69 } |
83 } |
70 }) |
84 }) |
71 |
|
72 |
|
73 /* build release from repository snapshot */ |
|
74 |
|
75 private val build_release = |
|
76 Logger_Task("build_release", logger => |
|
77 Isabelle_System.with_tmp_dir("isadist")(base_dir => |
|
78 { |
|
79 val new_snapshot = release_snapshot.ext("new") |
|
80 val old_snapshot = release_snapshot.ext("old") |
|
81 |
|
82 Isabelle_System.rm_tree(new_snapshot) |
|
83 Isabelle_System.rm_tree(old_snapshot) |
|
84 |
|
85 Build_Release.build_release(base_dir, parallel_jobs = 4, |
|
86 remote_mac = "macbroy31", website = Some(new_snapshot)) |
|
87 |
|
88 if (release_snapshot.is_dir) File.mv(release_snapshot, old_snapshot) |
|
89 File.mv(new_snapshot, release_snapshot) |
|
90 Isabelle_System.rm_tree(old_snapshot) |
|
91 })) |
|
92 |
85 |
93 |
86 |
94 /* remote build_history */ |
87 /* remote build_history */ |
95 |
88 |
96 private sealed case class Remote_Build( |
89 private sealed case class Remote_Build( |
282 val rev = Mercurial.repository(isabelle_repos).id() |
275 val rev = Mercurial.repository(isabelle_repos).id() |
283 |
276 |
284 run(main_start_date, |
277 run(main_start_date, |
285 Logger_Task("isabelle_cronjob", _ => |
278 Logger_Task("isabelle_cronjob", _ => |
286 run_now( |
279 run_now( |
287 SEQ(List(isabelle_identify, build_history_base, build_release, |
280 SEQ(List(build_release, build_history_base, |
288 PAR(remote_builds.map(seq => SEQ(seq.map(remote_build_history(rev, _)))))))))) |
281 PAR(remote_builds.map(seq => SEQ(seq.map(remote_build_history(rev, _)))))))))) |
289 |
282 |
290 log_service.shutdown() |
283 log_service.shutdown() |
291 |
284 |
292 main_state_file.file.delete |
285 main_state_file.file.delete |