rubygems-update 3.0.6 → 3.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d07fade2e3531734d58f367561fcbca85bea5fbca01417f39b37b9d6f542416
4
- data.tar.gz: 77b6447e1aa296876e220fb8eeb154337876718be48f7ae33d752059f5ab8a8f
3
+ metadata.gz: 067ea320ef1da81eb3037d8017bd8b72398d0bf9621b8cddda0d3d12a5b53d7f
4
+ data.tar.gz: 468aa6f0452d5e93817b8266d250b17c08d4f47c9f7e597e30fd2ad5d4e69f86
5
5
  SHA512:
6
- metadata.gz: 198623ff0935264c13fab1fab96dc42ae5a9bc47553b1158e174c2c03422e8ba97f7b50901bb29cba162619f67de274c8e03a9e5f1a049a0981cd4c6459649f9
7
- data.tar.gz: 45f566e5133f29d440733273f9763bc33bf12c888b2583cf91e3bea1e7b86bac6486510291b0630e1f665efa62c1857858bfc461851ec8f798d7c41dfb5fa17d
6
+ metadata.gz: 02ed09ac0d47ec4b42edfa0a9ad56e1fcb931797a88cfc26af2a7b5f08695decd22e1d0cfbfc10de7eda7f7c5796da65fb1f56219d5e6eead630a184fe51a20a
7
+ data.tar.gz: 3c6c5d57a43ccde51ae86d056fe0d634aab0385daac135aad5f15a1b8e13319190fe9f5b3c3a9803dcb0c16c416059f40e7ca13bbc3666cdc3d6e21c253a2b79
@@ -34,5 +34,7 @@ matrix:
34
34
  allow_failures:
35
35
  - rvm: ruby-head
36
36
  env: "TEST_TOOL=rubygems YAML=psych"
37
+ - rvm: 2.3.8
38
+ env: "TEST_TOOL=bundler RGV=master"
37
39
  - rvm: ruby-head
38
40
  env: "TEST_TOOL=bundler RGV=master"
@@ -1,5 +1,17 @@
1
1
  # coding: UTF-8
2
2
 
3
+ === 3.0.7 / 2020-02-18
4
+
5
+ Bug fixes:
6
+
7
+ * Fix underscore version selection for bundler #2908 by David Rodríguez.
8
+ * Add missing wrapper. Pull request #2690 by David Rodríguez.
9
+ * Make Gem::Specification#ruby_code handle OpenSSL::PKey::RSA objects.
10
+ Pull request #2782 by Luis Sagastume.
11
+ * Installer.rb - fix #windows_stub_script. Pull request #2876 by MSP-Greg.
12
+ * Use IAM role to extract security-credentials for EC2 instance. Pull
13
+ request #2894 by Alexander Pakulov.
14
+
3
15
  === 3.0.6 / 2019-08-17
4
16
 
5
17
  Bug fixes:
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2019-08-16".freeze
8
- @git_commit_sha = "d7089abb6".freeze
7
+ @built_at = "2020-02-18".freeze
8
+ @git_commit_sha = "d7089abb6a".freeze
9
9
  @release = false
10
10
  # end ivars
11
11
 
@@ -9,7 +9,7 @@
9
9
  require 'rbconfig'
10
10
 
11
11
  module Gem
12
- VERSION = "3.0.6".freeze
12
+ VERSION = "3.0.7".freeze
13
13
  end
14
14
 
15
15
  # Must be first since it unloads the prelude from 1.9.2
@@ -128,7 +128,7 @@ By default, this RubyGems will install gem as:
128
128
  end
129
129
 
130
130
  module MakeDirs
131
- def mkdir_p(path, *opts)
131
+ def mkdir_p(path, **opts)
132
132
  super
133
133
  (@mkdirs ||= []) << path
134
134
  end
@@ -164,7 +164,7 @@ By default, this RubyGems will install gem as:
164
164
 
165
165
  remove_old_lib_files lib_dir
166
166
 
167
- install_default_bundler_gem
167
+ install_default_bundler_gem bin_dir
168
168
 
169
169
  if mode = options[:dir_mode]
