rubygems-update 3.1.1 → 3.2.0.rc.2
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/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/History.txt +389 -144
- data/Manifest.txt +37 -73
- data/POLICIES.md +2 -9
- data/README.md +5 -5
- data/Rakefile +47 -82
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1546 -1414
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +3 -3
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +21 -7
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +54 -20
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/cache.rb +1 -7
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +14 -0
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +4 -13
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +84 -11
- data/bundler/lib/bundler/cli/info.rb +15 -4
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +12 -18
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/outdated.rb +89 -66
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +2 -0
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/definition.rb +51 -60
- data/bundler/lib/bundler/dep_proxy.rb +1 -1
- data/bundler/lib/bundler/dependency.rb +0 -9
- data/bundler/lib/bundler/dsl.rb +5 -9
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +26 -2
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher.rb +4 -3
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher/index.rb +1 -1
- data/bundler/lib/bundler/friendly_errors.rb +7 -13
- data/bundler/lib/bundler/gem_helper.rb +33 -19
- data/bundler/lib/bundler/gem_helpers.rb +6 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +1 -1
- data/bundler/lib/bundler/injector.rb +15 -4
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer.rb +30 -29
- data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
- data/bundler/lib/bundler/installer/standalone.rb +2 -2
- data/bundler/lib/bundler/lazy_specification.rb +19 -6
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +30 -5
- data/bundler/lib/bundler/plugin/index.rb +10 -1
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +1 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -2
- data/bundler/lib/bundler/resolver.rb +32 -9
- data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +53 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +31 -54
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -45
- data/bundler/lib/bundler/setup.rb +5 -0
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +5 -5
- data/bundler/lib/bundler/source/git/git_proxy.rb +56 -59
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +8 -10
- data/bundler/lib/bundler/source/rubygems.rb +13 -16
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +2 -2
- data/bundler/lib/bundler/spec_set.rb +1 -1
- data/bundler/lib/bundler/stub_specification.rb +17 -5
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +5 -5
- data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/man/bundle-add.1 +1 -1
- data/bundler/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
- data/bundler/man/bundle-binstubs.1 +5 -3
- data/bundler/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
- data/bundler/man/bundle-cache.1 +1 -1
- data/bundler/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
- data/bundler/man/bundle-check.1 +1 -1
- data/bundler/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
- data/bundler/man/bundle-clean.1 +1 -1
- data/bundler/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
- data/bundler/man/bundle-config.1 +16 -22
- data/bundler/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
- data/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
- data/bundler/man/bundle-exec.1 +1 -1
- data/bundler/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
- data/bundler/man/bundle-gem.1 +25 -3
- data/bundler/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
- data/bundler/man/bundle-info.1 +1 -1
- data/bundler/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
- data/bundler/man/bundle-init.1 +1 -1
- data/bundler/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
- data/bundler/man/bundle-inject.1 +1 -1
- data/bundler/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
- data/bundler/man/bundle-install.1 +29 -2
- data/bundler/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
- data/bundler/man/bundle-list.1 +7 -7
- data/bundler/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
- data/bundler/man/bundle-lock.1 +1 -1
- data/bundler/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
- data/bundler/man/bundle-open.1 +1 -1
- data/bundler/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
- data/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
- data/bundler/man/bundle-platform.1 +1 -1
- data/bundler/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
- data/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
- data/bundler/man/bundle-remove.1 +1 -1
- data/bundler/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
- data/bundler/man/bundle-show.1 +1 -1
- data/bundler/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
- data/bundler/man/bundle-update.1 +1 -1
- data/bundler/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
- data/bundler/man/bundle-viz.1 +1 -1
- data/bundler/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
- data/bundler/man/bundle.1 +1 -1
- data/bundler/man/{bundle.ronn → bundle.1.ronn} +0 -0
- data/bundler/man/gemfile.5 +4 -4
- data/bundler/man/gemfile.5.ronn +4 -4
- data/lib/rubygems.rb +133 -186
- data/lib/rubygems/available_set.rb +4 -6
- data/lib/rubygems/basic_specification.rb +12 -10
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +17 -17
- data/lib/rubygems/command_manager.rb +4 -5
- data/lib/rubygems/commands/build_command.rb +4 -1
- data/lib/rubygems/commands/cert_command.rb +1 -9
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +11 -7
- data/lib/rubygems/commands/contents_command.rb +4 -6
- data/lib/rubygems/commands/dependency_command.rb +6 -8
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +0 -2
- data/lib/rubygems/commands/help_command.rb +2 -4
- data/lib/rubygems/commands/info_command.rb +8 -5
- data/lib/rubygems/commands/install_command.rb +3 -5
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +1 -3
- data/lib/rubygems/commands/mirror_command.rb +0 -2
- data/lib/rubygems/commands/open_command.rb +0 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -2
- data/lib/rubygems/commands/owner_command.rb +0 -2
- data/lib/rubygems/commands/pristine_command.rb +10 -4
- data/lib/rubygems/commands/push_command.rb +4 -44
- data/lib/rubygems/commands/query_command.rb +6 -353
- data/lib/rubygems/commands/rdoc_command.rb +0 -2
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +0 -2
- data/lib/rubygems/commands/setup_command.rb +156 -48
- data/lib/rubygems/commands/signin_command.rb +0 -2
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +3 -5
- data/lib/rubygems/commands/specification_command.rb +2 -4
- data/lib/rubygems/commands/stale_command.rb +1 -3
- data/lib/rubygems/commands/uninstall_command.rb +2 -4
- data/lib/rubygems/commands/unpack_command.rb +1 -3
- data/lib/rubygems/commands/update_command.rb +59 -14
- data/lib/rubygems/commands/which_command.rb +0 -2
- data/lib/rubygems/commands/yank_command.rb +0 -2
- data/lib/rubygems/config_file.rb +11 -4
- data/lib/rubygems/core_ext/kernel_require.rb +26 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +6 -6
- data/lib/rubygems/defaults.rb +99 -5
- data/lib/rubygems/dependency.rb +2 -7
- data/lib/rubygems/dependency_installer.rb +1 -75
- data/lib/rubygems/dependency_list.rb +7 -9
- data/lib/rubygems/deprecate.rb +46 -1
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +3 -14
- data/lib/rubygems/exceptions.rb +2 -33
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +4 -4
- data/lib/rubygems/ext/cmake_builder.rb +1 -3
- data/lib/rubygems/ext/configure_builder.rb +0 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +6 -9
- data/lib/rubygems/ext/rake_builder.rb +0 -2
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +1 -1
- data/lib/rubygems/indexer.rb +1 -21
- data/lib/rubygems/install_update_options.rb +5 -5
- data/lib/rubygems/installer.rb +47 -48
- data/lib/rubygems/installer_test_case.rb +18 -5
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +0 -6
- data/lib/rubygems/name_tuple.rb +2 -6
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +11 -23
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +3 -5
- data/lib/rubygems/package/tar_reader.rb +0 -3
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +1 -3
- data/lib/rubygems/package/tar_writer.rb +2 -12
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +1 -3
- data/lib/rubygems/platform.rb +3 -5
- data/lib/rubygems/psych_tree.rb +0 -2
- data/lib/rubygems/query_utils.rb +362 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +9 -25
- data/lib/rubygems/request.rb +1 -9
- data/lib/rubygems/request/connection_pools.rb +1 -5
- data/lib/rubygems/request/http_pool.rb +0 -2
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request_set.rb +5 -7
- data/lib/rubygems/request_set/gem_dependency_api.rb +2 -4
- data/lib/rubygems/request_set/lockfile.rb +8 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
- data/lib/rubygems/requirement.rb +20 -21
- data/lib/rubygems/resolver.rb +7 -10
- data/lib/rubygems/resolver/activation_request.rb +0 -2
- data/lib/rubygems/resolver/api_set.rb +4 -6
- data/lib/rubygems/resolver/api_specification.rb +16 -7
- data/lib/rubygems/resolver/best_set.rb +0 -2
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +1 -3
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +0 -2
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +0 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +3 -5
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +1 -3
- data/lib/rubygems/resolver/lock_specification.rb +0 -2
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +0 -2
- data/lib/rubygems/resolver/specification.rb +0 -2
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +1 -7
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +26 -32
- data/lib/rubygems/security/policy.rb +3 -7
- data/lib/rubygems/security/signer.rb +4 -6
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +9 -11
- data/lib/rubygems/source.rb +4 -4
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +6 -7
- data/lib/rubygems/spec_fetcher.rb +18 -17
- data/lib/rubygems/specification.rb +107 -120
- data/lib/rubygems/specification_policy.rb +88 -30
- data/lib/rubygems/stub_specification.rb +0 -4
- data/lib/rubygems/syck_hack.rb +0 -2
- data/lib/rubygems/test_case.rb +122 -92
- data/lib/rubygems/test_utilities.rb +6 -14
- data/lib/rubygems/uninstaller.rb +35 -16
- data/lib/rubygems/uri_formatter.rb +0 -2
- data/lib/rubygems/uri_parser.rb +0 -2
- data/lib/rubygems/user_interaction.rb +1 -26
- data/lib/rubygems/util.rb +15 -3
- data/lib/rubygems/util/licenses.rb +4 -6
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/validator.rb +1 -3
- data/lib/rubygems/version.rb +5 -7
- data/rubygems-update.gemspec +2 -2
- data/setup.rb +2 -7
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +38 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +40 -7
- data/test/rubygems/test_gem.rb +150 -103
- data/test/rubygems/test_gem_available_set.rb +3 -5
- data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
- data/test/rubygems/test_gem_command.rb +24 -7
- data/test/rubygems/test_gem_command_manager.rb +36 -5
- data/test/rubygems/test_gem_commands_build_command.rb +53 -10
- data/test/rubygems/test_gem_commands_cert_command.rb +2 -4
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -4
- data/test/rubygems/test_gem_commands_contents_command.rb +48 -17
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
- data/test/rubygems/test_gem_commands_help_command.rb +0 -2
- data/test/rubygems/test_gem_commands_info_command.rb +6 -8
- data/test/rubygems/test_gem_commands_install_command.rb +31 -33
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -3
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
- data/test/rubygems/test_gem_commands_owner_command.rb +11 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +41 -10
- data/test/rubygems/test_gem_commands_push_command.rb +7 -4
- data/test/rubygems/test_gem_commands_query_command.rb +9 -9
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +0 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +210 -118
- data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +39 -3
- data/test/rubygems/test_gem_commands_specification_command.rb +18 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +116 -7
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +14 -8
- data/test/rubygems/test_gem_config_file.rb +7 -12
- data/test/rubygems/test_gem_dependency.rb +0 -2
- data/test/rubygems/test_gem_dependency_installer.rb +54 -191
- data/test/rubygems/test_gem_dependency_list.rb +8 -10
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +16 -33
- data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -14
- data/test/rubygems/test_gem_ext_configure_builder.rb +1 -11
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -3
- data/test/rubygems/test_gem_ext_rake_builder.rb +9 -11
- data/test/rubygems/test_gem_gem_runner.rb +43 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -2
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +9 -15
- data/test/rubygems/test_gem_install_update_options.rb +0 -2
- data/test/rubygems/test_gem_installer.rb +192 -71
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +33 -31
- data/test/rubygems/test_gem_package_old.rb +0 -2
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
- data/test/rubygems/test_gem_package_tar_writer.rb +8 -5
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +0 -2
- data/test/rubygems/test_gem_platform.rb +0 -2
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +156 -195
- data/test/rubygems/test_gem_request.rb +11 -15
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
- data/test/rubygems/test_gem_request_set.rb +72 -22
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -2
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
- data/test/rubygems/test_gem_requirement.rb +10 -4
- data/test/rubygems/test_gem_resolver.rb +6 -8
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_api_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -2
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -4
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +20 -22
- data/test/rubygems/test_gem_security_policy.rb +5 -10
- data/test/rubygems/test_gem_security_signer.rb +8 -10
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -4
- data/test/rubygems/test_gem_server.rb +10 -14
- data/test/rubygems/test_gem_silent_ui.rb +0 -2
- data/test/rubygems/test_gem_source.rb +12 -16
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
- data/test/rubygems/test_gem_source_git.rb +12 -13
- data/test/rubygems/test_gem_source_installed.rb +7 -9
- data/test/rubygems/test_gem_source_list.rb +1 -2
- data/test/rubygems/test_gem_source_local.rb +8 -10
- data/test/rubygems/test_gem_source_lock.rb +10 -12
- data/test/rubygems/test_gem_source_specific_file.rb +7 -9
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +179 -129
- data/test/rubygems/test_gem_stream_ui.rb +3 -3
- data/test/rubygems/test_gem_stub_specification.rb +4 -7
- data/test/rubygems/test_gem_text.rb +1 -3
- data/test/rubygems/test_gem_uninstaller.rb +133 -11
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +7 -7
- data/test/rubygems/test_gem_validator.rb +0 -2
- data/test/rubygems/test_gem_version.rb +1 -3
- data/test/rubygems/test_gem_version_option.rb +0 -2
- data/test/rubygems/test_kernel.rb +25 -10
- data/test/rubygems/test_project_sanity.rb +7 -2
- data/test/rubygems/test_remote_fetch_error.rb +0 -2
- data/test/rubygems/test_require.rb +241 -47
- metadata +59 -96
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/man/bundle-add.1.txt +0 -58
- data/bundler/man/bundle-binstubs.1.txt +0 -48
- data/bundler/man/bundle-cache.1.txt +0 -78
- data/bundler/man/bundle-check.1.txt +0 -33
- data/bundler/man/bundle-clean.1.txt +0 -26
- data/bundler/man/bundle-config.1.txt +0 -528
- data/bundler/man/bundle-doctor.1.txt +0 -44
- data/bundler/man/bundle-exec.1.txt +0 -178
- data/bundler/man/bundle-gem.1.txt +0 -91
- data/bundler/man/bundle-info.1.txt +0 -21
- data/bundler/man/bundle-init.1.txt +0 -34
- data/bundler/man/bundle-inject.1.txt +0 -32
- data/bundler/man/bundle-install.1.txt +0 -401
- data/bundler/man/bundle-list.1.txt +0 -43
- data/bundler/man/bundle-lock.1.txt +0 -93
- data/bundler/man/bundle-open.1.txt +0 -29
- data/bundler/man/bundle-outdated.1.txt +0 -131
- data/bundler/man/bundle-platform.1.txt +0 -57
- data/bundler/man/bundle-pristine.1.txt +0 -44
- data/bundler/man/bundle-remove.1.txt +0 -34
- data/bundler/man/bundle-show.1.txt +0 -27
- data/bundler/man/bundle-update.1.txt +0 -390
- data/bundler/man/bundle-viz.1.txt +0 -39
- data/bundler/man/bundle.1.txt +0 -116
- data/bundler/man/gemfile.5.txt +0 -649
- data/bundler/man/index.txt +0 -25
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/ubygems.rb +0 -14
- data/tmp/.keep +0 -0
- data/util/CL2notes +0 -55
- data/util/bisect +0 -10
- data/util/ci.sh +0 -62
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -63
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
@@ -1,11 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Psych could be a gem, so try to ask for it
|
4
|
-
begin
|
5
|
-
gem "psych"
|
6
|
-
rescue LoadError
|
7
|
-
end if defined?(gem)
|
8
|
-
|
9
3
|
# Psych could be in the stdlib
|
10
4
|
# but it's too late if Syck is already loaded
|
11
5
|
begin
|
@@ -26,12 +20,3 @@ module Bundler
|
|
26
20
|
YamlLibrarySyntaxError = ::ArgumentError
|
27
21
|
end
|
28
22
|
end
|
29
|
-
|
30
|
-
require_relative "deprecate"
|
31
|
-
begin
|
32
|
-
Bundler::Deprecate.skip_during do
|
33
|
-
require "rubygems/safe_yaml"
|
34
|
-
end
|
35
|
-
rescue LoadError
|
36
|
-
# it's OK if the file isn't there
|
37
|
-
end
|
@@ -50,6 +50,8 @@ module Bundler
|
|
50
50
|
# once the remote gem is downloaded, the backend specification will
|
51
51
|
# be swapped out.
|
52
52
|
def __swap__(spec)
|
53
|
+
raise APIResponseInvalidDependenciesError unless spec.dependencies.all? {|d| d.is_a?(Gem::Dependency) }
|
54
|
+
|
53
55
|
SharedHelpers.ensure_same_dependencies(self, dependencies, spec.dependencies)
|
54
56
|
@_remote_specification = spec
|
55
57
|
end
|
@@ -76,7 +78,8 @@ module Bundler
|
|
76
78
|
deps = method_missing(:dependencies)
|
77
79
|
|
78
80
|
# allow us to handle when the specs dependencies are an array of array of string
|
79
|
-
#
|
81
|
+
# in order to delay the crash to `#__swap__` where it results in a friendlier error
|
82
|
+
# see https://github.com/rubygems/bundler/issues/5797
|
80
83
|
deps = deps.map {|d| d.is_a?(Gem::Dependency) ? d : Gem::Dependency.new(*d) }
|
81
84
|
|
82
85
|
deps
|
@@ -88,7 +91,7 @@ module Bundler
|
|
88
91
|
" #{source.revision[0..6]}"
|
89
92
|
end
|
90
93
|
|
91
|
-
|
94
|
+
private
|
92
95
|
|
93
96
|
def to_ary
|
94
97
|
nil
|
@@ -75,12 +75,17 @@ module Bundler
|
|
75
75
|
return unless debug?
|
76
76
|
debug_info = yield
|
77
77
|
debug_info = debug_info.inspect unless debug_info.is_a?(String)
|
78
|
-
warn debug_info.split("\n").map {|s| " " * depth + s }
|
78
|
+
warn debug_info.split("\n").map {|s| "BUNDLER: " + " " * depth + s }
|
79
79
|
end
|
80
80
|
|
81
81
|
def debug?
|
82
82
|
return @debug_mode if defined?(@debug_mode)
|
83
|
-
@debug_mode =
|
83
|
+
@debug_mode =
|
84
|
+
ENV["BUNDLER_DEBUG_RESOLVER"] ||
|
85
|
+
ENV["BUNDLER_DEBUG_RESOLVER_TREE"] ||
|
86
|
+
ENV["DEBUG_RESOLVER"] ||
|
87
|
+
ENV["DEBUG_RESOLVER_TREE"] ||
|
88
|
+
false
|
84
89
|
end
|
85
90
|
|
86
91
|
def before_resolution
|
@@ -146,7 +151,26 @@ module Bundler
|
|
146
151
|
@gem_version_promoter.sort_versions(dependency, spec_groups)
|
147
152
|
end
|
148
153
|
end
|
149
|
-
|
154
|
+
selected_sgs = []
|
155
|
+
search.each do |sg|
|
156
|
+
next unless sg.for?(platform)
|
157
|
+
# Add a spec group for "non platform specific spec" as the fallback
|
158
|
+
# spec group.
|
159
|
+
sg_ruby = sg.copy_for(Gem::Platform::RUBY)
|
160
|
+
selected_sgs << sg_ruby if sg_ruby
|
161
|
+
all_platforms = @platforms + [platform]
|
162
|
+
next if all_platforms.to_a == [Gem::Platform::RUBY]
|
163
|
+
sg_all_platforms = nil
|
164
|
+
self.class.sort_platforms(all_platforms).reverse_each do |other_platform|
|
165
|
+
if sg_all_platforms.nil?
|
166
|
+
sg_all_platforms = sg.copy_for(other_platform)
|
167
|
+
else
|
168
|
+
sg_all_platforms.activate_platform!(other_platform)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
selected_sgs << sg_all_platforms
|
172
|
+
end
|
173
|
+
selected_sgs
|
150
174
|
end
|
151
175
|
|
152
176
|
def index_for(dependency)
|
@@ -183,9 +207,7 @@ module Bundler
|
|
183
207
|
end
|
184
208
|
|
185
209
|
def requirement_satisfied_by?(requirement, activated, spec)
|
186
|
-
|
187
|
-
spec.activate_platform!(requirement.__platform) if !@platforms || @platforms.include?(requirement.__platform)
|
188
|
-
true
|
210
|
+
requirement.matches_spec?(spec) || spec.source.is_a?(Source::Gemspec)
|
189
211
|
end
|
190
212
|
|
191
213
|
def relevant_sources_for_vertex(vertex)
|
@@ -223,11 +245,12 @@ module Bundler
|
|
223
245
|
end
|
224
246
|
|
225
247
|
def self.platform_sort_key(platform)
|
226
|
-
|
227
|
-
|
248
|
+
# Prefer specific platform to not specific platform
|
249
|
+
return ["99-LAST", "", "", ""] if Gem::Platform::RUBY == platform
|
250
|
+
["00", *platform.to_a.map {|part| part || "" }]
|
228
251
|
end
|
229
252
|
|
230
|
-
|
253
|
+
private
|
231
254
|
|
232
255
|
# returns an integer \in (-\infty, 0]
|
233
256
|
# a number closer to 0 means the dependency is less constraining
|
@@ -9,6 +9,7 @@ module Bundler
|
|
9
9
|
attr_accessor :ignores_bundler_dependencies
|
10
10
|
|
11
11
|
def initialize(all_specs)
|
12
|
+
@all_specs = all_specs
|
12
13
|
raise ArgumentError, "cannot initialize with an empty value" unless exemplary_spec = all_specs.first
|
13
14
|
@name = exemplary_spec.name
|
14
15
|
@version = exemplary_spec.version
|
@@ -28,7 +29,7 @@ module Bundler
|
|
28
29
|
lazy_spec = LazySpecification.new(name, version, s.platform, source)
|
29
30
|
lazy_spec.dependencies.replace s.dependencies
|
30
31
|
lazy_spec
|
31
|
-
end.compact
|
32
|
+
end.compact.uniq
|
32
33
|
end
|
33
34
|
|
34
35
|
def activate_platform!(platform)
|
@@ -37,13 +38,25 @@ module Bundler
|
|
37
38
|
@activated_platforms << platform
|
38
39
|
end
|
39
40
|
|
41
|
+
def copy_for(platform)
|
42
|
+
copied_sg = self.class.new(@all_specs)
|
43
|
+
copied_sg.ignores_bundler_dependencies = @ignores_bundler_dependencies
|
44
|
+
return nil unless copied_sg.for?(platform)
|
45
|
+
copied_sg.activate_platform!(platform)
|
46
|
+
copied_sg
|
47
|
+
end
|
48
|
+
|
49
|
+
def spec_for(platform)
|
50
|
+
@specs[platform]
|
51
|
+
end
|
52
|
+
|
40
53
|
def for?(platform)
|
41
|
-
|
42
|
-
!spec.nil?
|
54
|
+
!spec_for(platform).nil?
|
43
55
|
end
|
44
56
|
|
45
57
|
def to_s
|
46
|
-
|
58
|
+
activated_platforms_string = sorted_activated_platforms.join(", ")
|
59
|
+
"#{name} (#{version}) (#{activated_platforms_string})"
|
47
60
|
end
|
48
61
|
|
49
62
|
def dependencies_for_activated_platforms
|
@@ -58,6 +71,7 @@ module Bundler
|
|
58
71
|
return unless other.is_a?(SpecGroup)
|
59
72
|
name == other.name &&
|
60
73
|
version == other.version &&
|
74
|
+
sorted_activated_platforms == other.sorted_activated_platforms &&
|
61
75
|
source == other.source
|
62
76
|
end
|
63
77
|
|
@@ -65,14 +79,21 @@ module Bundler
|
|
65
79
|
return unless other.is_a?(SpecGroup)
|
66
80
|
name.eql?(other.name) &&
|
67
81
|
version.eql?(other.version) &&
|
82
|
+
sorted_activated_platforms.eql?(other.sorted_activated_platforms) &&
|
68
83
|
source.eql?(other.source)
|
69
84
|
end
|
70
85
|
|
71
86
|
def hash
|
72
|
-
|
87
|
+
name.hash ^ version.hash ^ sorted_activated_platforms.hash ^ source.hash
|
88
|
+
end
|
89
|
+
|
90
|
+
protected
|
91
|
+
|
92
|
+
def sorted_activated_platforms
|
93
|
+
@activated_platforms.sort_by(&:to_s)
|
73
94
|
end
|
74
95
|
|
75
|
-
|
96
|
+
private
|
76
97
|
|
77
98
|
def __dependencies
|
78
99
|
@dependencies = Hash.new do |dependencies, platform|
|
@@ -47,14 +47,13 @@ module Gem
|
|
47
47
|
full_require_paths
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
50
|
+
alias_method :rg_extension_dir, :extension_dir
|
51
|
+
def extension_dir
|
52
|
+
@bundler_extension_dir ||= if source.respond_to?(:extension_dir_name)
|
53
|
+
unique_extension_dir = [source.extension_dir_name, File.basename(full_gem_path)].uniq.join("-")
|
54
|
+
File.expand_path(File.join(extensions_dir, unique_extension_dir))
|
55
|
+
else
|
56
|
+
rg_extension_dir
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
@@ -86,7 +85,7 @@ module Gem
|
|
86
85
|
dependencies - development_dependencies
|
87
86
|
end
|
88
87
|
|
89
|
-
|
88
|
+
private
|
90
89
|
|
91
90
|
def dependencies_to_gemfile(dependencies, group = nil)
|
92
91
|
gemfile = String.new
|
@@ -130,6 +129,35 @@ module Gem
|
|
130
129
|
end
|
131
130
|
end
|
132
131
|
|
132
|
+
# comparison is done order independently since rubygems 3.2.0.rc.2
|
133
|
+
unless Gem::Requirement.new("> 1", "< 2") == Gem::Requirement.new("< 2", "> 1")
|
134
|
+
class Requirement
|
135
|
+
module OrderIndependentComparison
|
136
|
+
def ==(other)
|
137
|
+
if _requirements_sorted? && other._requirements_sorted?
|
138
|
+
super
|
139
|
+
else
|
140
|
+
_with_sorted_requirements == other._with_sorted_requirements
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
protected
|
145
|
+
|
146
|
+
def _requirements_sorted?
|
147
|
+
return @_are_requirements_sorted if defined?(@_are_requirements_sorted)
|
148
|
+
strings = as_list
|
149
|
+
@_are_requirements_sorted = strings == strings.sort
|
150
|
+
end
|
151
|
+
|
152
|
+
def _with_sorted_requirements
|
153
|
+
@_with_sorted_requirements ||= _requirements_sorted? ? self : self.class.new(as_list.sort)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
prepend OrderIndependentComparison
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
133
161
|
class Platform
|
134
162
|
JAVA = Gem::Platform.new("java") unless defined?(JAVA)
|
135
163
|
MSWIN = Gem::Platform.new("mswin32") unless defined?(MSWIN)
|
@@ -145,6 +173,22 @@ module Gem
|
|
145
173
|
undef_method :eql? if method_defined? :eql?
|
146
174
|
alias_method :eql?, :==
|
147
175
|
end
|
176
|
+
|
177
|
+
require "rubygems/util"
|
178
|
+
|
179
|
+
Util.singleton_class.module_eval do
|
180
|
+
if Util.singleton_methods.include?(:glob_files_in_dir) # since 3.0.0.beta.2
|
181
|
+
remove_method :glob_files_in_dir
|
182
|
+
end
|
183
|
+
|
184
|
+
def glob_files_in_dir(glob, base_path)
|
185
|
+
if RUBY_VERSION >= "2.5"
|
186
|
+
Dir.glob(glob, :base => base_path).map! {|f| File.expand_path(f, base_path) }
|
187
|
+
else
|
188
|
+
Dir.glob(File.join(base_path.to_s.gsub(/[\[\]]/, '\\\\\\&'), glob)).map! {|f| File.expand_path(f) }
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
148
192
|
end
|
149
193
|
|
150
194
|
module Gem
|
@@ -4,12 +4,6 @@ require "rubygems/installer"
|
|
4
4
|
|
5
5
|
module Bundler
|
6
6
|
class RubyGemsGemInstaller < Gem::Installer
|
7
|
-
unless respond_to?(:at)
|
8
|
-
def self.at(*args)
|
9
|
-
new(*args)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
7
|
def check_executable_overwrite(filename)
|
14
8
|
# Bundler needs to install gems regardless of binstub overwriting
|
15
9
|
end
|
@@ -20,7 +14,7 @@ module Bundler
|
|
20
14
|
|
21
15
|
def build_extensions
|
22
16
|
extension_cache_path = options[:bundler_extension_cache_path]
|
23
|
-
return super unless extension_cache_path && extension_dir =
|
17
|
+
return super unless extension_cache_path && extension_dir = spec.extension_dir
|
24
18
|
|
25
19
|
extension_dir = Pathname.new(extension_dir)
|
26
20
|
build_complete = SharedHelpers.filesystem_access(extension_cache_path.join("gem.build_complete"), :read, &:file?)
|
@@ -40,7 +34,7 @@ module Bundler
|
|
40
34
|
end
|
41
35
|
end
|
42
36
|
|
43
|
-
|
37
|
+
private
|
44
38
|
|
45
39
|
def validate_bundler_checksum(checksum)
|
46
40
|
return true if Bundler.settings[:disable_checksum_validation]
|
@@ -66,7 +60,7 @@ module Bundler
|
|
66
60
|
|
67
61
|
If you wish to continue installing the downloaded gem, and are certain it does not pose a \
|
68
62
|
security issue despite the mismatching checksum, do the following:
|
69
|
-
1. run `bundle config set disable_checksum_validation true` to turn off checksum verification
|
63
|
+
1. run `bundle config set --local disable_checksum_validation true` to turn off checksum verification
|
70
64
|
2. run `bundle install`
|
71
65
|
|
72
66
|
(More info: The expected SHA256 checksum was #{checksum.inspect}, but the \
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "rubygems" unless defined?(Gem)
|
4
|
+
|
3
5
|
module Bundler
|
4
6
|
class RubygemsIntegration
|
5
7
|
if defined?(Gem::Ext::Builder::CHDIR_MONITOR)
|
@@ -100,11 +102,6 @@ module Bundler
|
|
100
102
|
end.flatten(1)
|
101
103
|
end
|
102
104
|
|
103
|
-
def spec_extension_dir(spec)
|
104
|
-
return unless spec.respond_to?(:extension_dir)
|
105
|
-
spec.extension_dir
|
106
|
-
end
|
107
|
-
|
108
105
|
def stub_set_spec(stub, spec)
|
109
106
|
stub.instance_variable_set(:@spec, spec)
|
110
107
|
end
|
@@ -139,14 +136,10 @@ module Bundler
|
|
139
136
|
end
|
140
137
|
|
141
138
|
def inflate(obj)
|
142
|
-
require "rubygems/util"
|
143
|
-
|
144
139
|
Gem::Util.inflate(obj)
|
145
140
|
end
|
146
141
|
|
147
142
|
def correct_for_windows_path(path)
|
148
|
-
require "rubygems/util"
|
149
|
-
|
150
143
|
if Gem::Util.respond_to?(:correct_for_windows_path)
|
151
144
|
Gem::Util.correct_for_windows_path(path)
|
152
145
|
elsif path[0].chr == "/" && path[1].chr =~ /[a-z]/i && path[2].chr == ":"
|
@@ -221,11 +214,6 @@ module Bundler
|
|
221
214
|
Gem.bin_path(gem, bin, ver)
|
222
215
|
end
|
223
216
|
|
224
|
-
def preserve_paths
|
225
|
-
# this is a no-op outside of RubyGems 1.8
|
226
|
-
yield
|
227
|
-
end
|
228
|
-
|
229
217
|
def loaded_gem_paths
|
230
218
|
loaded_gem_paths = Gem.loaded_specs.map {|_, s| s.full_require_paths }
|
231
219
|
loaded_gem_paths.flatten
|
@@ -263,8 +251,6 @@ module Bundler
|
|
263
251
|
require "rubygems/security"
|
264
252
|
require_relative "psyched_yaml"
|
265
253
|
gem_from_path(path, security_policies[policy]).spec
|
266
|
-
rescue Gem::Package::FormatError
|
267
|
-
raise GemspecError, "Could not read gem at #{path}. It may be corrupted."
|
268
254
|
rescue Exception, Gem::Exception, Gem::Security::Exception => e # rubocop:disable Lint/RescueException
|
269
255
|
if e.is_a?(Gem::Security::Exception) ||
|
270
256
|
e.message =~ /unknown trust policy|unsigned gem/i ||
|
@@ -327,8 +313,13 @@ module Bundler
|
|
327
313
|
end
|
328
314
|
|
329
315
|
message = if spec.nil?
|
316
|
+
target_file = begin
|
317
|
+
Bundler.default_gemfile.basename
|
318
|
+
rescue GemfileNotFound
|
319
|
+
"inline Gemfile"
|
320
|
+
end
|
330
321
|
"#{dep.name} is not part of the bundle." \
|
331
|
-
" Add it to your #{
|
322
|
+
" Add it to your #{target_file}."
|
332
323
|
else
|
333
324
|
"can't activate #{dep}, already activated #{spec.full_name}. " \
|
334
325
|
"Make sure all dependencies are added to Gemfile."
|
@@ -344,7 +335,7 @@ module Bundler
|
|
344
335
|
raise e
|
345
336
|
end
|
346
337
|
|
347
|
-
# backwards compatibility shim, see https://github.com/
|
338
|
+
# backwards compatibility shim, see https://github.com/rubygems/bundler/issues/5102
|
348
339
|
kernel_class.send(:public, :gem) if Bundler.feature_flag.setup_makes_kernel_gem_public?
|
349
340
|
end
|
350
341
|
end
|
@@ -420,6 +411,17 @@ module Bundler
|
|
420
411
|
# Replace or hook into RubyGems to provide a bundlerized view
|
421
412
|
# of the world.
|
422
413
|
def replace_entrypoints(specs)
|
414
|
+
specs_by_name = add_default_gems_to(specs)
|
415
|
+
|
416
|
+
replace_gem(specs, specs_by_name)
|
417
|
+
stub_rubygems(specs)
|
418
|
+
replace_bin_path(specs_by_name)
|
419
|
+
|
420
|
+
Gem.clear_paths
|
421
|
+
end
|
422
|
+
|
423
|
+
# Add default gems not already present in specs, and return them as a hash.
|
424
|
+
def add_default_gems_to(specs)
|
423
425
|
specs_by_name = specs.reduce({}) do |h, s|
|
424
426
|
h[s.name] = s
|
425
427
|
h
|
@@ -434,40 +436,7 @@ module Bundler
|
|
434
436
|
specs_by_name[default_spec_name] = default_spec
|
435
437
|
end
|
436
438
|
|
437
|
-
|
438
|
-
stub_rubygems(specs)
|
439
|
-
replace_bin_path(specs_by_name)
|
440
|
-
|
441
|
-
Gem.clear_paths
|
442
|
-
end
|
443
|
-
|
444
|
-
# This backports base_dir which replaces installation path
|
445
|
-
# RubyGems 1.8+
|
446
|
-
def backport_base_dir
|
447
|
-
redefine_method(Gem::Specification, :base_dir) do
|
448
|
-
return Gem.dir unless loaded_from
|
449
|
-
File.dirname File.dirname loaded_from
|
450
|
-
end
|
451
|
-
end
|
452
|
-
|
453
|
-
def backport_cache_file
|
454
|
-
redefine_method(Gem::Specification, :cache_dir) do
|
455
|
-
@cache_dir ||= File.join base_dir, "cache"
|
456
|
-
end
|
457
|
-
|
458
|
-
redefine_method(Gem::Specification, :cache_file) do
|
459
|
-
@cache_file ||= File.join cache_dir, "#{full_name}.gem"
|
460
|
-
end
|
461
|
-
end
|
462
|
-
|
463
|
-
def backport_spec_file
|
464
|
-
redefine_method(Gem::Specification, :spec_dir) do
|
465
|
-
@spec_dir ||= File.join base_dir, "specifications"
|
466
|
-
end
|
467
|
-
|
468
|
-
redefine_method(Gem::Specification, :spec_file) do
|
469
|
-
@spec_file ||= File.join spec_dir, "#{full_name}.gemspec"
|
470
|
-
end
|
439
|
+
specs_by_name
|
471
440
|
end
|
472
441
|
|
473
442
|
def undo_replacements
|
@@ -525,6 +494,14 @@ module Bundler
|
|
525
494
|
end
|
526
495
|
end
|
527
496
|
|
497
|
+
def plain_specs
|
498
|
+
Gem::Specification._all
|
499
|
+
end
|
500
|
+
|
501
|
+
def plain_specs=(specs)
|
502
|
+
Gem::Specification.all = specs
|
503
|
+
end
|
504
|
+
|
528
505
|
def fetch_specs(remote, name)
|
529
506
|
path = remote.uri.to_s + "#{name}.#{Gem.marshal_version}.gz"
|
530
507
|
fetcher = gem_remote_fetcher
|
@@ -592,10 +569,10 @@ module Bundler
|
|
592
569
|
|
593
570
|
def backport_ext_builder_monitor
|
594
571
|
# So we can avoid requiring "rubygems/ext" in its entirety
|
595
|
-
Gem.module_eval <<-
|
572
|
+
Gem.module_eval <<-RUBY, __FILE__, __LINE__ + 1
|
596
573
|
module Ext
|
597
574
|
end
|
598
|
-
|
575
|
+
RUBY
|
599
576
|
|
600
577
|
require "rubygems/ext/builder"
|
601
578
|
|