--- a/src/Pure/Admin/isabelle_cronjob.scala Tue May 09 20:36:34 2017 +0200
+++ b/src/Pure/Admin/isabelle_cronjob.scala Tue May 09 21:06:11 2017 +0200
@@ -360,9 +360,7 @@
Logger_Task("build_log_database",
logger => Isabelle_Devel.build_log_database(logger.options)),
Logger_Task("build_status",
- logger =>
- Build_Status.build_status(logger.options,
- target_dir = Isabelle_Devel.build_status_dir)))))))
+ logger => Isabelle_Devel.build_status(logger.options)))))))
log_service.shutdown()
--- a/src/Pure/Admin/isabelle_devel.scala Tue May 09 20:36:34 2017 +0200
+++ b/src/Pure/Admin/isabelle_devel.scala Tue May 09 21:06:11 2017 +0200
@@ -18,8 +18,6 @@
val standard_log_dirs =
List(Path.explode("~/log"), Path.explode("~/afp/log"), Path.explode("~/cronjob/log"))
- val build_status_dir = root + Path.explode(BUILD_STATUS)
-
/* index */
@@ -60,20 +58,10 @@
{
Isabelle_System.with_tmp_dir("isadist")(base_dir =>
{
- val release_snapshot_dir = root + Path.explode(RELEASE_SNAPSHOT)
-
- val new_snapshot = release_snapshot_dir.ext("new")
- val old_snapshot = release_snapshot_dir.ext("old")
-
- Isabelle_System.rm_tree(new_snapshot)
- Isabelle_System.rm_tree(old_snapshot)
-
- Build_Release.build_release(base_dir, rev = rev, afp_rev = afp_rev,
- parallel_jobs = parallel_jobs, remote_mac = remote_mac, website = Some(new_snapshot))
-
- if (release_snapshot_dir.is_dir) File.move(release_snapshot_dir, old_snapshot)
- File.move(new_snapshot, release_snapshot_dir)
- Isabelle_System.rm_tree(old_snapshot)
+ Isabelle_System.update_directory(root + Path.explode(RELEASE_SNAPSHOT),
+ website_dir =>
+ Build_Release.build_release(base_dir, rev = rev, afp_rev = afp_rev,
+ parallel_jobs = parallel_jobs, remote_mac = remote_mac, website = Some(website_dir)))
})
}
@@ -89,4 +77,13 @@
store.snapshot_database(db, root + Path.explode(BUILD_LOG_DB))
})
}
+
+
+ /* present build status */
+
+ def build_status(options: Options)
+ {
+ Isabelle_System.update_directory(root + Path.explode(BUILD_STATUS),
+ dir => Build_Status.build_status(options, target_dir = dir))
+ }
}
--- a/src/Pure/System/isabelle_system.scala Tue May 09 20:36:34 2017 +0200
+++ b/src/Pure/System/isabelle_system.scala Tue May 09 21:06:11 2017 +0200
@@ -237,6 +237,24 @@
}
+ /* quasi-atomic update of directory */
+
+ def update_directory(dir: Path, f: Path => Unit)
+ {
+ val new_dir = dir.ext("new")
+ val old_dir = dir.ext("old")
+
+ rm_tree(new_dir)
+ rm_tree(old_dir)
+
+ f(new_dir)
+
+ if (dir.is_dir) File.move(dir, old_dir)
+ File.move(new_dir, dir)
+ rm_tree(old_dir)
+ }
+
+
/** external processes **/