170
170
  @mkdirs.uniq!
@@ -240,14 +240,13 @@ By default, this RubyGems will install gem as:
240
240
  prog_mode = options[:prog_mode] || 0755
241
241
 
242
242
  executables = { 'gem' => 'bin' }
243
- executables['bundler'] = 'bundler/exe' if Gem::USE_BUNDLER_FOR_GEMDEPS
244
243
  executables.each do |tool, path|
245
244
  say "Installing #{tool} executable" if @verbose
246
245
 
247
246
  Dir.chdir path do
248
247
  bin_files = Dir['*']
249
248
 
250
- bin_files -= %w[update_rubygems bundler bundle_ruby]
249
+ bin_files -= %w[update_rubygems]
251
250
 
252
251
  bin_files.each do |bin_file|
253
252
  bin_file_formatted = if options[:format_executable]
@@ -382,7 +381,7 @@ By default, this RubyGems will install gem as:
382
381
  return false
383
382
  end
384
383
 
385
- def install_default_bundler_gem
384
+ def install_default_bundler_gem(bin_dir)
386
385
  return unless Gem::USE_BUNDLER_FOR_GEMDEPS
387
386
 
388
387
  specs_dir = Gem::Specification.default_specifications_dir
@@ -427,13 +426,12 @@ By default, this RubyGems will install gem as:
427
426
  cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e)
428
427
  end
429
428
 
430
- if Gem.win_platform?
431
- require 'rubygems/installer'
429
+ require 'rubygems/installer'
432
430
 
433
- installer = Gem::Installer.for_spec bundler_spec
434
- bundler_spec.executables.each do |e|
435
- installer.generate_windows_script e, bundler_spec.bin_dir
436
- end
431
+ Dir.chdir("bundler") do
432
+ built_gem = Gem::Package.build(bundler_spec)
433
+ installer = Gem::Installer.at(built_gem, env_shebang: options[:env_shebang], install_as_default: true, bin_dir: bin_dir, wrappers: true)
434
+ installer.install
437
435
  end
438
436
 
439
437
  say "Bundler #{bundler_spec.version} installed"
@@ -281,7 +281,7 @@ class Gem::Dependency
281
281
  requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
282
282
  }.map(&:to_spec)
283
283
 
284
- Gem::BundlerVersionFinder.filter!(matches) if name == "bundler".freeze
284
+ Gem::BundlerVersionFinder.filter!(matches) if name == "bundler".freeze && !requirement.specific?
285
285
 
286
286
  if platform_only
