Browse Source

Fix phar compiler

Jordi Boggiano 14 years ago
parent
commit
7d4e67b335
1 changed files with 13 additions and 15 deletions
  1. 13 15
      src/Composer/Compiler.php

+ 13 - 15
src/Composer/Compiler.php

@@ -13,17 +13,15 @@
 namespace Composer;
 namespace Composer;
 
 
 use Symfony\Component\Finder\Finder;
 use Symfony\Component\Finder\Finder;
-use Symfony\Component\Process\Process;
 
 
 /**
 /**
  * The Compiler class compiles composer into a phar
  * The Compiler class compiles composer into a phar
  *
  *
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
  */
  */
 class Compiler
 class Compiler
 {
 {
-    protected $version;
-
     /**
     /**
      * Compiles composer into a single phar file
      * Compiles composer into a single phar file
      *
      *
@@ -36,12 +34,6 @@ class Compiler
             unlink($pharFile);
             unlink($pharFile);
         }
         }
 
 
-        $process = new Process('git log --pretty="%h %ci" -n1 HEAD');
-        if ($process->run() > 0) {
-            throw new \RuntimeException('The git binary cannot be found.');
-        }
-        $this->version = trim($process->getOutput());
-
         $phar = new \Phar($pharFile, 0, 'composer.phar');
         $phar = new \Phar($pharFile, 0, 'composer.phar');
         $phar->setSignatureAlgorithm(\Phar::SHA1);
         $phar->setSignatureAlgorithm(\Phar::SHA1);
 
 
@@ -52,7 +44,7 @@ class Compiler
             ->ignoreVCS(true)
             ->ignoreVCS(true)
             ->name('*.php')
             ->name('*.php')
             ->notName('Compiler.php')
             ->notName('Compiler.php')
-            ->in(__DIR__.'/../Composer')
+            ->in(__DIR__.'/..')
         ;
         ;
 
 
         foreach ($finder as $file) {
         foreach ($finder as $file) {
@@ -60,7 +52,7 @@ class Compiler
         }
         }
 
 
         $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../tests/bootstrap.php'));
         $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../tests/bootstrap.php'));
-        $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../bin/composer'));
+        $this->addComposerBin($phar);
 
 
         // Stubs
         // Stubs
         $phar->setStub($this->getStub());
         $phar->setStub($this->getStub());
@@ -74,7 +66,7 @@ class Compiler
         unset($phar);
         unset($phar);
     }
     }
 
 
-    protected function addFile($phar, $file, $strip = true)
+    private function addFile($phar, $file, $strip = true)
     {
     {
         $path = str_replace(dirname(dirname(__DIR__)).DIRECTORY_SEPARATOR, '', $file->getRealPath());
         $path = str_replace(dirname(dirname(__DIR__)).DIRECTORY_SEPARATOR, '', $file->getRealPath());
 
 
@@ -84,14 +76,20 @@ class Compiler
             $content = "\n".file_get_contents($file)."\n";
             $content = "\n".file_get_contents($file)."\n";
         }
         }
 
 
-        $content = str_replace('@package_version@', $this->version, $content);
-
         $phar->addFromString($path, $content);
         $phar->addFromString($path, $content);
     }
     }
 
 
-    protected function getStub()
+    private function addComposerBin($phar)
+    {
+        $content = file_get_contents(__DIR__.'/../../bin/composer');
+        $content = preg_replace('{^#!/usr/bin/env php\s*}', '', $content);
+        $phar->addFromString('bin/composer', $content);
+    }
+
+    private function getStub()
     {
     {
         return <<<'EOF'
         return <<<'EOF'
+#!/usr/bin/env php
 <?php
 <?php
 /*
 /*
  * This file is part of Composer.
  * This file is part of Composer.