rubygems-update 3.1.0 → 3.2.0
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/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/History.txt +435 -179
- data/Manifest.txt +44 -77
- data/POLICIES.md +2 -9
- data/README.md +5 -5
- data/Rakefile +50 -83
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1590 -1400
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +3 -3
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +25 -7
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +56 -20
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +1 -7
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +14 -0
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +7 -16
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +75 -11
- data/bundler/lib/bundler/cli/info.rb +8 -4
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +12 -18
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +1 -1
- data/bundler/lib/bundler/cli/outdated.rb +2 -4
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +2 -0
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
- data/bundler/lib/bundler/definition.rb +47 -61
- data/bundler/lib/bundler/dep_proxy.rb +1 -1
- data/bundler/lib/bundler/dependency.rb +0 -9
- data/bundler/lib/bundler/dsl.rb +5 -9
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +26 -2
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +0 -3
- data/bundler/lib/bundler/fetcher.rb +4 -3
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher/index.rb +3 -4
- data/bundler/lib/bundler/friendly_errors.rb +22 -13
- data/bundler/lib/bundler/gem_helper.rb +33 -19
- data/bundler/lib/bundler/gem_helpers.rb +6 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +6 -2
- data/bundler/lib/bundler/injector.rb +22 -4
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer.rb +35 -32
- data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
- data/bundler/lib/bundler/installer/standalone.rb +2 -2
- data/bundler/lib/bundler/lazy_specification.rb +20 -9
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +1 -1
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +0 -0
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +30 -5
- data/bundler/lib/bundler/plugin/api/source.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +10 -1
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +1 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -2
- data/bundler/lib/bundler/resolver.rb +32 -10
- data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +53 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +35 -25
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -46
- data/bundler/lib/bundler/setup.rb +5 -0
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +1 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +57 -60
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +8 -10
- data/bundler/lib/bundler/source/rubygems.rb +13 -16
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +2 -2
- data/bundler/lib/bundler/spec_set.rb +2 -1
- data/bundler/lib/bundler/stub_specification.rb +17 -5
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +7 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +13 -5
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +5 -5
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +72 -208
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/man/bundle-add.1 +1 -1
- data/bundler/man/bundle-binstubs.1 +5 -3
- data/bundler/man/bundle-cache.1 +1 -1
- data/bundler/man/bundle-check.1 +1 -1
- data/bundler/man/bundle-clean.1 +1 -1
- data/bundler/man/bundle-config.1 +16 -25
- data/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/man/bundle-exec.1 +1 -1
- data/bundler/man/bundle-gem.1 +25 -3
- data/bundler/man/bundle-info.1 +1 -1
- data/bundler/man/bundle-init.1 +1 -1
- data/bundler/man/bundle-inject.1 +1 -1
- data/bundler/man/bundle-install.1 +30 -3
- data/bundler/man/bundle-list.1 +1 -1
- data/bundler/man/bundle-lock.1 +1 -1
- data/bundler/man/bundle-open.1 +1 -1
- data/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/man/bundle-platform.1 +1 -1
- data/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/man/bundle-remove.1 +1 -1
- data/bundler/man/bundle-show.1 +1 -1
- data/bundler/man/bundle-update.1 +1 -1
- data/bundler/man/bundle-viz.1 +1 -1
- data/bundler/man/bundle.1 +1 -1
- data/bundler/man/gemfile.5 +4 -4
- data/lib/rubygems.rb +138 -187
- data/lib/rubygems/available_set.rb +4 -6
- data/lib/rubygems/basic_specification.rb +12 -10
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +17 -17
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +40 -20
- data/lib/rubygems/commands/cert_command.rb +2 -10
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +11 -7
- data/lib/rubygems/commands/contents_command.rb +4 -6
- data/lib/rubygems/commands/dependency_command.rb +6 -8
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +0 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +8 -5
- data/lib/rubygems/commands/install_command.rb +3 -5
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +1 -3
- data/lib/rubygems/commands/mirror_command.rb +0 -2
- data/lib/rubygems/commands/open_command.rb +0 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -2
- data/lib/rubygems/commands/owner_command.rb +9 -3
- data/lib/rubygems/commands/pristine_command.rb +11 -5
- data/lib/rubygems/commands/push_command.rb +10 -46
- data/lib/rubygems/commands/query_command.rb +14 -344
- data/lib/rubygems/commands/rdoc_command.rb +0 -2
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +3 -1
- data/lib/rubygems/commands/setup_command.rb +158 -70
- data/lib/rubygems/commands/signin_command.rb +0 -2
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +9 -7
- data/lib/rubygems/commands/specification_command.rb +8 -4
- data/lib/rubygems/commands/stale_command.rb +1 -3
- data/lib/rubygems/commands/uninstall_command.rb +2 -4
- data/lib/rubygems/commands/unpack_command.rb +1 -3
- data/lib/rubygems/commands/update_command.rb +59 -14
- data/lib/rubygems/commands/which_command.rb +0 -2
- data/lib/rubygems/commands/yank_command.rb +4 -6
- data/lib/rubygems/config_file.rb +11 -4
- data/lib/rubygems/core_ext/kernel_require.rb +29 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/defaults.rb +101 -7
- data/lib/rubygems/dependency.rb +3 -8
- data/lib/rubygems/dependency_installer.rb +5 -78
- data/lib/rubygems/dependency_list.rb +7 -9
- data/lib/rubygems/deprecate.rb +46 -1
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +3 -14
- data/lib/rubygems/exceptions.rb +2 -33
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +16 -35
- data/lib/rubygems/ext/cmake_builder.rb +5 -7
- data/lib/rubygems/ext/configure_builder.rb +4 -6
- data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
- data/lib/rubygems/ext/rake_builder.rb +3 -5
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +91 -15
- data/lib/rubygems/indexer.rb +1 -22
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +59 -57
- data/lib/rubygems/installer_test_case.rb +25 -11
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +0 -6
- data/lib/rubygems/name_tuple.rb +3 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +14 -25
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +4 -6
- data/lib/rubygems/package/tar_reader.rb +0 -3
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +2 -4
- data/lib/rubygems/package/tar_writer.rb +2 -12
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +1 -3
- data/lib/rubygems/platform.rb +21 -12
- data/lib/rubygems/psych_tree.rb +0 -2
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +10 -27
- data/lib/rubygems/request.rb +4 -11
- data/lib/rubygems/request/connection_pools.rb +1 -5
- data/lib/rubygems/request/http_pool.rb +0 -2
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request_set.rb +5 -7
- data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
- data/lib/rubygems/request_set/lockfile.rb +8 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
- data/lib/rubygems/requirement.rb +20 -21
- data/lib/rubygems/resolver.rb +8 -11
- data/lib/rubygems/resolver/activation_request.rb +9 -3
- data/lib/rubygems/resolver/api_set.rb +4 -6
- data/lib/rubygems/resolver/api_specification.rb +21 -8
- data/lib/rubygems/resolver/best_set.rb +0 -2
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -4
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +11 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +4 -7
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +2 -4
- data/lib/rubygems/resolver/lock_specification.rb +0 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +0 -2
- data/lib/rubygems/resolver/specification.rb +1 -3
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +2 -8
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +5 -7
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +10 -12
- data/lib/rubygems/source.rb +13 -7
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +6 -7
- data/lib/rubygems/spec_fetcher.rb +19 -18
- data/lib/rubygems/specification.rb +113 -126
- data/lib/rubygems/specification_policy.rb +88 -30
- data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -5
- data/lib/rubygems/syck_hack.rb +0 -2
- data/lib/rubygems/test_case.rb +135 -118
- data/lib/rubygems/test_utilities.rb +6 -14
- data/lib/rubygems/uninstaller.rb +35 -16
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/uri_parser.rb +0 -2
- data/lib/rubygems/user_interaction.rb +1 -26
- data/lib/rubygems/util.rb +15 -3
- data/lib/rubygems/util/licenses.rb +4 -6
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/validator.rb +1 -3
- data/lib/rubygems/version.rb +5 -7
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +2 -2
- data/setup.rb +2 -7
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +40 -7
- data/test/rubygems/test_gem.rb +153 -106
- data/test/rubygems/test_gem_available_set.rb +3 -5
- data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
- data/test/rubygems/test_gem_command.rb +24 -7
- data/test/rubygems/test_gem_command_manager.rb +36 -5
- data/test/rubygems/test_gem_commands_build_command.rb +250 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
- data/test/rubygems/test_gem_commands_help_command.rb +15 -4
- data/test/rubygems/test_gem_commands_info_command.rb +6 -8
- data/test/rubygems/test_gem_commands_install_command.rb +32 -34
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -3
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
- data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
- data/test/rubygems/test_gem_commands_push_command.rb +38 -9
- data/test/rubygems/test_gem_commands_query_command.rb +12 -12
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +0 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +211 -124
- data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +116 -7
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
- data/test/rubygems/test_gem_config_file.rb +7 -12
- data/test/rubygems/test_gem_dependency.rb +0 -2
- data/test/rubygems/test_gem_dependency_installer.rb +90 -193
- data/test/rubygems/test_gem_dependency_list.rb +10 -12
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +26 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +14 -24
- data/test/rubygems/test_gem_gem_runner.rb +44 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +9 -15
- data/test/rubygems/test_gem_install_update_options.rb +14 -4
- data/test/rubygems/test_gem_installer.rb +265 -81
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +41 -39
- data/test/rubygems/test_gem_package_old.rb +4 -6
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
- data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +0 -2
- data/test/rubygems/test_gem_platform.rb +63 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
- data/test/rubygems/test_gem_request.rb +13 -17
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
- data/test/rubygems/test_gem_request_set.rb +72 -22
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
- data/test/rubygems/test_gem_requirement.rb +10 -4
- data/test/rubygems/test_gem_resolver.rb +6 -8
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_api_set.rb +11 -13
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -4
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +22 -24
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +10 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +10 -14
- data/test/rubygems/test_gem_silent_ui.rb +0 -2
- data/test/rubygems/test_gem_source.rb +17 -16
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
- data/test/rubygems/test_gem_source_git.rb +12 -13
- data/test/rubygems/test_gem_source_installed.rb +7 -9
- data/test/rubygems/test_gem_source_list.rb +1 -2
- data/test/rubygems/test_gem_source_local.rb +8 -10
- data/test/rubygems/test_gem_source_lock.rb +10 -12
- data/test/rubygems/test_gem_source_specific_file.rb +7 -9
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +182 -131
- data/test/rubygems/test_gem_stream_ui.rb +3 -3
- data/test/rubygems/test_gem_stub_specification.rb +4 -7
- data/test/rubygems/test_gem_text.rb +1 -3
- data/test/rubygems/test_gem_uninstaller.rb +134 -12
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +7 -7
- data/test/rubygems/test_gem_validator.rb +1 -3
- data/test/rubygems/test_gem_version.rb +1 -3
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -10
- data/test/rubygems/test_project_sanity.rb +7 -2
- data/test/rubygems/test_remote_fetch_error.rb +0 -2
- data/test/rubygems/test_require.rb +291 -56
- metadata +66 -100
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/man/bundle-add.1.txt +0 -58
- data/bundler/man/bundle-binstubs.1.txt +0 -48
- data/bundler/man/bundle-cache.1.txt +0 -78
- data/bundler/man/bundle-check.1.txt +0 -33
- data/bundler/man/bundle-clean.1.txt +0 -26
- data/bundler/man/bundle-config.1.txt +0 -528
- data/bundler/man/bundle-doctor.1.txt +0 -44
- data/bundler/man/bundle-exec.1.txt +0 -178
- data/bundler/man/bundle-gem.1.txt +0 -91
- data/bundler/man/bundle-info.1.txt +0 -21
- data/bundler/man/bundle-init.1.txt +0 -34
- data/bundler/man/bundle-inject.1.txt +0 -32
- data/bundler/man/bundle-install.1.txt +0 -401
- data/bundler/man/bundle-list.1.txt +0 -44
- data/bundler/man/bundle-lock.1.txt +0 -93
- data/bundler/man/bundle-open.1.txt +0 -29
- data/bundler/man/bundle-outdated.1.txt +0 -131
- data/bundler/man/bundle-platform.1.txt +0 -57
- data/bundler/man/bundle-pristine.1.txt +0 -44
- data/bundler/man/bundle-remove.1.txt +0 -34
- data/bundler/man/bundle-show.1.txt +0 -27
- data/bundler/man/bundle-update.1.txt +0 -390
- data/bundler/man/bundle-viz.1.txt +0 -39
- data/bundler/man/bundle.1.txt +0 -116
- data/bundler/man/gemfile.5.txt +0 -649
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/ubygems.rb +0 -14
- data/tmp/.keep +0 -0
- data/util/CL2notes +0 -55
- data/util/bisect +0 -10
- data/util/ci.sh +0 -62
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -63
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
data/lib/rubygems/installer.rb
CHANGED
@@ -6,12 +6,12 @@
|
|
6
6
|
#++
|
7
7
|
|
8
8
|
require 'rubygems/command'
|
9
|
+
require 'rubygems/installer_uninstaller_utils'
|
9
10
|
require 'rubygems/exceptions'
|
10
11
|
require 'rubygems/deprecate'
|
11
12
|
require 'rubygems/package'
|
12
13
|
require 'rubygems/ext'
|
13
14
|
require 'rubygems/user_interaction'
|
14
|
-
require 'fileutils'
|
15
15
|
|
16
16
|
##
|
17
17
|
# The installer installs the files contained in the .gem into the Gem.home.
|
@@ -27,7 +27,6 @@ require 'fileutils'
|
|
27
27
|
# file. See Gem.pre_install and Gem.post_install for details.
|
28
28
|
|
29
29
|
class Gem::Installer
|
30
|
-
|
31
30
|
extend Gem::Deprecate
|
32
31
|
|
33
32
|
##
|
@@ -43,10 +42,7 @@ class Gem::Installer
|
|
43
42
|
|
44
43
|
include Gem::UserInteraction
|
45
44
|
|
46
|
-
|
47
|
-
# Filename of the gem being installed.
|
48
|
-
|
49
|
-
attr_reader :gem
|
45
|
+
include Gem::InstallerUninstallerUtils
|
50
46
|
|
51
47
|
##
|
52
48
|
# The directory a gem's executables will be installed into
|
@@ -75,7 +71,6 @@ class Gem::Installer
|
|
75
71
|
@install_lock = Mutex.new
|
76
72
|
|
77
73
|
class << self
|
78
|
-
|
79
74
|
##
|
80
75
|
# True if we've warned about PATH not including Gem.bindir
|
81
76
|
|
@@ -100,7 +95,6 @@ class Gem::Installer
|
|
100
95
|
def exec_format
|
101
96
|
@exec_format ||= Gem.default_exec_format
|
102
97
|
end
|
103
|
-
|
104
98
|
end
|
105
99
|
|
106
100
|
##
|
@@ -113,7 +107,6 @@ class Gem::Installer
|
|
113
107
|
end
|
114
108
|
|
115
109
|
class FakePackage
|
116
|
-
|
117
110
|
attr_accessor :spec
|
118
111
|
|
119
112
|
attr_accessor :dir_mode
|
@@ -139,7 +132,6 @@ class Gem::Installer
|
|
139
132
|
|
140
133
|
def copy_to(path)
|
141
134
|
end
|
142
|
-
|
143
135
|
end
|
144
136
|
|
145
137
|
##
|
@@ -180,15 +172,7 @@ class Gem::Installer
|
|
180
172
|
require 'fileutils'
|
181
173
|
|
182
174
|
@options = options
|
183
|
-
|
184
|
-
security_policy = options[:security_policy]
|
185
|
-
@package = Gem::Package.new package, security_policy
|
186
|
-
if $VERBOSE
|
187
|
-
warn "constructing an Installer object with a string is deprecated. Please use Gem::Installer.at (called from: #{caller.first})"
|
188
|
-
end
|
189
|
-
else
|
190
|
-
@package = package
|
191
|
-
end
|
175
|
+
@package = package
|
192
176
|
|
193
177
|
process_options
|
194
178
|
|
@@ -199,6 +183,7 @@ class Gem::Installer
|
|
199
183
|
if options[:user_install]
|
200
184
|
@gem_home = Gem.user_dir
|
201
185
|
@bin_dir = Gem.bindir gem_home unless options[:bin_dir]
|
186
|
+
@plugins_dir = Gem.plugindir(gem_home)
|
202
187
|
check_that_user_bin_dir_is_in_path
|
203
188
|
end
|
204
189
|
end
|
@@ -330,6 +315,7 @@ class Gem::Installer
|
|
330
315
|
end
|
331
316
|
|
332
317
|
generate_bin
|
318
|
+
generate_plugins
|
333
319
|
|
334
320
|
unless @options[:install_as_default]
|
335
321
|
write_spec
|
@@ -419,7 +405,7 @@ class Gem::Installer
|
|
419
405
|
|
420
406
|
def installation_satisfies_dependency?(dependency)
|
421
407
|
return true if @options[:development] and dependency.type == :development
|
422
|
-
return true if installed_specs.detect {
|
408
|
+
return true if installed_specs.detect {|s| dependency.matches_spec? s }
|
423
409
|
return false if @only_install_dir
|
424
410
|
not dependency.matching_specs.empty?
|
425
411
|
end
|
@@ -431,7 +417,7 @@ class Gem::Installer
|
|
431
417
|
@gem_dir = directory
|
432
418
|
extract_files
|
433
419
|
end
|
434
|
-
|
420
|
+
rubygems_deprecate :unpack
|
435
421
|
|
436
422
|
##
|
437
423
|
# The location of the spec file that is installed.
|
@@ -446,7 +432,7 @@ class Gem::Installer
|
|
446
432
|
#
|
447
433
|
|
448
434
|
def default_spec_file
|
449
|
-
File.join
|
435
|
+
File.join gem_home, "specifications", "default", "#{spec.full_name}.gemspec"
|
450
436
|
end
|
451
437
|
|
452
438
|
##
|
@@ -491,13 +477,7 @@ class Gem::Installer
|
|
491
477
|
def generate_bin # :nodoc:
|
492
478
|
return if spec.executables.nil? or spec.executables.empty?
|
493
479
|
|
494
|
-
|
495
|
-
Dir.mkdir @bin_dir, *[options[:dir_mode] && 0755].compact
|
496
|
-
rescue SystemCallError
|
497
|
-
raise unless File.directory? @bin_dir
|
498
|
-
end
|
499
|
-
|
500
|
-
raise Gem::FilePermissionError.new(@bin_dir) unless File.writable? @bin_dir
|
480
|
+
ensure_writable_dir @bin_dir
|
501
481
|
|
502
482
|
spec.executables.each do |filename|
|
503
483
|
filename.tap(&Gem::UNTAINT)
|
@@ -511,7 +491,11 @@ class Gem::Installer
|
|
511
491
|
|
512
492
|
mode = File.stat(bin_path).mode
|
513
493
|
dir_mode = options[:prog_mode] || (mode | 0111)
|
514
|
-
|
494
|
+
|
495
|
+
unless dir_mode == mode
|
496
|
+
require 'fileutils'
|
497
|
+
FileUtils.chmod dir_mode, bin_path
|
498
|
+
end
|
515
499
|
|
516
500
|
check_executable_overwrite filename
|
517
501
|
|
@@ -520,7 +504,19 @@ class Gem::Installer
|
|
520
504
|
else
|
521
505
|
generate_bin_symlink filename, @bin_dir
|
522
506
|
end
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
def generate_plugins # :nodoc:
|
511
|
+
latest = Gem::Installer.install_lock.synchronize { Gem::Specification.latest_spec_for(spec.name) }
|
512
|
+
return if latest && latest.version > spec.version
|
523
513
|
|
514
|
+
ensure_writable_dir @plugins_dir
|
515
|
+
|
516
|
+
if spec.plugins.empty?
|
517
|
+
remove_plugins_for(spec, @plugins_dir)
|
518
|
+
else
|
519
|
+
regenerate_plugins_for(spec, @plugins_dir)
|
524
520
|
end
|
525
521
|
end
|
526
522
|
|
@@ -534,6 +530,7 @@ class Gem::Installer
|
|
534
530
|
def generate_bin_script(filename, bindir)
|
535
531
|
bin_script_path = File.join bindir, formatted_program_filename(filename)
|
536
532
|
|
533
|
+
require 'fileutils'
|
537
534
|
FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
|
538
535
|
|
539
536
|
File.open bin_script_path, 'wb', 0755 do |file|
|
@@ -587,9 +584,9 @@ class Gem::Installer
|
|
587
584
|
def shebang(bin_file_name)
|
588
585
|
ruby_name = RbConfig::CONFIG['ruby_install_name'] if @env_shebang
|
589
586
|
path = File.join gem_dir, spec.bindir, bin_file_name
|
590
|
-
first_line = File.open(path, "rb") {|file| file.gets}
|
587
|
+
first_line = File.open(path, "rb") {|file| file.gets } || ""
|
591
588
|
|
592
|
-
if
|
589
|
+
if first_line.start_with?("#!")
|
593
590
|
# Preserve extra words on shebang line, like "-w". Thanks RPA.
|
594
591
|
shebang = first_line.sub(/\A\#!.*?ruby\S*((\s+\S+)+)/, "#!#{Gem.ruby}")
|
595
592
|
opts = $1
|
@@ -677,13 +674,14 @@ class Gem::Installer
|
|
677
674
|
:env_shebang => false,
|
678
675
|
:force => false,
|
679
676
|
:only_install_dir => false,
|
680
|
-
:post_install_message => true
|
677
|
+
:post_install_message => true,
|
681
678
|
}.merge options
|
682
679
|
|
683
680
|
@env_shebang = options[:env_shebang]
|
684
681
|
@force = options[:force]
|
685
682
|
@install_dir = options[:install_dir]
|
686
683
|
@gem_home = options[:install_dir] || Gem.dir
|
684
|
+
@plugins_dir = Gem.plugindir(@gem_home)
|
687
685
|
@ignore_dependencies = options[:ignore_dependencies]
|
688
686
|
@format_executable = options[:format_executable]
|
689
687
|
@wrappers = options[:wrappers]
|
@@ -699,20 +697,22 @@ class Gem::Installer
|
|
699
697
|
@build_args = options[:build_args] || Gem::Command.build_args
|
700
698
|
|
701
699
|
unless @build_root.nil?
|
702
|
-
|
703
|
-
@
|
704
|
-
@
|
705
|
-
|
706
|
-
alert_warning "You build with buildroot.\n Build root: #{@build_root}\n Bin dir: #{@bin_dir}\n Gem home: #{@gem_home}"
|
700
|
+
@bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/, ''))
|
701
|
+
@gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/, ''))
|
702
|
+
@plugins_dir = File.join(@build_root, @plugins_dir.gsub(/^[a-zA-Z]:/, ''))
|
703
|
+
alert_warning "You build with buildroot.\n Build root: #{@build_root}\n Bin dir: #{@bin_dir}\n Gem home: #{@gem_home}\n Plugins dir: #{@plugins_dir}"
|
707
704
|
end
|
708
705
|
end
|
709
706
|
|
710
707
|
def check_that_user_bin_dir_is_in_path # :nodoc:
|
708
|
+
return if self.class.path_warning
|
709
|
+
|
711
710
|
user_bin_dir = @bin_dir || Gem.bindir(gem_home)
|
712
|
-
user_bin_dir = user_bin_dir.
|
713
|
-
File::ALT_SEPARATOR
|
711
|
+
user_bin_dir = user_bin_dir.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
714
712
|
|
715
713
|
path = ENV['PATH']
|
714
|
+
path = path.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
715
|
+
|
716
716
|
if Gem.win_platform?
|
717
717
|
path = path.downcase
|
718
718
|
user_bin_dir = user_bin_dir.downcase
|
@@ -722,10 +722,8 @@ class Gem::Installer
|
|
722
722
|
|
723
723
|
unless path.include? user_bin_dir
|
724
724
|
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV['HOME'], '~'))
|
725
|
-
|
726
|
-
|
727
|
-
self.class.path_warning = true
|
728
|
-
end
|
725
|
+
alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t gem executables will not run."
|
726
|
+
self.class.path_warning = true
|
729
727
|
end
|
730
728
|
end
|
731
729
|
end
|
@@ -810,7 +808,7 @@ TEXT
|
|
810
808
|
ruby_exe = "ruby.exe" if ruby_exe.empty?
|
811
809
|
|
812
810
|
if File.exist?(File.join bindir, ruby_exe)
|
813
|
-
# stub & ruby.exe
|
811
|
+
# stub & ruby.exe within same folder. Portable
|
814
812
|
<<-TEXT
|
815
813
|
@ECHO OFF
|
816
814
|
@"%~dp0#{ruby_exe}" "%~dpn0" %*
|
@@ -844,18 +842,6 @@ TEXT
|
|
844
842
|
builder.build_extensions
|
845
843
|
end
|
846
844
|
|
847
|
-
##
|
848
|
-
# Logs the build +output+ in +build_dir+, then raises Gem::Ext::BuildError.
|
849
|
-
#
|
850
|
-
# TODO: Delete this for RubyGems 4. It remains for API compatibility
|
851
|
-
|
852
|
-
def extension_build_error(build_dir, output, backtrace = nil) # :nodoc:
|
853
|
-
builder = Gem::Ext::Builder.new spec, @build_args
|
854
|
-
|
855
|
-
builder.build_error build_dir, output, backtrace
|
856
|
-
end
|
857
|
-
deprecate :extension_build_error, :none, 2018, 12
|
858
|
-
|
859
845
|
##
|
860
846
|
# Reads the file index and extracts each file into the gem directory.
|
861
847
|
#
|
@@ -895,6 +881,13 @@ TEXT
|
|
895
881
|
gem_dir.to_s
|
896
882
|
end
|
897
883
|
|
884
|
+
##
|
885
|
+
# Filename of the gem being installed.
|
886
|
+
|
887
|
+
def gem
|
888
|
+
@package.gem.path
|
889
|
+
end
|
890
|
+
|
898
891
|
##
|
899
892
|
# Performs various checks before installing the gem such as the install
|
900
893
|
# repository is writable and its directories exist, required Ruby and
|
@@ -959,4 +952,13 @@ TEXT
|
|
959
952
|
@package.copy_to cache_file
|
960
953
|
end
|
961
954
|
|
955
|
+
def ensure_writable_dir(dir) # :nodoc:
|
956
|
+
begin
|
957
|
+
Dir.mkdir dir, *[options[:dir_mode] && 0755].compact
|
958
|
+
rescue SystemCallError
|
959
|
+
raise unless File.directory? dir
|
960
|
+
end
|
961
|
+
|
962
|
+
raise Gem::FilePermissionError.new(dir) unless File.writable? dir
|
963
|
+
end
|
962
964
|
end
|
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
|
|
3
3
|
require 'rubygems/installer'
|
4
4
|
|
5
5
|
class Gem::Installer
|
6
|
-
|
7
6
|
##
|
8
7
|
# Available through requiring rubygems/installer_test_case
|
9
8
|
|
@@ -58,14 +57,12 @@ class Gem::Installer
|
|
58
57
|
# Available through requiring rubygems/installer_test_case
|
59
58
|
|
60
59
|
attr_writer :wrappers
|
61
|
-
|
62
60
|
end
|
63
61
|
|
64
62
|
##
|
65
63
|
# A test case for Gem::Installer.
|
66
64
|
|
67
65
|
class Gem::InstallerTestCase < Gem::TestCase
|
68
|
-
|
69
66
|
def setup
|
70
67
|
super
|
71
68
|
|
@@ -111,9 +108,9 @@ class Gem::InstallerTestCase < Gem::TestCase
|
|
111
108
|
#
|
112
109
|
# And returns a Gem::Installer for the @spec that installs into @gemhome
|
113
110
|
|
114
|
-
def setup_base_installer
|
111
|
+
def setup_base_installer(force = true)
|
115
112
|
@gem = setup_base_gem
|
116
|
-
util_installer @spec, @gemhome
|
113
|
+
util_installer @spec, @gemhome, false, force
|
117
114
|
end
|
118
115
|
|
119
116
|
##
|
@@ -171,10 +168,10 @@ class Gem::InstallerTestCase < Gem::TestCase
|
|
171
168
|
##
|
172
169
|
# Sets up the base @gem, builds it and returns an installer for it.
|
173
170
|
#
|
174
|
-
def util_setup_installer
|
171
|
+
def util_setup_installer(&block)
|
175
172
|
@gem = setup_base_gem
|
176
173
|
|
177
|
-
util_setup_gem
|
174
|
+
util_setup_gem(&block)
|
178
175
|
end
|
179
176
|
|
180
177
|
##
|
@@ -185,7 +182,7 @@ class Gem::InstallerTestCase < Gem::TestCase
|
|
185
182
|
# lib/code.rb
|
186
183
|
# ext/a/mkrf_conf.rb
|
187
184
|
|
188
|
-
def util_setup_gem(ui = @ui)
|
185
|
+
def util_setup_gem(ui = @ui, force = true)
|
189
186
|
@spec.files << File.join('lib', 'code.rb')
|
190
187
|
@spec.extensions << File.join('ext', 'a', 'mkrf_conf.rb')
|
191
188
|
|
@@ -217,17 +214,34 @@ class Gem::InstallerTestCase < Gem::TestCase
|
|
217
214
|
end
|
218
215
|
end
|
219
216
|
|
220
|
-
Gem::Installer.at @gem
|
217
|
+
Gem::Installer.at @gem, :force => force
|
221
218
|
end
|
222
219
|
|
223
220
|
##
|
224
221
|
# Creates an installer for +spec+ that will install into +gem_home+. If
|
225
222
|
# +user+ is true a user-install will be performed.
|
226
223
|
|
227
|
-
def util_installer(spec, gem_home, user=false)
|
224
|
+
def util_installer(spec, gem_home, user=false, force=true)
|
228
225
|
Gem::Installer.at(spec.cache_file,
|
229
226
|
:install_dir => gem_home,
|
230
|
-
:user_install => user
|
227
|
+
:user_install => user,
|
228
|
+
:force => force)
|
231
229
|
end
|
232
230
|
|
231
|
+
@@symlink_supported = nil
|
232
|
+
|
233
|
+
# This is needed for Windows environment without symlink support enabled (the default
|
234
|
+
# for non admin) to be able to skip test for features using symlinks.
|
235
|
+
def symlink_supported?
|
236
|
+
if @@symlink_supported.nil?
|
237
|
+
begin
|
238
|
+
File.symlink("", "")
|
239
|
+
rescue Errno::ENOENT, Errno::EEXIST
|
240
|
+
@@symlink_supported = true
|
241
|
+
rescue NotImplementedError, SystemCallError
|
242
|
+
@@symlink_supported = false
|
243
|
+
end
|
244
|
+
end
|
245
|
+
@@symlink_supported
|
246
|
+
end
|
233
247
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
##
|
4
|
+
# Helper methods for both Gem::Installer and Gem::Uninstaller
|
5
|
+
|
6
|
+
module Gem::InstallerUninstallerUtils
|
7
|
+
|
8
|
+
def regenerate_plugins_for(spec, plugins_dir)
|
9
|
+
spec.plugins.each do |plugin|
|
10
|
+
plugin_script_path = File.join plugins_dir, "#{spec.name}_plugin#{File.extname(plugin)}"
|
11
|
+
|
12
|
+
File.open plugin_script_path, 'wb' do |file|
|
13
|
+
file.puts "require '#{plugin}'"
|
14
|
+
end
|
15
|
+
|
16
|
+
verbose plugin_script_path
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def remove_plugins_for(spec, plugins_dir)
|
21
|
+
FileUtils.rm_f Gem::Util.glob_files_in_dir("#{spec.name}#{Gem.plugin_suffix_pattern}", plugins_dir)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -26,7 +26,7 @@ module Gem::LocalRemoteOptions
|
|
26
26
|
|
27
27
|
valid_uri_schemes = ["http", "https", "file", "s3"]
|
28
28
|
unless valid_uri_schemes.include?(uri.scheme)
|
29
|
-
msg = "Invalid uri scheme for #{value}\nPreface URLs with one of #{valid_uri_schemes.map{|s| "#{s}://"}}"
|
29
|
+
msg = "Invalid uri scheme for #{value}\nPreface URLs with one of #{valid_uri_schemes.map{|s| "#{s}://" }}"
|
30
30
|
raise ArgumentError, msg
|
31
31
|
end
|
32
32
|
|
data/lib/rubygems/mock_gem_ui.rb
CHANGED
@@ -6,27 +6,22 @@ require 'rubygems/user_interaction'
|
|
6
6
|
# retrieval during tests.
|
7
7
|
|
8
8
|
class Gem::MockGemUi < Gem::StreamUI
|
9
|
-
|
10
9
|
##
|
11
10
|
# Raised when you haven't provided enough input to your MockGemUi
|
12
11
|
|
13
12
|
class InputEOFError < RuntimeError
|
14
|
-
|
15
13
|
def initialize(question)
|
16
14
|
super "Out of input for MockGemUi on #{question.inspect}"
|
17
15
|
end
|
18
|
-
|
19
16
|
end
|
20
17
|
|
21
18
|
class TermError < RuntimeError
|
22
|
-
|
23
19
|
attr_reader :exit_code
|
24
20
|
|
25
21
|
def initialize(exit_code)
|
26
22
|
super
|
27
23
|
@exit_code = exit_code
|
28
24
|
end
|
29
|
-
|
30
25
|
end
|
31
26
|
class SystemExitException < RuntimeError; end
|
32
27
|
|
@@ -87,5 +82,4 @@ class Gem::MockGemUi < Gem::StreamUI
|
|
87
82
|
raise TermError, status if status != 0
|
88
83
|
raise SystemExitException
|
89
84
|
end
|
90
|
-
|
91
85
|
end
|