rubygems-update 2.7.11 → 3.0.9
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/.rubocop.yml +67 -0
- data/.travis.yml +24 -18
- data/CODE_OF_CONDUCT.md +10 -8
- data/CONTRIBUTING.md +148 -0
- data/History.txt +458 -8
- data/MAINTAINERS.txt +1 -0
- data/Manifest.txt +16 -9
- data/POLICIES.md +92 -0
- data/README.md +53 -26
- data/Rakefile +77 -211
- data/{UPGRADING.rdoc → UPGRADING.md} +31 -32
- data/appveyor.yml +20 -45
- data/bin/gem +1 -2
- data/bin/update_rubygems +2 -3
- data/bundler/CHANGELOG.md +65 -0
- data/bundler/bundler.gemspec +7 -1
- data/bundler/lib/bundler/build_metadata.rb +1 -1
- data/bundler/lib/bundler/cli/add.rb +15 -5
- data/bundler/lib/bundler/cli/binstubs.rb +8 -2
- data/bundler/lib/bundler/cli/doctor.rb +47 -1
- data/bundler/lib/bundler/cli/install.rb +8 -5
- data/bundler/lib/bundler/cli/list.rb +41 -5
- data/bundler/lib/bundler/cli/outdated.rb +7 -1
- data/bundler/lib/bundler/cli/pristine.rb +4 -0
- data/bundler/lib/bundler/cli/remove.rb +18 -0
- data/bundler/lib/bundler/cli.rb +63 -21
- data/bundler/lib/bundler/definition.rb +15 -16
- data/bundler/lib/bundler/dependency.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +19 -3
- data/bundler/lib/bundler/feature_flag.rb +7 -0
- data/bundler/lib/bundler/gem_version_promoter.rb +4 -2
- data/bundler/lib/bundler/injector.rb +168 -9
- data/bundler/lib/bundler/installer/parallel_installer.rb +5 -0
- data/bundler/lib/bundler/installer.rb +29 -6
- data/bundler/lib/bundler/plugin/events.rb +61 -0
- data/bundler/lib/bundler/plugin.rb +10 -3
- data/bundler/lib/bundler/resolver.rb +2 -2
- data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
- data/bundler/lib/bundler/runtime.rb +8 -2
- data/bundler/lib/bundler/settings/validator.rb +23 -0
- data/bundler/lib/bundler/settings.rb +24 -3
- data/bundler/lib/bundler/shared_helpers.rb +19 -3
- data/bundler/lib/bundler/source/metadata.rb +2 -3
- data/bundler/lib/bundler/source.rb +9 -9
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +26 -8
- data/bundler/man/bundle-add.ronn +13 -2
- data/bundler/man/bundle-config.ronn +21 -0
- data/bundler/man/bundle-install.ronn +1 -1
- data/bundler/man/bundle-list.ronn +19 -1
- data/bundler/man/bundle-outdated.ronn +4 -0
- data/bundler/man/bundle-remove.ronn +23 -0
- data/bundler/man/bundle-update.ronn +1 -1
- data/bundler/man/bundle.ronn +3 -0
- data/lib/rubygems/available_set.rb +1 -1
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +3 -3
- data/lib/rubygems/command.rb +22 -15
- data/lib/rubygems/command_manager.rb +22 -5
- data/lib/rubygems/commands/build_command.rb +41 -7
- data/lib/rubygems/commands/cert_command.rb +45 -24
- data/lib/rubygems/commands/check_command.rb +1 -1
- data/lib/rubygems/commands/cleanup_command.rb +14 -7
- data/lib/rubygems/commands/contents_command.rb +14 -15
- data/lib/rubygems/commands/dependency_command.rb +17 -17
- data/lib/rubygems/commands/environment_command.rb +20 -1
- data/lib/rubygems/commands/fetch_command.rb +2 -3
- data/lib/rubygems/commands/generate_index_command.rb +2 -3
- data/lib/rubygems/commands/help_command.rb +12 -13
- data/lib/rubygems/commands/info_command.rb +33 -0
- data/lib/rubygems/commands/install_command.rb +21 -17
- data/lib/rubygems/commands/list_command.rb +0 -1
- data/lib/rubygems/commands/lock_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +16 -10
- data/lib/rubygems/commands/owner_command.rb +21 -7
- data/lib/rubygems/commands/pristine_command.rb +23 -16
- data/lib/rubygems/commands/push_command.rb +19 -8
- data/lib/rubygems/commands/query_command.rb +24 -24
- data/lib/rubygems/commands/rdoc_command.rb +3 -4
- data/lib/rubygems/commands/search_command.rb +0 -1
- data/lib/rubygems/commands/server_command.rb +1 -2
- data/lib/rubygems/commands/setup_command.rb +86 -48
- data/lib/rubygems/commands/signin_command.rb +2 -1
- data/lib/rubygems/commands/signout_command.rb +2 -2
- data/lib/rubygems/commands/sources_command.rb +11 -12
- data/lib/rubygems/commands/specification_command.rb +7 -7
- data/lib/rubygems/commands/uninstall_command.rb +50 -18
- data/lib/rubygems/commands/unpack_command.rb +16 -7
- data/lib/rubygems/commands/update_command.rb +28 -23
- data/lib/rubygems/commands/which_command.rb +5 -8
- data/lib/rubygems/commands/yank_command.rb +1 -2
- data/lib/rubygems/compatibility.rb +1 -21
- data/lib/rubygems/config_file.rb +36 -36
- data/lib/rubygems/core_ext/kernel_require.rb +6 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +45 -0
- data/lib/rubygems/defaults.rb +31 -19
- data/lib/rubygems/dependency.rb +15 -15
- data/lib/rubygems/dependency_installer.rb +30 -33
- data/lib/rubygems/dependency_list.rb +9 -10
- data/lib/rubygems/deprecate.rb +2 -3
- data/lib/rubygems/doctor.rb +5 -6
- data/lib/rubygems/errors.rb +3 -3
- data/lib/rubygems/exceptions.rb +11 -8
- data/lib/rubygems/ext/build_error.rb +0 -1
- data/lib/rubygems/ext/builder.rb +50 -23
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -3
- data/lib/rubygems/ext/ext_conf_builder.rb +8 -7
- data/lib/rubygems/ext/rake_builder.rb +16 -18
- data/lib/rubygems/ext.rb +0 -1
- data/lib/rubygems/gem_runner.rb +2 -2
- data/lib/rubygems/gemcutter_utilities.rb +46 -12
- data/lib/rubygems/indexer.rb +19 -12
- data/lib/rubygems/install_default_message.rb +0 -1
- data/lib/rubygems/install_message.rb +0 -1
- data/lib/rubygems/install_update_options.rb +3 -29
- data/lib/rubygems/installer.rb +97 -55
- data/lib/rubygems/installer_test_case.rb +2 -16
- data/lib/rubygems/local_remote_options.rb +5 -4
- data/lib/rubygems/mock_gem_ui.rb +3 -4
- data/lib/rubygems/name_tuple.rb +4 -4
- data/lib/rubygems/package/digest_io.rb +3 -4
- data/lib/rubygems/package/file_source.rb +3 -4
- data/lib/rubygems/package/io_source.rb +1 -2
- data/lib/rubygems/package/old.rb +8 -16
- data/lib/rubygems/package/source.rb +0 -1
- data/lib/rubygems/package/tar_header.rb +13 -4
- data/lib/rubygems/package/tar_reader/entry.rb +20 -4
- data/lib/rubygems/package/tar_reader.rb +2 -4
- data/lib/rubygems/package/tar_test_case.rb +2 -8
- data/lib/rubygems/package/tar_writer.rb +13 -15
- data/lib/rubygems/package.rb +90 -63
- data/lib/rubygems/package_task.rb +0 -1
- data/lib/rubygems/path_support.rb +16 -6
- data/lib/rubygems/platform.rb +4 -5
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/rdoc.rb +2 -313
- data/lib/rubygems/remote_fetcher.rb +29 -82
- data/lib/rubygems/request/connection_pools.rb +24 -13
- data/lib/rubygems/request/http_pool.rb +3 -4
- data/lib/rubygems/request/https_pool.rb +1 -3
- data/lib/rubygems/request.rb +17 -16
- data/lib/rubygems/request_set/gem_dependency_api.rb +46 -49
- data/lib/rubygems/request_set/lockfile/parser.rb +18 -29
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +9 -9
- data/lib/rubygems/request_set/lockfile.rb +12 -12
- data/lib/rubygems/request_set.rb +52 -25
- data/lib/rubygems/requirement.rb +32 -21
- data/lib/rubygems/resolver/activation_request.rb +6 -6
- data/lib/rubygems/resolver/api_set.rb +5 -6
- data/lib/rubygems/resolver/api_specification.rb +2 -3
- data/lib/rubygems/resolver/best_set.rb +5 -6
- data/lib/rubygems/resolver/composed_set.rb +5 -6
- data/lib/rubygems/resolver/conflict.rb +5 -5
- data/lib/rubygems/resolver/current_set.rb +1 -2
- data/lib/rubygems/resolver/dependency_request.rb +4 -4
- data/lib/rubygems/resolver/git_set.rb +5 -6
- data/lib/rubygems/resolver/git_specification.rb +4 -5
- data/lib/rubygems/resolver/index_set.rb +5 -6
- data/lib/rubygems/resolver/index_specification.rb +3 -4
- data/lib/rubygems/resolver/installed_specification.rb +3 -4
- data/lib/rubygems/resolver/installer_set.rb +12 -12
- data/lib/rubygems/resolver/local_specification.rb +1 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -6
- data/lib/rubygems/resolver/lock_specification.rb +7 -8
- data/lib/rubygems/resolver/requirement_list.rb +1 -1
- data/lib/rubygems/resolver/set.rb +2 -2
- data/lib/rubygems/resolver/source_set.rb +4 -5
- data/lib/rubygems/resolver/spec_specification.rb +1 -2
- data/lib/rubygems/resolver/specification.rb +10 -7
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +4 -5
- data/lib/rubygems/resolver/vendor_specification.rb +2 -3
- data/lib/rubygems/resolver.rb +14 -16
- data/lib/rubygems/s3_uri_signer.rb +183 -0
- data/lib/rubygems/safe_yaml.rb +18 -10
- data/lib/rubygems/security/policies.rb +1 -2
- data/lib/rubygems/security/policy.rb +25 -25
- data/lib/rubygems/security/signer.rb +72 -24
- data/lib/rubygems/security/trust_dir.rb +10 -10
- data/lib/rubygems/security.rb +21 -22
- data/lib/rubygems/security_option.rb +0 -1
- data/lib/rubygems/server.rb +21 -21
- data/lib/rubygems/source/git.rb +9 -10
- data/lib/rubygems/source/installed.rb +3 -4
- data/lib/rubygems/source/local.rb +7 -7
- data/lib/rubygems/source/lock.rb +4 -4
- data/lib/rubygems/source/specific_file.rb +5 -5
- data/lib/rubygems/source/vendor.rb +2 -3
- data/lib/rubygems/source.rb +16 -25
- data/lib/rubygems/source_list.rb +2 -2
- data/lib/rubygems/source_local.rb +0 -1
- data/lib/rubygems/spec_fetcher.rb +5 -6
- data/lib/rubygems/specification.rb +219 -558
- data/lib/rubygems/specification_policy.rb +407 -0
- data/lib/rubygems/stub_specification.rb +12 -17
- data/lib/rubygems/test_case.rb +161 -75
- data/lib/rubygems/test_utilities.rb +20 -35
- data/lib/rubygems/text.rb +6 -6
- data/lib/rubygems/uninstaller.rb +38 -27
- data/lib/rubygems/uri_formatter.rb +1 -2
- data/lib/rubygems/user_interaction.rb +37 -89
- data/lib/rubygems/util/licenses.rb +27 -1
- data/lib/rubygems/util/list.rb +1 -1
- data/lib/rubygems/util.rb +32 -14
- data/lib/rubygems/validator.rb +4 -5
- data/lib/rubygems/version.rb +15 -15
- data/lib/rubygems/version_option.rb +2 -3
- data/lib/rubygems.rb +71 -102
- data/rubygems-update.gemspec +43 -0
- data/setup.rb +2 -8
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/rubygems_plugin.rb +0 -1
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +1 -1
- data/test/rubygems/test_config.rb +7 -2
- data/test/rubygems/test_gem.rb +205 -132
- data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
- data/test/rubygems/test_gem_command.rb +0 -1
- data/test/rubygems/test_gem_command_manager.rb +18 -3
- data/test/rubygems/test_gem_commands_build_command.rb +220 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +69 -8
- data/test/rubygems/test_gem_commands_check_command.rb +1 -1
- data/test/rubygems/test_gem_commands_cleanup_command.rb +27 -1
- data/test/rubygems/test_gem_commands_contents_command.rb +1 -2
- data/test/rubygems/test_gem_commands_dependency_command.rb +33 -34
- data/test/rubygems/test_gem_commands_environment_command.rb +1 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -1
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -1
- data/test/rubygems/test_gem_commands_help_command.rb +7 -4
- data/test/rubygems/test_gem_commands_info_command.rb +44 -0
- data/test/rubygems/test_gem_commands_install_command.rb +79 -12
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -1
- data/test/rubygems/test_gem_commands_open_command.rb +29 -0
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +93 -57
- data/test/rubygems/test_gem_commands_pristine_command.rb +65 -30
- data/test/rubygems/test_gem_commands_push_command.rb +54 -0
- data/test/rubygems/test_gem_commands_query_command.rb +102 -100
- data/test/rubygems/test_gem_commands_search_command.rb +0 -1
- data/test/rubygems/test_gem_commands_server_command.rb +0 -1
- data/test/rubygems/test_gem_commands_setup_command.rb +50 -15
- data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -1
- data/test/rubygems/test_gem_commands_specification_command.rb +2 -3
- data/test/rubygems/test_gem_commands_stale_command.rb +3 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +161 -8
- data/test/rubygems/test_gem_commands_unpack_command.rb +17 -1
- data/test/rubygems/test_gem_commands_update_command.rb +19 -2
- data/test/rubygems/test_gem_commands_which_command.rb +0 -1
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -1
- data/test/rubygems/test_gem_config_file.rb +4 -2
- data/test/rubygems/test_gem_dependency.rb +0 -1
- data/test/rubygems/test_gem_dependency_installer.rb +8 -5
- data/test/rubygems/test_gem_dependency_list.rb +6 -7
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -1
- data/test/rubygems/test_gem_doctor.rb +1 -2
- data/test/rubygems/test_gem_ext_builder.rb +10 -23
- data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -4
- data/test/rubygems/test_gem_ext_configure_builder.rb +3 -3
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +8 -9
- data/test/rubygems/test_gem_ext_rake_builder.rb +20 -5
- data/test/rubygems/test_gem_gem_runner.rb +0 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +32 -6
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -1
- data/test/rubygems/test_gem_indexer.rb +16 -10
- data/test/rubygems/test_gem_install_update_options.rb +1 -20
- data/test/rubygems/test_gem_installer.rb +154 -119
- data/test/rubygems/test_gem_local_remote_options.rb +3 -3
- data/test/rubygems/test_gem_name_tuple.rb +0 -1
- data/test/rubygems/test_gem_package.rb +77 -31
- data/test/rubygems/test_gem_package_old.rb +0 -1
- data/test/rubygems/test_gem_package_tar_header.rb +42 -2
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -1
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +11 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +43 -7
- data/test/rubygems/test_gem_package_task.rb +2 -2
- data/test/rubygems/test_gem_path_support.rb +28 -11
- data/test/rubygems/test_gem_platform.rb +4 -5
- data/test/rubygems/test_gem_rdoc.rb +1 -136
- data/test/rubygems/test_gem_remote_fetcher.rb +241 -141
- data/test/rubygems/test_gem_request.rb +9 -9
- data/test/rubygems/test_gem_request_connection_pools.rb +24 -3
- data/test/rubygems/test_gem_request_set.rb +5 -5
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +82 -64
- data/test/rubygems/test_gem_request_set_lockfile.rb +1 -2
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -9
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
- data/test/rubygems/test_gem_requirement.rb +24 -4
- data/test/rubygems/test_gem_resolver.rb +13 -17
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -1
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -1
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -1
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_installer_set.rb +2 -3
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -1
- data/test/rubygems/test_gem_resolver_specification.rb +1 -2
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -1
- data/test/rubygems/test_gem_security.rb +1 -3
- data/test/rubygems/test_gem_security_policy.rb +5 -6
- data/test/rubygems/test_gem_security_signer.rb +4 -3
- data/test/rubygems/test_gem_security_trust_dir.rb +1 -2
- data/test/rubygems/test_gem_server.rb +4 -4
- data/test/rubygems/test_gem_source.rb +0 -13
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +0 -1
- data/test/rubygems/test_gem_source_installed.rb +0 -1
- data/test/rubygems/test_gem_source_lock.rb +0 -1
- data/test/rubygems/test_gem_source_vendor.rb +0 -1
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -1
- data/test/rubygems/test_gem_specification.rb +366 -198
- data/test/rubygems/test_gem_stream_ui.rb +15 -32
- data/test/rubygems/test_gem_stub_specification.rb +0 -2
- data/test/rubygems/test_gem_text.rb +4 -0
- data/test/rubygems/test_gem_uninstaller.rb +42 -3
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -1
- data/test/rubygems/test_gem_uri_formatter.rb +0 -1
- data/test/rubygems/test_gem_util.rb +31 -11
- data/test/rubygems/test_gem_validator.rb +0 -1
- data/test/rubygems/test_gem_version.rb +11 -11
- data/test/rubygems/test_gem_version_option.rb +0 -1
- data/test/rubygems/test_remote_fetch_error.rb +0 -1
- data/test/rubygems/test_require.rb +67 -52
- data/util/CL2notes +1 -2
- data/util/ci +20 -12
- data/util/cops/deprecations.rb +52 -0
- data/util/create_certs.rb +6 -7
- data/util/create_certs.sh +27 -0
- data/util/create_encrypted_key.rb +4 -5
- data/util/patch_with_prs.rb +1 -1
- data/util/rubocop +8 -0
- data/util/update_bundled_ca_certificates.rb +12 -13
- data/util/update_changelog.rb +1 -1
- metadata +61 -51
- data/.autotest +0 -71
- data/.document +0 -5
- data/CONTRIBUTING.rdoc +0 -130
- data/CVE-2013-4287.txt +0 -35
- data/CVE-2013-4363.txt +0 -45
- data/CVE-2015-3900.txt +0 -40
- data/POLICIES.rdoc +0 -74
- data/test/rubygems/fix_openssl_warnings.rb +0 -13
data/lib/rubygems/ext/builder.rb
CHANGED
@@ -6,7 +6,6 @@
|
|
6
6
|
#++
|
7
7
|
|
8
8
|
require 'rubygems/user_interaction'
|
9
|
-
require 'thread'
|
10
9
|
|
11
10
|
class Gem::Ext::Builder
|
12
11
|
|
@@ -28,18 +27,18 @@ class Gem::Ext::Builder
|
|
28
27
|
end
|
29
28
|
|
30
29
|
def self.make(dest_path, results)
|
31
|
-
unless File.exist? 'Makefile'
|
30
|
+
unless File.exist? 'Makefile'
|
32
31
|
raise Gem::InstallError, 'Makefile not found'
|
33
32
|
end
|
34
33
|
|
35
34
|
# try to find make program from Ruby configure arguments first
|
36
35
|
RbConfig::CONFIG['configure_args'] =~ /with-make-prog\=(\w+)/
|
37
36
|
make_program = ENV['MAKE'] || ENV['make'] || $1
|
38
|
-
unless make_program
|
37
|
+
unless make_program
|
39
38
|
make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
|
40
39
|
end
|
41
40
|
|
42
|
-
destdir = '"DESTDIR=%s"' % ENV['DESTDIR']
|
41
|
+
destdir = '"DESTDIR=%s"' % ENV['DESTDIR']
|
43
42
|
|
44
43
|
['clean', '', 'install'].each do |target|
|
45
44
|
# Pass DESTDIR via command line to override what's in MAKEFLAGS
|
@@ -57,6 +56,7 @@ class Gem::Ext::Builder
|
|
57
56
|
end
|
58
57
|
|
59
58
|
def self.redirector
|
59
|
+
warn "#{caller[0]}: Use IO.popen(..., err: [:child, :out])"
|
60
60
|
'2>&1'
|
61
61
|
end
|
62
62
|
|
@@ -64,28 +64,35 @@ class Gem::Ext::Builder
|
|
64
64
|
verbose = Gem.configuration.really_verbose
|
65
65
|
|
66
66
|
begin
|
67
|
-
# TODO use Process.spawn when ruby 1.8 support is dropped.
|
68
67
|
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], nil
|
69
68
|
if verbose
|
70
69
|
puts("current directory: #{Dir.pwd}")
|
71
|
-
|
72
|
-
system(command)
|
73
|
-
else
|
74
|
-
results << "current directory: #{Dir.pwd}"
|
75
|
-
results << command
|
76
|
-
results << `#{command} #{redirector}`
|
70
|
+
p(command)
|
77
71
|
end
|
72
|
+
results << "current directory: #{Dir.pwd}"
|
73
|
+
results << (command.respond_to?(:shelljoin) ? command.shelljoin : command)
|
74
|
+
|
75
|
+
redirections = verbose ? {} : {err: [:child, :out]}
|
76
|
+
IO.popen(command, "r", redirections) do |io|
|
77
|
+
if verbose
|
78
|
+
IO.copy_stream(io, $stdout)
|
79
|
+
else
|
80
|
+
results << io.read
|
81
|
+
end
|
82
|
+
end
|
83
|
+
rescue => error
|
84
|
+
raise Gem::InstallError, "#{command_name || class_name} failed#{error.message}"
|
78
85
|
ensure
|
79
86
|
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
80
87
|
end
|
81
88
|
|
82
|
-
unless $?.success?
|
89
|
+
unless $?.success?
|
83
90
|
results << "Building has failed. See above output for more information on the failure." if verbose
|
84
91
|
|
85
92
|
exit_reason =
|
86
|
-
if $?.exited?
|
93
|
+
if $?.exited?
|
87
94
|
", exit code #{$?.exitstatus}"
|
88
|
-
elsif $?.signaled?
|
95
|
+
elsif $?.signaled?
|
89
96
|
", uncaught signal #{$?.termsig}"
|
90
97
|
end
|
91
98
|
|
@@ -98,7 +105,7 @@ class Gem::Ext::Builder
|
|
98
105
|
# have build arguments, saved, set +build_args+ which is an ARGV-style
|
99
106
|
# array.
|
100
107
|
|
101
|
-
def initialize
|
108
|
+
def initialize(spec, build_args = spec.build_args)
|
102
109
|
@spec = spec
|
103
110
|
@build_args = build_args
|
104
111
|
@gem_dir = spec.full_gem_path
|
@@ -109,7 +116,7 @@ class Gem::Ext::Builder
|
|
109
116
|
##
|
110
117
|
# Chooses the extension builder class for +extension+
|
111
118
|
|
112
|
-
def builder_for
|
119
|
+
def builder_for(extension) # :nodoc:
|
113
120
|
case extension
|
114
121
|
when /extconf/ then
|
115
122
|
Gem::Ext::ExtConfBuilder
|
@@ -131,7 +138,7 @@ class Gem::Ext::Builder
|
|
131
138
|
##
|
132
139
|
# Logs the build +output+ in +build_dir+, then raises Gem::Ext::BuildError.
|
133
140
|
|
134
|
-
def build_error
|
141
|
+
def build_error(build_dir, output, backtrace = nil) # :nodoc:
|
135
142
|
gem_make_out = write_gem_make_out output
|
136
143
|
|
137
144
|
message = <<-EOF
|
@@ -146,12 +153,24 @@ EOF
|
|
146
153
|
raise Gem::Ext::BuildError, message, backtrace
|
147
154
|
end
|
148
155
|
|
149
|
-
def build_extension
|
156
|
+
def build_extension(extension, dest_path) # :nodoc:
|
150
157
|
results = []
|
151
158
|
|
159
|
+
# FIXME: Determine if this line is necessary and, if so, why.
|
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
|
152
170
|
extension ||= '' # I wish I knew why this line existed
|
171
|
+
|
153
172
|
extension_dir =
|
154
|
-
File.expand_path File.join
|
173
|
+
File.expand_path File.join(@gem_dir, File.dirname(extension))
|
155
174
|
lib_dir = File.join @spec.full_gem_path, @spec.raw_require_paths.first
|
156
175
|
|
157
176
|
builder = builder_for extension
|
@@ -160,11 +179,19 @@ EOF
|
|
160
179
|
FileUtils.mkdir_p dest_path
|
161
180
|
|
162
181
|
CHDIR_MUTEX.synchronize do
|
163
|
-
Dir.
|
164
|
-
|
182
|
+
pwd = Dir.getwd
|
183
|
+
Dir.chdir extension_dir
|
184
|
+
begin
|
185
|
+
results = builder.build(extension, dest_path,
|
165
186
|
results, @build_args, lib_dir)
|
166
187
|
|
167
188
|
verbose { results.join("\n") }
|
189
|
+
ensure
|
190
|
+
begin
|
191
|
+
Dir.chdir pwd
|
192
|
+
rescue SystemCallError
|
193
|
+
Dir.chdir dest_path
|
194
|
+
end
|
168
195
|
end
|
169
196
|
end
|
170
197
|
|
@@ -193,6 +220,7 @@ EOF
|
|
193
220
|
|
194
221
|
FileUtils.rm_f @spec.gem_build_complete_path
|
195
222
|
|
223
|
+
# FIXME: action at a distance: @ran_rake modified deep in build_extension(). - @duckinator
|
196
224
|
@ran_rake = false # only run rake once
|
197
225
|
|
198
226
|
@spec.extensions.each do |extension|
|
@@ -207,7 +235,7 @@ EOF
|
|
207
235
|
##
|
208
236
|
# Writes +output+ to gem_make.out in the extension install directory.
|
209
237
|
|
210
|
-
def write_gem_make_out
|
238
|
+
def write_gem_make_out(output) # :nodoc:
|
211
239
|
destination = File.join @spec.extension_dir, 'gem_make.out'
|
212
240
|
|
213
241
|
FileUtils.mkdir_p @spec.extension_dir
|
@@ -218,4 +246,3 @@ EOF
|
|
218
246
|
end
|
219
247
|
|
220
248
|
end
|
221
|
-
|
@@ -2,8 +2,8 @@
|
|
2
2
|
require 'rubygems/command'
|
3
3
|
|
4
4
|
class Gem::Ext::CmakeBuilder < Gem::Ext::Builder
|
5
|
-
def self.build(extension,
|
6
|
-
unless File.exist?('Makefile')
|
5
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil)
|
6
|
+
unless File.exist?('Makefile')
|
7
7
|
cmd = "cmake . -DCMAKE_INSTALL_PREFIX=#{dest_path}"
|
8
8
|
cmd << " #{Gem::Command.build_args.join ' '}" unless Gem::Command.build_args.empty?
|
9
9
|
|
@@ -7,8 +7,8 @@
|
|
7
7
|
|
8
8
|
class Gem::Ext::ConfigureBuilder < Gem::Ext::Builder
|
9
9
|
|
10
|
-
def self.build(extension,
|
11
|
-
unless File.exist?('Makefile')
|
10
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil)
|
11
|
+
unless File.exist?('Makefile')
|
12
12
|
cmd = "sh ./configure --prefix=#{dest_path}"
|
13
13
|
cmd << " #{args.join ' '}" unless args.empty?
|
14
14
|
|
@@ -21,4 +21,3 @@ class Gem::Ext::ConfigureBuilder < Gem::Ext::Builder
|
|
21
21
|
end
|
22
22
|
|
23
23
|
end
|
24
|
-
|
@@ -7,11 +7,12 @@
|
|
7
7
|
|
8
8
|
require 'fileutils'
|
9
9
|
require 'tempfile'
|
10
|
+
require 'shellwords'
|
10
11
|
|
11
12
|
class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
12
13
|
FileEntry = FileUtils::Entry_ # :nodoc:
|
13
14
|
|
14
|
-
def self.build(extension,
|
15
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil)
|
15
16
|
tmp_dest = Dir.mktmpdir(".gem.", ".")
|
16
17
|
|
17
18
|
# Some versions of `mktmpdir` return absolute paths, which will break make
|
@@ -23,9 +24,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
23
24
|
# spaces do not work.
|
24
25
|
#
|
25
26
|
# Details: https://github.com/rubygems/rubygems/issues/977#issuecomment-171544940
|
26
|
-
|
27
|
-
# TODO: Make this unconditional when rubygems no longer supports Ruby 1.9.x.
|
28
|
-
tmp_dest = get_relative_path(tmp_dest) unless Gem.win_platform? && RUBY_VERSION <= '2.0'
|
27
|
+
tmp_dest = get_relative_path(tmp_dest)
|
29
28
|
|
30
29
|
Tempfile.open %w"siteconf .rb", "." do |siteconf|
|
31
30
|
siteconf.puts "require 'rbconfig'"
|
@@ -40,13 +39,15 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
40
39
|
destdir = ENV["DESTDIR"]
|
41
40
|
|
42
41
|
begin
|
43
|
-
cmd =
|
42
|
+
cmd = Gem.ruby.shellsplit << "-I" << File.expand_path("../../..", __FILE__) <<
|
43
|
+
"-r" << get_relative_path(siteconf.path) << File.basename(extension)
|
44
|
+
cmd.push(*args)
|
44
45
|
|
45
46
|
begin
|
46
47
|
run cmd, results
|
47
48
|
ensure
|
48
49
|
if File.exist? 'mkmf.log'
|
49
|
-
unless $?.success?
|
50
|
+
unless $?.success?
|
50
51
|
results << "To see why this extension failed to compile, please check" \
|
51
52
|
" the mkmf.log which can be found here:\n"
|
52
53
|
results << " " + File.join(dest_path, 'mkmf.log') + "\n"
|
@@ -62,7 +63,7 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
62
63
|
|
63
64
|
if tmp_dest
|
64
65
|
# TODO remove in RubyGems 3
|
65
|
-
if Gem.install_extension_in_lib and lib_dir
|
66
|
+
if Gem.install_extension_in_lib and lib_dir
|
66
67
|
FileUtils.mkdir_p lib_dir
|
67
68
|
entries = Dir.entries(tmp_dest) - %w[. ..]
|
68
69
|
entries = entries.map { |entry| File.join tmp_dest, entry }
|
@@ -5,33 +5,31 @@
|
|
5
5
|
# See LICENSE.txt for permissions.
|
6
6
|
#++
|
7
7
|
|
8
|
+
require "shellwords"
|
9
|
+
|
8
10
|
class Gem::Ext::RakeBuilder < Gem::Ext::Builder
|
9
11
|
|
10
|
-
def self.build(extension,
|
11
|
-
if File.basename(extension) =~ /mkrf_conf/i
|
12
|
-
|
13
|
-
cmd << " #{args.join " "}" unless args.empty?
|
14
|
-
run cmd, results
|
12
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil)
|
13
|
+
if File.basename(extension) =~ /mkrf_conf/i
|
14
|
+
run([Gem.ruby, File.basename(extension), *args], results)
|
15
15
|
end
|
16
16
|
|
17
|
-
# Deal with possible spaces in the path, e.g. C:/Program Files
|
18
|
-
dest_path = '"' + dest_path.to_s + '"' if dest_path.to_s.include?(' ')
|
19
|
-
|
20
17
|
rake = ENV['rake']
|
21
18
|
|
22
|
-
rake
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
if rake
|
20
|
+
rake = rake.shellsplit
|
21
|
+
else
|
22
|
+
begin
|
23
|
+
rake = [Gem.ruby, "-rrubygems", Gem.bin_path('rake', 'rake')]
|
24
|
+
rescue Gem::Exception
|
25
|
+
rake = [Gem.default_exec_format % 'rake']
|
26
|
+
end
|
27
|
+
end
|
30
28
|
|
31
|
-
|
29
|
+
rake_args = ["RUBYARCHDIR=#{dest_path}", "RUBYLIBDIR=#{dest_path}", *args]
|
30
|
+
run(rake + rake_args, results)
|
32
31
|
|
33
32
|
results
|
34
33
|
end
|
35
34
|
|
36
35
|
end
|
37
|
-
|
data/lib/rubygems/ext.rb
CHANGED
data/lib/rubygems/gem_runner.rb
CHANGED
@@ -38,7 +38,7 @@ class Gem::GemRunner
|
|
38
38
|
##
|
39
39
|
# Run the gem command with the following arguments.
|
40
40
|
|
41
|
-
def run
|
41
|
+
def run(args)
|
42
42
|
build_args = extract_build_args args
|
43
43
|
|
44
44
|
do_configuration args
|
@@ -63,7 +63,7 @@ class Gem::GemRunner
|
|
63
63
|
# Separates the build arguments (those following <code>--</code>) from the
|
64
64
|
# other arguments in the list.
|
65
65
|
|
66
|
-
def extract_build_args
|
66
|
+
def extract_build_args(args) # :nodoc:
|
67
67
|
return [] unless offset = args.index('--')
|
68
68
|
|
69
69
|
build_args = args.slice!(offset...args.length)
|
@@ -7,6 +7,8 @@ require 'rubygems/text'
|
|
7
7
|
|
8
8
|
module Gem::GemcutterUtilities
|
9
9
|
|
10
|
+
ERROR_CODE = 1
|
11
|
+
|
10
12
|
include Gem::Text
|
11
13
|
|
12
14
|
# TODO: move to Gem::Command
|
@@ -27,11 +29,23 @@ module Gem::GemcutterUtilities
|
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
32
|
+
##
|
33
|
+
# Add the --otp option
|
34
|
+
|
35
|
+
def add_otp_option
|
36
|
+
add_option('--otp CODE',
|
37
|
+
'Digit code for multifactor authentication') do |value, options|
|
38
|
+
options[:otp] = value
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
30
42
|
##
|
31
43
|
# The API key from the command options or from the user's configuration.
|
32
44
|
|
33
45
|
def api_key
|
34
|
-
if
|
46
|
+
if ENV["GEM_HOST_API_KEY"]
|
47
|
+
ENV["GEM_HOST_API_KEY"]
|
48
|
+
elsif options[:key]
|
35
49
|
verify_api_key options[:key]
|
36
50
|
elsif Gem.configuration.api_keys.key?(host)
|
37
51
|
Gem.configuration.api_keys[host]
|
@@ -69,7 +83,7 @@ module Gem::GemcutterUtilities
|
|
69
83
|
self.host = host if host
|
70
84
|
unless self.host
|
71
85
|
alert_error "You must specify a gem server"
|
72
|
-
terminate_interaction
|
86
|
+
terminate_interaction(ERROR_CODE)
|
73
87
|
end
|
74
88
|
|
75
89
|
if allowed_push_host
|
@@ -78,7 +92,7 @@ module Gem::GemcutterUtilities
|
|
78
92
|
|
79
93
|
unless (host_uri.scheme == allowed_host_uri.scheme) && (host_uri.host == allowed_host_uri.host)
|
80
94
|
alert_error "#{self.host.inspect} is not allowed by the gemspec, which only allows #{allowed_push_host.inspect}"
|
81
|
-
terminate_interaction
|
95
|
+
terminate_interaction(ERROR_CODE)
|
82
96
|
end
|
83
97
|
end
|
84
98
|
|
@@ -93,11 +107,11 @@ module Gem::GemcutterUtilities
|
|
93
107
|
# Signs in with the RubyGems API at +sign_in_host+ and sets the rubygems API
|
94
108
|
# key.
|
95
109
|
|
96
|
-
def sign_in
|
110
|
+
def sign_in(sign_in_host = nil)
|
97
111
|
sign_in_host ||= self.host
|
98
112
|
return if api_key
|
99
113
|
|
100
|
-
pretty_host = if Gem::DEFAULT_HOST == sign_in_host
|
114
|
+
pretty_host = if Gem::DEFAULT_HOST == sign_in_host
|
101
115
|
'RubyGems.org'
|
102
116
|
else
|
103
117
|
sign_in_host
|
@@ -116,6 +130,13 @@ module Gem::GemcutterUtilities
|
|
116
130
|
request.basic_auth email, password
|
117
131
|
end
|
118
132
|
|
133
|
+
if need_otp? response
|
134
|
+
response = rubygems_api_request(:get, "api/v1/api_key", sign_in_host) do |request|
|
135
|
+
request.basic_auth email, password
|
136
|
+
request.add_field "OTP", options[:otp]
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
119
140
|
with_response response do |resp|
|
120
141
|
say "Signed in."
|
121
142
|
set_api_key host, resp.body
|
@@ -127,11 +148,11 @@ module Gem::GemcutterUtilities
|
|
127
148
|
# an error.
|
128
149
|
|
129
150
|
def verify_api_key(key)
|
130
|
-
if Gem.configuration.api_keys.key? key
|
151
|
+
if Gem.configuration.api_keys.key? key
|
131
152
|
Gem.configuration.api_keys[key]
|
132
153
|
else
|
133
154
|
alert_error "No such API key. Please add it to your configuration (done automatically on initial `gem push`)."
|
134
|
-
terminate_interaction
|
155
|
+
terminate_interaction(ERROR_CODE)
|
135
156
|
end
|
136
157
|
end
|
137
158
|
|
@@ -142,10 +163,10 @@ module Gem::GemcutterUtilities
|
|
142
163
|
# If the response was not successful, shows an error to the user including
|
143
164
|
# the +error_prefix+ and the response body.
|
144
165
|
|
145
|
-
def with_response
|
166
|
+
def with_response(response, error_prefix = nil)
|
146
167
|
case response
|
147
168
|
when Net::HTTPSuccess then
|
148
|
-
if block_given?
|
169
|
+
if block_given?
|
149
170
|
yield response
|
150
171
|
else
|
151
172
|
say clean_text(response.body)
|
@@ -155,11 +176,25 @@ module Gem::GemcutterUtilities
|
|
155
176
|
message = "#{error_prefix}: #{message}" if error_prefix
|
156
177
|
|
157
178
|
say clean_text(message)
|
158
|
-
terminate_interaction
|
179
|
+
terminate_interaction(ERROR_CODE)
|
159
180
|
end
|
160
181
|
end
|
161
182
|
|
162
|
-
|
183
|
+
##
|
184
|
+
# Returns true when the user has enabled multifactor authentication from
|
185
|
+
# +response+ text.
|
186
|
+
|
187
|
+
def need_otp?(response)
|
188
|
+
return unless response.kind_of?(Net::HTTPUnauthorized) &&
|
189
|
+
response.body.start_with?('You have enabled multifactor authentication')
|
190
|
+
return true if options[:otp]
|
191
|
+
|
192
|
+
say 'You have enabled multi-factor authentication. Please enter OTP code.'
|
193
|
+
options[:otp] = ask 'Code: '
|
194
|
+
true
|
195
|
+
end
|
196
|
+
|
197
|
+
def set_api_key(host, key)
|
163
198
|
if host == Gem::DEFAULT_HOST
|
164
199
|
Gem.configuration.rubygems_api_key = key
|
165
200
|
else
|
@@ -168,4 +203,3 @@ module Gem::GemcutterUtilities
|
|
168
203
|
end
|
169
204
|
|
170
205
|
end
|
171
|
-
|
data/lib/rubygems/indexer.rb
CHANGED
@@ -4,10 +4,17 @@ require 'rubygems/package'
|
|
4
4
|
require 'time'
|
5
5
|
require 'tmpdir'
|
6
6
|
|
7
|
+
rescue_exceptions = [LoadError]
|
8
|
+
begin
|
9
|
+
require 'bundler/errors'
|
10
|
+
rescue LoadError # this rubygems + old ruby
|
11
|
+
else # this rubygems + ruby trunk with bundler
|
12
|
+
rescue_exceptions << Bundler::GemfileNotFound
|
13
|
+
end
|
7
14
|
begin
|
8
15
|
gem 'builder'
|
9
16
|
require 'builder/xchar'
|
10
|
-
rescue
|
17
|
+
rescue *rescue_exceptions
|
11
18
|
end
|
12
19
|
|
13
20
|
##
|
@@ -55,7 +62,7 @@ class Gem::Indexer
|
|
55
62
|
require 'tmpdir'
|
56
63
|
require 'zlib'
|
57
64
|
|
58
|
-
unless defined?(Builder::XChar)
|
65
|
+
unless defined?(Builder::XChar)
|
59
66
|
raise "Gem::Indexer requires that the XML Builder library be installed:" +
|
60
67
|
"\n\tgem install builder"
|
61
68
|
end
|
@@ -109,7 +116,7 @@ class Gem::Indexer
|
|
109
116
|
##
|
110
117
|
# Builds Marshal quick index gemspecs.
|
111
118
|
|
112
|
-
def build_marshal_gemspecs
|
119
|
+
def build_marshal_gemspecs(specs)
|
113
120
|
count = specs.count
|
114
121
|
progress = ui.progress_reporter count,
|
115
122
|
"Generating Marshal quick index gemspecs for #{count} gems",
|
@@ -154,7 +161,7 @@ class Gem::Indexer
|
|
154
161
|
platform = spec.original_platform
|
155
162
|
|
156
163
|
# win32-api-1.0.4-x86-mswin32-60
|
157
|
-
unless String === platform
|
164
|
+
unless String === platform
|
158
165
|
alert_warning "Skipping invalid platform in gem: #{spec.full_name}"
|
159
166
|
next
|
160
167
|
end
|
@@ -172,7 +179,7 @@ class Gem::Indexer
|
|
172
179
|
##
|
173
180
|
# Builds indices for RubyGems 1.2 and newer. Handles full, latest, prerelease
|
174
181
|
|
175
|
-
def build_modern_indices
|
182
|
+
def build_modern_indices(specs)
|
176
183
|
prerelease, released = specs.partition { |s|
|
177
184
|
s.version.prerelease?
|
178
185
|
}
|
@@ -192,9 +199,9 @@ class Gem::Indexer
|
|
192
199
|
"#{@prerelease_specs_index}.gz"]
|
193
200
|
end
|
194
201
|
|
195
|
-
def map_gems_to_specs
|
202
|
+
def map_gems_to_specs(gems)
|
196
203
|
gems.map { |gemfile|
|
197
|
-
if File.size(gemfile) == 0
|
204
|
+
if File.size(gemfile) == 0
|
198
205
|
alert_warning "Skipping zero-length gem: #{gemfile}"
|
199
206
|
next
|
200
207
|
end
|
@@ -228,7 +235,7 @@ class Gem::Indexer
|
|
228
235
|
say "Compressing indices"
|
229
236
|
|
230
237
|
Gem.time 'Compressed indices' do
|
231
|
-
if @build_modern
|
238
|
+
if @build_modern
|
232
239
|
gzip @specs_index
|
233
240
|
gzip @latest_specs_index
|
234
241
|
gzip @prerelease_specs_index
|
@@ -271,7 +278,7 @@ class Gem::Indexer
|
|
271
278
|
# List of gem file names to index.
|
272
279
|
|
273
280
|
def gem_file_list
|
274
|
-
|
281
|
+
Gem::Util.glob_files_in_dir("*.gem", File.join(@dest_directory, "gems"))
|
275
282
|
end
|
276
283
|
|
277
284
|
##
|
@@ -306,7 +313,7 @@ class Gem::Indexer
|
|
306
313
|
files = @files
|
307
314
|
files.delete @quick_marshal_dir if files.include? @quick_dir
|
308
315
|
|
309
|
-
if files.include? @quick_marshal_dir and not files.include? @quick_dir
|
316
|
+
if files.include? @quick_marshal_dir and not files.include? @quick_dir
|
310
317
|
files.delete @quick_marshal_dir
|
311
318
|
|
312
319
|
dst_name = File.join(@dest_directory, @quick_marshal_dir_base)
|
@@ -347,7 +354,7 @@ class Gem::Indexer
|
|
347
354
|
data = Gem.read_binary path
|
348
355
|
compressed_data = Gem.read_binary "#{path}.#{extension}"
|
349
356
|
|
350
|
-
unless data == Gem::Util.inflate(compressed_data)
|
357
|
+
unless data == Gem::Util.inflate(compressed_data)
|
351
358
|
raise "Compressed file #{compressed_path} does not match uncompressed file #{path}"
|
352
359
|
end
|
353
360
|
end
|
@@ -367,7 +374,7 @@ class Gem::Indexer
|
|
367
374
|
gem_mtime >= specs_mtime
|
368
375
|
end
|
369
376
|
|
370
|
-
if updated_gems.empty?
|
377
|
+
if updated_gems.empty?
|
371
378
|
say 'No new gems'
|
372
379
|
terminate_interaction 0
|
373
380
|
end
|
@@ -30,7 +30,7 @@ module Gem::InstallUpdateOptions
|
|
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|
|
@@ -50,7 +50,7 @@ module Gem::InstallUpdateOptions
|
|
50
50
|
add_option(:"Install/Update", '--vendor',
|
51
51
|
'Install gem into the vendor directory.',
|
52
52
|
'Only for use by gem repackagers.') do |value, options|
|
53
|
-
unless Gem.vendor_dir
|
53
|
+
unless Gem.vendor_dir
|
54
54
|
raise OptionParser::InvalidOption.new 'your platform is not supported'
|
55
55
|
end
|
56
56
|
|
@@ -63,30 +63,6 @@ module Gem::InstallUpdateOptions
|
|
63
63
|
options[:document] = []
|
64
64
|
end
|
65
65
|
|
66
|
-
add_option(:Deprecated, '--[no-]rdoc',
|
67
|
-
'Generate RDoc for installed gems',
|
68
|
-
'Use --document instead') do |value, options|
|
69
|
-
if value then
|
70
|
-
options[:document] << 'rdoc'
|
71
|
-
else
|
72
|
-
options[:document].delete 'rdoc'
|
73
|
-
end
|
74
|
-
|
75
|
-
options[:document].uniq!
|
76
|
-
end
|
77
|
-
|
78
|
-
add_option(:Deprecated, '--[no-]ri',
|
79
|
-
'Generate ri data for installed gems.',
|
80
|
-
'Use --document instead') do |value, options|
|
81
|
-
if value then
|
82
|
-
options[:document] << 'ri'
|
83
|
-
else
|
84
|
-
options[:document].delete 'ri'
|
85
|
-
end
|
86
|
-
|
87
|
-
options[:document].uniq!
|
88
|
-
end
|
89
|
-
|
90
66
|
add_option(:"Install/Update", '-E', '--[no-]env-shebang',
|
91
67
|
"Rewrite the shebang line on installed",
|
92
68
|
"scripts to use /usr/bin/env") do |value, options|
|
@@ -164,7 +140,7 @@ module Gem::InstallUpdateOptions
|
|
164
140
|
File.exist? file
|
165
141
|
end unless v
|
166
142
|
|
167
|
-
unless v
|
143
|
+
unless v
|
168
144
|
message = v ? v : "(tried #{Gem::GEM_DEP_FILES.join ', '})"
|
169
145
|
|
170
146
|
raise OptionParser::InvalidArgument,
|
@@ -202,7 +178,6 @@ module Gem::InstallUpdateOptions
|
|
202
178
|
'Suggest alternates when gems are not found') do |v,o|
|
203
179
|
options[:suggest_alternate] = v
|
204
180
|
end
|
205
|
-
|
206
181
|
end
|
207
182
|
|
208
183
|
##
|
@@ -213,4 +188,3 @@ module Gem::InstallUpdateOptions
|
|
213
188
|
end
|
214
189
|
|
215
190
|
end
|
216
|
-
|