* lib/rubygems: update to RubyGems 2.0.6. the patch by drbrain.

[ruby-core:56633] [Backport #8787]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@42587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagachika 2013-08-16 15:35:06 +00:00
parent 5ac6776b0f
commit cbf9816635
11 changed files with 129 additions and 67 deletions

View file

@ -1,3 +1,8 @@
Sat Aug 17 00:32:17 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
* lib/rubygems: update to RubyGems 2.0.6. the patch by drbrain.
[ruby-core:56633] [Backport #8787]
Sat Aug 10 23:59:47 2013 NAKAMURA Usaku <usa@ruby-lang.org>
* test/coverage/test_coverage.rb (TestCoverage#test_big_code): use `1'

View file

@ -8,7 +8,7 @@
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
@ -36,9 +36,9 @@ require 'rubygems/errors'
#
# 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
#

View file

@ -21,7 +21,8 @@ class Gem::Commands::PristineCommand < Gem::Command
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
@ -43,23 +44,23 @@ class Gem::Commands::PristineCommand < Gem::Command
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 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 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 the cached gem cannot be found, you will need to use `gem install` to
revert the gem.
If the cached gem cannot be found it will be downloaded.
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

View file

@ -8,6 +8,8 @@ require 'monitor'
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
@ -33,10 +35,8 @@ module Kernel
# 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
@ -118,7 +118,7 @@ module Kernel
raise load_error
ensure
ACTIVATION_MONITOR.exit
RUBYGEMS_ACTIVATION_MONITOR.exit
end
private :require

View file

@ -9,6 +9,7 @@ require 'rubygems/package'
require 'rubygems/ext'
require 'rubygems/user_interaction'
require 'fileutils'
require 'thread'
##
# The installer installs the files contained in the .gem into the Gem.home.
@ -31,6 +32,14 @@ class Gem::Installer
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.
#
@ -675,12 +684,14 @@ TEXT
begin
FileUtils.mkdir_p dest_path
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
end
end
rescue
extension_build_error(extension_dir, results.join("\n"), $@)
end

View file

@ -96,12 +96,15 @@ class Gem::PackageTask < Rake::PackageTask
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]

View file

@ -188,15 +188,19 @@ class Gem::Specification
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
@ -210,7 +214,7 @@ class Gem::Specification
##
# 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:
#
@ -223,21 +227,23 @@ class Gem::Specification
#
# 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”). Its 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.
# 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.
# 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
@ -339,7 +345,7 @@ class Gem::Specification
attr_reader :description
##
# A contact email for this gem
# A contact email address (or addresses) for this gem
#
# Usage:
#
@ -455,6 +461,8 @@ class Gem::Specification
# Usage:
#
# spec.extensions << 'ext/rmagic/extconf.rb'
#
# See Gem::Ext::Builder for information about writing extensions for gems.
def extensions
@extensions ||= []
@ -484,6 +492,8 @@ class Gem::Specification
# 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'
@ -520,15 +530,20 @@ class Gem::Specification
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
@ -536,7 +551,7 @@ class Gem::Specification
##
# Lists the external (to RubyGems) requirements that must be met for this gem
# to work. Its simply information for the user.
# to work. It's simply information for the user.
#
# Usage:
#
@ -574,7 +589,7 @@ class Gem::Specification
#
# Deprecated: It is neither supported nor functional.
attr_accessor :autorequire
attr_accessor :autorequire # :nodoc:
##
# Sets the default executable for this gem.
@ -602,9 +617,12 @@ class Gem::Specification
# 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
@ -1267,7 +1285,7 @@ class Gem::Specification
end
##
# Singular reader for #authors
# Singular reader for #authors. Returns the first author in the list
def author
val = authors and val.first
@ -1275,6 +1293,8 @@ class Gem::Specification
##
# The list of author names who wrote this gem.
#
# spec.authors = ['Chad Fowler', 'Jim Weirich', 'Rich Kilmer']
def authors
@authors ||= []
@ -1381,7 +1401,9 @@ class Gem::Specification
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
@ -1428,7 +1450,7 @@ class Gem::Specification
# 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
@ -1487,7 +1509,7 @@ class Gem::Specification
end
##
# A long description of this gem
# A detailed description of this gem. See also #summary
def description= str
@description = str.to_s
@ -1676,7 +1698,7 @@ class Gem::Specification
#
# Formerly used to indicate this gem was RDoc-capable.
def has_rdoc
def has_rdoc # :nodoc:
true
end
@ -1685,11 +1707,11 @@ class Gem::Specification
#
# 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

View file

@ -1,5 +1,6 @@
require 'rubygems/test_case'
require 'rubygems/commands/install_command'
require 'rubygems/rdoc'
class TestGemCommandsInstallCommand < Gem::TestCase

View file

@ -64,13 +64,16 @@ class TestGemPackage < Gem::Package::TarTestCase
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
@ -83,19 +86,14 @@ class TestGemPackage < Gem::Package::TarTestCase
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),
}
}

View file

@ -4,16 +4,37 @@ require 'rubygems/package_task'
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

View file

@ -1,10 +1,10 @@
#define RUBY_VERSION "2.0.0"
#define RUBY_RELEASE_DATE "2013-08-11"
#define RUBY_PATCHLEVEL 291
#define RUBY_RELEASE_DATE "2013-08-17"
#define RUBY_PATCHLEVEL 292
#define RUBY_RELEASE_YEAR 2013
#define RUBY_RELEASE_MONTH 8
#define RUBY_RELEASE_DAY 11
#define RUBY_RELEASE_DAY 17
#include "ruby/version.h"