rubygems-update 2.7.7 → 2.7.8

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +51 -0
  3. data/Rakefile +12 -2
  4. data/bundler/CHANGELOG.md +80 -0
  5. data/bundler/README.md +1 -1
  6. data/bundler/bundler.gemspec +2 -1
  7. data/bundler/lib/bundler.rb +10 -6
  8. data/bundler/lib/bundler/build_metadata.rb +19 -2
  9. data/bundler/lib/bundler/cli.rb +1 -1
  10. data/bundler/lib/bundler/cli/exec.rb +1 -0
  11. data/bundler/lib/bundler/cli/update.rb +3 -3
  12. data/bundler/lib/bundler/current_ruby.rb +8 -1
  13. data/bundler/lib/bundler/definition.rb +18 -13
  14. data/bundler/lib/bundler/dep_proxy.rb +2 -2
  15. data/bundler/lib/bundler/dependency.rb +1 -0
  16. data/bundler/lib/bundler/deprecate.rb +2 -1
  17. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  18. data/bundler/lib/bundler/env.rb +10 -8
  19. data/bundler/lib/bundler/fetcher.rb +1 -1
  20. data/bundler/lib/bundler/fetcher/downloader.rb +10 -5
  21. data/bundler/lib/bundler/gem_helper.rb +1 -1
  22. data/bundler/lib/bundler/gem_version_promoter.rb +12 -0
  23. data/bundler/lib/bundler/injector.rb +1 -1
  24. data/bundler/lib/bundler/installer/gem_installer.rb +6 -4
  25. data/bundler/lib/bundler/installer/parallel_installer.rb +1 -1
  26. data/bundler/lib/bundler/lazy_specification.rb +1 -1
  27. data/bundler/lib/bundler/mirror.rb +2 -2
  28. data/bundler/lib/bundler/plugin.rb +2 -2
  29. data/bundler/lib/bundler/plugin/index.rb +1 -1
  30. data/bundler/lib/bundler/process_lock.rb +1 -1
  31. data/bundler/lib/bundler/resolver.rb +10 -9
  32. data/bundler/lib/bundler/resolver/spec_group.rb +0 -4
  33. data/bundler/lib/bundler/ruby_version.rb +1 -1
  34. data/bundler/lib/bundler/runtime.rb +1 -1
  35. data/bundler/lib/bundler/shared_helpers.rb +15 -3
  36. data/bundler/lib/bundler/source/metadata.rb +1 -1
  37. data/bundler/lib/bundler/source/rubygems.rb +6 -2
  38. data/bundler/lib/bundler/source/rubygems/remote.rb +4 -1
  39. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -0
  40. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +2 -0
  41. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -1
  42. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +7 -2
  43. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  44. data/bundler/lib/bundler/version.rb +1 -1
  45. data/bundler/man/bundle-binstubs.ronn +1 -1
  46. data/bundler/man/bundle-config.ronn +4 -4
  47. data/bundler/man/bundle-exec.ronn +2 -2
  48. data/bundler/man/bundle-gem.ronn +1 -1
  49. data/bundler/man/bundle-install.ronn +12 -3
  50. data/bundler/man/bundle-lock.ronn +1 -1
  51. data/bundler/man/bundle-outdated.ronn +1 -1
  52. data/bundler/man/bundle-package.ronn +3 -3
  53. data/bundler/man/bundle-show.ronn +3 -2
  54. data/bundler/man/bundle-update.ronn +18 -14
  55. data/bundler/man/bundle-viz.ronn +1 -1
  56. data/bundler/man/bundle.ronn +18 -18
  57. data/bundler/man/gemfile.5.ronn +23 -8
  58. data/lib/rubygems.rb +3 -3
  59. data/lib/rubygems/commands/install_command.rb +7 -0
  60. data/lib/rubygems/commands/push_command.rb +36 -3
  61. data/lib/rubygems/commands/uninstall_command.rb +1 -1
  62. data/lib/rubygems/core_ext/kernel_require.rb +2 -7
  63. data/lib/rubygems/install_update_options.rb +1 -1
  64. data/lib/rubygems/package/tar_header.rb +3 -1
  65. data/lib/rubygems/package/tar_writer.rb +2 -3
  66. data/lib/rubygems/request_set.rb +25 -16
  67. data/lib/rubygems/requirement.rb +14 -3
  68. data/lib/rubygems/resolver/api_specification.rb +5 -0
  69. data/lib/rubygems/security.rb +6 -1
  70. data/lib/rubygems/util/licenses.rb +35 -4
  71. data/lib/rubygems/version.rb +7 -2
  72. data/test/rubygems/test_gem_commands_build_command.rb +2 -0
  73. data/test/rubygems/test_gem_commands_install_command.rb +37 -0
  74. data/test/rubygems/test_gem_commands_push_command.rb +20 -0
  75. data/test/rubygems/test_gem_install_update_options.rb +2 -0
  76. data/test/rubygems/test_gem_remote_fetcher.rb +5 -1
  77. data/test/rubygems/test_gem_request.rb +5 -2
  78. data/test/rubygems/test_gem_requirement.rb +6 -0
  79. data/test/rubygems/test_gem_resolver_api_specification.rb +24 -0
  80. data/test/rubygems/test_gem_specification.rb +17 -3
  81. data/test/rubygems/test_gem_version.rb +29 -3
  82. data/util/ci +1 -1
  83. data/util/generate_spdx_license_list.rb +15 -6
  84. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8894c9873527e4af5cc83ac8aded3cee104bcc856ca20bb56fc1323b42505e12
