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
data/lib/rubygems/deprecate.rb
CHANGED
@@ -69,99 +69,101 @@
|
|
69
69
|
# end
|
70
70
|
# end
|
71
71
|
|
72
|
-
module Gem
|
73
|
-
|
74
|
-
|
75
|
-
|
72
|
+
module Gem
|
73
|
+
module Deprecate
|
74
|
+
def self.skip # :nodoc:
|
75
|
+
@skip ||= false
|
76
|
+
end
|
76
77
|
|
77
|
-
|
78
|
-
|
79
|
-
|
78
|
+
def self.skip=(v) # :nodoc:
|
79
|
+
@skip = v
|
80
|
+
end
|
80
81
|
|
81
|
-
|
82
|
-
|
82
|
+
##
|
83
|
+
# Temporarily turn off warnings. Intended for tests only.
|
83
84
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
85
|
+
def skip_during
|
86
|
+
original = Gem::Deprecate.skip
|
87
|
+
Gem::Deprecate.skip = true
|
88
|
+
yield
|
89
|
+
ensure
|
90
|
+
Gem::Deprecate.skip = original
|
91
|
+
end
|
91
92
|
|
92
|
-
|
93
|
-
|
94
|
-
|
93
|
+
def self.next_rubygems_major_version # :nodoc:
|
94
|
+
Gem::Version.new(Gem.rubygems_version.segments.first).bump
|
95
|
+
end
|
95
96
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
##
|
98
|
+
# Simple deprecation method that deprecates +name+ by wrapping it up
|
99
|
+
# in a dummy method. It warns on each call to the dummy method
|
100
|
+
# telling the user of +repl+ (unless +repl+ is :none) and the
|
101
|
+
# year/month that it is planned to go away.
|
101
102
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
103
|
+
def deprecate(name, repl, year, month)
|
104
|
+
class_eval do
|
105
|
+
old = "_deprecated_#{name}"
|
106
|
+
alias_method old, name
|
107
|
+
define_method name do |*args, &block|
|
108
|
+
klass = is_a? Module
|
109
|
+
target = klass ? "#{self}." : "#{self.class}#"
|
110
|
+
msg = [
|
111
|
+
"NOTE: #{target}#{name} is deprecated",
|
112
|
+
repl == :none ? " with no replacement" : "; use #{repl} instead",
|
113
|
+
format(". It will be removed on or after %4d-%02d.", year, month),
|
114
|
+
"\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
|
115
|
+
]
|
116
|
+
warn "#{msg.join}." unless Gem::Deprecate.skip
|
117
|
+
send old, *args, &block
|
118
|
+
end
|
119
|
+
ruby2_keywords name if respond_to?(:ruby2_keywords, true)
|
117
120
|
end
|
118
|
-
ruby2_keywords name if respond_to?(:ruby2_keywords, true)
|
119
121
|
end
|
120
|
-
end
|
121
122
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
123
|
+
##
|
124
|
+
# Simple deprecation method that deprecates +name+ by wrapping it up
|
125
|
+
# in a dummy method. It warns on each call to the dummy method
|
126
|
+
# telling the user of +repl+ (unless +repl+ is :none) and the
|
127
|
+
# Rubygems version that it is planned to go away.
|
127
128
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
129
|
+
def rubygems_deprecate(name, replacement=:none)
|
130
|
+
class_eval do
|
131
|
+
old = "_deprecated_#{name}"
|
132
|
+
alias_method old, name
|
133
|
+
define_method name do |*args, &block|
|
134
|
+
klass = is_a? Module
|
135
|
+
target = klass ? "#{self}." : "#{self.class}#"
|
136
|
+
msg = [
|
137
|
+
"NOTE: #{target}#{name} is deprecated",
|
138
|
+
replacement == :none ? " with no replacement" : "; use #{replacement} instead",
|
139
|
+
". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
|
140
|
+
"\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
|
141
|
+
]
|
142
|
+
warn "#{msg.join}." unless Gem::Deprecate.skip
|
143
|
+
send old, *args, &block
|
144
|
+
end
|
145
|
+
ruby2_keywords name if respond_to?(:ruby2_keywords, true)
|
143
146
|
end
|
144
|
-
ruby2_keywords name if respond_to?(:ruby2_keywords, true)
|
145
147
|
end
|
146
|
-
end
|
147
148
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
149
|
+
# Deprecation method to deprecate Rubygems commands
|
150
|
+
def rubygems_deprecate_command(version = Gem::Deprecate.next_rubygems_major_version)
|
151
|
+
class_eval do
|
152
|
+
define_method "deprecated?" do
|
153
|
+
true
|
154
|
+
end
|
154
155
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
156
|
+
define_method "deprecation_warning" do
|
157
|
+
msg = [
|
158
|
+
"#{command} command is deprecated",
|
159
|
+
". It will be removed in Rubygems #{version}.\n",
|
160
|
+
]
|
160
161
|
|
161
|
-
|
162
|
+
alert_warning msg.join.to_s unless Gem::Deprecate.skip
|
163
|
+
end
|
162
164
|
end
|
163
165
|
end
|
164
|
-
end
|
165
166
|
|
166
|
-
|
167
|
+
module_function :rubygems_deprecate, :rubygems_deprecate_command, :skip_during
|
168
|
+
end
|
167
169
|
end
|
data/lib/rubygems/errors.rb
CHANGED
@@ -30,6 +30,7 @@ module Gem
|
|
30
30
|
@name = name
|
31
31
|
@requirement = requirement
|
32
32
|
@extra_message = extra_message
|
33
|
+
super(message)
|
33
34
|
end
|
34
35
|
|
35
36
|
def message # :nodoc:
|
@@ -53,8 +54,8 @@ module Gem
|
|
53
54
|
attr_reader :specs
|
54
55
|
|
55
56
|
def initialize(name, requirement, specs)
|
56
|
-
super(name, requirement)
|
57
57
|
@specs = specs
|
58
|
+
super(name, requirement)
|
58
59
|
end
|
59
60
|
|
60
61
|
private
|
data/lib/rubygems/exceptions.rb
CHANGED
@@ -104,9 +104,6 @@ end
|
|
104
104
|
|
105
105
|
class Gem::GemNotFoundException < Gem::Exception; end
|
106
106
|
|
107
|
-
##
|
108
|
-
# Raised by the DependencyInstaller when a specific gem cannot be found
|
109
|
-
|
110
107
|
class Gem::SpecificGemNotFoundException < Gem::GemNotFoundException
|
111
108
|
##
|
112
109
|
# Creates a new SpecificGemNotFoundException for a gem with the given +name+
|
@@ -137,6 +134,8 @@ class Gem::SpecificGemNotFoundException < Gem::GemNotFoundException
|
|
137
134
|
attr_reader :errors
|
138
135
|
end
|
139
136
|
|
137
|
+
Gem.deprecate_constant :SpecificGemNotFoundException
|
138
|
+
|
140
139
|
##
|
141
140
|
# Raised by Gem::Resolver when dependencies conflict and create the
|
142
141
|
# inability to find a valid possible spec for a request.
|
@@ -292,9 +291,3 @@ class Gem::UnsatisfiableDependencyError < Gem::DependencyError
|
|
292
291
|
@dependency.requirement
|
293
292
|
end
|
294
293
|
end
|
295
|
-
|
296
|
-
##
|
297
|
-
# Backwards compatible typo'd exception class for early RubyGems 2.0.x
|
298
|
-
|
299
|
-
Gem::UnsatisfiableDepedencyError = Gem::UnsatisfiableDependencyError # :nodoc:
|
300
|
-
Gem.deprecate_constant :UnsatisfiableDepedencyError
|
data/lib/rubygems/ext/builder.rb
CHANGED
@@ -7,7 +7,6 @@
|
|
7
7
|
#++
|
8
8
|
|
9
9
|
require_relative "../user_interaction"
|
10
|
-
require_relative "../shellwords"
|
11
10
|
|
12
11
|
class Gem::Ext::Builder
|
13
12
|
include Gem::UserInteraction
|
@@ -19,16 +18,17 @@ class Gem::Ext::Builder
|
|
19
18
|
$1.downcase
|
20
19
|
end
|
21
20
|
|
22
|
-
def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil, targets = ["clean", "", "install"]
|
21
|
+
def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil, targets = ["clean", "", "install"],
|
22
|
+
target_rbconfig: Gem.target_rbconfig)
|
23
23
|
unless File.exist? File.join(make_dir, "Makefile")
|
24
24
|
raise Gem::InstallError, "Makefile not found"
|
25
25
|
end
|
26
26
|
|
27
27
|
# try to find make program from Ruby configure arguments first
|
28
|
-
|
28
|
+
target_rbconfig["configure_args"] =~ /with-make-prog\=(\w+)/
|
29
29
|
make_program_name = ENV["MAKE"] || ENV["make"] || $1
|
30
30
|
make_program_name ||= RUBY_PLATFORM.include?("mswin") ? "nmake" : "make"
|
31
|
-
make_program =
|
31
|
+
make_program = shellsplit(make_program_name)
|
32
32
|
|
33
33
|
# The installation of the bundled gems is failed when DESTDIR is empty in mswin platform.
|
34
34
|
destdir = /\bnmake/i !~ make_program_name || ENV["DESTDIR"] && ENV["DESTDIR"] != "" ? format("DESTDIR=%s", ENV["DESTDIR"]) : ""
|
@@ -57,7 +57,7 @@ class Gem::Ext::Builder
|
|
57
57
|
|
58
58
|
def self.ruby
|
59
59
|
# Gem.ruby is quoted if it contains whitespace
|
60
|
-
cmd =
|
60
|
+
cmd = shellsplit(Gem.ruby)
|
61
61
|
|
62
62
|
# This load_path is only needed when running rubygems test without a proper installation.
|
63
63
|
# Prepending it in a normal installation will cause problem with order of $LOAD_PATH.
|
@@ -82,7 +82,7 @@ class Gem::Ext::Builder
|
|
82
82
|
p(command)
|
83
83
|
end
|
84
84
|
results << "current directory: #{dir}"
|
85
|
-
results <<
|
85
|
+
results << shelljoin(command)
|
86
86
|
|
87
87
|
require "open3"
|
88
88
|
# Set $SOURCE_DATE_EPOCH for the subprocess.
|
@@ -126,15 +126,28 @@ class Gem::Ext::Builder
|
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
129
|
+
def self.shellsplit(command)
|
130
|
+
require "shellwords"
|
131
|
+
|
132
|
+
Shellwords.split(command)
|
133
|
+
end
|
134
|
+
|
135
|
+
def self.shelljoin(command)
|
136
|
+
require "shellwords"
|
137
|
+
|
138
|
+
Shellwords.join(command)
|
139
|
+
end
|
140
|
+
|
129
141
|
##
|
130
142
|
# Creates a new extension builder for +spec+. If the +spec+ does not yet
|
131
143
|
# have build arguments, saved, set +build_args+ which is an ARGV-style
|
132
144
|
# array.
|
133
145
|
|
134
|
-
def initialize(spec, build_args = spec.build_args)
|
146
|
+
def initialize(spec, build_args = spec.build_args, target_rbconfig = Gem.target_rbconfig)
|
135
147
|
@spec = spec
|
136
148
|
@build_args = build_args
|
137
149
|
@gem_dir = spec.full_gem_path
|
150
|
+
@target_rbconfig = target_rbconfig
|
138
151
|
|
139
152
|
@ran_rake = false
|
140
153
|
end
|
@@ -191,7 +204,7 @@ EOF
|
|
191
204
|
FileUtils.mkdir_p dest_path
|
192
205
|
|
193
206
|
results = builder.build(extension, dest_path,
|
194
|
-
results, @build_args, lib_dir, extension_dir)
|
207
|
+
results, @build_args, lib_dir, extension_dir, @target_rbconfig)
|
195
208
|
|
196
209
|
verbose { results.join("\n") }
|
197
210
|
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "../shellwords"
|
4
|
-
|
5
3
|
# This class is used by rubygems to build Rust extensions. It is a thin-wrapper
|
6
4
|
# over the `cargo rustc` command which takes care of building Rust code in a way
|
7
5
|
# that Ruby can use.
|
@@ -16,10 +14,15 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
|
16
14
|
@profile = :release
|
17
15
|
end
|
18
16
|
|
19
|
-
def build(extension, dest_path, results, args = [], lib_dir = nil, cargo_dir = Dir.pwd
|
17
|
+
def build(extension, dest_path, results, args = [], lib_dir = nil, cargo_dir = Dir.pwd,
|
18
|
+
target_rbconfig=Gem.target_rbconfig)
|
20
19
|
require "tempfile"
|
21
20
|
require "fileutils"
|
22
21
|
|
22
|
+
if target_rbconfig.path
|
23
|
+
warn "--target-rbconfig is not yet supported for Rust extensions. Ignoring"
|
24
|
+
end
|
25
|
+
|
23
26
|
# Where's the Cargo.toml of the crate we're building
|
24
27
|
cargo_toml = File.join(cargo_dir, "Cargo.toml")
|
25
28
|
# What's the crate's name
|
@@ -47,7 +50,6 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
|
47
50
|
|
48
51
|
nesting = extension_nesting(extension)
|
49
52
|
|
50
|
-
# TODO: remove in RubyGems 4
|
51
53
|
if Gem.install_extension_in_lib && lib_dir
|
52
54
|
nested_lib_dir = File.join(lib_dir, nesting)
|
53
55
|
FileUtils.mkdir_p nested_lib_dir
|
@@ -155,7 +157,11 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
|
155
157
|
# We want to use the same linker that Ruby uses, so that the linker flags from
|
156
158
|
# mkmf work properly.
|
157
159
|
def linker_args
|
158
|
-
cc_flag =
|
160
|
+
cc_flag = self.class.shellsplit(makefile_config("CC"))
|
161
|
+
# Avoid to ccache like tool from Rust build
|
162
|
+
# see https://github.com/rubygems/rubygems/pull/8521#issuecomment-2689854359
|
163
|
+
# ex. CC="ccache gcc" or CC="sccache clang --any --args"
|
164
|
+
cc_flag.shift if cc_flag.size >= 2 && !cc_flag[1].start_with?("-")
|
159
165
|
linker = cc_flag.shift
|
160
166
|
link_args = cc_flag.flat_map {|a| ["-C", "link-arg=#{a}"] }
|
161
167
|
|
@@ -174,7 +180,7 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
|
174
180
|
|
175
181
|
def libruby_args(dest_dir)
|
176
182
|
libs = makefile_config(ruby_static? ? "LIBRUBYARG_STATIC" : "LIBRUBYARG_SHARED")
|
177
|
-
raw_libs =
|
183
|
+
raw_libs = self.class.shellsplit(libs)
|
178
184
|
raw_libs.flat_map {|l| ldflag_to_link_modifier(l) }
|
179
185
|
end
|
180
186
|
|
@@ -185,6 +191,7 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
|
185
191
|
end
|
186
192
|
|
187
193
|
def cargo_dylib_path(dest_path, crate_name)
|
194
|
+
so_ext = RbConfig::CONFIG["SOEXT"]
|
188
195
|
prefix = so_ext == "dll" ? "" : "lib"
|
189
196
|
path_parts = [dest_path]
|
190
197
|
path_parts << ENV["CARGO_BUILD_TARGET"] if ENV["CARGO_BUILD_TARGET"]
|
@@ -247,8 +254,7 @@ EOF
|
|
247
254
|
|
248
255
|
def rustc_dynamic_linker_flags(dest_dir, crate_name)
|
249
256
|
split_flags("DLDFLAGS").
|
250
|
-
|
251
|
-
compact.
|
257
|
+
filter_map {|arg| maybe_resolve_ldflag_variable(arg, dest_dir, crate_name) }.
|
252
258
|
flat_map {|arg| ldflag_to_link_modifier(arg) }
|
253
259
|
end
|
254
260
|
|
@@ -257,7 +263,7 @@ EOF
|
|
257
263
|
end
|
258
264
|
|
259
265
|
def split_flags(var)
|
260
|
-
|
266
|
+
self.class.shellsplit(RbConfig::CONFIG.fetch(var, ""))
|
261
267
|
end
|
262
268
|
|
263
269
|
def ldflag_to_link_modifier(arg)
|
@@ -293,7 +299,7 @@ EOF
|
|
293
299
|
|
294
300
|
case var_name
|
295
301
|
# On windows, it is assumed that mkmf has setup an exports file for the
|
296
|
-
# extension, so we have to
|
302
|
+
# extension, so we have to create one ourselves.
|
297
303
|
when "DEFFILE"
|
298
304
|
write_deffile(dest_dir, crate_name)
|
299
305
|
else
|
@@ -313,22 +319,6 @@ EOF
|
|
313
319
|
deffile_path
|
314
320
|
end
|
315
321
|
|
316
|
-
# We have to basically reimplement <code>RbConfig::CONFIG['SOEXT']</code> here to support
|
317
|
-
# Ruby < 2.5
|
318
|
-
#
|
319
|
-
# @see https://github.com/ruby/ruby/blob/c87c027f18c005460746a74c07cd80ee355b16e4/configure.ac#L3185
|
320
|
-
def so_ext
|
321
|
-
return RbConfig::CONFIG["SOEXT"] if RbConfig::CONFIG.key?("SOEXT")
|
322
|
-
|
323
|
-
if win_target?
|
324
|
-
"dll"
|
325
|
-
elsif darwin_target?
|
326
|
-
"dylib"
|
327
|
-
else
|
328
|
-
"so"
|
329
|
-
end
|
330
|
-
end
|
331
|
-
|
332
322
|
# Corresponds to $(LIBPATH) in mkmf
|
333
323
|
def mkmf_libpath
|
334
324
|
["-L", "native=#{makefile_config("libdir")}"]
|
@@ -1,7 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Gem::Ext::CmakeBuilder < Gem::Ext::Builder
|
4
|
-
def self.build(extension, dest_path, results, args=[], lib_dir=nil, cmake_dir=Dir.pwd
|
4
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil, cmake_dir=Dir.pwd,
|
5
|
+
target_rbconfig=Gem.target_rbconfig)
|
6
|
+
if target_rbconfig.path
|
7
|
+
warn "--target-rbconfig is not yet supported for CMake extensions. Ignoring"
|
8
|
+
end
|
9
|
+
|
5
10
|
unless File.exist?(File.join(cmake_dir, "Makefile"))
|
6
11
|
require_relative "../command"
|
7
12
|
cmd = ["cmake", ".", "-DCMAKE_INSTALL_PREFIX=#{dest_path}", *Gem::Command.build_args]
|
@@ -9,7 +14,7 @@ class Gem::Ext::CmakeBuilder < Gem::Ext::Builder
|
|
9
14
|
run cmd, results, class_name, cmake_dir
|
10
15
|
end
|
11
16
|
|
12
|
-
make dest_path, results, cmake_dir
|
17
|
+
make dest_path, results, cmake_dir, target_rbconfig: target_rbconfig
|
13
18
|
|
14
19
|
results
|
15
20
|
end
|
@@ -7,14 +7,19 @@
|
|
7
7
|
#++
|
8
8
|
|
9
9
|
class Gem::Ext::ConfigureBuilder < Gem::Ext::Builder
|
10
|
-
def self.build(extension, dest_path, results, args=[], lib_dir=nil, configure_dir=Dir.pwd
|
10
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil, configure_dir=Dir.pwd,
|
11
|
+
target_rbconfig=Gem.target_rbconfig)
|
12
|
+
if target_rbconfig.path
|
13
|
+
warn "--target-rbconfig is not yet supported for configure-based extensions. Ignoring"
|
14
|
+
end
|
15
|
+
|
11
16
|
unless File.exist?(File.join(configure_dir, "Makefile"))
|
12
17
|
cmd = ["sh", "./configure", "--prefix=#{dest_path}", *args]
|
13
18
|
|
14
19
|
run cmd, results, class_name, configure_dir
|
15
20
|
end
|
16
21
|
|
17
|
-
make dest_path, results, configure_dir
|
22
|
+
make dest_path, results, configure_dir, target_rbconfig: target_rbconfig
|
18
23
|
|
19
24
|
results
|
20
25
|
end
|
@@ -7,7 +7,8 @@
|
|
7
7
|
#++
|
8
8
|
|
9
9
|
class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
10
|
-
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd
|
10
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd,
|
11
|
+
target_rbconfig=Gem.target_rbconfig)
|
11
12
|
require "fileutils"
|
12
13
|
require "tempfile"
|
13
14
|
|
@@ -23,6 +24,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
23
24
|
|
24
25
|
begin
|
25
26
|
cmd = ruby << File.basename(extension)
|
27
|
+
cmd << "--target-rbconfig=#{target_rbconfig.path}" if target_rbconfig.path
|
26
28
|
cmd.push(*args)
|
27
29
|
|
28
30
|
run(cmd, results, class_name, extension_dir) do |s, r|
|
@@ -39,12 +41,14 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
39
41
|
|
40
42
|
ENV["DESTDIR"] = nil
|
41
43
|
|
42
|
-
make dest_path, results, extension_dir, tmp_dest_relative
|
44
|
+
make dest_path, results, extension_dir, tmp_dest_relative, target_rbconfig: target_rbconfig
|
43
45
|
|
44
46
|
full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
+
is_cross_compiling = target_rbconfig["platform"] != RbConfig::CONFIG["platform"]
|
49
|
+
# Do not copy extension libraries by default when cross-compiling
|
50
|
+
# not to conflict with the one already built for the host platform.
|
51
|
+
if Gem.install_extension_in_lib && lib_dir && !is_cross_compiling
|
48
52
|
FileUtils.mkdir_p lib_dir
|
49
53
|
entries = Dir.entries(full_tmp_dest) - %w[. ..]
|
50
54
|
entries = entries.map {|entry| File.join full_tmp_dest, entry }
|
@@ -56,7 +60,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
56
60
|
destent.exist? || FileUtils.mv(ent.path, destent.path)
|
57
61
|
end
|
58
62
|
|
59
|
-
make dest_path, results, extension_dir, tmp_dest_relative, ["clean"]
|
63
|
+
make dest_path, results, extension_dir, tmp_dest_relative, ["clean"], target_rbconfig: target_rbconfig
|
60
64
|
ensure
|
61
65
|
ENV["DESTDIR"] = destdir
|
62
66
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "../shellwords"
|
4
|
-
|
5
3
|
#--
|
6
4
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
7
5
|
# All rights reserved.
|
@@ -9,7 +7,12 @@ require_relative "../shellwords"
|
|
9
7
|
#++
|
10
8
|
|
11
9
|
class Gem::Ext::RakeBuilder < Gem::Ext::Builder
|
12
|
-
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd
|
10
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd,
|
11
|
+
target_rbconfig=Gem.target_rbconfig)
|
12
|
+
if target_rbconfig.path
|
13
|
+
warn "--target-rbconfig is not yet supported for Rake extensions. Ignoring"
|
14
|
+
end
|
15
|
+
|
13
16
|
if /mkrf_conf/i.match?(File.basename(extension))
|
14
17
|
run([Gem.ruby, File.basename(extension), *args], results, class_name, extension_dir)
|
15
18
|
end
|
@@ -17,7 +20,7 @@ class Gem::Ext::RakeBuilder < Gem::Ext::Builder
|
|
17
20
|
rake = ENV["rake"]
|
18
21
|
|
19
22
|
if rake
|
20
|
-
rake =
|
23
|
+
rake = shellsplit(rake)
|
21
24
|
else
|
22
25
|
begin
|
23
26
|
rake = ruby << "-rrubygems" << Gem.bin_path("rake", "rake")
|
data/lib/rubygems/gem_runner.rb
CHANGED
@@ -29,6 +29,7 @@ class Gem::GemRunner
|
|
29
29
|
# Run the gem command with the following arguments.
|
30
30
|
|
31
31
|
def run(args)
|
32
|
+
validate_encoding args
|
32
33
|
build_args = extract_build_args args
|
33
34
|
|
34
35
|
do_configuration args
|
@@ -72,6 +73,14 @@ class Gem::GemRunner
|
|
72
73
|
|
73
74
|
private
|
74
75
|
|
76
|
+
def validate_encoding(args)
|
77
|
+
invalid_arg = args.find {|arg| !arg.valid_encoding? }
|
78
|
+
|
79
|
+
if invalid_arg
|
80
|
+
raise Gem::OptionParser::InvalidArgument.new("'#{invalid_arg.scrub}' has invalid encoding")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
75
84
|
def do_configuration(args)
|
76
85
|
Gem.configuration = @config_file_class.new(args)
|
77
86
|
Gem.use_paths Gem.configuration[:gemhome], Gem.configuration[:gempath]
|
@@ -51,7 +51,7 @@ module Gem::GemcutterUtilities
|
|
51
51
|
request_line = socket.gets
|
52
52
|
|
53
53
|
method, req_uri, _protocol = request_line.split(" ")
|
54
|
-
req_uri = URI.parse(req_uri)
|
54
|
+
req_uri = Gem::URI.parse(req_uri)
|
55
55
|
|
56
56
|
responder = SocketResponder.new(socket)
|
57
57
|
|
@@ -85,10 +85,17 @@ module Gem::GemcutterUtilities
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def parse_otp_from_uri(uri)
|
88
|
-
|
88
|
+
query = uri.query
|
89
|
+
return unless query && !query.empty?
|
89
90
|
|
90
|
-
|
91
|
-
|
91
|
+
query.split("&") do |param|
|
92
|
+
key, value = param.split("=", 2)
|
93
|
+
if value && Gem::URI.decode_www_form_component(key) == "code"
|
94
|
+
return Gem::URI.decode_www_form_component(value)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
nil
|
92
99
|
end
|
93
100
|
|
94
101
|
class SocketResponder
|
@@ -69,8 +69,10 @@ module Gem::GemcutterUtilities
|
|
69
69
|
rubygems_api_request(:get, "api/v1/webauthn_verification/#{webauthn_token}/status.json") do |request|
|
70
70
|
if credentials.empty?
|
71
71
|
request.add_field "Authorization", api_key
|
72
|
+
elsif credentials[:identifier] && credentials[:password]
|
73
|
+
request.basic_auth credentials[:identifier], credentials[:password]
|
72
74
|
else
|
73
|
-
|
75
|
+
raise Gem::WebauthnVerificationError, "Provided missing credentials"
|
74
76
|
end
|
75
77
|
end
|
76
78
|
end
|