rubygems-update 3.1.2 → 3.2.6
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/{History.txt → CHANGELOG.md} +756 -489
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/Manifest.txt +75 -104
- data/POLICIES.md +6 -12
- data/README.md +5 -5
- data/Rakefile +64 -92
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1636 -1422
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +4 -4
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +32 -8
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +55 -21
- 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 +4 -4
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +86 -11
- data/bundler/lib/bundler/cli/info.rb +15 -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 +16 -13
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/outdated.rb +87 -66
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +3 -1
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +5 -13
- data/bundler/lib/bundler/definition.rb +66 -82
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +3 -10
- 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 +36 -25
- data/bundler/lib/bundler/gem_version_promoter.rb +4 -4
- 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 +35 -11
- 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 → lib/bundler/man}/bundle-add.1 +1 -1
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/{man → lib/bundler/man}/index.txt +0 -0
- 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 +43 -19
- data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +69 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +26 -61
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -46
- 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 +23 -21
- data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +23 -17
- 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 +8 -10
- data/bundler/lib/bundler/stub_specification.rb +17 -7
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -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 +15 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -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 +48 -46
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -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/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 -4
- data/lib/rubygems/commands/pristine_command.rb +11 -5
- data/lib/rubygems/commands/push_command.rb +10 -47
- 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 +101 -74
- 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 -7
- 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 +6 -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 +21 -39
- data/lib/rubygems/ext/cmake_builder.rb +6 -9
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +102 -21
- data/lib/rubygems/indexer.rb +1 -22
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +59 -80
- 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 -16
- 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 +14 -29
- 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 +7 -20
- 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 +21 -22
- data/lib/rubygems/resolver.rb +14 -12
- data/lib/rubygems/resolver/activation_request.rb +9 -3
- data/lib/rubygems/resolver/api_set.rb +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- data/lib/rubygems/resolver/best_set.rb +2 -4
- 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 +29 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +60 -13
- 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 +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -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 +16 -13
- data/lib/rubygems/source.rb +23 -12
- 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 +4 -7
- data/lib/rubygems/spec_fetcher.rb +19 -18
- data/lib/rubygems/specification.rb +122 -131
- 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 +120 -134
- data/lib/rubygems/test_utilities.rb +12 -19
- 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 +3 -3
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- 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 +156 -99
- 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 +163 -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 +77 -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 +160 -135
- 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 +116 -239
- 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 +50 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -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 +258 -115
- 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 +71 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
- 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 +43 -3
- 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 +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
- 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 +19 -18
- 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 +188 -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
- data/test/test_changelog_generator.rb +17 -0
- metadata +79 -133
- 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 -43
- 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
@@ -25,12 +25,12 @@ module Gem::InstallUpdateOptions
|
|
25
25
|
end
|
26
26
|
|
27
27
|
add_option(:"Install/Update", '-n', '--bindir DIR',
|
28
|
-
'Directory where executables
|
29
|
-
'
|
28
|
+
'Directory where executables will be',
|
29
|
+
'placed when the gem is installed') do |value, options|
|
30
30
|
options[:bin_dir] = File.expand_path(value)
|
31
31
|
end
|
32
32
|
|
33
|
-
add_option(:"Install/Update",
|
33
|
+
add_option(:"Install/Update", '--document [TYPES]', Array,
|
34
34
|
'Generate documentation for installed gems',
|
35
35
|
'List the documentation types you wish to',
|
36
36
|
'generate. For example: rdoc,ri') do |value, options|
|
@@ -88,7 +88,7 @@ module Gem::InstallUpdateOptions
|
|
88
88
|
options[:ignore_dependencies] = value
|
89
89
|
end
|
90
90
|
|
91
|
-
add_option(:"Install/Update",
|
91
|
+
add_option(:"Install/Update", '--[no-]format-executable',
|
92
92
|
'Make installed executable names match Ruby.',
|
93
93
|
'If Ruby is ruby18, foo_exec will be',
|
94
94
|
'foo_exec18') do |value, options|
|
@@ -122,10 +122,10 @@ module Gem::InstallUpdateOptions
|
|
122
122
|
options[:minimal_deps] = true
|
123
123
|
end
|
124
124
|
|
125
|
-
add_option(:"Install/Update", "--minimal-deps",
|
125
|
+
add_option(:"Install/Update", "--[no-]minimal-deps",
|
126
126
|
"Don't upgrade any dependencies that already",
|
127
127
|
"meet version requirements") do |value, options|
|
128
|
-
options[:minimal_deps] =
|
128
|
+
options[:minimal_deps] = value
|
129
129
|
end
|
130
130
|
|
131
131
|
add_option(:"Install/Update", "--[no-]post-install-message",
|
@@ -154,7 +154,7 @@ module Gem::InstallUpdateOptions
|
|
154
154
|
'Omit the named groups (comma separated)',
|
155
155
|
'when installing from a gem dependencies',
|
156
156
|
'file') do |v,o|
|
157
|
-
options[:without_groups].concat v.map {
|
157
|
+
options[:without_groups].concat v.map {|without| without.intern }
|
158
158
|
end
|
159
159
|
|
160
160
|
add_option(:"Install/Update", '--default',
|
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
|
@@ -641,27 +638,6 @@ class Gem::Installer
|
|
641
638
|
end
|
642
639
|
end
|
643
640
|
|
644
|
-
def ensure_required_ruby_version_met # :nodoc:
|
645
|
-
if rrv = spec.required_ruby_version
|
646
|
-
ruby_version = Gem.ruby_version
|
647
|
-
unless rrv.satisfied_by? ruby_version
|
648
|
-
raise Gem::RuntimeRequirementNotMetError,
|
649
|
-
"#{spec.name} requires Ruby version #{rrv}. The current ruby version is #{ruby_version}."
|
650
|
-
end
|
651
|
-
end
|
652
|
-
end
|
653
|
-
|
654
|
-
def ensure_required_rubygems_version_met # :nodoc:
|
655
|
-
if rrgv = spec.required_rubygems_version
|
656
|
-
unless rrgv.satisfied_by? Gem.rubygems_version
|
657
|
-
rg_version = Gem::VERSION
|
658
|
-
raise Gem::RuntimeRequirementNotMetError,
|
659
|
-
"#{spec.name} requires RubyGems version #{rrgv}. The current RubyGems version is #{rg_version}. " +
|
660
|
-
"Try 'gem update --system' to update RubyGems itself."
|
661
|
-
end
|
662
|
-
end
|
663
|
-
end
|
664
|
-
|
665
641
|
def ensure_dependencies_met # :nodoc:
|
666
642
|
deps = spec.runtime_dependencies
|
667
643
|
deps |= spec.development_dependencies if @development
|
@@ -677,13 +653,14 @@ class Gem::Installer
|
|
677
653
|
:env_shebang => false,
|
678
654
|
:force => false,
|
679
655
|
:only_install_dir => false,
|
680
|
-
:post_install_message => true
|
656
|
+
:post_install_message => true,
|
681
657
|
}.merge options
|
682
658
|
|
683
659
|
@env_shebang = options[:env_shebang]
|
684
660
|
@force = options[:force]
|
685
661
|
@install_dir = options[:install_dir]
|
686
662
|
@gem_home = options[:install_dir] || Gem.dir
|
663
|
+
@plugins_dir = Gem.plugindir(@gem_home)
|
687
664
|
@ignore_dependencies = options[:ignore_dependencies]
|
688
665
|
@format_executable = options[:format_executable]
|
689
666
|
@wrappers = options[:wrappers]
|
@@ -699,20 +676,22 @@ class Gem::Installer
|
|
699
676
|
@build_args = options[:build_args] || Gem::Command.build_args
|
700
677
|
|
701
678
|
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}"
|
679
|
+
@bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/, ''))
|
680
|
+
@gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/, ''))
|
681
|
+
@plugins_dir = File.join(@build_root, @plugins_dir.gsub(/^[a-zA-Z]:/, ''))
|
682
|
+
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
683
|
end
|
708
684
|
end
|
709
685
|
|
710
686
|
def check_that_user_bin_dir_is_in_path # :nodoc:
|
687
|
+
return if self.class.path_warning
|
688
|
+
|
711
689
|
user_bin_dir = @bin_dir || Gem.bindir(gem_home)
|
712
|
-
user_bin_dir = user_bin_dir.
|
713
|
-
File::ALT_SEPARATOR
|
690
|
+
user_bin_dir = user_bin_dir.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
714
691
|
|
715
692
|
path = ENV['PATH']
|
693
|
+
path = path.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
694
|
+
|
716
695
|
if Gem.win_platform?
|
717
696
|
path = path.downcase
|
718
697
|
user_bin_dir = user_bin_dir.downcase
|
@@ -722,10 +701,8 @@ class Gem::Installer
|
|
722
701
|
|
723
702
|
unless path.include? user_bin_dir
|
724
703
|
unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV['HOME'], '~'))
|
725
|
-
|
726
|
-
|
727
|
-
self.class.path_warning = true
|
728
|
-
end
|
704
|
+
alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t gem executables will not run."
|
705
|
+
self.class.path_warning = true
|
729
706
|
end
|
730
707
|
end
|
731
708
|
end
|
@@ -810,7 +787,7 @@ TEXT
|
|
810
787
|
ruby_exe = "ruby.exe" if ruby_exe.empty?
|
811
788
|
|
812
789
|
if File.exist?(File.join bindir, ruby_exe)
|
813
|
-
# stub & ruby.exe
|
790
|
+
# stub & ruby.exe within same folder. Portable
|
814
791
|
<<-TEXT
|
815
792
|
@ECHO OFF
|
816
793
|
@"%~dp0#{ruby_exe}" "%~dpn0" %*
|
@@ -844,18 +821,6 @@ TEXT
|
|
844
821
|
builder.build_extensions
|
845
822
|
end
|
846
823
|
|
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
824
|
##
|
860
825
|
# Reads the file index and extracts each file into the gem directory.
|
861
826
|
#
|
@@ -895,6 +860,13 @@ TEXT
|
|
895
860
|
gem_dir.to_s
|
896
861
|
end
|
897
862
|
|
863
|
+
##
|
864
|
+
# Filename of the gem being installed.
|
865
|
+
|
866
|
+
def gem
|
867
|
+
@package.gem.path
|
868
|
+
end
|
869
|
+
|
898
870
|
##
|
899
871
|
# Performs various checks before installing the gem such as the install
|
900
872
|
# repository is writable and its directories exist, required Ruby and
|
@@ -921,8 +893,6 @@ TEXT
|
|
921
893
|
|
922
894
|
return true if @force
|
923
895
|
|
924
|
-
ensure_required_ruby_version_met
|
925
|
-
ensure_required_rubygems_version_met
|
926
896
|
ensure_dependencies_met unless @ignore_dependencies
|
927
897
|
|
928
898
|
true
|
@@ -959,4 +929,13 @@ TEXT
|
|
959
929
|
@package.copy_to cache_file
|
960
930
|
end
|
961
931
|
|
932
|
+
def ensure_writable_dir(dir) # :nodoc:
|
933
|
+
begin
|
934
|
+
Dir.mkdir dir, *[options[:dir_mode] && 0755].compact
|
935
|
+
rescue SystemCallError
|
936
|
+
raise unless File.directory? dir
|
937
|
+
end
|
938
|
+
|
939
|
+
raise Gem::FilePermissionError.new(dir) unless File.writable? dir
|
940
|
+
end
|
962
941
|
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
|