| author | wenzelm | 
| Fri, 06 Mar 2020 20:33:16 +0100 | |
| changeset 71521 | e977609c30eb | 
| parent 69958 | 70dc3c4e9469 | 
| child 71579 | 9b49538845cc | 
| permissions | -rw-r--r-- | 
| 66790 | 1 | /* Title: Pure/Tools/build_docker.scala | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 2 | Author: Makarius | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 3 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 4 | Build docker image from Isabelle application bundle for Linux. | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 5 | */ | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 6 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 7 | package isabelle | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 8 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 9 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 10 | object Build_Docker | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 11 | {
 | 
| 64942 | 12 | private val default_base = "ubuntu" | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 13 |   private lazy val default_logic = Isabelle_System.getenv("ISABELLE_LOGIC")
 | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 14 | |
| 69957 
e3217c6d6467
updated docker setup: lib32stdc++6 is no longer required for polyml-5.8, libfontconfig1 is required for headless jdk-11;
 wenzelm parents: 
69873diff
changeset | 15 | private val Isabelle_Name = """^.*?(Isabelle[^/\\:]+)_linux\.tar\.gz$""".r | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 16 | |
| 64899 
749d3a86c6a3
clarified signature: packages may be accessed in Isabelle/Scala;
 wenzelm parents: 
64897diff
changeset | 17 | val packages: List[String] = | 
| 69957 
e3217c6d6467
updated docker setup: lib32stdc++6 is no longer required for polyml-5.8, libfontconfig1 is required for headless jdk-11;
 wenzelm parents: 
69873diff
changeset | 18 |     List("curl", "less", "libfontconfig1", "libgomp1", "libwww-perl", "rlwrap", "unzip")
 | 
| 64894 | 19 | |
| 64899 
749d3a86c6a3
clarified signature: packages may be accessed in Isabelle/Scala;
 wenzelm parents: 
64897diff
changeset | 20 | val package_collections: Map[String, List[String]] = | 
| 64895 | 21 |     Map("X11" -> List("libx11-6", "libxext6", "libxrender1", "libxtst6", "libxi6"),
 | 
| 69958 | 22 | "latex" -> | 
| 23 |         List("texlive-fonts-extra", "texlive-font-utils", "texlive-latex-extra", "texlive-science"))
 | |
| 64894 | 24 | |
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 25 | def build_docker(progress: Progress, | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 26 | app_archive: String, | 
| 64942 | 27 | base: String = default_base, | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 28 | logic: String = default_logic, | 
| 64906 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 29 | no_build: Boolean = false, | 
| 64942 | 30 | entrypoint: Boolean = false, | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 31 | output: Option[Path] = None, | 
| 64899 
749d3a86c6a3
clarified signature: packages may be accessed in Isabelle/Scala;
 wenzelm parents: 
64897diff
changeset | 32 | more_packages: List[String] = Nil, | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 33 | tag: String = "", | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 34 | verbose: Boolean = false) | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 35 |   {
 | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 36 | val isabelle_name = | 
| 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 37 |       app_archive match {
 | 
| 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 38 | case Isabelle_Name(name) => name | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 39 |         case _ => error("Cannot determine Isabelle distribution name from " + app_archive)
 | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 40 | } | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 41 | val is_remote = Url.is_wellformed(app_archive) | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 42 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 43 | val dockerfile = | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 44 | """## Dockerfile for """ + isabelle_name + """ | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 45 | |
| 64942 | 46 | FROM """ + base + """ | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 47 | SHELL ["/bin/bash", "-c"] | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 48 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 49 | # packages | 
| 69958 | 50 | ENV DEBIAN_FRONTEND=noninteractive | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 51 | RUN apt-get -y update && \ | 
| 64941 | 52 | apt-get install -y """ + Bash.strings(packages ::: more_packages) + """ && \ | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 53 | apt-get clean | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 54 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 55 | # user | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 56 | RUN useradd -m isabelle && (echo isabelle:isabelle | chpasswd) | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 57 | USER isabelle | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 58 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 59 | # Isabelle | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 60 | WORKDIR /home/isabelle | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 61 | """ + | 
| 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 62 | (if (is_remote) | 
| 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 63 | "RUN curl --fail --silent " + Bash.string(app_archive) + " > Isabelle.tar.gz" | 
| 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 64 | else "COPY Isabelle.tar.gz .") + | 
| 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 65 | """ | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 66 | RUN tar xzf Isabelle.tar.gz && \ | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 67 | mv """ + isabelle_name + """ Isabelle && \ | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 68 | perl -pi -e 's,ISABELLE_HOME_USER=.*,ISABELLE_HOME_USER="\$USER_HOME/.isabelle",g;' Isabelle/etc/settings && \ | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 69 | perl -pi -e 's,ISABELLE_LOGIC=.*,ISABELLE_LOGIC=""" + logic + """,g;' Isabelle/etc/settings && \ | 
| 69873 | 70 | Isabelle/bin/isabelle build -o system_heaps -b """ + logic + | 
| 64942 | 71 | (if (entrypoint) """ | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 72 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 73 | ENTRYPOINT ["Isabelle/bin/isabelle"] | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 74 | """ | 
| 64942 | 75 | else "") | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 76 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 77 | output.foreach(File.write(_, dockerfile)) | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 78 | |
| 64906 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 79 |     if (!no_build) {
 | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 80 |       Isabelle_System.with_tmp_dir("docker")(tmp_dir =>
 | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 81 |         {
 | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 82 |           File.write(tmp_dir + Path.explode("Dockerfile"), dockerfile)
 | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 83 | |
| 64906 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 84 |           if (is_remote) {
 | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 85 | if (!Url.is_readable(app_archive)) | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 86 |               error("Cannot access remote archive " + app_archive)
 | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 87 | } | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 88 |           else File.copy(Path.explode(app_archive), tmp_dir + Path.explode("Isabelle.tar.gz"))
 | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 89 | |
| 64906 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 90 | val quiet_option = if (verbose) "" else " -q" | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 91 | val tag_option = if (tag == "") "" else " -t " + Bash.string(tag) | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 92 |           progress.bash("docker build" + quiet_option + tag_option + " " + File.bash_path(tmp_dir),
 | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 93 | echo = true).check | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 94 | }) | 
| 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 95 | } | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 96 | } | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 97 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 98 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 99 | /* Isabelle tool wrapper */ | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 100 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 101 | val isabelle_tool = | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 102 |     Isabelle_Tool("build_docker", "build Isabelle docker image", args =>
 | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 103 |     {
 | 
| 64942 | 104 | var base = default_base | 
| 105 | var entrypoint = false | |
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 106 | var logic = default_logic | 
| 64906 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 107 | var no_build = false | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 108 | var output: Option[Path] = None | 
| 64899 
749d3a86c6a3
clarified signature: packages may be accessed in Isabelle/Scala;
 wenzelm parents: 
64897diff
changeset | 109 | var more_packages: List[String] = Nil | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 110 | var verbose = false | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 111 | var tag = "" | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 112 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 113 | val getopts = | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 114 |         Getopts("""
 | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 115 | Usage: isabelle build_docker [OPTIONS] APP_ARCHIVE | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 116 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 117 | Options are: | 
| 64942 | 118 | -B NAME base image (default """ + quote(default_base) + """) | 
| 119 | -E set bin/isabelle as entrypoint | |
| 64894 | 120 |     -P NAME      additional Ubuntu package collection (""" +
 | 
| 64895 | 121 |           package_collections.keySet.toList.sorted.map(quote(_)).mkString(", ") + """)
 | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 122 | -l NAME default logic (default ISABELLE_LOGIC=""" + quote(default_logic) + """) | 
| 64906 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 123 | -n no docker build | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 124 | -o FILE output generated Dockerfile | 
| 64894 | 125 | -p NAME additional Ubuntu package | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 126 | -t TAG docker build tag | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 127 | -v verbose | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 128 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 129 | Build Isabelle docker image with default logic image, using a standard | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 130 | Isabelle application archive for Linux (local file or remote URL). | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 131 | |
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 132 | Examples: | 
| 64895 | 133 | |
| 69957 
e3217c6d6467
updated docker setup: lib32stdc++6 is no longer required for polyml-5.8, libfontconfig1 is required for headless jdk-11;
 wenzelm parents: 
69873diff
changeset | 134 | isabelle build_docker -E -t test/isabelle:Isabelle2019 Isabelle2019_linux.tar.gz | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 135 | |
| 69957 
e3217c6d6467
updated docker setup: lib32stdc++6 is no longer required for polyml-5.8, libfontconfig1 is required for headless jdk-11;
 wenzelm parents: 
69873diff
changeset | 136 | isabelle build_docker -E -n -o Dockerfile http://isabelle.in.tum.de/dist/Isabelle2019_linux.tar.gz | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 137 | |
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 138 | """, | 
| 64942 | 139 | "B:" -> (arg => base = arg), | 
| 140 | "E" -> (_ => entrypoint = true), | |
| 64894 | 141 | "P:" -> (arg => | 
| 142 |             package_collections.get(arg) match {
 | |
| 64899 
749d3a86c6a3
clarified signature: packages may be accessed in Isabelle/Scala;
 wenzelm parents: 
64897diff
changeset | 143 | case Some(ps) => more_packages :::= ps | 
| 64894 | 144 |               case None => error("Unknown package collection " + quote(arg))
 | 
| 145 | }), | |
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 146 | "l:" -> (arg => logic = arg), | 
| 64906 
49549acbf025
added option -n, e.g. useful to generate Dockerfile only;
 wenzelm parents: 
64905diff
changeset | 147 | "n" -> (_ => no_build = true), | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 148 | "o:" -> (arg => output = Some(Path.explode(arg))), | 
| 64899 
749d3a86c6a3
clarified signature: packages may be accessed in Isabelle/Scala;
 wenzelm parents: 
64897diff
changeset | 149 | "p:" -> (arg => more_packages ::= arg), | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 150 | "t:" -> (arg => tag = arg), | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 151 | "v" -> (_ => verbose = true)) | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 152 | |
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 153 | val more_args = getopts(args) | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 154 | val app_archive = | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 155 |         more_args match {
 | 
| 64905 
5e2eb9b14bbe
support for remote APP_ARCHIVE, with self-contained Dockerfile (e.g. for Docker Hub);
 wenzelm parents: 
64903diff
changeset | 156 | case List(arg) => arg | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 157 | case _ => getopts.usage() | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 158 | } | 
| 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 159 | |
| 64942 | 160 | build_docker(new Console_Progress(), app_archive, base = base, logic = logic, | 
| 161 | no_build = no_build, entrypoint = entrypoint, output = output, | |
| 162 | more_packages = more_packages, tag = tag, verbose = verbose) | |
| 66790 | 163 | }) | 
| 64890 
d8ccbd5305bf
build docker image from Isabelle application bundle for Linux;
 wenzelm parents: diff
changeset | 164 | } |