зеркало из https://github.com/github/ruby.git
* lib/rubygems/installer.rb (Gem::Installer#initialize): env may
not be under /usr/bin. * lib/rubygems/installer.rb (Gem::Installer#shebang): uses /bin/sh if shebang has any options, since env shebang trick does not work with options. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
3b759e62ac
Коммит
e09da0d092
|
@ -1,3 +1,12 @@
|
|||
Mon Mar 9 16:03:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* lib/rubygems/installer.rb (Gem::Installer#initialize): env may
|
||||
not be under /usr/bin.
|
||||
|
||||
* lib/rubygems/installer.rb (Gem::Installer#shebang): uses /bin/sh
|
||||
if shebang has any options, since env shebang trick does no
|
||||
work with options.
|
||||
|
||||
Mon Mar 9 15:19:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* instruby.rb (manpages): use basename to compare and for Tempfile.
|
||||
|
|
|
@ -98,7 +98,12 @@ class Gem::Installer
|
|||
:source_index => Gem.source_index,
|
||||
}.merge options
|
||||
|
||||
@env_shebang = options[:env_shebang]
|
||||
if @env_shebang = options[:env_shebang]
|
||||
unless File.executable?(shebang = "/usr/bin/env")
|
||||
shebang = "/bin/env"
|
||||
end
|
||||
@env_shebang = shebang
|
||||
end
|
||||
@force = options[:force]
|
||||
gem_home = options[:install_dir]
|
||||
@gem_home = Pathname.new(gem_home).expand_path
|
||||
|
@ -387,22 +392,24 @@ class Gem::Installer
|
|||
# necessary.
|
||||
|
||||
def shebang(bin_file_name)
|
||||
if @env_shebang then
|
||||
"#!/usr/bin/env " + Gem::ConfigMap[:ruby_install_name]
|
||||
ruby_name = Gem::ConfigMap[:ruby_install_name] unless @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.strip! # Avoid nasty ^M issues.
|
||||
if ruby_name and $1
|
||||
%{#!/bin/sh\n'exec' '#{ruby_name}' '-x' "$0" "$@"\n#{shebang}}
|
||||
else
|
||||
shebang
|
||||
end
|
||||
else
|
||||
path = File.join @gem_dir, @spec.bindir, bin_file_name
|
||||
|
||||
File.open(path, "rb") do |file|
|
||||
first_line = file.gets
|
||||
if first_line =~ /^#!/ then
|
||||
# Preserve extra words on shebang line, like "-w". Thanks RPA.
|
||||
shebang = first_line.sub(/\A\#!.*?ruby\S*/, "#!#{Gem.ruby}")
|
||||
else
|
||||
# Create a plain shebang line.
|
||||
shebang = "#!#{Gem.ruby}"
|
||||
end
|
||||
|
||||
shebang.strip # Avoid nasty ^M issues.
|
||||
# Create a plain shebang line.
|
||||
if ruby_name
|
||||
"#!#@env_shebang #{ruby_name}"
|
||||
else
|
||||
"#!#{Gem.ruby}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче