clarified signature: prefer symbolic isabelle.Path over physical java.io.File;
authorwenzelm
Sat, 01 Jun 2024 12:31:06 +0200
changeset 80224 db92e0b6a11a
parent 80223 d389577a6fba
child 80225 d9ff4296e3b7
clarified signature: prefer symbolic isabelle.Path over physical java.io.File;
src/Pure/Admin/build_release.scala
src/Pure/Admin/component_bash_process.scala
src/Pure/Admin/component_csdp.scala
src/Pure/Admin/component_cygwin.scala
src/Pure/Admin/component_e.scala
src/Pure/Admin/component_foiltex.scala
src/Pure/Admin/component_jedit.scala
src/Pure/Admin/component_minisat.scala
src/Pure/Admin/component_polyml.scala
src/Pure/Admin/component_prismjs.scala
src/Pure/Admin/component_rsync.scala
src/Pure/Admin/component_spass.scala
src/Pure/Admin/component_vampire.scala
src/Pure/Admin/component_verit.scala
src/Pure/Admin/component_windows_app.scala
src/Pure/Admin/component_zipperposition.scala
src/Pure/Build/build_job.scala
src/Pure/General/bibtex.scala
src/Pure/General/ssh.scala
src/Pure/ML/ml_process.scala
src/Pure/ML/ml_statistics.scala
src/Pure/System/bash.scala
src/Pure/System/executable.scala
src/Pure/System/isabelle_process.scala
src/Pure/System/isabelle_system.scala
src/Pure/System/progress.scala
src/Pure/Thy/document_build.scala
src/Pure/Tools/dotnet_setup.scala
src/Pure/Tools/fontforge.scala
src/Pure/Tools/phabricator.scala
src/Tools/VSCode/src/component_vscode_extension.scala
src/Tools/VSCode/src/component_vscodium.scala
--- a/src/Pure/Admin/build_release.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/build_release.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -11,7 +11,7 @@
   /** release context **/
 
   private def execute(dir: Path, script: String): Unit =
-    Isabelle_System.bash(script, cwd = dir.file).check
+    Isabelle_System.bash(script, cwd = dir).check
 
   private def execute_tar(dir: Path, args: String, strip: Boolean = false): Process_Result =
     Isabelle_System.gnutar(args, dir = dir, strip = strip).check
--- a/src/Pure/Admin/component_bash_process.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_bash_process.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -176,7 +176,7 @@
     /* build */
 
     progress.echo("Building bash_process for " + platform_name + " ...")
-    progress.bash("cc ../bash_process.c -o bash_process", cwd = platform_dir.file).check
+    progress.bash("cc ../bash_process.c -o bash_process", cwd = platform_dir).check
 
 
     /* settings */
--- a/src/Pure/Admin/component_csdp.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_csdp.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -108,7 +108,7 @@
       }
 
       progress.bash(mingw.bash_script("make"),
-        cwd = source_dir.file,
+        cwd = source_dir,
         echo = progress.verbose).check
 
 
--- a/src/Pure/Admin/component_cygwin.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_cygwin.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -51,7 +51,7 @@
 
       (cygwin + Path.explode("Cygwin.bat")).file.delete
 
-      Isabelle_System.bash("rm -f cygwin/usr/share/man/man1/:.1.gz", cwd = tmp_dir.file).check
+      Isabelle_System.bash("rm -f cygwin/usr/share/man/man1/:.1.gz", cwd = tmp_dir).check
 
       val archive =
         target_dir + Path.explode("cygwin-" + Date.Format.alt_date(Date.now()) + ".tar.gz")
--- a/src/Pure/Admin/component_e.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_e.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -50,12 +50,12 @@
       progress.echo("Building E prover for " + platform_name + " ...")
 
       val build_options = {
-        val result = Isabelle_System.bash("./configure --help", cwd = source_dir.file)
+        val result = Isabelle_System.bash("./configure --help", cwd = source_dir)
         if (result.check.out.containsSlice("--enable-ho")) " --enable-ho" else ""
       }
 
       val build_script = "./configure" + build_options + " && make"
