src/Pure/Admin/build_scala.scala
author wenzelm
Wed, 30 Nov 2022 15:19:57 +0100
changeset 76542 d6ce50a092eb
parent 76540 83de6e9ae983
child 76547 9fe5d8c70352
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Admin/build_scala.scala
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     3
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     4
Build Isabelle Scala component from official downloads.
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     5
*/
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     6
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     7
package isabelle
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     8
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
     9
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75381
diff changeset
    10
object Build_Scala {
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    11
  /* downloads */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    12
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    13
  sealed case class Download(
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    14
    name: String,
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    15
    version: String,
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    16
    url: String,
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    17
    physical_url: String = "",
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75381
diff changeset
    18
    base_version: String = "3"
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75381
diff changeset
    19
  ) {
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    20
    def make_url(template: String): String =
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    21
      template.replace("{V}", version).replace("{B}", base_version)
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    22
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    23
    def proper_url: String = make_url(proper_string(physical_url).getOrElse(url))
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    24
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    25
    def artifact: String =
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    26
      Library.take_suffix[Char](_ != '/', proper_url.toList)._2.mkString
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    27
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    28
    def get(path: Path, progress: Progress = new Progress): Unit =
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    29
      Isabelle_System.download_file(proper_url, path, progress = progress)
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    30
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    31
    def print: String =
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    32
      "  * " + name + " " + version +
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    33
        (if (base_version.nonEmpty) " for Scala " + base_version else "") +
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    34
        ":\n    " + make_url(url)
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    35
  }
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    36
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    37
  val main_download: Download =
76537
cdbe20024038 update to scala-3.2.1;
wenzelm
parents: 76518
diff changeset
    38
    Download("scala", "3.2.1", base_version = "",
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    39
      url = "https://github.com/lampepfl/dotty/releases/download/{V}/scala3-{V}.tar.gz")
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    40
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    41
  val lib_downloads: List[Download] = List(
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    42
    Download("scala-parallel-collections", "1.0.4",
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    43
      "https://mvnrepository.com/artifact/org.scala-lang.modules/scala-parallel-collections_{B}/{V}",
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    44
      physical_url = "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_{B}/{V}/scala-parallel-collections_{B}-{V}.jar"),
75421
3c710067b178 back to more ambitious scala-3.1.1 (see 8b7497992301);
wenzelm
parents: 75394
diff changeset
    45
    Download("scala-parser-combinators", "2.1.1",
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    46
      "https://mvnrepository.com/artifact/org.scala-lang.modules/scala-parser-combinators_{B}/{V}",
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    47
      physical_url = "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-parser-combinators_{B}/{V}/scala-parser-combinators_{B}-{V}.jar"),
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    48
    Download("scala-swing", "3.0.0",
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    49
      "https://mvnrepository.com/artifact/org.scala-lang.modules/scala-swing_{B}/{V}",
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    50
      physical_url = "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-swing_{B}/{V}/scala-swing_{B}-{V}.jar"),
75421
3c710067b178 back to more ambitious scala-3.1.1 (see 8b7497992301);
wenzelm
parents: 75394
diff changeset
    51
    Download("scala-xml", "2.1.0",
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    52
      "https://mvnrepository.com/artifact/org.scala-lang.modules/scala-xml_{B}/{V}",
75421
3c710067b178 back to more ambitious scala-3.1.1 (see 8b7497992301);
wenzelm
parents: 75394
diff changeset
    53
      physical_url = "https://repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_{B}/{V}/scala-xml_{B}-{V}.jar")
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    54
  )
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    55
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    56
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    57
  /* build Scala component */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    58
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    59
  def build_scala(
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    60
    target_dir: Path = Path.current,
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75381
diff changeset
    61
    progress: Progress = new Progress
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75381
diff changeset
    62
  ): Unit = {
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    63
    /* component */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    64
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    65
    val component_name = main_download.name + "-" + main_download.version
76518
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
    66
    val component_dir =
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
    67
      Components.Directory.create(target_dir + Path.basic(component_name), progress = progress)
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    68
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    69
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    70
    /* download */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    71
76542
wenzelm
parents: 76540
diff changeset
    72
    Isabelle_System.with_tmp_file("archive", ext = "tar.gz") { archive_path =>
wenzelm
parents: 76540
diff changeset
    73
      main_download.get(archive_path, progress = progress)
wenzelm
parents: 76540
diff changeset
    74
      Isabelle_System.extract(archive_path, component_dir.path, strip = true)
wenzelm
parents: 76540
diff changeset
    75
    }
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    76
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    77
    lib_downloads.foreach(download =>
76518
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
    78
      download.get(component_dir.lib + Path.basic(download.artifact), progress = progress))
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    79
76518
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
    80
    File.write(component_dir.LICENSE,
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    81
      Url.read(Url("https://www.apache.org/licenses/LICENSE-2.0.txt")))
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    82
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    83
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    84
    /* classpath */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    85
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 75381
diff changeset
    86
    val classpath: List[String] = {
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    87
      def no_function(name: String): String = "function " + name + "() {\n:\n}"
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    88
      val script =
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    89
        cat_lines(List(
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    90
          no_function("stty"),
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    91
          no_function("tput"),
76518
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
    92
          "PROG_HOME=" + File.bash_path(component_dir.path),
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
    93
          File.read(component_dir.path + Path.explode("bin/common"))
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    94
            .replace("scala_exit_status=127", "scala_exit_status=0"),
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    95
          "compilerJavaClasspathArgs",
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    96
          "echo \"$jvm_cp_args\""))
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    97
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    98
      val main_classpath = Path.split(Isabelle_System.bash(script).check.out).map(_.file_name)
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
    99
      val lib_classpath = lib_downloads.map(_.artifact)
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   100
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   101
      main_classpath ::: lib_classpath
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   102
    }
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   103
75378
14154ac511ba provide SCALA_INTERFACES for isabelle_setup;
wenzelm
parents: 75377
diff changeset
   104
    val interfaces =
14154ac511ba provide SCALA_INTERFACES for isabelle_setup;
wenzelm
parents: 75377
diff changeset
   105
      classpath.find(_.startsWith("scala3-interfaces"))
14154ac511ba provide SCALA_INTERFACES for isabelle_setup;
wenzelm
parents: 75377
diff changeset
   106
        .getOrElse(error("Missing jar for scala3-interfaces"))
14154ac511ba provide SCALA_INTERFACES for isabelle_setup;
wenzelm
parents: 75377
diff changeset
   107
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   108
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   109
    /* settings */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   110
76518
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
   111
    File.write(component_dir.settings,
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   112
      """# -*- shell-script -*- :mode=shellscript:
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   113
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   114
SCALA_HOME="$COMPONENT"
75378
14154ac511ba provide SCALA_INTERFACES for isabelle_setup;
wenzelm
parents: 75377
diff changeset
   115
SCALA_INTERFACES="$SCALA_HOME/lib/""" + interfaces + """"
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   116
""" + terminate_lines(classpath.map(jar => "classpath \"$SCALA_HOME/lib/" + jar + "\"")))
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   117
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   118
76327
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   119
    /* adhoc changes */
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   120
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   121
    val patched_scripts = List("bin/scala", "bin/scalac")
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   122
    for (name <- patched_scripts) {
76518
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
   123
      File.change(component_dir.path + Path.explode(name)) {
76327
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   124
        _.replace(""""-Dscala.home=$PROG_HOME"""", """"-Dscala.home=\"$PROG_HOME\""""")
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   125
      }
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   126
    }
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   127
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   128
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   129
    /* README */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   130
76518
b30b8e23383c clarified signature: more explicit types;
wenzelm
parents: 76327
diff changeset
   131
    File.write(component_dir.README,
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   132
      "This distribution of Scala integrates the following parts:\n\n" +
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   133
      (main_download :: lib_downloads).map(_.print).mkString("\n\n") + """
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   134
76327
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   135
Minor changes to """ + patched_scripts.mkString(" and ") + """ allow an installation location
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   136
with spaces in the directory name.
f70b015e4ac1 allow spaces in SCALA_HOME directory name;
wenzelm
parents: 76176
diff changeset
   137
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   138
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   139
        Makarius
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   140
        """ + Date.Format.date(Date.now()) + "\n")
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   141
  }
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   142
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   143
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   144
  /* Isabelle tool wrapper */
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   145
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   146
  val isabelle_tool =
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   147
    Isabelle_Tool("build_scala", "build Isabelle Scala component from official downloads",
75394
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   148
      Scala_Project.here,
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   149
      { args =>
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   150
        var target_dir = Path.current
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   151
75394
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   152
        val getopts = Getopts("""
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   153
Usage: isabelle build_scala [OPTIONS]
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   154
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   155
  Options are:
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   156
    -D DIR       target directory (default ".")
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   157
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   158
  Build Isabelle Scala component from official downloads.
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   159
""",
75394
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   160
          "D:" -> (arg => target_dir = Path.explode(arg)))
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   161
75394
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   162
        val more_args = getopts(args)
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   163
        if (more_args.nonEmpty) getopts.usage()
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   164
75394
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   165
        val progress = new Console_Progress()
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   166
75394
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   167
        build_scala(target_dir = target_dir, progress = progress)
42267c650205 tuned formatting;
wenzelm
parents: 75393
diff changeset
   168
      })
75377
4ce7d95612cb build Isabelle Scala component from official downloads (for scala-3.1.1);
wenzelm
parents:
diff changeset
   169
}