plain identify job for Isabelle + AFP, independent of any Isabelle technology;
authorwenzelm
Fri, 03 Nov 2017 17:27:00 +0100
changeset 66995 9cb263dbb2f7
parent 66994 38fd865aae45
child 66996 22ca0f37f491
plain identify job for Isabelle + AFP, independent of any Isabelle technology;
Admin/cronjob/README
Admin/cronjob/crontab.lxbroy5
Admin/cronjob/plain_identify
src/Pure/Admin/build_log.scala
--- a/Admin/cronjob/README	Fri Nov 03 14:14:17 2017 +0100
+++ b/Admin/cronjob/README	Fri Nov 03 17:27:00 2017 +0100
@@ -1,13 +1,14 @@
 Administrative Isabelle cronjob at TUM
 ======================================
 
+- jobs: manual installation on target directory:
+    cp "$ISABELLE_HOME/Admin/cronjob/self_update "$HOME/cronjob/self_update"
+    cp "$ISABELLE_HOME/Admin/cronjob/plain_identify "$HOME/cronjob/plain_identify"
+
 - crontab: manual update on target machine
     crontab -l
     crontab -e
 
-- self_update: manual installation on target directory
-    cp "$ISABELLE_HOME/Admin/cronjob/self_update "$HOME/cronjob/self_update"
-
 - $HOME/cronjob/run/ -- run-time state
 
 - $HOME/cronjob/log/ -- cumulative log area
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Admin/cronjob/crontab.lxbroy5	Fri Nov 03 17:27:00 2017 +0100
@@ -0,0 +1,4 @@
+SHELL=/bin/bash
+MAILTO=wenzelm
+
+47 00 * * *       $HOME/cronjob/plain_identify
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Admin/cronjob/plain_identify	Fri Nov 03 17:27:00 2017 +0100
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# Plain identify job for Isabelle + AFP
+#
+
+set -e
+
+source "$HOME/.bashrc"
+
+LANG=C
+
+REPOS_DIR="$HOME/cronjob/plain_identify_repos"
+ISABELLE_REPOS_SOURCE="http://isabelle.in.tum.de/repos/isabelle"
+AFP_REPOS_SOURCE="https://bitbucket.org/isa-afp/afp-devel"
+
+function setup_repos ()
+{
+  local NAME="$1"
+  local SOURCE="$2"
+  mkdir -p "$REPOS_DIR"
+  if [ ! -d "$REPOS_DIR/$NAME" ]; then
+    hg clone --noupdate -q "$SOURCE" "$REPOS_DIR/$NAME"
+  fi
+}
+
+function identify_repos ()
+{
+  local NAME="$1"
+  hg pull -R "$REPOS_DIR/$NAME" -q
+  local ID="$(hg tip -R "$REPOS_DIR/$NAME" --template "{node|short}")"
+  echo "$NAME version: $ID"
+}
+
+setup_repos "Isabelle" "$ISABELLE_REPOS_SOURCE"
+setup_repos "AFP" "$AFP_REPOS_SOURCE"
+
+NOW="$(date --rfc-3339=ns)"
+LOG_DIR="$HOME/cronjob/log/$(date -d "$NOW" "+%Y")"
+LOG_SECONDS="$(($(date -d "$NOW" +"%s") - $(date -d 'today 00:00:00' "+%s")))"
+LOG_NAME="plain_identify_$(date -d "$NOW" "+%Y-%m-%d").$(printf "%05d" "$LOG_SECONDS").log"
+
+mkdir -p "$LOG_DIR"
+
+{
+  echo -n "isabelle_identify: "
+  date -d "$NOW" "+%a %b %-d %H:%M:%S %Z %Y"
+  echo
+  identify_repos "Isabelle"
+  identify_repos "AFP"
+} > "$LOG_DIR/$LOG_NAME"
--- a/src/Pure/Admin/build_log.scala	Fri Nov 03 14:14:17 2017 +0100
+++ b/src/Pure/Admin/build_log.scala	Fri Nov 03 17:27:00 2017 +0100
@@ -133,8 +133,8 @@
 
     def is_log(file: JFile,
       prefixes: List[String] =
-        List(Build_History.log_prefix, Identify.log_prefix, Isatest.log_prefix,
-          AFP_Test.log_prefix, Jenkins.log_prefix),
+        List(Build_History.log_prefix, Identify.log_prefix, Identify.log_prefix2,
+          Isatest.log_prefix, AFP_Test.log_prefix, Jenkins.log_prefix),
       suffixes: List[String] = List(".log", ".log.gz", ".log.xz")): Boolean =
     {
       val name = file.getName
@@ -314,9 +314,11 @@
   object Identify
   {
     val log_prefix = "isabelle_identify_"
+    val log_prefix2 = "plain_identify_"
 
     def engine(log_file: Log_File): String =
       if (log_file.name.startsWith(Jenkins.log_prefix)) "jenkins_identify"
+      else if (log_file.name.startsWith(log_prefix2)) "plain_identify"
       else "identify"
 
     def content(date: Date, isabelle_version: Option[String], afp_version: Option[String]): String =