-      Isabelle_System.bash(build_script, cwd = source_dir.file,
+      Isabelle_System.bash(build_script, cwd = source_dir,
         progress_stdout = progress.echo(_, verbose = true),
         progress_stderr = progress.echo(_, verbose = true)).check
 
@@ -70,7 +70,7 @@
         if (path.is_file) Isabelle_System.copy_file(path, platform_dir)
       }
       Isabelle_System.bash("if [ -f eprover-ho ]; then mv eprover-ho eprover; fi",
-        cwd = platform_dir.file).check
+        cwd = platform_dir).check
 
 
       /* settings */
--- a/src/Pure/Admin/component_foiltex.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_foiltex.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -46,7 +46,7 @@
 
         Isabelle_System.extract(download_file, component_dir.path, strip = true)
 
-        Isabelle_System.bash("pdflatex foiltex.ins", cwd = component_dir.path.file).check
+        Isabelle_System.bash("pdflatex foiltex.ins", cwd = component_dir.path).check
         (component_dir.path + Path.basic("foiltex.log")).file.delete()
 
 
--- a/src/Pure/Admin/component_jedit.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_jedit.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -161,7 +161,7 @@
         if !File.is_backup(name)
       } {
         progress.bash("patch -p2 < " + File.bash_path(File.path(file)),
-          cwd = source_dir.file, echo = true).check
+          cwd = source_dir, echo = true).check
       }
 
       for { theme <- List("classic", "tango") } {
@@ -173,7 +173,7 @@
       progress.echo("Building jEdit ...")
       Isabelle_System.copy_dir(source_dir, tmp_source_dir)
       progress.bash("env JAVA_HOME=" + File.bash_platform_path(java_home) + " ant",
-        cwd = tmp_source_dir.file, echo = true).check
+        cwd = tmp_source_dir, echo = true).check
       Isabelle_System.copy_file(tmp_source_dir + Path.explode("build/jedit.jar"), jedit_patched_dir)
 
       val java_sources =
--- a/src/Pure/Admin/component_minisat.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_minisat.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -73,7 +73,7 @@
           _.replaceAll("--static", "").replaceAll("-Wl,-soname\\S+", "")
         }
       }
-      progress.bash("make r", source_dir.file, echo = progress.verbose).check
+      progress.bash("make r", cwd = source_dir, echo = progress.verbose).check
 
       Isabelle_System.copy_file(
         source_dir + Path.explode("build/release/bin/minisat").platform_exe, platform_dir)
--- a/src/Pure/Admin/component_polyml.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_polyml.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -77,7 +77,7 @@
           "arch -arch arm64 bash -c " + Bash.string(script)
         }
         else mingw.bash_script(script)
-      progress.bash(script1, cwd = cwd.file, redirect = redirect, echo = echo)
+      progress.bash(script1, cwd = cwd, redirect = redirect, echo = echo)
     }
 
 
--- a/src/Pure/Admin/component_prismjs.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_prismjs.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -35,7 +35,7 @@
 
     Isabelle_System.with_tmp_dir("tmp") { tmp_dir =>
       Isabelle_System.bash("npm init -y && npm install prismjs@" + Bash.string(version),
-        cwd = tmp_dir.file).check
+        cwd = tmp_dir).check
       Isabelle_System.copy_dir(tmp_dir + Path.explode("node_modules/prismjs"),
         component_dir.path, direct = true)
     }
--- a/src/Pure/Admin/component_rsync.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_rsync.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -73,7 +73,7 @@
       progress.echo("Building rsync for " + platform_name + " ...")
 
       val build_script = List("./configure " + Bash.strings(build_options.sorted), "make")
-      Isabelle_System.bash(build_script.mkString(" && "), cwd = source_dir.file,
+      Isabelle_System.bash(build_script.mkString(" && "), cwd = source_dir,
         progress_stdout = progress.echo(_, verbose = true),
         progress_stderr = progress.echo(_, verbose = true)).check
 
--- a/src/Pure/Admin/component_spass.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_spass.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -81,7 +81,7 @@
         }
       }
 
-      Isabelle_System.bash("make", cwd = source_dir.file,
+      Isabelle_System.bash("make", cwd = source_dir,
         progress_stdout = progress.echo(_, verbose = true),
         progress_stderr = progress.echo(_, verbose = true)).check
 
--- a/src/Pure/Admin/component_vampire.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_vampire.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -75,14 +75,14 @@
         (if (Platform.is_linux) "-DBUILD_SHARED_LIBS=0 " else "")
       val cmake_out =
         progress.bash("cmake " + cmake_opts + """-G "Unix Makefiles" .""",
-          cwd = source_dir.file, echo = progress.verbose).check.out
+          cwd = source_dir, echo = progress.verbose).check.out
 
       val Pattern = """-- Setting binary name to '?([^\s']*)'?""".r
       val binary =
         split_lines(cmake_out).collectFirst({ case Pattern(name) => name })
           .getOrElse(error("Failed to determine binary name from cmake output:\n" + cmake_out))
 
