src/Pure/Admin/build_release.scala
changeset 69402 61f4c406d727
parent 69401 7a1b7b737c02
child 69403 258740767dc9
--- a/src/Pure/Admin/build_release.scala	Wed Dec 05 19:42:40 2018 +0100
+++ b/src/Pure/Admin/build_release.scala	Wed Dec 05 21:15:18 2018 +0100
@@ -569,9 +569,10 @@
           progress.echo("Application for " + platform)
 
           if (platform == "linux") {
-            Isabelle_System.bash(
-              "ln -s " + Bash.string(isabelle_name + "_linux.tar.gz") + " " +
-              File.bash_path(release.dist_dir + Path.explode(isabelle_name + "_app.tar.gz"))).check
+            File.link(
+              Path.explode(isabelle_name + "_linux.tar.gz"),
+              release.dist_dir + Path.explode(isabelle_name + "_app.tar.gz"),
+              force = true)
           }
           else if (platform == "macos") {
             val dmg_dir = tmp_dir + Path.explode("macos_app/dmg")
@@ -589,21 +590,27 @@
                   terminate_lines(java_options.map(opt => "<string>" + opt + "</string>"))))
 
             for (cp <- classpath) {
-              Isabelle_System.bash(
-                "ln -sf " +
-                Bash.string("../Resources/" + isabelle_name + "/") + File.bash_path(cp) + " " +
-                File.bash_path(app_contents + Path.explode("Java"))).check
+              File.link(
+                Path.explode("../Resources/" + isabelle_name + "/") + cp,
+                app_contents + Path.explode("Java"),
+                force = true)
             }
 
-            Isabelle_System.bash("ln -sf ../Resources/" + Bash.string(isabelle_name) +
-              "/contrib/" + Bash.string(jdk_component) + "/x86_64-darwin " +
-              File.bash_path(app_contents + Path.explode("PlugIns/bundled.jdk"))).check
+            File.link(
+              Path.explode("../Resources/" + isabelle_name + "/contrib/" +
+                jdk_component + "/x86_64-darwin"),
+              app_contents + Path.explode("PlugIns/bundled.jdk"),
+              force = true)
 
-            Isabelle_System.bash("ln -sf ../../Info.plist " +
-              File.bash_path(app_resources + Path.explode(isabelle_name) +
-                Path.explode(isabelle_name + ".plist"))).check
-            Isabelle_System.bash("ln -sf Contents/Resources/" + Bash.string(isabelle_name) + " " +
-              File.bash_path(app_dir) + "/Isabelle").check
+            File.link(
+              Path.explode("../../Info.plist"),
+              app_resources + Path.explode(isabelle_name + "/" + isabelle_name + ".plist"),
+              force = true)
+
+            File.link(
+              Path.explode("Contents/Resources/" + isabelle_name),
+              app_dir + Path.explode("Isabelle"),
+              force = true)
 
             val dmg = Path.explode(isabelle_name + ".dmg")
             (release.dist_dir + dmg).file.delete