--- 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