This project is closed and read-only.
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
|
||