4
- data.tar.gz: 931f155a8de59dd9b17423356e1dc0de54f3cf5b40bbe5eae801c884420a9407
3
+ metadata.gz: dbf7de0c963b5bf9055a784b43d108a717fdd65fce7a3d97068e1c774b50b3d2
4
+ data.tar.gz: 21713c44bed6a5050127ce97e6398d905677384772c4703a035bd27b22df48dd
5
5
  SHA512:
6
- metadata.gz: 2b23ba224604b357bb71d7f0aff9bb7e73979bb53c59310ef70566e8df2bbaca3c3aec46961cfdd38262baba89af52c8131a4d3eecc50470b2181c52b8db340d
7
- data.tar.gz: e1632f7987dbd4eaa50704237ea7b78cb952ca6f775ed4613399c7b4797e0fb92402a1af7ea4f4cd39e38065c4883a4ba0acc07086ee908d0eb6e50ad356e497
6
+ metadata.gz: daa83b745513df1295b194d70fc0a1e1e3aed8619b1ad7c4542342dc1f4b8a4d3deb1c1ffa660aaea10ff1bda3045bc421101d58f2b5b78257ddad6877e8b2e4
7
+ data.tar.gz: 547b225a05641f1fb5456813945c14fc05a8e67fab01b2d07cd96335d77574b4c5618e96b7b94b1829e4fdcefee85f151fd82b382aa8e8183af611d8fd895d02
@@ -1,5 +1,56 @@
1
1
  # coding: UTF-8
2
2
 
