rubygems-update 4.0.21 → 4.1.0.beta1
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 +590 -53
- data/CONTRIBUTING.md +66 -5
- data/MIT.txt +4 -3
- data/Manifest.txt +332 -375
- data/README.md +26 -6
- data/bundler.gemspec +63 -0
- data/doc/POLICIES.md +147 -0
- data/doc/UPGRADING.md +4 -4
- data/{bundler/lib → lib}/bundler/build_metadata.rb +2 -2
- data/{bundler/lib → lib}/bundler/checksum.rb +40 -25
- data/{bundler/lib → lib}/bundler/ci_detector.rb +1 -1
- data/{bundler/lib → lib}/bundler/cli/add.rb +3 -4
- data/{bundler/lib → lib}/bundler/cli/cache.rb +4 -0
- data/{bundler/lib → lib}/bundler/cli/clean.rb +5 -0
- data/{bundler/lib → lib}/bundler/cli/common.rb +37 -1
- data/{bundler/lib → lib}/bundler/cli/config.rb +4 -2
- data/{bundler/lib → lib}/bundler/cli/gem.rb +0 -17
- data/{bundler/lib → lib}/bundler/cli/install.rb +4 -5
- data/{bundler/lib → lib}/bundler/cli/lock.rb +1 -2
- data/{bundler/lib → lib}/bundler/cli/outdated.rb +8 -3
- data/{bundler/lib → lib}/bundler/cli/pristine.rb +2 -1
- data/{bundler/lib → lib}/bundler/cli/update.rb +21 -12
- data/{bundler/lib → lib}/bundler/cli.rb +14 -11
- data/{bundler/lib → lib}/bundler/definition.rb +61 -24
- data/{bundler/lib → lib}/bundler/dependency.rb +4 -0
- data/{bundler/lib → lib}/bundler/dsl.rb +77 -11
- data/{bundler/lib → lib}/bundler/endpoint_specification.rb +51 -14
- data/{bundler/lib → lib}/bundler/env.rb +7 -24
- data/{bundler/lib → lib}/bundler/errors.rb +34 -5
- data/{bundler/lib → lib}/bundler/fetcher/compact_index.rb +14 -5
- data/lib/bundler/fetcher/connection_pools.rb +150 -0
- data/{bundler/lib → lib}/bundler/fetcher/downloader.rb +31 -16
- data/{bundler/lib → lib}/bundler/fetcher.rb +8 -47
- data/{bundler/lib → lib}/bundler/injector.rb +3 -3
- data/{bundler/lib → lib}/bundler/inline.rb +44 -4
- data/{bundler/lib → lib}/bundler/installer/parallel_installer.rb +25 -30
- data/{bundler/lib → lib}/bundler/installer.rb +20 -6
- data/{bundler/lib → lib}/bundler/lazy_specification.rb +44 -17
- data/{bundler/lib → lib}/bundler/lockfile_generator.rb +24 -2
- data/{bundler/lib → lib}/bundler/lockfile_parser.rb +43 -5
- data/{bundler/lib → lib}/bundler/man/bundle-add.1 +7 -4
- data/{bundler/lib → lib}/bundler/man/bundle-add.1.ronn +8 -4
- data/{bundler/lib → lib}/bundler/man/bundle-binstubs.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-cache.1 +2 -2
- data/{bundler/lib → lib}/bundler/man/bundle-cache.1.ronn +2 -2
- data/{bundler/lib → lib}/bundler/man/bundle-check.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-clean.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-config.1 +38 -6
- data/{bundler/lib → lib}/bundler/man/bundle-config.1.ronn +143 -10
- data/{bundler/lib → lib}/bundler/man/bundle-console.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-doctor.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-env.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-exec.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-fund.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-gem.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-help.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-info.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-init.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-install.1 +2 -2
- data/{bundler/lib → lib}/bundler/man/bundle-install.1.ronn +4 -4
- data/{bundler/lib → lib}/bundler/man/bundle-issue.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-licenses.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-list.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-lock.1 +3 -3
- data/{bundler/lib → lib}/bundler/man/bundle-lock.1.ronn +5 -5
- data/{bundler/lib → lib}/bundler/man/bundle-open.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-outdated.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-platform.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-plugin.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-pristine.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-remove.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-show.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle-update.1 +3 -3
- data/{bundler/lib → lib}/bundler/man/bundle-update.1.ronn +3 -5
- data/{bundler/lib → lib}/bundler/man/bundle-version.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/bundle.1 +1 -1
- data/{bundler/lib → lib}/bundler/man/gemfile.5 +45 -1
- data/{bundler/lib → lib}/bundler/man/gemfile.5.ronn +53 -0
- data/lib/bundler/match_metadata.rb +50 -0
- data/{bundler/lib → lib}/bundler/match_platform.rb +25 -2
- data/lib/bundler/match_remote_metadata.rb +44 -0
- data/{bundler/lib → lib}/bundler/materialization.rb +2 -1
- data/lib/bundler/override.rb +69 -0
- data/{bundler/lib → lib}/bundler/plugin/dsl.rb +3 -5
- data/{bundler/lib → lib}/bundler/plugin/events.rb +55 -13
- data/{bundler/lib → lib}/bundler/plugin/index.rb +87 -11
- data/{bundler/lib → lib}/bundler/plugin/installer/path.rb +1 -1
- data/{bundler/lib → lib}/bundler/plugin/installer.rb +13 -5
- data/{bundler/lib → lib}/bundler/plugin.rb +58 -30
- data/{bundler/lib → lib}/bundler/remote_specification.rb +6 -3
- data/{bundler/lib → lib}/bundler/resolver/base.rb +2 -1
- data/{bundler/lib → lib}/bundler/resolver/incompatibility.rb +1 -1
- data/{bundler/lib → lib}/bundler/resolver.rb +73 -23
- data/{bundler/lib → lib}/bundler/ruby_version.rb +0 -2
- data/{bundler/lib → lib}/bundler/rubygems_ext.rb +71 -1
- data/{bundler/lib → lib}/bundler/rubygems_gem_installer.rb +41 -2
- data/{bundler/lib → lib}/bundler/rubygems_integration.rb +7 -2
- data/{bundler/lib → lib}/bundler/runtime.rb +69 -2
- data/{bundler/lib → lib}/bundler/self_manager.rb +9 -15
- data/{bundler/lib → lib}/bundler/settings.rb +373 -30
- data/{bundler/lib → lib}/bundler/shared_helpers.rb +2 -1
- data/{bundler/lib → lib}/bundler/source/git/git_proxy.rb +2 -10
- data/{bundler/lib → lib}/bundler/source/git.rb +15 -6
- data/{bundler/lib → lib}/bundler/source/path/installer.rb +1 -1
- data/{bundler/lib → lib}/bundler/source/rubygems/remote.rb +10 -5
- data/{bundler/lib → lib}/bundler/source/rubygems.rb +48 -12
- data/{bundler/lib → lib}/bundler/spec_set.rb +16 -4
- data/{bundler/lib → lib}/bundler/stub_specification.rb +2 -1
- data/{bundler/lib → lib}/bundler/templates/newgem/Gemfile.tt +4 -4
- data/{bundler/lib → lib}/bundler/templates/newgem/newgem.gemspec.tt +3 -3
- data/{bundler/lib → lib}/bundler/templates/newgem/spec/newgem_spec.rb.tt +1 -1
- data/{bundler/lib → lib}/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +1 -1
- data/{bundler/lib → lib}/bundler/ui/shell.rb +0 -4
- data/{bundler/lib → lib}/bundler/ui/silent.rb +0 -4
- data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +35 -2
- data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/base.rb +2 -1
- data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell/basic.rb +14 -6
- data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell/color.rb +2 -0
- data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor.rb +34 -1
- data/lib/bundler/vendored_pub_grub.rb +7 -0
- data/lib/bundler/vendored_securerandom.rb +15 -0
- data/lib/bundler/vendored_uri.rb +21 -0
- data/{bundler/lib → lib}/bundler/version.rb +1 -1
- data/{bundler/lib → lib}/bundler/worker.rb +3 -2
- data/{bundler/lib → lib}/bundler.rb +1 -1
- data/lib/rubygems/basic_specification.rb +15 -14
- data/lib/rubygems/bundler_settings.rb +137 -0
- data/lib/rubygems/bundler_version_finder.rb +13 -55
- data/lib/rubygems/ci_detector.rb +1 -1
- data/lib/rubygems/commands/build_command.rb +8 -1
- data/lib/rubygems/commands/cert_command.rb +9 -7
- data/lib/rubygems/commands/contents_command.rb +1 -1
- data/lib/rubygems/commands/dependency_command.rb +15 -3
- data/lib/rubygems/commands/environment_command.rb +1 -0
- data/lib/rubygems/commands/exec_command.rb +3 -0
- data/lib/rubygems/commands/fetch_command.rb +1 -1
- data/lib/rubygems/commands/help_command.rb +3 -1
- data/lib/rubygems/commands/install_command.rb +13 -3
- data/lib/rubygems/commands/lock_command.rb +2 -2
- data/lib/rubygems/commands/outdated_command.rb +77 -2
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/push_command.rb +159 -21
- data/lib/rubygems/commands/setup_command.rb +20 -23
- data/lib/rubygems/commands/signin_command.rb +3 -1
- data/lib/rubygems/commands/signout_command.rb +26 -6
- data/lib/rubygems/commands/specification_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +84 -2
- data/lib/rubygems/commands/yank_command.rb +10 -7
- data/lib/rubygems/compact_index_client/cache.rb +122 -0
- data/lib/rubygems/compact_index_client/cache_file.rb +147 -0
- data/lib/rubygems/compact_index_client/http_fetcher.rb +88 -0
- data/lib/rubygems/compact_index_client/parser.rb +90 -0
- data/lib/rubygems/compact_index_client/updater.rb +113 -0
- data/lib/rubygems/compact_index_client.rb +111 -0
- data/lib/rubygems/config_file.rb +304 -22
- data/lib/rubygems/content_address.rb +194 -0
- data/lib/rubygems/cooldown.rb +173 -0
- data/lib/rubygems/cooldown_option.rb +27 -0
- data/lib/rubygems/cooldown_settings.rb +57 -0
- data/lib/rubygems/credential_store/native/linux.rb +97 -0
- data/lib/rubygems/credential_store/native/macos.rb +88 -0
- data/lib/rubygems/credential_store/native/windows.rb +130 -0
- data/lib/rubygems/credential_store.rb +332 -0
- data/lib/rubygems/defaults.rb +9 -0
- data/lib/rubygems/dependency_installer.rb +15 -0
- data/lib/rubygems/doctor.rb +23 -6
- data/lib/rubygems/exceptions.rb +11 -43
- data/lib/rubygems/ext/builder.rb +70 -5
- data/lib/rubygems/ext/cargo_builder.rb +0 -9
- data/lib/rubygems/ext/ext_conf_builder.rb +8 -15
- data/lib/rubygems/gemcutter_utilities.rb +44 -2
- data/lib/rubygems/install_update_options.rb +16 -0
- data/lib/rubygems/installer.rb +90 -11
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -3
- data/lib/rubygems/name_tuple.rb +55 -18
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package.rb +200 -47
- data/lib/rubygems/package_task.rb +2 -2
- data/lib/rubygems/platform.rb +2 -2
- data/lib/rubygems/query_utils.rb +84 -24
- data/lib/rubygems/remote_fetcher.rb +65 -17
- data/lib/rubygems/request/connection_pools.rb +3 -0
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set/lockfile.rb +0 -2
- data/lib/rubygems/request_set.rb +105 -17
- data/lib/rubygems/resolver/api_set.rb +14 -26
- data/lib/rubygems/resolver/api_specification.rb +56 -15
- data/lib/rubygems/resolver/incompatibility.rb +10 -0
- data/lib/rubygems/resolver/index_specification.rb +6 -4
- data/lib/rubygems/resolver/installer_set.rb +2 -2
- data/lib/rubygems/resolver/lock_specification.rb +5 -1
- data/lib/rubygems/resolver/spec_specification.rb +4 -0
- data/lib/rubygems/resolver/specification.rb +16 -1
- data/lib/rubygems/resolver/strategy.rb +44 -0
- data/lib/rubygems/resolver.rb +471 -145
- data/lib/rubygems/safe_marshal.rb +2 -1
- data/lib/rubygems/safe_yaml.rb +20 -3
- data/lib/rubygems/security/policy.rb +11 -3
- data/lib/rubygems/security/signer.rb +15 -7
- data/lib/rubygems/security.rb +111 -17
- data/lib/rubygems/source/local.rb +7 -2
- data/lib/rubygems/source.rb +270 -23
- data/lib/rubygems/spec_fetcher.rb +47 -12
- data/lib/rubygems/specification.rb +76 -32
- data/lib/rubygems/specification_policy.rb +33 -6
- data/lib/rubygems/specification_record.rb +41 -2
- data/lib/rubygems/stub_specification.rb +39 -16
- data/lib/rubygems/uninstaller.rb +2 -0
- data/lib/rubygems/util/atomic_file_writer.rb +109 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb +2 -1
- data/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb +5 -6
- data/lib/rubygems/vendor/net-http/lib/net/http/header.rb +8 -4
- data/lib/rubygems/vendor/net-http/lib/net/http/requests.rb +15 -1
- data/lib/rubygems/vendor/net-http/lib/net/http/response.rb +2 -1
- data/lib/rubygems/vendor/net-http/lib/net/http/responses.rb +68 -0
- data/lib/rubygems/vendor/net-http/lib/net/http.rb +60 -49
- data/lib/rubygems/vendor/optparse/lib/optparse.rb +23 -30
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/assignment.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +7 -7
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/failure_writer.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/incompatibility.rb +4 -4
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/package.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/partial_solution.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/rubygems.rb +3 -3
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/solve_failure.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/static_package_source.rb +3 -3
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/strategy.rb +2 -2
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/term.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/version.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/version_constraint.rb +3 -3
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/version_range.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/version_solver.rb +2 -2
- data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/lib/pub_grub/version_union.rb +1 -1
- data/lib/rubygems/vendor/pub_grub/lib/pub_grub.rb +57 -0
- data/lib/rubygems/vendor/resolv/lib/resolv.rb +3508 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +4 -0
- data/lib/rubygems/vendor/timeout/lib/timeout.rb +190 -77
- data/lib/rubygems/vendor/uri/lib/uri.rb +4 -0
- data/{bundler/lib/bundler → lib/rubygems}/vendored_pub_grub.rb +0 -1
- data/lib/rubygems/version.rb +129 -111
- data/lib/rubygems/version_option.rb +14 -0
- data/lib/rubygems/yaml_serializer.rb +853 -71
- data/lib/rubygems.rb +45 -11
- data/rubygems-update.gemspec +3 -4
- data/setup.rb +1 -0
- metadata +365 -410
- data/bundler/CHANGELOG.md +0 -5784
- data/bundler/LICENSE.md +0 -22
- data/bundler/README.md +0 -58
- data/bundler/bundler.gemspec +0 -46
- data/bundler/lib/bundler/compact_index_client/cache.rb +0 -107
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -148
- data/bundler/lib/bundler/compact_index_client/parser.rb +0 -87
- data/bundler/lib/bundler/compact_index_client/updater.rb +0 -105
- data/bundler/lib/bundler/compact_index_client.rb +0 -92
- data/bundler/lib/bundler/match_metadata.rb +0 -30
- data/bundler/lib/bundler/match_remote_metadata.rb +0 -29
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +0 -20
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +0 -227
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +0 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -56
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +0 -230
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +0 -82
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +0 -41
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +0 -65
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +0 -80
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +0 -1153
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +0 -31
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +0 -102
- data/bundler/lib/bundler/vendor/uri/COPYING +0 -56
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +0 -922
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +0 -100
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -267
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +0 -1592
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -137
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -23
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +0 -261
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +0 -22
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -293
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +0 -547
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +0 -206
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +0 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +0 -83
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +0 -23
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -104
- data/bundler/lib/bundler/vendored_persistent.rb +0 -11
- data/bundler/lib/bundler/vendored_securerandom.rb +0 -12
- data/bundler/lib/bundler/vendored_uri.rb +0 -21
- data/bundler/lib/bundler/yaml_serializer.rb +0 -98
- data/doc/rubygems/CONTRIBUTING.md +0 -231
- data/doc/rubygems/POLICIES.md +0 -60
- data/lib/rubygems/request_set/lockfile/parser.rb +0 -344
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +0 -122
- data/lib/rubygems/resolver/conflict.rb +0 -146
- data/lib/rubygems/resolver/stats.rb +0 -46
- data/lib/rubygems/util/list.rb +0 -40
- data/lib/rubygems/vendor/molinillo/LICENSE +0 -9
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/lib/rubygems/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/lib/rubygems/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/rubygems/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/lib/rubygems/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/lib/rubygems/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/lib/rubygems/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/lib/rubygems/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/lib/rubygems/vendor/molinillo/lib/molinillo.rb +0 -11
- data/lib/rubygems/vendored_molinillo.rb +0 -3
- /data/{bundler/exe → exe}/bundle +0 -0
- /data/{bundler/exe → exe}/bundler +0 -0
- /data/{bundler/lib → lib}/bundler/.document +0 -0
- /data/{bundler/lib → lib}/bundler/capistrano.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/binstubs.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/check.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/console.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/doctor/diagnose.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/doctor/ssl.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/doctor.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/exec.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/fund.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/info.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/init.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/issue.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/list.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/open.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/platform.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/plugin.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/remove.rb +0 -0
- /data/{bundler/lib → lib}/bundler/cli/show.rb +0 -0
- /data/{bundler/lib → lib}/bundler/constants.rb +0 -0
- /data/{bundler/lib → lib}/bundler/current_ruby.rb +0 -0
- /data/{bundler/lib → lib}/bundler/deployment.rb +0 -0
- /data/{bundler/lib → lib}/bundler/deprecate.rb +0 -0
- /data/{bundler/lib → lib}/bundler/digest.rb +0 -0
- /data/{bundler/lib → lib}/bundler/environment_preserver.rb +0 -0
- /data/{bundler/lib → lib}/bundler/feature_flag.rb +0 -0
- /data/{bundler/lib → lib}/bundler/fetcher/base.rb +0 -0
- /data/{bundler/lib → lib}/bundler/fetcher/dependency.rb +0 -0
- /data/{bundler/lib → lib}/bundler/fetcher/gem_remote_fetcher.rb +0 -0
- /data/{bundler/lib → lib}/bundler/fetcher/index.rb +0 -0
- /data/{bundler/lib → lib}/bundler/force_platform.rb +0 -0
- /data/{bundler/lib → lib}/bundler/friendly_errors.rb +0 -0
- /data/{bundler/lib → lib}/bundler/gem_helper.rb +0 -0
- /data/{bundler/lib → lib}/bundler/gem_tasks.rb +0 -0
- /data/{bundler/lib → lib}/bundler/gem_version_promoter.rb +0 -0
- /data/{bundler/lib → lib}/bundler/index.rb +0 -0
- /data/{bundler/lib → lib}/bundler/installer/gem_installer.rb +0 -0
- /data/{bundler/lib → lib}/bundler/installer/standalone.rb +0 -0
- /data/{bundler/lib → lib}/bundler/man/.document +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-binstubs.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-check.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-clean.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-console.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-doctor.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-env.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-exec.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-fund.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-gem.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-help.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-info.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-init.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-issue.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-licenses.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-list.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-open.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-outdated.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-platform.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-plugin.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-pristine.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-remove.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-show.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle-version.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/bundle.1.ronn +0 -0
- /data/{bundler/lib → lib}/bundler/man/index.txt +0 -0
- /data/{bundler/lib → lib}/bundler/mirror.rb +0 -0
- /data/{bundler/lib → lib}/bundler/plugin/api/source.rb +0 -0
- /data/{bundler/lib → lib}/bundler/plugin/api.rb +0 -0
- /data/{bundler/lib → lib}/bundler/plugin/installer/git.rb +0 -0
- /data/{bundler/lib → lib}/bundler/plugin/installer/rubygems.rb +0 -0
- /data/{bundler/lib → lib}/bundler/plugin/source_list.rb +0 -0
- /data/{bundler/lib → lib}/bundler/plugin/unloaded_source.rb +0 -0
- /data/{bundler/lib → lib}/bundler/process_lock.rb +0 -0
- /data/{bundler/lib → lib}/bundler/resolver/candidate.rb +0 -0
- /data/{bundler/lib → lib}/bundler/resolver/package.rb +0 -0
- /data/{bundler/lib → lib}/bundler/resolver/root.rb +0 -0
- /data/{bundler/lib → lib}/bundler/resolver/spec_group.rb +0 -0
- /data/{bundler/lib → lib}/bundler/resolver/strategy.rb +0 -0
- /data/{bundler/lib → lib}/bundler/retry.rb +0 -0
- /data/{bundler/lib → lib}/bundler/ruby_dsl.rb +0 -0
- /data/{bundler/lib → lib}/bundler/safe_marshal.rb +0 -0
- /data/{bundler/lib → lib}/bundler/settings/validator.rb +0 -0
- /data/{bundler/lib → lib}/bundler/setup.rb +0 -0
- /data/{bundler/lib → lib}/bundler/source/gemspec.rb +0 -0
- /data/{bundler/lib → lib}/bundler/source/metadata.rb +0 -0
- /data/{bundler/lib → lib}/bundler/source/path.rb +0 -0
- /data/{bundler/lib → lib}/bundler/source/rubygems_aggregate.rb +0 -0
- /data/{bundler/lib → lib}/bundler/source.rb +0 -0
- /data/{bundler/lib → lib}/bundler/source_list.rb +0 -0
- /data/{bundler/lib → lib}/bundler/source_map.rb +0 -0
- /data/{bundler/lib → lib}/bundler/templates/.document +0 -0
- /data/{bundler/lib → lib}/bundler/templates/Executable +0 -0
- /data/{bundler/lib → lib}/bundler/templates/Executable.standalone +0 -0
- /data/{bundler/lib → lib}/bundler/templates/Gemfile +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/CHANGELOG.md.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/Cargo.toml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/LICENSE.txt.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/README.md.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/Rakefile.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/bin/console.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/bin/setup.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/circleci/config.yml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/exe/newgem.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/build.rs.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/go.mod.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/newgem-go.c.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/newgem.c.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/newgem.go.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/newgem.h.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/github/workflows/build-gems.yml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/github/workflows/main.yml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/gitignore.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/gitlab-ci.yml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/lib/newgem/version.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/lib/newgem.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/rspec.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/rubocop.yml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/sig/newgem.rbs.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/spec/spec_helper.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/standard.yml.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/test/minitest/test_helper.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +0 -0
- /data/{bundler/lib → lib}/bundler/ui/rg_proxy.rb +0 -0
- /data/{bundler/lib → lib}/bundler/ui.rb +0 -0
- /data/{bundler/lib → lib}/bundler/uri_credentials_filter.rb +0 -0
- /data/{bundler/lib → lib}/bundler/uri_normalizer.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/.document +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/fileutils/COPYING +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/fileutils/lib/fileutils.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/LICENSE.md +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/actions/create_file.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/actions/create_link.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/actions/directory.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/actions.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/command.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/error.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/group.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/invocation.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/line_editor/basic.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/line_editor/readline.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/line_editor.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/nested_context.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/parser/argument.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/parser/arguments.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/parser/option.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/parser/options.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/parser.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/rake_compat.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/runner.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell/column_printer.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell/html.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell/table_printer.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell/terminal.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/shell.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendor/thor/lib/thor/util.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendored_fileutils.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendored_net_http.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendored_thor.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendored_timeout.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vendored_tsort.rb +0 -0
- /data/{bundler/lib → lib}/bundler/vlad.rb +0 -0
- /data/{bundler/lib/bundler → lib/rubygems}/vendor/pub_grub/LICENSE.txt +0 -0
- /data/{bundler/lib/bundler/vendor/securerandom → lib/rubygems/vendor/resolv}/COPYING +0 -0
|
@@ -27,17 +27,14 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
|
27
27
|
cmd << "--target-rbconfig=#{target_rbconfig.path}" if target_rbconfig.path
|
|
28
28
|
cmd.push(*args)
|
|
29
29
|
|
|
30
|
-
run(cmd, results, class_name, extension_dir)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
FileUtils.mv mkmf_log, dest_path
|
|
39
|
-
end
|
|
40
|
-
end
|
|
30
|
+
run(cmd, results, class_name, extension_dir)
|
|
31
|
+
|
|
32
|
+
# "clean" is the first make target, and mkmf puts mkmf.log in CLEANFILES,
|
|
33
|
+
# so park the log next to the built extension before make can delete it.
|
|
34
|
+
# Whether it is then dropped or kept for inspection is decided by
|
|
35
|
+
# Gem::Ext::Builder#build_extension.
|
|
36
|
+
mkmf_log = File.join(extension_dir, "mkmf.log")
|
|
37
|
+
FileUtils.mv mkmf_log, dest_path if File.exist?(mkmf_log)
|
|
41
38
|
|
|
42
39
|
ENV["DESTDIR"] = nil
|
|
43
40
|
|
|
@@ -66,10 +63,6 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
|
66
63
|
end
|
|
67
64
|
|
|
68
65
|
results
|
|
69
|
-
rescue Gem::Ext::Builder::NoMakefileError => error
|
|
70
|
-
results << error.message
|
|
71
|
-
results << "Skipping make for #{extension} as no Makefile was found."
|
|
72
|
-
# We are good, do not re-raise the error.
|
|
73
66
|
ensure
|
|
74
67
|
FileUtils.rm_rf tmp_dest if tmp_dest
|
|
75
68
|
end
|
|
@@ -48,10 +48,23 @@ module Gem::GemcutterUtilities
|
|
|
48
48
|
ENV["GEM_HOST_API_KEY"]
|
|
49
49
|
elsif options[:key]
|
|
50
50
|
verify_api_key options[:key]
|
|
51
|
+
elsif credential_store_key = Gem.configuration.credential_store_api_key_for(host)
|
|
52
|
+
credential_store_key
|
|
51
53
|
elsif Gem.configuration.api_keys.key?(host)
|
|
52
54
|
Gem.configuration.api_keys[host]
|
|
53
55
|
else
|
|
54
|
-
Gem.configuration.rubygems_api_key
|
|
56
|
+
key = Gem.configuration.rubygems_api_key
|
|
57
|
+
|
|
58
|
+
# Once the store has refused to answer, this last resort would hand the
|
|
59
|
+
# RubyGems.org key to a host that has one of its own, or come away with
|
|
60
|
+
# nothing and let the caller ask for a password.
|
|
61
|
+
if !@recognizing_session && Gem.configuration.credential_store_read_failed_for?(host) && (key.nil? || !default_host?)
|
|
62
|
+
alert_error "The credential store could not be read, so no API key for #{host} could be found. " \
|
|
63
|
+
"Make the store readable and run the command again."
|
|
64
|
+
terminate_interaction ERROR_CODE
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
key
|
|
55
68
|
end
|
|
56
69
|
end
|
|
57
70
|
|
|
@@ -155,7 +168,17 @@ module Gem::GemcutterUtilities
|
|
|
155
168
|
def sign_in(sign_in_host = nil, scope: nil)
|
|
156
169
|
sign_in_host ||= host
|
|
157
170
|
pretty_host = pretty_host(sign_in_host)
|
|
158
|
-
|
|
171
|
+
# Stopping because the store cannot be read would close the one command
|
|
172
|
+
# that can re-authenticate. A flag rather than an argument keeps #api_key
|
|
173
|
+
# callable with no arguments, as command plugins that override it define it.
|
|
174
|
+
@recognizing_session = true
|
|
175
|
+
signed_in = begin
|
|
176
|
+
api_key
|
|
177
|
+
ensure
|
|
178
|
+
@recognizing_session = false
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
if signed_in
|
|
159
182
|
say "You are already signed in on #{pretty_host}."
|
|
160
183
|
return
|
|
161
184
|
end
|
|
@@ -196,12 +219,31 @@ module Gem::GemcutterUtilities
|
|
|
196
219
|
def verify_api_key(key)
|
|
197
220
|
if Gem.configuration.api_keys.key? key
|
|
198
221
|
Gem.configuration.api_keys[key]
|
|
222
|
+
elsif stored_key = stored_api_key_named(key)
|
|
223
|
+
stored_key
|
|
199
224
|
else
|
|
200
225
|
alert_error "No such API key. Please add it to your configuration (done automatically on initial `gem push`)."
|
|
201
226
|
terminate_interaction(ERROR_CODE)
|
|
202
227
|
end
|
|
203
228
|
end
|
|
204
229
|
|
|
230
|
+
##
|
|
231
|
+
# The default key, when +name+ is the name the credentials file knows it by.
|
|
232
|
+
# That file renames :rubygems_api_key to :rubygems on the way in, so the name
|
|
233
|
+
# survives only there, and moving the key into the store would otherwise put
|
|
234
|
+
# it out of reach of --key.
|
|
235
|
+
#
|
|
236
|
+
# Only that one name. The store is keyed by host, and --key names a key, so
|
|
237
|
+
# looking any other name up there would let --key reach a host's key and send
|
|
238
|
+
# it somewhere else. The credentials file keeps the two apart by type, since
|
|
239
|
+
# --key arrives as a Symbol and host entries are strings.
|
|
240
|
+
|
|
241
|
+
def stored_api_key_named(name)
|
|
242
|
+
return nil unless name.to_s == "rubygems"
|
|
243
|
+
|
|
244
|
+
Gem.configuration.credential_store_default_api_key
|
|
245
|
+
end
|
|
246
|
+
|
|
205
247
|
##
|
|
206
248
|
# If +response+ is an HTTP Success (2XX) response, yields the response if a
|
|
207
249
|
# block was given or shows the response body to the user.
|
|
@@ -7,12 +7,14 @@
|
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
9
|
require_relative "../rubygems"
|
|
10
|
+
require_relative "cooldown_option"
|
|
10
11
|
require_relative "security_option"
|
|
11
12
|
|
|
12
13
|
##
|
|
13
14
|
# Mixin methods for install and update options for Gem::Commands
|
|
14
15
|
|
|
15
16
|
module Gem::InstallUpdateOptions
|
|
17
|
+
include Gem::CooldownOption
|
|
16
18
|
include Gem::SecurityOption
|
|
17
19
|
|
|
18
20
|
##
|
|
@@ -192,6 +194,20 @@ module Gem::InstallUpdateOptions
|
|
|
192
194
|
"rbconfig.rb for the deployment target platform") do |v, _o|
|
|
193
195
|
Gem.set_target_rbconfig(v)
|
|
194
196
|
end
|
|
197
|
+
|
|
198
|
+
add_option(:"Install/Update", "--[no-]build-extension",
|
|
199
|
+
"Build native extensions during installation.",
|
|
200
|
+
"Defaults to true") do |v, _o|
|
|
201
|
+
options[:build_extension] = v
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
add_option(:"Install/Update", "--[no-]install-plugin",
|
|
205
|
+
"Install plugins during installation.",
|
|
206
|
+
"Defaults to true") do |v, _o|
|
|
207
|
+
options[:install_plugin] = v
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
add_cooldown_option :"Install/Update"
|
|
195
211
|
end
|
|
196
212
|
|
|
197
213
|
##
|
data/lib/rubygems/installer.rb
CHANGED
|
@@ -114,6 +114,12 @@ class Gem::Installer
|
|
|
114
114
|
|
|
115
115
|
def copy_to(path)
|
|
116
116
|
end
|
|
117
|
+
|
|
118
|
+
def gem
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def content_address
|
|
122
|
+
end
|
|
117
123
|
end
|
|
118
124
|
|
|
119
125
|
##
|
|
@@ -266,6 +272,7 @@ class Gem::Installer
|
|
|
266
272
|
# specifications/<gem-version>.gemspec #=> the Gem::Specification
|
|
267
273
|
|
|
268
274
|
def install
|
|
275
|
+
assign_content_address
|
|
269
276
|
pre_install_checks
|
|
270
277
|
|
|
271
278
|
run_pre_install_hooks
|
|
@@ -287,7 +294,12 @@ class Gem::Installer
|
|
|
287
294
|
run_post_build_hooks
|
|
288
295
|
|
|
289
296
|
generate_bin
|
|
290
|
-
|
|
297
|
+
if options[:install_plugin] == false
|
|
298
|
+
remove_stale_plugins
|
|
299
|
+
warn_skipped_plugins
|
|
300
|
+
else
|
|
301
|
+
generate_plugins
|
|
302
|
+
end
|
|
291
303
|
|
|
292
304
|
write_spec
|
|
293
305
|
write_cache_file
|
|
@@ -296,9 +308,13 @@ class Gem::Installer
|
|
|
296
308
|
|
|
297
309
|
say clean_text(spec.post_install_message.to_s) if options[:post_install_message] && !spec.post_install_message.nil?
|
|
298
310
|
|
|
299
|
-
|
|
311
|
+
if incompatible_abi_install?
|
|
312
|
+
say "#{spec.full_name} is scoped to Ruby ABI #{spec.ruby_abi} and will not be visible to the running Ruby (ABI #{Gem.ruby_abi})"
|
|
313
|
+
else
|
|
314
|
+
Gem::Specification.add_spec(spec) unless @install_dir
|
|
315
|
+
end
|
|
300
316
|
|
|
301
|
-
load_plugin
|
|
317
|
+
load_plugin unless options[:install_plugin] == false
|
|
302
318
|
|
|
303
319
|
run_post_install_hooks
|
|
304
320
|
|
|
@@ -345,9 +361,11 @@ class Gem::Installer
|
|
|
345
361
|
@installed_specs ||= begin
|
|
346
362
|
specs = []
|
|
347
363
|
|
|
348
|
-
Gem::
|
|
349
|
-
|
|
350
|
-
|
|
364
|
+
Gem::SpecificationRecord.dirs_from([gem_home]).each do |dir|
|
|
365
|
+
Gem::Util.glob_files_in_dir("*.gemspec", dir).each do |path|
|
|
366
|
+
spec = Gem::Specification.load path
|
|
367
|
+
specs << spec if spec
|
|
368
|
+
end
|
|
351
369
|
end
|
|
352
370
|
|
|
353
371
|
specs
|
|
@@ -383,7 +401,7 @@ class Gem::Installer
|
|
|
383
401
|
#
|
|
384
402
|
|
|
385
403
|
def spec_file
|
|
386
|
-
File.join
|
|
404
|
+
File.join Gem::SpecificationRecord.specification_dir_for(spec, gem_home), "#{spec.full_name}.gemspec"
|
|
387
405
|
end
|
|
388
406
|
|
|
389
407
|
def default_spec_dir
|
|
@@ -407,7 +425,24 @@ class Gem::Installer
|
|
|
407
425
|
def write_spec
|
|
408
426
|
spec.installed_by_version = Gem.rubygems_version
|
|
409
427
|
|
|
410
|
-
|
|
428
|
+
spec_file = self.spec_file
|
|
429
|
+
spec_dir = File.dirname spec_file
|
|
430
|
+
dir_mode = options[:dir_mode]
|
|
431
|
+
content_addressed = Gem::ContentAddress.content_addressed?(spec)
|
|
432
|
+
|
|
433
|
+
if File.directory? spec_dir
|
|
434
|
+
if content_addressed && dir_mode && !File.writable?(spec_dir)
|
|
435
|
+
File.chmod(0o755, spec_dir)
|
|
436
|
+
end
|
|
437
|
+
else
|
|
438
|
+
ensure_writable_dir spec_dir
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
begin
|
|
442
|
+
Gem.write_binary(spec_file, spec.to_ruby_for_cache)
|
|
443
|
+
ensure
|
|
444
|
+
File.chmod(dir_mode, spec_dir) if dir_mode && content_addressed
|
|
445
|
+
end
|
|
411
446
|
end
|
|
412
447
|
|
|
413
448
|
##
|
|
@@ -817,11 +852,37 @@ class Gem::Installer
|
|
|
817
852
|
# configure scripts and rakefiles or mkrf_conf files.
|
|
818
853
|
|
|
819
854
|
def build_extensions
|
|
855
|
+
if options[:build_extension] == false
|
|
856
|
+
warn_skipped_extensions
|
|
857
|
+
return
|
|
858
|
+
end
|
|
859
|
+
|
|
820
860
|
builder = Gem::Ext::Builder.new spec, build_args, Gem.target_rbconfig, build_jobs
|
|
821
861
|
|
|
822
862
|
builder.build_extensions
|
|
823
863
|
end
|
|
824
864
|
|
|
865
|
+
def warn_skipped_extensions # :nodoc:
|
|
866
|
+
return if spec.extensions.empty?
|
|
867
|
+
|
|
868
|
+
alert_warning "#{spec.full_name} contains native extensions that were not built.\n" \
|
|
869
|
+
"To build extensions, run: gem pristine #{spec.name} --extensions"
|
|
870
|
+
end
|
|
871
|
+
|
|
872
|
+
def warn_skipped_plugins # :nodoc:
|
|
873
|
+
return if spec.plugins.empty?
|
|
874
|
+
|
|
875
|
+
alert_warning "#{spec.full_name} contains plugins that were not installed.\n" \
|
|
876
|
+
"To install plugins, run: gem pristine #{spec.name} --only-plugins"
|
|
877
|
+
end
|
|
878
|
+
|
|
879
|
+
def remove_stale_plugins # :nodoc:
|
|
880
|
+
return unless spec.plugins.empty?
|
|
881
|
+
|
|
882
|
+
ensure_writable_dir @plugins_dir
|
|
883
|
+
remove_plugins_for(spec, @plugins_dir)
|
|
884
|
+
end
|
|
885
|
+
|
|
825
886
|
##
|
|
826
887
|
# Reads the file index and extracts each file into the gem directory.
|
|
827
888
|
#
|
|
@@ -935,6 +996,23 @@ class Gem::Installer
|
|
|
935
996
|
|
|
936
997
|
private
|
|
937
998
|
|
|
999
|
+
def incompatible_abi_install?
|
|
1000
|
+
Gem::ContentAddress.content_addressed?(spec) && spec.ruby_abi != Gem.ruby_abi
|
|
1001
|
+
end
|
|
1002
|
+
|
|
1003
|
+
def assign_content_address
|
|
1004
|
+
address = @package.content_address
|
|
1005
|
+
expected = options[:content_address]
|
|
1006
|
+
|
|
1007
|
+
if expected && address != expected
|
|
1008
|
+
raise Gem::InstallError, "content address mismatch for #{spec.full_name}: " \
|
|
1009
|
+
"expected #{expected}, got #{address || "no content address"}"
|
|
1010
|
+
end
|
|
1011
|
+
|
|
1012
|
+
@gem_dir = nil if address != spec.content_address
|
|
1013
|
+
spec.content_address = address
|
|
1014
|
+
end
|
|
1015
|
+
|
|
938
1016
|
def user_install_dir
|
|
939
1017
|
# never install to user home in --build-root mode
|
|
940
1018
|
return unless @build_root.nil?
|
|
@@ -1003,9 +1081,10 @@ class Gem::Installer
|
|
|
1003
1081
|
# are loaded at the same time.
|
|
1004
1082
|
return unless specs.size == 1
|
|
1005
1083
|
|
|
1006
|
-
plugin_files = spec.plugins.
|
|
1007
|
-
File.join(@plugins_dir, "#{spec.name}_plugin#{File.extname(plugin)}")
|
|
1084
|
+
plugin_files = spec.plugins.filter_map do |plugin|
|
|
1085
|
+
path = File.join(@plugins_dir, "#{spec.name}_plugin#{File.extname(plugin)}")
|
|
1086
|
+
path if File.exist?(path)
|
|
1008
1087
|
end
|
|
1009
|
-
Gem.load_plugin_files(plugin_files)
|
|
1088
|
+
Gem.load_plugin_files(plugin_files) unless plugin_files.empty?
|
|
1010
1089
|
end
|
|
1011
1090
|
end
|
|
@@ -10,11 +10,16 @@ module Gem::InstallerUninstallerUtils
|
|
|
10
10
|
|
|
11
11
|
require "pathname"
|
|
12
12
|
|
|
13
|
-
spec
|
|
14
|
-
|
|
13
|
+
plugin_script_dir = plugin_stub_dir_for(spec, plugins_dir)
|
|
14
|
+
|
|
15
|
+
FileUtils.mkdir_p plugin_script_dir
|
|
16
|
+
remove_plugins_for(spec, plugins_dir)
|
|
17
|
+
|
|
18
|
+
plugins.each do |plugin|
|
|
19
|
+
plugin_script_path = File.join plugin_script_dir, "#{spec.name}_plugin#{File.extname(plugin)}"
|
|
15
20
|
|
|
16
21
|
File.open plugin_script_path, "wb" do |file|
|
|
17
|
-
file.puts "require_relative '#{Pathname.new(plugin).relative_path_from(Pathname.new(
|
|
22
|
+
file.puts "require_relative '#{Pathname.new(plugin).relative_path_from(Pathname.new(plugin_script_dir))}'"
|
|
18
23
|
end
|
|
19
24
|
|
|
20
25
|
verbose plugin_script_path
|
|
@@ -23,5 +28,21 @@ module Gem::InstallerUninstallerUtils
|
|
|
23
28
|
|
|
24
29
|
def remove_plugins_for(spec, plugins_dir)
|
|
25
30
|
FileUtils.rm_f Gem::Util.glob_files_in_dir("#{spec.name}#{Gem.plugin_suffix_pattern}", plugins_dir)
|
|
31
|
+
FileUtils.rm_f Gem::Util.glob_files_in_dir("#{spec.name}#{Gem.plugin_suffix_pattern}", ruby_abi_plugin_dir_for(spec, plugins_dir))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def plugin_stub_dir_for(spec, plugins_dir)
|
|
37
|
+
full_spec = spec.to_spec
|
|
38
|
+
return plugins_dir unless Gem::ContentAddress.content_addressed?(full_spec)
|
|
39
|
+
|
|
40
|
+
File.join plugins_dir, full_spec.ruby_abi
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def ruby_abi_plugin_dir_for(spec, plugins_dir)
|
|
44
|
+
full_spec = spec.to_spec
|
|
45
|
+
ruby_abi = Gem::ContentAddress.content_addressed?(full_spec) ? full_spec.ruby_abi : Gem.ruby_abi
|
|
46
|
+
File.join plugins_dir, ruby_abi
|
|
26
47
|
end
|
|
27
48
|
end
|
data/lib/rubygems/name_tuple.rb
CHANGED
|
@@ -2,27 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
##
|
|
4
4
|
#
|
|
5
|
-
# Represents a gem of name +name+ at +version+ of +platform
|
|
6
|
-
#
|
|
5
|
+
# Represents a gem of name +name+ at +version+ of +platform+, optionally
|
|
6
|
+
# carrying a +content_address+ and +ruby_abi+ for content-addressable gems.
|
|
7
|
+
# These wrap the data returned from the indexes.
|
|
7
8
|
|
|
8
9
|
class Gem::NameTuple
|
|
9
|
-
def initialize(name, version, platform = Gem::Platform::RUBY)
|
|
10
|
+
def initialize(name, version, platform = Gem::Platform::RUBY, content_address: nil, ruby_abi: nil)
|
|
10
11
|
@name = name
|
|
11
12
|
@version = version
|
|
12
13
|
|
|
13
14
|
platform &&= platform.to_s
|
|
14
15
|
platform = Gem::Platform::RUBY if !platform || platform.empty?
|
|
15
16
|
@platform = platform
|
|
17
|
+
@content_address = content_address unless content_address.nil?
|
|
18
|
+
@ruby_abi = ruby_abi unless ruby_abi.nil?
|
|
16
19
|
end
|
|
17
20
|
|
|
18
|
-
attr_reader :name, :version, :platform
|
|
21
|
+
attr_reader :name, :version, :platform, :content_address, :ruby_abi
|
|
19
22
|
|
|
20
23
|
##
|
|
21
|
-
# Turn an array of
|
|
22
|
-
# NameTuple objects
|
|
24
|
+
# Turn an array of tuples into an array of NameTuple objects. Accepts:
|
|
25
|
+
# * Gem::NameTuple objects (passed through as-is)
|
|
26
|
+
# * 3-element arrays: [name, version, platform]
|
|
27
|
+
# * 5-element arrays: [name, version, platform, content_address, ruby_abi]
|
|
23
28
|
|
|
24
29
|
def self.from_list(list)
|
|
25
|
-
list.map
|
|
30
|
+
list.map do |tuple|
|
|
31
|
+
case tuple
|
|
32
|
+
when Gem::NameTuple
|
|
33
|
+
tuple
|
|
34
|
+
when Array
|
|
35
|
+
case tuple.length
|
|
36
|
+
when 3, 5
|
|
37
|
+
new(tuple[0], tuple[1], tuple[2], content_address: tuple[3], ruby_abi: tuple[4])
|
|
38
|
+
else
|
|
39
|
+
raise ArgumentError, "Expected a 3- or 5-element tuple, got #{tuple.length}"
|
|
40
|
+
end
|
|
41
|
+
else
|
|
42
|
+
raise ArgumentError, "Expected a Gem::NameTuple or Array, got #{tuple.class}"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
26
45
|
end
|
|
27
46
|
|
|
28
47
|
##
|
|
@@ -30,7 +49,7 @@ class Gem::NameTuple
|
|
|
30
49
|
# [name, version, platform] tuples.
|
|
31
50
|
|
|
32
51
|
def self.to_basic(list)
|
|
33
|
-
list.map
|
|
52
|
+
list.map {|tuple| [tuple.name, tuple.version, tuple.platform] }
|
|
34
53
|
end
|
|
35
54
|
|
|
36
55
|
##
|
|
@@ -46,8 +65,9 @@ class Gem::NameTuple
|
|
|
46
65
|
# of Gem::Specification#full_name.
|
|
47
66
|
|
|
48
67
|
def full_name
|
|
49
|
-
|
|
50
|
-
|
|
68
|
+
if @content_address
|
|
69
|
+
"#{@name}-#{@version}-#{@content_address}"
|
|
70
|
+
elsif @platform.nil? || @platform.empty? || @platform == Gem::Platform::RUBY
|
|
51
71
|
"#{@name}-#{@version}"
|
|
52
72
|
else
|
|
53
73
|
"#{@name}-#{@version}-#{@platform}"
|
|
@@ -75,41 +95,58 @@ class Gem::NameTuple
|
|
|
75
95
|
end
|
|
76
96
|
|
|
77
97
|
##
|
|
78
|
-
# Convert back to the [name, version, platform]
|
|
98
|
+
# Convert back to the tuple array. Returns [name, version, platform] for
|
|
99
|
+
# non-content-addressable gems, or [name, version, platform, content_address,
|
|
100
|
+
# ruby_abi] for content-addressable gems.
|
|
79
101
|
|
|
80
102
|
def to_a
|
|
81
|
-
|
|
103
|
+
if @content_address
|
|
104
|
+
[@name, @version, @platform, @content_address, @ruby_abi]
|
|
105
|
+
else
|
|
106
|
+
[@name, @version, @platform]
|
|
107
|
+
end
|
|
82
108
|
end
|
|
83
109
|
|
|
84
110
|
alias_method :deconstruct, :to_a
|
|
85
111
|
|
|
86
112
|
def deconstruct_keys(keys)
|
|
87
|
-
{
|
|
113
|
+
{
|
|
114
|
+
name: @name,
|
|
115
|
+
version: @version,
|
|
116
|
+
platform: @platform,
|
|
117
|
+
content_address: @content_address,
|
|
118
|
+
ruby_abi: @ruby_abi,
|
|
119
|
+
}
|
|
88
120
|
end
|
|
89
121
|
|
|
90
122
|
def inspect # :nodoc:
|
|
91
|
-
"#<Gem::NameTuple
|
|
123
|
+
"#<Gem::NameTuple name=#{@name} version=#{@version} platform=#{@platform} content_address=#{@content_address} ruby_abi=#{@ruby_abi}>"
|
|
92
124
|
end
|
|
93
125
|
|
|
94
126
|
alias_method :to_s, :inspect # :nodoc:
|
|
95
127
|
|
|
96
128
|
def <=>(other)
|
|
97
|
-
|
|
98
|
-
|
|
129
|
+
sort_key <=> other.sort_key
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def sort_key # :nodoc:
|
|
133
|
+
[@name, @version, Gem::Platform.sort_priority(@platform), @content_address.to_s, @ruby_abi.to_s]
|
|
99
134
|
end
|
|
100
135
|
|
|
101
136
|
include Comparable
|
|
102
137
|
|
|
103
138
|
##
|
|
104
139
|
# Compare with +other+. Supports another NameTuple or an Array
|
|
105
|
-
# in the [name, version, platform] format.
|
|
140
|
+
# in the [name, version, platform, content_address, ruby_abi] format.
|
|
106
141
|
|
|
107
142
|
def ==(other)
|
|
108
143
|
case other
|
|
109
144
|
when self.class
|
|
110
145
|
@name == other.name &&
|
|
111
146
|
@version == other.version &&
|
|
112
|
-
@platform == other.platform
|
|
147
|
+
@platform == other.platform &&
|
|
148
|
+
@content_address == other.content_address &&
|
|
149
|
+
@ruby_abi == other.ruby_abi
|
|
113
150
|
when Array
|
|
114
151
|
to_a == other
|
|
115
152
|
else
|
data/lib/rubygems/package/old.rb
CHANGED
|
@@ -59,7 +59,7 @@ class Gem::Package::Old < Gem::Package
|
|
|
59
59
|
header = file_list io
|
|
60
60
|
raise Gem::Exception, errstr unless header
|
|
61
61
|
|
|
62
|
-
#
|
|
62
|
+
# install_location expects an already-resolved destination dir
|
|
63
63
|
destination_dir = File.realpath(destination_dir)
|
|
64
64
|
|
|
65
65
|
header.each do |entry|
|