clarified signature: prefer Scala functions instead of shell scripts;
authorwenzelm
Wed, 30 Nov 2022 15:32:25 +0100
changeset 76543 fef0195f8d8e
parent 76542 d6ce50a092eb
child 76544 b10926dbb763
clarified signature: prefer Scala functions instead of shell scripts;
src/Pure/Admin/build_sqlite.scala
src/Pure/Admin/build_zstd.scala
src/Pure/System/isabelle_system.scala
--- a/src/Pure/Admin/build_sqlite.scala	Wed Nov 30 15:19:57 2022 +0100
+++ b/src/Pure/Admin/build_sqlite.scala	Wed Nov 30 15:32:25 2022 +0100
@@ -53,9 +53,7 @@
     Isabelle_System.download_file(download_url, jar, progress = progress)
 
     Isabelle_System.with_tmp_dir("build") { jar_dir =>
-      progress.echo("Unpacking " + jar)
-      Isabelle_System.bash("isabelle_jdk jar xf " + File.bash_path(jar.absolute),
-        cwd = jar_dir.file).check
+      Isabelle_System.extract(jar, jar_dir)
 
       val jar_files =
         List(
--- a/src/Pure/Admin/build_zstd.scala	Wed Nov 30 15:19:57 2022 +0100
+++ b/src/Pure/Admin/build_zstd.scala	Wed Nov 30 15:32:25 2022 +0100
@@ -61,9 +61,7 @@
       download_url + "/" + version + "/" + jar_name, jar, progress = progress)
 
     Isabelle_System.with_tmp_dir("build") { jar_dir =>
-      progress.echo("Unpacking " + jar)
-      Isabelle_System.bash("isabelle_jdk jar xf " + File.bash_path(jar.absolute),
-        cwd = jar_dir.file).check
+      Isabelle_System.extract(jar, jar_dir)
       for (platform <- platforms) platform.install(jar_dir, component_dir.path, version)
     }
 
--- a/src/Pure/System/isabelle_system.scala	Wed Nov 30 15:19:57 2022 +0100
+++ b/src/Pure/System/isabelle_system.scala	Wed Nov 30 15:32:25 2022 +0100
@@ -437,9 +437,14 @@
     val name = archive.file_name
     make_directory(dir)
     if (File.is_zip(name)) {
-      require(!strip, "Cannot use unzip with strip")
+      require(!strip, "Cannot extract/strip zip archive")
       Isabelle_System.bash("unzip -x " + File.bash_path(archive.absolute), cwd = dir.file).check
     }
+    else if (File.is_jar(name)) {
+      require(!strip, "Cannot extract/strip jar archive")
+      Isabelle_System.bash("isabelle_jdk jar xf " + File.bash_platform_path(archive.absolute),
+        cwd = dir.file).check
+    }
     else if (File.is_tar_bz2(name) || File.is_tgz(name) || File.is_tar_gz(name)) {
       val flags = if (File.is_tar_bz2(name)) "-xjf " else "-xzf "
       Isabelle_System.gnutar(flags + File.bash_path(archive), dir = dir, strip = strip).check