Backport #8787 » rubygems.2_0_7.ruby.2_0_0.patch
lib/rubygems/commands/pristine_command.rb (working copy) | ||
---|---|---|
end
|
||
add_option('--[no-]extensions',
|
||
'Restore gems with extensions') do |value, options|
|
||
'Restore gems with extensions',
|
||
'in addition to regular gems') do |value, options|
|
||
options[:extensions] = value
|
||
end
|
||
... | ... | |
def description # :nodoc:
|
||
<<-EOF
|
||
The pristine command compares the installed gems with the contents of the
|
||
cached gem and restores any files that don't match the cached gem's copy.
|
||
The pristine command compares an installed gem with the contents of its
|
||
cached .gem file and restores any files that don't match the cached .gem's
|
||
copy.
|
||
If you have made modifications to an installed gem, the pristine command
|
||
will revert them. All extensions are rebuilt and all bin stubs for the gem
|
||
are regenerated after checking for modifications.
|
||
If you have made modifications to your installed gems, the pristine command
|
||
will revert them. After all the gem's files have been checked all bin stubs
|
||
for the gem are regenerated.
|
||
If the cached gem cannot be found it will be downloaded.
|
||
If the cached gem cannot be found, you will need to use `gem install` to
|
||
revert the gem.
|
||
If --no-extensions is provided pristine will not attempt to restore gems
|
||
with extensions.
|
||
If --no-extensions is provided pristine will not attempt to restore a gem
|
||
with an extension.
|
||
EOF
|
||
end
|
||
def usage # :nodoc:
|
||
"#{program_name} [args]"
|
||
"#{program_name} [GEMNAME ...]"
|
||
end
|
||
def execute
|
lib/rubygems/core_ext/kernel_require.rb (working copy) | ||
---|---|---|
module Kernel
|
||
RUBYGEMS_ACTIVATION_MONITOR = Monitor.new # :nodoc:
|
||
if defined?(gem_original_require) then
|
||
# Ruby ships with a custom_require, override its require
|
||
remove_method :require
|
||
... | ... | |
# The normal <tt>require</tt> functionality of returning false if
|
||
# that file has already been loaded is preserved.
|
||
ACTIVATION_MONITOR = Monitor.new
|
||
def require path
|
||
ACTIVATION_MONITOR.enter
|
||
RUBYGEMS_ACTIVATION_MONITOR.enter
|
||
spec = Gem.find_unresolved_default_spec(path)
|
||
if spec
|
||
... | ... | |
raise load_error
|
||
ensure
|
||
ACTIVATION_MONITOR.exit
|
||
RUBYGEMS_ACTIVATION_MONITOR.exit
|
||
end
|
||
private :require
|
lib/rubygems/installer.rb (working copy) | ||
---|---|---|
require 'rubygems/ext'
|
||
require 'rubygems/user_interaction'
|
||
require 'fileutils'
|
||
require 'thread'
|
||
##
|
||
# The installer installs the files contained in the .gem into the Gem.home.
|
||
... | ... | |
ENV_PATHS = %w[/usr/bin/env /bin/env]
|
||
##
|
||
# The builder shells-out to run various commands after changing the
|
||
# directory. This means multiple installations cannot be allowed to build
|
||
# extensions in parallel as they may change each other's directories leading
|
||
# to broken extensions or failed installations.
|
||
CHDIR_MUTEX = Mutex.new # :nodoc:
|
||
##
|
||
# Raised when there is an error while building extensions.
|
||
#
|
||
class ExtensionBuildError < Gem::InstallError; end
|
||
... | ... | |
begin
|
||
FileUtils.mkdir_p dest_path
|
||
Dir.chdir extension_dir do
|
||
results = builder.build(extension, gem_dir, dest_path,
|
||
results, @build_args)
|
||
CHDIR_MUTEX.synchronize do
|
||
Dir.chdir extension_dir do
|
||
results = builder.build(extension, gem_dir, dest_path,
|
||
results, @build_args)
|
||
say results.join("\n") if Gem.configuration.really_verbose
|
||
say results.join("\n") if Gem.configuration.really_verbose
|
||
end
|
||
end
|
||
rescue
|
||
extension_build_error(extension_dir, results.join("\n"), $@)
|
lib/rubygems/package_task.rb (working copy) | ||
---|---|---|
def define
|
||
super
|
||
task :package => [:gem]
|
||
gem_file = File.basename gem_spec.cache_file
|
||
gem_path = File.join package_dir, gem_file
|
||
gem_dir = File.join package_dir, gem_spec.full_name
|
||
task :package => [:gem]
|
||
directory package_dir
|
||
directory gem_dir
|
||
desc "Build the gem file #{gem_file}"
|
||
task :gem => [gem_path]
|
||
lib/rubygems/specification.rb (working copy) | ||
---|---|---|
attr_reader :version
|
||
##
|
||
# Paths in the gem to add to <tt>$LOAD_PATH</tt> when this gem is activated.
|
||
# Paths in the gem to add to <code>$LOAD_PATH</code> when this gem is
|
||
# activated.
|
||
#
|
||
# If you have an extension you do not need to add <code>"ext"</code> to the
|
||
# require path, the extension build process will copy the extension files
|
||
# into "lib" for you.
|
||
#
|
||
# The default value is <code>"lib"</code>
|
||
#
|
||
# Usage:
|
||
#
|
||
# # If all library files are in the root directory...
|
||
# spec.require_path = '.'
|
||
#
|
||
# # If you have 'lib' and 'ext' directories...
|
||
# spec.require_paths << 'ext'
|
||
attr_accessor :require_paths
|
||
... | ... | |
##
|
||
# A short summary of this gem's description. Displayed in `gem list -d`.
|
||
#
|
||
# The description should be more detailed than the summary.
|
||
# The #description should be more detailed than the summary.
|
||
#
|
||
# Usage:
|
||
#
|
||
... | ... | |
#
|
||
# This is usually Gem::Platform::RUBY or Gem::Platform::CURRENT.
|
||
#
|
||
# Most gems contain pure Ruby code; they should simply leave the default value
|
||
# in place. Some gems contain C (or other) code to be compiled into a Ruby
|
||
# “extension”. The should leave the default value in place unless their code
|
||
# will only compile on a certain type of system. Some gems consist of
|
||
# pre-compiled code (“binary gems”). It’s especially important that they set
|
||
# the platform attribute appropriately. A shortcut is to set the platform to
|
||
# Gem::Platform::CURRENT, which will cause the gem builder to set the platform
|
||
# to the appropriate value for the system on which the build is being performed.
|
||
#
|
||
# If this attribute is set to a non-default value, it will be included in the
|
||
# filename of the gem when it is built, e.g. fxruby-1.2.0-win32.gem.
|
||
# Most gems contain pure Ruby code; they should simply leave the default
|
||
# value in place. Some gems contain C (or other) code to be compiled into a
|
||
# Ruby "extension". The should leave the default value in place unless
|
||
# their code will only compile on a certain type of system. Some gems
|
||
# consist of pre-compiled code ("binary gems"). It's especially important
|
||
# that they set the platform attribute appropriately. A shortcut is to set
|
||
# the platform to Gem::Platform::CURRENT, which will cause the gem builder
|
||
# to set the platform to the appropriate value for the system on which the
|
||
# build is being performed.
|
||
#
|
||
# If this attribute is set to a non-default value, it will be included in
|
||
# the filename of the gem when it is built such as:
|
||
# nokogiri-1.6.0-x86-mingw32.gem
|
||
#
|
||
# Usage:
|
||
#
|
||
# spec.platform = Gem::Platform::Win32
|
||
# spec.platform = Gem::Platform.local
|
||
def platform= platform
|
||
if @original_platform.nil? or
|
||
... | ... | |
attr_reader :description
|
||
##
|
||
# A contact email for this gem
|
||
# A contact email address (or addresses) for this gem
|
||
#
|
||
# Usage:
|
||
#
|
||
... | ... | |
# Usage:
|
||
#
|
||
# spec.extensions << 'ext/rmagic/extconf.rb'
|
||
#
|
||
# See Gem::Ext::Builder for information about writing extensions for gems.
|
||
def extensions
|
||
@extensions ||= []
|
||
... | ... | |
# This should just be the name of your license. The full
|
||
# text of the license should be inside of the gem when you build it.
|
||
#
|
||
# You can set multiple licenses with #licenses=
|
||
#
|
||
# Usage:
|
||
# spec.license = 'MIT'
|
||
... | ... | |
end
|
||
##
|
||
# The version of ruby required by this gem
|
||
# The version of Ruby required by this gem. The ruby version can be
|
||
# specified to the patch-level:
|
||
#
|
||
# $ ruby -v -e 'p Gem.ruby_version'
|
||
# ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
|
||
# #<Gem::Version "2.0.0.247">
|
||
#
|
||
# Usage:
|
||
#
|
||
# # If it will work with 1.8.6 or greater...
|
||
# # This gem will work with 1.8.6 or greater...
|
||
# spec.required_ruby_version = '>= 1.8.6'
|
||
#
|
||
# # Hopefully by now:
|
||
# spec.required_ruby_version = '>= 1.9.2'
|
||
# # Only with ruby 2.0.x
|
||
# spec.required_ruby_version = '~> 2.0'
|
||
def required_ruby_version= req
|
||
@required_ruby_version = Gem::Requirement.create req
|
||
... | ... | |
##
|
||
# Lists the external (to RubyGems) requirements that must be met for this gem
|
||
# to work. It’s simply information for the user.
|
||
# to work. It's simply information for the user.
|
||
#
|
||
# Usage:
|
||
#
|
||
... | ... | |
end
|
||
##
|
||
# A collection of unit test files. They will be loaded as unit tests when
|
||
# A collection of unit test files. They will be loaded as unit tests when
|
||
# the user requests a gem to be unit tested.
|
||
#
|
||
# Usage:
|
||
... | ... | |
#
|
||
# Deprecated: It is neither supported nor functional.
|
||
attr_accessor :autorequire
|
||
attr_accessor :autorequire # :nodoc:
|
||
##
|
||
# Sets the default executable for this gem.
|
||
... | ... | |
# The RubyGems version required by this gem
|
||
attr_reader :required_rubygems_version
|
||
##
|
||
# The rubyforge project this gem lives under. i.e. RubyGems'
|
||
# rubyforge_project is "rubygems".
|
||
#
|
||
# This option is deprecated.
|
||
attr_accessor :rubyforge_project
|
||
... | ... | |
end
|
||
##
|
||
# Singular reader for #authors
|
||
# Singular reader for #authors. Returns the first author in the list
|
||
def author
|
||
val = authors and val.first
|
||
... | ... | |
##
|
||
# The list of author names who wrote this gem.
|
||
#
|
||
# spec.authors = ['Chad Fowler', 'Jim Weirich', 'Rich Kilmer']
|
||
def authors
|
||
@authors ||= []
|
||
... | ... | |
end
|
||
##
|
||
# The date this gem was created. Lazily defaults to TODAY.
|
||
# The date this gem was created. Lazily defaults to the current UTC date.
|
||
#
|
||
# There is no need to set this in your gem specification.
|
||
def date
|
||
@date ||= TODAY
|
||
... | ... | |
# Deprecated: The name of the gem is assumed to be the name of the
|
||
# executable now. See Gem.bin_path.
|
||
def default_executable
|
||
def default_executable # :nodoc:
|
||
if defined?(@default_executable) and @default_executable
|
||
result = @default_executable
|
||
elsif @executables and @executables.size == 1
|
||
... | ... | |
end
|
||
##
|
||
# A long description of this gem
|
||
# A detailed description of this gem. See also #summary
|
||
def description= str
|
||
@description = str.to_s
|
||
... | ... | |
#
|
||
# Formerly used to indicate this gem was RDoc-capable.
|
||
def has_rdoc
|
||
def has_rdoc # :nodoc:
|
||
true
|
||
end
|
||
... | ... | |
#
|
||
# Formerly used to indicate this gem was RDoc-capable.
|
||
def has_rdoc= ignored
|
||
def has_rdoc= ignored # :nodoc:
|
||
@has_rdoc = true
|
||
end
|
||
alias :has_rdoc? :has_rdoc
|
||
alias :has_rdoc? :has_rdoc # :nodoc:
|
||
##
|
||
# True if this gem has files in test_files
|
lib/rubygems.rb (working copy) | ||
---|---|---|
require 'rbconfig'
|
||
module Gem
|
||
VERSION = '2.0.6'
|
||
VERSION = '2.0.7'
|
||
end
|
||
# Must be first since it unloads the prelude from 1.9.2
|
||
... | ... | |
#
|
||
# Further RubyGems documentation can be found at:
|
||
#
|
||
# * {RubyGems Guides}[http://guides.rubygems.org]
|
||
# * {RubyGems API}[http://rubygems.rubyforge.org/rdoc] (also available from
|
||
# <tt>gem server</tt>)
|
||
# * {RubyGems Bookshelf}[http://rubygem.org]
|
||
#
|
||
# == RubyGems Plugins
|
||
#
|
test/rubygems/test_gem_commands_install_command.rb (working copy) | ||
---|---|---|
require 'rubygems/test_case'
|
||
require 'rubygems/commands/install_command'
|
||
require 'rubygems/rdoc'
|
||
class TestGemCommandsInstallCommand < Gem::TestCase
|
||
test/rubygems/test_gem_package.rb (working copy) | ||
---|---|---|
reader = Gem::Package::TarReader.new gem_io
|
||
checksums = nil
|
||
tar = nil
|
||
reader.each_entry do |entry|
|
||
case entry.full_name
|
||
when 'checksums.yaml.gz'
|
||
when 'checksums.yaml.gz' then
|
||
Zlib::GzipReader.wrap entry do |io|
|
||
checksums = io.read
|
||
end
|
||
when 'data.tar.gz' then
|
||
tar = entry.read
|
||
end
|
||
end
|
||
... | ... | |
metadata_sha1 = Digest::SHA1.hexdigest s.string
|
||
metadata_sha512 = Digest::SHA512.hexdigest s.string
|
||
data_digests = nil
|
||
util_tar do |tar|
|
||
data_digests = package.add_contents tar
|
||
end
|
||
expected = {
|
||
'SHA1' => {
|
||
'metadata.gz' => metadata_sha1,
|
||
'data.tar.gz' => data_digests['SHA1'].hexdigest,
|
||
'data.tar.gz' => Digest::SHA1.hexdigest(tar),
|
||
},
|
||
'SHA512' => {
|
||
'metadata.gz' => metadata_sha512,
|
||
'data.tar.gz' => data_digests['SHA512'].hexdigest,
|
||
'data.tar.gz' => Digest::SHA512.hexdigest(tar),
|
||
}
|
||
}
|
||
test/rubygems/test_gem_package_task.rb (working copy) | ||
---|---|---|
class TestGemPackageTask < Gem::TestCase
|
||
def setup
|
||
super
|
||
Rake.application = Rake::Application.new
|
||
RakeFileUtils.verbose_flag = false
|
||
end
|
||
def test_gem_package
|
||
gem = Gem::Specification.new do |g|
|
||
g.name = "pkgr"
|
||
g.version = "1.2.3"
|
||
g.files = Rake::FileList["x"].resolve
|
||
g.authors = %w[author]
|
||
g.files = %w[x]
|
||
g.summary = 'summary'
|
||
end
|
||
pkg = Gem::PackageTask.new(gem) do |p|
|
||
p.package_files << "y"
|
||
end
|
||
assert_equal ["x", "y"], pkg.package_files
|
||
assert_equal %w[x y], pkg.package_files
|
||
Dir.chdir @tempdir do
|
||
FileUtils.touch 'x'
|
||
FileUtils.touch 'y'
|
||
Rake.application['package'].invoke
|
||
assert_path_exists 'pkg/pkgr-1.2.3.gem'
|
||
end
|
||
end
|
||
def test_gem_package_with_current_platform
|