rubygems-update 3.0.6 → 3.2.14
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} +1100 -436
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +37 -10
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +104 -64
- data/POLICIES.md +6 -12
- data/README.md +6 -6
- data/Rakefile +121 -111
- data/bin/gem +0 -6
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1788 -1251
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +9 -10
- data/bundler/UPGRADING.md +215 -0
- data/bundler/bundler.gemspec +9 -26
- data/bundler/exe/bundle +22 -3
- data/bundler/lib/bundler.rb +233 -94
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli.rb +221 -148
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +25 -12
- data/bundler/lib/bundler/cli/config.rb +161 -86
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +5 -5
- data/bundler/lib/bundler/cli/exec.rb +8 -20
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +125 -32
- data/bundler/lib/bundler/cli/info.rb +29 -6
- 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 +27 -23
- data/bundler/lib/bundler/cli/issue.rb +5 -5
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/open.rb +10 -6
- data/bundler/lib/bundler/cli/outdated.rb +134 -109
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +34 -12
- data/bundler/lib/bundler/compact_index_client.rb +26 -10
- 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 +8 -20
- data/bundler/lib/bundler/current_ruby.rb +9 -7
- data/bundler/lib/bundler/definition.rb +133 -132
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +19 -14
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +54 -71
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +9 -14
- data/bundler/lib/bundler/environment_preserver.rb +26 -3
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +19 -34
- data/bundler/lib/bundler/fetcher.rb +19 -16
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
- data/bundler/lib/bundler/fetcher/index.rb +8 -7
- data/bundler/lib/bundler/friendly_errors.rb +27 -19
- data/bundler/lib/bundler/gem_helper.rb +68 -37
- data/bundler/lib/bundler/gem_helpers.rb +38 -29
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +12 -7
- data/bundler/lib/bundler/injector.rb +32 -12
- data/bundler/lib/bundler/inline.rb +41 -30
- data/bundler/lib/bundler/installer.rb +41 -60
- data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
- data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
- data/bundler/lib/bundler/installer/standalone.rb +18 -4
- data/bundler/lib/bundler/lazy_specification.rb +41 -27
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +16 -33
- data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- data/bundler/lib/bundler/man/bundle-add.1 +66 -0
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
- data/bundler/lib/bundler/man/bundle-check.1 +31 -0
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-config.1 +488 -0
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
- data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/lib/bundler/man/bundle-info.1 +20 -0
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-init.1 +25 -0
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-install.1 +338 -0
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
- data/bundler/lib/bundler/man/bundle-list.1 +50 -0
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-open.1 +32 -0
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-show.1 +23 -0
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle-update.1 +394 -0
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/lib/bundler/man/bundle.1 +136 -0
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
- data/bundler/lib/bundler/man/gemfile.5 +686 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
- data/bundler/lib/bundler/man/index.txt +25 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +5 -5
- data/bundler/lib/bundler/plugin.rb +75 -36
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +12 -7
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +24 -4
- data/bundler/lib/bundler/plugin/installer.rb +33 -22
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -4
- data/bundler/lib/bundler/resolver.rb +191 -87
- data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
- data/bundler/lib/bundler/retry.rb +3 -3
- data/bundler/lib/bundler/ruby_version.rb +5 -20
- data/bundler/lib/bundler/rubygems_ext.rb +76 -72
- data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
- data/bundler/lib/bundler/rubygems_integration.rb +159 -444
- data/bundler/lib/bundler/runtime.rb +6 -23
- data/bundler/lib/bundler/settings.rb +67 -93
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +54 -80
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source.rb +12 -6
- data/bundler/lib/bundler/source/git.rb +47 -38
- data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
- data/bundler/lib/bundler/source/metadata.rb +7 -6
- data/bundler/lib/bundler/source/path.rb +20 -11
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +56 -29
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source_list.rb +32 -30
- data/bundler/lib/bundler/spec_set.rb +37 -25
- data/bundler/lib/bundler/stub_specification.rb +40 -34
- data/bundler/lib/bundler/templates/Executable.bundler +23 -14
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
- 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 +18 -31
- 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/minitest/test_helper.rb.tt +6 -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/templates/newgem/travis.yml.tt +0 -1
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +7 -11
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- 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/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +7 -12
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -20
- data/bundler/lib/bundler/version_ranges.rb +51 -5
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +2 -4
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/lib/rubygems.rb +198 -222
- data/lib/rubygems/available_set.rb +4 -5
- data/lib/rubygems/basic_specification.rb +32 -19
- data/lib/rubygems/bundler_version_finder.rb +19 -9
- data/lib/rubygems/command.rb +73 -21
- data/lib/rubygems/command_manager.rb +5 -12
- data/lib/rubygems/commands/build_command.rb +51 -18
- data/lib/rubygems/commands/cert_command.rb +2 -11
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +17 -13
- data/lib/rubygems/commands/contents_command.rb +7 -9
- data/lib/rubygems/commands/dependency_command.rb +9 -10
- data/lib/rubygems/commands/environment_command.rb +1 -6
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +3 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +9 -4
- data/lib/rubygems/commands/install_command.rb +12 -54
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +3 -5
- data/lib/rubygems/commands/mirror_command.rb +0 -1
- data/lib/rubygems/commands/open_command.rb +1 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -1
- data/lib/rubygems/commands/owner_command.rb +10 -10
- data/lib/rubygems/commands/pristine_command.rb +13 -9
- data/lib/rubygems/commands/push_command.rb +12 -51
- data/lib/rubygems/commands/query_command.rb +14 -330
- data/lib/rubygems/commands/rdoc_command.rb +0 -1
- 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 +143 -101
- data/lib/rubygems/commands/signin_command.rb +0 -1
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +22 -6
- data/lib/rubygems/commands/specification_command.rb +8 -3
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +2 -3
- data/lib/rubygems/commands/unpack_command.rb +3 -32
- data/lib/rubygems/commands/update_command.rb +73 -28
- data/lib/rubygems/commands/which_command.rb +0 -1
- data/lib/rubygems/commands/yank_command.rb +10 -7
- data/lib/rubygems/compatibility.rb +4 -4
- data/lib/rubygems/config_file.rb +48 -27
- data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
- data/lib/rubygems/core_ext/kernel_require.rb +44 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +110 -23
- data/lib/rubygems/dependency.rb +28 -14
- data/lib/rubygems/dependency_installer.rb +11 -166
- data/lib/rubygems/dependency_list.rb +17 -18
- data/lib/rubygems/deprecate.rb +51 -6
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +5 -7
- data/lib/rubygems/exceptions.rb +2 -24
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +45 -82
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +111 -37
- data/lib/rubygems/indexer.rb +9 -26
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +91 -98
- data/lib/rubygems/installer_test_case.rb +104 -42
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +1 -4
- data/lib/rubygems/name_tuple.rb +4 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +49 -32
- 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 +15 -12
- 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 +6 -16
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +2 -2
- data/lib/rubygems/platform.rb +22 -16
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +33 -59
- data/lib/rubygems/request.rb +11 -14
- data/lib/rubygems/request/connection_pools.rb +3 -7
- data/lib/rubygems/request/http_pool.rb +0 -1
- data/lib/rubygems/request_set.rb +10 -23
- data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
- data/lib/rubygems/request_set/lockfile.rb +13 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
- data/lib/rubygems/requirement.rb +36 -35
- data/lib/rubygems/resolver.rb +20 -16
- data/lib/rubygems/resolver/activation_request.rb +27 -51
- 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 +4 -6
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -9
- 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 +32 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +63 -16
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +3 -5
- data/lib/rubygems/resolver/lock_specification.rb +2 -4
- 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 +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
- 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 +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -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 -1
- 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 -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 +15 -13
- 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 +8 -9
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +20 -16
- data/lib/rubygems/source.rb +30 -13
- 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 -6
- data/lib/rubygems/spec_fetcher.rb +22 -34
- data/lib/rubygems/specification.rb +207 -278
- data/lib/rubygems/specification_policy.rb +135 -57
- data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/test_case.rb +221 -341
- data/lib/rubygems/test_utilities.rb +22 -18
- data/lib/rubygems/text.rb +2 -3
- data/lib/rubygems/uninstaller.rb +49 -30
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/uri_parser.rb +34 -0
- data/lib/rubygems/uri_parsing.rb +23 -0
- data/lib/rubygems/user_interaction.rb +3 -20
- data/lib/rubygems/util.rb +20 -44
- data/lib/rubygems/util/licenses.rb +400 -400
- data/lib/rubygems/validator.rb +9 -31
- data/lib/rubygems/version.rb +29 -21
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +4 -11
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- 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 +41 -5
- data/test/rubygems/test_gem.rb +405 -236
- data/test/rubygems/test_gem_available_set.rb +5 -6
- data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
- data/test/rubygems/test_gem_command.rb +144 -9
- data/test/rubygems/test_gem_command_manager.rb +40 -17
- data/test/rubygems/test_gem_commands_build_command.rb +386 -13
- data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
- data/test/rubygems/test_gem_commands_help_command.rb +16 -8
- data/test/rubygems/test_gem_commands_info_command.rb +6 -7
- data/test/rubygems/test_gem_commands_install_command.rb +368 -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 -2
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
- data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
- data/test/rubygems/test_gem_commands_push_command.rb +94 -21
- data/test/rubygems/test_gem_commands_query_command.rb +35 -10
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +6 -4
- data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
- data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
- 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 +108 -52
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +201 -29
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
- data/test/rubygems/test_gem_config_file.rb +25 -13
- data/test/rubygems/test_gem_dependency.rb +6 -2
- data/test/rubygems/test_gem_dependency_installer.rb +169 -252
- data/test/rubygems/test_gem_dependency_list.rb +31 -26
- 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 +51 -44
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
- data/test/rubygems/test_gem_gem_runner.rb +47 -2
- data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +40 -55
- data/test/rubygems/test_gem_install_update_options.rb +45 -21
- data/test/rubygems/test_gem_installer.rb +661 -338
- 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 +132 -45
- data/test/rubygems/test_gem_package_old.rb +56 -55
- 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 +6 -7
- data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +17 -13
- data/test/rubygems/test_gem_platform.rb +74 -7
- data/test/rubygems/test_gem_rdoc.rb +0 -1
- data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
- data/test/rubygems/test_gem_request.rb +30 -19
- data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
- data/test/rubygems/test_gem_request_set.rb +104 -29
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
- data/test/rubygems/test_gem_requirement.rb +50 -4
- data/test/rubygems/test_gem_resolver.rb +73 -31
- data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
- 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 -7
- 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 +1 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
- data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
- 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 -2
- 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 +27 -25
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +11 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +13 -12
- data/test/rubygems/test_gem_silent_ui.rb +0 -1
- data/test/rubygems/test_gem_source.rb +32 -17
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +12 -18
- data/test/rubygems/test_gem_source_installed.rb +11 -13
- data/test/rubygems/test_gem_source_list.rb +1 -1
- data/test/rubygems/test_gem_source_local.rb +8 -9
- data/test/rubygems/test_gem_source_lock.rb +17 -19
- data/test/rubygems/test_gem_source_specific_file.rb +9 -10
- 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 +363 -245
- data/test/rubygems/test_gem_stream_ui.rb +3 -1
- data/test/rubygems/test_gem_stub_specification.rb +6 -7
- data/test/rubygems/test_gem_text.rb +1 -2
- data/test/rubygems/test_gem_uninstaller.rb +165 -22
- 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 +17 -15
- data/test/rubygems/test_gem_validator.rb +4 -7
- data/test/rubygems/test_gem_version.rb +23 -10
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -9
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +1 -2
- data/test/rubygems/test_require.rb +394 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +109 -155
- data/.rubocop.yml +0 -67
- data/.travis.yml +0 -38
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- 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/util/CL2notes +0 -55
- data/util/ci +0 -82
- 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 -61
- 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
@@ -100,11 +100,11 @@ class Gem::DependencyList
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def find_name(full_name)
|
103
|
-
@specs.find {
|
103
|
+
@specs.find {|spec| spec.full_name == full_name }
|
104
104
|
end
|
105
105
|
|
106
106
|
def inspect # :nodoc:
|
107
|
-
"%s %p>" % [super[0..-2], map {
|
107
|
+
"%s %p>" % [super[0..-2], map {|s| s.full_name }]
|
108
108
|
end
|
109
109
|
|
110
110
|
##
|
@@ -115,15 +115,15 @@ class Gem::DependencyList
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def why_not_ok?(quick = false)
|
118
|
-
unsatisfied = Hash.new {
|
118
|
+
unsatisfied = Hash.new {|h,k| h[k] = [] }
|
119
119
|
each do |spec|
|
120
120
|
spec.runtime_dependencies.each do |dep|
|
121
|
-
inst = Gem::Specification.any?
|
121
|
+
inst = Gem::Specification.any? do |installed_spec|
|
122
122
|
dep.name == installed_spec.name and
|
123
123
|
dep.requirement.satisfied_by? installed_spec.version
|
124
|
-
|
124
|
+
end
|
125
125
|
|
126
|
-
unless inst or @specs.find {
|
126
|
+
unless inst or @specs.find {|s| s.satisfies_requirement? dep }
|
127
127
|
unsatisfied[spec.name] << dep
|
128
128
|
return unsatisfied if quick
|
129
129
|
end
|
@@ -145,10 +145,10 @@ class Gem::DependencyList
|
|
145
145
|
# If the state is inconsistent, at least don't crash
|
146
146
|
return true unless gem_to_remove
|
147
147
|
|
148
|
-
siblings = @specs.find_all
|
148
|
+
siblings = @specs.find_all do |s|
|
149
149
|
s.name == gem_to_remove.name &&
|
150
150
|
s.full_name != gem_to_remove.full_name
|
151
|
-
|
151
|
+
end
|
152
152
|
|
153
153
|
deps = []
|
154
154
|
|
@@ -160,11 +160,11 @@ class Gem::DependencyList
|
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
deps.all?
|
164
|
-
siblings.any?
|
163
|
+
deps.all? do |dep|
|
164
|
+
siblings.any? do |s|
|
165
165
|
s.satisfies_requirement? dep
|
166
|
-
|
167
|
-
|
166
|
+
end
|
167
|
+
end
|
168
168
|
end
|
169
169
|
|
170
170
|
##
|
@@ -173,17 +173,17 @@ class Gem::DependencyList
|
|
173
173
|
# dependencies).
|
174
174
|
|
175
175
|
def remove_specs_unsatisfied_by(dependencies)
|
176
|
-
specs.reject!
|
176
|
+
specs.reject! do |spec|
|
177
177
|
dep = dependencies[spec.name]
|
178
178
|
dep and not dep.requirement.satisfied_by? spec.version
|
179
|
-
|
179
|
+
end
|
180
180
|
end
|
181
181
|
|
182
182
|
##
|
183
183
|
# Removes the gemspec matching +full_name+ from the dependency list
|
184
184
|
|
185
185
|
def remove_by_name(full_name)
|
186
|
-
@specs.delete_if {
|
186
|
+
@specs.delete_if {|spec| spec.full_name == full_name }
|
187
187
|
end
|
188
188
|
|
189
189
|
##
|
@@ -191,7 +191,7 @@ class Gem::DependencyList
|
|
191
191
|
# gemspecs that have a dependency satisfied by the named gemspec.
|
192
192
|
|
193
193
|
def spec_predecessors
|
194
|
-
result = Hash.new {
|
194
|
+
result = Hash.new {|h,k| h[k] = [] }
|
195
195
|
|
196
196
|
specs = @specs.sort.reverse
|
197
197
|
|
@@ -237,7 +237,6 @@ class Gem::DependencyList
|
|
237
237
|
# +ignored+.
|
238
238
|
|
239
239
|
def active_count(specs, ignored)
|
240
|
-
specs.count {
|
240
|
+
specs.count {|spec| ignored[spec.full_name].nil? }
|
241
241
|
end
|
242
|
-
|
243
242
|
end
|
data/lib/rubygems/deprecate.rb
CHANGED
@@ -41,6 +41,10 @@ module Gem::Deprecate
|
|
41
41
|
Gem::Deprecate.skip = original
|
42
42
|
end
|
43
43
|
|
44
|
+
def self.next_rubygems_major_version # :nodoc:
|
45
|
+
Gem::Version.new(Gem.rubygems_version.segments.first).bump
|
46
|
+
end
|
47
|
+
|
44
48
|
##
|
45
49
|
# Simple deprecation method that deprecates +name+ by wrapping it up
|
46
50
|
# in a dummy method. It warns on each call to the dummy method
|
@@ -48,23 +52,64 @@ module Gem::Deprecate
|
|
48
52
|
# year/month that it is planned to go away.
|
49
53
|
|
50
54
|
def deprecate(name, repl, year, month)
|
51
|
-
class_eval
|
55
|
+
class_eval do
|
56
|
+
old = "_deprecated_#{name}"
|
57
|
+
alias_method old, name
|
58
|
+
define_method name do |*args, &block|
|
59
|
+
klass = self.kind_of? Module
|
60
|
+
target = klass ? "#{self}." : "#{self.class}#"
|
61
|
+
msg = [ "NOTE: #{target}#{name} is deprecated",
|
62
|
+
repl == :none ? " with no replacement" : "; use #{repl} instead",
|
63
|
+
". It will be removed on or after %4d-%02d-01." % [year, month],
|
64
|
+
"\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
|
65
|
+
]
|
66
|
+
warn "#{msg.join}." unless Gem::Deprecate.skip
|
67
|
+
send old, *args, &block
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
##
|
73
|
+
# Simple deprecation method that deprecates +name+ by wrapping it up
|
74
|
+
# in a dummy method. It warns on each call to the dummy method
|
75
|
+
# telling the user of +repl+ (unless +repl+ is :none) and the
|
76
|
+
# Rubygems version that it is planned to go away.
|
77
|
+
|
78
|
+
def rubygems_deprecate(name, replacement=:none)
|
79
|
+
class_eval do
|
52
80
|
old = "_deprecated_#{name}"
|
53
81
|
alias_method old, name
|
54
82
|
define_method name do |*args, &block|
|
55
83
|
klass = self.kind_of? Module
|
56
84
|
target = klass ? "#{self}." : "#{self.class}#"
|
57
85
|
msg = [ "NOTE: #{target}#{name} is deprecated",
|
58
|
-
|
59
|
-
|
60
|
-
|
86
|
+
replacement == :none ? " with no replacement" : "; use #{replacement} instead",
|
87
|
+
". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
|
88
|
+
"\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
|
61
89
|
]
|
62
90
|
warn "#{msg.join}." unless Gem::Deprecate.skip
|
63
91
|
send old, *args, &block
|
64
92
|
end
|
65
|
-
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# Deprecation method to deprecate Rubygems commands
|
97
|
+
def rubygems_deprecate_command
|
98
|
+
class_eval do
|
99
|
+
define_method "deprecated?" do
|
100
|
+
true
|
101
|
+
end
|
102
|
+
|
103
|
+
define_method "deprecation_warning" do
|
104
|
+
msg = [ "#{self.command} command is deprecated",
|
105
|
+
". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}.\n",
|
106
|
+
]
|
107
|
+
|
108
|
+
alert_warning "#{msg.join}" unless Gem::Deprecate.skip
|
109
|
+
end
|
110
|
+
end
|
66
111
|
end
|
67
112
|
|
68
|
-
module_function :
|
113
|
+
module_function :rubygems_deprecate, :rubygems_deprecate_command, :skip_during
|
69
114
|
|
70
115
|
end
|
data/lib/rubygems/doctor.rb
CHANGED
@@ -12,7 +12,6 @@ require 'rubygems/user_interaction'
|
|
12
12
|
# removing the bogus specification.
|
13
13
|
|
14
14
|
class Gem::Doctor
|
15
|
-
|
16
15
|
include Gem::UserInteraction
|
17
16
|
|
18
17
|
##
|
@@ -26,11 +25,12 @@ class Gem::Doctor
|
|
26
25
|
['doc', ''],
|
27
26
|
['extensions', ''],
|
28
27
|
['gems', ''],
|
28
|
+
['plugins', ''],
|
29
29
|
].freeze
|
30
30
|
|
31
31
|
missing =
|
32
32
|
Gem::REPOSITORY_SUBDIRECTORIES.sort -
|
33
|
-
REPOSITORY_EXTENSION_MAP.map {
|
33
|
+
REPOSITORY_EXTENSION_MAP.map {|(k,_)| k }.sort
|
34
34
|
|
35
35
|
raise "Update REPOSITORY_EXTENSION_MAP, missing: #{missing.join ', '}" unless
|
36
36
|
missing.empty?
|
@@ -52,7 +52,7 @@ class Gem::Doctor
|
|
52
52
|
# Specs installed in this gem repository
|
53
53
|
|
54
54
|
def installed_specs # :nodoc:
|
55
|
-
@installed_specs ||= Gem::Specification.map {
|
55
|
+
@installed_specs ||= Gem::Specification.map {|s| s.full_name }
|
56
56
|
end
|
57
57
|
|
58
58
|
##
|
@@ -112,6 +112,7 @@ class Gem::Doctor
|
|
112
112
|
next if installed_specs.include? basename
|
113
113
|
next if /^rubygems-\d/ =~ basename
|
114
114
|
next if 'specifications' == sub_directory and 'default' == basename
|
115
|
+
next if 'plugins' == sub_directory and Gem.plugin_suffix_regexp =~ basename
|
115
116
|
|
116
117
|
type = File.directory?(child) ? 'directory' : 'file'
|
117
118
|
|
@@ -127,5 +128,4 @@ class Gem::Doctor
|
|
127
128
|
rescue Errno::ENOENT
|
128
129
|
# ignore
|
129
130
|
end
|
130
|
-
|
131
131
|
end
|
data/lib/rubygems/errors.rb
CHANGED
@@ -25,14 +25,15 @@ module Gem
|
|
25
25
|
# system. Instead of rescuing from this class, make sure to rescue from the
|
26
26
|
# superclass Gem::LoadError to catch all types of load errors.
|
27
27
|
class MissingSpecError < Gem::LoadError
|
28
|
-
def initialize(name, requirement)
|
28
|
+
def initialize(name, requirement, extra_message=nil)
|
29
29
|
@name = name
|
30
30
|
@requirement = requirement
|
31
|
+
@extra_message = extra_message
|
31
32
|
end
|
32
33
|
|
33
34
|
def message # :nodoc:
|
34
35
|
build_message +
|
35
|
-
"Checked in 'GEM_PATH=#{Gem.path.join(File::PATH_SEPARATOR)}', execute `gem env` for more information"
|
36
|
+
"Checked in 'GEM_PATH=#{Gem.path.join(File::PATH_SEPARATOR)}' #{@extra_message}, execute `gem env` for more information"
|
36
37
|
end
|
37
38
|
|
38
39
|
private
|
@@ -69,7 +70,6 @@ module Gem
|
|
69
70
|
# Raised when there are conflicting gem specs loaded
|
70
71
|
|
71
72
|
class ConflictError < LoadError
|
72
|
-
|
73
73
|
##
|
74
74
|
# A Hash mapping conflicting specifications to the dependencies that
|
75
75
|
# caused the conflict
|
@@ -86,9 +86,9 @@ module Gem
|
|
86
86
|
@conflicts = conflicts
|
87
87
|
@name = target.name
|
88
88
|
|
89
|
-
reason = conflicts.map
|
89
|
+
reason = conflicts.map do |act, dependencies|
|
90
90
|
"#{act.full_name} conflicts with #{dependencies.join(", ")}"
|
91
|
-
|
91
|
+
end.join ", "
|
92
92
|
|
93
93
|
# TODO: improve message by saying who activated `con`
|
94
94
|
|
@@ -105,7 +105,6 @@ module Gem
|
|
105
105
|
# in figuring out why a gem couldn't be installed.
|
106
106
|
#
|
107
107
|
class PlatformMismatch < ErrorReason
|
108
|
-
|
109
108
|
##
|
110
109
|
# the name of the gem
|
111
110
|
attr_reader :name
|
@@ -150,7 +149,6 @@ module Gem
|
|
150
149
|
# data from a source
|
151
150
|
|
152
151
|
class SourceFetchProblem < ErrorReason
|
153
|
-
|
154
152
|
##
|
155
153
|
# Creates a new SourceFetchProblem for the given +source+ and +error+.
|
156
154
|
|
data/lib/rubygems/exceptions.rb
CHANGED
@@ -5,17 +5,7 @@ require 'rubygems/deprecate'
|
|
5
5
|
##
|
6
6
|
# Base exception class for RubyGems. All exception raised by RubyGems are a
|
7
7
|
# subclass of this one.
|
8
|
-
class Gem::Exception < RuntimeError
|
9
|
-
|
10
|
-
##
|
11
|
-
#--
|
12
|
-
# TODO: remove in RubyGems 4, nobody sets this
|
13
|
-
|
14
|
-
attr_accessor :source_exception # :nodoc:
|
15
|
-
|
16
|
-
extend Gem::Deprecate
|
17
|
-
deprecate :source_exception, :none, 2018, 12
|
18
|
-
end
|
8
|
+
class Gem::Exception < RuntimeError; end
|
19
9
|
|
20
10
|
class Gem::CommandLineError < Gem::Exception; end
|
21
11
|
|
@@ -29,7 +19,6 @@ class Gem::DependencyRemovalException < Gem::Exception; end
|
|
29
19
|
# and #conflicting_dependencies
|
30
20
|
|
31
21
|
class Gem::DependencyResolutionError < Gem::DependencyError
|
32
|
-
|
33
22
|
attr_reader :conflict
|
34
23
|
|
35
24
|
def initialize(conflict)
|
@@ -42,7 +31,6 @@ class Gem::DependencyResolutionError < Gem::DependencyError
|
|
42
31
|
def conflicting_dependencies
|
43
32
|
@conflict.conflicting_dependencies
|
44
33
|
end
|
45
|
-
|
46
34
|
end
|
47
35
|
|
48
36
|
##
|
@@ -70,7 +58,6 @@ class Gem::EndOfYAMLException < Gem::Exception; end
|
|
70
58
|
# operating on the given directory.
|
71
59
|
|
72
60
|
class Gem::FilePermissionError < Gem::Exception
|
73
|
-
|
74
61
|
attr_reader :directory
|
75
62
|
|
76
63
|
def initialize(directory)
|
@@ -78,7 +65,6 @@ class Gem::FilePermissionError < Gem::Exception
|
|
78
65
|
|
79
66
|
super "You don't have write permissions for the #{directory} directory."
|
80
67
|
end
|
81
|
-
|
82
68
|
end
|
83
69
|
|
84
70
|
##
|
@@ -93,7 +79,6 @@ class Gem::GemNotFoundException < Gem::Exception; end
|
|
93
79
|
# Raised by the DependencyInstaller when a specific gem cannot be found
|
94
80
|
|
95
81
|
class Gem::SpecificGemNotFoundException < Gem::GemNotFoundException
|
96
|
-
|
97
82
|
##
|
98
83
|
# Creates a new SpecificGemNotFoundException for a gem with the given +name+
|
99
84
|
# and +version+. Any +errors+ encountered when attempting to find the gem
|
@@ -121,7 +106,6 @@ class Gem::SpecificGemNotFoundException < Gem::GemNotFoundException
|
|
121
106
|
# Errors encountered attempting to find the gem.
|
122
107
|
|
123
108
|
attr_reader :errors
|
124
|
-
|
125
109
|
end
|
126
110
|
|
127
111
|
##
|
@@ -129,7 +113,6 @@ end
|
|
129
113
|
# inability to find a valid possible spec for a request.
|
130
114
|
|
131
115
|
class Gem::ImpossibleDependenciesError < Gem::Exception
|
132
|
-
|
133
116
|
attr_reader :conflicts
|
134
117
|
attr_reader :request
|
135
118
|
|
@@ -157,7 +140,6 @@ class Gem::ImpossibleDependenciesError < Gem::Exception
|
|
157
140
|
def dependency
|
158
141
|
@request.dependency
|
159
142
|
end
|
160
|
-
|
161
143
|
end
|
162
144
|
|
163
145
|
class Gem::InstallError < Gem::Exception; end
|
@@ -207,7 +189,6 @@ class Gem::VerificationError < Gem::Exception; end
|
|
207
189
|
# exit_code
|
208
190
|
|
209
191
|
class Gem::SystemExitException < SystemExit
|
210
|
-
|
211
192
|
##
|
212
193
|
# The exit code for the process
|
213
194
|
|
@@ -221,7 +202,6 @@ class Gem::SystemExitException < SystemExit
|
|
221
202
|
|
222
203
|
super "Exiting RubyGems with exit_code #{exit_code}"
|
223
204
|
end
|
224
|
-
|
225
205
|
end
|
226
206
|
|
227
207
|
##
|
@@ -229,7 +209,6 @@ end
|
|
229
209
|
# there is no spec.
|
230
210
|
|
231
211
|
class Gem::UnsatisfiableDependencyError < Gem::DependencyError
|
232
|
-
|
233
212
|
##
|
234
213
|
# The unsatisfiable dependency. This is a
|
235
214
|
# Gem::Resolver::DependencyRequest, not a Gem::Dependency
|
@@ -247,7 +226,7 @@ class Gem::UnsatisfiableDependencyError < Gem::DependencyError
|
|
247
226
|
|
248
227
|
def initialize(dep, platform_mismatch=nil)
|
249
228
|
if platform_mismatch and !platform_mismatch.empty?
|
250
|
-
plats = platform_mismatch.map {
|
229
|
+
plats = platform_mismatch.map {|x| x.platform.to_s }.sort.uniq
|
251
230
|
super "Unable to resolve dependency: No match for '#{dep}' on this platform. Found: #{plats.join(', ')}"
|
252
231
|
else
|
253
232
|
if dep.explicit?
|
@@ -274,7 +253,6 @@ class Gem::UnsatisfiableDependencyError < Gem::DependencyError
|
|
274
253
|
def version
|
275
254
|
@dependency.requirement
|
276
255
|
end
|
277
|
-
|
278
256
|
end
|
279
257
|
|
280
258
|
##
|
data/lib/rubygems/ext.rb
CHANGED
@@ -10,9 +10,9 @@
|
|
10
10
|
|
11
11
|
module Gem::Ext; end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
require_relative 'ext/build_error'
|
14
|
+
require_relative 'ext/builder'
|
15
|
+
require_relative 'ext/configure_builder'
|
16
|
+
require_relative 'ext/ext_conf_builder'
|
17
|
+
require_relative 'ext/rake_builder'
|
18
|
+
require_relative 'ext/cmake_builder'
|
data/lib/rubygems/ext/builder.rb
CHANGED
@@ -5,20 +5,11 @@
|
|
5
5
|
# See LICENSE.txt for permissions.
|
6
6
|
#++
|
7
7
|
|
8
|
-
|
8
|
+
require_relative '../user_interaction'
|
9
9
|
|
10
10
|
class Gem::Ext::Builder
|
11
|
-
|
12
11
|
include Gem::UserInteraction
|
13
12
|
|
14
|
-
##
|
15
|
-
# The builder shells-out to run various commands after changing the
|
16
|
-
# directory. This means multiple installations cannot be allowed to build
|
17
|
-
# extensions in parallel as they may change each other's directories leading
|
18
|
-
# to broken extensions or failed installations.
|
19
|
-
|
20
|
-
CHDIR_MUTEX = Mutex.new # :nodoc:
|
21
|
-
|
22
13
|
attr_accessor :build_args # :nodoc:
|
23
14
|
|
24
15
|
def self.class_name
|
@@ -26,8 +17,8 @@ class Gem::Ext::Builder
|
|
26
17
|
$1.downcase
|
27
18
|
end
|
28
19
|
|
29
|
-
def self.make(dest_path, results)
|
30
|
-
unless File.exist? 'Makefile'
|
20
|
+
def self.make(dest_path, results, make_dir = Dir.pwd)
|
21
|
+
unless File.exist? File.join(make_dir, 'Makefile')
|
31
22
|
raise Gem::InstallError, 'Makefile not found'
|
32
23
|
end
|
33
24
|
|
@@ -37,48 +28,45 @@ class Gem::Ext::Builder
|
|
37
28
|
unless make_program
|
38
29
|
make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
|
39
30
|
end
|
31
|
+
make_program = Shellwords.split(make_program)
|
40
32
|
|
41
|
-
destdir = '
|
33
|
+
destdir = 'DESTDIR=%s' % ENV['DESTDIR']
|
42
34
|
|
43
35
|
['clean', '', 'install'].each do |target|
|
44
36
|
# Pass DESTDIR via command line to override what's in MAKEFLAGS
|
45
37
|
cmd = [
|
46
|
-
make_program,
|
38
|
+
*make_program,
|
47
39
|
destdir,
|
48
|
-
target
|
49
|
-
].
|
40
|
+
target,
|
41
|
+
].reject(&:empty?)
|
50
42
|
begin
|
51
|
-
run(cmd, results, "make #{target}".rstrip)
|
43
|
+
run(cmd, results, "make #{target}".rstrip, make_dir)
|
52
44
|
rescue Gem::InstallError
|
53
45
|
raise unless target == 'clean' # ignore clean failure
|
54
46
|
end
|
55
47
|
end
|
56
48
|
end
|
57
49
|
|
58
|
-
def self.
|
59
|
-
warn "#{caller[0]}: Use IO.popen(..., err: [:child, :out])"
|
60
|
-
'2>&1'
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.run(command, results, command_name = nil)
|
50
|
+
def self.run(command, results, command_name = nil, dir = Dir.pwd)
|
64
51
|
verbose = Gem.configuration.really_verbose
|
65
52
|
|
66
53
|
begin
|
67
54
|
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], nil
|
68
55
|
if verbose
|
69
|
-
puts("current directory: #{
|
56
|
+
puts("current directory: #{dir}")
|
70
57
|
p(command)
|
71
58
|
end
|
72
|
-
results << "current directory: #{
|
73
|
-
results <<
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
59
|
+
results << "current directory: #{dir}"
|
60
|
+
results << command.shelljoin
|
61
|
+
|
62
|
+
require "open3"
|
63
|
+
# Set $SOURCE_DATE_EPOCH for the subprocess.
|
64
|
+
env = {'SOURCE_DATE_EPOCH' => Gem.source_date_epoch_string}
|
65
|
+
output, status = Open3.capture2e(env, *command, :chdir => dir)
|
66
|
+
if verbose
|
67
|
+
puts output
|
68
|
+
else
|
69
|
+
results << output
|
82
70
|
end
|
83
71
|
rescue => error
|
84
72
|
raise Gem::InstallError, "#{command_name || class_name} failed#{error.message}"
|
@@ -86,14 +74,18 @@ class Gem::Ext::Builder
|
|
86
74
|
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
87
75
|
end
|
88
76
|
|
89
|
-
unless
|
77
|
+
unless status.success?
|
90
78
|
results << "Building has failed. See above output for more information on the failure." if verbose
|
79
|
+
end
|
91
80
|
|
81
|
+
yield(status, results) if block_given?
|
82
|
+
|
83
|
+
unless status.success?
|
92
84
|
exit_reason =
|
93
|
-
if
|
94
|
-
", exit code #{
|
95
|
-
elsif
|
96
|
-
", uncaught signal #{
|
85
|
+
if status.exited?
|
86
|
+
", exit code #{status.exitstatus}"
|
87
|
+
elsif status.signaled?
|
88
|
+
", uncaught signal #{status.termsig}"
|
97
89
|
end
|
98
90
|
|
99
91
|
raise Gem::InstallError, "#{command_name || class_name} failed#{exit_reason}"
|
@@ -110,7 +102,7 @@ class Gem::Ext::Builder
|
|
110
102
|
@build_args = build_args
|
111
103
|
@gem_dir = spec.full_gem_path
|
112
104
|
|
113
|
-
@ran_rake
|
105
|
+
@ran_rake = false
|
114
106
|
end
|
115
107
|
|
116
108
|
##
|
@@ -128,17 +120,14 @@ class Gem::Ext::Builder
|
|
128
120
|
when /CMakeLists.txt/ then
|
129
121
|
Gem::Ext::CmakeBuilder
|
130
122
|
else
|
131
|
-
|
132
|
-
|
133
|
-
message = "No builder for extension '#{extension}'"
|
134
|
-
build_error extension_dir, message
|
123
|
+
build_error("No builder for extension '#{extension}'")
|
135
124
|
end
|
136
125
|
end
|
137
126
|
|
138
127
|
##
|
139
|
-
# Logs the build +output
|
128
|
+
# Logs the build +output+, then raises Gem::Ext::BuildError.
|
140
129
|
|
141
|
-
def build_error(
|
130
|
+
def build_error(output, backtrace = nil) # :nodoc:
|
142
131
|
gem_make_out = write_gem_make_out output
|
143
132
|
|
144
133
|
message = <<-EOF
|
@@ -156,49 +145,24 @@ EOF
|
|
156
145
|
def build_extension(extension, dest_path) # :nodoc:
|
157
146
|
results = []
|
158
147
|
|
159
|
-
|
160
|
-
# Notes:
|
161
|
-
# 1. As far as I can tell, this method is only called by +build_extensions+.
|
162
|
-
# 2. The existence of this line implies +extension+ is, or previously was,
|
163
|
-
# sometimes +false+ or +nil+.
|
164
|
-
# 3. #1 and #2 combined suggests, but does not confirm, that
|
165
|
-
# +@specs.extensions+ sometimes contained +false+ or +nil+ values.
|
166
|
-
# 4. Nothing seems to explicitly handle +extension+ being empty,
|
167
|
-
# which makes me wonder both what it should do and what it does.
|
168
|
-
#
|
169
|
-
# - @duckinator
|
170
|
-
extension ||= '' # I wish I knew why this line existed
|
148
|
+
builder = builder_for(extension)
|
171
149
|
|
172
150
|
extension_dir =
|
173
151
|
File.expand_path File.join(@gem_dir, File.dirname(extension))
|
174
152
|
lib_dir = File.join @spec.full_gem_path, @spec.raw_require_paths.first
|
175
153
|
|
176
|
-
builder = builder_for extension
|
177
|
-
|
178
154
|
begin
|
179
155
|
FileUtils.mkdir_p dest_path
|
180
156
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
results = builder.build(extension, dest_path,
|
186
|
-
results, @build_args, lib_dir)
|
187
|
-
|
188
|
-
verbose { results.join("\n") }
|
189
|
-
ensure
|
190
|
-
begin
|
191
|
-
Dir.chdir pwd
|
192
|
-
rescue SystemCallError
|
193
|
-
Dir.chdir dest_path
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
157
|
+
results = builder.build(extension, dest_path,
|
158
|
+
results, @build_args, lib_dir, extension_dir)
|
159
|
+
|
160
|
+
verbose { results.join("\n") }
|
197
161
|
|
198
162
|
write_gem_make_out results.join "\n"
|
199
163
|
rescue => e
|
200
164
|
results << e.message
|
201
|
-
build_error
|
165
|
+
build_error(results.join("\n"), $@)
|
202
166
|
end
|
203
167
|
end
|
204
168
|
|
@@ -218,11 +182,9 @@ EOF
|
|
218
182
|
|
219
183
|
dest_path = @spec.extension_dir
|
220
184
|
|
185
|
+
require "fileutils"
|
221
186
|
FileUtils.rm_f @spec.gem_build_complete_path
|
222
187
|
|
223
|
-
# FIXME: action at a distance: @ran_rake modified deep in build_extension(). - @duckinator
|
224
|
-
@ran_rake = false # only run rake once
|
225
|
-
|
226
188
|
@spec.extensions.each do |extension|
|
227
189
|
break if @ran_rake
|
228
190
|
|
@@ -240,9 +202,10 @@ EOF
|
|
240
202
|
|
241
203
|
FileUtils.mkdir_p @spec.extension_dir
|
242
204
|
|
243
|
-
File.open destination, 'wb' do |io|
|
205
|
+
File.open destination, 'wb' do |io|
|
206
|
+
io.puts output
|
207
|
+
end
|
244
208
|
|
245
209
|
destination
|
246
210
|
end
|
247
|
-
|
248
211
|
end
|