# HG changeset patch # User wenzelm # Date 1669818745 -3600 # Node ID fef0195f8d8e68bdea58966fa52b78d31901ea2d # Parent d6ce50a092eb4d271fe4ea7dc9347bec4986a57d clarified signature: prefer Scala functions instead of shell scripts; diff -r d6ce50a092eb -r fef0195f8d8e src/Pure/Admin/build_sqlite.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( diff -r d6ce50a092eb -r fef0195f8d8e src/Pure/Admin/build_zstd.scala --- 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) } diff -r d6ce50a092eb -r fef0195f8d8e src/Pure/System/isabelle_system.scala --- 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