|
@@ -310,12 +310,30 @@ class LibraryInstaller implements InstallerInterface
|
|
|
{
|
|
|
$binPath = $this->filesystem->findShortestPath($link, $bin);
|
|
|
|
|
|
- return "#!/usr/bin/env sh\n".
|
|
|
- 'SRC_DIR="`pwd`"'."\n".
|
|
|
- 'cd "`dirname "$0"`"'."\n".
|
|
|
- 'cd '.ProcessExecutor::escape(dirname($binPath))."\n".
|
|
|
- 'BIN_TARGET="`pwd`/'.basename($binPath)."\"\n".
|
|
|
- 'cd "$SRC_DIR"'."\n".
|
|
|
- '"$BIN_TARGET" "$@"'."\n";
|
|
|
+ $binDir = ProcessExecutor::escape(dirname($binPath));
|
|
|
+ $binFile = basename($binPath);
|
|
|
+
|
|
|
+ $proxyCode = <<<PROXY
|
|
|
+#!/usr/bin/env sh
|
|
|
+
|
|
|
+dir=$(d=$(dirname "$0"); cd "\$d"; cd $binDir && pwd)
|
|
|
+
|
|
|
+# See if we are running in Cygwin by checking for cygpath program
|
|
|
+if command -v 'cygpath' >/dev/null 2>&1; then
|
|
|
+ # Cygwin paths start with /cygdrive/ which will break windows PHP,
|
|
|
+ # so we need to translate the dir path to windows format. However
|
|
|
+ # we could be using cygwin PHP which does not require this, so we
|
|
|
+ # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
|
|
|
+ if [[ $(which php) == /cygdrive/* ]]; then
|
|
|
+ dir=$(cygpath -m \$dir);
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+dir=$(echo \$dir | sed 's/ /\ /g')
|
|
|
+"\${dir}/$binFile" "$@"
|
|
|
+
|
|
|
+PROXY;
|
|
|
+
|
|
|
+ return $proxyCode;
|
|
|
}
|
|
|
}
|