rubygems-update 3.5.5 → 3.6.9
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 +606 -1
- data/CODE_OF_CONDUCT.md +79 -28
- data/Manifest.txt +114 -73
- data/README.md +16 -11
- data/bundler/CHANGELOG.md +506 -6
- data/bundler/README.md +2 -2
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- 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/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 +13 -17
- 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 +14 -5
- 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 +22 -22
- 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.rb +51 -107
- 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 +2 -12
- data/bundler/lib/bundler/compact_index_client.rb +51 -80
- data/bundler/lib/bundler/constants.rb +8 -1
- data/bundler/lib/bundler/current_ruby.rb +23 -33
- data/bundler/lib/bundler/definition.rb +485 -313
- data/bundler/lib/bundler/dependency.rb +92 -46
- data/bundler/lib/bundler/dsl.rb +135 -101
- 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 +3 -6
- data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +14 -7
- data/bundler/lib/bundler/force_platform.rb +0 -2
- data/bundler/lib/bundler/friendly_errors.rb +1 -1
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +36 -19
- data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
- 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 +17 -41
- data/bundler/lib/bundler/lazy_specification.rb +117 -46
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +18 -7
- 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 +11 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +12 -15
- 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 +4 -4
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
- 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 +25 -7
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +38 -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 +12 -4
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-install.1 +19 -16
- data/bundler/lib/bundler/man/bundle-install.1.ronn +24 -20
- 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 +15 -9
- data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
- 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/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 -50
- 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 +282 -125
- data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
- data/bundler/lib/bundler/rubygems_integration.rb +29 -67
- data/bundler/lib/bundler/runtime.rb +48 -35
- data/bundler/lib/bundler/self_manager.rb +27 -7
- data/bundler/lib/bundler/settings.rb +32 -21
- data/bundler/lib/bundler/setup.rb +6 -0
- data/bundler/lib/bundler/shared_helpers.rb +39 -21
- data/bundler/lib/bundler/source/gemspec.rb +1 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +23 -6
- 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 +7 -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 +53 -7
- data/bundler/lib/bundler/spec_set.rb +187 -88
- data/bundler/lib/bundler/stub_specification.rb +29 -2
- 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 +15 -15
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/ui/shell.rb +24 -2
- 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/lib/net/http/persistent.rb +68 -30
- 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 +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +12 -7
- data/bundler/lib/bundler.rb +89 -51
- data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +10 -14
- data/{POLICIES.md → doc/rubygems/POLICIES.md} +81 -12
- data/exe/update_rubygems +1 -1
- data/lib/rubygems/basic_specification.rb +43 -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 +30 -17
- 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 +11 -16
- 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 +10 -17
- data/lib/rubygems/config_file.rb +45 -16
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +6 -6
- 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 +12 -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 +1 -1
- 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 +31 -40
- 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 +7 -5
- 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 +3 -4
- data/lib/rubygems/request.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set.rb +1 -1
- 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 +0 -28
- 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/spec_specification.rb +7 -0
- data/lib/rubygems/resolver.rb +7 -7
- data/lib/rubygems/s3_uri_signer.rb +3 -3
- 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 +10 -8
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +47 -15
- data/lib/rubygems/specification.rb +107 -180
- 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/util/licenses.rb +97 -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 +135 -51
- 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 +117 -49
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/.document +1 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
- data/lib/rubygems/vendor/tsort/.document +1 -0
- data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
- data/lib/rubygems/vendor/uri/.document +1 -0
- 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 +82 -47
- data/rubygems-update.gemspec +11 -6
- data/setup.rb +1 -1
- metadata +131 -86
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
- data/lib/rubygems/net/http.rb +0 -3
- 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/LICENSE.txt +0 -22
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolv/LICENSE.txt +0 -22
- 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/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/timeout.rb +0 -3
- 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/{lib/rubygems/net-http → bundler/lib/bundler/vendor/securerandom}/.document +0 -0
- /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
- /data/lib/rubygems/{net-protocol → vendor/molinillo}/.document +0 -0
- /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
- /data/lib/rubygems/{optparse → vendor/net-http}/.document +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/lib/rubygems/{resolv → vendor/net-protocol}/.document +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/{resolver/molinillo → vendor/optparse}/.document +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/lib/rubygems/{timeout → vendor/resolv}/.document +0 -0
- /data/lib/rubygems/{tsort → vendor/securerandom}/.document +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,10 +13,6 @@ 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
16
|
# Cherry-pick fixes to `Gem.ruby_version` to be useful for modern Bundler
|
|
25
17
|
# versions and ignore patchlevels
|
|
26
18
|
# (https://github.com/rubygems/rubygems/pull/5472,
|
|
@@ -31,24 +23,161 @@ unless Gem.ruby_version.to_s == RUBY_VERSION || RUBY_PATCHLEVEL == -1
|
|
|
31
23
|
end
|
|
32
24
|
|
|
33
25
|
module Gem
|
|
26
|
+
# Can be removed once RubyGems 3.5.11 support is dropped
|
|
27
|
+
unless Gem.respond_to?(:freebsd_platform?)
|
|
28
|
+
def self.freebsd_platform?
|
|
29
|
+
RbConfig::CONFIG["host_os"].to_s.include?("bsd")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Can be removed once RubyGems 3.5.18 support is dropped
|
|
34
|
+
unless Gem.respond_to?(:open_file_with_lock)
|
|
35
|
+
class << self
|
|
36
|
+
remove_method :open_file_with_flock if Gem.respond_to?(:open_file_with_flock)
|
|
37
|
+
|
|
38
|
+
def open_file_with_flock(path, &block)
|
|
39
|
+
# read-write mode is used rather than read-only in order to support NFS
|
|
40
|
+
mode = IO::RDWR | IO::APPEND | IO::CREAT | IO::BINARY
|
|
41
|
+
mode |= IO::SHARE_DELETE if IO.const_defined?(:SHARE_DELETE)
|
|
42
|
+
|
|
43
|
+
File.open(path, mode) do |io|
|
|
44
|
+
begin
|
|
45
|
+
io.flock(File::LOCK_EX)
|
|
46
|
+
rescue Errno::ENOSYS, Errno::ENOTSUP
|
|
47
|
+
end
|
|
48
|
+
yield io
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def open_file_with_lock(path, &block)
|
|
53
|
+
file_lock = "#{path}.lock"
|
|
54
|
+
open_file_with_flock(file_lock, &block)
|
|
55
|
+
ensure
|
|
56
|
+
FileUtils.rm_f file_lock
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
require "rubygems/platform"
|
|
62
|
+
|
|
63
|
+
class Platform
|
|
64
|
+
JAVA = Gem::Platform.new("java")
|
|
65
|
+
MSWIN = Gem::Platform.new("mswin32")
|
|
66
|
+
MSWIN64 = Gem::Platform.new("mswin64")
|
|
67
|
+
MINGW = Gem::Platform.new("x86-mingw32")
|
|
68
|
+
X64_MINGW = [Gem::Platform.new("x64-mingw32"),
|
|
69
|
+
Gem::Platform.new("x64-mingw-ucrt")].freeze
|
|
70
|
+
UNIVERSAL_MINGW = Gem::Platform.new("universal-mingw")
|
|
71
|
+
WINDOWS = [MSWIN, MSWIN64, UNIVERSAL_MINGW].flatten.freeze
|
|
72
|
+
X64_LINUX = Gem::Platform.new("x86_64-linux")
|
|
73
|
+
X64_LINUX_MUSL = Gem::Platform.new("x86_64-linux-musl")
|
|
74
|
+
|
|
75
|
+
if X64_LINUX === X64_LINUX_MUSL
|
|
76
|
+
remove_method :===
|
|
77
|
+
|
|
78
|
+
def ===(other)
|
|
79
|
+
return nil unless Gem::Platform === other
|
|
80
|
+
|
|
81
|
+
# universal-mingw32 matches x64-mingw-ucrt
|
|
82
|
+
return true if (@cpu == "universal" || other.cpu == "universal") &&
|
|
83
|
+
@os.start_with?("mingw") && other.os.start_with?("mingw")
|
|
84
|
+
|
|
85
|
+
# cpu
|
|
86
|
+
([nil,"universal"].include?(@cpu) || [nil, "universal"].include?(other.cpu) || @cpu == other.cpu ||
|
|
87
|
+
(@cpu == "arm" && other.cpu.start_with?("armv"))) &&
|
|
88
|
+
|
|
89
|
+
# os
|
|
90
|
+
@os == other.os &&
|
|
91
|
+
|
|
92
|
+
# version
|
|
93
|
+
(
|
|
94
|
+
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
|
95
|
+
(@os == "linux" && (normalized_linux_version_ext == other.normalized_linux_version_ext || ["musl#{@version}", "musleabi#{@version}", "musleabihf#{@version}"].include?(other.version))) ||
|
|
96
|
+
@version == other.version
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# This is a copy of RubyGems 3.3.23 or higher `normalized_linux_method`.
|
|
101
|
+
# Once only 3.3.23 is supported, we can use the method in RubyGems.
|
|
102
|
+
def normalized_linux_version_ext
|
|
103
|
+
return nil unless @version
|
|
104
|
+
|
|
105
|
+
without_gnu_nor_abi_modifiers = @version.sub(/\Agnu/, "").sub(/eabi(hf)?\Z/, "")
|
|
106
|
+
return nil if without_gnu_nor_abi_modifiers.empty?
|
|
107
|
+
|
|
108
|
+
without_gnu_nor_abi_modifiers
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
Platform.singleton_class.module_eval do
|
|
114
|
+
unless Platform.singleton_methods.include?(:match_spec?)
|
|
115
|
+
def match_spec?(spec)
|
|
116
|
+
match_gem?(spec.platform, spec.name)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def match_gem?(platform, gem_name)
|
|
120
|
+
match_platforms?(platform, Gem.platforms)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
match_platforms_defined = Gem::Platform.respond_to?(:match_platforms?, true)
|
|
125
|
+
|
|
126
|
+
if !match_platforms_defined || Gem::Platform.send(:match_platforms?, Gem::Platform::X64_LINUX_MUSL, [Gem::Platform::X64_LINUX])
|
|
127
|
+
|
|
128
|
+
private
|
|
129
|
+
|
|
130
|
+
remove_method :match_platforms? if match_platforms_defined
|
|
131
|
+
|
|
132
|
+
def match_platforms?(platform, platforms)
|
|
133
|
+
platforms.any? do |local_platform|
|
|
134
|
+
platform.nil? ||
|
|
135
|
+
local_platform == platform ||
|
|
136
|
+
(local_platform != Gem::Platform::RUBY && platform =~ local_platform)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
require "rubygems/specification"
|
|
143
|
+
|
|
144
|
+
# Can be removed once RubyGems 3.5.14 support is dropped
|
|
145
|
+
VALIDATES_FOR_RESOLUTION = Specification.new.respond_to?(:validate_for_resolution).freeze
|
|
146
|
+
|
|
147
|
+
# Can be removed once RubyGems 3.3.15 support is dropped
|
|
148
|
+
FLATTENS_REQUIRED_PATHS = Specification.new.respond_to?(:flatten_require_paths).freeze
|
|
149
|
+
|
|
34
150
|
class Specification
|
|
151
|
+
# Can be removed once RubyGems 3.5.15 support is dropped
|
|
152
|
+
correct_array_attributes = @@default_value.select {|_k,v| v.is_a?(Array) }.keys
|
|
153
|
+
unless @@array_attributes == correct_array_attributes
|
|
154
|
+
@@array_attributes = correct_array_attributes # rubocop:disable Style/ClassVars
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
require_relative "match_metadata"
|
|
158
|
+
require_relative "match_platform"
|
|
159
|
+
|
|
35
160
|
include ::Bundler::MatchMetadata
|
|
36
161
|
include ::Bundler::MatchPlatform
|
|
37
162
|
|
|
38
|
-
attr_accessor :remote, :
|
|
163
|
+
attr_accessor :remote, :relative_loaded_from
|
|
164
|
+
|
|
165
|
+
module AllowSettingSource
|
|
166
|
+
attr_writer :source
|
|
39
167
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
(defined?(@source) && @source) || Gem::Source::Installed.new
|
|
168
|
+
def source
|
|
169
|
+
(defined?(@source) && @source) || super
|
|
170
|
+
end
|
|
44
171
|
end
|
|
45
172
|
|
|
173
|
+
prepend AllowSettingSource
|
|
174
|
+
|
|
46
175
|
alias_method :rg_full_gem_path, :full_gem_path
|
|
47
176
|
alias_method :rg_loaded_from, :loaded_from
|
|
48
177
|
|
|
49
178
|
def full_gem_path
|
|
50
179
|
if source.respond_to?(:root)
|
|
51
|
-
|
|
180
|
+
File.expand_path(File.dirname(loaded_from), source.root)
|
|
52
181
|
else
|
|
53
182
|
rg_full_gem_path
|
|
54
183
|
end
|
|
@@ -78,7 +207,9 @@ module Gem
|
|
|
78
207
|
end
|
|
79
208
|
end
|
|
80
209
|
|
|
81
|
-
|
|
210
|
+
# Can be removed once RubyGems 3.5.21 support is dropped
|
|
211
|
+
remove_method :gem_dir if method_defined?(:gem_dir, false)
|
|
212
|
+
|
|
82
213
|
def gem_dir
|
|
83
214
|
full_gem_path
|
|
84
215
|
end
|
|
@@ -100,6 +231,10 @@ module Gem
|
|
|
100
231
|
end
|
|
101
232
|
end
|
|
102
233
|
|
|
234
|
+
def insecurely_materialized?
|
|
235
|
+
false
|
|
236
|
+
end
|
|
237
|
+
|
|
103
238
|
def groups
|
|
104
239
|
@groups ||= []
|
|
105
240
|
end
|
|
@@ -123,10 +258,41 @@ module Gem
|
|
|
123
258
|
dependencies - development_dependencies
|
|
124
259
|
end
|
|
125
260
|
|
|
126
|
-
def
|
|
261
|
+
def installation_missing?
|
|
127
262
|
!default_gem? && !File.directory?(full_gem_path)
|
|
128
263
|
end
|
|
129
264
|
|
|
265
|
+
def lock_name
|
|
266
|
+
@lock_name ||= name_tuple.lock_name
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
unless VALIDATES_FOR_RESOLUTION
|
|
270
|
+
def validate_for_resolution
|
|
271
|
+
SpecificationPolicy.new(self).validate_for_resolution
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
unless FLATTENS_REQUIRED_PATHS
|
|
276
|
+
def flatten_require_paths
|
|
277
|
+
return unless raw_require_paths.first.is_a?(Array)
|
|
278
|
+
|
|
279
|
+
warn "#{name} #{version} includes a gemspec with `require_paths` set to an array of arrays. Newer versions of this gem might've already fixed this"
|
|
280
|
+
raw_require_paths.flatten!
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
class << self
|
|
284
|
+
module RequirePathFlattener
|
|
285
|
+
def from_yaml(input)
|
|
286
|
+
spec = super(input)
|
|
287
|
+
spec.flatten_require_paths
|
|
288
|
+
spec
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
prepend RequirePathFlattener
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
130
296
|
private
|
|
131
297
|
|
|
132
298
|
def dependencies_to_gemfile(dependencies, group = nil)
|
|
@@ -146,137 +312,64 @@ module Gem
|
|
|
146
312
|
end
|
|
147
313
|
end
|
|
148
314
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
alias_method :eql?, :==
|
|
155
|
-
|
|
156
|
-
def force_ruby_platform
|
|
157
|
-
return @force_ruby_platform if defined?(@force_ruby_platform) && !@force_ruby_platform.nil?
|
|
158
|
-
|
|
159
|
-
@force_ruby_platform = default_force_ruby_platform
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def encode_with(coder)
|
|
163
|
-
to_yaml_properties.each do |ivar|
|
|
164
|
-
coder[ivar.to_s.sub(/^@/, "")] = instance_variable_get(ivar)
|
|
165
|
-
end
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
def to_yaml_properties
|
|
169
|
-
instance_variables.reject {|p| ["@source", "@groups"].include?(p.to_s) }
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
def to_lock
|
|
173
|
-
out = String.new(" #{name}")
|
|
174
|
-
unless requirement.none?
|
|
175
|
-
reqs = requirement.requirements.map {|o, v| "#{o} #{v}" }.sort.reverse
|
|
176
|
-
out << " (#{reqs.join(", ")})"
|
|
315
|
+
unless VALIDATES_FOR_RESOLUTION
|
|
316
|
+
class SpecificationPolicy
|
|
317
|
+
def validate_for_resolution
|
|
318
|
+
validate_required!
|
|
177
319
|
end
|
|
178
|
-
out
|
|
179
320
|
end
|
|
180
321
|
end
|
|
181
322
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
|
192
|
-
end
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
prepend CorrectHashForLambdaOperator
|
|
323
|
+
module BetterPermissionError
|
|
324
|
+
def data
|
|
325
|
+
super
|
|
326
|
+
rescue Errno::EACCES
|
|
327
|
+
raise Bundler::PermissionError.new(loaded_from, :read)
|
|
196
328
|
end
|
|
197
329
|
end
|
|
198
330
|
|
|
199
|
-
require "rubygems/
|
|
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")
|
|
331
|
+
require "rubygems/stub_specification"
|
|
211
332
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
def ===(other)
|
|
216
|
-
return nil unless Gem::Platform === other
|
|
333
|
+
class StubSpecification
|
|
334
|
+
prepend BetterPermissionError
|
|
335
|
+
end
|
|
217
336
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
@os.start_with?("mingw") && other.os.start_with?("mingw")
|
|
337
|
+
class Dependency
|
|
338
|
+
require_relative "force_platform"
|
|
221
339
|
|
|
222
|
-
|
|
223
|
-
([nil,"universal"].include?(@cpu) || [nil, "universal"].include?(other.cpu) || @cpu == other.cpu ||
|
|
224
|
-
(@cpu == "arm" && other.cpu.start_with?("arm"))) &&
|
|
340
|
+
include ::Bundler::ForcePlatform
|
|
225
341
|
|
|
226
|
-
|
|
227
|
-
@os == other.os &&
|
|
342
|
+
attr_reader :force_ruby_platform
|
|
228
343
|
|
|
229
|
-
|
|
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
|
|
344
|
+
attr_accessor :source, :groups
|
|
241
345
|
|
|
242
|
-
|
|
243
|
-
return nil if without_gnu_nor_abi_modifiers.empty?
|
|
346
|
+
alias_method :eql?, :==
|
|
244
347
|
|
|
245
|
-
|
|
348
|
+
unless method_defined?(:encode_with, false)
|
|
349
|
+
def encode_with(coder)
|
|
350
|
+
[:@name, :@requirement, :@type, :@prerelease, :@version_requirements].each do |ivar|
|
|
351
|
+
coder[ivar.to_s.sub(/^@/, "")] = instance_variable_get(ivar)
|
|
352
|
+
end
|
|
246
353
|
end
|
|
247
354
|
end
|
|
248
355
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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)
|
|
356
|
+
def to_lock
|
|
357
|
+
out = String.new(" #{name}")
|
|
358
|
+
unless requirement.none?
|
|
359
|
+
reqs = requirement.requirements.map {|o, v| "#{o} #{v}" }.sort.reverse
|
|
360
|
+
out << " (#{reqs.join(", ")})"
|
|
262
361
|
end
|
|
362
|
+
out
|
|
263
363
|
end
|
|
264
364
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
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)
|
|
365
|
+
if Gem.rubygems_version < Gem::Version.new("3.5.22")
|
|
366
|
+
module FilterIgnoredSpecs
|
|
367
|
+
def matching_specs(platform_only = false)
|
|
368
|
+
super.reject(&:ignored?)
|
|
278
369
|
end
|
|
279
370
|
end
|
|
371
|
+
|
|
372
|
+
prepend FilterIgnoredSpecs
|
|
280
373
|
end
|
|
281
374
|
end
|
|
282
375
|
|
|
@@ -299,6 +392,15 @@ module Gem
|
|
|
299
392
|
end
|
|
300
393
|
end
|
|
301
394
|
end
|
|
395
|
+
|
|
396
|
+
# Can be removed once RubyGems 3.5.22 support is dropped
|
|
397
|
+
unless new.respond_to?(:ignored?)
|
|
398
|
+
def ignored?
|
|
399
|
+
return @ignored unless @ignored.nil?
|
|
400
|
+
|
|
401
|
+
@ignored = missing_extensions?
|
|
402
|
+
end
|
|
403
|
+
end
|
|
302
404
|
end
|
|
303
405
|
|
|
304
406
|
require "rubygems/name_tuple"
|
|
@@ -325,4 +427,59 @@ module Gem
|
|
|
325
427
|
end
|
|
326
428
|
end
|
|
327
429
|
end
|
|
430
|
+
|
|
431
|
+
unless Gem.rubygems_version >= Gem::Version.new("3.5.19")
|
|
432
|
+
class Resolver::ActivationRequest
|
|
433
|
+
remove_method :installed?
|
|
434
|
+
|
|
435
|
+
def installed?
|
|
436
|
+
case @spec
|
|
437
|
+
when Gem::Resolver::VendorSpecification then
|
|
438
|
+
true
|
|
439
|
+
else
|
|
440
|
+
this_spec = full_spec
|
|
441
|
+
|
|
442
|
+
Gem::Specification.any? do |s|
|
|
443
|
+
s == this_spec && s.base_dir == this_spec.base_dir
|
|
444
|
+
end
|
|
445
|
+
end
|
|
446
|
+
end
|
|
447
|
+
end
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
unless Gem.rubygems_version >= Gem::Version.new("3.6.7")
|
|
451
|
+
module UnfreezeCompactIndexParsedResponse
|
|
452
|
+
def parse(line)
|
|
453
|
+
version, platform, dependencies, requirements = super
|
|
454
|
+
[version, platform, dependencies.frozen? ? dependencies.dup : dependencies, requirements.frozen? ? requirements.dup : requirements]
|
|
455
|
+
end
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
Resolver::APISet::GemParser.prepend(UnfreezeCompactIndexParsedResponse)
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
if Gem.rubygems_version < Gem::Version.new("3.6.0")
|
|
462
|
+
class Package; end
|
|
463
|
+
require "rubygems/package/tar_reader"
|
|
464
|
+
require "rubygems/package/tar_reader/entry"
|
|
465
|
+
|
|
466
|
+
module FixFullNameEncoding
|
|
467
|
+
def full_name
|
|
468
|
+
super.force_encoding(Encoding::UTF_8)
|
|
469
|
+
end
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
Package::TarReader::Entry.prepend(FixFullNameEncoding)
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
require "rubygems/uri"
|
|
476
|
+
|
|
477
|
+
# Can be removed once RubyGems 3.3.15 support is dropped
|
|
478
|
+
unless Gem::Uri.respond_to?(:redact)
|
|
479
|
+
class Uri
|
|
480
|
+
def self.redact(uri)
|
|
481
|
+
new(uri).redacted
|
|
482
|
+
end
|
|
483
|
+
end
|
|
484
|
+
end
|
|
328
485
|
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
|