rubygems-update 3.5.3 → 3.7.1
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 +1410 -686
- data/CODE_OF_CONDUCT.md +79 -28
- data/CONTRIBUTING.md +4 -226
- data/Manifest.txt +107 -83
- data/README.md +16 -11
- data/SECURITY.md +7 -0
- data/bundler/CHANGELOG.md +1525 -931
- data/bundler/README.md +9 -9
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +10 -11
- data/bundler/lib/bundler/checksum.rb +22 -12
- data/bundler/lib/bundler/cli/add.rb +3 -1
- data/bundler/lib/bundler/cli/binstubs.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +3 -3
- data/bundler/lib/bundler/cli/common.rb +1 -1
- data/bundler/lib/bundler/cli/config.rb +2 -2
- data/bundler/lib/bundler/cli/console.rb +8 -10
- data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
- data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
- data/bundler/lib/bundler/cli/doctor.rb +27 -151
- data/bundler/lib/bundler/cli/exec.rb +1 -0
- data/bundler/lib/bundler/cli/fund.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +74 -46
- data/bundler/lib/bundler/cli/info.rb +6 -6
- data/bundler/lib/bundler/cli/inject.rb +3 -3
- data/bundler/lib/bundler/cli/install.rb +19 -10
- data/bundler/lib/bundler/cli/issue.rb +3 -3
- data/bundler/lib/bundler/cli/lock.rb +32 -11
- data/bundler/lib/bundler/cli/outdated.rb +23 -23
- data/bundler/lib/bundler/cli/plugin.rb +3 -2
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli/update.rb +3 -3
- data/bundler/lib/bundler/cli.rb +75 -145
- data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
- data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +6 -16
- data/bundler/lib/bundler/compact_index_client.rb +52 -85
- data/bundler/lib/bundler/constants.rb +8 -1
- data/bundler/lib/bundler/current_ruby.rb +48 -34
- data/bundler/lib/bundler/definition.rb +501 -328
- data/bundler/lib/bundler/dependency.rb +93 -47
- data/bundler/lib/bundler/dsl.rb +147 -103
- data/bundler/lib/bundler/endpoint_specification.rb +30 -3
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +5 -23
- data/bundler/lib/bundler/errors.rb +53 -5
- data/bundler/lib/bundler/feature_flag.rb +18 -18
- data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +34 -8
- data/bundler/lib/bundler/fetcher.rb +63 -26
- data/bundler/lib/bundler/force_platform.rb +0 -2
- data/bundler/lib/bundler/friendly_errors.rb +3 -2
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
- data/bundler/lib/bundler/index.rb +7 -2
- data/bundler/lib/bundler/injector.rb +14 -16
- data/bundler/lib/bundler/inline.rb +42 -17
- data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
- data/bundler/lib/bundler/installer/standalone.rb +2 -5
- data/bundler/lib/bundler/installer.rb +22 -45
- data/bundler/lib/bundler/lazy_specification.rb +121 -48
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +36 -9
- data/bundler/lib/bundler/man/bundle-add.1 +44 -27
- data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
- data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
- data/bundler/lib/bundler/man/bundle-check.1 +7 -5
- data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
- data/bundler/lib/bundler/man/bundle-config.1 +180 -138
- data/bundler/lib/bundler/man/bundle-config.1.ronn +96 -99
- data/bundler/lib/bundler/man/bundle-console.1 +4 -6
- data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
- data/bundler/lib/bundler/man/bundle-doctor.1 +46 -7
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +49 -5
- data/bundler/lib/bundler/man/bundle-env.1 +9 -0
- data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
- data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +69 -28
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +42 -6
- data/bundler/lib/bundler/man/bundle-help.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1 +7 -4
- data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
- data/bundler/lib/bundler/man/bundle-init.1 +5 -5
- data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
- data/bundler/lib/bundler/man/bundle-inject.1 +13 -5
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +10 -2
- data/bundler/lib/bundler/man/bundle-install.1 +20 -17
- data/bundler/lib/bundler/man/bundle-install.1.ronn +26 -23
- data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
- data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
- data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-list.1 +3 -3
- data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
- data/bundler/lib/bundler/man/bundle-open.1 +4 -4
- data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
- data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
- data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +7 -4
- data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/bundler/lib/bundler/man/bundle-update.1 +17 -11
- data/bundler/lib/bundler/man/bundle-update.1.ronn +17 -9
- data/bundler/lib/bundler/man/bundle-version.1 +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle.1 +3 -3
- data/bundler/lib/bundler/man/gemfile.5 +7 -5
- data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
- 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 +31 -12
- data/bundler/lib/bundler/materialization.rb +59 -0
- data/bundler/lib/bundler/mirror.rb +3 -3
- data/bundler/lib/bundler/plugin/api/source.rb +5 -4
- data/bundler/lib/bundler/plugin/events.rb +24 -0
- data/bundler/lib/bundler/plugin/index.rb +5 -1
- data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
- data/bundler/lib/bundler/plugin/installer.rb +37 -17
- data/bundler/lib/bundler/plugin/source_list.rb +4 -4
- data/bundler/lib/bundler/plugin.rb +21 -2
- data/bundler/lib/bundler/process_lock.rb +10 -14
- data/bundler/lib/bundler/remote_specification.rb +6 -1
- data/bundler/lib/bundler/resolver/base.rb +14 -3
- data/bundler/lib/bundler/resolver/candidate.rb +18 -27
- data/bundler/lib/bundler/resolver/package.rb +20 -3
- data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
- data/bundler/lib/bundler/resolver/strategy.rb +40 -0
- data/bundler/lib/bundler/resolver.rb +114 -52
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_dsl.rb +12 -3
- data/bundler/lib/bundler/ruby_version.rb +7 -1
- data/bundler/lib/bundler/rubygems_ext.rb +303 -150
- data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
- data/bundler/lib/bundler/rubygems_integration.rb +40 -73
- data/bundler/lib/bundler/runtime.rb +48 -35
- data/bundler/lib/bundler/self_manager.rb +36 -26
- data/bundler/lib/bundler/settings/validator.rb +0 -23
- data/bundler/lib/bundler/settings.rb +36 -27
- data/bundler/lib/bundler/setup.rb +6 -0
- data/bundler/lib/bundler/shared_helpers.rb +45 -25
- data/bundler/lib/bundler/source/gemspec.rb +1 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +26 -9
- data/bundler/lib/bundler/source/git.rb +113 -41
- data/bundler/lib/bundler/source/metadata.rb +4 -3
- data/bundler/lib/bundler/source/path.rb +14 -18
- data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
- data/bundler/lib/bundler/source/rubygems.rb +54 -48
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/source_list.rb +54 -12
- data/bundler/lib/bundler/source_map.rb +1 -1
- data/bundler/lib/bundler/spec_set.rb +227 -103
- data/bundler/lib/bundler/stub_specification.rb +29 -2
- data/bundler/lib/bundler/templates/Executable +0 -11
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +17 -15
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -12
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/ui/shell.rb +26 -4
- data/bundler/lib/bundler/ui/silent.rb +12 -1
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +134 -57
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
- data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
- 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/thor/lib/thor.rb +11 -0
- data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
- data/bundler/lib/bundler/vendored_net_http.rb +20 -5
- data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
- data/bundler/lib/bundler/vendored_timeout.rb +7 -3
- data/bundler/lib/bundler/vendored_uri.rb +18 -1
- data/bundler/lib/bundler/version.rb +10 -2
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +12 -7
- data/bundler/lib/bundler.rb +101 -61
- data/{bundler → doc/bundler}/UPGRADING.md +132 -127
- data/doc/rubygems/CONTRIBUTING.md +227 -0
- data/{POLICIES.md → doc/rubygems/POLICIES.md} +86 -17
- data/exe/update_rubygems +1 -1
- data/lib/rubygems/basic_specification.rb +50 -10
- data/lib/rubygems/bundler_version_finder.rb +1 -1
- data/lib/rubygems/command.rb +1 -4
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +2 -11
- data/lib/rubygems/commands/cleanup_command.rb +3 -13
- data/lib/rubygems/commands/contents_command.rb +17 -10
- data/lib/rubygems/commands/environment_command.rb +5 -0
- data/lib/rubygems/commands/exec_command.rb +18 -11
- data/lib/rubygems/commands/fetch_command.rb +14 -0
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +0 -4
- data/lib/rubygems/commands/pristine_command.rb +29 -19
- data/lib/rubygems/commands/push_command.rb +31 -6
- data/lib/rubygems/commands/rdoc_command.rb +3 -10
- data/lib/rubygems/commands/rebuild_command.rb +262 -0
- data/lib/rubygems/commands/setup_command.rb +13 -18
- data/lib/rubygems/commands/sources_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +9 -4
- data/lib/rubygems/commands/unpack_command.rb +0 -6
- data/lib/rubygems/commands/update_command.rb +13 -22
- data/lib/rubygems/config_file.rb +45 -16
- data/lib/rubygems/core_ext/kernel_require.rb +15 -3
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +7 -7
- data/lib/rubygems/dependency.rb +12 -16
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +79 -77
- data/lib/rubygems/errors.rb +2 -1
- data/lib/rubygems/exceptions.rb +2 -9
- data/lib/rubygems/ext/builder.rb +21 -8
- data/lib/rubygems/ext/cargo_builder.rb +16 -26
- data/lib/rubygems/ext/cmake_builder.rb +7 -2
- data/lib/rubygems/ext/configure_builder.rb +7 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
- data/lib/rubygems/ext/rake_builder.rb +7 -4
- data/lib/rubygems/gem_runner.rb +9 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +11 -4
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
- data/lib/rubygems/gemcutter_utilities.rb +52 -26
- data/lib/rubygems/gemspec_helpers.rb +19 -0
- data/lib/rubygems/install_update_options.rb +5 -0
- data/lib/rubygems/installer.rb +76 -90
- data/lib/rubygems/local_remote_options.rb +8 -8
- data/lib/rubygems/package/tar_header.rb +31 -4
- data/lib/rubygems/package/tar_reader/entry.rb +1 -5
- data/lib/rubygems/package/tar_writer.rb +5 -4
- data/lib/rubygems/package.rb +13 -8
- data/lib/rubygems/platform.rb +148 -43
- data/lib/rubygems/psych_tree.rb +4 -0
- data/lib/rubygems/query_utils.rb +2 -2
- data/lib/rubygems/rdoc.rb +16 -3
- data/lib/rubygems/remote_fetcher.rb +6 -7
- data/lib/rubygems/request.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set.rb +4 -7
- data/lib/rubygems/requirement.rb +16 -12
- data/lib/rubygems/resolver/activation_request.rb +1 -1
- data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
- data/lib/rubygems/resolver/api_set.rb +13 -8
- data/lib/rubygems/resolver/best_set.rb +1 -29
- data/lib/rubygems/resolver/composed_set.rb +3 -3
- data/lib/rubygems/resolver/git_set.rb +0 -1
- data/lib/rubygems/resolver/index_set.rb +2 -2
- data/lib/rubygems/resolver/source_set.rb +1 -1
- data/lib/rubygems/resolver/spec_specification.rb +7 -0
- data/lib/rubygems/resolver.rb +8 -8
- data/lib/rubygems/s3_uri_signer.rb +8 -6
- data/lib/rubygems/safe_marshal/reader.rb +31 -14
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
- data/lib/rubygems/safe_yaml.rb +10 -1
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/source/git.rb +22 -17
- data/lib/rubygems/source/installed.rb +3 -1
- data/lib/rubygems/source/local.rb +8 -4
- data/lib/rubygems/source/specific_file.rb +5 -3
- data/lib/rubygems/source.rb +37 -29
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +47 -15
- data/lib/rubygems/specification.rb +110 -183
- data/lib/rubygems/specification_policy.rb +33 -13
- data/lib/rubygems/specification_record.rb +212 -0
- data/lib/rubygems/stub_specification.rb +32 -10
- data/lib/rubygems/target_rbconfig.rb +50 -0
- data/lib/rubygems/uninstaller.rb +42 -22
- data/lib/rubygems/uri.rb +6 -6
- data/lib/rubygems/uri_formatter.rb +2 -1
- data/lib/rubygems/util/licenses.rb +118 -1
- data/lib/rubygems/util.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/state.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo.rb +2 -2
- data/lib/rubygems/vendor/net-http/COPYING +56 -0
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/generic_request.rb +9 -9
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/header.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/request.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/requests.rb +35 -30
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/response.rb +2 -2
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/responses.rb +6 -6
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/status.rb +1 -1
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http.rb +149 -70
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/https.rb +1 -1
- data/lib/rubygems/vendor/optparse/COPYING +56 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
- data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +158 -62
- data/lib/rubygems/vendor/resolv/COPYING +56 -0
- data/lib/rubygems/{resolv → vendor/resolv}/lib/resolv.rb +165 -69
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
- data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
- data/lib/rubygems/vendor/uri/COPYING +56 -0
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
- data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
- data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
- data/lib/rubygems/vendored_molinillo.rb +3 -0
- data/lib/rubygems/vendored_net_http.rb +5 -0
- data/lib/rubygems/vendored_optparse.rb +3 -0
- data/lib/rubygems/vendored_securerandom.rb +3 -0
- data/lib/rubygems/vendored_timeout.rb +5 -0
- data/lib/rubygems/vendored_tsort.rb +3 -0
- data/lib/rubygems/version.rb +26 -9
- data/lib/rubygems/yaml_serializer.rb +12 -7
- data/lib/rubygems.rb +160 -53
- data/rubygems-update.gemspec +11 -6
- data/setup.rb +1 -1
- metadata +124 -96
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
- data/bundler/lib/bundler/gem_helpers.rb +0 -127
- data/bundler/lib/bundler/templates/Executable.bundler +0 -109
- data/bundler/lib/bundler/vendor/fileutils/.document +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/.document +0 -1
- data/bundler/lib/bundler/vendor/pub_grub/.document +0 -1
- data/bundler/lib/bundler/vendor/thor/.document +0 -1
- data/bundler/lib/bundler/vendor/tsort/.document +0 -1
- data/bundler/lib/bundler/vendor/uri/.document +0 -1
- data/lib/rubygems/net/http.rb +0 -3
- data/lib/rubygems/net-http/.document +0 -1
- data/lib/rubygems/net-http/LICENSE.txt +0 -22
- data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
- data/lib/rubygems/net-protocol/.document +0 -1
- data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
- data/lib/rubygems/optparse/.document +0 -1
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolv/.document +0 -1
- data/lib/rubygems/resolv/LICENSE.txt +0 -22
- data/lib/rubygems/resolver/molinillo/.document +0 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/rubygems/resolver/molinillo.rb +0 -3
- data/lib/rubygems/shellwords.rb +0 -3
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/timeout/.document +0 -1
- data/lib/rubygems/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/timeout.rb +0 -3
- data/lib/rubygems/tsort/.document +0 -1
- data/lib/rubygems/tsort/LICENSE.txt +0 -22
- data/lib/rubygems/tsort.rb +0 -3
- /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
- /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
- /data/lib/rubygems/ssl_certs/rubygems.org/{GlobalSignRootCA_R3.pem → GlobalSign.pem} +0 -0
- /data/{bundler/lib/bundler/vendor/connection_pool → lib/rubygems/vendor}/.document +0 -0
- /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/exceptions.rb +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
- /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
- /data/lib/rubygems/{net-protocol → vendor/net-protocol}/lib/net/protocol.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
- /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
@@ -95,10 +95,11 @@ class Gem::Package::TarWriter
|
|
95
95
|
end
|
96
96
|
|
97
97
|
##
|
98
|
-
# Adds file +name+ with permissions +mode
|
99
|
-
#
|
98
|
+
# Adds file +name+ with permissions +mode+ and mtime +mtime+ (sets
|
99
|
+
# Gem.source_date_epoch if not specified), and yields an IO for
|
100
|
+
# writing the file to
|
100
101
|
|
101
|
-
def add_file(name, mode) # :yields: io
|
102
|
+
def add_file(name, mode, mtime=nil) # :yields: io
|
102
103
|
check_closed
|
103
104
|
|
104
105
|
name, prefix = split_name name
|
@@ -118,7 +119,7 @@ class Gem::Package::TarWriter
|
|
118
119
|
|
119
120
|
header = Gem::Package::TarHeader.new name: name, mode: mode,
|
120
121
|
size: size, prefix: prefix,
|
121
|
-
mtime: Gem.source_date_epoch
|
122
|
+
mtime: mtime || Gem.source_date_epoch
|
122
123
|
|
123
124
|
@io.write header
|
124
125
|
@io.pos = final_pos
|
data/lib/rubygems/package.rb
CHANGED
@@ -7,7 +7,6 @@
|
|
7
7
|
|
8
8
|
# rubocop:enable Style/AsciiComments
|
9
9
|
|
10
|
-
require_relative "../rubygems"
|
11
10
|
require_relative "security"
|
12
11
|
require_relative "user_interaction"
|
13
12
|
|
@@ -59,7 +58,7 @@ class Gem::Package
|
|
59
58
|
|
60
59
|
def initialize(message, source = nil)
|
61
60
|
if source
|
62
|
-
@path = source.path
|
61
|
+
@path = source.is_a?(String) ? source : source.path
|
63
62
|
|
64
63
|
message += " in #{path}" if path
|
65
64
|
end
|
@@ -295,7 +294,6 @@ class Gem::Package
|
|
295
294
|
|
296
295
|
Gem.load_yaml
|
297
296
|
|
298
|
-
@spec.mark_version
|
299
297
|
@spec.validate true, strict_validation unless skip_validation
|
300
298
|
|
301
299
|
setup_signer(
|
@@ -454,7 +452,7 @@ EOM
|
|
454
452
|
|
455
453
|
if entry.file?
|
456
454
|
File.open(destination, "wb") {|out| copy_stream(entry, out) }
|
457
|
-
FileUtils.chmod file_mode(entry.header.mode), destination
|
455
|
+
FileUtils.chmod file_mode(entry.header.mode) & ~File.umask, destination
|
458
456
|
end
|
459
457
|
|
460
458
|
verbose destination
|
@@ -528,12 +526,13 @@ EOM
|
|
528
526
|
# Loads a Gem::Specification from the TarEntry +entry+
|
529
527
|
|
530
528
|
def load_spec(entry) # :nodoc:
|
529
|
+
limit = 10 * 1024 * 1024
|
531
530
|
case entry.full_name
|
532
531
|
when "metadata" then
|
533
|
-
@spec = Gem::Specification.from_yaml entry
|
532
|
+
@spec = Gem::Specification.from_yaml limit_read(entry, "metadata", limit)
|
534
533
|
when "metadata.gz" then
|
535
534
|
Zlib::GzipReader.wrap(entry, external_encoding: Encoding::UTF_8) do |gzio|
|
536
|
-
@spec = Gem::Specification.from_yaml gzio.
|
535
|
+
@spec = Gem::Specification.from_yaml limit_read(gzio, "metadata.gz", limit)
|
537
536
|
end
|
538
537
|
end
|
539
538
|
end
|
@@ -557,7 +556,7 @@ EOM
|
|
557
556
|
|
558
557
|
@checksums = gem.seek "checksums.yaml.gz" do |entry|
|
559
558
|
Zlib::GzipReader.wrap entry do |gz_io|
|
560
|
-
Gem::SafeYAML.safe_load gz_io.
|
559
|
+
Gem::SafeYAML.safe_load limit_read(gz_io, "checksums.yaml.gz", 10 * 1024 * 1024)
|
561
560
|
end
|
562
561
|
end
|
563
562
|
end
|
@@ -664,7 +663,7 @@ EOM
|
|
664
663
|
|
665
664
|
case file_name
|
666
665
|
when /\.sig$/ then
|
667
|
-
@signatures[$`] = entry
|
666
|
+
@signatures[$`] = limit_read(entry, file_name, 1024 * 1024) if @security_policy
|
668
667
|
return
|
669
668
|
else
|
670
669
|
digest entry
|
@@ -724,6 +723,12 @@ EOM
|
|
724
723
|
IO.copy_stream(src, dst)
|
725
724
|
end
|
726
725
|
end
|
726
|
+
|
727
|
+
def limit_read(io, name, limit)
|
728
|
+
bytes = io.read(limit + 1)
|
729
|
+
raise Gem::Package::FormatError, "#{name} is too big (over #{limit} bytes)" if bytes.size > limit
|
730
|
+
bytes
|
731
|
+
end
|
727
732
|
end
|
728
733
|
|
729
734
|
require_relative "package/digest_io"
|
data/lib/rubygems/platform.rb
CHANGED
@@ -12,9 +12,10 @@ class Gem::Platform
|
|
12
12
|
|
13
13
|
attr_accessor :cpu, :os, :version
|
14
14
|
|
15
|
-
def self.local
|
16
|
-
@local
|
17
|
-
|
15
|
+
def self.local(refresh: false)
|
16
|
+
return @local if @local && !refresh
|
17
|
+
@local = begin
|
18
|
+
arch = Gem.target_rbconfig["arch"]
|
18
19
|
arch = "#{arch}_60" if /mswin(?:32|64)$/.match?(arch)
|
19
20
|
new(arch)
|
20
21
|
end
|
@@ -87,55 +88,45 @@ class Gem::Platform
|
|
87
88
|
when Array then
|
88
89
|
@cpu, @os, @version = arch
|
89
90
|
when String then
|
90
|
-
|
91
|
+
cpu, os = arch.sub(/-+$/, "").split("-", 2)
|
91
92
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
cpu = arch.shift
|
98
|
-
|
99
|
-
@cpu = case cpu
|
100
|
-
when /i\d86/ then "x86"
|
101
|
-
else cpu
|
102
|
-
end
|
103
|
-
|
104
|
-
if arch.length == 2 && arch.last.match?(/^\d+(\.\d+)?$/) # for command-line
|
105
|
-
@os, @version = arch
|
106
|
-
return
|
93
|
+
@cpu = if cpu&.match?(/i\d86/)
|
94
|
+
"x86"
|
95
|
+
else
|
96
|
+
cpu
|
107
97
|
end
|
108
98
|
|
109
|
-
os, = arch
|
110
99
|
if os.nil?
|
111
100
|
@cpu = nil
|
112
101
|
os = cpu
|
113
102
|
end # legacy jruby
|
114
103
|
|
115
104
|
@os, @version = case os
|
116
|
-
when /aix(\d+)?/ then
|
117
|
-
when /cygwin/ then
|
118
|
-
when /darwin(\d+)?/ then
|
119
|
-
when
|
120
|
-
when
|
121
|
-
when
|
122
|
-
when
|
123
|
-
when /^
|
124
|
-
when /^
|
125
|
-
when /^dotnet
|
126
|
-
when
|
127
|
-
when /
|
128
|
-
when /
|
129
|
-
when /(
|
105
|
+
when /aix-?(\d+)?/ then ["aix", $1]
|
106
|
+
when /cygwin/ then ["cygwin", nil]
|
107
|
+
when /darwin-?(\d+)?/ then ["darwin", $1]
|
108
|
+
when "macruby" then ["macruby", nil]
|
109
|
+
when /^macruby-?(\d+(?:\.\d+)*)?/ then ["macruby", $1]
|
110
|
+
when /freebsd-?(\d+)?/ then ["freebsd", $1]
|
111
|
+
when "java", "jruby" then ["java", nil]
|
112
|
+
when /^java-?(\d+(?:\.\d+)*)?/ then ["java", $1]
|
113
|
+
when /^dalvik-?(\d+)?$/ then ["dalvik", $1]
|
114
|
+
when /^dotnet$/ then ["dotnet", nil]
|
115
|
+
when /^dotnet-?(\d+(?:\.\d+)*)?/ then ["dotnet", $1]
|
116
|
+
when /linux-?(\w+)?/ then ["linux", $1]
|
117
|
+
when /mingw32/ then ["mingw32", nil]
|
118
|
+
when /mingw-?(\w+)?/ then ["mingw", $1]
|
119
|
+
when /(mswin\d+)(?:[_-](\d+))?/ then
|
130
120
|
os = $1
|
131
|
-
version = $
|
132
|
-
@cpu = "x86" if @cpu.nil? && os
|
121
|
+
version = $2
|
122
|
+
@cpu = "x86" if @cpu.nil? && os.end_with?("32")
|
133
123
|
[os, version]
|
134
|
-
when /netbsdelf/ then
|
135
|
-
when /openbsd(\d+\.\d+)?/ then
|
136
|
-
when /solaris(\d+\.\d+)?/ then
|
124
|
+
when /netbsdelf/ then ["netbsdelf", nil]
|
125
|
+
when /openbsd-?(\d+\.\d+)?/ then ["openbsd", $1]
|
126
|
+
when /solaris-?(\d+\.\d+)?/ then ["solaris", $1]
|
127
|
+
when /wasi/ then ["wasi", nil]
|
137
128
|
# test
|
138
|
-
when /^(\w+_platform)(\d+)?/ then
|
129
|
+
when /^(\w+_platform)-?(\d+)?/ then [$1, $2]
|
139
130
|
else ["unknown", nil]
|
140
131
|
end
|
141
132
|
when Gem::Platform then
|
@@ -152,7 +143,7 @@ class Gem::Platform
|
|
152
143
|
end
|
153
144
|
|
154
145
|
def to_s
|
155
|
-
to_a.compact.join "-"
|
146
|
+
to_a.compact.join(@cpu.nil? ? "" : "-")
|
156
147
|
end
|
157
148
|
|
158
149
|
##
|
@@ -175,7 +166,7 @@ class Gem::Platform
|
|
175
166
|
# they have the same version, or either one has no version
|
176
167
|
#
|
177
168
|
# Additionally, the platform will match if the local CPU is 'arm' and the
|
178
|
-
# other CPU starts with "
|
169
|
+
# other CPU starts with "armv" (for generic 32-bit ARM family support).
|
179
170
|
#
|
180
171
|
# Of note, this method is not commutative. Indeed the OS 'linux' has a
|
181
172
|
# special case: the version is the libc name, yet while "no version" stands
|
@@ -196,7 +187,7 @@ class Gem::Platform
|
|
196
187
|
|
197
188
|
# cpu
|
198
189
|
([nil,"universal"].include?(@cpu) || [nil, "universal"].include?(other.cpu) || @cpu == other.cpu ||
|
199
|
-
(@cpu == "arm" && other.cpu.start_with?("
|
190
|
+
(@cpu == "arm" && other.cpu.start_with?("armv"))) &&
|
200
191
|
|
201
192
|
# os
|
202
193
|
@os == other.os &&
|
@@ -264,4 +255,118 @@ class Gem::Platform
|
|
264
255
|
# This will be replaced with Gem::Platform::local.
|
265
256
|
|
266
257
|
CURRENT = "current"
|
258
|
+
|
259
|
+
JAVA = Gem::Platform.new("java") # :nodoc:
|
260
|
+
MSWIN = Gem::Platform.new("mswin32") # :nodoc:
|
261
|
+
MSWIN64 = Gem::Platform.new("mswin64") # :nodoc:
|
262
|
+
MINGW = Gem::Platform.new("x86-mingw32") # :nodoc:
|
263
|
+
X64_MINGW_LEGACY = Gem::Platform.new("x64-mingw32") # :nodoc:
|
264
|
+
X64_MINGW = Gem::Platform.new("x64-mingw-ucrt") # :nodoc:
|
265
|
+
UNIVERSAL_MINGW = Gem::Platform.new("universal-mingw") # :nodoc:
|
266
|
+
WINDOWS = [MSWIN, MSWIN64, UNIVERSAL_MINGW].freeze # :nodoc:
|
267
|
+
X64_LINUX = Gem::Platform.new("x86_64-linux") # :nodoc:
|
268
|
+
X64_LINUX_MUSL = Gem::Platform.new("x86_64-linux-musl") # :nodoc:
|
269
|
+
|
270
|
+
GENERICS = [JAVA, *WINDOWS].freeze # :nodoc:
|
271
|
+
private_constant :GENERICS
|
272
|
+
|
273
|
+
GENERIC_CACHE = GENERICS.each_with_object({}) {|g, h| h[g] = g } # :nodoc:
|
274
|
+
private_constant :GENERIC_CACHE
|
275
|
+
|
276
|
+
class << self
|
277
|
+
##
|
278
|
+
# Returns the generic platform for the given platform.
|
279
|
+
|
280
|
+
def generic(platform)
|
281
|
+
return Gem::Platform::RUBY if platform.nil? || platform == Gem::Platform::RUBY
|
282
|
+
|
283
|
+
GENERIC_CACHE[platform] ||= begin
|
284
|
+
found = GENERICS.find do |match|
|
285
|
+
platform === match
|
286
|
+
end
|
287
|
+
found || Gem::Platform::RUBY
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
##
|
292
|
+
# Returns the platform specificity match for the given spec platform and user platform.
|
293
|
+
|
294
|
+
def platform_specificity_match(spec_platform, user_platform)
|
295
|
+
return -1 if spec_platform == user_platform
|
296
|
+
return 1_000_000 if spec_platform.nil? || spec_platform == Gem::Platform::RUBY || user_platform == Gem::Platform::RUBY
|
297
|
+
|
298
|
+
os_match(spec_platform, user_platform) +
|
299
|
+
cpu_match(spec_platform, user_platform) * 10 +
|
300
|
+
version_match(spec_platform, user_platform) * 100
|
301
|
+
end
|
302
|
+
|
303
|
+
##
|
304
|
+
# Sorts and filters the best platform match for the given matching specs and platform.
|
305
|
+
|
306
|
+
def sort_and_filter_best_platform_match(matching, platform)
|
307
|
+
return matching if matching.one?
|
308
|
+
|
309
|
+
exact = matching.select {|spec| spec.platform == platform }
|
310
|
+
return exact if exact.any?
|
311
|
+
|
312
|
+
sorted_matching = sort_best_platform_match(matching, platform)
|
313
|
+
exemplary_spec = sorted_matching.first
|
314
|
+
|
315
|
+
sorted_matching.take_while {|spec| same_specificity?(platform, spec, exemplary_spec) && same_deps?(spec, exemplary_spec) }
|
316
|
+
end
|
317
|
+
|
318
|
+
##
|
319
|
+
# Sorts the best platform match for the given matching specs and platform.
|
320
|
+
|
321
|
+
def sort_best_platform_match(matching, platform)
|
322
|
+
matching.sort_by.with_index do |spec, i|
|
323
|
+
[
|
324
|
+
platform_specificity_match(spec.platform, platform),
|
325
|
+
i, # for stable sort
|
326
|
+
]
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
330
|
+
private
|
331
|
+
|
332
|
+
def same_specificity?(platform, spec, exemplary_spec)
|
333
|
+
platform_specificity_match(spec.platform, platform) == platform_specificity_match(exemplary_spec.platform, platform)
|
334
|
+
end
|
335
|
+
|
336
|
+
def same_deps?(spec, exemplary_spec)
|
337
|
+
spec.required_ruby_version == exemplary_spec.required_ruby_version &&
|
338
|
+
spec.required_rubygems_version == exemplary_spec.required_rubygems_version &&
|
339
|
+
spec.dependencies.sort == exemplary_spec.dependencies.sort
|
340
|
+
end
|
341
|
+
|
342
|
+
def os_match(spec_platform, user_platform)
|
343
|
+
if spec_platform.os == user_platform.os
|
344
|
+
0
|
345
|
+
else
|
346
|
+
1
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
350
|
+
def cpu_match(spec_platform, user_platform)
|
351
|
+
if spec_platform.cpu == user_platform.cpu
|
352
|
+
0
|
353
|
+
elsif spec_platform.cpu == "arm" && user_platform.cpu.to_s.start_with?("arm")
|
354
|
+
0
|
355
|
+
elsif spec_platform.cpu.nil? || spec_platform.cpu == "universal"
|
356
|
+
1
|
357
|
+
else
|
358
|
+
2
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
def version_match(spec_platform, user_platform)
|
363
|
+
if spec_platform.version == user_platform.version
|
364
|
+
0
|
365
|
+
elsif spec_platform.version.nil?
|
366
|
+
1
|
367
|
+
else
|
368
|
+
2
|
369
|
+
end
|
370
|
+
end
|
371
|
+
end
|
267
372
|
end
|
data/lib/rubygems/psych_tree.rb
CHANGED
data/lib/rubygems/query_utils.rb
CHANGED
@@ -132,7 +132,7 @@ module Gem::QueryUtils
|
|
132
132
|
version_matches = show_prereleases? || !s.version.prerelease?
|
133
133
|
|
134
134
|
name_matches && version_matches
|
135
|
-
end
|
135
|
+
end.uniq(&:full_name)
|
136
136
|
|
137
137
|
spec_tuples = specs.map do |spec|
|
138
138
|
[spec.name_tuple, spec]
|
@@ -311,7 +311,7 @@ module Gem::QueryUtils
|
|
311
311
|
label = "Installed at"
|
312
312
|
specs.each do |s|
|
313
313
|
version = s.version.to_s
|
314
|
-
default = ", default"
|
314
|
+
default = s.default_gem? ? ", default" : ""
|
315
315
|
entry << "\n" << " #{label} (#{version}#{default}): #{s.base_dir}"
|
316
316
|
label = " " * label.length
|
317
317
|
end
|
data/lib/rubygems/rdoc.rb
CHANGED
@@ -5,9 +5,22 @@ require_relative "../rubygems"
|
|
5
5
|
begin
|
6
6
|
require "rdoc/rubygems_hook"
|
7
7
|
module Gem
|
8
|
-
|
9
|
-
|
8
|
+
##
|
9
|
+
# Returns whether RDoc defines its own install hooks through a RubyGems
|
10
|
+
# plugin. This and whatever is guarded by it can be removed once no
|
11
|
+
# supported Ruby ships with RDoc older than 6.9.0.
|
12
|
+
|
13
|
+
def self.rdoc_hooks_defined_via_plugin?
|
14
|
+
Gem::Version.new(::RDoc::VERSION) >= Gem::Version.new("6.9.0")
|
15
|
+
end
|
10
16
|
|
11
|
-
|
17
|
+
if rdoc_hooks_defined_via_plugin?
|
18
|
+
RDoc = ::RDoc::RubyGemsHook
|
19
|
+
else
|
20
|
+
RDoc = ::RDoc::RubygemsHook
|
21
|
+
|
22
|
+
Gem.done_installing(&Gem::RDoc.method(:generation_hook))
|
23
|
+
end
|
24
|
+
end
|
12
25
|
rescue LoadError
|
13
26
|
end
|
@@ -74,9 +74,8 @@ class Gem::RemoteFetcher
|
|
74
74
|
|
75
75
|
def initialize(proxy=nil, dns=nil, headers={})
|
76
76
|
require_relative "core_ext/tcpsocket_init" if Gem.configuration.ipv4_fallback_enabled
|
77
|
-
require_relative "
|
78
|
-
|
79
|
-
require "uri"
|
77
|
+
require_relative "vendored_net_http"
|
78
|
+
require_relative "vendor/uri/lib/uri"
|
80
79
|
|
81
80
|
Socket.do_not_reverse_lookup = true
|
82
81
|
|
@@ -135,7 +134,7 @@ class Gem::RemoteFetcher
|
|
135
134
|
|
136
135
|
scheme = source_uri.scheme
|
137
136
|
|
138
|
-
# URI.parse gets confused by MS Windows paths with forward slashes.
|
137
|
+
# Gem::URI.parse gets confused by MS Windows paths with forward slashes.
|
139
138
|
scheme = nil if /^[a-z]$/i.match?(scheme)
|
140
139
|
|
141
140
|
# REFACTOR: split this up and dispatch on scheme (eg download_http)
|
@@ -268,7 +267,7 @@ class Gem::RemoteFetcher
|
|
268
267
|
|
269
268
|
def fetch_s3(uri, mtime = nil, head = false)
|
270
269
|
begin
|
271
|
-
public_uri = s3_uri_signer(uri).sign
|
270
|
+
public_uri = s3_uri_signer(uri, head ? "HEAD" : "GET").sign
|
272
271
|
rescue Gem::S3URISigner::ConfigurationError, Gem::S3URISigner::InstanceProfileError => e
|
273
272
|
raise FetchError.new(e.message, "s3://#{uri.host}")
|
274
273
|
end
|
@@ -276,8 +275,8 @@ class Gem::RemoteFetcher
|
|
276
275
|
end
|
277
276
|
|
278
277
|
# we have our own signing code here to avoid a dependency on the aws-sdk gem
|
279
|
-
def s3_uri_signer(uri)
|
280
|
-
Gem::S3URISigner.new(uri)
|
278
|
+
def s3_uri_signer(uri, method)
|
279
|
+
Gem::S3URISigner.new(uri, method)
|
281
280
|
end
|
282
281
|
|
283
282
|
##
|
data/lib/rubygems/request.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "
|
3
|
+
require_relative "vendored_net_http"
|
4
4
|
require_relative "user_interaction"
|
5
5
|
|
6
6
|
class Gem::Request
|
@@ -18,11 +18,11 @@ class Gem::Request
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.proxy_uri(proxy) # :nodoc:
|
21
|
-
|
21
|
+
require_relative "vendor/uri/lib/uri"
|
22
22
|
case proxy
|
23
23
|
when :no_proxy then nil
|
24
|
-
when URI::HTTP then proxy
|
25
|
-
else URI.parse(proxy)
|
24
|
+
when Gem::URI::HTTP then proxy
|
25
|
+
else Gem::URI.parse(proxy)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -176,7 +176,7 @@ class Gem::Request
|
|
176
176
|
end
|
177
177
|
|
178
178
|
require "uri"
|
179
|
-
uri = URI(Gem::UriFormatter.new(env_proxy).normalize)
|
179
|
+
uri = Gem::URI(Gem::UriFormatter.new(env_proxy).normalize)
|
180
180
|
|
181
181
|
if uri && uri.user.nil? && uri.password.nil?
|
182
182
|
user = ENV["#{downcase_scheme}_proxy_user"] || ENV["#{upcase_scheme}_PROXY_USER"]
|
@@ -330,7 +330,7 @@ class Gem::RequestSet::GemDependencyAPI
|
|
330
330
|
# git: ::
|
331
331
|
# Install this dependency from a git repository:
|
332
332
|
#
|
333
|
-
# gem 'private_gem', git: git@my.company.example:private_gem.git'
|
333
|
+
# gem 'private_gem', git: 'git@my.company.example:private_gem.git'
|
334
334
|
#
|
335
335
|
# gist: ::
|
336
336
|
# Install this dependency from the gist ID:
|
data/lib/rubygems/request_set.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "
|
3
|
+
require_relative "vendored_tsort"
|
4
4
|
|
5
5
|
##
|
6
6
|
# A RequestSet groups a request to activate a set of dependencies.
|
@@ -181,13 +181,10 @@ class Gem::RequestSet
|
|
181
181
|
|
182
182
|
# Install requested gems after they have been downloaded
|
183
183
|
sorted_requests.each do |req|
|
184
|
-
if req.installed?
|
184
|
+
if req.installed? && @always_install.none? {|spec| spec == req.spec.spec }
|
185
185
|
req.spec.spec.build_extensions
|
186
|
-
|
187
|
-
|
188
|
-
yield req, nil if block_given?
|
189
|
-
next
|
190
|
-
end
|
186
|
+
yield req, nil if block_given?
|
187
|
+
next
|
191
188
|
end
|
192
189
|
|
193
190
|
spec =
|
data/lib/rubygems/requirement.rb
CHANGED
@@ -13,8 +13,8 @@ class Gem::Requirement
|
|
13
13
|
OPS = { # :nodoc:
|
14
14
|
"=" => lambda {|v, r| v == r },
|
15
15
|
"!=" => lambda {|v, r| v != r },
|
16
|
-
">" => lambda {|v, r| v >
|
17
|
-
"<" => lambda {|v, r| v <
|
16
|
+
">" => lambda {|v, r| v > r },
|
17
|
+
"<" => lambda {|v, r| v < r },
|
18
18
|
">=" => lambda {|v, r| v >= r },
|
19
19
|
"<=" => lambda {|v, r| v <= r },
|
20
20
|
"~>" => lambda {|v, r| v >= r && v.release < r.bump },
|
@@ -22,7 +22,7 @@ class Gem::Requirement
|
|
22
22
|
|
23
23
|
SOURCE_SET_REQUIREMENT = Struct.new(:for_lockfile).new "!" # :nodoc:
|
24
24
|
|
25
|
-
quoted = OPS.keys
|
25
|
+
quoted = Regexp.union(OPS.keys)
|
26
26
|
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*".freeze # :nodoc:
|
27
27
|
|
28
28
|
##
|
@@ -106,13 +106,15 @@ class Gem::Requirement
|
|
106
106
|
unless PATTERN =~ obj.to_s
|
107
107
|
raise BadRequirementError, "Illformed requirement [#{obj.inspect}]"
|
108
108
|
end
|
109
|
+
op = -($1 || "=")
|
110
|
+
version = -$2
|
109
111
|
|
110
|
-
if
|
112
|
+
if op == ">=" && version == "0"
|
111
113
|
DefaultRequirement
|
112
|
-
elsif
|
114
|
+
elsif op == ">=" && version == "0.a"
|
113
115
|
DefaultPrereleaseRequirement
|
114
116
|
else
|
115
|
-
[
|
117
|
+
[op, Gem::Version.new(version)]
|
116
118
|
end
|
117
119
|
end
|
118
120
|
|
@@ -201,7 +203,8 @@ class Gem::Requirement
|
|
201
203
|
def marshal_load(array) # :nodoc:
|
202
204
|
@requirements = array[0]
|
203
205
|
|
204
|
-
raise TypeError, "wrong @requirements" unless Array === @requirements
|
206
|
+
raise TypeError, "wrong @requirements" unless Array === @requirements &&
|
207
|
+
@requirements.all? {|r| r.size == 2 && (r.first.is_a?(String) || r[0] = "=") && r.last.is_a?(Gem::Version) }
|
205
208
|
end
|
206
209
|
|
207
210
|
def yaml_initialize(tag, vals) # :nodoc:
|
@@ -214,10 +217,6 @@ class Gem::Requirement
|
|
214
217
|
yaml_initialize coder.tag, coder.map
|
215
218
|
end
|
216
219
|
|
217
|
-
def to_yaml_properties # :nodoc:
|
218
|
-
["@requirements"]
|
219
|
-
end
|
220
|
-
|
221
220
|
def encode_with(coder) # :nodoc:
|
222
221
|
coder.add "requirements", @requirements
|
223
222
|
end
|
@@ -242,7 +241,7 @@ class Gem::Requirement
|
|
242
241
|
def satisfied_by?(version)
|
243
242
|
raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless
|
244
243
|
Gem::Version === version
|
245
|
-
requirements.all? {|op, rv| OPS
|
244
|
+
requirements.all? {|op, rv| OPS.fetch(op).call version, rv }
|
246
245
|
end
|
247
246
|
|
248
247
|
alias_method :===, :satisfied_by?
|
@@ -284,6 +283,11 @@ class Gem::Requirement
|
|
284
283
|
def _tilde_requirements
|
285
284
|
@_tilde_requirements ||= _sorted_requirements.select {|r| r.first == "~>" }
|
286
285
|
end
|
286
|
+
|
287
|
+
def initialize_copy(other) # :nodoc:
|
288
|
+
@requirements = other.requirements.dup
|
289
|
+
super
|
290
|
+
end
|
287
291
|
end
|
288
292
|
|
289
293
|
class Gem::Version
|
@@ -1,15 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Gem::Resolver::APISet::GemParser
|
4
|
-
EMPTY_ARRAY = [].freeze
|
5
|
-
private_constant :EMPTY_ARRAY
|
6
|
-
|
7
4
|
def parse(line)
|
8
5
|
version_and_platform, rest = line.split(" ", 2)
|
9
6
|
version, platform = version_and_platform.split("-", 2)
|
10
7
|
dependencies, requirements = rest.split("|", 2).map! {|s| s.split(",") } if rest
|
11
|
-
dependencies = dependencies ? dependencies.map! {|d| parse_dependency(d) } :
|
12
|
-
requirements = requirements ? requirements.map! {|d| parse_dependency(d) } :
|
8
|
+
dependencies = dependencies ? dependencies.map! {|d| parse_dependency(d) } : []
|
9
|
+
requirements = requirements ? requirements.map! {|d| parse_dependency(d) } : []
|
13
10
|
[version, platform, dependencies, requirements]
|
14
11
|
end
|
15
12
|
|
@@ -30,7 +30,7 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|
30
30
|
def initialize(dep_uri = "https://index.rubygems.org/info/")
|
31
31
|
super()
|
32
32
|
|
33
|
-
dep_uri = URI dep_uri unless URI === dep_uri
|
33
|
+
dep_uri = Gem::URI dep_uri unless Gem::URI === dep_uri
|
34
34
|
|
35
35
|
@dep_uri = dep_uri
|
36
36
|
@uri = dep_uri + ".."
|
@@ -104,16 +104,21 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|
104
104
|
end
|
105
105
|
|
106
106
|
uri = @dep_uri + name
|
107
|
-
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
108
107
|
|
109
|
-
|
110
|
-
|
108
|
+
begin
|
109
|
+
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
110
|
+
rescue Gem::RemoteFetcher::FetchError
|
111
|
+
@data[name] = []
|
112
|
+
else
|
113
|
+
lines(str).each do |ver|
|
114
|
+
number, platform, dependencies, requirements = parse_gem(ver)
|
111
115
|
|
112
|
-
|
113
|
-
|
114
|
-
|
116
|
+
platform ||= "ruby"
|
117
|
+
dependencies = dependencies.map {|dep_name, reqs| [dep_name, reqs.join(", ")] }
|
118
|
+
requirements = requirements.map {|req_name, reqs| [req_name.to_sym, reqs] }.to_h
|
115
119
|
|
116
|
-
|
120
|
+
@data[name] << { name: name, number: number, platform: platform, dependencies: dependencies, requirements: requirements }
|
121
|
+
end
|
117
122
|
end
|
118
123
|
|
119
124
|
@data[name]
|