rubygems-update 3.2.30 → 3.4.10
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 +1666 -994
- data/CONTRIBUTING.md +71 -15
- data/Manifest.txt +93 -37
- data/POLICIES.md +65 -16
- data/README.md +28 -13
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -10
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +647 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +7 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +5 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +4 -2
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +10 -3
- data/bundler/lib/bundler/cli/gem.rb +136 -42
- data/bundler/lib/bundler/cli/info.rb +17 -3
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +15 -33
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +13 -6
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +8 -4
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +67 -21
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
- data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
- data/bundler/lib/bundler/compact_index_client.rb +0 -6
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +18 -6
- data/bundler/lib/bundler/definition.rb +259 -242
- data/bundler/lib/bundler/dependency.rb +24 -71
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +29 -46
- data/bundler/lib/bundler/endpoint_specification.rb +15 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +7 -3
- data/bundler/lib/bundler/errors.rb +15 -15
- data/bundler/lib/bundler/feature_flag.rb +0 -1
- data/bundler/lib/bundler/fetcher/base.rb +6 -8
- data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
- data/bundler/lib/bundler/fetcher/index.rb +0 -26
- data/bundler/lib/bundler/fetcher.rb +22 -29
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +21 -7
- data/bundler/lib/bundler/gem_helper.rb +4 -4
- data/bundler/lib/bundler/gem_helpers.rb +9 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -51
- data/bundler/lib/bundler/injector.rb +18 -4
- data/bundler/lib/bundler/inline.rb +9 -21
- data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
- data/bundler/lib/bundler/installer/standalone.rb +42 -11
- data/bundler/lib/bundler/installer.rb +20 -44
- data/bundler/lib/bundler/lazy_specification.rb +72 -55
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +28 -26
- data/bundler/lib/bundler/man/bundle-add.1 +21 -5
- data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +34 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +6 -31
- data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +2 -2
- data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +117 -80
- data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/api/source.rb +4 -9
- data/bundler/lib/bundler/plugin/index.rb +4 -4
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
- data/bundler/lib/bundler/plugin/installer.rb +6 -3
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -5
- data/bundler/lib/bundler/resolver/base.rb +109 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
- data/bundler/lib/bundler/resolver.rb +332 -308
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +5 -18
- data/bundler/lib/bundler/rubygems_ext.rb +144 -25
- data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
- data/bundler/lib/bundler/rubygems_integration.rb +24 -95
- data/bundler/lib/bundler/runtime.rb +2 -7
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +5 -10
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +17 -25
- data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
- data/bundler/lib/bundler/source/git.rb +23 -26
- data/bundler/lib/bundler/source/metadata.rb +3 -4
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +7 -7
- data/bundler/lib/bundler/source/rubygems.rb +91 -130
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/bundler/lib/bundler/source.rb +4 -5
- data/bundler/lib/bundler/source_list.rb +19 -31
- data/bundler/lib/bundler/source_map.rb +15 -2
- data/bundler/lib/bundler/spec_set.rb +63 -35
- data/bundler/lib/bundler/stub_specification.rb +5 -3
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +6 -11
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/bundler/lib/bundler/ui/shell.rb +36 -13
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +50 -77
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +3 -3
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +14 -46
- data/lib/rubygems/command.rb +47 -39
- data/lib/rubygems/command_manager.rb +34 -13
- data/lib/rubygems/commands/build_command.rb +11 -8
- data/lib/rubygems/commands/cert_command.rb +39 -39
- data/lib/rubygems/commands/check_command.rb +20 -20
- data/lib/rubygems/commands/cleanup_command.rb +23 -23
- data/lib/rubygems/commands/contents_command.rb +13 -13
- data/lib/rubygems/commands/dependency_command.rb +35 -45
- data/lib/rubygems/commands/environment_command.rb +10 -7
- data/lib/rubygems/commands/exec_command.rb +248 -0
- data/lib/rubygems/commands/fetch_command.rb +32 -13
- data/lib/rubygems/commands/generate_index_command.rb +17 -17
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +31 -24
- data/lib/rubygems/commands/list_command.rb +4 -4
- data/lib/rubygems/commands/lock_command.rb +4 -4
- data/lib/rubygems/commands/mirror_command.rb +3 -3
- data/lib/rubygems/commands/open_command.rb +9 -9
- data/lib/rubygems/commands/outdated_command.rb +5 -5
- data/lib/rubygems/commands/owner_command.rb +17 -12
- data/lib/rubygems/commands/pristine_command.rb +64 -49
- data/lib/rubygems/commands/push_command.rb +16 -16
- data/lib/rubygems/commands/query_command.rb +9 -9
- data/lib/rubygems/commands/rdoc_command.rb +26 -25
- data/lib/rubygems/commands/search_command.rb +4 -4
- data/lib/rubygems/commands/server_command.rb +16 -79
- data/lib/rubygems/commands/setup_command.rb +172 -173
- data/lib/rubygems/commands/signin_command.rb +9 -9
- data/lib/rubygems/commands/signout_command.rb +7 -7
- data/lib/rubygems/commands/sources_command.rb +22 -22
- data/lib/rubygems/commands/specification_command.rb +18 -18
- data/lib/rubygems/commands/stale_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +43 -40
- data/lib/rubygems/commands/unpack_command.rb +13 -13
- data/lib/rubygems/commands/update_command.rb +61 -72
- data/lib/rubygems/commands/which_command.rb +7 -7
- data/lib/rubygems/commands/yank_command.rb +11 -11
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +58 -25
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +108 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +32 -36
- data/lib/rubygems/dependency.rb +20 -17
- data/lib/rubygems/dependency_installer.rb +37 -37
- data/lib/rubygems/dependency_list.rb +7 -7
- data/lib/rubygems/deprecate.rb +55 -8
- data/lib/rubygems/doctor.rb +21 -21
- data/lib/rubygems/errors.rb +3 -6
- data/lib/rubygems/exceptions.rb +35 -7
- data/lib/rubygems/ext/build_error.rb +1 -1
- data/lib/rubygems/ext/builder.rb +51 -22
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +1 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
- data/lib/rubygems/ext/rake_builder.rb +3 -3
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +12 -16
- data/lib/rubygems/gemcutter_utilities.rb +60 -21
- data/lib/rubygems/indexer.rb +30 -28
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +70 -61
- data/lib/rubygems/installer.rb +135 -87
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -2
- data/lib/rubygems/name_tuple.rb +6 -7
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/file_source.rb +2 -2
- data/lib/rubygems/package/old.rb +9 -9
- data/lib/rubygems/package/tar_header.rb +62 -62
- data/lib/rubygems/package/tar_reader/entry.rb +90 -9
- data/lib/rubygems/package/tar_reader.rb +1 -29
- data/lib/rubygems/package/tar_writer.rb +7 -7
- data/lib/rubygems/package.rb +77 -60
- data/lib/rubygems/package_task.rb +4 -4
- data/lib/rubygems/path_support.rb +1 -6
- data/lib/rubygems/platform.rb +94 -61
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +49 -51
- data/lib/rubygems/rdoc.rb +2 -2
- data/lib/rubygems/remote_fetcher.rb +27 -27
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +1 -1
- data/lib/rubygems/request.rb +24 -24
- data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +9 -9
- data/lib/rubygems/request_set.rb +18 -18
- data/lib/rubygems/requirement.rb +15 -15
- data/lib/rubygems/resolver/activation_request.rb +3 -3
- data/lib/rubygems/resolver/api_set.rb +4 -4
- data/lib/rubygems/resolver/api_specification.rb +6 -6
- data/lib/rubygems/resolver/best_set.rb +5 -5
- data/lib/rubygems/resolver/conflict.rb +10 -10
- data/lib/rubygems/resolver/dependency_request.rb +2 -2
- data/lib/rubygems/resolver/git_set.rb +2 -2
- data/lib/rubygems/resolver/git_specification.rb +6 -6
- data/lib/rubygems/resolver/index_set.rb +3 -3
- data/lib/rubygems/resolver/index_specification.rb +6 -5
- data/lib/rubygems/resolver/installed_specification.rb +4 -4
- data/lib/rubygems/resolver/installer_set.rb +21 -26
- data/lib/rubygems/resolver/local_specification.rb +2 -2
- data/lib/rubygems/resolver/lock_set.rb +4 -4
- data/lib/rubygems/resolver/lock_specification.rb +4 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +1 -1
- data/lib/rubygems/resolver/vendor_specification.rb +3 -3
- data/lib/rubygems/resolver.rb +40 -40
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_yaml.rb +10 -10
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +19 -21
- data/lib/rubygems/security/signer.rb +5 -5
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +37 -43
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +25 -24
- data/lib/rubygems/source/installed.rb +1 -1
- data/lib/rubygems/source/local.rb +2 -2
- data/lib/rubygems/source/specific_file.rb +1 -1
- data/lib/rubygems/source.rb +27 -32
- data/lib/rubygems/source_list.rb +5 -9
- data/lib/rubygems/spec_fetcher.rb +37 -37
- data/lib/rubygems/specification.rb +265 -211
- data/lib/rubygems/specification_policy.rb +49 -30
- data/lib/rubygems/stub_specification.rb +24 -27
- data/lib/rubygems/text.rb +22 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +29 -26
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +45 -30
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +42 -28
- data/lib/rubygems/util/licenses.rb +4 -2
- data/lib/rubygems/util.rb +12 -16
- data/lib/rubygems/validator.rb +6 -6
- data/lib/rubygems/version.rb +28 -17
- data/lib/rubygems/version_option.rb +5 -5
- data/lib/rubygems.rb +129 -117
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +11 -16
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +237 -207
- data/test/rubygems/installer_test_case.rb +13 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/package/tar_test_case.rb +52 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems_plugin.rb +2 -2
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
- data/test/rubygems/test_bundled_ca.rb +11 -11
- data/test/rubygems/test_config.rb +5 -5
- data/test/rubygems/test_deprecate.rb +3 -3
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +367 -757
- data/test/rubygems/test_gem_available_set.rb +21 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
- data/test/rubygems/test_gem_command.rb +45 -45
- data/test/rubygems/test_gem_command_manager.rb +124 -27
- data/test/rubygems/test_gem_commands_build_command.rb +73 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
- data/test/rubygems/test_gem_commands_check_command.rb +4 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
- data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
- data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
- data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
- data/test/rubygems/test_gem_commands_help_command.rb +13 -13
- data/test/rubygems/test_gem_commands_info_command.rb +28 -2
- data/test/rubygems/test_gem_commands_install_command.rb +200 -132
- data/test/rubygems/test_gem_commands_list_command.rb +4 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
- data/test/rubygems/test_gem_commands_mirror.rb +2 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -5
- data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
- data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
- data/test/rubygems/test_gem_commands_push_command.rb +85 -59
- data/test/rubygems/test_gem_commands_query_command.rb +73 -73
- data/test/rubygems/test_gem_commands_search_command.rb +2 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -48
- data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
- data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
- data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
- data/test/rubygems/test_gem_commands_update_command.rb +202 -91
- data/test/rubygems/test_gem_commands_which_command.rb +6 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
- data/test/rubygems/test_gem_config_file.rb +93 -81
- data/test/rubygems/test_gem_dependency.rb +78 -80
- data/test/rubygems/test_gem_dependency_installer.rb +165 -165
- data/test/rubygems/test_gem_dependency_list.rb +47 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
- data/test/rubygems/test_gem_doctor.rb +26 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -62
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
- data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
- data/test/rubygems/test_gem_gem_runner.rb +13 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
- data/test/rubygems/test_gem_indexer.rb +90 -67
- data/test/rubygems/test_gem_install_update_options.rb +18 -18
- data/test/rubygems/test_gem_installer.rb +511 -327
- data/test/rubygems/test_gem_local_remote_options.rb +10 -10
- data/test/rubygems/test_gem_name_tuple.rb +4 -4
- data/test/rubygems/test_gem_package.rb +246 -236
- data/test/rubygems/test_gem_package_old.rb +13 -13
- data/test/rubygems/test_gem_package_tar_header.rb +47 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
- data/test/rubygems/test_gem_package_task.rb +18 -18
- data/test/rubygems/test_gem_path_support.rb +15 -19
- data/test/rubygems/test_gem_platform.rb +335 -214
- data/test/rubygems/test_gem_rdoc.rb +14 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
- data/test/rubygems/test_gem_request.rb +65 -59
- data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
- data/test/rubygems/test_gem_request_set.rb +100 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
- data/test/rubygems/test_gem_requirement.rb +47 -42
- data/test/rubygems/test_gem_resolver.rb +173 -106
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
- data/test/rubygems/test_gem_resolver_specification.rb +8 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
- data/test/rubygems/test_gem_security.rb +69 -69
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +34 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
- data/test/rubygems/test_gem_silent_ui.rb +38 -32
- data/test/rubygems/test_gem_source.rb +44 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +16 -16
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +14 -14
- data/test/rubygems/test_gem_source_lock.rb +31 -31
- data/test/rubygems/test_gem_source_specific_file.rb +17 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
- data/test/rubygems/test_gem_source_vendor.rb +13 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
- data/test/rubygems/test_gem_specification.rb +560 -493
- data/test/rubygems/test_gem_stream_ui.rb +20 -20
- data/test/rubygems/test_gem_stub_specification.rb +32 -48
- data/test/rubygems/test_gem_text.rb +7 -1
- data/test/rubygems/test_gem_uninstaller.rb +113 -113
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +4 -4
- data/test/rubygems/test_gem_uri_formatter.rb +14 -14
- data/test/rubygems/test_gem_util.rb +23 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +27 -16
- data/test/rubygems/test_gem_version_option.rb +15 -15
- data/test/rubygems/test_kernel.rb +42 -60
- data/test/rubygems/test_project_sanity.rb +2 -2
- data/test/rubygems/test_remote_fetch_error.rb +6 -6
- data/test/rubygems/test_require.rb +132 -174
- data/test/rubygems/test_rubygems.rb +42 -12
- data/test/rubygems/utilities.rb +59 -37
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -0
- metadata +97 -41
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -22
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -882
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -608
- /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# See LICENSE.txt for permissions.
|
|
6
6
|
#++
|
|
7
7
|
|
|
8
|
-
require
|
|
8
|
+
require "monitor"
|
|
9
9
|
|
|
10
10
|
module Kernel
|
|
11
11
|
|
|
@@ -13,12 +13,12 @@ module Kernel
|
|
|
13
13
|
|
|
14
14
|
# Make sure we have a reference to Ruby's original Kernel#require
|
|
15
15
|
unless defined?(gem_original_require)
|
|
16
|
+
# :stopdoc:
|
|
16
17
|
alias gem_original_require require
|
|
17
18
|
private :gem_original_require
|
|
19
|
+
# :startdoc:
|
|
18
20
|
end
|
|
19
21
|
|
|
20
|
-
file = Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES ? "<internal:#{__FILE__}>" : __FILE__
|
|
21
|
-
module_eval <<'RUBY', file, __LINE__ + 1
|
|
22
22
|
##
|
|
23
23
|
# When RubyGems is required, Kernel#require is replaced with our own which
|
|
24
24
|
# is capable of loading gems on demand.
|
|
@@ -33,142 +33,135 @@ module Kernel
|
|
|
33
33
|
# The normal <tt>require</tt> functionality of returning false if
|
|
34
34
|
# that file has already been loaded is preserved.
|
|
35
35
|
|
|
36
|
-
def require(path)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
36
|
+
def require(path) # :doc:
|
|
37
|
+
return gem_original_require(path) unless Gem.discover_gems_on_require
|
|
38
|
+
|
|
39
|
+
begin
|
|
40
|
+
RUBYGEMS_ACTIVATION_MONITOR.enter
|
|
41
|
+
|
|
42
|
+
path = path.to_path if path.respond_to? :to_path
|
|
43
|
+
|
|
44
|
+
if spec = Gem.find_unresolved_default_spec(path)
|
|
45
|
+
# Ensure -I beats a default gem
|
|
46
|
+
resolved_path = begin
|
|
47
|
+
rp = nil
|
|
48
|
+
load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
|
|
49
|
+
Gem.suffixes.each do |s|
|
|
50
|
+
$LOAD_PATH[0...load_path_check_index].each do |lp|
|
|
51
|
+
safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
52
|
+
begin
|
|
53
|
+
if File.symlink? safe_lp # for backward compatibility
|
|
54
|
+
next
|
|
55
|
+
end
|
|
56
|
+
rescue SecurityError
|
|
57
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
58
|
+
raise
|
|
55
59
|
end
|
|
56
|
-
rescue SecurityError
|
|
57
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
58
|
-
raise
|
|
59
|
-
end
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
|
|
62
|
+
if File.file?(full_path)
|
|
63
|
+
rp = full_path
|
|
64
|
+
break
|
|
65
|
+
end
|
|
65
66
|
end
|
|
67
|
+
break if rp
|
|
66
68
|
end
|
|
67
|
-
|
|
69
|
+
rp
|
|
68
70
|
end
|
|
69
|
-
rp
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
begin
|
|
73
|
-
Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
|
|
74
|
-
rescue Exception
|
|
75
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
76
|
-
raise
|
|
77
|
-
end unless resolved_path
|
|
78
|
-
end
|
|
79
71
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# If +path+ is for a gem that has already been loaded, don't
|
|
89
|
-
# bother trying to find it in an unresolved gem, just go straight
|
|
90
|
-
# to normal require.
|
|
91
|
-
#--
|
|
92
|
-
# TODO request access to the C implementation of this to speed up RubyGems
|
|
93
|
-
|
|
94
|
-
if Gem::Specification.find_active_stub_by_path(path)
|
|
95
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
96
|
-
return gem_original_require(path)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# Attempt to find +path+ in any unresolved gems...
|
|
100
|
-
|
|
101
|
-
found_specs = Gem::Specification.find_in_unresolved path
|
|
102
|
-
|
|
103
|
-
# If there are no directly unresolved gems, then try and find +path+
|
|
104
|
-
# in any gems that are available via the currently unresolved gems.
|
|
105
|
-
# For example, given:
|
|
106
|
-
#
|
|
107
|
-
# a => b => c => d
|
|
108
|
-
#
|
|
109
|
-
# If a and b are currently active with c being unresolved and d.rb is
|
|
110
|
-
# requested, then find_in_unresolved_tree will find d.rb in d because
|
|
111
|
-
# it's a dependency of c.
|
|
112
|
-
#
|
|
113
|
-
if found_specs.empty?
|
|
114
|
-
found_specs = Gem::Specification.find_in_unresolved_tree path
|
|
115
|
-
|
|
116
|
-
found_specs.each do |found_spec|
|
|
117
|
-
found_spec.activate
|
|
72
|
+
begin
|
|
73
|
+
Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
|
|
74
|
+
rescue Exception
|
|
75
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
76
|
+
raise
|
|
77
|
+
end unless resolved_path
|
|
118
78
|
end
|
|
119
79
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
else
|
|
123
|
-
|
|
124
|
-
# Check that all the found specs are just different
|
|
125
|
-
# versions of the same gem
|
|
126
|
-
names = found_specs.map(&:name).uniq
|
|
80
|
+
# If there are no unresolved deps, then we can use just try
|
|
81
|
+
# normal require handle loading a gem from the rescue below.
|
|
127
82
|
|
|
128
|
-
if
|
|
83
|
+
if Gem::Specification.unresolved_deps.empty?
|
|
129
84
|
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
130
|
-
|
|
85
|
+
return gem_original_require(path)
|
|
131
86
|
end
|
|
132
87
|
|
|
133
|
-
#
|
|
134
|
-
#
|
|
135
|
-
|
|
88
|
+
# If +path+ is for a gem that has already been loaded, don't
|
|
89
|
+
# bother trying to find it in an unresolved gem, just go straight
|
|
90
|
+
# to normal require.
|
|
91
|
+
#--
|
|
92
|
+
# TODO request access to the C implementation of this to speed up RubyGems
|
|
136
93
|
|
|
137
|
-
|
|
138
|
-
le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
|
|
139
|
-
le.name = names.first
|
|
94
|
+
if Gem::Specification.find_active_stub_by_path(path)
|
|
140
95
|
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
141
|
-
|
|
96
|
+
return gem_original_require(path)
|
|
142
97
|
end
|
|
143
98
|
|
|
144
|
-
|
|
145
|
-
|
|
99
|
+
# Attempt to find +path+ in any unresolved gems...
|
|
100
|
+
|
|
101
|
+
found_specs = Gem::Specification.find_in_unresolved path
|
|
102
|
+
|
|
103
|
+
# If there are no directly unresolved gems, then try and find +path+
|
|
104
|
+
# in any gems that are available via the currently unresolved gems.
|
|
105
|
+
# For example, given:
|
|
106
|
+
#
|
|
107
|
+
# a => b => c => d
|
|
108
|
+
#
|
|
109
|
+
# If a and b are currently active with c being unresolved and d.rb is
|
|
110
|
+
# requested, then find_in_unresolved_tree will find d.rb in d because
|
|
111
|
+
# it's a dependency of c.
|
|
112
|
+
#
|
|
113
|
+
if found_specs.empty?
|
|
114
|
+
found_specs = Gem::Specification.find_in_unresolved_tree path
|
|
115
|
+
|
|
116
|
+
found_specs.each do |found_spec|
|
|
117
|
+
found_spec.activate
|
|
118
|
+
end
|
|
146
119
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
|
120
|
+
# We found +path+ directly in an unresolved gem. Now we figure out, of
|
|
121
|
+
# the possible found specs, which one we should activate.
|
|
122
|
+
else
|
|
151
123
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
124
|
+
# Check that all the found specs are just different
|
|
125
|
+
# versions of the same gem
|
|
126
|
+
names = found_specs.map(&:name).uniq
|
|
127
|
+
|
|
128
|
+
if names.size > 1
|
|
129
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
130
|
+
raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ', '}"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Ok, now find a gem that has no conflicts, starting
|
|
134
|
+
# at the highest version.
|
|
135
|
+
valid = found_specs.find {|s| !s.has_conflicts? }
|
|
136
|
+
|
|
137
|
+
unless valid
|
|
138
|
+
le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
|
|
139
|
+
le.name = names.first
|
|
140
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
141
|
+
raise le
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
valid.activate
|
|
155
145
|
end
|
|
156
|
-
ensure
|
|
157
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
158
|
-
end
|
|
159
146
|
|
|
160
|
-
|
|
147
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
148
|
+
return gem_original_require(path)
|
|
149
|
+
rescue LoadError => load_error
|
|
150
|
+
if load_error.path == path
|
|
151
|
+
RUBYGEMS_ACTIVATION_MONITOR.enter
|
|
152
|
+
|
|
153
|
+
begin
|
|
154
|
+
require_again = Gem.try_activate(path)
|
|
155
|
+
ensure
|
|
156
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
157
|
+
end
|
|
161
158
|
|
|
162
|
-
|
|
163
|
-
ensure
|
|
164
|
-
if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
|
|
165
|
-
if monitor_owned != (ow = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?)
|
|
166
|
-
STDERR.puts [$$, Thread.current, $!, $!.backtrace].inspect if $!
|
|
167
|
-
raise "CRITICAL: RUBYGEMS_ACTIVATION_MONITOR.owned?: before #{monitor_owned} -> after #{ow}"
|
|
159
|
+
return gem_original_require(path) if require_again
|
|
168
160
|
end
|
|
161
|
+
|
|
162
|
+
raise load_error
|
|
169
163
|
end
|
|
170
164
|
end
|
|
171
|
-
RUBY
|
|
172
165
|
|
|
173
166
|
private :require
|
|
174
167
|
|
|
@@ -1,54 +1,50 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
module Kernel
|
|
4
|
+
rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
|
|
6
|
+
original_warn = instance_method(:warn)
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
remove_method :warn
|
|
10
9
|
|
|
10
|
+
class << self
|
|
11
11
|
remove_method :warn
|
|
12
|
+
end
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
module_function define_method(:warn) {|*messages, **kw|
|
|
15
|
+
unless uplevel = kw[:uplevel]
|
|
16
|
+
if Gem.java_platform? && RUBY_VERSION < "3.1"
|
|
17
|
+
return original_warn.bind(self).call(*messages)
|
|
18
|
+
else
|
|
19
|
+
return original_warn.bind(self).call(*messages, **kw)
|
|
20
|
+
end
|
|
15
21
|
end
|
|
16
22
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
# Ensure `uplevel` fits a `long`
|
|
24
|
+
uplevel, = [uplevel].pack("l!").unpack("l!")
|
|
25
|
+
|
|
26
|
+
if uplevel >= 0
|
|
27
|
+
start = 0
|
|
28
|
+
while uplevel >= 0
|
|
29
|
+
loc, = caller_locations(start, 1)
|
|
30
|
+
unless loc
|
|
31
|
+
# No more backtrace
|
|
32
|
+
start += uplevel
|
|
33
|
+
break
|
|
23
34
|
end
|
|
24
|
-
end
|
|
25
35
|
|
|
26
|
-
|
|
27
|
-
uplevel, = [uplevel].pack("l!").unpack("l!")
|
|
28
|
-
|
|
29
|
-
if uplevel >= 0
|
|
30
|
-
start = 0
|
|
31
|
-
while uplevel >= 0
|
|
32
|
-
loc, = caller_locations(start, 1)
|
|
33
|
-
unless loc
|
|
34
|
-
# No more backtrace
|
|
35
|
-
start += uplevel
|
|
36
|
-
break
|
|
37
|
-
end
|
|
36
|
+
start += 1
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
# Non-rubygems frames
|
|
44
|
-
uplevel -= 1
|
|
45
|
-
end
|
|
38
|
+
if path = loc.path
|
|
39
|
+
unless path.start_with?(rubygems_path) || path.start_with?("<internal:")
|
|
40
|
+
# Non-rubygems frames
|
|
41
|
+
uplevel -= 1
|
|
46
42
|
end
|
|
47
43
|
end
|
|
48
|
-
kw[:uplevel] = start
|
|
49
44
|
end
|
|
45
|
+
kw[:uplevel] = start
|
|
46
|
+
end
|
|
50
47
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
end
|
|
48
|
+
original_warn.bind(self).call(*messages, **kw)
|
|
49
|
+
}
|
|
54
50
|
end
|
data/lib/rubygems/defaults.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
module Gem
|
|
3
|
-
DEFAULT_HOST = "https://rubygems.org"
|
|
3
|
+
DEFAULT_HOST = "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
@post_install_hooks ||= []
|
|
6
6
|
@done_installing_hooks ||= []
|
|
@@ -20,10 +20,10 @@ module Gem
|
|
|
20
20
|
# specified in the environment
|
|
21
21
|
|
|
22
22
|
def self.default_spec_cache_dir
|
|
23
|
-
default_spec_cache_dir = File.join Gem.user_home,
|
|
23
|
+
default_spec_cache_dir = File.join Gem.user_home, ".gem", "specs"
|
|
24
24
|
|
|
25
25
|
unless File.exist?(default_spec_cache_dir)
|
|
26
|
-
default_spec_cache_dir = File.join Gem.data_home,
|
|
26
|
+
default_spec_cache_dir = File.join Gem.data_home, "gem", "specs"
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
default_spec_cache_dir
|
|
@@ -34,21 +34,7 @@ module Gem
|
|
|
34
34
|
# specified in the environment
|
|
35
35
|
|
|
36
36
|
def self.default_dir
|
|
37
|
-
|
|
38
|
-
[
|
|
39
|
-
File.dirname(RbConfig::CONFIG['sitedir']),
|
|
40
|
-
'Gems',
|
|
41
|
-
RbConfig::CONFIG['ruby_version'],
|
|
42
|
-
]
|
|
43
|
-
else
|
|
44
|
-
[
|
|
45
|
-
RbConfig::CONFIG['rubylibprefix'],
|
|
46
|
-
'gems',
|
|
47
|
-
RbConfig::CONFIG['ruby_version'],
|
|
48
|
-
]
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
@default_dir ||= File.join(*path)
|
|
37
|
+
@default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"])
|
|
52
38
|
end
|
|
53
39
|
|
|
54
40
|
##
|
|
@@ -95,7 +81,7 @@ module Gem
|
|
|
95
81
|
Dir.home.dup
|
|
96
82
|
rescue
|
|
97
83
|
if Gem.win_platform?
|
|
98
|
-
File.expand_path File.join(ENV[
|
|
84
|
+
File.expand_path File.join(ENV["HOMEDRIVE"] || ENV["SystemDrive"], "/")
|
|
99
85
|
else
|
|
100
86
|
File.expand_path "/"
|
|
101
87
|
end
|
|
@@ -117,7 +103,7 @@ module Gem
|
|
|
117
103
|
gem_dir = File.join(Gem.user_home, ".gem")
|
|
118
104
|
gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
|
|
119
105
|
parts = [gem_dir, ruby_engine]
|
|
120
|
-
parts << RbConfig::CONFIG[
|
|
106
|
+
parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?
|
|
121
107
|
File.join parts
|
|
122
108
|
end
|
|
123
109
|
|
|
@@ -125,14 +111,14 @@ module Gem
|
|
|
125
111
|
# The path to standard location of the user's configuration directory.
|
|
126
112
|
|
|
127
113
|
def self.config_home
|
|
128
|
-
@config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home,
|
|
114
|
+
@config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, ".config"))
|
|
129
115
|
end
|
|
130
116
|
|
|
131
117
|
##
|
|
132
118
|
# Finds the user's config file
|
|
133
119
|
|
|
134
120
|
def self.find_config_file
|
|
135
|
-
gemrc = File.join Gem.user_home,
|
|
121
|
+
gemrc = File.join Gem.user_home, ".gemrc"
|
|
136
122
|
if File.exist? gemrc
|
|
137
123
|
gemrc
|
|
138
124
|
else
|
|
@@ -147,18 +133,32 @@ module Gem
|
|
|
147
133
|
@config_file ||= find_config_file.tap(&Gem::UNTAINT)
|
|
148
134
|
end
|
|
149
135
|
|
|
136
|
+
##
|
|
137
|
+
# The path to standard location of the user's state file.
|
|
138
|
+
|
|
139
|
+
def self.state_file
|
|
140
|
+
@state_file ||= File.join(Gem.state_home, "gem", "last_update_check").tap(&Gem::UNTAINT)
|
|
141
|
+
end
|
|
142
|
+
|
|
150
143
|
##
|
|
151
144
|
# The path to standard location of the user's cache directory.
|
|
152
145
|
|
|
153
146
|
def self.cache_home
|
|
154
|
-
@cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home,
|
|
147
|
+
@cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, ".cache"))
|
|
155
148
|
end
|
|
156
149
|
|
|
157
150
|
##
|
|
158
151
|
# The path to standard location of the user's data directory.
|
|
159
152
|
|
|
160
153
|
def self.data_home
|
|
161
|
-
@data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home,
|
|
154
|
+
@data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, ".local", "share"))
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
##
|
|
158
|
+
# The path to standard location of the user's state directory.
|
|
159
|
+
|
|
160
|
+
def self.state_home
|
|
161
|
+
@state_home ||= (ENV["XDG_STATE_HOME"] || File.join(Gem.user_home, ".local", "state"))
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
##
|
|
@@ -175,7 +175,7 @@ module Gem
|
|
|
175
175
|
path = []
|
|
176
176
|
path << user_dir if user_home && File.exist?(user_home)
|
|
177
177
|
path << default_dir
|
|
178
|
-
path << vendor_dir if vendor_dir
|
|
178
|
+
path << vendor_dir if vendor_dir && File.directory?(vendor_dir)
|
|
179
179
|
path
|
|
180
180
|
end
|
|
181
181
|
|
|
@@ -183,9 +183,9 @@ module Gem
|
|
|
183
183
|
# Deduce Ruby's --program-prefix and --program-suffix from its install name
|
|
184
184
|
|
|
185
185
|
def self.default_exec_format
|
|
186
|
-
exec_format = RbConfig::CONFIG[
|
|
186
|
+
exec_format = RbConfig::CONFIG["ruby_install_name"].sub("ruby", "%s") rescue "%s"
|
|
187
187
|
|
|
188
|
-
unless exec_format
|
|
188
|
+
unless exec_format.include?("%s")
|
|
189
189
|
raise Gem::Exception,
|
|
190
190
|
"[BUG] invalid exec_format #{exec_format.inspect}, no %s"
|
|
191
191
|
end
|
|
@@ -197,11 +197,7 @@ module Gem
|
|
|
197
197
|
# The default directory for binaries
|
|
198
198
|
|
|
199
199
|
def self.default_bindir
|
|
200
|
-
|
|
201
|
-
'/usr/local/bin'
|
|
202
|
-
else # generic install
|
|
203
|
-
RbConfig::CONFIG['bindir']
|
|
204
|
-
end
|
|
200
|
+
RbConfig::CONFIG["bindir"]
|
|
205
201
|
end
|
|
206
202
|
|
|
207
203
|
def self.ruby_engine
|
|
@@ -245,14 +241,14 @@ module Gem
|
|
|
245
241
|
# Directory where vendor gems are installed.
|
|
246
242
|
|
|
247
243
|
def self.vendor_dir # :nodoc:
|
|
248
|
-
if vendor_dir = ENV[
|
|
244
|
+
if vendor_dir = ENV["GEM_VENDOR"]
|
|
249
245
|
return vendor_dir.dup
|
|
250
246
|
end
|
|
251
247
|
|
|
252
|
-
return nil unless RbConfig::CONFIG.key?
|
|
248
|
+
return nil unless RbConfig::CONFIG.key? "vendordir"
|
|
253
249
|
|
|
254
|
-
File.join RbConfig::CONFIG[
|
|
255
|
-
RbConfig::CONFIG[
|
|
250
|
+
File.join RbConfig::CONFIG["vendordir"], "gems",
|
|
251
|
+
RbConfig::CONFIG["ruby_version"]
|
|
256
252
|
end
|
|
257
253
|
|
|
258
254
|
##
|
data/lib/rubygems/dependency.rb
CHANGED
|
@@ -97,14 +97,14 @@ class Gem::Dependency
|
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def pretty_print(q) # :nodoc:
|
|
100
|
-
q.group 1,
|
|
100
|
+
q.group 1, "Gem::Dependency.new(", ")" do
|
|
101
101
|
q.pp name
|
|
102
|
-
q.text
|
|
102
|
+
q.text ","
|
|
103
103
|
q.breakable
|
|
104
104
|
|
|
105
105
|
q.pp requirement
|
|
106
106
|
|
|
107
|
-
q.text
|
|
107
|
+
q.text ","
|
|
108
108
|
q.breakable
|
|
109
109
|
|
|
110
110
|
q.pp type
|
|
@@ -115,7 +115,7 @@ class Gem::Dependency
|
|
|
115
115
|
# What does this dependency require?
|
|
116
116
|
|
|
117
117
|
def requirement
|
|
118
|
-
return @requirement if defined?(@requirement)
|
|
118
|
+
return @requirement if defined?(@requirement) && @requirement
|
|
119
119
|
|
|
120
120
|
# @version_requirements and @version_requirement are legacy ivar
|
|
121
121
|
# names, and supported here because older gems need to keep
|
|
@@ -197,7 +197,7 @@ class Gem::Dependency
|
|
|
197
197
|
reqs = other.requirement.requirements
|
|
198
198
|
|
|
199
199
|
return false unless reqs.length == 1
|
|
200
|
-
return false unless reqs.first.first ==
|
|
200
|
+
return false unless reqs.first.first == "="
|
|
201
201
|
|
|
202
202
|
version = reqs.first.last
|
|
203
203
|
|
|
@@ -230,10 +230,10 @@ class Gem::Dependency
|
|
|
230
230
|
|
|
231
231
|
version = Gem::Version.new version
|
|
232
232
|
|
|
233
|
-
return true if requirement.none?
|
|
234
|
-
return false if version.prerelease?
|
|
235
|
-
|
|
236
|
-
|
|
233
|
+
return true if requirement.none? && !version.prerelease?
|
|
234
|
+
return false if version.prerelease? &&
|
|
235
|
+
!allow_prerelease &&
|
|
236
|
+
!prerelease?
|
|
237
237
|
|
|
238
238
|
requirement.satisfied_by? version
|
|
239
239
|
end
|
|
@@ -277,7 +277,10 @@ class Gem::Dependency
|
|
|
277
277
|
requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
|
|
278
278
|
end.map(&:to_spec)
|
|
279
279
|
|
|
280
|
-
|
|
280
|
+
if prioritizes_bundler?
|
|
281
|
+
require_relative "bundler_version_finder"
|
|
282
|
+
Gem::BundlerVersionFinder.prioritize!(matches)
|
|
283
|
+
end
|
|
281
284
|
|
|
282
285
|
if platform_only
|
|
283
286
|
matches.reject! do |spec|
|
|
@@ -295,8 +298,8 @@ class Gem::Dependency
|
|
|
295
298
|
@requirement.specific?
|
|
296
299
|
end
|
|
297
300
|
|
|
298
|
-
def
|
|
299
|
-
name == "bundler"
|
|
301
|
+
def prioritizes_bundler?
|
|
302
|
+
name == "bundler" && !specific?
|
|
300
303
|
end
|
|
301
304
|
|
|
302
305
|
def to_specs
|
|
@@ -325,11 +328,11 @@ class Gem::Dependency
|
|
|
325
328
|
active = matches.find {|spec| spec.activated? }
|
|
326
329
|
return active if active
|
|
327
330
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
331
|
+
unless prerelease?
|
|
332
|
+
# Move prereleases to the end of the list for >= 0 requirements
|
|
333
|
+
pre, matches = matches.partition {|spec| spec.version.prerelease? }
|
|
334
|
+
matches += pre if requirement == Gem::Requirement.default
|
|
335
|
+
end
|
|
333
336
|
|
|
334
337
|
matches.first
|
|
335
338
|
end
|