-      progress.bash("make -j" + jobs, cwd = source_dir.file, echo = progress.verbose).check
+      progress.bash("make -j" + jobs, cwd = source_dir, echo = progress.verbose).check
 
       Isabelle_System.copy_file(source_dir + Path.basic("bin") + Path.basic(binary).platform_exe,
         platform_dir + Path.basic("vampire").platform_exe)
--- a/src/Pure/Admin/component_verit.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_verit.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -70,7 +70,7 @@
         if (Platform.is_linux) "LDFLAGS=-Wl,-rpath,_DUMMY_" else ""
 
       progress.bash(mingw.bash_script("set -e\n./configure " + configure_options + "\nmake"),
-        cwd = source_dir.file, echo = progress.verbose).check
+        cwd = source_dir, echo = progress.verbose).check
 
 
       /* install */
--- a/src/Pure/Admin/component_windows_app.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_windows_app.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -73,7 +73,7 @@
       val build_script =
         List("""./configure --prefix="$PWD/target" --target=x86_64-w64-mingw32""",
           "make", "make install")
-      Isabelle_System.bash(build_script.mkString(" && "), cwd = tmp_dir.file,
+      Isabelle_System.bash(build_script.mkString(" && "), cwd = tmp_dir,
         progress_stdout = progress.echo(_, verbose = true),
         progress_stderr = progress.echo(_, verbose = true)).check
 
@@ -90,7 +90,7 @@
 
       Isabelle_System.download_file(sfx_url,
         tmp_dir + Path.basic(sfx_archive_name), progress = progress)
-      Isabelle_System.bash("7z x " + Bash.string(sfx_archive_name), cwd = tmp_dir.file).check
+      Isabelle_System.bash("7z x " + Bash.string(sfx_archive_name), cwd = tmp_dir).check
       Isabelle_System.copy_file(tmp_dir + Path.basic(sfx_name), component_dir.path)
 
 
--- a/src/Pure/Admin/component_zipperposition.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Admin/component_zipperposition.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -42,7 +42,7 @@
       progress.bash("isabelle ocaml_setup", echo = progress.verbose).check
 
       progress.echo("Building Zipperposition for " + platform_name + " ...")
-      progress.bash(cwd = build_dir.file, echo = progress.verbose,
+      progress.bash(cwd = build_dir, echo = progress.verbose,
         script = "isabelle_opam install -y --destdir=" + File.bash_path(build_dir) +
           " zipperposition=" + Bash.string(version)).check
 
--- a/src/Pure/Build/build_job.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Build/build_job.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -350,7 +350,7 @@
 
           val process =
             Isabelle_Process.start(options, session, session_background, session_heaps,
-              use_prelude = use_prelude, eval_main = eval_main, cwd = info.dir.file, env = env)
+              use_prelude = use_prelude, eval_main = eval_main, cwd = info.dir, env = env)
 
           val timeout_request: Option[Event_Timer.Request] =
             if (info.timeout_ignored) None
--- a/src/Pure/General/bibtex.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/General/bibtex.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -114,7 +114,7 @@
         tokens.iterator.map(p => p._1.source).mkString("", "\n", "\n"))
       File.write(tmp_dir + Path.explode("root.aux"),
         "\\bibstyle{plain}\n\\bibdata{root}\n\\citation{*}")
-      Isabelle_System.bash("\"$ISABELLE_BIBTEX\" root", cwd = tmp_dir.file)
+      Isabelle_System.bash("\"$ISABELLE_BIBTEX\" root", cwd = tmp_dir)
 
       val Error = """^(.*)---line (\d+) of file root.bib$""".r
       val Warning = """^Warning--(.+)$""".r
@@ -682,7 +682,7 @@
           (if (chronological) " -c" else "") +
           if_proper(title, " -h " + Bash.string(title) + " ") +
           " " + File.bash_path(in_file) + " " + File.bash_path(out_file),
