rubygems-update 3.4.21 → 3.5.0
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 +132 -2
- data/Manifest.txt +39 -221
- data/README.md +1 -3
- data/bundler/CHANGELOG.md +74 -0
- data/bundler/README.md +1 -2
- data/bundler/bundler.gemspec +4 -2
- data/bundler/exe/bundle +1 -10
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/capistrano.rb +1 -1
- data/bundler/lib/bundler/checksum.rb +245 -0
- data/bundler/lib/bundler/ci_detector.rb +75 -0
- data/bundler/lib/bundler/cli/add.rb +3 -3
- data/bundler/lib/bundler/cli/binstubs.rb +4 -4
- data/bundler/lib/bundler/cli/cache.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +9 -1
- data/bundler/lib/bundler/cli/config.rb +8 -7
- data/bundler/lib/bundler/cli/console.rb +3 -2
- data/bundler/lib/bundler/cli/doctor.rb +2 -2
- data/bundler/lib/bundler/cli/exec.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +31 -23
- data/bundler/lib/bundler/cli/info.rb +2 -13
- data/bundler/lib/bundler/cli/install.rb +5 -4
- data/bundler/lib/bundler/cli/issue.rb +1 -1
- data/bundler/lib/bundler/cli/lock.rb +4 -4
- data/bundler/lib/bundler/cli/open.rb +1 -1
- data/bundler/lib/bundler/cli/outdated.rb +6 -6
- data/bundler/lib/bundler/cli/plugin.rb +7 -14
- data/bundler/lib/bundler/cli/pristine.rb +38 -30
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +5 -5
- data/bundler/lib/bundler/cli.rb +215 -263
- data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
- data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
- data/bundler/lib/bundler/compact_index_client.rb +14 -7
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +5 -21
- data/bundler/lib/bundler/definition.rb +43 -16
- data/bundler/lib/bundler/dependency.rb +16 -12
- data/bundler/lib/bundler/digest.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +43 -25
- data/bundler/lib/bundler/endpoint_specification.rb +6 -2
- data/bundler/lib/bundler/env.rb +1 -3
- data/bundler/lib/bundler/errors.rb +58 -0
- data/bundler/lib/bundler/fetcher/base.rb +3 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
- data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
- data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/bundler/lib/bundler/fetcher/index.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +28 -25
- data/bundler/lib/bundler/friendly_errors.rb +5 -5
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +12 -2
- data/bundler/lib/bundler/graph.rb +9 -9
- data/bundler/lib/bundler/index.rb +1 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/inline.rb +3 -3
- data/bundler/lib/bundler/installer/gem_installer.rb +10 -10
- data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
- data/bundler/lib/bundler/installer/standalone.rb +2 -3
- data/bundler/lib/bundler/installer.rb +9 -9
- data/bundler/lib/bundler/lazy_specification.rb +28 -17
- data/bundler/lib/bundler/lockfile_generator.rb +9 -0
- data/bundler/lib/bundler/lockfile_parser.rb +81 -10
- data/bundler/lib/bundler/man/bundle-add.1 +3 -26
- data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
- data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
- data/bundler/lib/bundler/man/bundle-check.1 +3 -12
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
- data/bundler/lib/bundler/man/bundle-config.1 +20 -211
- data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
- data/bundler/lib/bundler/man/bundle-console.1 +4 -22
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
- data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
- data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
- data/bundler/lib/bundler/man/bundle-help.1 +3 -7
- data/bundler/lib/bundler/man/bundle-info.1 +3 -9
- data/bundler/lib/bundler/man/bundle-init.1 +3 -12
- data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
- data/bundler/lib/bundler/man/bundle-install.1 +27 -125
- data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-list.1 +4 -19
- data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
- data/bundler/lib/bundler/man/bundle-open.1 +7 -27
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
- data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
- data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
- data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
- data/bundler/lib/bundler/man/bundle-show.1 +3 -10
- data/bundler/lib/bundler/man/bundle-update.1 +18 -137
- data/bundler/lib/bundler/man/bundle-version.1 +3 -16
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
- data/bundler/lib/bundler/man/bundle.1 +5 -44
- data/bundler/lib/bundler/man/gemfile.5 +24 -301
- data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
- data/bundler/lib/bundler/match_metadata.rb +4 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +3 -2
- data/bundler/lib/bundler/plugin/index.rb +8 -0
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin.rb +12 -5
- data/bundler/lib/bundler/resolver/base.rb +1 -1
- data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
- data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
- data/bundler/lib/bundler/resolver.rb +16 -16
- data/bundler/lib/bundler/ruby_dsl.rb +20 -12
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +27 -54
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -58
- data/bundler/lib/bundler/rubygems_integration.rb +25 -94
- data/bundler/lib/bundler/runtime.rb +2 -2
- data/bundler/lib/bundler/self_manager.rb +23 -7
- data/bundler/lib/bundler/settings.rb +27 -7
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +35 -13
- data/bundler/lib/bundler/source/git/git_proxy.rb +22 -14
- data/bundler/lib/bundler/source/git.rb +4 -3
- data/bundler/lib/bundler/source/metadata.rb +16 -16
- data/bundler/lib/bundler/source/path.rb +7 -6
- data/bundler/lib/bundler/source/rubygems.rb +21 -14
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/spec_set.rb +43 -12
- data/bundler/lib/bundler/stub_specification.rb +1 -0
- data/bundler/lib/bundler/templates/Executable.bundler +1 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
- data/bundler/lib/bundler/ui/shell.rb +2 -2
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +36 -36
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +8 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +44 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +26 -150
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +4 -46
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -45
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +155 -8
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendored_net_http.rb +8 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -4
- data/bundler/lib/bundler/vendored_timeout.rb +8 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/vlad.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +9 -4
- data/bundler/lib/bundler.rb +38 -35
- data/lib/rubygems/available_set.rb +4 -4
- data/lib/rubygems/basic_specification.rb +35 -37
- data/lib/rubygems/bundler_version_finder.rb +4 -4
- data/lib/rubygems/ci_detector.rb +75 -0
- data/lib/rubygems/command.rb +15 -17
- data/lib/rubygems/command_manager.rb +5 -4
- data/lib/rubygems/commands/build_command.rb +2 -2
- data/lib/rubygems/commands/cert_command.rb +2 -3
- data/lib/rubygems/commands/check_command.rb +4 -4
- data/lib/rubygems/commands/cleanup_command.rb +12 -14
- data/lib/rubygems/commands/contents_command.rb +5 -5
- data/lib/rubygems/commands/dependency_command.rb +4 -5
- data/lib/rubygems/commands/environment_command.rb +3 -5
- data/lib/rubygems/commands/exec_command.rb +1 -1
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/commands/generate_index_command.rb +39 -74
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +8 -16
- data/lib/rubygems/commands/list_command.rb +2 -2
- data/lib/rubygems/commands/lock_command.rb +1 -1
- data/lib/rubygems/commands/open_command.rb +1 -1
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +13 -15
- data/lib/rubygems/commands/push_command.rb +2 -2
- data/lib/rubygems/commands/query_command.rb +4 -5
- data/lib/rubygems/commands/rdoc_command.rb +2 -2
- data/lib/rubygems/commands/search_command.rb +2 -2
- data/lib/rubygems/commands/setup_command.rb +33 -36
- data/lib/rubygems/commands/sources_command.rb +12 -12
- data/lib/rubygems/commands/specification_command.rb +10 -10
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +13 -14
- data/lib/rubygems/commands/unpack_command.rb +7 -7
- data/lib/rubygems/commands/update_command.rb +11 -13
- data/lib/rubygems/commands/which_command.rb +1 -1
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/compatibility.rb +5 -6
- data/lib/rubygems/config_file.rb +7 -7
- data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
- data/lib/rubygems/core_ext/kernel_require.rb +20 -49
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +15 -3
- data/lib/rubygems/dependency.rb +12 -14
- data/lib/rubygems/dependency_installer.rb +30 -31
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +16 -15
- data/lib/rubygems/doctor.rb +6 -6
- data/lib/rubygems/errors.rb +2 -6
- data/lib/rubygems/exceptions.rb +2 -1
- data/lib/rubygems/ext/builder.rb +15 -10
- data/lib/rubygems/ext/cargo_builder.rb +5 -5
- data/lib/rubygems/ext/ext_conf_builder.rb +2 -4
- data/lib/rubygems/ext/rake_builder.rb +1 -1
- data/lib/rubygems/gem_runner.rb +4 -4
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
- data/lib/rubygems/gemcutter_utilities.rb +18 -19
- data/lib/rubygems/install_update_options.rb +18 -19
- data/lib/rubygems/installer.rb +66 -45
- data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
- data/lib/rubygems/local_remote_options.rb +8 -11
- data/lib/rubygems/name_tuple.rb +7 -9
- data/lib/rubygems/net/http.rb +3 -0
- data/lib/rubygems/net-http/LICENSE.txt +22 -0
- data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
- data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
- data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
- data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
- data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
- data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
- data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
- data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
- data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
- data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
- data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
- data/lib/rubygems/net-http/lib/net/https.rb +23 -0
- data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
- data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
- data/lib/rubygems/optparse/lib/optparse.rb +39 -17
- data/lib/rubygems/package/digest_io.rb +1 -1
- data/lib/rubygems/package/old.rb +2 -2
- data/lib/rubygems/package/tar_header.rb +45 -39
- data/lib/rubygems/package/tar_reader/entry.rb +5 -4
- data/lib/rubygems/package/tar_reader.rb +14 -5
- data/lib/rubygems/package/tar_writer.rb +20 -18
- data/lib/rubygems/package.rb +28 -27
- data/lib/rubygems/package_task.rb +2 -2
- data/lib/rubygems/path_support.rb +10 -11
- data/lib/rubygems/platform.rb +65 -48
- data/lib/rubygems/query_utils.rb +7 -9
- data/lib/rubygems/remote_fetcher.rb +17 -17
- data/lib/rubygems/request/connection_pools.rb +3 -3
- data/lib/rubygems/request.rb +20 -17
- data/lib/rubygems/request_set/gem_dependency_api.rb +120 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
- data/lib/rubygems/request_set/lockfile.rb +6 -11
- data/lib/rubygems/request_set.rb +5 -5
- data/lib/rubygems/requirement.rb +7 -7
- data/lib/rubygems/resolv/LICENSE.txt +22 -0
- data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
- data/lib/rubygems/resolver/activation_request.rb +1 -3
- data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
- data/lib/rubygems/resolver/best_set.rb +1 -1
- data/lib/rubygems/resolver/composed_set.rb +1 -1
- data/lib/rubygems/resolver/conflict.rb +4 -12
- data/lib/rubygems/resolver/index_set.rb +4 -4
- data/lib/rubygems/resolver/index_specification.rb +2 -2
- data/lib/rubygems/resolver/installer_set.rb +5 -6
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/resolver.rb +6 -13
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_marshal/elements.rb +138 -0
- data/lib/rubygems/safe_marshal/reader.rb +306 -0
- data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
- data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
- data/lib/rubygems/safe_marshal.rb +74 -0
- data/lib/rubygems/safe_yaml.rb +5 -28
- data/lib/rubygems/security/policies.rb +36 -38
- data/lib/rubygems/security/policy.rb +7 -11
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +8 -22
- data/lib/rubygems/source/git.rb +1 -3
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +7 -9
- data/lib/rubygems/source/lock.rb +1 -3
- data/lib/rubygems/source/specific_file.rb +0 -1
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +12 -12
- data/lib/rubygems/source_list.rb +5 -5
- data/lib/rubygems/spec_fetcher.rb +31 -31
- data/lib/rubygems/specification.rb +145 -150
- data/lib/rubygems/specification_policy.rb +61 -31
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/text.rb +1 -2
- data/lib/rubygems/timeout/LICENSE.txt +22 -0
- data/lib/rubygems/timeout/lib/timeout.rb +199 -0
- data/lib/rubygems/timeout.rb +3 -0
- data/lib/rubygems/tsort/lib/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +9 -11
- data/lib/rubygems/update_suggestion.rb +5 -18
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +17 -23
- data/lib/rubygems/util/licenses.rb +113 -35
- data/lib/rubygems/util/list.rb +3 -1
- data/lib/rubygems/util.rb +2 -4
- data/lib/rubygems/validator.rb +6 -4
- data/lib/rubygems/version.rb +35 -29
- data/lib/rubygems/version_option.rb +2 -5
- data/lib/rubygems/yaml_serializer.rb +9 -4
- data/lib/rubygems.rb +42 -42
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +2 -2
- metadata +43 -225
- data/lib/rubygems/indexer.rb +0 -428
- data/lib/rubygems/mock_gem_ui.rb +0 -86
- data/test/rubygems/alternate_cert.pem +0 -19
- data/test/rubygems/alternate_cert_32.pem +0 -19
- data/test/rubygems/alternate_key.pem +0 -27
- data/test/rubygems/bad_rake.rb +0 -3
- data/test/rubygems/bundler_test_gem.rb +0 -424
- data/test/rubygems/ca_cert.pem +0 -77
- data/test/rubygems/child_cert.pem +0 -19
- data/test/rubygems/child_cert_32.pem +0 -19
- data/test/rubygems/child_key.pem +0 -27
- data/test/rubygems/client.pem +0 -107
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/gem-private_key.pem +0 -27
- data/test/rubygems/data/gem-public_cert.pem +0 -20
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +0 -30
- data/test/rubygems/expired_cert.pem +0 -19
- data/test/rubygems/fake_certlib/openssl.rb +0 -9
- data/test/rubygems/foo/discover.rb +0 -1
- data/test/rubygems/future_cert.pem +0 -19
- data/test/rubygems/future_cert_32.pem +0 -19
- data/test/rubygems/good_rake.rb +0 -3
- data/test/rubygems/grandchild_cert.pem +0 -19
- data/test/rubygems/grandchild_cert_32.pem +0 -19
- data/test/rubygems/grandchild_key.pem +0 -27
- data/test/rubygems/helper.rb +0 -1649
- data/test/rubygems/installer_test_case.rb +0 -248
- data/test/rubygems/invalid_client.pem +0 -49
- data/test/rubygems/invalid_issuer_cert.pem +0 -20
- data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
- data/test/rubygems/invalid_key.pem +0 -27
- data/test/rubygems/invalid_signer_cert.pem +0 -19
- data/test/rubygems/invalid_signer_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_cert.pem +0 -19
- data/test/rubygems/invalidchild_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_key.pem +0 -27
- data/test/rubygems/multifactor_auth_utilities.rb +0 -111
- data/test/rubygems/package/tar_test_case.rb +0 -175
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
- data/test/rubygems/private3072_key.pem +0 -40
- data/test/rubygems/private_ec_key.pem +0 -9
- data/test/rubygems/private_key.pem +0 -27
- data/test/rubygems/public3072_cert.pem +0 -25
- data/test/rubygems/public_cert.pem +0 -20
- data/test/rubygems/public_cert_32.pem +0 -19
- data/test/rubygems/public_key.pem +0 -9
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
- data/test/rubygems/rubygems_plugin.rb +0 -24
- data/test/rubygems/sff/discover.rb +0 -1
- data/test/rubygems/simple_gem.rb +0 -68
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
- data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
- data/test/rubygems/ssl_cert.pem +0 -80
- data/test/rubygems/ssl_key.pem +0 -27
- data/test/rubygems/test_bundled_ca.rb +0 -61
- data/test/rubygems/test_config.rb +0 -28
- data/test/rubygems/test_deprecate.rb +0 -158
- data/test/rubygems/test_exit.rb +0 -17
- data/test/rubygems/test_gem.rb +0 -1799
- data/test/rubygems/test_gem_available_set.rb +0 -130
- data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
- data/test/rubygems/test_gem_command.rb +0 -403
- data/test/rubygems/test_gem_command_manager.rb +0 -400
- data/test/rubygems/test_gem_commands_build_command.rb +0 -739
- data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
- data/test/rubygems/test_gem_commands_check_command.rb +0 -68
- data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
- data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
- data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
- data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
- data/test/rubygems/test_gem_commands_help_command.rb +0 -94
- data/test/rubygems/test_gem_commands_info_command.rb +0 -70
- data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
- data/test/rubygems/test_gem_commands_list_command.rb +0 -33
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
- data/test/rubygems/test_gem_commands_mirror.rb +0 -20
- data/test/rubygems/test_gem_commands_open_command.rb +0 -101
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
- data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
- data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
- data/test/rubygems/test_gem_commands_push_command.rb +0 -603
- data/test/rubygems/test_gem_commands_query_command.rb +0 -858
- data/test/rubygems/test_gem_commands_search_command.rb +0 -16
- data/test/rubygems/test_gem_commands_server_command.rb +0 -20
- data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
- data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
- data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
- data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -522
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
- data/test/rubygems/test_gem_commands_update_command.rb +0 -836
- data/test/rubygems/test_gem_commands_which_command.rb +0 -85
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
- data/test/rubygems/test_gem_config_file.rb +0 -551
- data/test/rubygems/test_gem_dependency.rb +0 -398
- data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
- data/test/rubygems/test_gem_dependency_list.rb +0 -265
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
- data/test/rubygems/test_gem_doctor.rb +0 -195
- data/test/rubygems/test_gem_ext_builder.rb +0 -337
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
- data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
- data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
- data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
- data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
- data/test/rubygems/test_gem_gem_runner.rb +0 -119
- data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
- data/test/rubygems/test_gem_indexer.rb +0 -381
- data/test/rubygems/test_gem_install_update_options.rb +0 -208
- data/test/rubygems/test_gem_installer.rb +0 -2512
- data/test/rubygems/test_gem_local_remote_options.rb +0 -133
- data/test/rubygems/test_gem_name_tuple.rb +0 -43
- data/test/rubygems/test_gem_package.rb +0 -1306
- data/test/rubygems/test_gem_package_old.rb +0 -91
- data/test/rubygems/test_gem_package_tar_header.rb +0 -226
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -135
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
- data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
- data/test/rubygems/test_gem_package_task.rb +0 -118
- data/test/rubygems/test_gem_path_support.rb +0 -139
- data/test/rubygems/test_gem_platform.rb +0 -497
- data/test/rubygems/test_gem_rdoc.rb +0 -137
- data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
- data/test/rubygems/test_gem_request.rb +0 -547
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
- data/test/rubygems/test_gem_request_set.rb +0 -672
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
- data/test/rubygems/test_gem_requirement.rb +0 -505
- data/test/rubygems/test_gem_resolver.rb +0 -859
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
- data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
- data/test/rubygems/test_gem_resolver_specification.rb +0 -63
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
- data/test/rubygems/test_gem_security.rb +0 -341
- data/test/rubygems/test_gem_security_policy.rb +0 -535
- data/test/rubygems/test_gem_security_signer.rb +0 -218
- data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
- data/test/rubygems/test_gem_silent_ui.rb +0 -123
- data/test/rubygems/test_gem_source.rb +0 -254
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
- data/test/rubygems/test_gem_source_git.rb +0 -310
- data/test/rubygems/test_gem_source_installed.rb +0 -35
- data/test/rubygems/test_gem_source_list.rb +0 -119
- data/test/rubygems/test_gem_source_local.rb +0 -107
- data/test/rubygems/test_gem_source_lock.rb +0 -113
- data/test/rubygems/test_gem_source_specific_file.rb +0 -76
- data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
- data/test/rubygems/test_gem_source_vendor.rb +0 -30
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
- data/test/rubygems/test_gem_specification.rb +0 -3856
- data/test/rubygems/test_gem_stream_ui.rb +0 -255
- data/test/rubygems/test_gem_stub_specification.rb +0 -278
- data/test/rubygems/test_gem_text.rb +0 -103
- data/test/rubygems/test_gem_uninstaller.rb +0 -675
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
- data/test/rubygems/test_gem_update_suggestion.rb +0 -209
- data/test/rubygems/test_gem_uri.rb +0 -41
- data/test/rubygems/test_gem_uri_formatter.rb +0 -27
- data/test/rubygems/test_gem_util.rb +0 -91
- data/test/rubygems/test_gem_validator.rb +0 -42
- data/test/rubygems/test_gem_version.rb +0 -305
- data/test/rubygems/test_gem_version_option.rb +0 -165
- data/test/rubygems/test_kernel.rb +0 -124
- data/test/rubygems/test_project_sanity.rb +0 -49
- data/test/rubygems/test_remote_fetch_error.rb +0 -20
- data/test/rubygems/test_require.rb +0 -732
- data/test/rubygems/test_rubygems.rb +0 -76
- data/test/rubygems/test_webauthn_listener.rb +0 -143
- data/test/rubygems/test_webauthn_listener_response.rb +0 -93
- data/test/rubygems/test_webauthn_poller.rb +0 -124
- data/test/rubygems/utilities.rb +0 -436
- data/test/rubygems/wrong_key_cert.pem +0 -19
- data/test/rubygems/wrong_key_cert_32.pem +0 -19
- data/test/test_changelog_generator.rb +0 -17
@@ -238,6 +238,10 @@ All operations involving groups ([`bundle install`](bundle-install.1.html), `Bun
|
|
238
238
|
`Bundler.require`) behave exactly the same as if any groups not
|
239
239
|
matching the current platform were explicitly excluded.
|
240
240
|
|
241
|
+
The following platform values are deprecated and should be replaced with `windows`:
|
242
|
+
|
243
|
+
* `mswin`, `mswin64`, `mingw32`, `x64_mingw`
|
244
|
+
|
241
245
|
### FORCE_RUBY_PLATFORM
|
242
246
|
|
243
247
|
If you always want the pure ruby variant of a gem to be chosen over platform
|
@@ -12,7 +12,7 @@ module Bundler
|
|
12
12
|
|
13
13
|
def self.platforms_match?(gemspec_platform, local_platform)
|
14
14
|
return true if gemspec_platform.nil?
|
15
|
-
return true if Gem::Platform::RUBY
|
15
|
+
return true if gemspec_platform == Gem::Platform::RUBY
|
16
16
|
return true if local_platform == gemspec_platform
|
17
17
|
gemspec_platform = Gem::Platform.new(gemspec_platform)
|
18
18
|
return true if gemspec_platform === local_platform
|
@@ -39,7 +39,7 @@ module Bundler
|
|
39
39
|
# is present to be compatible with `Definition` and is used by
|
40
40
|
# rubygems source.
|
41
41
|
module Source
|
42
|
-
attr_reader :uri, :options, :name
|
42
|
+
attr_reader :uri, :options, :name, :checksum_store
|
43
43
|
attr_accessor :dependency_names
|
44
44
|
|
45
45
|
def initialize(opts)
|
@@ -48,6 +48,7 @@ module Bundler
|
|
48
48
|
@uri = opts["uri"]
|
49
49
|
@type = opts["type"]
|
50
50
|
@name = opts["name"] || "#{@type} at #{@uri}"
|
51
|
+
@checksum_store = Checksum::Store.new
|
51
52
|
end
|
52
53
|
|
53
54
|
# This is used by the default `spec` method to constructs the
|
@@ -95,7 +96,7 @@ module Bundler
|
|
95
96
|
#
|
96
97
|
# Note: Do not override if you don't know what you are doing.
|
97
98
|
def post_install(spec, disable_exts = false)
|
98
|
-
opts = { :
|
99
|
+
opts = { env_shebang: false, disable_extensions: disable_exts }
|
99
100
|
installer = Bundler::Source::Path::Installer.new(spec, opts)
|
100
101
|
installer.post_install
|
101
102
|
end
|
@@ -136,6 +136,14 @@ module Bundler
|
|
136
136
|
@hooks[event] || []
|
137
137
|
end
|
138
138
|
|
139
|
+
# This plugin is installed inside the .bundle/plugin directory,
|
140
|
+
# and thus is managed solely by Bundler
|
141
|
+
def installed_in_plugin_root?(name)
|
142
|
+
return false unless (path = installed?(name))
|
143
|
+
|
144
|
+
path.start_with?("#{Plugin.root}/")
|
145
|
+
end
|
146
|
+
|
139
147
|
private
|
140
148
|
|
141
149
|
# Reads the index file from the directory and initializes the instance
|
@@ -83,7 +83,7 @@ module Bundler
|
|
83
83
|
|
84
84
|
Bundler.configure_gem_home_and_path(Plugin.root)
|
85
85
|
|
86
|
-
Bundler.settings.temporary(:
|
86
|
+
Bundler.settings.temporary(deployment: false, frozen: false) do
|
87
87
|
definition = Definition.new(nil, deps, source_list, true)
|
88
88
|
|
89
89
|
install_definition(definition)
|
@@ -62,7 +62,8 @@ module Bundler
|
|
62
62
|
if names.any?
|
63
63
|
names.each do |name|
|
64
64
|
if index.installed?(name)
|
65
|
-
|
65
|
+
path = index.plugin_path(name).to_s
|
66
|
+
Bundler.rm_rf(path) if index.installed_in_plugin_root?(name)
|
66
67
|
index.unregister_plugin(name)
|
67
68
|
Bundler.ui.info "Uninstalled plugin #{name}"
|
68
69
|
else
|
@@ -100,7 +101,7 @@ module Bundler
|
|
100
101
|
# @param [Pathname] gemfile path
|
101
102
|
# @param [Proc] block that can be evaluated for (inline) Gemfile
|
102
103
|
def gemfile_install(gemfile = nil, &inline)
|
103
|
-
Bundler.settings.temporary(:
|
104
|
+
Bundler.settings.temporary(frozen: false, deployment: false) do
|
104
105
|
builder = DSL.new
|
105
106
|
if block_given?
|
106
107
|
builder.instance_eval(&inline)
|
@@ -227,7 +228,7 @@ module Bundler
|
|
227
228
|
plugins = index.hook_plugins(event)
|
228
229
|
return unless plugins.any?
|
229
230
|
|
230
|
-
|
231
|
+
plugins.each {|name| load_plugin(name) }
|
231
232
|
|
232
233
|
@hooks_by_event[event].each {|blk| blk.call(*args, &arg_blk) }
|
233
234
|
end
|
@@ -239,6 +240,11 @@ module Bundler
|
|
239
240
|
Index.new.installed?(plugin)
|
240
241
|
end
|
241
242
|
|
243
|
+
# @return [true, false] whether the plugin is loaded
|
244
|
+
def loaded?(plugin)
|
245
|
+
@loaded_plugin_names.include?(plugin)
|
246
|
+
end
|
247
|
+
|
242
248
|
# Post installation processing and registering with index
|
243
249
|
#
|
244
250
|
# @param [Array<String>] plugins list to be installed
|
@@ -301,7 +307,7 @@ module Bundler
|
|
301
307
|
@hooks_by_event = Hash.new {|h, k| h[k] = [] }
|
302
308
|
|
303
309
|
load_paths = spec.load_paths
|
304
|
-
|
310
|
+
Gem.add_to_load_path(*load_paths)
|
305
311
|
path = Pathname.new spec.full_gem_path
|
306
312
|
|
307
313
|
begin
|
@@ -329,13 +335,14 @@ module Bundler
|
|
329
335
|
# @param [String] name of the plugin
|
330
336
|
def load_plugin(name)
|
331
337
|
return unless name && !name.empty?
|
338
|
+
return if loaded?(name)
|
332
339
|
|
333
340
|
# Need to ensure before this that plugin root where the rest of gems
|
334
341
|
# are installed to be on load path to support plugin deps. Currently not
|
335
342
|
# done to avoid conflicts
|
336
343
|
path = index.plugin_path(name)
|
337
344
|
|
338
|
-
|
345
|
+
Gem.add_to_load_path(*index.load_paths(name))
|
339
346
|
|
340
347
|
load path.join(PLUGIN_FILE_NAME)
|
341
348
|
|
@@ -8,7 +8,7 @@ module Bundler
|
|
8
8
|
def initialize(terms, cause:, custom_explanation: nil, extended_explanation: nil)
|
9
9
|
@extended_explanation = extended_explanation
|
10
10
|
|
11
|
-
super(terms, :
|
11
|
+
super(terms, cause: cause, custom_explanation: custom_explanation)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -25,9 +25,8 @@ module Bundler
|
|
25
25
|
|
26
26
|
def to_specs(force_ruby_platform)
|
27
27
|
@specs.map do |s|
|
28
|
-
lazy_spec = LazySpecification.
|
28
|
+
lazy_spec = LazySpecification.from_spec(s)
|
29
29
|
lazy_spec.force_ruby_platform = force_ruby_platform
|
30
|
-
lazy_spec.dependencies.replace s.dependencies
|
31
30
|
lazy_spec
|
32
31
|
end
|
33
32
|
end
|
@@ -64,8 +63,6 @@ module Bundler
|
|
64
63
|
end
|
65
64
|
|
66
65
|
def metadata_dependencies(spec)
|
67
|
-
return [] if spec.is_a?(LazySpecification)
|
68
|
-
|
69
66
|
[
|
70
67
|
metadata_dependency("Ruby", spec.required_ruby_version),
|
71
68
|
metadata_dependency("RubyGems", spec.required_rubygems_version),
|
@@ -29,7 +29,7 @@ module Bundler
|
|
29
29
|
|
30
30
|
Bundler.ui.info "Resolving dependencies...", true
|
31
31
|
|
32
|
-
solve_versions(:
|
32
|
+
solve_versions(root: root, logger: logger)
|
33
33
|
end
|
34
34
|
|
35
35
|
def setup_solver
|
@@ -77,7 +77,7 @@ module Bundler
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def solve_versions(root:, logger:)
|
80
|
-
solver = PubGrub::VersionSolver.new(:
|
80
|
+
solver = PubGrub::VersionSolver.new(source: self, root: root, logger: logger)
|
81
81
|
result = solver.solve
|
82
82
|
result.map {|package, version| version.to_specs(package) }.flatten.uniq
|
83
83
|
rescue PubGrub::SolveFailure => e
|
@@ -152,7 +152,7 @@ module Bundler
|
|
152
152
|
requirement_to_range(dependency)
|
153
153
|
end
|
154
154
|
|
155
|
-
PubGrub::VersionConstraint.new(package, :
|
155
|
+
PubGrub::VersionConstraint.new(package, range: range)
|
156
156
|
end
|
157
157
|
|
158
158
|
def versions_for(package, range=VersionRange.any)
|
@@ -181,7 +181,7 @@ module Bundler
|
|
181
181
|
extended_explanation = other_specs_matching_message(specs_matching_other_platforms, label) if specs_matching_other_platforms.any?
|
182
182
|
end
|
183
183
|
|
184
|
-
Incompatibility.new([unsatisfied_term], :
|
184
|
+
Incompatibility.new([unsatisfied_term], cause: cause, custom_explanation: custom_explanation, extended_explanation: extended_explanation)
|
185
185
|
end
|
186
186
|
|
187
187
|
def debug?
|
@@ -220,9 +220,9 @@ module Bundler
|
|
220
220
|
sorted_versions[high]
|
221
221
|
end
|
222
222
|
|
223
|
-
range = PubGrub::VersionRange.new(:
|
223
|
+
range = PubGrub::VersionRange.new(min: low, max: high, include_min: true)
|
224
224
|
|
225
|
-
self_constraint = PubGrub::VersionConstraint.new(package, :
|
225
|
+
self_constraint = PubGrub::VersionConstraint.new(package, range: range)
|
226
226
|
|
227
227
|
dep_term = PubGrub::Term.new(dep_constraint, false)
|
228
228
|
self_term = PubGrub::Term.new(self_constraint, true)
|
@@ -231,7 +231,7 @@ module Bundler
|
|
231
231
|
"current #{dep_package} version is #{dep_constraint.constraint_string}"
|
232
232
|
end
|
233
233
|
|
234
|
-
PubGrub::Incompatibility.new([self_term, dep_term], :
|
234
|
+
PubGrub::Incompatibility.new([self_term, dep_term], cause: :dependency, custom_explanation: custom_explanation)
|
235
235
|
end
|
236
236
|
end
|
237
237
|
|
@@ -266,11 +266,11 @@ module Bundler
|
|
266
266
|
platform_specs.flatten!
|
267
267
|
|
268
268
|
ruby_specs = select_best_platform_match(specs, Gem::Platform::RUBY)
|
269
|
-
groups << Resolver::Candidate.new(version, :
|
269
|
+
groups << Resolver::Candidate.new(version, specs: ruby_specs) if ruby_specs.any?
|
270
270
|
|
271
271
|
next groups if platform_specs == ruby_specs || package.force_ruby_platform?
|
272
272
|
|
273
|
-
groups << Resolver::Candidate.new(version, :
|
273
|
+
groups << Resolver::Candidate.new(version, specs: platform_specs)
|
274
274
|
|
275
275
|
groups
|
276
276
|
end
|
@@ -408,19 +408,19 @@ module Bundler
|
|
408
408
|
when "~>"
|
409
409
|
name = "~> #{ver}"
|
410
410
|
bump = Resolver::Candidate.new(version.bump.to_s + ".A")
|
411
|
-
PubGrub::VersionRange.new(:
|
411
|
+
PubGrub::VersionRange.new(name: name, min: ver, max: bump, include_min: true)
|
412
412
|
when ">"
|
413
|
-
PubGrub::VersionRange.new(:
|
413
|
+
PubGrub::VersionRange.new(min: platform_ver)
|
414
414
|
when ">="
|
415
|
-
PubGrub::VersionRange.new(:
|
415
|
+
PubGrub::VersionRange.new(min: ver, include_min: true)
|
416
416
|
when "<"
|
417
|
-
PubGrub::VersionRange.new(:
|
417
|
+
PubGrub::VersionRange.new(max: ver)
|
418
418
|
when "<="
|
419
|
-
PubGrub::VersionRange.new(:
|
419
|
+
PubGrub::VersionRange.new(max: platform_ver, include_max: true)
|
420
420
|
when "="
|
421
|
-
PubGrub::VersionRange.new(:
|
421
|
+
PubGrub::VersionRange.new(min: ver, max: platform_ver, include_min: true, include_max: true)
|
422
422
|
when "!="
|
423
|
-
PubGrub::VersionRange.new(:
|
423
|
+
PubGrub::VersionRange.new(min: ver, max: platform_ver, include_min: true, include_max: true).invert
|
424
424
|
else
|
425
425
|
raise "bad version specifier: #{op}"
|
426
426
|
end
|
@@ -3,22 +3,28 @@
|
|
3
3
|
module Bundler
|
4
4
|
module RubyDsl
|
5
5
|
def ruby(*ruby_version)
|
6
|
-
options = ruby_version.last.is_a?(Hash)
|
6
|
+
options = ruby_version.pop if ruby_version.last.is_a?(Hash)
|
7
7
|
ruby_version.flatten!
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
if options
|
10
|
+
patchlevel = options[:patchlevel]
|
11
|
+
engine = options[:engine]
|
12
|
+
engine_version = options[:engine_version]
|
11
13
|
|
12
|
-
|
13
|
-
raise GemfileError, "
|
14
|
-
|
15
|
-
|
14
|
+
raise GemfileError, "Please define :engine_version" if engine && engine_version.nil?
|
15
|
+
raise GemfileError, "Please define :engine" if engine_version && engine.nil?
|
16
|
+
|
17
|
+
if options[:file]
|
18
|
+
raise GemfileError, "Do not pass version argument when using :file option" unless ruby_version.empty?
|
19
|
+
ruby_version << normalize_ruby_file(options[:file])
|
20
|
+
end
|
16
21
|
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
if engine == "ruby" && engine_version && ruby_version != Array(engine_version)
|
23
|
+
raise GemfileEvalError, "ruby_version must match the :engine_version for MRI"
|
24
|
+
end
|
20
25
|
end
|
21
|
-
|
26
|
+
|
27
|
+
@ruby_version = RubyVersion.new(ruby_version, patchlevel, engine, engine_version)
|
22
28
|
end
|
23
29
|
|
24
30
|
# Support the various file formats found in .ruby-version files.
|
@@ -32,8 +38,10 @@ module Bundler
|
|
32
38
|
# ruby 2.5.1# close comment and extra spaces doesn't confuse
|
33
39
|
#
|
34
40
|
# Intentionally does not support `3.2.1@gemset` since rvm recommends using .ruby-gemset instead
|
41
|
+
#
|
42
|
+
# Loads the file relative to the dirname of the Gemfile itself.
|
35
43
|
def normalize_ruby_file(filename)
|
36
|
-
file_content = Bundler.read_file(
|
44
|
+
file_content = Bundler.read_file(gemfile.dirname.join(filename))
|
37
45
|
# match "ruby-3.2.2" or "ruby 3.2.2" capturing version string up to the first space or comment
|
38
46
|
if /^ruby(-|\s+)([^\s#]+)/.match(file_content)
|
39
47
|
$2
|
@@ -49,7 +49,7 @@ module Bundler
|
|
49
49
|
(\d+\.\d+\.\d+(?:\.\S+)?) # ruby version
|
50
50
|
(?:p(-?\d+))? # optional patchlevel
|
51
51
|
(?:\s\((\S+)\s(.+)\))? # optional engine info
|
52
|
-
/xo
|
52
|
+
/xo
|
53
53
|
|
54
54
|
# Returns a RubyVersion from the given string.
|
55
55
|
# @param [String] the version string to match.
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require "pathname"
|
4
4
|
|
5
|
+
require "rubygems" unless defined?(Gem)
|
6
|
+
|
5
7
|
require "rubygems/specification"
|
6
8
|
|
7
9
|
# We can't let `Gem::Source` be autoloaded in the `Gem::Specification#source`
|
@@ -46,7 +48,7 @@ module Gem
|
|
46
48
|
|
47
49
|
def full_gem_path
|
48
50
|
if source.respond_to?(:root)
|
49
|
-
Pathname.new(loaded_from).dirname.expand_path(source.root).to_s
|
51
|
+
Pathname.new(loaded_from).dirname.expand_path(source.root).to_s
|
50
52
|
else
|
51
53
|
rg_full_gem_path
|
52
54
|
end
|
@@ -76,7 +78,7 @@ module Gem
|
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
79
|
-
remove_method :gem_dir
|
81
|
+
remove_method :gem_dir
|
80
82
|
def gem_dir
|
81
83
|
full_gem_path
|
82
84
|
end
|
@@ -117,17 +119,6 @@ module Gem
|
|
117
119
|
gemfile
|
118
120
|
end
|
119
121
|
|
120
|
-
# Backfill missing YAML require when not defined. Fixed since 3.1.0.pre1.
|
121
|
-
module YamlBackfiller
|
122
|
-
def to_yaml(opts = {})
|
123
|
-
Gem.load_yaml unless defined?(::YAML)
|
124
|
-
|
125
|
-
super(opts)
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
prepend YamlBackfiller
|
130
|
-
|
131
122
|
def nondevelopment_dependencies
|
132
123
|
dependencies - development_dependencies
|
133
124
|
end
|
@@ -188,37 +179,7 @@ module Gem
|
|
188
179
|
end
|
189
180
|
end
|
190
181
|
|
191
|
-
#
|
192
|
-
unless Gem::Requirement.new("> 1", "< 2") == Gem::Requirement.new("< 2", "> 1")
|
193
|
-
class Requirement
|
194
|
-
module OrderIndependentComparison
|
195
|
-
def ==(other)
|
196
|
-
return unless Gem::Requirement === other
|
197
|
-
|
198
|
-
if _requirements_sorted? && other._requirements_sorted?
|
199
|
-
super
|
200
|
-
else
|
201
|
-
_with_sorted_requirements == other._with_sorted_requirements
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
protected
|
206
|
-
|
207
|
-
def _requirements_sorted?
|
208
|
-
return @_requirements_sorted if defined?(@_requirements_sorted)
|
209
|
-
strings = as_list
|
210
|
-
@_requirements_sorted = strings == strings.sort
|
211
|
-
end
|
212
|
-
|
213
|
-
def _with_sorted_requirements
|
214
|
-
@_with_sorted_requirements ||= _requirements_sorted? ? self : self.class.new(as_list.sort)
|
215
|
-
end
|
216
|
-
end
|
217
|
-
|
218
|
-
prepend OrderIndependentComparison
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
182
|
+
# Requirements using lambda operator differentiate trailing zeros since rubygems 3.2.6
|
222
183
|
if Gem::Requirement.new("~> 2.0").hash == Gem::Requirement.new("~> 2.0.0").hash
|
223
184
|
class Requirement
|
224
185
|
module CorrectHashForLambdaOperator
|
@@ -320,7 +281,7 @@ module Gem
|
|
320
281
|
end
|
321
282
|
|
322
283
|
# On universal Rubies, resolve the "universal" arch to the real CPU arch, without changing the extension directory.
|
323
|
-
class
|
284
|
+
class BasicSpecification
|
324
285
|
if /^universal\.(?<arch>.*?)-/ =~ (CROSS_COMPILING || RUBY_PLATFORM)
|
325
286
|
local_platform = Platform.local
|
326
287
|
if local_platform.cpu == "universal"
|
@@ -333,23 +294,35 @@ module Gem
|
|
333
294
|
end
|
334
295
|
|
335
296
|
def extensions_dir
|
336
|
-
|
337
|
-
File.join(base_dir, "extensions", ORIGINAL_LOCAL_PLATFORM,
|
338
|
-
Gem.extension_api_version)
|
297
|
+
@extensions_dir ||=
|
298
|
+
Gem.default_ext_dir_for(base_dir) || File.join(base_dir, "extensions", ORIGINAL_LOCAL_PLATFORM, Gem.extension_api_version)
|
339
299
|
end
|
340
300
|
end
|
341
301
|
end
|
342
302
|
end
|
343
303
|
|
344
|
-
require "rubygems/
|
304
|
+
require "rubygems/name_tuple"
|
305
|
+
|
306
|
+
class NameTuple
|
307
|
+
# Versions of RubyGems before about 3.5.0 don't to_s the platform.
|
308
|
+
unless Gem::NameTuple.new("a", Gem::Version.new("1"), Gem::Platform.new("x86_64-linux")).platform.is_a?(String)
|
309
|
+
alias_method :initialize_with_platform, :initialize
|
345
310
|
|
346
|
-
|
347
|
-
|
348
|
-
|
311
|
+
def initialize(name, version, platform=Gem::Platform::RUBY)
|
312
|
+
if Gem::Platform === platform
|
313
|
+
initialize_with_platform(name, version, platform.to_s)
|
314
|
+
else
|
315
|
+
initialize_with_platform(name, version, platform)
|
316
|
+
end
|
317
|
+
end
|
349
318
|
end
|
350
319
|
|
351
|
-
def
|
352
|
-
|
320
|
+
def lock_name
|
321
|
+
if platform == Gem::Platform::RUBY
|
322
|
+
"#{name} (#{version})"
|
323
|
+
else
|
324
|
+
"#{name} (#{version}-#{platform})"
|
325
|
+
end
|
353
326
|
end
|
354
327
|
end
|
355
328
|
end
|
@@ -20,7 +20,7 @@ module Bundler
|
|
20
20
|
strict_rm_rf spec.extension_dir
|
21
21
|
|
22
22
|
SharedHelpers.filesystem_access(gem_dir, :create) do
|
23
|
-
FileUtils.mkdir_p gem_dir, :
|
23
|
+
FileUtils.mkdir_p gem_dir, mode: 0o755
|
24
24
|
end
|
25
25
|
|
26
26
|
extract_files
|
@@ -45,6 +45,14 @@ module Bundler
|
|
45
45
|
spec
|
46
46
|
end
|
47
47
|
|
48
|
+
def pre_install_checks
|
49
|
+
super
|
50
|
+
rescue Gem::FilePermissionError
|
51
|
+
# Ignore permission checks in RubyGems. Instead, go on, and try to write
|
52
|
+
# for real. We properly handle permission errors when they happen.
|
53
|
+
nil
|
54
|
+
end
|
55
|
+
|
48
56
|
def generate_plugins
|
49
57
|
return unless Gem::Installer.instance_methods(false).include?(:generate_plugins)
|
50
58
|
|
@@ -60,10 +68,6 @@ module Bundler
|
|
60
68
|
end
|
61
69
|
end
|
62
70
|
|
63
|
-
def pre_install_checks
|
64
|
-
super && validate_bundler_checksum(options[:bundler_expected_checksum])
|
65
|
-
end
|
66
|
-
|
67
71
|
def build_extensions
|
68
72
|
extension_cache_path = options[:bundler_extension_cache_path]
|
69
73
|
extension_dir = spec.extension_dir
|
@@ -98,6 +102,10 @@ module Bundler
|
|
98
102
|
end
|
99
103
|
end
|
100
104
|
|
105
|
+
def gem_checksum
|
106
|
+
Checksum.from_gem_package(@package)
|
107
|
+
end
|
108
|
+
|
101
109
|
private
|
102
110
|
|
103
111
|
def prepare_extension_build(extension_dir)
|
@@ -108,64 +116,21 @@ module Bundler
|
|
108
116
|
end
|
109
117
|
|
110
118
|
def strict_rm_rf(dir)
|
111
|
-
|
112
|
-
rescue StandardError => e
|
113
|
-
raise unless File.exist?(dir)
|
119
|
+
return unless File.exist?(dir)
|
114
120
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
def validate_bundler_checksum(checksum)
|
119
|
-
return true if Bundler.settings[:disable_checksum_validation]
|
120
|
-
return true unless checksum
|
121
|
-
return true unless source = @package.instance_variable_get(:@gem)
|
122
|
-
return true unless source.respond_to?(:with_read_io)
|
123
|
-
digest = source.with_read_io do |io|
|
124
|
-
digest = SharedHelpers.digest(:SHA256).new
|
125
|
-
digest << io.read(16_384) until io.eof?
|
126
|
-
io.rewind
|
127
|
-
send(checksum_type(checksum), digest)
|
128
|
-
end
|
129
|
-
unless digest == checksum
|
130
|
-
raise SecurityError, <<-MESSAGE
|
131
|
-
Bundler cannot continue installing #{spec.name} (#{spec.version}).
|
132
|
-
The checksum for the downloaded `#{spec.full_name}.gem` does not match \
|
133
|
-
the checksum given by the server. This means the contents of the downloaded \
|
134
|
-
gem is different from what was uploaded to the server, and could be a potential security issue.
|
135
|
-
|
136
|
-
To resolve this issue:
|
137
|
-
1. delete the downloaded gem located at: `#{spec.gem_dir}/#{spec.full_name}.gem`
|
138
|
-
2. run `bundle install`
|
139
|
-
|
140
|
-
If you wish to continue installing the downloaded gem, and are certain it does not pose a \
|
141
|
-
security issue despite the mismatching checksum, do the following:
|
142
|
-
1. run `bundle config set --local disable_checksum_validation true` to turn off checksum verification
|
143
|
-
2. run `bundle install`
|
144
|
-
|
145
|
-
(More info: The expected SHA256 checksum was #{checksum.inspect}, but the \
|
146
|
-
checksum for the downloaded gem was #{digest.inspect}.)
|
147
|
-
MESSAGE
|
148
|
-
end
|
149
|
-
true
|
150
|
-
end
|
121
|
+
parent = File.dirname(dir)
|
122
|
+
parent_st = File.stat(parent)
|
151
123
|
|
152
|
-
|
153
|
-
|
154
|
-
when 64 then :hexdigest!
|
155
|
-
when 44 then :base64digest!
|
156
|
-
else raise InstallError, "The given checksum for #{spec.full_name} (#{checksum.inspect}) is not a valid SHA256 hexdigest nor base64digest"
|
124
|
+
if parent_st.world_writable? && !parent_st.sticky?
|
125
|
+
raise InsecureInstallPathError.new(parent)
|
157
126
|
end
|
158
|
-
end
|
159
127
|
|
160
|
-
|
161
|
-
|
162
|
-
|
128
|
+
begin
|
129
|
+
FileUtils.remove_entry_secure(dir)
|
130
|
+
rescue StandardError => e
|
131
|
+
raise unless File.exist?(dir)
|
163
132
|
|
164
|
-
|
165
|
-
if digest.respond_to?(:base64digest!)
|
166
|
-
digest.base64digest!
|
167
|
-
else
|
168
|
-
[digest.digest!].pack("m0")
|
133
|
+
raise DirectoryRemovalError.new(e, "Could not delete previous installation of `#{dir}`")
|
169
134
|
end
|
170
135
|
end
|
171
136
|
end
|