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
@@ -1,11 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "pathname"
|
4
|
-
|
5
3
|
require "rubygems" unless defined?(Gem)
|
6
4
|
|
7
|
-
require "rubygems/specification"
|
8
|
-
|
9
5
|
# We can't let `Gem::Source` be autoloaded in the `Gem::Specification#source`
|
10
6
|
# redefinition below, so we need to load it upfront. The reason is that if
|
11
7
|
# Bundler monkeypatches are loaded before RubyGems activates an executable (for
|
@@ -17,38 +13,199 @@ require "rubygems/specification"
|
|
17
13
|
# `Gem::Source` from the redefined `Gem::Specification#source`.
|
18
14
|
require "rubygems/source"
|
19
15
|
|
20
|
-
require_relative "match_metadata"
|
21
|
-
require_relative "force_platform"
|
22
|
-
require_relative "match_platform"
|
23
|
-
|
24
|
-
# Cherry-pick fixes to `Gem.ruby_version` to be useful for modern Bundler
|
25
|
-
# versions and ignore patchlevels
|
26
|
-
# (https://github.com/rubygems/rubygems/pull/5472,
|
27
|
-
# https://github.com/rubygems/rubygems/pull/5486). May be removed once RubyGems
|
28
|
-
# 3.3.12 support is dropped.
|
29
|
-
unless Gem.ruby_version.to_s == RUBY_VERSION || RUBY_PATCHLEVEL == -1
|
30
|
-
Gem.instance_variable_set(:@ruby_version, Gem::Version.new(RUBY_VERSION))
|
31
|
-
end
|
32
|
-
|
33
16
|
module Gem
|
17
|
+
# Can be removed once RubyGems 3.5.11 support is dropped
|
18
|
+
unless Gem.respond_to?(:freebsd_platform?)
|
19
|
+
def self.freebsd_platform?
|
20
|
+
RbConfig::CONFIG["host_os"].to_s.include?("bsd")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Can be removed once RubyGems 3.5.18 support is dropped
|
25
|
+
unless Gem.respond_to?(:open_file_with_lock)
|
26
|
+
class << self
|
27
|
+
remove_method :open_file_with_flock if Gem.respond_to?(:open_file_with_flock)
|
28
|
+
|
29
|
+
def open_file_with_flock(path, &block)
|
30
|
+
# read-write mode is used rather than read-only in order to support NFS
|
31
|
+
mode = IO::RDWR | IO::APPEND | IO::CREAT | IO::BINARY
|
32
|
+
mode |= IO::SHARE_DELETE if IO.const_defined?(:SHARE_DELETE)
|
33
|
+
|
34
|
+
File.open(path, mode) do |io|
|
35
|
+
begin
|
36
|
+
io.flock(File::LOCK_EX)
|
37
|
+
rescue Errno::ENOSYS, Errno::ENOTSUP
|
38
|
+
end
|
39
|
+
yield io
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def open_file_with_lock(path, &block)
|
44
|
+
file_lock = "#{path}.lock"
|
45
|
+
open_file_with_flock(file_lock, &block)
|
46
|
+
ensure
|
47
|
+
FileUtils.rm_f file_lock
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
require "rubygems/platform"
|
53
|
+
|
54
|
+
class Platform
|
55
|
+
# Can be removed once RubyGems 3.6.9 support is dropped
|
56
|
+
unless respond_to?(:generic)
|
57
|
+
JAVA = Gem::Platform.new("java") # :nodoc:
|
58
|
+
MSWIN = Gem::Platform.new("mswin32") # :nodoc:
|
59
|
+
MSWIN64 = Gem::Platform.new("mswin64") # :nodoc:
|
60
|
+
MINGW = Gem::Platform.new("x86-mingw32") # :nodoc:
|
61
|
+
X64_MINGW_LEGACY = Gem::Platform.new("x64-mingw32") # :nodoc:
|
62
|
+
X64_MINGW = Gem::Platform.new("x64-mingw-ucrt") # :nodoc:
|
63
|
+
UNIVERSAL_MINGW = Gem::Platform.new("universal-mingw") # :nodoc:
|
64
|
+
WINDOWS = [MSWIN, MSWIN64, UNIVERSAL_MINGW].freeze # :nodoc:
|
65
|
+
X64_LINUX = Gem::Platform.new("x86_64-linux") # :nodoc:
|
66
|
+
X64_LINUX_MUSL = Gem::Platform.new("x86_64-linux-musl") # :nodoc:
|
67
|
+
|
68
|
+
GENERICS = [JAVA, *WINDOWS].freeze # :nodoc:
|
69
|
+
private_constant :GENERICS
|
70
|
+
|
71
|
+
GENERIC_CACHE = GENERICS.each_with_object({}) {|g, h| h[g] = g } # :nodoc:
|
72
|
+
private_constant :GENERIC_CACHE
|
73
|
+
|
74
|
+
class << self
|
75
|
+
##
|
76
|
+
# Returns the generic platform for the given platform.
|
77
|
+
|
78
|
+
def generic(platform)
|
79
|
+
return Gem::Platform::RUBY if platform.nil? || platform == Gem::Platform::RUBY
|
80
|
+
|
81
|
+
GENERIC_CACHE[platform] ||= begin
|
82
|
+
found = GENERICS.find do |match|
|
83
|
+
platform === match
|
84
|
+
end
|
85
|
+
found || Gem::Platform::RUBY
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
##
|
90
|
+
# Returns the platform specificity match for the given spec platform and user platform.
|
91
|
+
|
92
|
+
def platform_specificity_match(spec_platform, user_platform)
|
93
|
+
return -1 if spec_platform == user_platform
|
94
|
+
return 1_000_000 if spec_platform.nil? || spec_platform == Gem::Platform::RUBY || user_platform == Gem::Platform::RUBY
|
95
|
+
|
96
|
+
os_match(spec_platform, user_platform) +
|
97
|
+
cpu_match(spec_platform, user_platform) * 10 +
|
98
|
+
version_match(spec_platform, user_platform) * 100
|
99
|
+
end
|
100
|
+
|
101
|
+
##
|
102
|
+
# Sorts and filters the best platform match for the given matching specs and platform.
|
103
|
+
|
104
|
+
def sort_and_filter_best_platform_match(matching, platform)
|
105
|
+
return matching if matching.one?
|
106
|
+
|
107
|
+
exact = matching.select {|spec| spec.platform == platform }
|
108
|
+
return exact if exact.any?
|
109
|
+
|
110
|
+
sorted_matching = sort_best_platform_match(matching, platform)
|
111
|
+
exemplary_spec = sorted_matching.first
|
112
|
+
|
113
|
+
sorted_matching.take_while {|spec| same_specificity?(platform, spec, exemplary_spec) && same_deps?(spec, exemplary_spec) }
|
114
|
+
end
|
115
|
+
|
116
|
+
##
|
117
|
+
# Sorts the best platform match for the given matching specs and platform.
|
118
|
+
|
119
|
+
def sort_best_platform_match(matching, platform)
|
120
|
+
matching.sort_by.with_index do |spec, i|
|
121
|
+
[
|
122
|
+
platform_specificity_match(spec.platform, platform),
|
123
|
+
i, # for stable sort
|
124
|
+
]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
private
|
129
|
+
|
130
|
+
def same_specificity?(platform, spec, exemplary_spec)
|
131
|
+
platform_specificity_match(spec.platform, platform) == platform_specificity_match(exemplary_spec.platform, platform)
|
132
|
+
end
|
133
|
+
|
134
|
+
def same_deps?(spec, exemplary_spec)
|
135
|
+
spec.required_ruby_version == exemplary_spec.required_ruby_version &&
|
136
|
+
spec.required_rubygems_version == exemplary_spec.required_rubygems_version &&
|
137
|
+
spec.dependencies.sort == exemplary_spec.dependencies.sort
|
138
|
+
end
|
139
|
+
|
140
|
+
def os_match(spec_platform, user_platform)
|
141
|
+
if spec_platform.os == user_platform.os
|
142
|
+
0
|
143
|
+
else
|
144
|
+
1
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def cpu_match(spec_platform, user_platform)
|
149
|
+
if spec_platform.cpu == user_platform.cpu
|
150
|
+
0
|
151
|
+
elsif spec_platform.cpu == "arm" && user_platform.cpu.to_s.start_with?("arm")
|
152
|
+
0
|
153
|
+
elsif spec_platform.cpu.nil? || spec_platform.cpu == "universal"
|
154
|
+
1
|
155
|
+
else
|
156
|
+
2
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def version_match(spec_platform, user_platform)
|
161
|
+
if spec_platform.version == user_platform.version
|
162
|
+
0
|
163
|
+
elsif spec_platform.version.nil?
|
164
|
+
1
|
165
|
+
else
|
166
|
+
2
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
require "rubygems/specification"
|
175
|
+
|
176
|
+
# Can be removed once RubyGems 3.5.14 support is dropped
|
177
|
+
VALIDATES_FOR_RESOLUTION = Specification.new.respond_to?(:validate_for_resolution).freeze
|
178
|
+
|
34
179
|
class Specification
|
180
|
+
# Can be removed once RubyGems 3.5.15 support is dropped
|
181
|
+
correct_array_attributes = @@default_value.select {|_k,v| v.is_a?(Array) }.keys
|
182
|
+
unless @@array_attributes == correct_array_attributes
|
183
|
+
@@array_attributes = correct_array_attributes # rubocop:disable Style/ClassVars
|
184
|
+
end
|
185
|
+
|
186
|
+
require_relative "match_metadata"
|
187
|
+
require_relative "match_platform"
|
188
|
+
|
35
189
|
include ::Bundler::MatchMetadata
|
36
|
-
include ::Bundler::MatchPlatform
|
37
190
|
|
38
|
-
attr_accessor :remote, :
|
191
|
+
attr_accessor :remote, :relative_loaded_from
|
39
192
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
193
|
+
module AllowSettingSource
|
194
|
+
attr_writer :source
|
195
|
+
|
196
|
+
def source
|
197
|
+
(defined?(@source) && @source) || super
|
198
|
+
end
|
44
199
|
end
|
45
200
|
|
201
|
+
prepend AllowSettingSource
|
202
|
+
|
46
203
|
alias_method :rg_full_gem_path, :full_gem_path
|
47
204
|
alias_method :rg_loaded_from, :loaded_from
|
48
205
|
|
49
206
|
def full_gem_path
|
50
207
|
if source.respond_to?(:root)
|
51
|
-
|
208
|
+
File.expand_path(File.dirname(loaded_from), source.root)
|
52
209
|
else
|
53
210
|
rg_full_gem_path
|
54
211
|
end
|
@@ -78,26 +235,15 @@ module Gem
|
|
78
235
|
end
|
79
236
|
end
|
80
237
|
|
81
|
-
|
238
|
+
# Can be removed once RubyGems 3.5.21 support is dropped
|
239
|
+
remove_method :gem_dir if method_defined?(:gem_dir, false)
|
240
|
+
|
82
241
|
def gem_dir
|
83
242
|
full_gem_path
|
84
243
|
end
|
85
244
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
alias_method :rg_required_ruby_version=, :required_ruby_version=
|
90
|
-
def required_ruby_version=(req)
|
91
|
-
self.rg_required_ruby_version = req
|
92
|
-
|
93
|
-
@required_ruby_version.requirements.map! do |op, v|
|
94
|
-
if v >= LATEST_RUBY_WITHOUT_PATCH_VERSIONS && v.release.segments.size == 4
|
95
|
-
[op == "~>" ? "=" : op, Gem::Version.new(v.segments.tap {|s| s.delete_at(3) }.join("."))]
|
96
|
-
else
|
97
|
-
[op, v]
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
245
|
+
def insecurely_materialized?
|
246
|
+
false
|
101
247
|
end
|
102
248
|
|
103
249
|
def groups
|
@@ -123,10 +269,32 @@ module Gem
|
|
123
269
|
dependencies - development_dependencies
|
124
270
|
end
|
125
271
|
|
126
|
-
def
|
272
|
+
def installation_missing?
|
127
273
|
!default_gem? && !File.directory?(full_gem_path)
|
128
274
|
end
|
129
275
|
|
276
|
+
def lock_name
|
277
|
+
@lock_name ||= name_tuple.lock_name
|
278
|
+
end
|
279
|
+
|
280
|
+
unless VALIDATES_FOR_RESOLUTION
|
281
|
+
def validate_for_resolution
|
282
|
+
SpecificationPolicy.new(self).validate_for_resolution
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
if Gem.rubygems_version < Gem::Version.new("3.5.22")
|
287
|
+
module FixPathSourceMissingExtensions
|
288
|
+
def missing_extensions?
|
289
|
+
return false if %w[Bundler::Source::Path Bundler::Source::Gemspec].include?(source.class.name)
|
290
|
+
|
291
|
+
super
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
prepend FixPathSourceMissingExtensions
|
296
|
+
end
|
297
|
+
|
130
298
|
private
|
131
299
|
|
132
300
|
def dependencies_to_gemfile(dependencies, group = nil)
|
@@ -146,29 +314,47 @@ module Gem
|
|
146
314
|
end
|
147
315
|
end
|
148
316
|
|
317
|
+
unless VALIDATES_FOR_RESOLUTION
|
318
|
+
class SpecificationPolicy
|
319
|
+
def validate_for_resolution
|
320
|
+
validate_required!
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
module BetterPermissionError
|
326
|
+
def data
|
327
|
+
super
|
328
|
+
rescue Errno::EACCES
|
329
|
+
raise Bundler::PermissionError.new(loaded_from, :read)
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
require "rubygems/stub_specification"
|
334
|
+
|
335
|
+
class StubSpecification
|
336
|
+
prepend BetterPermissionError
|
337
|
+
end
|
338
|
+
|
149
339
|
class Dependency
|
340
|
+
require_relative "force_platform"
|
341
|
+
|
150
342
|
include ::Bundler::ForcePlatform
|
151
343
|
|
344
|
+
attr_reader :force_ruby_platform
|
345
|
+
|
152
346
|
attr_accessor :source, :groups
|
153
347
|
|
154
348
|
alias_method :eql?, :==
|
155
349
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
def encode_with(coder)
|
163
|
-
to_yaml_properties.each do |ivar|
|
164
|
-
coder[ivar.to_s.sub(/^@/, "")] = instance_variable_get(ivar)
|
350
|
+
unless method_defined?(:encode_with, false)
|
351
|
+
def encode_with(coder)
|
352
|
+
[:@name, :@requirement, :@type, :@prerelease, :@version_requirements].each do |ivar|
|
353
|
+
coder[ivar.to_s.sub(/^@/, "")] = instance_variable_get(ivar)
|
354
|
+
end
|
165
355
|
end
|
166
356
|
end
|
167
357
|
|
168
|
-
def to_yaml_properties
|
169
|
-
instance_variables.reject {|p| ["@source", "@groups"].include?(p.to_s) }
|
170
|
-
end
|
171
|
-
|
172
358
|
def to_lock
|
173
359
|
out = String.new(" #{name}")
|
174
360
|
unless requirement.none?
|
@@ -177,106 +363,15 @@ module Gem
|
|
177
363
|
end
|
178
364
|
out
|
179
365
|
end
|
180
|
-
end
|
181
366
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
def hash
|
187
|
-
if requirements.any? {|r| r.first == "~>" }
|
188
|
-
requirements.map {|r| r.first == "~>" ? [r[0], r[1].to_s] : r }.sort.hash
|
189
|
-
else
|
190
|
-
super
|
191
|
-
end
|
367
|
+
if Gem.rubygems_version < Gem::Version.new("3.5.22")
|
368
|
+
module FilterIgnoredSpecs
|
369
|
+
def matching_specs(platform_only = false)
|
370
|
+
super.reject(&:ignored?)
|
192
371
|
end
|
193
372
|
end
|
194
373
|
|
195
|
-
prepend
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
require "rubygems/platform"
|
200
|
-
|
201
|
-
class Platform
|
202
|
-
JAVA = Gem::Platform.new("java")
|
203
|
-
MSWIN = Gem::Platform.new("mswin32")
|
204
|
-
MSWIN64 = Gem::Platform.new("mswin64")
|
205
|
-
MINGW = Gem::Platform.new("x86-mingw32")
|
206
|
-
X64_MINGW = [Gem::Platform.new("x64-mingw32"),
|
207
|
-
Gem::Platform.new("x64-mingw-ucrt")].freeze
|
208
|
-
WINDOWS = [MSWIN, MSWIN64, MINGW, X64_MINGW].flatten.freeze
|
209
|
-
X64_LINUX = Gem::Platform.new("x86_64-linux")
|
210
|
-
X64_LINUX_MUSL = Gem::Platform.new("x86_64-linux-musl")
|
211
|
-
|
212
|
-
if X64_LINUX === X64_LINUX_MUSL
|
213
|
-
remove_method :===
|
214
|
-
|
215
|
-
def ===(other)
|
216
|
-
return nil unless Gem::Platform === other
|
217
|
-
|
218
|
-
# universal-mingw32 matches x64-mingw-ucrt
|
219
|
-
return true if (@cpu == "universal" || other.cpu == "universal") &&
|
220
|
-
@os.start_with?("mingw") && other.os.start_with?("mingw")
|
221
|
-
|
222
|
-
# cpu
|
223
|
-
([nil,"universal"].include?(@cpu) || [nil, "universal"].include?(other.cpu) || @cpu == other.cpu ||
|
224
|
-
(@cpu == "arm" && other.cpu.start_with?("arm"))) &&
|
225
|
-
|
226
|
-
# os
|
227
|
-
@os == other.os &&
|
228
|
-
|
229
|
-
# version
|
230
|
-
(
|
231
|
-
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
232
|
-
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || ["musl#{@version}", "musleabi#{@version}", "musleabihf#{@version}"].include?(other.version))) ||
|
233
|
-
@version == other.version
|
234
|
-
)
|
235
|
-
end
|
236
|
-
|
237
|
-
# This is a copy of RubyGems 3.3.23 or higher `normalized_linux_method`.
|
238
|
-
# Once only 3.3.23 is supported, we can use the method in RubyGems.
|
239
|
-
def normalized_linux_version_ext
|
240
|
-
return nil unless @version
|
241
|
-
|
242
|
-
without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi(hf)?\Z/, "")
|
243
|
-
return nil if without_gnu_nor_abi_modifiers.empty?
|
244
|
-
|
245
|
-
without_gnu_nor_abi_modifiers
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
if RUBY_ENGINE == "truffleruby" && !defined?(REUSE_AS_BINARY_ON_TRUFFLERUBY)
|
250
|
-
REUSE_AS_BINARY_ON_TRUFFLERUBY = %w[libv8 libv8-node sorbet-static].freeze
|
251
|
-
end
|
252
|
-
end
|
253
|
-
|
254
|
-
Platform.singleton_class.module_eval do
|
255
|
-
unless Platform.singleton_methods.include?(:match_spec?)
|
256
|
-
def match_spec?(spec)
|
257
|
-
match_gem?(spec.platform, spec.name)
|
258
|
-
end
|
259
|
-
|
260
|
-
def match_gem?(platform, gem_name)
|
261
|
-
match_platforms?(platform, Gem.platforms)
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
match_platforms_defined = Gem::Platform.respond_to?(:match_platforms?, true)
|
266
|
-
|
267
|
-
if !match_platforms_defined || Gem::Platform.send(:match_platforms?, Gem::Platform::X64_LINUX_MUSL, [Gem::Platform::X64_LINUX])
|
268
|
-
|
269
|
-
private
|
270
|
-
|
271
|
-
remove_method :match_platforms? if match_platforms_defined
|
272
|
-
|
273
|
-
def match_platforms?(platform, platforms)
|
274
|
-
platforms.any? do |local_platform|
|
275
|
-
platform.nil? ||
|
276
|
-
local_platform == platform ||
|
277
|
-
(local_platform != Gem::Platform::RUBY && platform =~ local_platform)
|
278
|
-
end
|
279
|
-
end
|
374
|
+
prepend FilterIgnoredSpecs
|
280
375
|
end
|
281
376
|
end
|
282
377
|
|
@@ -299,6 +394,20 @@ module Gem
|
|
299
394
|
end
|
300
395
|
end
|
301
396
|
end
|
397
|
+
|
398
|
+
# Can be removed once RubyGems 3.5.22 support is dropped
|
399
|
+
unless new.respond_to?(:ignored?)
|
400
|
+
def ignored?
|
401
|
+
return @ignored unless @ignored.nil?
|
402
|
+
|
403
|
+
@ignored = missing_extensions?
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
# Can be removed once RubyGems 3.6.9 support is dropped
|
408
|
+
unless new.respond_to?(:installable_on_platform?)
|
409
|
+
include(::Bundler::MatchPlatform)
|
410
|
+
end
|
302
411
|
end
|
303
412
|
|
304
413
|
require "rubygems/name_tuple"
|
@@ -325,4 +434,48 @@ module Gem
|
|
325
434
|
end
|
326
435
|
end
|
327
436
|
end
|
437
|
+
|
438
|
+
unless Gem.rubygems_version >= Gem::Version.new("3.5.19")
|
439
|
+
class Resolver::ActivationRequest
|
440
|
+
remove_method :installed?
|
441
|
+
|
442
|
+
def installed?
|
443
|
+
case @spec
|
444
|
+
when Gem::Resolver::VendorSpecification then
|
445
|
+
true
|
446
|
+
else
|
447
|
+
this_spec = full_spec
|
448
|
+
|
449
|
+
Gem::Specification.any? do |s|
|
450
|
+
s == this_spec && s.base_dir == this_spec.base_dir
|
451
|
+
end
|
452
|
+
end
|
453
|
+
end
|
454
|
+
end
|
455
|
+
end
|
456
|
+
|
457
|
+
unless Gem.rubygems_version >= Gem::Version.new("3.6.7")
|
458
|
+
module UnfreezeCompactIndexParsedResponse
|
459
|
+
def parse(line)
|
460
|
+
version, platform, dependencies, requirements = super
|
461
|
+
[version, platform, dependencies.frozen? ? dependencies.dup : dependencies, requirements.frozen? ? requirements.dup : requirements]
|
462
|
+
end
|
463
|
+
end
|
464
|
+
|
465
|
+
Resolver::APISet::GemParser.prepend(UnfreezeCompactIndexParsedResponse)
|
466
|
+
end
|
467
|
+
|
468
|
+
if Gem.rubygems_version < Gem::Version.new("3.6.0")
|
469
|
+
class Package; end
|
470
|
+
require "rubygems/package/tar_reader"
|
471
|
+
require "rubygems/package/tar_reader/entry"
|
472
|
+
|
473
|
+
module FixFullNameEncoding
|
474
|
+
def full_name
|
475
|
+
super.force_encoding(Encoding::UTF_8)
|
476
|
+
end
|
477
|
+
end
|
478
|
+
|
479
|
+
Package::TarReader::Entry.prepend(FixFullNameEncoding)
|
480
|
+
end
|
328
481
|
end
|
@@ -23,13 +23,18 @@ module Bundler
|
|
23
23
|
FileUtils.mkdir_p gem_dir, mode: 0o755
|
24
24
|
end
|
25
25
|
|
26
|
-
|
26
|
+
SharedHelpers.filesystem_access(gem_dir, :write) do
|
27
|
+
extract_files
|
28
|
+
end
|
27
29
|
|
28
30
|
build_extensions if spec.extensions.any?
|
29
31
|
write_build_info_file
|
30
32
|
run_post_build_hooks
|
31
33
|
|
32
|
-
|
34
|
+
SharedHelpers.filesystem_access(bin_dir, :write) do
|
35
|
+
generate_bin
|
36
|
+
end
|
37
|
+
|
33
38
|
generate_plugins
|
34
39
|
|
35
40
|
write_spec
|
@@ -45,7 +50,17 @@ module Bundler
|
|
45
50
|
spec
|
46
51
|
end
|
47
52
|
|
48
|
-
|
53
|
+
if Bundler.rubygems.provides?("< 3.5")
|
54
|
+
def pre_install_checks
|
55
|
+
super
|
56
|
+
rescue Gem::FilePermissionError
|
57
|
+
# Ignore permission checks in RubyGems. Instead, go on, and try to write
|
58
|
+
# for real. We properly handle permission errors when they happen.
|
59
|
+
nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def ensure_writable_dir(dir)
|
49
64
|
super
|
50
65
|
rescue Gem::FilePermissionError
|
51
66
|
# Ignore permission checks in RubyGems. Instead, go on, and try to write
|
@@ -68,6 +83,26 @@ module Bundler
|
|
68
83
|
end
|
69
84
|
end
|
70
85
|
|
86
|
+
if Bundler.rubygems.provides?("< 3.5.19")
|
87
|
+
def generate_bin_script(filename, bindir)
|
88
|
+
bin_script_path = File.join bindir, formatted_program_filename(filename)
|
89
|
+
|
90
|
+
Gem.open_file_with_lock(bin_script_path) do
|
91
|
+
require "fileutils"
|
92
|
+
FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
|
93
|
+
|
94
|
+
File.open(bin_script_path, "wb", 0o755) do |file|
|
95
|
+
file.write app_script_text(filename)
|
96
|
+
file.chmod(options[:prog_mode] || 0o755)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
verbose bin_script_path
|
101
|
+
|
102
|
+
generate_windows_script filename, bindir
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
71
106
|
def build_extensions
|
72
107
|
extension_cache_path = options[:bundler_extension_cache_path]
|
73
108
|
extension_dir = spec.extension_dir
|
@@ -112,17 +147,17 @@ module Bundler
|
|
112
147
|
SharedHelpers.filesystem_access(extension_dir, :create) do
|
113
148
|
FileUtils.mkdir_p extension_dir
|
114
149
|
end
|
115
|
-
require "shellwords" unless Bundler.rubygems.provides?(">= 3.2.25")
|
116
150
|
end
|
117
151
|
|
118
152
|
def strict_rm_rf(dir)
|
119
153
|
return unless File.exist?(dir)
|
154
|
+
return if Dir.empty?(dir)
|
120
155
|
|
121
156
|
parent = File.dirname(dir)
|
122
157
|
parent_st = File.stat(parent)
|
123
158
|
|
124
159
|
if parent_st.world_writable? && !parent_st.sticky?
|
125
|
-
raise InsecureInstallPathError.new(
|
160
|
+
raise InsecureInstallPathError.new(spec.full_name, dir)
|
126
161
|
end
|
127
162
|
|
128
163
|
begin
|