-        cwd = tmp_dir.file).check
+        cwd = tmp_dir).check
 
       val html = File.read(tmp_dir + out_file)
 
--- a/src/Pure/General/ssh.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/General/ssh.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -161,7 +161,7 @@
         File.write(dir + Path.explode("script"), script)
         val result =
           Isabelle_System.bash(
-            make_command("sftp", opts = "-b script", args_host = true), cwd = dir.file).check
+            make_command("sftp", opts = "-b script", args_host = true), cwd = dir).check
         exit(dir)
         result
       }
--- a/src/Pure/ML/ml_process.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/ML/ml_process.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -36,7 +36,7 @@
     eval_main: String = "",
     args: List[String] = Nil,
     modes: List[String] = Nil,
-    cwd: JFile = null,
+    cwd: Path = Path.current,
     env: JMap[String, String] = Isabelle_System.settings(),
     redirect: Boolean = false,
     cleanup: () => Unit = () => ()
--- a/src/Pure/ML/ml_statistics.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/ML/ml_statistics.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -63,7 +63,7 @@
     Bash.process(env_prefix + "\"$POLYML_EXE\" -q --use src/Pure/ML/ml_statistics.ML --eval " +
         Bash.string("ML_Statistics.monitor " + ML_Syntax.print_long(pid) + " " +
           ML_Syntax.print_double(delay.seconds)),
-        cwd = Path.ISABELLE_HOME.file)
+        cwd = Path.ISABELLE_HOME)
       .result(progress_stdout = progress_stdout, strict = false).check
   }
 
--- a/src/Pure/System/bash.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/System/bash.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -66,7 +66,7 @@
   def process(script: String,
       description: String = "",
       ssh: SSH.System = SSH.Local,
-      cwd: JFile = null,
+      cwd: Path = Path.current,
       env: JMap[String, String] = Isabelle_System.settings(),
       redirect: Boolean = false,
       cleanup: () => Unit = () => ()): Process =
@@ -76,7 +76,7 @@
     script: String,
     description: String,
     ssh: SSH.System,
-    cwd: JFile,
+    cwd: Path,
     env: JMap[String, String],
     redirect: Boolean,
     cleanup: () => Unit
@@ -125,7 +125,12 @@
       }
 
     private val proc =
-      isabelle.setup.Environment.process_builder(proc_command, cwd, env, redirect).start()
+      isabelle.setup.Environment.process_builder(
+        proc_command,
+        if (cwd == null || cwd.is_current) null else cwd.file,
+        env,
+        redirect
+      ).start()
 
 
     // channels
@@ -340,8 +345,8 @@
               description = description,
               cwd =
                 XML.Decode.option(XML.Decode.string)(YXML.parse_body(cwd)) match {
-                  case None => null
-                  case Some(s) => Path.explode(s).file
+                  case None => Path.current
+                  case Some(s) => Path.explode(s)
                 },
               env =
                 Isabelle_System.settings(
--- a/src/Pure/System/executable.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/System/executable.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -19,7 +19,7 @@
     val ldd_lines = {
       val ldd = if (Platform.is_macos) "otool -L" else "ldd"
       val script = mingw.bash_script(ldd + " " + File.bash_path(exe))
-      split_lines(Isabelle_System.bash(script, cwd = exe_dir.file).check.out)
+      split_lines(Isabelle_System.bash(script, cwd = exe_dir).check.out)
     }
 
     def lib_name(lib: String): String =
@@ -58,7 +58,7 @@
             libs.map(file => "-change " + Bash.string(file) + " " +
               Bash.string("@executable_path/" + Path.explode(file).file_name) + " " +
               File.bash_path(exe))).mkString(" ")
-        Isabelle_System.bash(script, cwd = exe_dir.file).check
+        Isabelle_System.bash(script, cwd = exe_dir).check
       }
     }
 
--- a/src/Pure/System/isabelle_process.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/System/isabelle_process.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -20,7 +20,7 @@
     use_prelude: List[String] = Nil,
     eval_main: String = "",
     modes: List[String] = Nil,
