summaryrefslogtreecommitdiff
path: root/lib/rubygems/package.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-12 05:07:50 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-12-12 05:07:50 +0000
commit7f9bf068fcff9ca7d6a21711f31c5b8d6022dddf (patch)
tree2bf9d83db081c73e583aeaf9f30140732c43282a /lib/rubygems/package.rb
parent53a5b276b8bc6e22a9fecc23dd99259e2d0e7fa4 (diff)
Merge rubygems@21f12a8 from upstream.
* [BudlerVersionFinder] set .filter! and .compatible? to match only on major versions https://github.com/rubygems/rubygems/pull/2515 * Fix broken symlink that points to ../* https://github.com/rubygems/rubygems/pull/2516 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/package.rb')
-rw-r--r--lib/rubygems/package.rb15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
index 9af84981a4..3d81b8b7ac 100644
--- a/lib/rubygems/package.rb
+++ b/lib/rubygems/package.rb
@@ -119,8 +119,8 @@ class Gem::Package
# Permission for other files
attr_accessor :data_mode
- def self.build(spec, skip_validation = false, strict_validation = false)
- gem_file = spec.file_name
+ def self.build(spec, skip_validation = false, strict_validation = false, file_name = nil)
+ gem_file = file_name || spec.file_name
package = new gem_file
package.spec = spec
@@ -223,8 +223,13 @@ class Gem::Package
stat = File.lstat file
if stat.symlink?
- relative_dir = File.dirname(file).sub("#{Dir.pwd}/", '')
- target_path = File.join(relative_dir, File.readlink(file))
+ target_path = File.readlink(file)
+
+ unless target_path.start_with? '.'
+ relative_dir = File.dirname(file).sub("#{Dir.pwd}/", '')
+ target_path = File.join(relative_dir, target_path)
+ end
+
tar.add_symlink file, target_path, stat.mode
end
@@ -281,7 +286,7 @@ class Gem::Package
Successfully built RubyGem
Name: #{@spec.name}
Version: #{@spec.version}
- File: #{File.basename @spec.cache_file}
+ File: #{File.basename @gem.path}
EOM
ensure
@signer = nil