# HG changeset patch # User wenzelm # Date 1544046404 -3600 # Node ID 22428643351f2f898adc67abbf1943c867ab93f2 # Parent de88761edbe29b4adb12ebae283292fc216f7f96 more direct File.executable operation: avoid external process (on Unix); diff -r de88761edbe2 -r 22428643351f src/Pure/Admin/build_cygwin.scala --- a/src/Pure/Admin/build_cygwin.scala Wed Dec 05 21:36:18 2018 +0100 +++ b/src/Pure/Admin/build_cygwin.scala Wed Dec 05 22:46:44 2018 +0100 @@ -35,9 +35,8 @@ File.write(cygwin_isabelle + Path.explode("cygwin_mirror"), mirror) - Isabelle_System.bash( - "chmod +x " + File.bash_path(cygwin_exe) + " && " + - File.bash_path(cygwin_exe) + " -h /dev/null").check + File.executable(cygwin_exe) + Isabelle_System.bash(File.bash_path(cygwin_exe) + " -h /dev/null").check val res = progress.bash( diff -r de88761edbe2 -r 22428643351f src/Pure/Admin/build_release.scala --- a/src/Pure/Admin/build_release.scala Wed Dec 05 21:36:18 2018 +0100 +++ b/src/Pure/Admin/build_release.scala Wed Dec 05 22:46:44 2018 +0100 @@ -466,7 +466,7 @@ .replaceAllLiterally("{CLASSPATH}", classpath.map("$ISABELLE_HOME/" + _).mkString(":")) .replaceAllLiterally("/jdk/", "/" + jdk_component + "/")) - Isabelle_System.bash("chmod +x " + File.bash_path(isabelle_run)).check + File.executable(isabelle_run) val linux_app = isabelle_target + Path.explode("contrib/linux_app") File.move(linux_app + Path.explode("Isabelle"), @@ -530,8 +530,7 @@ File.write(isabelle_target + cygwin_bat, File.read(cygwin_template + cygwin_bat) .replaceAllLiterally("{MIRROR}", cygwin_mirror)) - - Isabelle_System.bash("chmod +x " + File.bash_path(isabelle_target + cygwin_bat)).check + File.executable(isabelle_target + cygwin_bat) for (name <- List("isabelle/postinstall", "isabelle/rebaseall")) { val path = Path.explode(name) @@ -654,8 +653,7 @@ Bytes.write(release.dist_dir + isabelle_exe, Bytes.read(sfx_exe) + Bytes(sfx_txt) + Bytes.read(exe_archive)) - - Isabelle_System.bash("chmod +x " + (release.dist_dir + isabelle_exe)).check + File.executable(release.dist_dir + isabelle_exe) } }) progress.echo("DONE") diff -r de88761edbe2 -r 22428643351f src/Pure/General/file.scala --- a/src/Pure/General/file.scala Wed Dec 05 21:36:18 2018 +0100 +++ b/src/Pure/General/file.scala Wed Dec 05 22:46:44 2018 +0100 @@ -331,4 +331,13 @@ Cygwin.link(standard_path(src), target) } } + + + /* permissions */ + + def executable(path: Path) + { + if (Platform.is_windows) Isabelle_System.bash("chmod a+x " + bash_path(path)).check + else path.file.setExecutable(true, false) + } }