3
+ === 2.7.8 / 2018-11-02
4
+
5
+ Minor enhancements:
6
+
7
+ * Improve invalid proxy error message. Pull request #2217 by Luis
8
+ Sagastume.
9
+ * [Requirement] Treat requirements with == versions as equal. Pull
10
+ request #2230 by Samuel Giddins.
11
+ * Fix exec_name documentation. Pull request #2239 by Luis Sagastume.
12
+ * [TarHeader] Extract the empty header into a constant. Pull request #2247
13
+ by Samuel Giddins.
14
+ * Simplify the code that lets us call the original, non-monkeypatched
15
+ Kernel#require. Pull request #2267 by Leon Miller-Out.
16
+ * Support IO.copy_stream. Pull request #2303 by okkez.
17
+ * Add error message when trying to open a default gem. Pull request #2307
18
+ by Luis Sagastume.
19
+ * Add install alias documentation. Pull request #2320 by ota42y.
20
+ * Removed explicitly declaration of thread library. Pull request #2324 by
21
+ SHIBATA Hiroshi.
22
+ * [Rakefile] Set bundler build metadata when doing a release. Pull request
23
+ #2335 by Samuel Giddins.
24
+ * Speed up globbing relative to given directories. Pull request #2336 by
25
+ Samuel Giddins.
26
+ * Backport commits from ruby core . Pull request #2347 by SHIBATA Hiroshi.
27
+ * Sign in to the correct host before push. Pull request #2366 by Luis
28
+ Sagastume.
29
+ * Bump bundler-1.16.4. Pull request #2381 by SHIBATA Hiroshi.
30
+ * Improve bindir flag description. Pull request #2383 by Luis Sagastume.
31
+ * Update bundler-1.16.6. Pull request #2423 by SHIBATA Hiroshi.
32
+
33
+ Bug fixes:
34
+
35
+ * Frozen string fix - lib/rubygems/bundler_version_finder.rb. Pull request
36
+ #2115 by MSP-Greg.
37
+ * Fixed no assignment variables about default gems installation. Pull
38
+ request #2181 by SHIBATA Hiroshi.
39
+ * Fix #1470: generate documentation when --install-dir is present. Pull
40
+ request #2229 by Elias Hernandis.
41
+ * Validate SPDX license exceptions. Pull request #2257 by Mikit.
42
+ * Keep feature names loaded in the block. Pull request #2261 by Nobuyoshi
43
+ Nakada.
44
+ * Retry api specification spec with original platform. Pull request #2275
45
+ by Luis Sagastume.
46
+ * Fix approximate recommendation with prereleases. Pull request #2345 by
47
+ David Rodríguez.
48
+ * Expand symlinks in gem path. Pull request #2352 by Benoit Daloze.
49
+ * Gem::Version should handle nil like it used to before. Pull request
50
+ #2363 by Luis Sagastume.
51
+ * Fix auto resign expired certificate. Pull request #2380 by Luis
52
+ Sagastume.
53
+
3
54
  === 2.7.7 / 2018-05-08
4
55
 
5
56
  Minor enhancements:
data/Rakefile CHANGED
@@ -173,9 +173,9 @@ end
173
173
  # --------------------------------------------------------------------
174
174
  # Creating a release
175
175
 
176
- task :prerelease => [:clobber, :check_manifest, :test]
176
+ task :prerelease => %w[clobber check_manifest test bundler:build_metadata]
177
177
 
178
- task :postrelease => %w[upload guides:publish blog:publish]
178
+ task :postrelease => %w[bundler:build_metadata:clean upload guides:publish blog:publish]
179
179
 
180
180
  file "pkg/rubygems-#{v}" => "pkg/rubygems-update-#{v}" do |t|
181
181
  require 'find'
@@ -513,4 +513,14 @@ namespace :bundler do
513
513
  task :checkout do
514
514
  sh "git submodule update --init"
515
515
  end
516
+
517
+ task :build_metadata do
518
+ chdir('bundler') { sh "rake build_metadata" }
519
+ end
520
+
521
+ namespace :build_metadata do
522
+ task :clean do
523
+ chdir('bundler') { sh "rake build_metadata:clean" }
524
+ end
525
+ end
516
526
  end
