src/Pure/Admin/isabelle_cronjob.scala
changeset 64405 81bac77929d9
parent 64399 c46e26512e0f
child 64409 70c87ca55f2c
equal deleted inserted replaced
64404:d75397e0aad5 64405:81bac77929d9
    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