-    cwd: JFile = null,
+    cwd: Path = Path.current,
     env: JMap[String, String] = Isabelle_System.settings()
   ): Isabelle_Process = {
     val channel = System_Channel()
--- a/src/Pure/System/isabelle_system.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/System/isabelle_system.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -415,7 +415,7 @@
   def bash(script: String,
     description: String = "",
     ssh: SSH.System = SSH.Local,
-    cwd: JFile = null,
+    cwd: Path = Path.current,
     env: JMap[String, String] = settings(),
     redirect: Boolean = false,
     input: String = "",
@@ -502,7 +502,7 @@
       Isabelle_System.bash(
         "diff -ru " + diff_options + " -- " + File.bash_path(src) + " " + File.bash_path(dst) +
           " > " + File.bash_path(patch),
-        cwd = base_dir.file).check_rc(_ <= 1)
+        cwd = base_dir).check_rc(_ <= 1)
       File.read(patch)
     }
   }
--- a/src/Pure/System/progress.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/System/progress.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -94,7 +94,7 @@
   override def toString: String = if (stopped) "Progress(stopped)" else "Progress"
 
   final def bash(script: String,
-    cwd: JFile = null,
+    cwd: Path = Path.current,
     env: JMap[String, String] = Isabelle_System.settings(),
     redirect: Boolean = false,
     echo: Boolean = false,
--- a/src/Pure/Thy/document_build.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Thy/document_build.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -332,7 +332,7 @@
       session_graph.write(doc_dir)
 
       if (verbose) {
-        progress.bash("ls -alR", echo = true, cwd = doc_dir.file).check
+        progress.bash("ls -alR", echo = true, cwd = doc_dir).check
         progress match {
           case program_progress: Program_Progress => program_progress.stop_program()
           case _ =>
@@ -454,7 +454,7 @@
       val result =
         progress.bash(
           build_script(context, directory),
-          cwd = directory.doc_dir.file,
+          cwd = directory.doc_dir,
           echo = verbose,
           watchdog = Time.seconds(0.5))
 
--- a/src/Pure/Tools/dotnet_setup.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Tools/dotnet_setup.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -118,7 +118,7 @@
               (if (dry_run) " -DryRun" else "") +
               " -NoPath"
           progress.bash(script, echo = progress.verbose,
-            cwd = if (dry_run) null else component_dir.path.file).check
+            cwd = if (dry_run) Path.current else component_dir.path).check
           for (exe <- File.find_files(platform_dir.file, pred = _.getName.endsWith(".exe"))) {
             File.set_executable(File.path(exe))
           }
--- a/src/Pure/Tools/fontforge.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Tools/fontforge.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -66,7 +66,7 @@
 
   /** execute fontforge program **/
 
-  def execute(script: Script, args: String = "", cwd: JFile = null): Process_Result =
+  def execute(script: Script, args: String = "", cwd: Path = Path.current): Process_Result =
     Isabelle_System.with_tmp_file("fontforge") { script_file =>
       File.write(script_file, script)
       Isabelle_System.bash(File.bash_path(Path.explode("$ISABELLE_FONTFORGE")) +
--- a/src/Pure/Tools/phabricator.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Pure/Tools/phabricator.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -237,7 +237,7 @@
     def home: Path = root + Path.explode(phabricator_name())
 
     def execute(command: String): Process_Result =
-      Isabelle_System.bash("bin/" + command, cwd = home.file, redirect = true).check
+      Isabelle_System.bash("bin/" + command, cwd = home, redirect = true).check
 
     def webroot: String = home.implode + "/webroot"
   }
@@ -302,7 +302,7 @@
         }
         else {
           val config = get_config(name)
-          val result = progress.bash(Bash.strings(more_args), cwd = config.home.file, echo = true)
+          val result = progress.bash(Bash.strings(more_args), cwd = config.home, echo = true)
           if (!result.ok) error(result.print_return_code)
         }
       })
@@ -347,7 +347,7 @@
       Isabelle_System.extract(archive, tmp_dir)
       val build_dir = File.get_dir(tmp_dir, title = mercurial_source)
 
-      progress.bash("make all && make install", cwd = build_dir.file, echo = true).check
+      progress.bash("make all && make install", cwd = build_dir, echo = true).check
     }
   }
 
@@ -416,7 +416,7 @@
     Isabelle_System.chown(Bash.string(www_user) + ":" + Bash.string(www_user), root_path)
     Isabelle_System.chmod("755", root_path)
 
