rubygems-update 3.3.18 → 3.4.19
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 +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -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
|
@@ -70,15 +69,20 @@ module Bundler
|
|
70
69
|
@unlock = unlock
|
71
70
|
@optional_groups = optional_groups
|
72
71
|
@remote = false
|
72
|
+
@prefer_local = false
|
73
73
|
@specs = nil
|
74
74
|
@ruby_version = ruby_version
|
75
75
|
@gemfiles = gemfiles
|
76
76
|
|
77
77
|
@lockfile = lockfile
|
78
78
|
@lockfile_contents = String.new
|
79
|
+
|
79
80
|
@locked_bundler_version = nil
|
80
|
-
@
|
81
|
+
@resolved_bundler_version = nil
|
82
|
+
|
83
|
+
@locked_ruby_version = nil
|
81
84
|
@new_platform = nil
|
85
|
+
@removed_platform = nil
|
82
86
|
|
83
87
|
if lockfile && File.exist?(lockfile)
|
84
88
|
@lockfile_contents = Bundler.read_file(lockfile)
|
@@ -105,6 +109,7 @@ module Bundler
|
|
105
109
|
@locked_gems = nil
|
106
110
|
@locked_deps = {}
|
107
111
|
@locked_specs = SpecSet.new([])
|
112
|
+
@originally_locked_specs = @locked_specs
|
108
113
|
@locked_sources = []
|
109
114
|
@locked_platforms = []
|
110
115
|
end
|
@@ -128,7 +133,7 @@ module Bundler
|
|
128
133
|
end
|
129
134
|
@unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version)
|
130
135
|
|
131
|
-
add_current_platform unless
|
136
|
+
add_current_platform unless Bundler.frozen_bundle?
|
132
137
|
|
133
138
|
converge_path_sources_to_gemspec_sources
|
134
139
|
@path_changes = converge_paths
|
@@ -137,31 +142,18 @@ module Bundler
|
|
137
142
|
if @unlock[:conservative]
|
138
143
|
@unlock[:gems] ||= @dependencies.map(&:name)
|
139
144
|
else
|
140
|
-
eager_unlock =
|
141
|
-
@unlock[:gems] = @locked_specs.for(eager_unlock, false,
|
145
|
+
eager_unlock = (@unlock[:gems] || []).map {|name| Dependency.new(name, ">= 0") }
|
146
|
+
@unlock[:gems] = @locked_specs.for(eager_unlock, false, platforms).map(&:name).uniq
|
142
147
|
end
|
143
148
|
|
144
149
|
@dependency_changes = converge_dependencies
|
145
150
|
@local_changes = converge_locals
|
146
151
|
|
147
|
-
@
|
148
|
-
|
149
|
-
@requires = compute_requires
|
152
|
+
@missing_lockfile_dep = check_missing_lockfile_dep
|
150
153
|
end
|
151
154
|
|
152
155
|
def gem_version_promoter
|
153
|
-
@gem_version_promoter ||=
|
154
|
-
locked_specs =
|
155
|
-
if unlocking? && @locked_specs.empty? && !@lockfile_contents.empty?
|
156
|
-
# Definition uses an empty set of locked_specs to indicate all gems
|
157
|
-
# are unlocked, but GemVersionPromoter needs the locked_specs
|
158
|
-
# for conservative comparison.
|
159
|
-
Bundler::SpecSet.new(@locked_gems.specs)
|
160
|
-
else
|
161
|
-
@locked_specs
|
162
|
-
end
|
163
|
-
GemVersionPromoter.new(locked_specs, @unlock[:gems])
|
164
|
-
end
|
156
|
+
@gem_version_promoter ||= GemVersionPromoter.new
|
165
157
|
end
|
166
158
|
|
167
159
|
def resolve_only_locally!
|
@@ -181,6 +173,23 @@ module Bundler
|
|
181
173
|
resolve
|
182
174
|
end
|
183
175
|
|
176
|
+
def resolution_mode=(options)
|
177
|
+
if options["local"]
|
178
|
+
@remote = false
|
179
|
+
else
|
180
|
+
@remote = true
|
181
|
+
@prefer_local = options["prefer-local"]
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def setup_sources_for_resolve
|
186
|
+
if @remote == false
|
187
|
+
sources.cached!
|
188
|
+
else
|
189
|
+
sources.remote!
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
184
193
|
# For given dependency list returns a SpecSet with Gemspec of all the required
|
185
194
|
# dependencies.
|
186
195
|
# 1. The method first resolves the dependencies specified in Gemfile
|
@@ -210,6 +219,8 @@ module Bundler
|
|
210
219
|
true
|
211
220
|
rescue BundlerError => e
|
212
221
|
@resolve = nil
|
222
|
+
@resolver = nil
|
223
|
+
@resolution_packages = nil
|
213
224
|
@specs = nil
|
214
225
|
@gem_version_promoter = nil
|
215
226
|
|
@@ -226,8 +237,16 @@ module Bundler
|
|
226
237
|
end
|
227
238
|
|
228
239
|
def current_dependencies
|
240
|
+
filter_relevant(dependencies)
|
241
|
+
end
|
242
|
+
|
243
|
+
def current_locked_dependencies
|
244
|
+
filter_relevant(locked_dependencies)
|
245
|
+
end
|
246
|
+
|
247
|
+
def filter_relevant(dependencies)
|
229
248
|
dependencies.select do |d|
|
230
|
-
d.should_include? && !d.gem_platforms(
|
249
|
+
d.should_include? && !d.gem_platforms([generic_local_platform]).empty?
|
231
250
|
end
|
232
251
|
end
|
233
252
|
|
@@ -251,10 +270,9 @@ module Bundler
|
|
251
270
|
|
252
271
|
def dependencies_for(groups)
|
253
272
|
groups.map!(&:to_sym)
|
254
|
-
|
273
|
+
current_dependencies.reject do |d|
|
255
274
|
(d.groups & groups).empty?
|
256
275
|
end
|
257
|
-
expand_dependencies(deps)
|
258
276
|
end
|
259
277
|
|
260
278
|
# Resolve all the dependencies specified in Gemfile. It ensures that
|
@@ -266,24 +284,21 @@ module Bundler
|
|
266
284
|
@resolve ||= if Bundler.frozen_bundle?
|
267
285
|
Bundler.ui.debug "Frozen, using resolution from the lockfile"
|
268
286
|
@locked_specs
|
269
|
-
elsif
|
287
|
+
elsif no_resolve_needed?
|
270
288
|
if deleted_deps.any?
|
271
|
-
Bundler.ui.debug
|
289
|
+
Bundler.ui.debug "Some dependencies were deleted, using a subset of the resolution from the lockfile"
|
272
290
|
SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps))
|
273
291
|
else
|
274
|
-
Bundler.ui.debug
|
275
|
-
if @locked_gems.may_include_redundant_platform_specific_gems?
|
292
|
+
Bundler.ui.debug "Found no changes, using resolution from the lockfile"
|
293
|
+
if @removed_platform || @locked_gems.may_include_redundant_platform_specific_gems?
|
276
294
|
SpecSet.new(filter_specs(@locked_specs, @dependencies))
|
277
295
|
else
|
278
296
|
@locked_specs
|
279
297
|
end
|
280
298
|
end
|
281
299
|
else
|
282
|
-
|
283
|
-
|
284
|
-
Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
|
285
|
-
expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true)
|
286
|
-
Resolver.resolve(expanded_dependencies, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
|
300
|
+
Bundler.ui.debug "Found changes from the lockfile, re-resolving dependencies because #{change_reason}"
|
301
|
+
start_resolution
|
287
302
|
end
|
288
303
|
end
|
289
304
|
|
@@ -302,11 +317,11 @@ module Bundler
|
|
302
317
|
|
303
318
|
# Convert to \r\n if the existing lock has them
|
304
319
|
# i.e., Windows with `git config core.autocrlf=true`
|
305
|
-
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match("\r\n")
|
320
|
+
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match?("\r\n")
|
306
321
|
|
307
322
|
if @locked_bundler_version
|
308
323
|
locked_major = @locked_bundler_version.segments.first
|
309
|
-
current_major =
|
324
|
+
current_major = bundler_version_to_lock.segments.first
|
310
325
|
|
311
326
|
updating_major = locked_major < current_major
|
312
327
|
end
|
@@ -346,27 +361,16 @@ module Bundler
|
|
346
361
|
end
|
347
362
|
end
|
348
363
|
|
364
|
+
def bundler_version_to_lock
|
365
|
+
@resolved_bundler_version || Bundler.gem_version
|
366
|
+
end
|
367
|
+
|
349
368
|
def to_lock
|
350
369
|
require_relative "lockfile_generator"
|
351
370
|
LockfileGenerator.generate(self)
|
352
371
|
end
|
353
372
|
|
354
373
|
def ensure_equivalent_gemfile_and_lockfile(explicit_flag = false)
|
355
|
-
msg = String.new
|
356
|
-
msg << "You are trying to install in deployment mode after changing\n" \
|
357
|
-
"your Gemfile. Run `bundle install` elsewhere and add the\n" \
|
358
|
-
"updated #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} to version control."
|
359
|
-
|
360
|
-
unless explicit_flag
|
361
|
-
suggested_command = if Bundler.settings.locations("frozen").keys.&([:global, :local]).any?
|
362
|
-
"bundle config unset frozen"
|
363
|
-
elsif Bundler.settings.locations("deployment").keys.&([:global, :local]).any?
|
364
|
-
"bundle config unset deployment"
|
365
|
-
end
|
366
|
-
msg << "\n\nIf this is a development machine, remove the #{Bundler.default_gemfile} " \
|
367
|
-
"freeze \nby running `#{suggested_command}`."
|
368
|
-
end
|
369
|
-
|
370
374
|
added = []
|
371
375
|
deleted = []
|
372
376
|
changed = []
|
@@ -380,32 +384,36 @@ module Bundler
|
|
380
384
|
deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any?
|
381
385
|
|
382
386
|
both_sources = Hash.new {|h, k| h[k] = [] }
|
383
|
-
|
384
|
-
|
385
|
-
locked_dependencies.each do |d|
|
386
|
-
next if !Bundler.feature_flag.bundler_3_mode? && @locked_specs[d.name].empty?
|
387
|
-
|
388
|
-
both_sources[d.name][1] = d
|
389
|
-
end
|
387
|
+
current_dependencies.each {|d| both_sources[d.name][0] = d }
|
388
|
+
current_locked_dependencies.each {|d| both_sources[d.name][1] = d }
|
390
389
|
|
391
390
|
both_sources.each do |name, (dep, lock_dep)|
|
392
391
|
next if dep.nil? || lock_dep.nil?
|
393
392
|
|
394
|
-
gemfile_source = dep.source ||
|
395
|
-
lock_source = lock_dep.source ||
|
393
|
+
gemfile_source = dep.source || default_source
|
394
|
+
lock_source = lock_dep.source || default_source
|
396
395
|
next if lock_source.include?(gemfile_source)
|
397
396
|
|
398
|
-
gemfile_source_name = dep.source ? gemfile_source.
|
399
|
-
lockfile_source_name = lock_dep.source ? lock_source.
|
397
|
+
gemfile_source_name = dep.source ? gemfile_source.to_gemfile : "no specified source"
|
398
|
+
lockfile_source_name = lock_dep.source ? lock_source.to_gemfile : "no specified source"
|
400
399
|
changed << "* #{name} from `#{lockfile_source_name}` to `#{gemfile_source_name}`"
|
401
400
|
end
|
402
401
|
|
403
402
|
reason = change_reason
|
404
|
-
msg
|
403
|
+
msg = String.new
|
404
|
+
msg << "#{reason.capitalize.strip}, but the lockfile can't be updated because frozen mode is set"
|
405
405
|
msg << "\n\nYou have added to the Gemfile:\n" << added.join("\n") if added.any?
|
406
406
|
msg << "\n\nYou have deleted from the Gemfile:\n" << deleted.join("\n") if deleted.any?
|
407
407
|
msg << "\n\nYou have changed in the Gemfile:\n" << changed.join("\n") if changed.any?
|
408
|
-
msg << "\n"
|
408
|
+
msg << "\n\nRun `bundle install` elsewhere and add the updated #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} to version control.\n"
|
409
|
+
|
410
|
+
unless explicit_flag
|
411
|
+
suggested_command = unless Bundler.settings.locations("frozen").keys.include?(:env)
|
412
|
+
"bundle config set frozen false"
|
413
|
+
end
|
414
|
+
msg << "If this is a development machine, remove the #{Bundler.default_gemfile.relative_path_from(SharedHelpers.pwd)} " \
|
415
|
+
"freeze by running `#{suggested_command}`." if suggested_command
|
416
|
+
end
|
409
417
|
|
410
418
|
raise ProductionError, msg if added.any? || deleted.any? || changed.any? || !nothing_changed?
|
411
419
|
end
|
@@ -454,7 +462,9 @@ module Bundler
|
|
454
462
|
end
|
455
463
|
|
456
464
|
def remove_platform(platform)
|
457
|
-
|
465
|
+
removed_platform = @platforms.delete(Gem::Platform.new(platform))
|
466
|
+
@removed_platform ||= removed_platform
|
467
|
+
return if removed_platform
|
458
468
|
raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}"
|
459
469
|
end
|
460
470
|
|
@@ -468,7 +478,11 @@ module Bundler
|
|
468
478
|
private :sources
|
469
479
|
|
470
480
|
def nothing_changed?
|
471
|
-
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@
|
481
|
+
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@missing_lockfile_dep && !@unlocking_bundler
|
482
|
+
end
|
483
|
+
|
484
|
+
def no_resolve_needed?
|
485
|
+
!unlocking? && nothing_changed?
|
472
486
|
end
|
473
487
|
|
474
488
|
def unlocking?
|
@@ -477,8 +491,32 @@ module Bundler
|
|
477
491
|
|
478
492
|
private
|
479
493
|
|
494
|
+
def resolver
|
495
|
+
@resolver ||= Resolver.new(resolution_packages, gem_version_promoter)
|
496
|
+
end
|
497
|
+
|
498
|
+
def expanded_dependencies
|
499
|
+
dependencies_with_bundler + metadata_dependencies
|
500
|
+
end
|
501
|
+
|
502
|
+
def dependencies_with_bundler
|
503
|
+
return dependencies unless @unlocking_bundler
|
504
|
+
return dependencies if dependencies.map(&:name).include?("bundler")
|
505
|
+
|
506
|
+
[Dependency.new("bundler", @unlocking_bundler)] + dependencies
|
507
|
+
end
|
508
|
+
|
509
|
+
def resolution_packages
|
510
|
+
@resolution_packages ||= begin
|
511
|
+
last_resolve = converge_locked_specs
|
512
|
+
remove_ruby_from_platforms_if_necessary!(current_dependencies)
|
513
|
+
packages = Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, :locked_specs => @originally_locked_specs, :unlock => @unlock[:gems], :prerelease => gem_version_promoter.pre?)
|
514
|
+
additional_base_requirements_for_resolve(packages, last_resolve)
|
515
|
+
end
|
516
|
+
end
|
517
|
+
|
480
518
|
def filter_specs(specs, deps)
|
481
|
-
SpecSet.new(specs).for(
|
519
|
+
SpecSet.new(specs).for(deps, false, platforms)
|
482
520
|
end
|
483
521
|
|
484
522
|
def materialize(dependencies)
|
@@ -495,19 +533,62 @@ module Bundler
|
|
495
533
|
"removed in order to install."
|
496
534
|
end
|
497
535
|
|
498
|
-
|
536
|
+
missing_specs_list = missing_specs.group_by(&:source).map do |source, missing_specs_for_source|
|
537
|
+
"#{missing_specs_for_source.map(&:full_name).join(", ")} in #{source}"
|
538
|
+
end
|
539
|
+
|
540
|
+
raise GemNotFound, "Could not find #{missing_specs_list.join(" nor ")}"
|
499
541
|
end
|
500
542
|
|
501
|
-
|
502
|
-
|
503
|
-
|
543
|
+
incomplete_specs = specs.incomplete_specs
|
544
|
+
loop do
|
545
|
+
break if incomplete_specs.empty?
|
546
|
+
|
547
|
+
Bundler.ui.debug("The lockfile does not have all gems needed for the current platform though, Bundler will still re-resolve dependencies")
|
548
|
+
setup_sources_for_resolve
|
549
|
+
resolution_packages.delete(incomplete_specs)
|
550
|
+
@resolve = start_resolution
|
551
|
+
specs = resolve.materialize(dependencies)
|
552
|
+
|
553
|
+
still_incomplete_specs = specs.incomplete_specs
|
554
|
+
|
555
|
+
if still_incomplete_specs == incomplete_specs
|
556
|
+
package = resolution_packages.get_package(incomplete_specs.first.name)
|
557
|
+
resolver.raise_not_found! package
|
558
|
+
end
|
559
|
+
|
560
|
+
incomplete_specs = still_incomplete_specs
|
504
561
|
end
|
505
562
|
|
563
|
+
bundler = sources.metadata_source.specs.search(["bundler", Bundler.gem_version]).last
|
564
|
+
specs["bundler"] = bundler
|
565
|
+
|
506
566
|
specs
|
507
567
|
end
|
508
568
|
|
569
|
+
def start_resolution
|
570
|
+
result = resolver.start
|
571
|
+
|
572
|
+
@resolved_bundler_version = result.find {|spec| spec.name == "bundler" }&.version
|
573
|
+
|
574
|
+
SpecSet.new(SpecSet.new(result).for(dependencies, false, @platforms))
|
575
|
+
end
|
576
|
+
|
509
577
|
def precompute_source_requirements_for_indirect_dependencies?
|
510
|
-
|
578
|
+
sources.non_global_rubygems_sources.all?(&:dependency_api_available?) && !sources.aggregate_global_source?
|
579
|
+
end
|
580
|
+
|
581
|
+
def pin_locally_available_names(source_requirements)
|
582
|
+
source_requirements.each_with_object({}) do |(name, original_source), new_source_requirements|
|
583
|
+
local_source = original_source.dup
|
584
|
+
local_source.local_only!
|
585
|
+
|
586
|
+
new_source_requirements[name] = if local_source.specs.search(name).any?
|
587
|
+
local_source
|
588
|
+
else
|
589
|
+
original_source
|
590
|
+
end
|
591
|
+
end
|
511
592
|
end
|
512
593
|
|
513
594
|
def current_ruby_platform_locked?
|
@@ -524,6 +605,8 @@ module Bundler
|
|
524
605
|
end
|
525
606
|
|
526
607
|
def add_current_platform
|
608
|
+
return if current_ruby_platform_locked?
|
609
|
+
|
527
610
|
add_platform(local_platform)
|
528
611
|
end
|
529
612
|
|
@@ -545,12 +628,13 @@ module Bundler
|
|
545
628
|
[@new_platform, "you added a new platform to your gemfile"],
|
546
629
|
[@path_changes, "the gemspecs for path gems changed"],
|
547
630
|
[@local_changes, "the gemspecs for git local gems changed"],
|
548
|
-
[@
|
631
|
+
[@missing_lockfile_dep, "your lock file is missing \"#{@missing_lockfile_dep}\""],
|
632
|
+
[@unlocking_bundler, "an update to the version of Bundler itself was requested"],
|
549
633
|
].select(&:first).map(&:last).join(", ")
|
550
634
|
end
|
551
635
|
|
552
|
-
def pretty_dep(dep
|
553
|
-
SharedHelpers.pretty_dependency(dep
|
636
|
+
def pretty_dep(dep)
|
637
|
+
SharedHelpers.pretty_dependency(dep)
|
554
638
|
end
|
555
639
|
|
556
640
|
# Check if the specs of the given source changed
|
@@ -587,8 +671,8 @@ module Bundler
|
|
587
671
|
|
588
672
|
Bundler.settings.local_overrides.map do |k, v|
|
589
673
|
spec = @dependencies.find {|s| s.name == k }
|
590
|
-
source = spec
|
591
|
-
if source
|
674
|
+
source = spec&.source
|
675
|
+
if source&.respond_to?(:local_override!)
|
592
676
|
source.unlock! if @unlock[:gems].include?(spec.name)
|
593
677
|
locals << [source, source.local_override!(v)]
|
594
678
|
end
|
@@ -600,6 +684,26 @@ module Bundler
|
|
600
684
|
!sources_with_changes.each {|source| @unlock[:sources] << source.name }.empty?
|
601
685
|
end
|
602
686
|
|
687
|
+
def check_missing_lockfile_dep
|
688
|
+
all_locked_specs = @locked_specs.map(&:name) << "bundler"
|
689
|
+
|
690
|
+
missing = @locked_specs.select do |s|
|
691
|
+
s.dependencies.any? {|dep| !all_locked_specs.include?(dep.name) }
|
692
|
+
end
|
693
|
+
|
694
|
+
if missing.any?
|
695
|
+
@locked_specs.delete(missing)
|
696
|
+
|
697
|
+
return missing.first.name
|
698
|
+
end
|
699
|
+
|
700
|
+
return if @dependency_changes
|
701
|
+
|
702
|
+
current_dependencies.find do |d|
|
703
|
+
@locked_specs[d.name].empty? && d.name != "bundler"
|
704
|
+
end&.name
|
705
|
+
end
|
706
|
+
|
603
707
|
def converge_paths
|
604
708
|
sources.path_sources.any? do |source|
|
605
709
|
specs_changed?(source)
|
@@ -653,6 +757,8 @@ module Bundler
|
|
653
757
|
dep.source = sources.get(dep.source)
|
654
758
|
end
|
655
759
|
|
760
|
+
next if unlocking?
|
761
|
+
|
656
762
|
unless locked_dep = @locked_deps[dep.name]
|
657
763
|
changes = true
|
658
764
|
next
|
@@ -678,7 +784,9 @@ module Bundler
|
|
678
784
|
# commonly happen if the Gemfile has changed since the lockfile was last
|
679
785
|
# generated
|
680
786
|
def converge_locked_specs
|
681
|
-
|
787
|
+
converged = converge_specs(@locked_specs)
|
788
|
+
|
789
|
+
resolve = SpecSet.new(converged.reject {|s| @unlock[:gems].include?(s.name) })
|
682
790
|
|
683
791
|
diff = nil
|
684
792
|
|
@@ -697,85 +805,80 @@ module Bundler
|
|
697
805
|
|
698
806
|
def converge_specs(specs)
|
699
807
|
converged = []
|
808
|
+
deps = []
|
700
809
|
|
701
|
-
|
702
|
-
specs[dep].any? {|s| s.satisfies?(dep) && (!dep.source || s.source.include?(dep.source)) }
|
703
|
-
end
|
810
|
+
@specs_that_changed_sources = []
|
704
811
|
|
705
812
|
specs.each do |s|
|
706
|
-
|
813
|
+
name = s.name
|
707
814
|
dep = @dependencies.find {|d| s.satisfies?(d) }
|
815
|
+
lockfile_source = s.source
|
708
816
|
|
709
|
-
|
817
|
+
if dep
|
818
|
+
gemfile_source = dep.source || default_source
|
710
819
|
|
711
|
-
|
820
|
+
@specs_that_changed_sources << s if gemfile_source != lockfile_source
|
821
|
+
deps << dep if !dep.source || lockfile_source.include?(dep.source)
|
822
|
+
@unlock[:gems] << name if lockfile_source.include?(dep.source) && lockfile_source != gemfile_source
|
712
823
|
|
713
|
-
|
714
|
-
|
824
|
+
# Replace the locked dependency's source with the equivalent source from the Gemfile
|
825
|
+
s.source = gemfile_source
|
826
|
+
else
|
827
|
+
# Replace the locked dependency's source with the default source, if the locked source is no longer in the Gemfile
|
828
|
+
s.source = default_source unless sources.get(lockfile_source)
|
829
|
+
end
|
830
|
+
|
831
|
+
next if @unlock[:sources].include?(s.source.name)
|
715
832
|
|
716
833
|
# Path sources have special logic
|
717
834
|
if s.source.instance_of?(Source::Path) || s.source.instance_of?(Source::Gemspec)
|
718
835
|
new_specs = begin
|
719
836
|
s.source.specs
|
720
|
-
rescue PathError
|
837
|
+
rescue PathError
|
721
838
|
# if we won't need the source (according to the lockfile),
|
722
|
-
# don't error if the path
|
839
|
+
# don't error if the path source isn't available
|
723
840
|
next if specs.
|
724
|
-
for(requested_dependencies, false
|
841
|
+
for(requested_dependencies, false).
|
725
842
|
none? {|locked_spec| locked_spec.source == s.source }
|
726
843
|
|
727
844
|
raise
|
728
845
|
end
|
729
846
|
|
730
847
|
new_spec = new_specs[s].first
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
848
|
+
if new_spec
|
849
|
+
s.dependencies.replace(new_spec.dependencies)
|
850
|
+
else
|
851
|
+
# If the spec is no longer in the path source, unlock it. This
|
852
|
+
# commonly happens if the version changed in the gemspec
|
853
|
+
@unlock[:gems] << name
|
854
|
+
end
|
737
855
|
end
|
738
856
|
|
739
|
-
if dep.nil? && requested_dependencies.find {|d|
|
857
|
+
if dep.nil? && requested_dependencies.find {|d| name == d.name }
|
740
858
|
@unlock[:gems] << s.name
|
741
859
|
else
|
742
860
|
converged << s
|
743
861
|
end
|
744
862
|
end
|
745
863
|
|
746
|
-
|
864
|
+
filter_specs(converged, deps)
|
747
865
|
end
|
748
866
|
|
749
867
|
def metadata_dependencies
|
750
868
|
@metadata_dependencies ||= [
|
751
|
-
Dependency.new("Ruby\0",
|
869
|
+
Dependency.new("Ruby\0", Gem.ruby_version),
|
752
870
|
Dependency.new("RubyGems\0", Gem::VERSION),
|
753
871
|
]
|
754
872
|
end
|
755
873
|
|
756
|
-
def expand_dependencies(dependencies, remote = false)
|
757
|
-
deps = []
|
758
|
-
dependencies.each do |dep|
|
759
|
-
dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name)
|
760
|
-
next unless remote || dep.current_platform?
|
761
|
-
target_platforms = dep.gem_platforms(remote ? @platforms : [generic_local_platform])
|
762
|
-
deps += expand_dependency_with_platforms(dep, target_platforms)
|
763
|
-
end
|
764
|
-
deps
|
765
|
-
end
|
766
|
-
|
767
|
-
def expand_dependency_with_platforms(dep, platforms)
|
768
|
-
platforms.map do |p|
|
769
|
-
DepProxy.get_proxy(dep, p)
|
770
|
-
end
|
771
|
-
end
|
772
|
-
|
773
874
|
def source_requirements
|
774
875
|
# Record the specs available in each gem's source, so that those
|
775
876
|
# specs will be available later when the resolver knows where to
|
776
877
|
# look for that gemspec (or its dependencies)
|
777
878
|
source_requirements = if precompute_source_requirements_for_indirect_dependencies?
|
778
|
-
|
879
|
+
all_requirements = source_map.all_requirements
|
880
|
+
all_requirements = pin_locally_available_names(all_requirements) if @prefer_local
|
881
|
+
{ :default => default_source }.merge(all_requirements)
|
779
882
|
else
|
780
883
|
{ :default => Source::RubygemsAggregate.new(sources, source_map) }.merge(source_map.direct_requirements)
|
781
884
|
end
|
@@ -783,20 +886,44 @@ module Bundler
|
|
783
886
|
metadata_dependencies.each do |dep|
|
784
887
|
source_requirements[dep.name] = sources.metadata_source
|
785
888
|
end
|
786
|
-
|
787
|
-
source_requirements["bundler"]
|
889
|
+
|
890
|
+
default_bundler_source = source_requirements["bundler"] || default_source
|
891
|
+
|
892
|
+
if @unlocking_bundler
|
893
|
+
default_bundler_source.add_dependency_names("bundler")
|
894
|
+
else
|
895
|
+
source_requirements[:default_bundler] = default_bundler_source
|
896
|
+
source_requirements["bundler"] = sources.metadata_source # needs to come last to override
|
897
|
+
end
|
898
|
+
|
899
|
+
verify_changed_sources!
|
788
900
|
source_requirements
|
789
901
|
end
|
790
902
|
|
903
|
+
def default_source
|
904
|
+
sources.default_source
|
905
|
+
end
|
906
|
+
|
907
|
+
def verify_changed_sources!
|
908
|
+
@specs_that_changed_sources.each do |s|
|
909
|
+
if s.source.specs.search(s.name).empty?
|
910
|
+
raise GemNotFound, "Could not find gem '#{s.name}' in #{s.source}"
|
911
|
+
end
|
912
|
+
end
|
913
|
+
end
|
914
|
+
|
791
915
|
def requested_groups
|
792
|
-
groups - Bundler.settings[:without] - @optional_groups + Bundler.settings[:with]
|
916
|
+
values = groups - Bundler.settings[:without] - @optional_groups + Bundler.settings[:with]
|
917
|
+
values &= Bundler.settings[:only] unless Bundler.settings[:only].empty?
|
918
|
+
values
|
793
919
|
end
|
794
920
|
|
795
921
|
def lockfiles_equal?(current, proposed, preserve_unknown_sections)
|
796
922
|
if preserve_unknown_sections
|
797
923
|
sections_to_ignore = LockfileParser.sections_to_ignore(@locked_bundler_version)
|
798
924
|
sections_to_ignore += LockfileParser.unknown_sections_in_lockfile(current)
|
799
|
-
sections_to_ignore
|
925
|
+
sections_to_ignore << LockfileParser::RUBY
|
926
|
+
sections_to_ignore << LockfileParser::BUNDLED unless @unlocking_bundler
|
800
927
|
pattern = /#{Regexp.union(sections_to_ignore)}\n(\s{2,}.*\n)+/
|
801
928
|
whitespace_cleanup = /\n{2,}/
|
802
929
|
current = current.gsub(pattern, "\n").gsub(whitespace_cleanup, "\n\n").strip
|
@@ -805,24 +932,26 @@ module Bundler
|
|
805
932
|
current == proposed
|
806
933
|
end
|
807
934
|
|
808
|
-
def
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
file == true ? dep.name : file
|
814
|
-
end
|
815
|
-
requires
|
935
|
+
def additional_base_requirements_for_resolve(resolution_packages, last_resolve)
|
936
|
+
return resolution_packages unless @locked_gems && !sources.expired_sources?(@locked_gems.sources)
|
937
|
+
converge_specs(@originally_locked_specs - last_resolve).each do |locked_spec|
|
938
|
+
next if locked_spec.source.is_a?(Source::Path)
|
939
|
+
resolution_packages.base_requirements[locked_spec.name] = Gem::Requirement.new(">= #{locked_spec.version}")
|
816
940
|
end
|
941
|
+
resolution_packages
|
817
942
|
end
|
818
943
|
|
819
|
-
def
|
820
|
-
return
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
944
|
+
def remove_ruby_from_platforms_if_necessary!(dependencies)
|
945
|
+
return if Bundler.frozen_bundle? ||
|
946
|
+
Bundler.local_platform == Gem::Platform::RUBY ||
|
947
|
+
!platforms.include?(Gem::Platform::RUBY) ||
|
948
|
+
(@new_platform && platforms.last == Gem::Platform::RUBY) ||
|
949
|
+
@path_changes ||
|
950
|
+
@dependency_changes ||
|
951
|
+
!@originally_locked_specs.incomplete_ruby_specs?(dependencies)
|
952
|
+
|
953
|
+
remove_platform(Gem::Platform::RUBY)
|
954
|
+
add_current_platform
|
826
955
|
end
|
827
956
|
|
828
957
|
def source_map
|