rubygems-update 3.3.18 → 3.4.19
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 +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#
|
3
4
|
#--
|
4
5
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
@@ -6,12 +7,11 @@
|
|
6
7
|
# See LICENSE.txt for permissions.
|
7
8
|
#++
|
8
9
|
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
12
|
-
require_relative
|
13
|
-
require_relative
|
14
|
-
require_relative 'util/list'
|
10
|
+
require_relative "deprecate"
|
11
|
+
require_relative "basic_specification"
|
12
|
+
require_relative "stub_specification"
|
13
|
+
require_relative "platform"
|
14
|
+
require_relative "util/list"
|
15
15
|
|
16
16
|
##
|
17
17
|
# The Specification class contains the information for a gem. Typically
|
@@ -75,29 +75,29 @@ class Gem::Specification < Gem::BasicSpecification
|
|
75
75
|
# key should be equal to the CURRENT_SPECIFICATION_VERSION.
|
76
76
|
|
77
77
|
SPECIFICATION_VERSION_HISTORY = { # :nodoc:
|
78
|
-
-1 => [
|
79
|
-
1
|
78
|
+
-1 => ["(RubyGems versions up to and including 0.7 did not have versioned specifications)"],
|
79
|
+
1 => [
|
80
80
|
'Deprecated "test_suite_file" in favor of the new, but equivalent, "test_files"',
|
81
81
|
'"test_file=x" is a shortcut for "test_files=[x]"',
|
82
82
|
],
|
83
83
|
2 => [
|
84
84
|
'Added "required_rubygems_version"',
|
85
|
-
|
85
|
+
"Now forward-compatible with future versions",
|
86
86
|
],
|
87
87
|
3 => [
|
88
|
-
|
88
|
+
"Added Fixnum validation to the specification_version",
|
89
89
|
],
|
90
90
|
4 => [
|
91
|
-
|
91
|
+
"Added sandboxed freeform metadata to the specification version.",
|
92
92
|
],
|
93
93
|
}.freeze
|
94
94
|
|
95
95
|
MARSHAL_FIELDS = { # :nodoc:
|
96
96
|
-1 => 16,
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
1 => 16,
|
98
|
+
2 => 16,
|
99
|
+
3 => 17,
|
100
|
+
4 => 18,
|
101
101
|
}.freeze
|
102
102
|
|
103
103
|
today = Time.now.utc
|
@@ -125,35 +125,35 @@ class Gem::Specification < Gem::BasicSpecification
|
|
125
125
|
# Map of attribute names to default values.
|
126
126
|
|
127
127
|
@@default_value = {
|
128
|
-
:authors
|
129
|
-
:autorequire
|
130
|
-
:bindir
|
131
|
-
:cert_chain
|
132
|
-
:date
|
133
|
-
:dependencies
|
134
|
-
:description
|
135
|
-
:email
|
136
|
-
:executables
|
137
|
-
:extensions
|
138
|
-
:extra_rdoc_files
|
139
|
-
:files
|
140
|
-
:homepage
|
141
|
-
:licenses
|
142
|
-
:metadata
|
143
|
-
:name
|
144
|
-
:platform
|
145
|
-
:post_install_message
|
146
|
-
:rdoc_options
|
147
|
-
:require_paths
|
148
|
-
:required_ruby_version
|
128
|
+
:authors => [],
|
129
|
+
:autorequire => nil,
|
130
|
+
:bindir => "bin",
|
131
|
+
:cert_chain => [],
|
132
|
+
:date => nil,
|
133
|
+
:dependencies => [],
|
134
|
+
:description => nil,
|
135
|
+
:email => nil,
|
136
|
+
:executables => [],
|
137
|
+
:extensions => [],
|
138
|
+
:extra_rdoc_files => [],
|
139
|
+
:files => [],
|
140
|
+
:homepage => nil,
|
141
|
+
:licenses => [],
|
142
|
+
:metadata => {},
|
143
|
+
:name => nil,
|
144
|
+
:platform => Gem::Platform::RUBY,
|
145
|
+
:post_install_message => nil,
|
146
|
+
:rdoc_options => [],
|
147
|
+
:require_paths => ["lib"],
|
148
|
+
:required_ruby_version => Gem::Requirement.default,
|
149
149
|
:required_rubygems_version => Gem::Requirement.default,
|
150
|
-
:requirements
|
151
|
-
:rubygems_version
|
152
|
-
:signing_key
|
153
|
-
:specification_version
|
154
|
-
:summary
|
155
|
-
:test_files
|
156
|
-
:version
|
150
|
+
:requirements => [],
|
151
|
+
:rubygems_version => Gem::VERSION,
|
152
|
+
:signing_key => nil,
|
153
|
+
:specification_version => CURRENT_SPECIFICATION_VERSION,
|
154
|
+
:summary => nil,
|
155
|
+
:test_files => [],
|
156
|
+
:version => nil,
|
157
157
|
}.freeze
|
158
158
|
|
159
159
|
# rubocop:disable Style/MutableConstant
|
@@ -339,7 +339,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
339
339
|
# The simplest way is to specify the standard SPDX ID
|
340
340
|
# https://spdx.org/licenses/ for the license.
|
341
341
|
# Ideally, you should pick one that is OSI (Open Source Initiative)
|
342
|
-
#
|
342
|
+
# https://opensource.org/licenses/ approved.
|
343
343
|
#
|
344
344
|
# The most commonly used OSI-approved licenses are MIT and Apache-2.0.
|
345
345
|
# GitHub also provides a license picker at http://choosealicense.com/.
|
@@ -474,7 +474,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
474
474
|
# spec.platform = Gem::Platform.local
|
475
475
|
|
476
476
|
def platform=(platform)
|
477
|
-
if @original_platform.nil?
|
477
|
+
if @original_platform.nil? ||
|
478
478
|
@original_platform == Gem::Platform::RUBY
|
479
479
|
@original_platform = platform
|
480
480
|
end
|
@@ -490,12 +490,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
490
490
|
# legacy constants
|
491
491
|
when nil, Gem::Platform::RUBY then
|
492
492
|
@new_platform = Gem::Platform::RUBY
|
493
|
-
when
|
494
|
-
@new_platform = Gem::Platform.new
|
495
|
-
when
|
496
|
-
@new_platform = Gem::Platform.new
|
497
|
-
when
|
498
|
-
@new_platform = Gem::Platform.new
|
493
|
+
when "mswin32" then # was Gem::Platform::WIN32
|
494
|
+
@new_platform = Gem::Platform.new "x86-mswin32"
|
495
|
+
when "i586-linux" then # was Gem::Platform::LINUX_586
|
496
|
+
@new_platform = Gem::Platform.new "x86-linux"
|
497
|
+
when "powerpc-darwin" then # was Gem::Platform::DARWIN
|
498
|
+
@new_platform = Gem::Platform.new "ppc-darwin"
|
499
499
|
else
|
500
500
|
@new_platform = Gem::Platform.new platform
|
501
501
|
end
|
@@ -1022,6 +1022,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1022
1022
|
Gem::Dependency.new(name, *requirements).to_spec
|
1023
1023
|
end
|
1024
1024
|
|
1025
|
+
##
|
1026
|
+
# Find the best specification matching a +full_name+.
|
1027
|
+
def self.find_by_full_name(full_name)
|
1028
|
+
stubs.find {|s| s.full_name == full_name }&.to_spec
|
1029
|
+
end
|
1030
|
+
|
1025
1031
|
##
|
1026
1032
|
# Return the best specification that contains the file matching +path+.
|
1027
1033
|
|
@@ -1042,12 +1048,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1042
1048
|
next if s.activated?
|
1043
1049
|
s.contains_requirable_file? path
|
1044
1050
|
end
|
1045
|
-
stub
|
1051
|
+
stub&.to_spec
|
1046
1052
|
end
|
1047
1053
|
|
1048
1054
|
def self.find_active_stub_by_path(path)
|
1049
1055
|
stub = @@active_stub_with_requirable_file[path] ||= (stubs.find do |s|
|
1050
|
-
s.activated?
|
1056
|
+
s.activated? && s.contains_requirable_file?(path)
|
1051
1057
|
end || NOT_FOUND)
|
1052
1058
|
stub.this
|
1053
1059
|
end
|
@@ -1150,7 +1156,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1150
1156
|
file = file.dup.tap(&Gem::UNTAINT)
|
1151
1157
|
return unless File.file?(file)
|
1152
1158
|
|
1153
|
-
code = Gem.open_file(file,
|
1159
|
+
code = Gem.open_file(file, "r:UTF-8:-", &:read)
|
1154
1160
|
|
1155
1161
|
code.tap(&Gem::UNTAINT)
|
1156
1162
|
|
@@ -1235,7 +1241,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1235
1241
|
latest_remote = remotes.sort.last
|
1236
1242
|
|
1237
1243
|
yield [local_spec, latest_remote] if
|
1238
|
-
latest_remote
|
1244
|
+
latest_remote && local_spec.version < latest_remote
|
1239
1245
|
end
|
1240
1246
|
|
1241
1247
|
nil
|
@@ -1266,8 +1272,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1266
1272
|
clear_load_cache
|
1267
1273
|
unresolved = unresolved_deps
|
1268
1274
|
unless unresolved.empty?
|
1269
|
-
|
1270
|
-
warn "#{w}: Unresolved or ambiguous specs during Gem::Specification.reset:"
|
1275
|
+
warn "WARN: Unresolved or ambiguous specs during Gem::Specification.reset:"
|
1271
1276
|
unresolved.values.each do |dep|
|
1272
1277
|
warn " #{dep}"
|
1273
1278
|
|
@@ -1277,7 +1282,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1277
1282
|
versions.each {|s| warn " - #{s.version}" }
|
1278
1283
|
end
|
1279
1284
|
end
|
1280
|
-
warn "
|
1285
|
+
warn "WARN: Clearing out unresolved specs. Try 'gem cleanup <gem>'"
|
1281
1286
|
warn "Please report a bug if this causes problems."
|
1282
1287
|
unresolved.clear
|
1283
1288
|
end
|
@@ -1295,6 +1300,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1295
1300
|
def self._load(str)
|
1296
1301
|
Gem.load_yaml
|
1297
1302
|
|
1303
|
+
yaml_set = false
|
1304
|
+
|
1298
1305
|
array = begin
|
1299
1306
|
Marshal.load str
|
1300
1307
|
rescue ArgumentError => e
|
@@ -1307,7 +1314,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1307
1314
|
message = e.message
|
1308
1315
|
raise unless message.include?("YAML::")
|
1309
1316
|
|
1310
|
-
|
1317
|
+
unless Object.const_defined?(:YAML)
|
1318
|
+
Object.const_set "YAML", Psych
|
1319
|
+
yaml_set = true
|
1320
|
+
end
|
1311
1321
|
|
1312
1322
|
if message.include?("YAML::Syck::")
|
1313
1323
|
YAML.const_set "Syck", YAML unless YAML.const_defined?(:Syck)
|
@@ -1318,6 +1328,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1318
1328
|
end
|
1319
1329
|
|
1320
1330
|
retry
|
1331
|
+
ensure
|
1332
|
+
Object.__send__(:remove_const, "YAML") if yaml_set
|
1321
1333
|
end
|
1322
1334
|
|
1323
1335
|
spec = Gem::Specification.new
|
@@ -1392,7 +1404,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1392
1404
|
@required_rubygems_version,
|
1393
1405
|
@original_platform,
|
1394
1406
|
@dependencies,
|
1395
|
-
|
1407
|
+
"", # rubyforge_project
|
1396
1408
|
@email,
|
1397
1409
|
@authors,
|
1398
1410
|
@description,
|
@@ -1558,7 +1570,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1558
1570
|
# Singular reader for #authors. Returns the first author in the list
|
1559
1571
|
|
1560
1572
|
def author
|
1561
|
-
val = authors
|
1573
|
+
(val = authors) && val.first
|
1562
1574
|
end
|
1563
1575
|
|
1564
1576
|
##
|
@@ -1608,9 +1620,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1608
1620
|
def build_extensions # :nodoc:
|
1609
1621
|
return if extensions.empty?
|
1610
1622
|
return if default_gem?
|
1623
|
+
# we need to fresh build when same name and version of default gems
|
1624
|
+
return if self.class.find_by_full_name(full_name)&.default_gem?
|
1611
1625
|
return if File.exist? gem_build_complete_path
|
1612
1626
|
return if !File.writable?(base_dir)
|
1613
|
-
return if !File.exist?(File.join(base_dir,
|
1627
|
+
return if !File.exist?(File.join(base_dir, "extensions"))
|
1614
1628
|
|
1615
1629
|
begin
|
1616
1630
|
# We need to require things in $LOAD_PATH without looking for the
|
@@ -1618,9 +1632,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1618
1632
|
unresolved_deps = Gem::Specification.unresolved_deps.dup
|
1619
1633
|
Gem::Specification.unresolved_deps.clear
|
1620
1634
|
|
1621
|
-
require_relative
|
1622
|
-
require_relative
|
1623
|
-
require_relative
|
1635
|
+
require_relative "config_file"
|
1636
|
+
require_relative "ext"
|
1637
|
+
require_relative "user_interaction"
|
1624
1638
|
|
1625
1639
|
ui = Gem::SilentUI.new
|
1626
1640
|
Gem::DefaultUserInteraction.use_ui ui do
|
@@ -1628,7 +1642,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1628
1642
|
builder.build_extensions
|
1629
1643
|
end
|
1630
1644
|
ensure
|
1631
|
-
ui
|
1645
|
+
ui&.close
|
1632
1646
|
Gem::Specification.unresolved_deps.replace unresolved_deps
|
1633
1647
|
end
|
1634
1648
|
end
|
@@ -1670,7 +1684,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1670
1684
|
conflicts = {}
|
1671
1685
|
self.runtime_dependencies.each do |dep|
|
1672
1686
|
spec = Gem.loaded_specs[dep.name]
|
1673
|
-
if spec
|
1687
|
+
if spec && !spec.satisfies_requirement?(dep)
|
1674
1688
|
(conflicts[spec] ||= []) << dep
|
1675
1689
|
end
|
1676
1690
|
end
|
@@ -1697,7 +1711,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1697
1711
|
self.dependencies.any? do |dep|
|
1698
1712
|
if dep.runtime?
|
1699
1713
|
spec = Gem.loaded_specs[dep.name]
|
1700
|
-
spec
|
1714
|
+
spec && !spec.satisfies_requirement?(dep)
|
1701
1715
|
else
|
1702
1716
|
false
|
1703
1717
|
end
|
@@ -1718,7 +1732,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1718
1732
|
|
1719
1733
|
DateLike = Object.new # :nodoc:
|
1720
1734
|
def DateLike.===(obj) # :nodoc:
|
1721
|
-
defined?(::Date)
|
1735
|
+
defined?(::Date) && Date === obj
|
1722
1736
|
end
|
1723
1737
|
|
1724
1738
|
DateTimeFormat = # :nodoc:
|
@@ -1758,9 +1772,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1758
1772
|
# executable now. See Gem.bin_path.
|
1759
1773
|
|
1760
1774
|
def default_executable # :nodoc:
|
1761
|
-
if defined?(@default_executable)
|
1775
|
+
if defined?(@default_executable) && @default_executable
|
1762
1776
|
result = @default_executable
|
1763
|
-
elsif @executables
|
1777
|
+
elsif @executables && @executables.size == 1
|
1764
1778
|
result = Array(@executables).first
|
1765
1779
|
else
|
1766
1780
|
result = nil
|
@@ -1839,7 +1853,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1839
1853
|
# spec.doc_dir 'ri' # => "/path/to/gem_repo/doc/a-1/ri"
|
1840
1854
|
|
1841
1855
|
def doc_dir(type = nil)
|
1842
|
-
@doc_dir ||= File.join base_dir,
|
1856
|
+
@doc_dir ||= File.join base_dir, "doc", full_name
|
1843
1857
|
|
1844
1858
|
if type
|
1845
1859
|
File.join @doc_dir, type
|
@@ -1851,17 +1865,17 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1851
1865
|
def encode_with(coder) # :nodoc:
|
1852
1866
|
mark_version
|
1853
1867
|
|
1854
|
-
coder.add
|
1855
|
-
coder.add
|
1868
|
+
coder.add "name", @name
|
1869
|
+
coder.add "version", @version
|
1856
1870
|
platform = case @original_platform
|
1857
|
-
when nil,
|
1858
|
-
|
1871
|
+
when nil, "" then
|
1872
|
+
"ruby"
|
1859
1873
|
when String then
|
1860
1874
|
@original_platform
|
1861
1875
|
else
|
1862
1876
|
@original_platform.to_s
|
1863
1877
|
end
|
1864
|
-
coder.add
|
1878
|
+
coder.add "platform", platform
|
1865
1879
|
|
1866
1880
|
attributes = @@attributes.map(&:to_s) - %w[name version platform]
|
1867
1881
|
attributes.each do |name|
|
@@ -1877,7 +1891,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1877
1891
|
# Singular accessor for #executables
|
1878
1892
|
|
1879
1893
|
def executable
|
1880
|
-
val = executables
|
1894
|
+
(val = executables) && val.first
|
1881
1895
|
end
|
1882
1896
|
|
1883
1897
|
##
|
@@ -1989,7 +2003,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1989
2003
|
# True if this gem has files in test_files
|
1990
2004
|
|
1991
2005
|
def has_unit_tests? # :nodoc:
|
1992
|
-
|
2006
|
+
!test_files.empty?
|
1993
2007
|
end
|
1994
2008
|
|
1995
2009
|
# :stopdoc:
|
@@ -2042,7 +2056,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2042
2056
|
self.name = name if name
|
2043
2057
|
self.version = version if version
|
2044
2058
|
|
2045
|
-
if platform = Gem.platforms.last
|
2059
|
+
if (platform = Gem.platforms.last) && platform != Gem::Platform::RUBY && platform != Gem::Platform.local
|
2046
2060
|
self.platform = platform
|
2047
2061
|
end
|
2048
2062
|
|
@@ -2157,8 +2171,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2157
2171
|
return
|
2158
2172
|
end
|
2159
2173
|
|
2160
|
-
if @specification_version > CURRENT_SPECIFICATION_VERSION
|
2161
|
-
|
2174
|
+
if @specification_version > CURRENT_SPECIFICATION_VERSION &&
|
2175
|
+
sym.to_s.end_with?("=")
|
2162
2176
|
warn "ignoring #{sym} loading #{full_name}" if $DEBUG
|
2163
2177
|
else
|
2164
2178
|
super
|
@@ -2184,7 +2198,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2184
2198
|
# file list.
|
2185
2199
|
|
2186
2200
|
def normalize
|
2187
|
-
if defined?(@extra_rdoc_files)
|
2201
|
+
if defined?(@extra_rdoc_files) && @extra_rdoc_files
|
2188
2202
|
@extra_rdoc_files.uniq!
|
2189
2203
|
@files ||= []
|
2190
2204
|
@files.concat(@extra_rdoc_files)
|
@@ -2209,7 +2223,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2209
2223
|
# platform. For use with legacy gems.
|
2210
2224
|
|
2211
2225
|
def original_name # :nodoc:
|
2212
|
-
if platform == Gem::Platform::RUBY
|
2226
|
+
if platform == Gem::Platform::RUBY || platform.nil?
|
2213
2227
|
"#{@name}-#{@version}"
|
2214
2228
|
else
|
2215
2229
|
"#{@name}-#{@version}-#{@original_platform}"
|
@@ -2227,11 +2241,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2227
2241
|
# The platform this gem runs on. See Gem::Platform for details.
|
2228
2242
|
|
2229
2243
|
def platform
|
2230
|
-
@new_platform ||= Gem::Platform::RUBY
|
2244
|
+
@new_platform ||= Gem::Platform::RUBY # rubocop:disable Naming/MemoizedInstanceVariableName
|
2231
2245
|
end
|
2232
2246
|
|
2233
2247
|
def pretty_print(q) # :nodoc:
|
2234
|
-
q.group 2,
|
2248
|
+
q.group 2, "Gem::Specification.new do |s|", "end" do
|
2235
2249
|
q.breakable
|
2236
2250
|
|
2237
2251
|
attributes = @@attributes - [:name, :version]
|
@@ -2242,8 +2256,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2242
2256
|
attributes.each do |attr_name|
|
2243
2257
|
current_value = self.send attr_name
|
2244
2258
|
current_value = current_value.sort if %i[files test_files].include? attr_name
|
2245
|
-
if current_value != default_value(attr_name)
|
2246
|
-
self.class.required_attribute?
|
2259
|
+
if current_value != default_value(attr_name) ||
|
2260
|
+
self.class.required_attribute?(attr_name)
|
2247
2261
|
|
2248
2262
|
q.text "s.#{attr_name} = "
|
2249
2263
|
|
@@ -2301,7 +2315,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2301
2315
|
# Singular accessor for #require_paths
|
2302
2316
|
|
2303
2317
|
def require_path
|
2304
|
-
val = require_paths
|
2318
|
+
(val = require_paths) && val.first
|
2305
2319
|
end
|
2306
2320
|
|
2307
2321
|
##
|
@@ -2326,7 +2340,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2326
2340
|
# Returns the full path to this spec's ri directory.
|
2327
2341
|
|
2328
2342
|
def ri_dir
|
2329
|
-
@ri_dir ||= File.join base_dir,
|
2343
|
+
@ri_dir ||= File.join base_dir, "ri", full_name
|
2330
2344
|
end
|
2331
2345
|
|
2332
2346
|
##
|
@@ -2336,13 +2350,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2336
2350
|
def ruby_code(obj)
|
2337
2351
|
case obj
|
2338
2352
|
when String then obj.dump + ".freeze"
|
2339
|
-
when Array then
|
2353
|
+
when Array then "[" + obj.map {|x| ruby_code x }.join(", ") + "]"
|
2340
2354
|
when Hash then
|
2341
2355
|
seg = obj.keys.sort.map {|k| "#{k.to_s.dump} => #{obj[k].to_s.dump}" }
|
2342
2356
|
"{ #{seg.join(', ')} }"
|
2343
2357
|
when Gem::Version then obj.to_s.dump
|
2344
|
-
when DateLike then obj.strftime(
|
2345
|
-
when Time then obj.strftime(
|
2358
|
+
when DateLike then obj.strftime("%Y-%m-%d").dump
|
2359
|
+
when Time then obj.strftime("%Y-%m-%d").dump
|
2346
2360
|
when Numeric then obj.inspect
|
2347
2361
|
when true, false, nil then obj.inspect
|
2348
2362
|
when Gem::Platform then "Gem::Platform.new(#{obj.to_a.inspect})"
|
@@ -2376,7 +2390,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2376
2390
|
|
2377
2391
|
def satisfies_requirement?(dependency)
|
2378
2392
|
return @name == dependency.name &&
|
2379
|
-
|
2393
|
+
dependency.requirement.satisfied_by?(@version)
|
2380
2394
|
end
|
2381
2395
|
|
2382
2396
|
##
|
@@ -2430,7 +2444,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2430
2444
|
# Singular accessor for #test_files
|
2431
2445
|
|
2432
2446
|
def test_file # :nodoc:
|
2433
|
-
val = test_files
|
2447
|
+
(val = test_files) && val.first
|
2434
2448
|
end
|
2435
2449
|
|
2436
2450
|
##
|
@@ -2452,7 +2466,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2452
2466
|
@test_files = [@test_suite_file].flatten
|
2453
2467
|
@test_suite_file = nil
|
2454
2468
|
end
|
2455
|
-
if defined?(@test_files)
|
2469
|
+
if defined?(@test_files) && @test_files
|
2456
2470
|
@test_files
|
2457
2471
|
else
|
2458
2472
|
@test_files = []
|
@@ -2476,13 +2490,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2476
2490
|
|
2477
2491
|
result << " s.name = #{ruby_code name}"
|
2478
2492
|
result << " s.version = #{ruby_code version}"
|
2479
|
-
unless platform.nil?
|
2493
|
+
unless platform.nil? || platform == Gem::Platform::RUBY
|
2480
2494
|
result << " s.platform = #{ruby_code original_platform}"
|
2481
2495
|
end
|
2482
2496
|
result << ""
|
2483
2497
|
result << " s.required_rubygems_version = #{ruby_code required_rubygems_version} if s.respond_to? :required_rubygems_version="
|
2484
2498
|
|
2485
|
-
if metadata
|
2499
|
+
if metadata && !metadata.empty?
|
2486
2500
|
result << " s.metadata = #{ruby_code metadata} if s.respond_to? :metadata="
|
2487
2501
|
end
|
2488
2502
|
result << " s.require_paths = #{ruby_code raw_require_paths}"
|
@@ -2520,25 +2534,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2520
2534
|
|
2521
2535
|
unless dependencies.empty?
|
2522
2536
|
result << nil
|
2523
|
-
result << "
|
2524
|
-
result << " s.specification_version = #{specification_version}"
|
2525
|
-
result << " end"
|
2537
|
+
result << " s.specification_version = #{specification_version}"
|
2526
2538
|
result << nil
|
2527
2539
|
|
2528
|
-
result << " if s.respond_to? :add_runtime_dependency then"
|
2529
|
-
|
2530
2540
|
dependencies.each do |dep|
|
2531
2541
|
req = dep.requirements_list.inspect
|
2532
2542
|
dep.instance_variable_set :@type, :runtime if dep.type.nil? # HACK
|
2533
|
-
result << "
|
2534
|
-
end
|
2535
|
-
|
2536
|
-
result << " else"
|
2537
|
-
dependencies.each do |dep|
|
2538
|
-
version_reqs_param = dep.requirements_list.inspect
|
2539
|
-
result << " s.add_dependency(%q<#{dep.name}>.freeze, #{version_reqs_param})"
|
2543
|
+
result << " s.add_#{dep.type}_dependency(%q<#{dep.name}>.freeze, #{req})"
|
2540
2544
|
end
|
2541
|
-
result << " end"
|
2542
2545
|
end
|
2543
2546
|
|
2544
2547
|
result << "end"
|
@@ -2575,14 +2578,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2575
2578
|
# back, we have to check again here to make sure that our
|
2576
2579
|
# psych code was properly loaded, and load it if not.
|
2577
2580
|
unless Gem.const_defined?(:NoAliasYAMLTree)
|
2578
|
-
require_relative
|
2581
|
+
require_relative "psych_tree"
|
2579
2582
|
end
|
2580
2583
|
|
2581
2584
|
builder = Gem::NoAliasYAMLTree.create
|
2582
2585
|
builder << self
|
2583
2586
|
ast = builder.tree
|
2584
2587
|
|
2585
|
-
require
|
2588
|
+
require "stringio"
|
2586
2589
|
io = StringIO.new
|
2587
2590
|
io.set_encoding Encoding::UTF_8
|
2588
2591
|
|
@@ -2666,10 +2669,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2666
2669
|
|
2667
2670
|
def version=(version)
|
2668
2671
|
@version = Gem::Version.create(version)
|
2672
|
+
return if @version.nil?
|
2673
|
+
|
2669
2674
|
# skip to set required_ruby_version when pre-released rubygems.
|
2670
2675
|
# It caused to raise CircularDependencyError
|
2671
2676
|
if @version.prerelease? && (@name.nil? || @name.strip != "rubygems")
|
2672
|
-
self.required_rubygems_version =
|
2677
|
+
self.required_rubygems_version = "> 1.3.1"
|
2673
2678
|
end
|
2674
2679
|
invalidate_memoized_attributes
|
2675
2680
|
|
@@ -2715,6 +2720,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2715
2720
|
end
|
2716
2721
|
|
2717
2722
|
@installed_by_version ||= nil
|
2723
|
+
|
2724
|
+
nil
|
2718
2725
|
end
|
2719
2726
|
|
2720
2727
|
def flatten_require_paths # :nodoc:
|