src/Pure/Admin/build_release.scala
changeset 70101 4ae335fd3a54
parent 70099 9b9c1192f972
child 70102 e48ffba6b557
equal deleted inserted replaced
70100:d9ea307aac2a 70101:4ae335fd3a54
   220     Isabelle_System.gnutar(args, dir = dir).check
   220     Isabelle_System.gnutar(args, dir = dir).check
   221 
   221 
   222 
   222 
   223   /* build heaps on remote server */
   223   /* build heaps on remote server */
   224 
   224 
   225   def remote_build_heaps(
   225   private def remote_build_heaps(
   226     options: Options, family: Platform.Family.Value, local_dir: Path, build_sessions: List[String])
   226     options: Options,
   227   {
   227     platform: Platform.Family.Value,
   228     val server_option = "build_release_server_" + family.toString
   228     build_sessions: List[String],
       
   229     local_dir: Path)
       
   230   {
       
   231     val server_option = "build_release_server_" + platform.toString
   229     options.string(server_option) match {
   232     options.string(server_option) match {
   230       case SSH.Target(user, host) =>
   233       case SSH.Target(user, host) =>
   231         using(SSH.open_session(options, host = host, user = user))(ssh =>
   234         using(SSH.open_session(options, host = host, user = user))(ssh =>
   232         {
   235         {
   233           Isabelle_System.with_tmp_file("tmp", "tar")(local_tmp_tar =>
   236           Isabelle_System.with_tmp_file("tmp", "tar")(local_tmp_tar =>
   268     official_release: Boolean = false,
   271     official_release: Boolean = false,
   269     proper_release_name: Option[String] = None,
   272     proper_release_name: Option[String] = None,
   270     platform_families: List[Platform.Family.Value] = default_platform_families,
   273     platform_families: List[Platform.Family.Value] = default_platform_families,
   271     more_components: List[Path] = Nil,
   274     more_components: List[Path] = Nil,
   272     website: Option[Path] = None,
   275     website: Option[Path] = None,
       
   276     build_sessions: List[String] = Nil,
   273     build_library: Boolean = false,
   277     build_library: Boolean = false,
   274     parallel_jobs: Int = 1): Release =
   278     parallel_jobs: Int = 1): Release =
   275   {
   279   {
   276     val hg = Mercurial.repository(Path.explode("$ISABELLE_HOME"))
   280     val hg = Mercurial.repository(Path.explode("$ISABELLE_HOME"))
   277 
   281 
   484             }
   488             }
   485           }) ::: List(Path.explode("src/Tools/jEdit/dist/jedit.jar"))
   489           }) ::: List(Path.explode("src/Tools/jEdit/dist/jedit.jar"))
   486         }
   490         }
   487 
   491 
   488         val jedit_props = Path.explode("src/Tools/jEdit/dist/properties/jEdit.props")
   492         val jedit_props = Path.explode("src/Tools/jEdit/dist/properties/jEdit.props")
       
   493 
       
   494 
       
   495         // build heaps
       
   496 
       
   497         if (build_sessions.nonEmpty) {
       
   498           progress.echo("Building " + commas(build_sessions) + " ...")
       
   499           remote_build_heaps(options, platform, build_sessions, isabelle_target)
       
   500         }
   489 
   501 
   490 
   502 
   491         // application bundling
   503         // application bundling
   492 
   504 
   493         platform match {
   505         platform match {
   746       var afp_rev = ""
   758       var afp_rev = ""
   747       var components_base: Path = Components.default_components_base
   759       var components_base: Path = Components.default_components_base
   748       var official_release = false
   760       var official_release = false
   749       var proper_release_name: Option[String] = None
   761       var proper_release_name: Option[String] = None
   750       var website: Option[Path] = None
   762       var website: Option[Path] = None
       
   763       var build_sessions: List[String] = Nil
   751       var more_components: List[Path] = Nil
   764       var more_components: List[Path] = Nil
   752       var parallel_jobs = 1
   765       var parallel_jobs = 1
   753       var build_library = false
   766       var build_library = false
   754       var options = Options.init()
   767       var options = Options.init()
   755       var platform_families = default_platform_families
   768       var platform_families = default_platform_families
   763     -C DIR       base directory for Isabelle components (default: """ +
   776     -C DIR       base directory for Isabelle components (default: """ +
   764         Components.default_components_base + """)
   777         Components.default_components_base + """)
   765     -O           official release (not release-candidate)
   778     -O           official release (not release-candidate)
   766     -R RELEASE   proper release with name
   779     -R RELEASE   proper release with name
   767     -W WEBSITE   produce minimal website in given directory
   780     -W WEBSITE   produce minimal website in given directory
       
   781     -b SESSIONS  build platform-specific session images (separated by commas)
   768     -c ARCHIVE   clean bundling with additional component .tar.gz archive
   782     -c ARCHIVE   clean bundling with additional component .tar.gz archive
   769     -j INT       maximum number of parallel jobs (default 1)
   783     -j INT       maximum number of parallel jobs (default 1)
   770     -l           build library
   784     -l           build library
   771     -o OPTION    override Isabelle system OPTION (via NAME=VAL or NAME)
   785     -o OPTION    override Isabelle system OPTION (via NAME=VAL or NAME)
   772     -p NAMES     platform families (default: """ + default_platform_families.mkString(",") + """)
   786     -p NAMES     platform families (default: """ + default_platform_families.mkString(",") + """)
   777         "A:" -> (arg => afp_rev = arg),
   791         "A:" -> (arg => afp_rev = arg),
   778         "C:" -> (arg => components_base = Path.explode(arg)),
   792         "C:" -> (arg => components_base = Path.explode(arg)),
   779         "O" -> (_ => official_release = true),
   793         "O" -> (_ => official_release = true),
   780         "R:" -> (arg => proper_release_name = Some(arg)),
   794         "R:" -> (arg => proper_release_name = Some(arg)),
   781         "W:" -> (arg => website = Some(Path.explode(arg))),
   795         "W:" -> (arg => website = Some(Path.explode(arg))),
       
   796         "b:" -> (arg => build_sessions = space_explode(',', arg)),
   782         "c:" -> (arg =>
   797         "c:" -> (arg =>
   783           {
   798           {
   784             val path = Path.explode(arg)
   799             val path = Path.explode(arg)
   785             Components.Archive.get_name(path.file_name)
   800             Components.Archive.get_name(path.file_name)
   786             more_components = more_components ::: List(path)
   801             more_components = more_components ::: List(path)
   803         progress = progress, rev = rev, afp_rev = afp_rev, official_release = official_release,
   818         progress = progress, rev = rev, afp_rev = afp_rev, official_release = official_release,
   804         proper_release_name = proper_release_name, website = website,
   819         proper_release_name = proper_release_name, website = website,
   805         platform_families =
   820         platform_families =
   806           if (platform_families.isEmpty) default_platform_families
   821           if (platform_families.isEmpty) default_platform_families
   807           else platform_families,
   822           else platform_families,
   808         more_components = more_components, build_library = build_library,
   823         more_components = more_components, build_sessions = build_sessions,
   809         parallel_jobs = parallel_jobs)
   824         build_library = build_library, parallel_jobs = parallel_jobs)
   810     }
   825     }
   811   }
   826   }
   812 }
   827 }