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
@@ -11,6 +11,7 @@ require_relative "deprecate"
|
|
11
11
|
require_relative "basic_specification"
|
12
12
|
require_relative "stub_specification"
|
13
13
|
require_relative "platform"
|
14
|
+
require_relative "specification_record"
|
14
15
|
require_relative "util/list"
|
15
16
|
|
16
17
|
require "rbconfig"
|
@@ -174,27 +175,17 @@ class Gem::Specification < Gem::BasicSpecification
|
|
174
175
|
end
|
175
176
|
|
176
177
|
@@attributes = @@default_value.keys.sort_by(&:to_s)
|
177
|
-
@@array_attributes = @@default_value.
|
178
|
+
@@array_attributes = @@default_value.select {|_k,v| v.is_a?(Array) }.keys
|
178
179
|
@@nil_attributes, @@non_nil_attributes = @@default_value.keys.partition do |k|
|
179
180
|
@@default_value[k].nil?
|
180
181
|
end
|
181
182
|
|
182
|
-
def self.clear_specs # :nodoc:
|
183
|
-
@@all = nil
|
184
|
-
@@stubs = nil
|
185
|
-
@@stubs_by_name = {}
|
186
|
-
@@spec_with_requirable_file = {}
|
187
|
-
@@active_stub_with_requirable_file = {}
|
188
|
-
end
|
189
|
-
private_class_method :clear_specs
|
190
|
-
|
191
|
-
clear_specs
|
192
|
-
|
193
183
|
# Sentinel object to represent "not found" stubs
|
194
184
|
NOT_FOUND = Struct.new(:to_spec, :this).new # :nodoc:
|
185
|
+
deprecate_constant :NOT_FOUND
|
195
186
|
|
196
187
|
# Tracking removed method calls to warn users during build time.
|
197
|
-
REMOVED_METHODS = [:rubyforge_project
|
188
|
+
REMOVED_METHODS = [:rubyforge_project=, :mark_version].freeze # :nodoc:
|
198
189
|
def removed_method_calls
|
199
190
|
@removed_method_calls ||= []
|
200
191
|
end
|
@@ -301,7 +292,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
301
292
|
#
|
302
293
|
# Usage:
|
303
294
|
#
|
304
|
-
# spec.description =
|
295
|
+
# spec.description = <<~EOF
|
305
296
|
# Rake is a Make-like program implemented in Ruby. Tasks and
|
306
297
|
# dependencies are specified in standard Ruby syntax.
|
307
298
|
# EOF
|
@@ -341,7 +332,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
341
332
|
# https://opensource.org/licenses/ approved.
|
342
333
|
#
|
343
334
|
# The most commonly used OSI-approved licenses are MIT and Apache-2.0.
|
344
|
-
# GitHub also provides a license picker at
|
335
|
+
# GitHub also provides a license picker at https://choosealicense.com/.
|
345
336
|
#
|
346
337
|
# You can also use a custom license file along with your gemspec and specify
|
347
338
|
# a LicenseRef-<idstring>, where idstring is the name of the file containing
|
@@ -400,7 +391,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
400
391
|
# "homepage_uri" => "https://bestgemever.example.io",
|
401
392
|
# "mailing_list_uri" => "https://groups.example.com/bestgemever",
|
402
393
|
# "source_code_uri" => "https://example.com/user/bestgemever",
|
403
|
-
# "wiki_uri" => "https://example.com/user/bestgemever/wiki"
|
394
|
+
# "wiki_uri" => "https://example.com/user/bestgemever/wiki",
|
404
395
|
# "funding_uri" => "https://example.com/donate"
|
405
396
|
# }
|
406
397
|
#
|
@@ -473,10 +464,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
473
464
|
# spec.platform = Gem::Platform.local
|
474
465
|
|
475
466
|
def platform=(platform)
|
476
|
-
|
477
|
-
@original_platform == Gem::Platform::RUBY
|
478
|
-
@original_platform = platform
|
479
|
-
end
|
467
|
+
@original_platform = platform
|
480
468
|
|
481
469
|
case platform
|
482
470
|
when Gem::Platform::CURRENT then
|
@@ -555,9 +543,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
555
543
|
#
|
556
544
|
# Usage:
|
557
545
|
#
|
558
|
-
# spec.
|
546
|
+
# spec.add_dependency 'example', '~> 1.1', '>= 1.1.4'
|
559
547
|
|
560
|
-
def
|
548
|
+
def add_dependency(gem, *requirements)
|
561
549
|
if requirements.uniq.size != requirements.size
|
562
550
|
warn "WARNING: duplicated #{gem} dependency #{requirements}"
|
563
551
|
end
|
@@ -770,7 +758,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
770
758
|
attr_accessor :specification_version
|
771
759
|
|
772
760
|
def self._all # :nodoc:
|
773
|
-
|
761
|
+
specification_record.all
|
774
762
|
end
|
775
763
|
|
776
764
|
def self.clear_load_cache # :nodoc:
|
@@ -780,6 +768,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
780
768
|
end
|
781
769
|
private_class_method :clear_load_cache
|
782
770
|
|
771
|
+
def self.gem_path # :nodoc:
|
772
|
+
Gem.path
|
773
|
+
end
|
774
|
+
private_class_method :gem_path
|
775
|
+
|
783
776
|
def self.each_gemspec(dirs) # :nodoc:
|
784
777
|
dirs.each do |dir|
|
785
778
|
Gem::Util.glob_files_in_dir("*.gemspec", dir).each do |path|
|
@@ -788,26 +781,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
788
781
|
end
|
789
782
|
end
|
790
783
|
|
791
|
-
def self.gemspec_stubs_in(dir, pattern)
|
784
|
+
def self.gemspec_stubs_in(dir, pattern) # :nodoc:
|
792
785
|
Gem::Util.glob_files_in_dir(pattern, dir).map {|path| yield path }.select(&:valid?)
|
793
786
|
end
|
794
|
-
private_class_method :gemspec_stubs_in
|
795
|
-
|
796
|
-
def self.installed_stubs(dirs, pattern)
|
797
|
-
map_stubs(dirs, pattern) do |path, base_dir, gems_dir|
|
798
|
-
Gem::StubSpecification.gemspec_stub(path, base_dir, gems_dir)
|
799
|
-
end
|
800
|
-
end
|
801
|
-
private_class_method :installed_stubs
|
802
|
-
|
803
|
-
def self.map_stubs(dirs, pattern) # :nodoc:
|
804
|
-
dirs.flat_map do |dir|
|
805
|
-
base_dir = File.dirname dir
|
806
|
-
gems_dir = File.join base_dir, "gems"
|
807
|
-
gemspec_stubs_in(dir, pattern) {|path| yield path, base_dir, gems_dir }
|
808
|
-
end
|
809
|
-
end
|
810
|
-
private_class_method :map_stubs
|
811
787
|
|
812
788
|
def self.each_spec(dirs) # :nodoc:
|
813
789
|
each_gemspec(dirs) do |path|
|
@@ -820,13 +796,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
820
796
|
# Returns a Gem::StubSpecification for every installed gem
|
821
797
|
|
822
798
|
def self.stubs
|
823
|
-
|
824
|
-
pattern = "*.gemspec"
|
825
|
-
stubs = stubs_for_pattern(pattern, false)
|
826
|
-
|
827
|
-
@@stubs_by_name = stubs.select {|s| Gem::Platform.match_spec? s }.group_by(&:name)
|
828
|
-
stubs
|
829
|
-
end
|
799
|
+
specification_record.stubs
|
830
800
|
end
|
831
801
|
|
832
802
|
##
|
@@ -845,13 +815,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
845
815
|
# only returns stubs that match Gem.platforms
|
846
816
|
|
847
817
|
def self.stubs_for(name)
|
848
|
-
|
849
|
-
@@stubs_by_name[name] || []
|
850
|
-
else
|
851
|
-
@@stubs_by_name[name] ||= stubs_for_pattern("#{name}-*.gemspec").select do |s|
|
852
|
-
s.name == name
|
853
|
-
end
|
854
|
-
end
|
818
|
+
specification_record.stubs_for(name)
|
855
819
|
end
|
856
820
|
|
857
821
|
##
|
@@ -859,12 +823,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
859
823
|
# optionally filtering out specs not matching the current platform
|
860
824
|
#
|
861
825
|
def self.stubs_for_pattern(pattern, match_platform = true) # :nodoc:
|
862
|
-
|
863
|
-
installed_stubs.select! {|s| Gem::Platform.match_spec? s } if match_platform
|
864
|
-
stubs = installed_stubs + default_stubs(pattern)
|
865
|
-
stubs = stubs.uniq(&:full_name)
|
866
|
-
_resort!(stubs)
|
867
|
-
stubs
|
826
|
+
specification_record.stubs_for_pattern(pattern, match_platform)
|
868
827
|
end
|
869
828
|
|
870
829
|
def self._resort!(specs) # :nodoc:
|
@@ -873,7 +832,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
873
832
|
next names if names.nonzero?
|
874
833
|
versions = b.version <=> a.version
|
875
834
|
next versions if versions.nonzero?
|
876
|
-
Gem::Platform.sort_priority(b.platform)
|
835
|
+
platforms = Gem::Platform.sort_priority(b.platform) <=> Gem::Platform.sort_priority(a.platform)
|
836
|
+
next platforms if platforms.nonzero?
|
837
|
+
default_gem = a.default_gem_priority <=> b.default_gem_priority
|
838
|
+
next default_gem if default_gem.nonzero?
|
839
|
+
a.base_dir_priority(gem_path) <=> b.base_dir_priority(gem_path)
|
877
840
|
end
|
878
841
|
end
|
879
842
|
|
@@ -893,23 +856,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
893
856
|
# properly sorted.
|
894
857
|
|
895
858
|
def self.add_spec(spec)
|
896
|
-
|
897
|
-
|
898
|
-
_all << spec
|
899
|
-
stubs << spec
|
900
|
-
(@@stubs_by_name[spec.name] ||= []) << spec
|
901
|
-
|
902
|
-
_resort!(@@stubs_by_name[spec.name])
|
903
|
-
_resort!(stubs)
|
859
|
+
specification_record.add_spec(spec)
|
904
860
|
end
|
905
861
|
|
906
862
|
##
|
907
863
|
# Removes +spec+ from the known specs.
|
908
864
|
|
909
865
|
def self.remove_spec(spec)
|
910
|
-
|
911
|
-
stubs.delete spec
|
912
|
-
(@@stubs_by_name[spec.name] || []).delete spec
|
866
|
+
specification_record.remove_spec(spec)
|
913
867
|
end
|
914
868
|
|
915
869
|
##
|
@@ -917,33 +871,23 @@ class Gem::Specification < Gem::BasicSpecification
|
|
917
871
|
# You probably want to use one of the Enumerable methods instead.
|
918
872
|
|
919
873
|
def self.all
|
920
|
-
warn "NOTE: Specification.all called from #{caller.first}" unless
|
874
|
+
warn "NOTE: Specification.all called from #{caller(1, 1).first}" unless
|
921
875
|
Gem::Deprecate.skip
|
922
876
|
_all
|
923
877
|
end
|
924
878
|
|
925
879
|
##
|
926
|
-
# Sets the known specs to +specs+.
|
927
|
-
# the future. Use at your own risk. Caveat emptor. Doomy doom doom.
|
928
|
-
# Etc etc.
|
929
|
-
#
|
930
|
-
#--
|
931
|
-
# Makes +specs+ the known specs
|
932
|
-
# Listen, time is a river
|
933
|
-
# Winter comes, code breaks
|
934
|
-
#
|
935
|
-
# -- wilsonb
|
880
|
+
# Sets the known specs to +specs+.
|
936
881
|
|
937
882
|
def self.all=(specs)
|
938
|
-
|
939
|
-
@@all = @@stubs = specs
|
883
|
+
specification_record.all = specs
|
940
884
|
end
|
941
885
|
|
942
886
|
##
|
943
887
|
# Return full names of all specs in sorted order.
|
944
888
|
|
945
889
|
def self.all_names
|
946
|
-
|
890
|
+
specification_record.all_names
|
947
891
|
end
|
948
892
|
|
949
893
|
##
|
@@ -968,9 +912,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
968
912
|
# Return the directories that Specification uses to find specs.
|
969
913
|
|
970
914
|
def self.dirs
|
971
|
-
@@dirs ||= Gem.
|
972
|
-
File.join dir, "specifications"
|
973
|
-
end
|
915
|
+
@@dirs ||= Gem::SpecificationRecord.dirs_from(gem_path)
|
974
916
|
end
|
975
917
|
|
976
918
|
##
|
@@ -980,7 +922,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
980
922
|
def self.dirs=(dirs)
|
981
923
|
reset
|
982
924
|
|
983
|
-
@@dirs = Array(dirs)
|
925
|
+
@@dirs = Gem::SpecificationRecord.dirs_from(Array(dirs))
|
984
926
|
end
|
985
927
|
|
986
928
|
extend Enumerable
|
@@ -989,23 +931,15 @@ class Gem::Specification < Gem::BasicSpecification
|
|
989
931
|
# Enumerate every known spec. See ::dirs= and ::add_spec to set the list of
|
990
932
|
# specs.
|
991
933
|
|
992
|
-
def self.each
|
993
|
-
|
994
|
-
|
995
|
-
_all.each do |x|
|
996
|
-
yield x
|
997
|
-
end
|
934
|
+
def self.each(&block)
|
935
|
+
specification_record.each(&block)
|
998
936
|
end
|
999
937
|
|
1000
938
|
##
|
1001
939
|
# Returns every spec that matches +name+ and optional +requirements+.
|
1002
940
|
|
1003
941
|
def self.find_all_by_name(name, *requirements)
|
1004
|
-
|
1005
|
-
|
1006
|
-
# TODO: maybe try: find_all { |s| spec === dep }
|
1007
|
-
|
1008
|
-
Gem::Dependency.new(name, *requirements).matching_specs
|
942
|
+
specification_record.find_all_by_name(name, *requirements)
|
1009
943
|
end
|
1010
944
|
|
1011
945
|
##
|
@@ -1022,8 +956,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1022
956
|
def self.find_by_name(name, *requirements)
|
1023
957
|
requirements = Gem::Requirement.default if requirements.empty?
|
1024
958
|
|
1025
|
-
# TODO: maybe try: find { |s| spec === dep }
|
1026
|
-
|
1027
959
|
Gem::Dependency.new(name, *requirements).to_spec
|
1028
960
|
end
|
1029
961
|
|
@@ -1037,12 +969,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1037
969
|
# Return the best specification that contains the file matching +path+.
|
1038
970
|
|
1039
971
|
def self.find_by_path(path)
|
1040
|
-
path
|
1041
|
-
spec = @@spec_with_requirable_file[path] ||= stubs.find do |s|
|
1042
|
-
s.contains_requirable_file? path
|
1043
|
-
end || NOT_FOUND
|
1044
|
-
|
1045
|
-
spec.to_spec
|
972
|
+
specification_record.find_by_path(path)
|
1046
973
|
end
|
1047
974
|
|
1048
975
|
##
|
@@ -1050,19 +977,15 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1050
977
|
# amongst the specs that are not activated.
|
1051
978
|
|
1052
979
|
def self.find_inactive_by_path(path)
|
1053
|
-
|
1054
|
-
next if s.activated?
|
1055
|
-
s.contains_requirable_file? path
|
1056
|
-
end
|
1057
|
-
stub&.to_spec
|
980
|
+
specification_record.find_inactive_by_path(path)
|
1058
981
|
end
|
1059
982
|
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
end || NOT_FOUND
|
983
|
+
##
|
984
|
+
# Return the best specification that contains the file matching +path+, among
|
985
|
+
# those already activated.
|
1064
986
|
|
1065
|
-
|
987
|
+
def self.find_active_stub_by_path(path)
|
988
|
+
specification_record.find_active_stub_by_path(path)
|
1066
989
|
end
|
1067
990
|
|
1068
991
|
##
|
@@ -1079,7 +1002,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1079
1002
|
def self.find_in_unresolved_tree(path)
|
1080
1003
|
unresolved_specs.each do |spec|
|
1081
1004
|
spec.traverse do |_from_spec, _dep, to_spec, trail|
|
1082
|
-
if to_spec.has_conflicts? || to_spec.
|
1005
|
+
if to_spec.has_conflicts? || to_spec.conflicts_when_loaded_with?(trail)
|
1083
1006
|
:next
|
1084
1007
|
else
|
1085
1008
|
return trail.reverse if to_spec.contains_requirable_file? path
|
@@ -1091,7 +1014,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1091
1014
|
end
|
1092
1015
|
|
1093
1016
|
def self.unresolved_specs
|
1094
|
-
unresolved_deps.values.
|
1017
|
+
unresolved_deps.values.flat_map(&:to_specs)
|
1095
1018
|
end
|
1096
1019
|
private_class_method :unresolved_specs
|
1097
1020
|
|
@@ -1129,14 +1052,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1129
1052
|
# +prerelease+ is true.
|
1130
1053
|
|
1131
1054
|
def self.latest_specs(prerelease = false)
|
1132
|
-
|
1055
|
+
specification_record.latest_specs(prerelease)
|
1133
1056
|
end
|
1134
1057
|
|
1135
1058
|
##
|
1136
1059
|
# Return the latest installed spec for gem +name+.
|
1137
1060
|
|
1138
1061
|
def self.latest_spec_for(name)
|
1139
|
-
|
1062
|
+
specification_record.latest_spec_for(name)
|
1140
1063
|
end
|
1141
1064
|
|
1142
1065
|
def self._latest_specs(specs, prerelease = false) # :nodoc:
|
@@ -1150,7 +1073,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1150
1073
|
result[spec.name] = spec
|
1151
1074
|
end
|
1152
1075
|
|
1153
|
-
result.
|
1076
|
+
result.flat_map(&:last).sort_by(&:name)
|
1154
1077
|
end
|
1155
1078
|
|
1156
1079
|
##
|
@@ -1274,27 +1197,43 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1274
1197
|
def self.reset
|
1275
1198
|
@@dirs = nil
|
1276
1199
|
Gem.pre_reset_hooks.each(&:call)
|
1277
|
-
|
1200
|
+
@specification_record = nil
|
1278
1201
|
clear_load_cache
|
1279
|
-
|
1280
|
-
unless
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1202
|
+
|
1203
|
+
unless unresolved_deps.empty?
|
1204
|
+
unresolved = unresolved_deps.filter_map do |name, dep|
|
1205
|
+
matching_versions = find_all_by_name(name)
|
1206
|
+
next if dep.latest_version? && matching_versions.any?(&:default_gem?)
|
1207
|
+
|
1208
|
+
[dep, matching_versions.uniq(&:full_name)]
|
1209
|
+
end.to_h
|
1210
|
+
|
1211
|
+
unless unresolved.empty?
|
1212
|
+
warn "WARN: Unresolved or ambiguous specs during Gem::Specification.reset:"
|
1213
|
+
unresolved.each do |dep, versions|
|
1214
|
+
warn " #{dep}"
|
1215
|
+
|
1216
|
+
unless versions.empty?
|
1217
|
+
warn " Available/installed versions of this gem:"
|
1218
|
+
versions.each {|s| warn " - #{s.version}" }
|
1219
|
+
end
|
1289
1220
|
end
|
1221
|
+
warn "WARN: Clearing out unresolved specs. Try 'gem cleanup <gem>'"
|
1222
|
+
warn "Please report a bug if this causes problems."
|
1290
1223
|
end
|
1291
|
-
|
1292
|
-
|
1293
|
-
unresolved.clear
|
1224
|
+
|
1225
|
+
unresolved_deps.clear
|
1294
1226
|
end
|
1295
1227
|
Gem.post_reset_hooks.each(&:call)
|
1296
1228
|
end
|
1297
1229
|
|
1230
|
+
##
|
1231
|
+
# Keeps track of all currently known specifications
|
1232
|
+
|
1233
|
+
def self.specification_record
|
1234
|
+
@specification_record ||= Gem::SpecificationRecord.new(dirs)
|
1235
|
+
end
|
1236
|
+
|
1298
1237
|
# DOC: This method needs documented or nodoc'd
|
1299
1238
|
def self.unresolved_deps
|
1300
1239
|
@unresolved_deps ||= Hash.new {|h, n| h[n] = Gem::Dependency.new n }
|
@@ -1375,7 +1314,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1375
1314
|
spec.instance_variable_set :@summary, array[5]
|
1376
1315
|
spec.instance_variable_set :@required_ruby_version, array[6]
|
1377
1316
|
spec.instance_variable_set :@required_rubygems_version, array[7]
|
1378
|
-
spec.
|
1317
|
+
spec.platform = array[8]
|
1379
1318
|
spec.instance_variable_set :@dependencies, array[9]
|
1380
1319
|
# offset due to rubyforge_project removal
|
1381
1320
|
spec.instance_variable_set :@email, array[11]
|
@@ -1383,9 +1322,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1383
1322
|
spec.instance_variable_set :@description, array[13]
|
1384
1323
|
spec.instance_variable_set :@homepage, array[14]
|
1385
1324
|
spec.instance_variable_set :@has_rdoc, array[15]
|
1386
|
-
spec.instance_variable_set :@
|
1387
|
-
spec.instance_variable_set :@platform, array[16].to_s
|
1388
|
-
spec.instance_variable_set :@license, array[17]
|
1325
|
+
spec.instance_variable_set :@licenses, array[17]
|
1389
1326
|
spec.instance_variable_set :@metadata, array[18]
|
1390
1327
|
spec.instance_variable_set :@loaded, false
|
1391
1328
|
spec.instance_variable_set :@activated, false
|
@@ -1478,13 +1415,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1478
1415
|
raise e
|
1479
1416
|
end
|
1480
1417
|
|
1481
|
-
|
1482
|
-
specs = spec_dep.to_specs
|
1483
|
-
rescue Gem::MissingSpecError => e
|
1484
|
-
raise Gem::MissingSpecError.new(e.name, e.requirement, "at: #{spec_file}")
|
1485
|
-
end
|
1418
|
+
specs = spec_dep.matching_specs(true).uniq(&:full_name)
|
1486
1419
|
|
1487
|
-
if specs.size ==
|
1420
|
+
if specs.size == 0
|
1421
|
+
raise Gem::MissingSpecError.new(spec_dep.name, spec_dep.requirement, "at: #{spec_file}")
|
1422
|
+
elsif specs.size == 1
|
1488
1423
|
specs.first.activate
|
1489
1424
|
else
|
1490
1425
|
name = spec_dep.name
|
@@ -1571,7 +1506,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1571
1506
|
|
1572
1507
|
private :add_dependency_with_type
|
1573
1508
|
|
1574
|
-
alias_method :
|
1509
|
+
alias_method :add_runtime_dependency, :add_dependency
|
1575
1510
|
|
1576
1511
|
##
|
1577
1512
|
# Adds this spec's require paths to LOAD_PATH, in the proper location.
|
@@ -1714,7 +1649,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1714
1649
|
##
|
1715
1650
|
# return true if there will be conflict when spec if loaded together with the list of specs.
|
1716
1651
|
|
1717
|
-
def
|
1652
|
+
def conflicts_when_loaded_with?(list_of_specs) # :nodoc:
|
1718
1653
|
result = list_of_specs.any? do |spec|
|
1719
1654
|
spec.runtime_dependencies.any? {|dep| (dep.name == name) && !satisfies_requirement?(dep) }
|
1720
1655
|
end
|
@@ -1842,7 +1777,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1842
1777
|
# Returns all specs that matches this spec's runtime dependencies.
|
1843
1778
|
|
1844
1779
|
def dependent_specs
|
1845
|
-
runtime_dependencies.
|
1780
|
+
runtime_dependencies.flat_map(&:to_specs)
|
1846
1781
|
end
|
1847
1782
|
|
1848
1783
|
##
|
@@ -1878,23 +1813,15 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1878
1813
|
end
|
1879
1814
|
|
1880
1815
|
def encode_with(coder) # :nodoc:
|
1881
|
-
mark_version
|
1882
|
-
|
1883
1816
|
coder.add "name", @name
|
1884
1817
|
coder.add "version", @version
|
1885
|
-
platform
|
1886
|
-
|
1887
|
-
"ruby"
|
1888
|
-
when String then
|
1889
|
-
@original_platform
|
1890
|
-
else
|
1891
|
-
@original_platform.to_s
|
1892
|
-
end
|
1893
|
-
coder.add "platform", platform
|
1818
|
+
coder.add "platform", platform.to_s
|
1819
|
+
coder.add "original_platform", original_platform.to_s if platform.to_s != original_platform.to_s
|
1894
1820
|
|
1895
1821
|
attributes = @@attributes.map(&:to_s) - %w[name version platform]
|
1896
1822
|
attributes.each do |name|
|
1897
|
-
|
1823
|
+
value = instance_variable_get("@#{name}")
|
1824
|
+
coder.add name, value unless value.nil?
|
1898
1825
|
end
|
1899
1826
|
end
|
1900
1827
|
|
@@ -1981,7 +1908,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1981
1908
|
end
|
1982
1909
|
|
1983
1910
|
##
|
1984
|
-
# Work around bundler removing my methods
|
1911
|
+
# Work around old bundler versions removing my methods
|
1912
|
+
# Can be removed once RubyGems can no longer install Bundler 2.5
|
1985
1913
|
|
1986
1914
|
def gem_dir # :nodoc:
|
1987
1915
|
super
|
@@ -2079,7 +2007,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2079
2007
|
end
|
2080
2008
|
|
2081
2009
|
##
|
2082
|
-
# Duplicates
|
2010
|
+
# Duplicates Array and Gem::Requirement attributes from +other_spec+ so state isn't shared.
|
2011
|
+
#
|
2083
2012
|
|
2084
2013
|
def initialize_copy(other_spec)
|
2085
2014
|
self.class.array_attributes.each do |name|
|
@@ -2101,6 +2030,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2101
2030
|
raise e
|
2102
2031
|
end
|
2103
2032
|
end
|
2033
|
+
|
2034
|
+
@required_ruby_version = other_spec.required_ruby_version.dup
|
2035
|
+
@required_rubygems_version = other_spec.required_rubygems_version.dup
|
2104
2036
|
end
|
2105
2037
|
|
2106
2038
|
def base_dir
|
@@ -2169,13 +2101,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2169
2101
|
@spec_file = nil
|
2170
2102
|
end
|
2171
2103
|
|
2172
|
-
##
|
2173
|
-
# Sets the rubygems_version to the current RubyGems version.
|
2174
|
-
|
2175
|
-
def mark_version
|
2176
|
-
@rubygems_version = Gem::VERSION
|
2177
|
-
end
|
2178
|
-
|
2179
2104
|
##
|
2180
2105
|
# Track removed method calls to warn about during build time.
|
2181
2106
|
# Warn about unknown attributes while loading a spec.
|
@@ -2219,11 +2144,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2219
2144
|
@files.concat(@extra_rdoc_files)
|
2220
2145
|
end
|
2221
2146
|
|
2222
|
-
@files = @files.uniq if @files
|
2223
|
-
@extensions = @extensions.uniq if @extensions
|
2224
|
-
@test_files = @test_files.uniq if @test_files
|
2225
|
-
@executables = @executables.uniq if @executables
|
2226
|
-
@extra_rdoc_files = @extra_rdoc_files.uniq if @extra_rdoc_files
|
2147
|
+
@files = @files.uniq.sort if @files
|
2148
|
+
@extensions = @extensions.uniq.sort if @extensions
|
2149
|
+
@test_files = @test_files.uniq.sort if @test_files
|
2150
|
+
@executables = @executables.uniq.sort if @executables
|
2151
|
+
@extra_rdoc_files = @extra_rdoc_files.uniq.sort if @extra_rdoc_files
|
2227
2152
|
end
|
2228
2153
|
|
2229
2154
|
##
|
@@ -2493,7 +2418,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2493
2418
|
# still have their default values are omitted.
|
2494
2419
|
|
2495
2420
|
def to_ruby
|
2496
|
-
mark_version
|
2497
2421
|
result = []
|
2498
2422
|
result << "# -*- encoding: utf-8 -*-"
|
2499
2423
|
result << "#{Gem::StubSpecification::PREFIX}#{name} #{version} #{platform} #{raw_require_paths.join("\0")}"
|
@@ -2543,7 +2467,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2543
2467
|
|
2544
2468
|
if @installed_by_version
|
2545
2469
|
result << nil
|
2546
|
-
result << " s.installed_by_version = #{ruby_code Gem::VERSION}
|
2470
|
+
result << " s.installed_by_version = #{ruby_code Gem::VERSION}"
|
2547
2471
|
end
|
2548
2472
|
|
2549
2473
|
unless dependencies.empty?
|
@@ -2658,6 +2582,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2658
2582
|
@test_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2659
2583
|
end
|
2660
2584
|
|
2585
|
+
def validate_for_resolution
|
2586
|
+
Gem::SpecificationPolicy.new(self).validate_for_resolution
|
2587
|
+
end
|
2588
|
+
|
2661
2589
|
def validate_metadata
|
2662
2590
|
Gem::SpecificationPolicy.new(self).validate_metadata
|
2663
2591
|
end
|
@@ -2693,13 +2621,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2693
2621
|
when "date"
|
2694
2622
|
# Force Date to go through the extra coerce logic in date=
|
2695
2623
|
self.date = val
|
2624
|
+
when "platform"
|
2625
|
+
self.platform = val
|
2696
2626
|
else
|
2697
2627
|
instance_variable_set "@#{ivar}", val
|
2698
2628
|
end
|
2699
2629
|
end
|
2700
|
-
|
2701
|
-
@original_platform = @platform # for backwards compatibility
|
2702
|
-
self.platform = Gem::Platform.new @platform
|
2703
2630
|
end
|
2704
2631
|
|
2705
2632
|
##
|