287
287
  matches.reject! { |spec|
@@ -320,8 +320,11 @@ class Gem::Installer
320
320
  build_extensions
321
321
  write_build_info_file
322
322
  run_post_build_hooks
323
+ end
324
+
325
+ generate_bin
323
326
 
324
- generate_bin
327
+ unless @options[:install_as_default]
325
328
  write_spec
326
329
  write_cache_file
327
330
  end
@@ -799,7 +802,7 @@ TEXT
799
802
  # stub & ruby.exe withing same folder. Portable
800
803
  <<-TEXT
801
804
  @ECHO OFF
802
- @"%~dp0ruby.exe" "%~dpn0" %*
805
+ @"%~dp0#{ruby_exe}" "%~dpn0" %*
803
806
  TEXT
804
807
  elsif bindir.downcase.start_with? rb_topdir.downcase
805
808
  # stub within ruby folder, but not standard bin. Portable
@@ -809,14 +812,14 @@ TEXT
809
812
  rel = to.relative_path_from from
810
813
  <<-TEXT
811
814
  @ECHO OFF
812
- @"%~dp0#{rel}/ruby.exe" "%~dpn0" %*
815
+ @"%~dp0#{rel}/#{ruby_exe}" "%~dpn0" %*
813
816
  TEXT
814
817
  else
815
818
  # outside ruby folder, maybe -user-install or bundler. Portable, but ruby
816
819
  # is dependent on PATH
817
820
  <<-TEXT
818
821
  @ECHO OFF
819
- @ruby.exe "%~dpn0" %*
822
+ @#{ruby_exe} "%~dpn0" %*
820
823
  TEXT
821
824
  end
822
825
  end
@@ -124,7 +124,10 @@ class Gem::Resolver
124
124
 
125
125
  data = yield
126
126
  $stderr.printf "%10s (%d entries)\n", stage.to_s.upcase, data.size
127
- PP.pp data, $stderr unless data.empty?
127
+ unless data.empty?
128
+ require 'pp'
129
+ PP.pp data, $stderr
130
+ end
128
131
  end
129
132
 
130
133
  ##
@@ -150,16 +150,23 @@ class Gem::S3URISigner
150
150
  require 'rubygems/request/connection_pools'
151
151
  require 'json'
152
152
 
153
- metadata_uri = URI(EC2_METADATA_CREDENTIALS)
154
- @request_pool ||= create_request_pool(metadata_uri)
155
- request = Gem::Request.new(metadata_uri, Net::HTTP::Get, nil, @request_pool)
153
+ iam_info = ec2_metadata_request(EC2_IAM_INFO)
154
+ # Expected format: arn:aws:iam::<id>:instance-profile/<role_name>
155
+ role_name = iam_info['InstanceProfileArn'].split('/').last
156
+ ec2_metadata_request(EC2_IAM_SECURITY_CREDENTIALS + role_name)
157
+ end
158
+
159
+ def ec2_metadata_request(url)
160
+ uri = URI(url)
161
+ @request_pool ||= create_request_pool(uri)
162
+ request = Gem::Request.new(uri, Net::HTTP::Get, nil, @request_pool)
156
163
  response = request.fetch
157
164
 
158
165
  case response
159
166
  when Net::HTTPOK then
160
167
  JSON.parse(response.body)
161
168
  else
162
- raise InstanceProfileError.new("Unable to fetch AWS credentials from #{metadata_uri}: #{response.message} #{response.code}")
169
+ raise InstanceProfileError.new("Unable to fetch AWS metadata from #{uri}: #{response.message} #{response.code}")
163
170
  end
164
171
  end
165
172
 
@@ -170,6 +177,7 @@ class Gem::S3URISigner
170
177
  end
171
178
 
172
179
  BASE64_URI_TRANSLATE = { "+" => "%2B", "/" => "%2F", "=" => "%3D", "\n" => "" }.freeze
173
- EC2_METADATA_CREDENTIALS = "http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance".freeze
180
+ EC2_IAM_INFO = "http://169.254.169.254/latest/meta-data/iam/info".freeze
181
+ EC2_IAM_SECURITY_CREDENTIALS = "http://169.254.169.254/latest/meta-data/iam/security-credentials/".freeze
174
182
 
175
183
  end
@@ -2348,18 +2348,18 @@ class Gem::Specification < Gem::BasicSpecification
2348
2348
 
2349
2349
  def ruby_code(obj)
2350
2350
  case obj
2351
- when String then obj.dump + ".freeze"
2352
- when Array then '[' + obj.map { |x| ruby_code x }.join(", ") + ']'
2353
- when Hash then
2351
+ when String then obj.dump + ".freeze"
2352
+ when Array then '[' + obj.map { |x| ruby_code x }.join(", ") + ']'
2353
+ when Hash then
2354
2354
  seg = obj.keys.sort.map { |k| "#{k.to_s.dump} => #{obj[k].to_s.dump}" }
2355
2355
  "{ #{seg.join(', ')} }"
2356
- when Gem::Version then obj.to_s.dump
2357
- when DateLike then obj.strftime('%Y-%m-%d').dump
2358
- when Time then obj.strftime('%Y-%m-%d').dump
2359
- when Numeric then obj.inspect
2360
- when true, false, nil then obj.inspect
2361
- when Gem::Platform then "Gem::Platform.new(#{obj.to_a.inspect})"
2362
- when Gem::Requirement then
2356
+ when Gem::Version then obj.to_s.dump
2357
+ when DateLike then obj.strftime('%Y-%m-%d').dump
2358
+ when Time then obj.strftime('%Y-%m-%d').dump
2359
+ when Numeric then obj.inspect
2360
+ when true, false, nil then obj.inspect
2361
+ when Gem::Platform then "Gem::Platform.new(#{obj.to_a.inspect})"
2362
+ when Gem::Requirement then
2363
2363
  list = obj.as_list
2364
2364
  "Gem::Requirement.new(#{ruby_code(list.size == 1 ? obj.to_s : list)})"
2365
2365
  else raise Gem::Exception, "ruby_code case not handled: #{obj.class}"
@@ -2516,9 +2516,8 @@ class Gem::Specification < Gem::BasicSpecification
2516
2516
  @@attributes.each do |attr_name|
2517
2517
  next if handled.include? attr_name
2518
2518
  current_value = self.send(attr_name)
2519
- if current_value != default_value(attr_name) or
2520
- self.class.required_attribute? attr_name
2521
- result << " s.#{attr_name} = #{ruby_code current_value}"
2519
+ if current_value != default_value(attr_name) || self.class.required_attribute?(attr_name)
2520
+ result << " s.#{attr_name} = #{ruby_code current_value}" unless current_value.is_a?(OpenSSL::PKey::RSA)
2522
2521
  end
2523
2522
  end
2524
2523
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-update"
5
- s.version = "3.0.6"
5
+ s.version = "3.0.7"
6
6
  s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
7
7
  s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
8
8
 
@@ -323,6 +323,40 @@ class TestGem < Gem::TestCase
323
323
  refute_includes e.message, "can't find gem bundler (>= 0.a) with executable bundle"
324
324
  end
325
325
 
326
+ def test_activate_bin_path_respects_underscore_selection_if_given
327
+ bundler_latest = util_spec 'bundler', '2.0.1' do |s|
328
+ s.executables = ['bundle']
329
+ end
330
+
331
+ bundler_previous = util_spec 'bundler', '1.17.3' do |s|
332
+ s.executables = ['bundle']
333
+ end
334
+
335
+ install_specs bundler_latest, bundler_previous
336
+
337
+ File.open("Gemfile.lock", "w") do |f|
338
+ f.write <<-L.gsub(/ {8}/, "")
339
+ GEM
340
+ remote: https://rubygems.org/
341
+ specs:
342
+
343
+ PLATFORMS
344
+ ruby
345
+
346
+ DEPENDENCIES
347
+
348
+ BUNDLED WITH
349
+ 2.0.1
350
+ L
351
+ end
352
+
353
+ File.open("Gemfile", "w") { |f| f.puts('source "https://rubygems.org"') }
354
+
355
+ load Gem.activate_bin_path("bundler", "bundle", "= 1.17.3")
356
+
357
+ assert_equal %w(bundler-1.17.3), loaded_spec_names
358
+ end
359
+
326
360
  def test_self_bin_path_no_exec_name
327
361
  e = assert_raises ArgumentError do
328
362
  Gem.bin_path 'a'
@@ -38,6 +38,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
38
38
  FileUtils.mkdir_p 'default/gems'
39
39
 
40
40
  gemspec = Gem::Specification.new
41
+ gemspec.author = "Us"
41
42
  gemspec.name = "bundler"
42
43
  gemspec.version = BUNDLER_VERS
43
44
  gemspec.bindir = "exe"
@@ -166,16 +167,19 @@ class TestGemCommandsSetupCommand < Gem::TestCase
166
167
  def test_install_default_bundler_gem
167
168
  @cmd.extend FileUtils
168
169
 
169
- @cmd.install_default_bundler_gem
170
+ bin_dir = File.join(@gemhome, 'bin')
171
+ @cmd.install_default_bundler_gem bin_dir
170
172
 
171
- if Gem.win_platform?
172
- bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
173
- default_spec_path = File.join(Gem::Specification.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
174
- spec = Gem::Specification.load(default_spec_path)
173
+ bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
174
+ default_spec_path = File.join(Gem::Specification.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
175
+ spec = Gem::Specification.load(default_spec_path)
175
176
 
176
- spec.executables.each do |e|
177
- assert_path_exists File.join(spec.bin_dir, "#{e}.bat")
177
+ spec.executables.each do |e|
178
+ if Gem.win_platform?
179
+ assert_path_exists File.join(bin_dir, "#{e}.bat")
178
180
  end
181
+
182
+ assert_path_exists File.join bin_dir, e
179
183
  end
180
184
 
181
185
  default_dir = Gem::Specification.default_specifications_dir
@@ -1822,10 +1822,10 @@ gem 'other', version
1822
1822
  assert_predicate spec, :default_gem?
1823
1823
  end
1824
1824
 
1825
- def test_default_gem
1825
+ def test_default_gem_without_wrappers
1826
1826
  FileUtils.rm_f File.join(Gem.dir, 'specifications')
1827
1827
 
1828
- @installer.wrappers = true
1828
+ @installer.wrappers = false
1829
1829
  @installer.options[:install_as_default] = true
1830
1830
  @installer.gem_dir = @spec.gem_dir
1831
1831
 
@@ -1843,6 +1843,34 @@ gem 'other', version
1843
1843
  default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'a-2.gemspec')
1844
1844
  assert_equal Gem::Version.new("2"), default_spec.version
1845
1845
  assert_equal ['bin/executable'], default_spec.files
1846
+
1847
+ assert_directory_exists util_inst_bindir
1848
+
1849
+ installed_exec = File.join util_inst_bindir, 'executable'
1850
+ assert_path_exists installed_exec
1851
+
1852
+ wrapper = File.read installed_exec
1853
+ refute_match %r|generated by RubyGems|, wrapper
1854
+ end
1855
+
1856
+ def test_default_gem_with_wrappers
1857
+ FileUtils.rm_f File.join(Gem.dir, 'specifications')
1858
+
1859
+ @installer.wrappers = true
1860
+ @installer.options[:install_as_default] = true
1861
+ @installer.gem_dir = @spec.gem_dir
1862
+
1863
+ use_ui @ui do
1864
+ @installer.install
1865
+ end
1866
+
1867
+ assert_directory_exists util_inst_bindir
1868
+
1869
+ installed_exec = File.join util_inst_bindir, 'executable'
1870
+ assert_path_exists installed_exec
1871
+
1872
+ wrapper = File.read installed_exec
1873
+ assert_match %r|generated by RubyGems|, wrapper
1846
1874
  end
1847
1875
 
1848
1876
  def test_default_gem_with_exe_as_bindir
@@ -2419,6 +2419,35 @@ end
2419
2419
  assert_equal @a2, same_spec
2420
2420
  end
2421
2421
 
2422
+ def test_to_ruby_with_rsa_key
2423
+ rsa_key = OpenSSL::PKey::RSA.new(2048)
2424
+ @a2.signing_key = rsa_key
2425
+ ruby_code = @a2.to_ruby
2426
+
2427
+ expected = <<-SPEC
2428
+ # -*- encoding: utf-8 -*-
2429
+ # stub: a 2 ruby lib
2430
+
2431
+ Gem::Specification.new do |s|
2432
+ s.name = "a".freeze
2433
+ s.version = "2"
2434
+
2435
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
2436
+ s.require_paths = ["lib".freeze]
2437
+ s.authors = ["A User".freeze]
2438
+ s.date = "#{Gem::Specification::TODAY.strftime "%Y-%m-%d"}"
2439
+ s.description = "This is a test description".freeze
2440
+ s.email = "example@example.com".freeze
2441
+ s.files = ["lib/code.rb".freeze]
2442
+ s.homepage = "http://example.com".freeze
2443
+ s.rubygems_version = "#{Gem::VERSION}".freeze
2444
+ s.summary = "this is a summary".freeze
2445
+ end
2446
+ SPEC
2447
+
2448
+ assert_equal expected, ruby_code
2449
+ end
2450
+
2422
2451
  def test_to_ruby_for_cache
2423
2452
  @a2.add_runtime_dependency 'b', '1'
2424
2453
  @a2.dependencies.first.instance_variable_set :@type, nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.6
4
+ version: 3.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
@@ -16,7 +16,7 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2019-08-16 00:00:00.000000000 Z
19
+ date: 2020-02-18 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: builder