From 4b18c23fd1d0184c75df64181a4cbbadcf63d05e Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Fri, 23 Nov 2007 16:44:04 +0000 Subject: [PATCH] - Improve make pharcmd - Add -b to pack and stub-set commands of phar.phar --- ext/phar/Makefile.frag | 20 ++++++++-- ext/phar/phar.phar | Bin 14161 -> 42174 bytes ext/phar/phar/pharcommand.inc | 67 +++++++++++++++++++++++----------- 3 files changed, 62 insertions(+), 25 deletions(-) diff --git a/ext/phar/Makefile.frag b/ext/phar/Makefile.frag index abe8e184ee..3e79356fa1 100755 --- a/ext/phar/Makefile.frag +++ b/ext/phar/Makefile.frag @@ -4,10 +4,22 @@ $(srcdir)/phar_path_check.c: $(srcdir)/phar_path_check.re pharcmd: $(builddir)/phar.php $(builddir)/phar.phar -$(builddir)/phar.php: $(srcdir)/build_precommand.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php - $(PHP_EXECUTABLE) $(srcdir)/build_precommand.php > $(builddir)/phar.php +$(builddir)/phar.php: $(srcdir)/build_precommand.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php $(SAPI_CLI_PATH) + if test -x "$(PHP_EXECUTABLE)"; then \ + export PHP="$(PHP_EXECUTABLE)"; \ + else \ + export PHP="$(top_builddir)/$(SAPI_CLI_PATH)"; \ + fi; \ + $$PHP $(srcdir)/build_precommand.php > $(builddir)/phar.php -$(builddir)/phar.phar: $(builddir)/phar.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php - $(PHP_EXECUTABLE) -d phar.readonly=0 $(srcdir)/phar.php pack -f $(builddir)/phar.phar -a pharcommand -c auto -x CVS -p 0 -s $(srcdir)/phar/phar.php -h sha1 $(srcdir)/phar/ +$(builddir)/phar.phar: $(builddir)/phar.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php $(SAPI_CLI_PATH) + if test -x "$(PHP_EXECUTABLE)"; then \ + export PHP="$(PHP_EXECUTABLE)"; \ + export BANG="$(PHP_EXECUTABLE)"; \ + else \ + export PHP="$(top_builddir)/$(SAPI_CLI_PATH)"; \ + export BANG="$(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)"; \ + fi; \ + $$PHP -d phar.readonly=0 $(srcdir)/phar.php pack -f $(builddir)/phar.phar -a pharcommand -c auto -x CVS -p 0 -s $(srcdir)/phar/phar.php -h sha1 -b "$$BANG" $(srcdir)/phar/ @chmod +x $(builddir)/phar.phar diff --git a/ext/phar/phar.phar b/ext/phar/phar.phar index 9686edc73939b499168c693c7040fe3f9a035945..b69bce64d3bfd21161a985a264b59be55ca91dd6 100755 GIT binary patch literal 42174 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 Bk+J{) delta 8523 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 FO+uDBjL-l8 diff --git a/ext/phar/phar/pharcommand.inc b/ext/phar/phar/pharcommand.inc index 8f2cf106f1..cd4120e224 100755 --- a/ext/phar/phar/pharcommand.inc +++ b/ext/phar/phar/pharcommand.inc @@ -62,6 +62,12 @@ class PharCommand extends CLICommand 'val' => NULL, 'inf' => ' Provide an alias name for the phar file.' ), + 'b' => array( + 'typ' => 'any', + 'val' => NULL, + 'inf' => ' Hash-bang line to start the archieve (e.g. #!/usr/bin/php). The hash ' + .' mark itself \'#!\' and the newline character are optional.' + ), 'c' => array( 'typ' => 'compalg', 'val' => NULL, @@ -362,7 +368,7 @@ class PharCommand extends CLICommand */ static function cli_cmd_arg_pack() { - $args = self::phar_args('acFhilpsx', 'pharnew'); + $args = self::phar_args('abcFhilpsx', 'pharnew'); $args[''] = array( 'typ' => 'any', @@ -379,34 +385,51 @@ class PharCommand extends CLICommand /** * Set the stub */ - public function phar_set_stub_begin(Phar $phar, $stub, $loader = NULL) + public function phar_set_stub_begin(Phar $phar, $stub, $loader = NULL, $hashbang = NULL) { if (isset($stub)) { - if (isset($loader)) { - $c = file_get_contents($stub); - $s = ''; + $c = file_get_contents($stub); + + if (substr($c, 0, 2) == '#!') { + if (strpos($c, "\n") !== false) { + if (!isset($hashbang)) { + $hashbang = substr($c, 0, strpos($c, "\n") + 1); + } + $c = substr($c, strpos($c, "\n") + 1); + } else { + if (!isset($hashbang)) { + $hashbang = $c; + } + $c = NULL; + } + } - if (substr($c, 0, 2) == '#!') { - $s .= substr($c, 0, strpos($c, "\n") + 1); + if (isset($hashbang)) { + if (substr($hashbang, 0, 2) != '#!') { + $hashbang = '#!' . $hashbang; } + if (substr($hashbang, -1) != "\n") { + $hashbang .= "\n"; + } + } - $s .= ""; + if (isset($loader)) { + $s = ""; $s .= file_get_contents($loader); $s .= "'; + $s .= $c; - if (substr($c,0,1) == '#') { - $s.= substr($c,strpos($c, "\n")+1); - } - - $phar->setStub($s); + $phar->setStub($hasbang . $s); } else { - $phar->setStub(file_get_contents($stub)); + $phar->setStub($hasbang . $c); } return new SplFileInfo($stub); } @@ -447,6 +470,7 @@ class PharCommand extends CLICommand } $alias = $this->args['a']['val']; + $hashbang = $this->args['b']['val']; $archive = $this->args['f']['val']; $hash = $this->args['h']['val']; $regex = $this->args['i']['val']; @@ -460,7 +484,7 @@ class PharCommand extends CLICommand $phar->startBuffering(); - $stub = $this->phar_set_stub_begin($phar, $stub, $loader); + $stub = $this->phar_set_stub_begin($phar, $stub, $loader, $hashbang); if (!is_array($input)) { $this->phar_add($phar, $level, $input, $regex, $invregex, $stub, NULL, isset($loader)); @@ -916,7 +940,7 @@ class PharCommand extends CLICommand */ public function cli_cmd_arg_stub_set() { - $args = self::phar_args('Fps', 'phar'); + $args = self::phar_args('bFps', 'phar'); $args['s']['val'] = 'php://stdin'; return $args; } @@ -929,11 +953,12 @@ class PharCommand extends CLICommand */ public function cli_cmd_run_stub_set() { - $phar = $this->args['f']['val']; - $stub = $this->args['s']['val']; - $loader = $this->args['p']['val']; + $hashbang = $this->args['b']['val']; + $phar = $this->args['f']['val']; + $stub = $this->args['s']['val']; + $loader = $this->args['p']['val']; - $this->phar_set_stub_begin($phar, $stub, $loader); + $this->phar_set_stub_begin($phar, $stub, $loader, $hashbang); $this->phar_set_stub_end($phar, $stub, $loader); } // }}} -- 2.50.1