From 0558bf007999eee0a9b056adb2e5c7135fa1df79 Mon Sep 17 00:00:00 2001 From: Grzegorz 'Wirone' Korba Date: Mon, 4 Aug 2014 00:24:44 +0200 Subject: [PATCH 1/3] generateUnixyProxyCode() properly supporting Cygwin & Git Bash Based on Composer's proxy: https://github.com/composer/windows-setup/blob/master/src/shims/composer --- src/Composer/Installer/LibraryInstaller.php | 30 ++++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/Composer/Installer/LibraryInstaller.php b/src/Composer/Installer/LibraryInstaller.php index 4facfd494..3682fa719 100644 --- a/src/Composer/Installer/LibraryInstaller.php +++ b/src/Composer/Installer/LibraryInstaller.php @@ -303,13 +303,29 @@ class LibraryInstaller implements InstallerInterface protected function generateUnixyProxyCode($bin, $link) { $binPath = $this->filesystem->findShortestPath($link, $bin); + $binDir = escapeshellarg(dirname($binPath)); + $binFile = basename($binPath); - return "#!/usr/bin/env sh\n". - 'SRC_DIR="`pwd`"'."\n". - 'cd "`dirname "$0"`"'."\n". - 'cd '.escapeshellarg(dirname($binPath))."\n". - 'BIN_TARGET="`pwd`/'.basename($binPath)."\"\n". - 'cd "$SRC_DIR"'."\n". - '"$BIN_TARGET" "$@"'."\n"; + $proxyCode = <</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; } } From e20668b32137addf05577ea7216b98ce7fe33448 Mon Sep 17 00:00:00 2001 From: Grzegorz 'Wirone' Korba Date: Thu, 21 Aug 2014 21:43:31 +0200 Subject: [PATCH 2/3] Restore '#!/usr/bin/env sh' shebang --- src/Composer/Installer/LibraryInstaller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Composer/Installer/LibraryInstaller.php b/src/Composer/Installer/LibraryInstaller.php index 3682fa719..df0e2df48 100644 --- a/src/Composer/Installer/LibraryInstaller.php +++ b/src/Composer/Installer/LibraryInstaller.php @@ -307,7 +307,7 @@ class LibraryInstaller implements InstallerInterface $binFile = basename($binPath); $proxyCode = << Date: Mon, 8 Sep 2014 01:09:15 +0200 Subject: [PATCH 3/3] Comment changes (just for re-run Travis tests) --- src/Composer/Installer/LibraryInstaller.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Composer/Installer/LibraryInstaller.php b/src/Composer/Installer/LibraryInstaller.php index df0e2df48..db4d07586 100644 --- a/src/Composer/Installer/LibraryInstaller.php +++ b/src/Composer/Installer/LibraryInstaller.php @@ -311,12 +311,12 @@ class LibraryInstaller implements InstallerInterface dir=$(d=$(dirname "$0"); cd "\$d"; cd $binDir && pwd) -# see if we are running in cygwin by checking for cygpath program +# 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, + # 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. + # test if the path to PHP starts with /cygdrive/ rather than /usr/bin if [[ $(which php) == /cygdrive/* ]]; then dir=$(cygpath -m \$dir); fi