-    progress.bash(cwd = root_path.file, echo = true,
+    progress.bash(cwd = root_path, echo = true,
       script = """
         set -e
         echo "Cloning distribution repositories:"
@@ -508,7 +508,7 @@
     config.execute("config set storage.default-namespace " + Bash.string(mysql_name))
     config.execute("config set storage.mysql-engine.max-size 8388608")
 
-    progress.bash("bin/storage upgrade --force", cwd = config.home.file, echo = true).check
+    progress.bash("bin/storage upgrade --force", cwd = config.home, echo = true).check
 
 
     /* database dump */
@@ -610,7 +610,7 @@
     }
     catch {
       case ERROR(msg) =>
-        progress.bash("bin/phd status", cwd = config.home.file, echo = true).check
+        progress.bash("bin/phd status", cwd = config.home, echo = true).check
         error(msg)
     }
   }
@@ -706,7 +706,7 @@
 
       if (test_user.nonEmpty) {
         progress.echo("Sending test mail to " + quote(test_user))
-        progress.bash(cwd = config.home.file, echo = true,
+        progress.bash(cwd = config.home, echo = true,
           script = """echo "Test from Phabricator ($(date))" | bin/mail send-test --subject "Test" --to """ +
             Bash.string(test_user)).check
       }
--- a/src/Tools/VSCode/src/component_vscode_extension.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Tools/VSCode/src/component_vscode_extension.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -177,7 +177,7 @@
         build_grammar(options, build_dir, logic = logic, dirs = dirs, progress = progress)
 
         val result =
-          progress.bash("yarn && vsce package", cwd = build_dir.file, echo = true).check
+          progress.bash("yarn && vsce package", cwd = build_dir, echo = true).check
         val Pattern = """.*Packaged:.*(isabelle-.*\.vsix).*""".r
         val vsix_name =
           result.out_lines.collectFirst({ case Pattern(name) => name })
--- a/src/Tools/VSCode/src/component_vscodium.scala	Fri May 31 22:35:44 2024 +0200
+++ b/src/Tools/VSCode/src/component_vscodium.scala	Sat Jun 01 12:31:06 2024 +0200
@@ -86,10 +86,10 @@
           "set -e",
           "git clone -n " + Bash.string(vscodium_repository) + " .",
           "git checkout -q " + Bash.string(version)
-        ).mkString("\n"), cwd = build_dir.file).check
+        ).mkString("\n"), cwd = build_dir).check
 
       progress.echo("Getting VSCode repository ...")
-      Isabelle_System.bash(environment + "\n" + "./get_repo.sh", cwd = build_dir.file).check
+      Isabelle_System.bash(environment + "\n" + "./get_repo.sh", cwd = build_dir).check
     }
 
     def platform_dir(dir: Path): Path = {
@@ -130,7 +130,7 @@
           val patches_dir = Path.explode("$ISABELLE_VSCODE_HOME/patches")
           for (name <- Seq("cli", "isabelle_encoding", "no_ocaml_icons")) {
             val path = patches_dir + Path.explode(name).patch
-            Isabelle_System.bash("patch -p1 < " + File.bash_path(path), cwd = dir.file).check
+            Isabelle_System.bash("patch -p1 < " + File.bash_path(path), cwd = dir).check
           }
         }
 
@@ -292,7 +292,7 @@
             "./prepare_vscode.sh",
             // enforce binary diff of code.xpm
             "cp vscode/resources/linux/code.png vscode/resources/linux/rpm/code.xpm"
-          ).mkString("\n"), cwd = build_dir.file, echo = progress.verbose).check
+          ).mkString("\n"), cwd = build_dir, echo = progress.verbose).check
         Isabelle_System.make_patch(build_dir, vscode_dir.orig.base, vscode_dir.base,
           diff_options = "--exclude=.git --exclude=node_modules")
       }
@@ -346,7 +346,7 @@
 
         progress.echo("Build ...")
         progress.bash(platform_info.environment + "\n" + "./build.sh",
-          cwd = build_dir.file, echo = progress.verbose).check
+          cwd = build_dir, echo = progress.verbose).check
 
         if (platform_info.primary) {
           Isabelle_System.copy_file(build_dir + Path.explode("LICENSE"), component_dir.path)
@@ -368,7 +368,7 @@
       }
     }
 
-    Isabelle_System.bash("gzip *.patch", cwd = patches_dir.file).check
+    Isabelle_System.bash("gzip *.patch", cwd = patches_dir).check
 
 
     /* settings */