bundler 2.3.26 → 2.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +228 -1
- data/README.md +3 -6
- data/bundler.gemspec +2 -2
- data/exe/bundle +1 -4
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/add.rb +1 -1
- data/lib/bundler/cli/binstubs.rb +5 -1
- data/lib/bundler/cli/check.rb +1 -1
- data/lib/bundler/cli/common.rb +1 -0
- data/lib/bundler/cli/console.rb +2 -2
- data/lib/bundler/cli/doctor.rb +4 -6
- data/lib/bundler/cli/gem.rb +62 -40
- data/lib/bundler/cli/init.rb +2 -2
- data/lib/bundler/cli/install.rb +2 -3
- data/lib/bundler/cli/lock.rb +8 -5
- data/lib/bundler/cli/open.rb +6 -4
- data/lib/bundler/cli/outdated.rb +1 -3
- data/lib/bundler/cli/viz.rb +1 -1
- data/lib/bundler/cli.rb +45 -2
- data/lib/bundler/compact_index_client/cache.rb +1 -1
- data/lib/bundler/compact_index_client/updater.rb +40 -39
- data/lib/bundler/constants.rb +1 -1
- data/lib/bundler/current_ruby.rb +2 -0
- data/lib/bundler/definition.rb +99 -51
- data/lib/bundler/dependency.rb +13 -12
- data/lib/bundler/digest.rb +1 -1
- data/lib/bundler/dsl.rb +3 -3
- data/lib/bundler/endpoint_specification.rb +0 -4
- data/lib/bundler/env.rb +1 -1
- data/lib/bundler/environment_preserver.rb +3 -2
- data/lib/bundler/errors.rb +1 -11
- data/lib/bundler/fetcher/compact_index.rb +9 -11
- data/lib/bundler/fetcher/dependency.rb +2 -6
- data/lib/bundler/fetcher/downloader.rb +2 -5
- data/lib/bundler/fetcher.rb +4 -8
- data/lib/bundler/force_platform.rb +18 -0
- data/lib/bundler/friendly_errors.rb +0 -3
- data/lib/bundler/gem_version_promoter.rb +52 -86
- data/lib/bundler/graph.rb +3 -3
- data/lib/bundler/index.rb +7 -15
- data/lib/bundler/injector.rb +2 -2
- data/lib/bundler/inline.rb +8 -10
- data/lib/bundler/installer/parallel_installer.rb +3 -33
- data/lib/bundler/installer/standalone.rb +12 -8
- data/lib/bundler/installer.rb +9 -23
- data/lib/bundler/lazy_specification.rb +42 -42
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +16 -16
- data/lib/bundler/man/bundle-add.1 +1 -1
- data/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/lib/bundler/man/bundle-cache.1 +3 -3
- data/lib/bundler/man/bundle-cache.1.ronn +2 -2
- data/lib/bundler/man/bundle-check.1 +1 -1
- data/lib/bundler/man/bundle-clean.1 +1 -1
- data/lib/bundler/man/bundle-config.1 +2 -2
- data/lib/bundler/man/bundle-config.1.ronn +1 -1
- data/lib/bundler/man/bundle-console.1 +1 -1
- data/lib/bundler/man/bundle-doctor.1 +1 -1
- data/lib/bundler/man/bundle-exec.1 +5 -5
- data/lib/bundler/man/bundle-exec.1.ronn +5 -5
- data/lib/bundler/man/bundle-gem.1 +27 -37
- data/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/lib/bundler/man/bundle-help.1 +1 -1
- data/lib/bundler/man/bundle-info.1 +1 -1
- data/lib/bundler/man/bundle-init.1 +5 -1
- data/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/lib/bundler/man/bundle-inject.1 +1 -1
- data/lib/bundler/man/bundle-install.1 +1 -30
- data/lib/bundler/man/bundle-install.1.ronn +0 -29
- data/lib/bundler/man/bundle-list.1 +1 -1
- data/lib/bundler/man/bundle-lock.1 +1 -1
- data/lib/bundler/man/bundle-open.1 +22 -2
- data/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/lib/bundler/man/bundle-outdated.1 +1 -1
- data/lib/bundler/man/bundle-platform.1 +2 -2
- data/lib/bundler/man/bundle-platform.1.ronn +1 -1
- data/lib/bundler/man/bundle-plugin.1 +1 -1
- data/lib/bundler/man/bundle-pristine.1 +1 -1
- data/lib/bundler/man/bundle-remove.1 +1 -1
- data/lib/bundler/man/bundle-show.1 +1 -1
- data/lib/bundler/man/bundle-update.1 +1 -1
- data/lib/bundler/man/bundle-version.1 +1 -1
- data/lib/bundler/man/bundle-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +1 -1
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/mirror.rb +5 -7
- data/lib/bundler/plugin/index.rb +4 -4
- data/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/lib/bundler/plugin/installer.rb +5 -2
- data/lib/bundler/plugin.rb +1 -1
- data/lib/bundler/remote_specification.rb +2 -6
- data/lib/bundler/resolver/base.rb +72 -15
- data/lib/bundler/resolver/candidate.rb +94 -0
- data/lib/bundler/resolver/incompatibility.rb +15 -0
- data/lib/bundler/resolver/package.rb +72 -0
- data/lib/bundler/resolver/root.rb +25 -0
- data/lib/bundler/resolver/spec_group.rb +26 -36
- data/lib/bundler/resolver.rb +311 -278
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +16 -9
- data/lib/bundler/rubygems_gem_installer.rb +4 -2
- data/lib/bundler/rubygems_integration.rb +10 -14
- data/lib/bundler/runtime.rb +1 -5
- data/lib/bundler/safe_marshal.rb +31 -0
- data/lib/bundler/settings.rb +1 -7
- data/lib/bundler/setup.rb +4 -1
- data/lib/bundler/shared_helpers.rb +2 -1
- data/lib/bundler/source/git/git_proxy.rb +214 -69
- data/lib/bundler/source/git.rb +17 -18
- data/lib/bundler/source/metadata.rb +0 -1
- data/lib/bundler/source/path/installer.rb +1 -22
- data/lib/bundler/source/path.rb +6 -6
- data/lib/bundler/source/rubygems.rb +19 -77
- data/lib/bundler/source_list.rb +8 -2
- data/lib/bundler/spec_set.rb +22 -14
- data/lib/bundler/templates/Executable +1 -1
- data/lib/bundler/templates/Executable.bundler +5 -10
- data/lib/bundler/templates/Executable.standalone +2 -0
- data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
- data/lib/bundler/ui/shell.rb +35 -12
- data/lib/bundler/ui/silent.rb +21 -5
- data/lib/bundler/uri_normalizer.rb +23 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/lib/bundler/vendored_persistent.rb +1 -33
- data/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/lib/bundler/version.rb +5 -1
- data/lib/bundler/worker.rb +5 -7
- data/lib/bundler.rb +17 -69
- metadata +35 -33
- data/lib/bundler/templates/gems.rb +0 -5
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/lib/bundler/vendored_molinillo.rb +0 -4
- data/lib/bundler/version_ranges.rb +0 -122
data/lib/bundler/cli/open.rb
CHANGED
|
@@ -2,23 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
module Bundler
|
|
4
4
|
class CLI::Open
|
|
5
|
-
attr_reader :options, :name
|
|
5
|
+
attr_reader :options, :name, :path
|
|
6
6
|
def initialize(options, name)
|
|
7
7
|
@options = options
|
|
8
8
|
@name = name
|
|
9
|
+
@path = options[:path] unless options[:path].nil?
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def run
|
|
13
|
+
raise InvalidOption, "Cannot specify `--path` option without a value" if !@path.nil? && @path.empty?
|
|
12
14
|
editor = [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? }
|
|
13
15
|
return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor
|
|
14
16
|
return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match)
|
|
15
17
|
if spec.default_gem?
|
|
16
18
|
Bundler.ui.info "Unable to open #{name} because it's a default gem, so the directory it would normally be installed to does not exist."
|
|
17
19
|
else
|
|
18
|
-
|
|
19
|
-
Dir.chdir(
|
|
20
|
+
root_path = spec.full_gem_path
|
|
21
|
+
Dir.chdir(root_path) do
|
|
20
22
|
require "shellwords"
|
|
21
|
-
command = Shellwords.split(editor)
|
|
23
|
+
command = Shellwords.split(editor) << File.join([root_path, path].compact)
|
|
22
24
|
Bundler.with_original_env do
|
|
23
25
|
system(*command)
|
|
24
26
|
end || Bundler.ui.info("Could not run '#{command.join(" ")}'")
|
data/lib/bundler/cli/outdated.rb
CHANGED
data/lib/bundler/cli/viz.rb
CHANGED
|
@@ -23,7 +23,7 @@ module Bundler
|
|
|
23
23
|
Bundler.ui.warn "Make sure you have the graphviz ruby gem. You can install it with:"
|
|
24
24
|
Bundler.ui.warn "`gem install ruby-graphviz`"
|
|
25
25
|
rescue StandardError => e
|
|
26
|
-
raise unless e.message
|
|
26
|
+
raise unless e.message.to_s.include?("GraphViz not installed or dot not in PATH")
|
|
27
27
|
Bundler.ui.error e.message
|
|
28
28
|
Bundler.ui.warn "Please install GraphViz. On a Mac with Homebrew, you can run `brew install graphviz`."
|
|
29
29
|
end
|
data/lib/bundler/cli.rb
CHANGED
|
@@ -10,6 +10,7 @@ module Bundler
|
|
|
10
10
|
|
|
11
11
|
AUTO_INSTALL_CMDS = %w[show binstubs outdated exec open console licenses clean].freeze
|
|
12
12
|
PARSEABLE_COMMANDS = %w[check config help exec platform show version].freeze
|
|
13
|
+
EXTENSIONS = ["c", "rust"].freeze
|
|
13
14
|
|
|
14
15
|
COMMAND_ALIASES = {
|
|
15
16
|
"check" => "c",
|
|
@@ -22,6 +23,8 @@ module Bundler
|
|
|
22
23
|
}.freeze
|
|
23
24
|
|
|
24
25
|
def self.start(*)
|
|
26
|
+
check_deprecated_ext_option(ARGV) if ARGV.include?("--ext")
|
|
27
|
+
|
|
25
28
|
super
|
|
26
29
|
ensure
|
|
27
30
|
Bundler::SharedHelpers.print_major_deprecations!
|
|
@@ -153,6 +156,7 @@ module Bundler
|
|
|
153
156
|
dependency listed in the gemspec file to the newly created Gemfile.
|
|
154
157
|
D
|
|
155
158
|
method_option "gemspec", :type => :string, :banner => "Use the specified .gemspec to create the Gemfile"
|
|
159
|
+
method_option "gemfile", :type => :string, :banner => "Use the specified name for the gemfile instead of 'Gemfile'"
|
|
156
160
|
def init
|
|
157
161
|
require_relative "cli/init"
|
|
158
162
|
Init.new(options.dup).run
|
|
@@ -292,6 +296,8 @@ module Bundler
|
|
|
292
296
|
"Prefer updating only to next minor version"
|
|
293
297
|
method_option "major", :type => :boolean, :banner =>
|
|
294
298
|
"Prefer updating to next major version (default)"
|
|
299
|
+
method_option "pre", :type => :boolean, :banner =>
|
|
300
|
+
"Always choose the highest allowed version when updating gems, regardless of prerelease status"
|
|
295
301
|
method_option "strict", :type => :boolean, :banner =>
|
|
296
302
|
"Do not allow any gem to be updated past latest --patch | --minor | --major"
|
|
297
303
|
method_option "conservative", :type => :boolean, :banner =>
|
|
@@ -504,6 +510,7 @@ module Bundler
|
|
|
504
510
|
subcommand "config", Config
|
|
505
511
|
|
|
506
512
|
desc "open GEM", "Opens the source directory of the given bundled gem"
|
|
513
|
+
method_option "path", :type => :string, :lazy_default => "", :banner => "Open relative path of the gem source."
|
|
507
514
|
def open(name)
|
|
508
515
|
require_relative "cli/open"
|
|
509
516
|
Open.new(options, name).run
|
|
@@ -574,7 +581,7 @@ module Bundler
|
|
|
574
581
|
method_option :edit, :type => :string, :aliases => "-e", :required => false, :banner => "EDITOR",
|
|
575
582
|
:lazy_default => [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? },
|
|
576
583
|
:desc => "Open generated gemspec in the specified editor (defaults to $EDITOR or $BUNDLER_EDITOR)"
|
|
577
|
-
method_option :ext, :type => :
|
|
584
|
+
method_option :ext, :type => :string, :desc => "Generate the boilerplate for C extension code.", :enum => EXTENSIONS
|
|
578
585
|
method_option :git, :type => :boolean, :default => true, :desc => "Initialize a git repo inside your library."
|
|
579
586
|
method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config set --global gem.mit true`."
|
|
580
587
|
method_option :rubocop, :type => :boolean, :desc => "Add rubocop to the generated Rakefile and gemspec. Set a default with `bundle config set --global gem.rubocop true`."
|
|
@@ -582,7 +589,7 @@ module Bundler
|
|
|
582
589
|
method_option :test, :type => :string, :lazy_default => Bundler.settings["gem.test"] || "", :aliases => "-t", :banner => "Use the specified test framework for your library",
|
|
583
590
|
:desc => "Generate a test directory for your library, either rspec, minitest or test-unit. Set a default with `bundle config set --global gem.test (rspec|minitest|test-unit)`."
|
|
584
591
|
method_option :ci, :type => :string, :lazy_default => Bundler.settings["gem.ci"] || "",
|
|
585
|
-
:desc => "Generate CI configuration, either GitHub Actions,
|
|
592
|
+
:desc => "Generate CI configuration, either GitHub Actions, GitLab CI or CircleCI. Set a default with `bundle config set --global gem.ci (github|gitlab|circle)`"
|
|
586
593
|
method_option :linter, :type => :string, :lazy_default => Bundler.settings["gem.linter"] || "",
|
|
587
594
|
:desc => "Add a linter and code formatter, either RuboCop or Standard. Set a default with `bundle config set --global gem.linter (rubocop|standard)`"
|
|
588
595
|
method_option :github_username, :type => :string, :default => Bundler.settings["gem.github_username"], :banner => "Set your username on GitHub", :desc => "Fill in GitHub username on README so that you don't have to do it manually. Set a default with `bundle config set --global gem.github_username <your_username>`."
|
|
@@ -668,10 +675,14 @@ module Bundler
|
|
|
668
675
|
"If updating, prefer updating only to next minor version"
|
|
669
676
|
method_option "major", :type => :boolean, :banner =>
|
|
670
677
|
"If updating, prefer updating to next major version (default)"
|
|
678
|
+
method_option "pre", :type => :boolean, :banner =>
|
|
679
|
+
"If updating, always choose the highest allowed version, regardless of prerelease status"
|
|
671
680
|
method_option "strict", :type => :boolean, :banner =>
|
|
672
681
|
"If updating, do not allow any gem to be updated past latest --patch | --minor | --major"
|
|
673
682
|
method_option "conservative", :type => :boolean, :banner =>
|
|
674
683
|
"If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated"
|
|
684
|
+
method_option "bundler", :type => :string, :lazy_default => "> 0.a", :banner =>
|
|
685
|
+
"Update the locked version of bundler"
|
|
675
686
|
def lock
|
|
676
687
|
require_relative "cli/lock"
|
|
677
688
|
Lock.new(options).run
|
|
@@ -749,6 +760,38 @@ module Bundler
|
|
|
749
760
|
end
|
|
750
761
|
end
|
|
751
762
|
|
|
763
|
+
def self.check_deprecated_ext_option(arguments)
|
|
764
|
+
# when deprecated version of `--ext` is called
|
|
765
|
+
# print out deprecation warning and pretend `--ext=c` was provided
|
|
766
|
+
if deprecated_ext_value?(arguments)
|
|
767
|
+
SharedHelpers.major_deprecation 2, "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been deprecated. Please select a language, e.g. `--ext=rust` to generate a Rust extension. This gem will now be generated as if `--ext=c` was used."
|
|
768
|
+
arguments[arguments.index("--ext")] = "--ext=c"
|
|
769
|
+
end
|
|
770
|
+
end
|
|
771
|
+
|
|
772
|
+
def self.deprecated_ext_value?(arguments)
|
|
773
|
+
index = arguments.index("--ext")
|
|
774
|
+
next_argument = arguments[index+1]
|
|
775
|
+
|
|
776
|
+
# it is ok when --ext is followed with valid extension value
|
|
777
|
+
# for example `bundle gem hello --ext c`
|
|
778
|
+
return false if EXTENSIONS.include?(next_argument)
|
|
779
|
+
|
|
780
|
+
# deprecated call when --ext is called with no value in last position
|
|
781
|
+
# for example `bundle gem hello_gem --ext`
|
|
782
|
+
return true if next_argument.nil?
|
|
783
|
+
|
|
784
|
+
# deprecated call when --ext is followed by other parameter
|
|
785
|
+
# for example `bundle gem --ext --no-ci hello_gem`
|
|
786
|
+
return true if next_argument.start_with?("-")
|
|
787
|
+
|
|
788
|
+
# deprecated call when --ext is followed by gem name
|
|
789
|
+
# for example `bundle gem --ext hello_gem`
|
|
790
|
+
return true if next_argument
|
|
791
|
+
|
|
792
|
+
false
|
|
793
|
+
end
|
|
794
|
+
|
|
752
795
|
private
|
|
753
796
|
|
|
754
797
|
# Automatically invoke `bundle install` and resume if
|
|
@@ -20,63 +20,64 @@ module Bundler
|
|
|
20
20
|
|
|
21
21
|
def initialize(fetcher)
|
|
22
22
|
@fetcher = fetcher
|
|
23
|
-
require_relative "../vendored_tmpdir"
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def update(local_path, remote_path, retrying = nil)
|
|
27
26
|
headers = {}
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
# first try to fetch any new bytes on the existing file
|
|
33
|
-
if retrying.nil? && local_path.file?
|
|
34
|
-
copy_file local_path, local_temp_path
|
|
35
|
-
|
|
36
|
-
headers["If-None-Match"] = etag_for(local_temp_path)
|
|
37
|
-
headers["Range"] =
|
|
38
|
-
if local_temp_path.size.nonzero?
|
|
39
|
-
# Subtract a byte to ensure the range won't be empty.
|
|
40
|
-
# Avoids 416 (Range Not Satisfiable) responses.
|
|
41
|
-
"bytes=#{local_temp_path.size - 1}-"
|
|
42
|
-
else
|
|
43
|
-
"bytes=#{local_temp_path.size}-"
|
|
44
|
-
end
|
|
45
|
-
end
|
|
28
|
+
local_temp_path = local_path.sub(/$/, ".#{$$}")
|
|
29
|
+
local_temp_path = local_temp_path.sub(/$/, ".retrying") if retrying
|
|
30
|
+
local_temp_path = local_temp_path.sub(/$/, ".tmp")
|
|
46
31
|
|
|
47
|
-
|
|
48
|
-
|
|
32
|
+
# first try to fetch any new bytes on the existing file
|
|
33
|
+
if retrying.nil? && local_path.file?
|
|
34
|
+
copy_file local_path, local_temp_path
|
|
49
35
|
|
|
50
|
-
|
|
36
|
+
headers["If-None-Match"] = etag_for(local_temp_path)
|
|
37
|
+
headers["Range"] =
|
|
38
|
+
if local_temp_path.size.nonzero?
|
|
39
|
+
# Subtract a byte to ensure the range won't be empty.
|
|
40
|
+
# Avoids 416 (Range Not Satisfiable) responses.
|
|
41
|
+
"bytes=#{local_temp_path.size - 1}-"
|
|
42
|
+
else
|
|
43
|
+
"bytes=#{local_temp_path.size}-"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
51
46
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if response.is_a?(Net::HTTPPartialContent) && local_temp_path.size.nonzero?
|
|
55
|
-
local_temp_path.open("a") {|f| f << slice_body(content, 1..-1) }
|
|
47
|
+
response = @fetcher.call(remote_path, headers)
|
|
48
|
+
return nil if response.is_a?(Net::HTTPNotModified)
|
|
56
49
|
|
|
57
|
-
|
|
58
|
-
else
|
|
59
|
-
local_temp_path.open("wb") {|f| f << content }
|
|
50
|
+
content = response.body
|
|
60
51
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
etag = (response["ETag"] || "").gsub(%r{\AW/}, "")
|
|
53
|
+
correct_response = SharedHelpers.filesystem_access(local_temp_path) do
|
|
54
|
+
if response.is_a?(Net::HTTPPartialContent) && local_temp_path.size.nonzero?
|
|
55
|
+
local_temp_path.open("a") {|f| f << slice_body(content, 1..-1) }
|
|
64
56
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
etag_for(local_temp_path) == etag
|
|
58
|
+
else
|
|
59
|
+
local_temp_path.open("wb") {|f| f << content }
|
|
60
|
+
|
|
61
|
+
etag.length.zero? || etag_for(local_temp_path) == etag
|
|
70
62
|
end
|
|
63
|
+
end
|
|
71
64
|
|
|
72
|
-
|
|
73
|
-
|
|
65
|
+
if correct_response
|
|
66
|
+
SharedHelpers.filesystem_access(local_path) do
|
|
67
|
+
FileUtils.mv(local_temp_path, local_path)
|
|
74
68
|
end
|
|
69
|
+
return nil
|
|
70
|
+
end
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
if retrying
|
|
73
|
+
raise MisMatchedChecksumError.new(remote_path, etag, etag_for(local_temp_path))
|
|
77
74
|
end
|
|
75
|
+
|
|
76
|
+
update(local_path, remote_path, :retrying)
|
|
78
77
|
rescue Zlib::GzipFile::Error
|
|
79
78
|
raise Bundler::HTTPError
|
|
79
|
+
ensure
|
|
80
|
+
FileUtils.remove_file(local_temp_path) if File.exist?(local_temp_path)
|
|
80
81
|
end
|
|
81
82
|
|
|
82
83
|
def etag_for(path)
|
data/lib/bundler/constants.rb
CHANGED
data/lib/bundler/current_ruby.rb
CHANGED
data/lib/bundler/definition.rb
CHANGED
|
@@ -16,7 +16,6 @@ module Bundler
|
|
|
16
16
|
:locked_deps,
|
|
17
17
|
:locked_gems,
|
|
18
18
|
:platforms,
|
|
19
|
-
:requires,
|
|
20
19
|
:ruby_version,
|
|
21
20
|
:lockfile,
|
|
22
21
|
:gemfiles
|
|
@@ -80,6 +79,7 @@ module Bundler
|
|
|
80
79
|
@locked_bundler_version = nil
|
|
81
80
|
@locked_ruby_version = nil
|
|
82
81
|
@new_platform = nil
|
|
82
|
+
@removed_platform = nil
|
|
83
83
|
|
|
84
84
|
if lockfile && File.exist?(lockfile)
|
|
85
85
|
@lockfile_contents = Bundler.read_file(lockfile)
|
|
@@ -130,7 +130,7 @@ module Bundler
|
|
|
130
130
|
end
|
|
131
131
|
@unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version)
|
|
132
132
|
|
|
133
|
-
add_current_platform unless
|
|
133
|
+
add_current_platform unless Bundler.frozen_bundle?
|
|
134
134
|
|
|
135
135
|
converge_path_sources_to_gemspec_sources
|
|
136
136
|
@path_changes = converge_paths
|
|
@@ -146,11 +146,11 @@ module Bundler
|
|
|
146
146
|
@dependency_changes = converge_dependencies
|
|
147
147
|
@local_changes = converge_locals
|
|
148
148
|
|
|
149
|
-
@
|
|
149
|
+
@incomplete_lockfile = check_missing_lockfile_specs
|
|
150
150
|
end
|
|
151
151
|
|
|
152
152
|
def gem_version_promoter
|
|
153
|
-
@gem_version_promoter ||= GemVersionPromoter.new
|
|
153
|
+
@gem_version_promoter ||= GemVersionPromoter.new
|
|
154
154
|
end
|
|
155
155
|
|
|
156
156
|
def resolve_only_locally!
|
|
@@ -159,13 +159,6 @@ module Bundler
|
|
|
159
159
|
resolve
|
|
160
160
|
end
|
|
161
161
|
|
|
162
|
-
def resolve_prefering_local!
|
|
163
|
-
@prefer_local = true
|
|
164
|
-
@remote = true
|
|
165
|
-
sources.remote!
|
|
166
|
-
resolve
|
|
167
|
-
end
|
|
168
|
-
|
|
169
162
|
def resolve_with_cache!
|
|
170
163
|
sources.cached!
|
|
171
164
|
resolve
|
|
@@ -177,6 +170,23 @@ module Bundler
|
|
|
177
170
|
resolve
|
|
178
171
|
end
|
|
179
172
|
|
|
173
|
+
def resolution_mode=(options)
|
|
174
|
+
if options["local"]
|
|
175
|
+
@remote = false
|
|
176
|
+
else
|
|
177
|
+
@remote = true
|
|
178
|
+
@prefer_local = options["prefer-local"]
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def setup_sources_for_resolve
|
|
183
|
+
if @remote == false
|
|
184
|
+
sources.cached!
|
|
185
|
+
else
|
|
186
|
+
sources.remote!
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
180
190
|
# For given dependency list returns a SpecSet with Gemspec of all the required
|
|
181
191
|
# dependencies.
|
|
182
192
|
# 1. The method first resolves the dependencies specified in Gemfile
|
|
@@ -264,19 +274,19 @@ module Bundler
|
|
|
264
274
|
@locked_specs
|
|
265
275
|
elsif !unlocking? && nothing_changed?
|
|
266
276
|
if deleted_deps.any?
|
|
267
|
-
Bundler.ui.debug
|
|
277
|
+
Bundler.ui.debug "Some dependencies were deleted, using a subset of the resolution from the lockfile"
|
|
268
278
|
SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps))
|
|
269
279
|
else
|
|
270
|
-
Bundler.ui.debug
|
|
271
|
-
if @locked_gems.may_include_redundant_platform_specific_gems?
|
|
280
|
+
Bundler.ui.debug "Found no changes, using resolution from the lockfile"
|
|
281
|
+
if @removed_platform || @locked_gems.may_include_redundant_platform_specific_gems?
|
|
272
282
|
SpecSet.new(filter_specs(@locked_specs, @dependencies))
|
|
273
283
|
else
|
|
274
284
|
@locked_specs
|
|
275
285
|
end
|
|
276
286
|
end
|
|
277
287
|
else
|
|
278
|
-
Bundler.ui.debug
|
|
279
|
-
|
|
288
|
+
Bundler.ui.debug "Found changes from the lockfile, re-resolving dependencies because #{change_reason}"
|
|
289
|
+
start_resolution
|
|
280
290
|
end
|
|
281
291
|
end
|
|
282
292
|
|
|
@@ -295,11 +305,11 @@ module Bundler
|
|
|
295
305
|
|
|
296
306
|
# Convert to \r\n if the existing lock has them
|
|
297
307
|
# i.e., Windows with `git config core.autocrlf=true`
|
|
298
|
-
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match("\r\n")
|
|
308
|
+
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match?("\r\n")
|
|
299
309
|
|
|
300
310
|
if @locked_bundler_version
|
|
301
311
|
locked_major = @locked_bundler_version.segments.first
|
|
302
|
-
current_major =
|
|
312
|
+
current_major = Bundler.gem_version.segments.first
|
|
303
313
|
|
|
304
314
|
updating_major = locked_major < current_major
|
|
305
315
|
end
|
|
@@ -447,7 +457,9 @@ module Bundler
|
|
|
447
457
|
end
|
|
448
458
|
|
|
449
459
|
def remove_platform(platform)
|
|
450
|
-
|
|
460
|
+
removed_platform = @platforms.delete(Gem::Platform.new(platform))
|
|
461
|
+
@removed_platform ||= removed_platform
|
|
462
|
+
return if removed_platform
|
|
451
463
|
raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}"
|
|
452
464
|
end
|
|
453
465
|
|
|
@@ -461,7 +473,7 @@ module Bundler
|
|
|
461
473
|
private :sources
|
|
462
474
|
|
|
463
475
|
def nothing_changed?
|
|
464
|
-
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes
|
|
476
|
+
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@incomplete_lockfile
|
|
465
477
|
end
|
|
466
478
|
|
|
467
479
|
def unlocking?
|
|
@@ -471,15 +483,20 @@ module Bundler
|
|
|
471
483
|
private
|
|
472
484
|
|
|
473
485
|
def resolver
|
|
474
|
-
@resolver ||=
|
|
475
|
-
last_resolve = converge_locked_specs
|
|
476
|
-
remove_ruby_from_platforms_if_necessary!(current_dependencies)
|
|
477
|
-
Resolver.new(source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve(last_resolve), platforms)
|
|
478
|
-
end
|
|
486
|
+
@resolver ||= Resolver.new(resolution_packages, gem_version_promoter)
|
|
479
487
|
end
|
|
480
488
|
|
|
481
489
|
def expanded_dependencies
|
|
482
|
-
|
|
490
|
+
dependencies + metadata_dependencies
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
def resolution_packages
|
|
494
|
+
@resolution_packages ||= begin
|
|
495
|
+
last_resolve = converge_locked_specs
|
|
496
|
+
remove_ruby_from_platforms_if_necessary!(current_dependencies)
|
|
497
|
+
packages = Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, :locked_specs => @originally_locked_specs, :unlock => @unlock[:gems], :prerelease => gem_version_promoter.pre?)
|
|
498
|
+
additional_base_requirements_for_resolve(packages, last_resolve)
|
|
499
|
+
end
|
|
483
500
|
end
|
|
484
501
|
|
|
485
502
|
def filter_specs(specs, deps)
|
|
@@ -507,23 +524,40 @@ module Bundler
|
|
|
507
524
|
raise GemNotFound, "Could not find #{missing_specs_list.join(" nor ")}"
|
|
508
525
|
end
|
|
509
526
|
|
|
527
|
+
incomplete_specs = specs.incomplete_specs
|
|
510
528
|
loop do
|
|
511
|
-
incomplete_specs = specs.incomplete_specs
|
|
512
529
|
break if incomplete_specs.empty?
|
|
513
530
|
|
|
514
531
|
Bundler.ui.debug("The lockfile does not have all gems needed for the current platform though, Bundler will still re-resolve dependencies")
|
|
515
|
-
|
|
532
|
+
setup_sources_for_resolve
|
|
533
|
+
resolution_packages.delete(incomplete_specs)
|
|
534
|
+
@resolve = start_resolution
|
|
516
535
|
specs = resolve.materialize(dependencies)
|
|
536
|
+
|
|
537
|
+
still_incomplete_specs = specs.incomplete_specs
|
|
538
|
+
|
|
539
|
+
if still_incomplete_specs == incomplete_specs
|
|
540
|
+
package = resolution_packages.get_package(incomplete_specs.first.name)
|
|
541
|
+
resolver.raise_not_found! package
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
incomplete_specs = still_incomplete_specs
|
|
517
545
|
end
|
|
518
546
|
|
|
519
|
-
bundler = sources.metadata_source.specs.search(
|
|
547
|
+
bundler = sources.metadata_source.specs.search(["bundler", Bundler.gem_version]).last
|
|
520
548
|
specs["bundler"] = bundler
|
|
521
549
|
|
|
522
550
|
specs
|
|
523
551
|
end
|
|
524
552
|
|
|
553
|
+
def start_resolution
|
|
554
|
+
result = resolver.start
|
|
555
|
+
|
|
556
|
+
SpecSet.new(SpecSet.new(result).for(dependencies, false, @platforms))
|
|
557
|
+
end
|
|
558
|
+
|
|
525
559
|
def precompute_source_requirements_for_indirect_dependencies?
|
|
526
|
-
|
|
560
|
+
sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
|
|
527
561
|
end
|
|
528
562
|
|
|
529
563
|
def pin_locally_available_names(source_requirements)
|
|
@@ -553,6 +587,8 @@ module Bundler
|
|
|
553
587
|
end
|
|
554
588
|
|
|
555
589
|
def add_current_platform
|
|
590
|
+
return if current_ruby_platform_locked?
|
|
591
|
+
|
|
556
592
|
add_platform(local_platform)
|
|
557
593
|
end
|
|
558
594
|
|
|
@@ -574,6 +610,7 @@ module Bundler
|
|
|
574
610
|
[@new_platform, "you added a new platform to your gemfile"],
|
|
575
611
|
[@path_changes, "the gemspecs for path gems changed"],
|
|
576
612
|
[@local_changes, "the gemspecs for git local gems changed"],
|
|
613
|
+
[@incomplete_lockfile, "your lock file is missing some gems"],
|
|
577
614
|
].select(&:first).map(&:last).join(", ")
|
|
578
615
|
end
|
|
579
616
|
|
|
@@ -628,6 +665,22 @@ module Bundler
|
|
|
628
665
|
!sources_with_changes.each {|source| @unlock[:sources] << source.name }.empty?
|
|
629
666
|
end
|
|
630
667
|
|
|
668
|
+
def check_missing_lockfile_specs
|
|
669
|
+
all_locked_specs = @locked_specs.map(&:name) << "bundler"
|
|
670
|
+
|
|
671
|
+
missing = @locked_specs.select do |s|
|
|
672
|
+
s.dependencies.any? {|dep| !all_locked_specs.include?(dep.name) }
|
|
673
|
+
end
|
|
674
|
+
|
|
675
|
+
if missing.any?
|
|
676
|
+
@locked_specs.delete(missing)
|
|
677
|
+
|
|
678
|
+
true
|
|
679
|
+
else
|
|
680
|
+
false
|
|
681
|
+
end
|
|
682
|
+
end
|
|
683
|
+
|
|
631
684
|
def converge_paths
|
|
632
685
|
sources.path_sources.any? do |source|
|
|
633
686
|
specs_changed?(source)
|
|
@@ -681,6 +734,8 @@ module Bundler
|
|
|
681
734
|
dep.source = sources.get(dep.source)
|
|
682
735
|
end
|
|
683
736
|
|
|
737
|
+
next if unlocking?
|
|
738
|
+
|
|
684
739
|
unless locked_dep = @locked_deps[dep.name]
|
|
685
740
|
changes = true
|
|
686
741
|
next
|
|
@@ -766,12 +821,13 @@ module Bundler
|
|
|
766
821
|
end
|
|
767
822
|
|
|
768
823
|
new_spec = new_specs[s].first
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
824
|
+
if new_spec
|
|
825
|
+
s.dependencies.replace(new_spec.dependencies)
|
|
826
|
+
else
|
|
827
|
+
# If the spec is no longer in the path source, unlock it. This
|
|
828
|
+
# commonly happens if the version changed in the gemspec
|
|
829
|
+
@unlock[:gems] << s.name
|
|
830
|
+
end
|
|
775
831
|
end
|
|
776
832
|
|
|
777
833
|
if dep.nil? && requested_dependencies.find {|d| s.name == d.name }
|
|
@@ -839,22 +895,13 @@ module Bundler
|
|
|
839
895
|
current == proposed
|
|
840
896
|
end
|
|
841
897
|
|
|
842
|
-
def
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
file == true ? dep.name : file
|
|
848
|
-
end
|
|
849
|
-
requires
|
|
898
|
+
def additional_base_requirements_for_resolve(resolution_packages, last_resolve)
|
|
899
|
+
return resolution_packages unless @locked_gems && !sources.expired_sources?(@locked_gems.sources)
|
|
900
|
+
converge_specs(@originally_locked_specs - last_resolve).each do |locked_spec|
|
|
901
|
+
next if locked_spec.source.is_a?(Source::Path)
|
|
902
|
+
resolution_packages.base_requirements[locked_spec.name] = Gem::Requirement.new(">= #{locked_spec.version}")
|
|
850
903
|
end
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
def additional_base_requirements_for_resolve(last_resolve)
|
|
854
|
-
return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
|
|
855
|
-
converge_specs(@originally_locked_specs - last_resolve).map do |locked_spec|
|
|
856
|
-
Dependency.new(locked_spec.name, ">= #{locked_spec.version}")
|
|
857
|
-
end.uniq
|
|
904
|
+
resolution_packages
|
|
858
905
|
end
|
|
859
906
|
|
|
860
907
|
def remove_ruby_from_platforms_if_necessary!(dependencies)
|
|
@@ -862,6 +909,7 @@ module Bundler
|
|
|
862
909
|
Bundler.local_platform == Gem::Platform::RUBY ||
|
|
863
910
|
!platforms.include?(Gem::Platform::RUBY) ||
|
|
864
911
|
(@new_platform && platforms.last == Gem::Platform::RUBY) ||
|
|
912
|
+
@dependency_changes ||
|
|
865
913
|
!@originally_locked_specs.incomplete_ruby_specs?(dependencies)
|
|
866
914
|
|
|
867
915
|
remove_platform(Gem::Platform::RUBY)
|
data/lib/bundler/dependency.rb
CHANGED
|
@@ -7,20 +7,20 @@ require_relative "rubygems_ext"
|
|
|
7
7
|
module Bundler
|
|
8
8
|
class Dependency < Gem::Dependency
|
|
9
9
|
attr_reader :autorequire
|
|
10
|
-
attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref
|
|
10
|
+
attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref
|
|
11
11
|
|
|
12
|
-
ALL_RUBY_VERSIONS = ((18..27).to_a + (30..
|
|
12
|
+
ALL_RUBY_VERSIONS = ((18..27).to_a + (30..33).to_a).freeze
|
|
13
13
|
PLATFORM_MAP = {
|
|
14
|
-
:ruby
|
|
15
|
-
:mri
|
|
16
|
-
:rbx
|
|
14
|
+
:ruby => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
|
|
15
|
+
:mri => [Gem::Platform::RUBY, ALL_RUBY_VERSIONS],
|
|
16
|
+
:rbx => [Gem::Platform::RUBY],
|
|
17
17
|
:truffleruby => [Gem::Platform::RUBY],
|
|
18
|
-
:jruby
|
|
19
|
-
:windows
|
|
20
|
-
:mswin
|
|
21
|
-
:mswin64
|
|
22
|
-
:mingw
|
|
23
|
-
:x64_mingw
|
|
18
|
+
:jruby => [Gem::Platform::JAVA, [18, 19]],
|
|
19
|
+
:windows => [Gem::Platform::WINDOWS, ALL_RUBY_VERSIONS],
|
|
20
|
+
:mswin => [Gem::Platform::MSWIN, ALL_RUBY_VERSIONS],
|
|
21
|
+
:mswin64 => [Gem::Platform::MSWIN64, ALL_RUBY_VERSIONS - [18]],
|
|
22
|
+
:mingw => [Gem::Platform::MINGW, ALL_RUBY_VERSIONS],
|
|
23
|
+
:x64_mingw => [Gem::Platform::X64_MINGW, ALL_RUBY_VERSIONS - [18, 19]],
|
|
24
24
|
}.each_with_object({}) do |(platform, spec), hash|
|
|
25
25
|
hash[platform] = spec[0]
|
|
26
26
|
spec[1]&.each {|version| hash[:"#{platform}_#{version}"] = spec[0] }
|
|
@@ -42,7 +42,7 @@ module Bundler
|
|
|
42
42
|
@env = options["env"]
|
|
43
43
|
@should_include = options.fetch("should_include", true)
|
|
44
44
|
@gemfile = options["gemfile"]
|
|
45
|
-
@force_ruby_platform = options["force_ruby_platform"]
|
|
45
|
+
@force_ruby_platform = options["force_ruby_platform"] if options.key?("force_ruby_platform")
|
|
46
46
|
|
|
47
47
|
@autorequire = Array(options["require"] || []) if options.key?("require")
|
|
48
48
|
end
|
|
@@ -50,6 +50,7 @@ module Bundler
|
|
|
50
50
|
# Returns the platforms this dependency is valid for, in the same order as
|
|
51
51
|
# passed in the `valid_platforms` parameter
|
|
52
52
|
def gem_platforms(valid_platforms)
|
|
53
|
+
return [Gem::Platform::RUBY] if force_ruby_platform
|
|
53
54
|
return valid_platforms if @platforms.empty?
|
|
54
55
|
|
|
55
56
|
valid_platforms.select {|p| expanded_platforms.include?(GemHelpers.generic(p)) }
|
data/lib/bundler/digest.rb
CHANGED
|
@@ -43,7 +43,7 @@ module Bundler
|
|
|
43
43
|
f = (b ^ c ^ d)
|
|
44
44
|
k = 0xCA62C1D6
|
|
45
45
|
end
|
|
46
|
-
t = SHA1_MASK &
|
|
46
|
+
t = SHA1_MASK & rotate(a, 5) + f + e + k + w[i]
|
|
47
47
|
a, b, c, d, e = t, a, SHA1_MASK & rotate(b, 30), c, d # rubocop:disable Style/ParallelAssignment
|
|
48
48
|
end
|
|
49
49
|
mutated = [a, b, c, d, e]
|