Browse Source

Avoid using realpath when generating classmap, speeds up generation and keeps paths local to project in case of symlinks/path repo

Jordi Boggiano 9 years ago
parent
commit
5822b58c1f
1 changed files with 9 additions and 2 deletions
  1. 9 2
      src/Composer/Autoload/ClassMapGenerator.php

+ 9 - 2
src/Composer/Autoload/ClassMapGenerator.php

@@ -20,6 +20,7 @@ namespace Composer\Autoload;
 
 use Symfony\Component\Finder\Finder;
 use Composer\IO\IOInterface;
+use Composer\Util\Filesystem;
 
 /**
  * ClassMapGenerator
@@ -73,14 +74,20 @@ class ClassMapGenerator
         }
 
         $map = array();
+        $filesystem = new Filesystem();
+        $cwd = getcwd();
 
         foreach ($path as $file) {
-            $filePath = $file->getRealPath();
-
+            $filePath = $file->getPathname();
             if (!in_array(pathinfo($filePath, PATHINFO_EXTENSION), array('php', 'inc', 'hh'))) {
                 continue;
             }
 
+            if (!$filesystem->isAbsolutePath($filePath)) {
+                $filePath = $cwd . '/' . $filePath;
+                $filePath = $filesystem->normalizePath($filePath);
+            }
+
             if ($blacklist && preg_match($blacklist, strtr($filePath, '\\', '/'))) {
                 continue;
             }