@@ -1,3 +1,83 @@
1
+ ## 1.16.6 (2018-10-05)
2
+
3
+ Changes:
4
+
5
+ - Add an error message when adding a gem with `bundle add` that's already in the bundle ([#6341](https://github.com/bundler/bundler/issues/6341), @agrim123)
6
+ - Add Homepage, Source Code and Chanagelog URI metadata fields to the `bundle gem` gemspec template (@walf443)
7
+
8
+ Bugfixes:
9
+
10
+ - Fix issue where updating a gem resulted in the gem's version being downgraded when `BUNDLE_ONLY_UPDATE_TO_NEWER_VERSIONS` was set ([#6529](https://github.com/bundler/bundler/issues/6529), @theflow)
11
+ - Fix some rescue calls that don't specifiy error type (@utilum)
12
+ - Fix an issue when the Lockfile would contain platform-specific gems that it didn't need ([#6491](https://github.com/bundler/bundler/issues/6491), @segiddins)
13
+ - Improve handlding of adding new gems with only a single group to the Gemfile in `bundle add` (@agrim123)
14
+ - Refactor check for OpenSSL in `bundle env` (@voxik)
15
+ - Remove an unnecessary assignment in Metadata (@voxik)
16
+
17
+ Documentation:
18
+
19
+ - Update docs to reflect revised guidance to check in Gemfile.lock into version control for gems ([#5879](https://github.com/bundler/bundler/issues/5879), @arbonap)
20
+ - Add documentation for the `--all` flag in `bundle update` (@agrim123)
21
+ - Update README to use `bundle add` in usage examples (@hdf1986)
22
+
23
+ ## 1.16.5 (2018-09-18)
24
+
25
+ Changes:
26
+
27
+ - Add support for TruffleRuby (@eregon)
28
+
29
+ Bugfixes:
30
+
31
+ - Avoid printing git errors when checking the version on incorrectly packaged versions of Bundler ([#6453](https://github.com/bundler/bundler/issues/6453), @greysteil)
32
+ - Fix issue where Bundler does not check the given class when comparing equality in DepProxy (@ChrisBr)
33
+ - Handle `RangeNotSatisfiable` error in Compact Index (@MaxLap)
34
+ - Check for initialized `search` variable in `LazySpecification` (@voxik)
35
+ - Fix LoadError occurring in nested bundle exec calls ([#6537](https://github.com/bundler/bundler/issues/6537), @colby-swandale)
36
+ - Check that Bundler::Deprecate is not an autoload constant ([#6163](https://github.com/bundler/bundler/issues/6163), @eregon)
37
+ - Prefer non-pre-release versions when performing a `bundle update --patch` ([#6684](https://github.com/bundler/bundler/issues/6684), @segiddins)
38
+
39
+ ## 1.16.4 (2018-08-17)
40
+
41
+ Changes:
42
+
43
+ - Welcome new members to the Bundler core team (@indirect)
44
+ - Don't mutate original error trees when determining version_conflict_message (@greysteil)
45
+ - Update vendored Molinillo to 0.6.6 (@segiddins)
46
+
47
+ Bugfixes:
48
+
49
+ - Reword bundle update regression message to be more clear to the user when a gem's version is downgraded ([#6584](https://github.com/bundler/bundler/issues/6584), @ralphbolo)
50
+ - Respect --conservative flag when updating a dependency group ([#6560](https://github.com/bundler/bundler/issues/6560), @greysteil)
51
+ - Fix issue where a pre-release version was not being selected when it's specified in the Gemfile ([#6449](https://github.com/bundler/bundler/issues/6449), @akihiro17)
52
+ - Fix issue where `Etc` was not loaded when getting the user's home dir ([#6640](https://github.com/bundler/bundler/issues/6640), @colby-swandale)
53
+ - Use UTF-8 for reading files including Gemfile ([#6660](https://github.com/bundler/bundler/issues/6660), @eregon)
54
+ - Remove unnecessary `while` loop in path resolver helper (@ojab)
55
+
56
+ Documentation:
57
+
58
+ - Document that `bundle show [--paths]` sorts results by name (@kemitchell)
59
+
60
+ ## 1.16.3 (2018-07-17)
61
+
62
+ Features:
63
+
64
+ - Support URI::File of Ruby 2.6 (@hsbt)
65
+
66
+ Bugfixes:
67
+
68
+ - Expand symlinks during setup to allow Bundler to load correctly when using symlinks in $GEM_HOME ([#6465](https://github.com/bundler/bundler/issues/6465), @ojab, @indirect)
69
+ - Dont let Bundler create temporary folders for gem installs which are owned by root ([#6258](https://github.com/bundler/bundler/issues/6258), @colby-swandale)
70
+ - Don't fallback to using temporary directories when needed directories already exist ([#6546](https://github.com/bundler/bundler/issues/6546), @brodock)
71
+ - Use SharedHelpers.filesystem_access when reading a Gemfile so friendly error messages can be given to the user ([#6541](https://github.com/bundler/bundler/issues/6541), @segiddins)
72
+ - Check if source responds to `#remotes` before printing gem install error message ([#6211](https://github.com/bundler/bundler/issues/6211), @colby-swandale)
73
+ - Handle Errno::ENOTSUP in the Bundler Process Lock to prevent exceptions when using NFS mounts ([#6566](https://github.com/bundler/bundler/issues/6566), @colby-swandale)
74
+ - Respect encodings when reading gemspecs ([#6598](https://github.com/bundler/bundler/issues/6598), @deivid-rodriguez)
75
+
76
+ Documentation:
77
+
78
+ - Fix links between manual pages (@BanzaiMan)
79
+ - Add warning to Gemfile documentation for the use of the `source` option when declaring gems ([#6280](https://github.com/bundler/bundler/issues/6280), @forestgagnon)
80
+
1
81
  ## 1.16.2 (2018-04-20)
2
82
 
3
83
  Changes:
@@ -24,7 +24,7 @@ Bundler is most commonly used to manage your application's dependencies. For exa
24
24
 
25
25
  ```
26
26
  bundle init
27
- echo 'gem "rspec"' >> Gemfile
27
+ bundle add rspec
28
28
  bundle install
29
29
  bundle exec rspec
30
30
  ```
@@ -9,7 +9,8 @@ Gem::Specification.new do |s|
9
9
  s.version = Bundler::VERSION
10
10
  s.license = "MIT"
11
11
  s.authors = [
12
- "André Arko", "Samuel Giddins", "Chris Morris", "James Wen", "Tim Moore",
12
+ "André Arko", "Samuel Giddins", "Colby Swandale", "Hiroshi Shibata",
13
+ "David Rodríguez", "Grey Baker", "Stephanie Morillo", "Chris Morris", "James Wen", "Tim Moore",
13
14
  "André Medeiros", "Jessica Lynn Suttles", "Terence Lee", "Carl Lerche",
14
15
  "Yehuda Katz"
15
16
  ]
@@ -159,16 +159,18 @@ module Bundler
159
159
  def user_home
160
160
  @user_home ||= begin
161
161
  home = Bundler.rubygems.user_home
162
+ bundle_home = home ? File.join(home, ".bundle") : nil
162
163
 
163
164
  warning = if home.nil?
164
165
  "Your home directory is not set."
165
166
  elsif !File.directory?(home)
166
167
  "`#{home}` is not a directory."
167
- elsif !File.writable?(home)
168
+ elsif !File.writable?(home) && (!File.directory?(bundle_home) || !File.writable?(bundle_home))
168
169
  "`#{home}` is not writable."
169
170
  end
170
171
 
171
172
  if warning
173
+ Kernel.send(:require, "etc")
172
174
  user_home = tmp_home_path(Etc.getlogin, warning)
173
175
  Bundler.ui.warn "#{warning}\nBundler will use `#{user_home}' as your home directory temporarily.\n"
174
176
  user_home
@@ -189,7 +191,7 @@ module Bundler
189
191
  end
190
192
  tmp_home_path.join(login).tap(&:mkpath)
191
193
  end
192
- rescue => e
194
+ rescue RuntimeError => e
193
195
  raise e.exception("#{warning}\nBundler also failed to create a temporary home directory at `#{path}':\n#{e}")
194
196
  end
195
197
 
@@ -359,8 +361,8 @@ EOF
359
361
  @requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
360
362
  end
361
363
 
362
- def mkdir_p(path)
363
- if requires_sudo?
364
+ def mkdir_p(path, options = {})
365
+ if requires_sudo? && !options[:no_sudo]
364
366
  sudo "mkdir -p '#{path}'" unless File.exist?(path)
365
367
  else
366
368
  SharedHelpers.filesystem_access(path, :write) do |p|
@@ -407,12 +409,14 @@ EOF
407
409
  end
408
410
 
409
411
  def read_file(file)
410
- File.open(file, "rb", &:read)
412
+ SharedHelpers.filesystem_access(file, :read) do
413
+ File.open(file, "r:UTF-8", &:read)
414
+ end
411
415
  end
412
416
 
413
417
  def load_marshal(data)
414
418
  Marshal.load(data)
415
- rescue => e
419
+ rescue StandardError => e
416
420
  raise MarshalError, "#{e.class}: #{e.message}"
417
421
  end
418
422
 
@@ -4,6 +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 = "2018-11-02".freeze
8
+ @git_commit_sha = "8a789f00b".freeze
7
9
  @release = false
8
10
  # end ivars
9
11
 
@@ -23,9 +25,24 @@ module Bundler
23
25
 
24
26
  # The SHA for the git commit the bundler gem was built from.
25
27
  def self.git_commit_sha
26
- @git_commit_sha ||= Dir.chdir(File.expand_path("..", __FILE__)) do
27
- `git rev-parse --short HEAD`.strip.freeze
28
+ return @git_commit_sha if @git_commit_sha
29
+
30
+ # If Bundler has been installed without its .git directory and without a
31
+ # commit instance variable then we can't determine its commits SHA.
32
+ git_dir = File.join(File.expand_path("../../..", __FILE__), ".git")
33
+ if File.directory?(git_dir)
34
+ return @git_commit_sha = Dir.chdir(git_dir) { `git rev-parse --short HEAD`.strip.freeze }
35
+ end
36
+
37
+ # If Bundler is a submodule in RubyGems, get the submodule commit
38
+ git_sub_dir = File.join(File.expand_path("../../../..", __FILE__), ".git")
39
+ if File.directory?(git_sub_dir)
40
+ return @git_commit_sha = Dir.chdir(git_sub_dir) do
41
+ `git ls-tree --abbrev=8 HEAD bundler`.split(/\s/).fetch(2, "").strip.freeze
42
+ end
28
43
  end
44
+
45
+ @git_commit_sha ||= "unknown"
29
46
  end
30
47
 
31
48
  # Whether this is an official release build of Bundler.
@@ -741,7 +741,7 @@ module Bundler
741
741
  end
742
742
 
743
743
  Bundler.ui.warn "The latest bundler is #{latest}, but you are currently running #{current}.\n#{suggestion}"
744
- rescue
744
+ rescue RuntimeError
745
745
  nil
746
746
  end
747
747
  end
@@ -89,6 +89,7 @@ module Bundler
89
89
  possibilities = [
90
90
  "#!/usr/bin/env ruby\n",
91
91
  "#!/usr/bin/env jruby\n",
92
+ "#!/usr/bin/env truffleruby\n",
92
93
  "#!#{Gem.ruby}\n",
93
94
  ]
94
95
 
@@ -38,8 +38,8 @@ module Bundler
38
38
  Bundler::CLI::Common.ensure_all_gems_in_lockfile!(gems)
39
39
 
40
40
  if groups.any?
41
- specs = Bundler.definition.specs_for groups
42
- gems.concat(specs.map(&:name))
41
+ deps = Bundler.definition.dependencies.select {|d| (d.groups & groups).any? }
42
+ gems.concat(deps.map(&:name))
43
43
  end
44
44
 
45
45
  Bundler.definition(:gems => gems, :sources => sources, :ruby => options[:ruby],
@@ -76,7 +76,7 @@ module Bundler
76
76
  if !new_version
77
77
  Bundler.ui.warn "Bundler attempted to update #{name} but it was removed from the bundle"
78
78
  elsif new_version < locked_version
79
- Bundler.ui.warn "Bundler attempted to update #{name} but its version regressed from #{locked_version} to #{new_version}"
79
+ Bundler.ui.warn "Note: #{name} version regressed from #{locked_version} to #{new_version}"
80
80
  elsif new_version == locked_version
81
81
  Bundler.ui.warn "Bundler attempted to update #{name} but its version stayed the same"
82
82
  end
@@ -18,6 +18,7 @@ module Bundler
18
18
  2.3
19
19
  2.4
20
20
  2.5
21
+ 2.6
21
22
  ].freeze
22
23
 
23
24
  KNOWN_MAJOR_VERSIONS = KNOWN_MINOR_VERSIONS.map {|v| v.split(".", 2).first }.uniq.freeze
@@ -31,11 +32,13 @@ module Bundler
31
32
  mswin64
32
33
  rbx
33
34
  ruby
35
+ truffleruby
34
36
  x64_mingw
35
37
  ].freeze
36
38
 
37
39
  def ruby?
38
- !mswin? && (!defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby" || RUBY_ENGINE == "rbx" || RUBY_ENGINE == "maglev")
40
+ !mswin? && (!defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby" ||
41
+ RUBY_ENGINE == "rbx" || RUBY_ENGINE == "maglev" || RUBY_ENGINE == "truffleruby")
39
42
  end
40
43
 
41
44
  def mri?
@@ -54,6 +57,10 @@ module Bundler
54
57
  defined?(RUBY_ENGINE) && RUBY_ENGINE == "maglev"
55
58
  end
56
59
 
60
+ def truffleruby?
61
+ defined?(RUBY_ENGINE) && RUBY_ENGINE == "truffleruby"
62
+ end
63
+
57
64
  def mswin?
58
65
  Bundler::WINDOWS
59
66
  end
@@ -246,17 +246,22 @@ module Bundler
246
246
  def resolve
247
247
  @resolve ||= begin
248
248
  last_resolve = converge_locked_specs
249
- if Bundler.frozen_bundle?
250
- Bundler.ui.debug "Frozen, using resolution from the lockfile"
251
- last_resolve
252
- elsif !unlocking? && nothing_changed?
253
- Bundler.ui.debug("Found no changes, using resolution from the lockfile")
254
- last_resolve
255
- else
256
- # Run a resolve against the locally available gems
257
- Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
258
- last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
259
- end
249
+ resolve =
250
+ if Bundler.frozen_bundle?
251
+ Bundler.ui.debug "Frozen, using resolution from the lockfile"
252
+ last_resolve
253
+ elsif !unlocking? && nothing_changed?
254
+ Bundler.ui.debug("Found no changes, using resolution from the lockfile")
255
+ last_resolve
256
+ else
257
+ # Run a resolve against the locally available gems
258
+ Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
259
+ last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
260
+ end
261
+
262
+ # filter out gems that _can_ be installed on multiple platforms, but don't need
263
+ # to be
264
+ resolve.for(expand_dependencies(dependencies, true), [], false, false, false)
260
265
  end
261
266
  end
262
267
 
@@ -970,10 +975,10 @@ module Bundler
970
975
 
971
976
  def additional_base_requirements_for_resolve
972
977
  return [] unless @locked_gems && Bundler.feature_flag.only_update_to_newer_versions?
973
- dependencies_by_name = dependencies.group_by(&:name)
978
+ dependencies_by_name = dependencies.inject({}) {|memo, dep| memo.update(dep.name => dep) }
974
979
  @locked_gems.specs.reduce({}) do |requirements, locked_spec|
975
980
  name = locked_spec.name
976
- next requirements if @locked_deps[name] != dependencies_by_name[name]
981
+ next requirements if @locked_gems.dependencies[name] != dependencies_by_name[name]
977
982
  dep = Gem::Dependency.new(name, ">= #{locked_spec.version}")
978
983
  requirements[name] = DepProxy.new(dep, locked_spec.platform)
979
984
  requirements
@@ -10,11 +10,11 @@ module Bundler
10
10
  end
11
11
 
12
12
  def hash
13
- @hash ||= dep.hash
13
+ @hash ||= [dep, __platform].hash
14
14
  end
15
15
 
16
16
  def ==(other)
17
- return if other.nil?
17
+ return false if other.class != self.class
18
18
  dep == other.dep && __platform == other.__platform
19
19
  end
20
20
 
@@ -30,6 +30,7 @@ module Bundler
30
30
  :mri_24 => Gem::Platform::RUBY,
31
31
  :mri_25 => Gem::Platform::RUBY,
32
32
  :rbx => Gem::Platform::RUBY,
33
+ :truffleruby => Gem::Platform::RUBY,
33
34
  :jruby => Gem::Platform::JAVA,
34
35
  :jruby_18 => Gem::Platform::JAVA,
35
36
  :jruby_19 => Gem::Platform::JAVA,
@@ -8,7 +8,8 @@ rescue LoadError
8
8
  end
9
9
 
10
10
  module Bundler
11
- if defined? Bundler::Deprecate
11
+ # If Bundler::Deprecate is an autoload constant, we need to define it
12
+ if defined?(Bundler::Deprecate) && !autoload?(:Deprecate)
12
13
  # nothing to do!
13
14
  elsif defined? ::Deprecate
14
15
  Deprecate = ::Deprecate