From 7bf7a4a33be8387d9ff1ddfb762f97caeb8021f5 Mon Sep 17 00:00:00 2001 From: hsbt Date: Wed, 1 Jul 2015 21:50:14 +0000 Subject: * lib/rubygems: Update to RubyGems HEAD(c202db2). this version contains many enhancements see http://git.io/vtNwF * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/package.rb | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'lib/rubygems/package.rb') diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb index e8b8b38b06..64beae5550 100644 --- a/lib/rubygems/package.rb +++ b/lib/rubygems/package.rb @@ -123,7 +123,7 @@ class Gem::Package # If +gem+ is an existing file in the old format a Gem::Package::Old will be # returned. - def self.new gem + def self.new gem, security_policy = nil gem = if gem.is_a?(Gem::Package::Source) gem elsif gem.respond_to? :read @@ -132,7 +132,7 @@ class Gem::Package Gem::Package::FileSource.new gem end - return super(gem) unless Gem::Package == self + return super unless Gem::Package == self return super unless gem.present? return super unless gem.start @@ -144,7 +144,7 @@ class Gem::Package ## # Creates a new package that will read or write to the file +gem+. - def initialize gem # :notnew: + def initialize gem, security_policy # :notnew: @gem = gem @build_time = Time.now @@ -152,12 +152,19 @@ class Gem::Package @contents = nil @digests = Hash.new { |h, algorithm| h[algorithm] = {} } @files = nil - @security_policy = nil + @security_policy = security_policy @signatures = {} @signer = nil @spec = nil end + ## + # Copies this package to +path+ (if possible) + + def copy_to path + FileUtils.cp @gem.path, path unless File.exist? path + end + ## # Adds a checksum for each entry in the gem to checksums.yaml.gz. @@ -200,7 +207,11 @@ class Gem::Package def add_files tar # :nodoc: @spec.files.each do |file| - stat = File.stat file + stat = File.lstat file + + if stat.symlink? + tar.add_symlink file, File.readlink(file), stat.mode + end next unless stat.file? @@ -371,6 +382,8 @@ EOM FileUtils.chmod entry.header.mode, destination end if entry.file? + File.symlink(install_location(entry.header.linkname, destination_dir), destination) if entry.symlink? + verbose destination end end @@ -611,4 +624,3 @@ require 'rubygems/package/tar_header' require 'rubygems/package/tar_reader' require 'rubygems/package/tar_reader/entry' require 'rubygems/package/tar_writer' - -- cgit v1.2.3