mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* lib/rubygems/installer.rb (Gem::Installer#shebang): fix for env
shebang. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									375258ed98
								
							
						
					
					
						commit
						d85689f5cb
					
				
					 3 changed files with 19 additions and 19 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,8 @@
 | 
			
		|||
Sun Mar 15 12:01:36 2009  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* lib/rubygems/installer.rb (Gem::Installer#shebang): fix for env
 | 
			
		||||
	  shebang.
 | 
			
		||||
 | 
			
		||||
Sun Mar 15 11:15:18 2009  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* include/ruby/ruby.h ({RSTRING,RBIGNUM}_EMBED_LEN_MAX): made int.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,6 +71,8 @@ class Gem::Installer
 | 
			
		|||
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  ENV_PATHS = %w[/usr/bin/env /bin/env]
 | 
			
		||||
 | 
			
		||||
  ##
 | 
			
		||||
  # Constructs an Installer instance that will install the gem located at
 | 
			
		||||
  # +gem+.  +options+ is a Hash with the following keys:
 | 
			
		||||
| 
						 | 
				
			
			@ -98,12 +100,7 @@ class Gem::Installer
 | 
			
		|||
      :source_index => Gem.source_index,
 | 
			
		||||
    }.merge options
 | 
			
		||||
 | 
			
		||||
    if @env_shebang = options[:env_shebang]
 | 
			
		||||
      unless File.executable?(shebang = "/usr/bin/env")
 | 
			
		||||
        shebang = "/bin/env"
 | 
			
		||||
      end
 | 
			
		||||
      @env_shebang = shebang
 | 
			
		||||
    end
 | 
			
		||||
    @env_shebang = options[:env_shebang]
 | 
			
		||||
    @force = options[:force]
 | 
			
		||||
    gem_home = options[:install_dir]
 | 
			
		||||
    @gem_home = Pathname.new(gem_home).expand_path
 | 
			
		||||
| 
						 | 
				
			
			@ -392,25 +389,23 @@ class Gem::Installer
 | 
			
		|||
  # necessary.
 | 
			
		||||
 | 
			
		||||
  def shebang(bin_file_name)
 | 
			
		||||
    ruby_name = Gem::ConfigMap[:ruby_install_name] unless @env_shebang
 | 
			
		||||
    ruby_name = Gem::ConfigMap[:ruby_install_name] if @env_shebang
 | 
			
		||||
    path = File.join @gem_dir, @spec.bindir, bin_file_name
 | 
			
		||||
    first_line = File.open(path, "rb") {|file| file.gets}
 | 
			
		||||
    if /\A#!/ =~ first_line then
 | 
			
		||||
      # Preserve extra words on shebang line, like "-w".  Thanks RPA.
 | 
			
		||||
      shebang = first_line.sub(/\A\#!.*?ruby\S*(?=\s*(\S+))/, "#!#{Gem.ruby}")
 | 
			
		||||
      shebang = first_line.sub(/\A\#!.*?ruby\S*(?=(\s+\S+))/, "#!#{Gem.ruby}")
 | 
			
		||||
      opts = $1
 | 
			
		||||
      shebang.strip! # Avoid nasty ^M issues.
 | 
			
		||||
      if ruby_name and $1
 | 
			
		||||
        %{#!/bin/sh\n'exec' '#{ruby_name}' '-x' "$0" "$@"\n#{shebang}}
 | 
			
		||||
      else
 | 
			
		||||
        shebang
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    if !ruby_name
 | 
			
		||||
      "#!#{Gem.ruby}#{opts}"
 | 
			
		||||
    elsif opts
 | 
			
		||||
      %{#!/bin/sh\n'exec' #{ruby_name.dump} '-x' "$0" "$@"\n#{shebang}}
 | 
			
		||||
    else
 | 
			
		||||
      # Create a plain shebang line.
 | 
			
		||||
      if ruby_name
 | 
			
		||||
        "#!#@env_shebang #{ruby_name}"
 | 
			
		||||
      else
 | 
			
		||||
        "#!#{Gem.ruby}"
 | 
			
		||||
      end
 | 
			
		||||
      @env_path ||= ENV_PATHS.find {|path| File.executable?(path)}
 | 
			
		||||
      "#!#{@env_path} #{ruby_name}"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -257,7 +257,7 @@ class TestGemDependencyInstaller < RubyGemTestCase
 | 
			
		|||
      inst.install 'a'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    assert_match %r|\A#!/usr/bin/env #{Gem::ConfigMap[:RUBY_INSTALL_NAME]}\n|,
 | 
			
		||||
    assert_match %r|\A#!/\S+/env #{Gem::ConfigMap[:RUBY_INSTALL_NAME]}\n|,
 | 
			
		||||
                 File.read(File.join(@gemhome, 'bin', 'a_bin'))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue