src/Pure/Admin/build_jcef.scala
author wenzelm
Wed, 15 Sep 2021 16:13:25 +0200
changeset 74313 6b998ce1b8cb
parent 73566 4e6b31ed7197
child 75102 678fae02f9b3
permissions -rw-r--r--
obsolete;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Admin/build_jcef.scala
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     3
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     4
Build Isabelle component for Java Chromium Embedded Framework (JCEF).
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     5
See also:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     6
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     7
  - https://github.com/jcefbuild/jcefbuild
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     8
  - https://github.com/chromiumembedded/java-cef
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
     9
*/
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    10
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    11
package isabelle
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    12
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    13
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    14
object Build_JCEF
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    15
{
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    16
  /* platform information */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    17
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    18
  sealed case class JCEF_Platform(platform_name: String, archive: String)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    19
  {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    20
    def archive_path: Path = Path.explode(archive)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    21
    def dir(component_dir: Path): Path = component_dir + Path.basic(platform_name)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    22
  }
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    23
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    24
  val platforms: List[JCEF_Platform] =
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    25
    List(
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    26
      JCEF_Platform("x86_64-linux", "linux64.zip"),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    27
      JCEF_Platform("x86_64-windows", "win64.zip"),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    28
      JCEF_Platform("x86_64-darwin", "macosx64.zip"))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    29
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    30
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    31
  /* build JCEF */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    32
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    33
  val default_url = "https://github.com/jcefbuild/jcefbuild/releases/download"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    34
  val default_version = "v1.0.10-83.4.0+gfd6631b+chromium-83.0.4103.106"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    35
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    36
  def build_jcef(
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    37
    base_url: String = default_url,
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    38
    version: String = default_version,
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    39
    target_dir: Path = Path.current,
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    40
    progress: Progress = new Progress): Unit =
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    41
  {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    42
    /* component name */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    43
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    44
    val Version = """^([^+]+).*$""".r
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    45
    val component =
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    46
      version match {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    47
        case Version(name) => "jcef-" + name
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    48
        case _ => error("Bad component version " + quote(version))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    49
      }
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    50
    val component_dir = Isabelle_System.new_directory(target_dir + Path.basic(component))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    51
    progress.echo("Component " + component_dir)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    52
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    53
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    54
    /* download and assemble platforms */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    55
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    56
    for (platform <- platforms) {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    57
      Isabelle_System.with_tmp_file("archive", ext = "zip")(archive_file =>
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    58
      {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    59
        val url = base_url + "/" + Url.encode(version) + "/" + platform.archive
73566
4e6b31ed7197 clarified signature: avoid tmp file;
wenzelm
parents: 73476
diff changeset
    60
        Isabelle_System.download_file(url, archive_file, progress = progress)
73476
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    61
        Isabelle_System.bash("unzip -x " + File.bash_path(archive_file),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    62
            cwd = component_dir.file).check
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    63
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    64
        val unzip_dir = component_dir + Path.explode("java-cef-build-bin")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    65
        for {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    66
          file <- File.find_files(unzip_dir.file).iterator
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    67
          name = file.getName if name.containsSlice("LICENSE")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    68
          target_file = component_dir + Path.explode(name) if !target_file.is_file
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    69
        } Isabelle_System.move_file(File.path(file), target_file)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    70
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    71
        val platform_dir = component_dir + Path.explode(platform.platform_name)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    72
        Isabelle_System.move_file(unzip_dir + Path.explode("bin"), platform_dir)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    73
        for {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    74
          file <- File.find_files(platform_dir.file).iterator
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    75
          name = file.getName
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    76
          if name.endsWith(".dll") || name.endsWith(".exe")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    77
        } File.set_executable(File.path(file), true)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    78
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    79
        Isabelle_System.rm_tree(unzip_dir)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    80
      })
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    81
    }
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    82
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    83
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    84
    /* settings */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    85
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    86
    val etc_dir = Isabelle_System.make_directory(component_dir + Path.basic("etc"))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    87
    File.write(etc_dir + Path.basic("settings"),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    88
      """# -*- shell-script -*- :mode=shellscript:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    89
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    90
if [ -d "$COMPONENT/${ISABELLE_WINDOWS_PLATFORM64:-$ISABELLE_PLATFORM64}" ]
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    91
then
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    92
  ISABELLE_JCEF_HOME="$COMPONENT/${ISABELLE_WINDOWS_PLATFORM64:-$ISABELLE_PLATFORM64}"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    93
  ISABELLE_JCEF_LIBRARY=""
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    94
  case "$ISABELLE_PLATFORM_FAMILY" in
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    95
    linux)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    96
      classpath "$ISABELLE_JCEF_HOME/"*.jar
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    97
      ISABELLE_JCEF_LIB="$ISABELLE_JCEF_HOME/lib/linux64"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    98
      ISABELLE_JCEF_LIBRARY="$ISABELLE_JCEF_LIB/libcef.so"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
    99
      export LD_LIBRARY_PATH="$ISABELLE_JCEF_LIB:$LD_LIBRARY_PATH"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   100
      ;;
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   101
    windows)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   102
      classpath "$ISABELLE_JCEF_HOME/"*.jar
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   103
      ISABELLE_JCEF_LIB="$ISABELLE_JCEF_HOME/lib/win64"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   104
      export PATH="$ISABELLE_JCEF_LIB:$PATH"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   105
      ;;
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   106
    macos)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   107
      classpath "$ISABELLE_JCEF_HOME/jcef_app.app/Contents/Java/"*.jar
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   108
      ISABELLE_JCEF_LIB="$ISABELLE_JCEF_HOME/jcef_app.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   109
      export JAVA_LIBRARY_PATH="$ISABELLE_JCEF_HOME/jcef_app.app/Contents/Java:$ISABELLE_JCEF_LIB:$JAVA_LIBRARY_PATH"
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   110
      ;;
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   111
  esac
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   112
fi
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   113
""")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   114
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   115
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   116
    /* README */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   117
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   118
    File.write(component_dir + Path.basic("README"),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   119
      """This distribution of Java Chromium Embedded Framework (JCEF)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   120
has been assembled from the binary builds from
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   121
""" + base_url + """
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   122
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   123
Examples invocations:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   124
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   125
* command-line
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   126
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   127
  isabelle env bash -c 'isabelle java -Djava.library.path="$(platform_path "$ISABELLE_JCEF_LIB")" tests.detailed.MainFrame'
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   128
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   129
* Scala REPL (e.g. Isabelle/jEdit Console)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   130
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   131
  import isabelle._
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   132
  System.setProperty("java.library.path", File.platform_path(Path.explode("$ISABELLE_JCEF_LIB")))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   133
  org.cef.CefApp.startup(Array())
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   134
  GUI_Thread.later { val frame = new tests.detailed.MainFrame(false, false, false, Array()); frame.setSize(1200,900); frame.setVisible(true) }
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   135
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   136
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   137
        Makarius
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   138
        """ + Date.Format.date(Date.now()) + "\n")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   139
  }
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   140
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   141
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   142
  /* Isabelle tool wrapper */
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   143
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   144
  val isabelle_tool =
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   145
    Isabelle_Tool("build_jcef", "build component for Java Chromium Embedded Framework",
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   146
      Scala_Project.here, args =>
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   147
    {
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   148
      var target_dir = Path.current
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   149
      var base_url = default_url
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   150
      var version = default_version
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   151
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   152
      val getopts = Getopts("""
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   153
Usage: isabelle build_jcef [OPTIONS]
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   154
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   155
  Options are:
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   156
    -D DIR       target directory (default ".")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   157
    -U URL       download URL (default: """" + default_url + """")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   158
    -V VERSION   version (default: """" + default_version + """")
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   159
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   160
  Build component for Java Chromium Embedded Framework.
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   161
""",
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   162
        "D:" -> (arg => target_dir = Path.explode(arg)),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   163
        "U:" -> (arg => base_url = arg),
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   164
        "V:" -> (arg => version = arg))
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   165
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   166
      val more_args = getopts(args)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   167
      if (more_args.nonEmpty) getopts.usage()
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   168
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   169
      val progress = new Console_Progress()
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   170
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   171
      build_jcef(base_url = base_url, version = version, target_dir = target_dir,
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   172
        progress = progress)
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   173
    })
6b480efe1bc3 support for Java Chromium Embedded Framework (JCEF): still somewhat fragile;
wenzelm
parents:
diff changeset
   174
}