rubygems-update 3.3.26 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -0
- data/CONTRIBUTING.md +24 -1
- data/Manifest.txt +30 -27
- data/POLICIES.md +10 -8
- data/README.md +2 -2
- data/bin/gem +1 -4
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +59 -0
- data/bundler/README.md +2 -2
- data/bundler/bundler.gemspec +2 -2
- data/bundler/exe/bundle +1 -4
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +1 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/install.rb +2 -3
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/outdated.rb +1 -3
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +43 -2
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/definition.rb +61 -31
- data/bundler/lib/bundler/dependency.rb +12 -11
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +1 -1
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +1 -0
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/fetcher/compact_index.rb +9 -11
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
- data/bundler/lib/bundler/fetcher.rb +2 -6
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +0 -3
- data/bundler/lib/bundler/gem_version_promoter.rb +52 -86
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +5 -13
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer/parallel_installer.rb +0 -31
- data/bundler/lib/bundler/installer.rb +6 -16
- data/bundler/lib/bundler/lazy_specification.rb +5 -1
- data/bundler/lib/bundler/lockfile_parser.rb +5 -5
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +1 -1
- data/bundler/lib/bundler/man/bundle-console.1 +1 -1
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +0 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +2 -2
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +1 -1
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +4 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/resolver/base.rb +7 -11
- data/bundler/lib/bundler/resolver/candidate.rb +92 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +63 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +26 -36
- data/bundler/lib/bundler/resolver.rb +294 -277
- data/bundler/lib/bundler/rubygems_ext.rb +11 -6
- data/bundler/lib/bundler/rubygems_gem_installer.rb +4 -2
- data/bundler/lib/bundler/rubygems_integration.rb +1 -9
- data/bundler/lib/bundler/runtime.rb +1 -5
- data/bundler/lib/bundler/settings.rb +0 -6
- data/bundler/lib/bundler/shared_helpers.rb +1 -0
- data/bundler/lib/bundler/source/git/git_proxy.rb +193 -67
- data/bundler/lib/bundler/source/git.rb +15 -17
- data/bundler/lib/bundler/source/metadata.rb +0 -1
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +5 -5
- data/bundler/lib/bundler/source/rubygems.rb +13 -67
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +7 -9
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +4 -9
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +151 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +53 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +124 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +20 -64
- data/lib/rubygems/command_manager.rb +2 -2
- data/lib/rubygems/commands/fetch_command.rb +1 -1
- data/lib/rubygems/commands/install_command.rb +7 -3
- data/lib/rubygems/commands/rdoc_command.rb +3 -2
- data/lib/rubygems/commands/setup_command.rb +2 -2
- data/lib/rubygems/commands/unpack_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +1 -7
- data/lib/rubygems/config_file.rb +33 -0
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -2
- data/lib/rubygems/defaults.rb +15 -1
- data/lib/rubygems/dependency.rb +4 -1
- data/lib/rubygems/dependency_installer.rb +24 -24
- data/lib/rubygems/exceptions.rb +1 -3
- data/lib/rubygems/ext/builder.rb +3 -3
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +15 -20
- data/lib/rubygems/ext/ext_conf_builder.rb +2 -0
- data/lib/rubygems/indexer.rb +1 -1
- data/lib/rubygems/installer.rb +5 -5
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/package/tar_header.rb +11 -11
- data/lib/rubygems/platform.rb +0 -2
- data/lib/rubygems/request_set/gem_dependency_api.rb +104 -104
- data/lib/rubygems/requirement.rb +7 -7
- data/lib/rubygems/resolver/installer_set.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/security/policies.rb +40 -40
- data/lib/rubygems/security/trust_dir.rb +1 -1
- data/lib/rubygems/security.rb +3 -16
- data/lib/rubygems/source.rb +2 -2
- data/lib/rubygems/specification.rb +37 -49
- data/lib/rubygems/specification_policy.rb +14 -0
- data/lib/rubygems/stub_specification.rb +2 -2
- data/lib/rubygems/text.rb +1 -1
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/util.rb +1 -5
- data/lib/rubygems/validator.rb +1 -1
- data/lib/rubygems.rb +8 -3
- data/rubygems-update.gemspec +2 -2
- data/test/rubygems/helper.rb +7 -3
- data/test/rubygems/test_bundled_ca.rb +1 -1
- data/test/rubygems/test_exit.rb +6 -0
- data/test/rubygems/test_gem.rb +4 -9
- data/test/rubygems/test_gem_bundler_version_finder.rb +2 -1
- data/test/rubygems/test_gem_command_manager.rb +1 -1
- data/test/rubygems/test_gem_commands_install_command.rb +19 -0
- data/test/rubygems/test_gem_commands_setup_command.rb +1 -8
- data/test/rubygems/test_gem_commands_update_command.rb +6 -6
- data/test/rubygems/test_gem_config_file.rb +1 -1
- data/test/rubygems/test_gem_dependency.rb +2 -0
- data/test/rubygems/test_gem_ext_builder.rb +3 -3
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +22 -32
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -32
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +22 -27
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +16 -16
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -10
- data/test/rubygems/test_gem_indexer.rb +39 -20
- data/test/rubygems/test_gem_installer.rb +68 -2
- data/test/rubygems/test_gem_package_tar_header.rb +13 -13
- data/test/rubygems/test_gem_platform.rb +59 -60
- data/test/rubygems/test_gem_remote_fetcher.rb +4 -4
- data/test/rubygems/test_gem_request_set.rb +2 -2
- data/test/rubygems/test_gem_requirement.rb +1 -1
- data/test/rubygems/test_gem_resolver_api_set.rb +12 -12
- data/test/rubygems/test_gem_resolver_api_specification.rb +19 -19
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
- data/test/rubygems/test_gem_security_policy.rb +10 -10
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
- data/test/rubygems/test_gem_specification.rb +50 -37
- data/test/rubygems/test_gem_uninstaller.rb +1 -1
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_kernel.rb +10 -8
- data/test/rubygems/test_require.rb +70 -55
- metadata +34 -31
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
@@ -30,7 +30,7 @@
|
|
30
30
|
# class RSYNC < Generic
|
31
31
|
# DEFAULT_PORT = 873
|
32
32
|
# end
|
33
|
-
#
|
33
|
+
# register_scheme 'RSYNC', RSYNC
|
34
34
|
# end
|
35
35
|
# #=> Bundler::URI::RSYNC
|
36
36
|
#
|
@@ -70,7 +70,6 @@
|
|
70
70
|
# - Bundler::URI::REGEXP - (in uri/common.rb)
|
71
71
|
# - Bundler::URI::REGEXP::PATTERN - (in uri/common.rb)
|
72
72
|
# - Bundler::URI::Util - (in uri/common.rb)
|
73
|
-
# - Bundler::URI::Escape - (in uri/common.rb)
|
74
73
|
# - Bundler::URI::Error - (in uri/common.rb)
|
75
74
|
# - Bundler::URI::InvalidURIError - (in uri/common.rb)
|
76
75
|
# - Bundler::URI::InvalidComponentError - (in uri/common.rb)
|
@@ -101,3 +100,5 @@ require_relative 'uri/https'
|
|
101
100
|
require_relative 'uri/ldap'
|
102
101
|
require_relative 'uri/ldaps'
|
103
102
|
require_relative 'uri/mailto'
|
103
|
+
require_relative 'uri/ws'
|
104
|
+
require_relative 'uri/wss'
|
@@ -11,37 +11,5 @@ end
|
|
11
11
|
require_relative "vendor/net-http-persistent/lib/net/http/persistent"
|
12
12
|
|
13
13
|
module Bundler
|
14
|
-
|
15
|
-
def connection_for(uri)
|
16
|
-
super(uri) do |connection|
|
17
|
-
result = yield connection
|
18
|
-
warn_old_tls_version_rubygems_connection(uri, connection)
|
19
|
-
result
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def warn_old_tls_version_rubygems_connection(uri, connection)
|
24
|
-
return unless connection.http.use_ssl?
|
25
|
-
return unless (uri.host || "").end_with?("rubygems.org")
|
26
|
-
|
27
|
-
socket = connection.instance_variable_get(:@socket)
|
28
|
-
return unless socket
|
29
|
-
socket_io = socket.io
|
30
|
-
return unless socket_io.respond_to?(:ssl_version)
|
31
|
-
ssl_version = socket_io.ssl_version
|
32
|
-
|
33
|
-
case ssl_version
|
34
|
-
when /TLSv([\d\.]+)/
|
35
|
-
version = Gem::Version.new($1)
|
36
|
-
if version < Gem::Version.new("1.2")
|
37
|
-
Bundler.ui.warn \
|
38
|
-
"Warning: Your Ruby version is compiled against a copy of OpenSSL that is very old. " \
|
39
|
-
"Starting in January 2018, RubyGems.org will refuse connection requests from these " \
|
40
|
-
"very old versions of OpenSSL. If you will need to continue installing gems after " \
|
41
|
-
"January 2018, please follow this guide to upgrade: http://ruby.to/tls-outdated.",
|
42
|
-
:wrap => true
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
14
|
+
PersistentHTTP = Persistent::Net::HTTP::Persistent
|
47
15
|
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
|
3
3
|
module Bundler
|
4
|
-
VERSION = "2.
|
4
|
+
VERSION = "2.4.1".freeze
|
5
5
|
|
6
6
|
def self.bundler_major_version
|
7
7
|
@bundler_major_version ||= VERSION.split(".").first.to_i
|
8
8
|
end
|
9
|
+
|
10
|
+
def self.gem_version
|
11
|
+
@gem_version ||= Gem::Version.create(VERSION)
|
12
|
+
end
|
9
13
|
end
|
@@ -87,14 +87,12 @@ module Bundler
|
|
87
87
|
creation_errors = []
|
88
88
|
|
89
89
|
@threads = Array.new(@size) do |i|
|
90
|
-
|
91
|
-
|
92
|
-
thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
|
93
|
-
end
|
94
|
-
rescue ThreadError => e
|
95
|
-
creation_errors << e
|
96
|
-
nil
|
90
|
+
Thread.start { process_queue(i) }.tap do |thread|
|
91
|
+
thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
|
97
92
|
end
|
93
|
+
rescue ThreadError => e
|
94
|
+
creation_errors << e
|
95
|
+
nil
|
98
96
|
end.compact
|
99
97
|
|
100
98
|
add_interrupt_handler unless @threads.empty?
|
data/bundler/lib/bundler.rb
CHANGED
@@ -39,6 +39,16 @@ module Bundler
|
|
39
39
|
environment_preserver.replace_with_backup
|
40
40
|
SUDO_MUTEX = Thread::Mutex.new
|
41
41
|
|
42
|
+
SAFE_MARSHAL_CLASSES = [Symbol, TrueClass, String, Array, Hash].freeze
|
43
|
+
SAFE_MARSHAL_ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed.".freeze
|
44
|
+
SAFE_MARSHAL_PROC = proc do |object|
|
45
|
+
object.tap do
|
46
|
+
unless SAFE_MARSHAL_CLASSES.include?(object.class)
|
47
|
+
raise TypeError, format(SAFE_MARSHAL_ERROR, object.class, SAFE_MARSHAL_CLASSES.join(", "))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
42
52
|
autoload :Definition, File.expand_path("bundler/definition", __dir__)
|
43
53
|
autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
|
44
54
|
autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
|
@@ -75,7 +85,6 @@ module Bundler
|
|
75
85
|
autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
|
76
86
|
autoload :UI, File.expand_path("bundler/ui", __dir__)
|
77
87
|
autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
|
78
|
-
autoload :VersionRanges, File.expand_path("bundler/version_ranges", __dir__)
|
79
88
|
|
80
89
|
class << self
|
81
90
|
def configure
|
@@ -454,7 +463,7 @@ EOF
|
|
454
463
|
end
|
455
464
|
|
456
465
|
def local_platform
|
457
|
-
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
466
|
+
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
458
467
|
Gem::Platform.local
|
459
468
|
end
|
460
469
|
|
@@ -487,41 +496,9 @@ EOF
|
|
487
496
|
configured_bundle_path.use_system_gems?
|
488
497
|
end
|
489
498
|
|
490
|
-
def requires_sudo?
|
491
|
-
return @requires_sudo if defined?(@requires_sudo_ran)
|
492
|
-
|
493
|
-
sudo_present = which "sudo" if settings.allow_sudo?
|
494
|
-
|
495
|
-
if sudo_present
|
496
|
-
# the bundle path and subdirectories need to be writable for RubyGems
|
497
|
-
# to be able to unpack and install gems without exploding
|
498
|
-
path = bundle_path
|
499
|
-
path = path.parent until path.exist?
|
500
|
-
|
501
|
-
# bins are written to a different location on OS X
|
502
|
-
bin_dir = Pathname.new(Bundler.system_bindir)
|
503
|
-
bin_dir = bin_dir.parent until bin_dir.exist?
|
504
|
-
|
505
|
-
# if any directory is not writable, we need sudo
|
506
|
-
files = [path, bin_dir] | Dir[bundle_path.join("build_info/*").to_s] | Dir[bundle_path.join("*").to_s]
|
507
|
-
unwritable_files = files.reject {|f| File.writable?(f) }
|
508
|
-
sudo_needed = !unwritable_files.empty?
|
509
|
-
if sudo_needed
|
510
|
-
Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
|
511
|
-
end
|
512
|
-
end
|
513
|
-
|
514
|
-
@requires_sudo_ran = true
|
515
|
-
@requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
|
516
|
-
end
|
517
|
-
|
518
499
|
def mkdir_p(path, options = {})
|
519
|
-
|
520
|
-
|
521
|
-
else
|
522
|
-
SharedHelpers.filesystem_access(path, :write) do |p|
|
523
|
-
FileUtils.mkdir_p(p)
|
524
|
-
end
|
500
|
+
SharedHelpers.filesystem_access(path, :write) do |p|
|
501
|
+
FileUtils.mkdir_p(p)
|
525
502
|
end
|
526
503
|
end
|
527
504
|
|
@@ -538,39 +515,18 @@ EOF
|
|
538
515
|
end
|
539
516
|
end
|
540
517
|
|
541
|
-
def sudo(str)
|
542
|
-
SUDO_MUTEX.synchronize do
|
543
|
-
prompt = "\n\n" + <<-PROMPT.gsub(/^ {6}/, "").strip + " "
|
544
|
-
Your user account isn't allowed to install to the system RubyGems.
|
545
|
-
You can cancel this installation and run:
|
546
|
-
|
547
|
-
bundle config set --local path 'vendor/bundle'
|
548
|
-
bundle install
|
549
|
-
|
550
|
-
to install the gems into ./vendor/bundle/, or you can enter your password
|
551
|
-
and install the bundled gems to RubyGems using sudo.
|
552
|
-
|
553
|
-
Password:
|
554
|
-
PROMPT
|
555
|
-
|
556
|
-
unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
|
557
|
-
raise SudoNotPermittedError,
|
558
|
-
"Bundler requires sudo access to install at the moment. " \
|
559
|
-
"Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
|
560
|
-
end
|
561
|
-
|
562
|
-
`sudo -p "#{prompt}" #{str}`
|
563
|
-
end
|
564
|
-
end
|
565
|
-
|
566
518
|
def read_file(file)
|
567
519
|
SharedHelpers.filesystem_access(file, :read) do
|
568
520
|
File.open(file, "r:UTF-8", &:read)
|
569
521
|
end
|
570
522
|
end
|
571
523
|
|
572
|
-
def
|
573
|
-
|
524
|
+
def safe_load_marshal(data)
|
525
|
+
load_marshal(data, :marshal_proc => SAFE_MARSHAL_PROC)
|
526
|
+
end
|
527
|
+
|
528
|
+
def load_marshal(data, marshal_proc: nil)
|
529
|
+
Marshal.load(data, marshal_proc)
|
574
530
|
rescue TypeError => e
|
575
531
|
raise MarshalError, "#{e.class}: #{e.message}"
|
576
532
|
end
|
@@ -608,7 +564,7 @@ EOF
|
|
608
564
|
|
609
565
|
def git_present?
|
610
566
|
return @git_present if defined?(@git_present)
|
611
|
-
@git_present = Bundler.which("git"
|
567
|
+
@git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
|
612
568
|
end
|
613
569
|
|
614
570
|
def feature_flag
|
@@ -10,7 +10,7 @@ class Gem::Commands::FetchCommand < Gem::Command
|
|
10
10
|
def initialize
|
11
11
|
defaults = {
|
12
12
|
:suggest_alternate => true,
|
13
|
-
:version
|
13
|
+
:version => Gem::Requirement.default,
|
14
14
|
}
|
15
15
|
|
16
16
|
super "fetch", "Download a gem and place it in the current directory", defaults
|
@@ -5,6 +5,7 @@ require_relative "../dependency_installer"
|
|
5
5
|
require_relative "../local_remote_options"
|
6
6
|
require_relative "../validator"
|
7
7
|
require_relative "../version_option"
|
8
|
+
require_relative "../update_suggestion"
|
8
9
|
|
9
10
|
##
|
10
11
|
# Gem installer command line tool
|
@@ -17,14 +18,15 @@ class Gem::Commands::InstallCommand < Gem::Command
|
|
17
18
|
include Gem::VersionOption
|
18
19
|
include Gem::LocalRemoteOptions
|
19
20
|
include Gem::InstallUpdateOptions
|
21
|
+
include Gem::UpdateSuggestion
|
20
22
|
|
21
23
|
def initialize
|
22
24
|
defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({
|
23
25
|
:format_executable => false,
|
24
|
-
:lock
|
26
|
+
:lock => true,
|
25
27
|
:suggest_alternate => true,
|
26
|
-
:version
|
27
|
-
:without_groups
|
28
|
+
:version => Gem::Requirement.default,
|
29
|
+
:without_groups => [],
|
28
30
|
})
|
29
31
|
|
30
32
|
defaults.merge!(install_update_options)
|
@@ -168,6 +170,8 @@ You can use `i` command instead of `install`.
|
|
168
170
|
|
169
171
|
show_installed
|
170
172
|
|
173
|
+
say update_suggestion if eglible_for_update?
|
174
|
+
|
171
175
|
terminate_interaction exit_code
|
172
176
|
end
|
173
177
|
|
@@ -86,8 +86,9 @@ Use --overwrite to force rebuilding of documentation.
|
|
86
86
|
begin
|
87
87
|
doc.generate
|
88
88
|
rescue Errno::ENOENT => e
|
89
|
-
|
90
|
-
alert_error "Unable to document #{spec.full_name},
|
89
|
+
match = / - /.match(e.message)
|
90
|
+
alert_error "Unable to document #{spec.full_name}, " \
|
91
|
+
" #{match.post_match} is missing, skipping"
|
91
92
|
terminate_interaction 1 if specs.length == 1
|
92
93
|
end
|
93
94
|
end
|
@@ -107,7 +107,7 @@ class Gem::Commands::SetupCommand < Gem::Command
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def check_ruby_version
|
110
|
-
required_version = Gem::Requirement.new ">= 2.
|
110
|
+
required_version = Gem::Requirement.new ">= 2.6.0"
|
111
111
|
|
112
112
|
unless required_version.satisfied_by? Gem.ruby_version
|
113
113
|
alert_error "Expected Ruby version #{required_version}, is #{Gem.ruby_version}"
|
@@ -576,7 +576,7 @@ abort "#{deprecation_message}"
|
|
576
576
|
require_relative "../uninstaller"
|
577
577
|
|
578
578
|
ui = Gem::Uninstaller.new("gemcutter", :all => true, :ignore => true,
|
579
|
-
|
579
|
+
:version => "< 0.4")
|
580
580
|
ui.uninstall
|
581
581
|
rescue Gem::InstallError
|
582
582
|
end
|
@@ -21,7 +21,7 @@ class Gem::Commands::UnpackCommand < Gem::Command
|
|
21
21
|
|
22
22
|
super "unpack", "Unpack an installed gem to the current directory",
|
23
23
|
:version => Gem::Requirement.default,
|
24
|
-
:target
|
24
|
+
:target => Dir.pwd
|
25
25
|
|
26
26
|
add_option("--target=DIR",
|
27
27
|
"target directory for unpacking") do |value, options|
|
@@ -329,14 +329,8 @@ command to remove old versions.
|
|
329
329
|
Gem::Version.new("3.2.3")
|
330
330
|
elsif Gem.ruby_version > Gem::Version.new("2.7.a")
|
331
331
|
Gem::Version.new("3.1.2")
|
332
|
-
elsif Gem.ruby_version > Gem::Version.new("2.6.a")
|
333
|
-
Gem::Version.new("3.0.1")
|
334
|
-
elsif Gem.ruby_version > Gem::Version.new("2.5.a")
|
335
|
-
Gem::Version.new("2.7.3")
|
336
|
-
elsif Gem.ruby_version > Gem::Version.new("2.4.a")
|
337
|
-
Gem::Version.new("2.6.8")
|
338
332
|
else
|
339
|
-
Gem::Version.new("
|
333
|
+
Gem::Version.new("3.0.1")
|
340
334
|
end
|
341
335
|
end
|
342
336
|
end
|
data/lib/rubygems/config_file.rb
CHANGED
@@ -371,11 +371,44 @@ if you believe they were disclosed to a third party.
|
|
371
371
|
@backtrace || $DEBUG
|
372
372
|
end
|
373
373
|
|
374
|
+
# Check state file is writable. Creates empty file if not present to ensure we can write to it.
|
375
|
+
def state_file_writable?
|
376
|
+
if File.exist?(state_file_name)
|
377
|
+
File.writable?(state_file_name)
|
378
|
+
else
|
379
|
+
require "fileutils"
|
380
|
+
FileUtils.mkdir_p File.dirname(state_file_name)
|
381
|
+
File.open(state_file_name, "w") {}
|
382
|
+
true
|
383
|
+
end
|
384
|
+
rescue Errno::EACCES
|
385
|
+
false
|
386
|
+
end
|
387
|
+
|
374
388
|
# The name of the configuration file.
|
375
389
|
def config_file_name
|
376
390
|
@config_file_name || Gem.config_file
|
377
391
|
end
|
378
392
|
|
393
|
+
# The name of the state file.
|
394
|
+
def state_file_name
|
395
|
+
Gem.state_file
|
396
|
+
end
|
397
|
+
|
398
|
+
# Reads time of last update check from state file
|
399
|
+
def last_update_check
|
400
|
+
if File.readable?(state_file_name)
|
401
|
+
File.read(state_file_name).to_i
|
402
|
+
else
|
403
|
+
0
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
# Writes time of last update check to state file
|
408
|
+
def last_update_check=(timestamp)
|
409
|
+
File.write(state_file_name, timestamp.to_s) if state_file_writable?
|
410
|
+
end
|
411
|
+
|
379
412
|
# Delegates to @hash
|
380
413
|
def each(&block)
|
381
414
|
hash = @hash.dup
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
if RUBY_VERSION >= "2.5" && !Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES
|
3
|
+
if !Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES
|
5
4
|
|
6
5
|
module Kernel
|
7
6
|
rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
|
data/lib/rubygems/defaults.rb
CHANGED
@@ -133,6 +133,13 @@ module Gem
|
|
133
133
|
@config_file ||= find_config_file.tap(&Gem::UNTAINT)
|
134
134
|
end
|
135
135
|
|
136
|
+
##
|
137
|
+
# The path to standard location of the user's state file.
|
138
|
+
|
139
|
+
def self.state_file
|
140
|
+
@state_file ||= File.join(Gem.state_home, "gem", "last_update_check").tap(&Gem::UNTAINT)
|
141
|
+
end
|
142
|
+
|
136
143
|
##
|
137
144
|
# The path to standard location of the user's cache directory.
|
138
145
|
|
@@ -147,6 +154,13 @@ module Gem
|
|
147
154
|
@data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, ".local", "share"))
|
148
155
|
end
|
149
156
|
|
157
|
+
##
|
158
|
+
# The path to standard location of the user's state directory.
|
159
|
+
|
160
|
+
def self.state_home
|
161
|
+
@data_home ||= (ENV["XDG_STATE_HOME"] || File.join(Gem.user_home, ".local", "state"))
|
162
|
+
end
|
163
|
+
|
150
164
|
##
|
151
165
|
# How String Gem paths should be split. Overridable for esoteric platforms.
|
152
166
|
|
@@ -171,7 +185,7 @@ module Gem
|
|
171
185
|
def self.default_exec_format
|
172
186
|
exec_format = RbConfig::CONFIG["ruby_install_name"].sub("ruby", "%s") rescue "%s"
|
173
187
|
|
174
|
-
unless exec_format
|
188
|
+
unless exec_format.include?("%s")
|
175
189
|
raise Gem::Exception,
|
176
190
|
"[BUG] invalid exec_format #{exec_format.inspect}, no %s"
|
177
191
|
end
|
data/lib/rubygems/dependency.rb
CHANGED
@@ -277,7 +277,10 @@ class Gem::Dependency
|
|
277
277
|
requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
|
278
278
|
end.map(&:to_spec)
|
279
279
|
|
280
|
-
|
280
|
+
if prioritizes_bundler?
|
281
|
+
require_relative "bundler_version_finder"
|
282
|
+
Gem::BundlerVersionFinder.prioritize!(matches)
|
283
|
+
end
|
281
284
|
|
282
285
|
if platform_only
|
283
286
|
matches.reject! do |spec|
|
@@ -16,16 +16,16 @@ class Gem::DependencyInstaller
|
|
16
16
|
extend Gem::Deprecate
|
17
17
|
|
18
18
|
DEFAULT_OPTIONS = { # :nodoc:
|
19
|
-
:env_shebang
|
20
|
-
:document
|
21
|
-
:domain
|
22
|
-
:force
|
23
|
-
:format_executable
|
19
|
+
:env_shebang => false,
|
20
|
+
:document => %w[ri],
|
21
|
+
:domain => :both, # HACK dup
|
22
|
+
:force => false,
|
23
|
+
:format_executable => false, # HACK dup
|
24
24
|
:ignore_dependencies => false,
|
25
|
-
:prerelease
|
26
|
-
:security_policy
|
27
|
-
:wrappers
|
28
|
-
:build_args
|
25
|
+
:prerelease => false,
|
26
|
+
:security_policy => nil, # HACK NoSecurity requires OpenSSL. AlmostNo? Low?
|
27
|
+
:wrappers => true,
|
28
|
+
:build_args => nil,
|
29
29
|
:build_docs_in_background => false,
|
30
30
|
:install_as_default => false,
|
31
31
|
}.freeze
|
@@ -230,22 +230,22 @@ class Gem::DependencyInstaller
|
|
230
230
|
@installed_gems = []
|
231
231
|
|
232
232
|
options = {
|
233
|
-
:bin_dir
|
234
|
-
:build_args
|
235
|
-
:document
|
236
|
-
:env_shebang
|
237
|
-
:force
|
238
|
-
:format_executable
|
233
|
+
:bin_dir => @bin_dir,
|
234
|
+
:build_args => @build_args,
|
235
|
+
:document => @document,
|
236
|
+
:env_shebang => @env_shebang,
|
237
|
+
:force => @force,
|
238
|
+
:format_executable => @format_executable,
|
239
239
|
:ignore_dependencies => @ignore_dependencies,
|
240
|
-
:prerelease
|
241
|
-
:security_policy
|
242
|
-
:user_install
|
243
|
-
:wrappers
|
244
|
-
:build_root
|
245
|
-
:install_as_default
|
246
|
-
:dir_mode
|
247
|
-
:data_mode
|
248
|
-
:prog_mode
|
240
|
+
:prerelease => @prerelease,
|
241
|
+
:security_policy => @security_policy,
|
242
|
+
:user_install => @user_install,
|
243
|
+
:wrappers => @wrappers,
|
244
|
+
:build_root => @build_root,
|
245
|
+
:install_as_default => @install_as_default,
|
246
|
+
:dir_mode => @dir_mode,
|
247
|
+
:data_mode => @data_mode,
|
248
|
+
:prog_mode => @prog_mode,
|
249
249
|
}
|
250
250
|
options[:install_dir] = @install_dir if @only_install_dir
|
251
251
|
|
data/lib/rubygems/exceptions.rb
CHANGED
@@ -221,14 +221,12 @@ class Gem::SystemExitException < SystemExit
|
|
221
221
|
##
|
222
222
|
# The exit code for the process
|
223
223
|
|
224
|
-
|
224
|
+
alias exit_code status
|
225
225
|
|
226
226
|
##
|
227
227
|
# Creates a new SystemExitException with the given +exit_code+
|
228
228
|
|
229
229
|
def initialize(exit_code)
|
230
|
-
@exit_code = exit_code
|
231
|
-
|
232
230
|
super exit_code, "Exiting RubyGems with exit_code #{exit_code}"
|
233
231
|
end
|
234
232
|
end
|
data/lib/rubygems/ext/builder.rb
CHANGED
@@ -17,7 +17,7 @@ class Gem::Ext::Builder
|
|
17
17
|
$1.downcase
|
18
18
|
end
|
19
19
|
|
20
|
-
def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil)
|
20
|
+
def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil, targets = ["clean", "", "install"])
|
21
21
|
unless File.exist? File.join(make_dir, "Makefile")
|
22
22
|
raise Gem::InstallError, "Makefile not found"
|
23
23
|
end
|
@@ -26,7 +26,7 @@ class Gem::Ext::Builder
|
|
26
26
|
RbConfig::CONFIG["configure_args"] =~ /with-make-prog\=(\w+)/
|
27
27
|
make_program_name = ENV["MAKE"] || ENV["make"] || $1
|
28
28
|
unless make_program_name
|
29
|
-
make_program_name = (
|
29
|
+
make_program_name = (RUBY_PLATFORM.include?("mswin")) ? "nmake" : "make"
|
30
30
|
end
|
31
31
|
make_program = Shellwords.split(make_program_name)
|
32
32
|
|
@@ -40,7 +40,7 @@ class Gem::Ext::Builder
|
|
40
40
|
env << "sitelibdir=%s" % sitedir
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
targets.each do |target|
|
44
44
|
# Pass DESTDIR via command line to override what's in MAKEFLAGS
|
45
45
|
cmd = [
|
46
46
|
*make_program,
|
@@ -3,20 +3,24 @@
|
|
3
3
|
class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
4
4
|
# Converts Ruby link flags into something cargo understands
|
5
5
|
class LinkFlagConverter
|
6
|
+
FILTERED_PATTERNS = [
|
7
|
+
/compress-debug-sections/, # Not supported by all linkers, and not required for Rust
|
8
|
+
].freeze
|
9
|
+
|
6
10
|
def self.convert(arg)
|
11
|
+
return [] if FILTERED_PATTERNS.any? {|p| p.match?(arg) }
|
12
|
+
|
7
13
|
case arg.chomp
|
8
14
|
when /^-L\s*(.+)$/
|
9
15
|
["-L", "native=#{$1}"]
|
10
16
|
when /^--library=(\w+\S+)$/, /^-l\s*(\w+\S+)$/
|
11
17
|
["-l", $1]
|
12
|
-
when /^-l\s
|
13
|
-
["-l",
|
14
|
-
when /^-l\s*:lib(\S+).(so|dylib|dll)$/
|
15
|
-
["-l", "dylib=#{$1}"]
|
18
|
+
when /^-l\s*([^:\s])+/ # -lfoo, but not -l:libfoo.a
|
19
|
+
["-l", $1]
|
16
20
|
when /^-F\s*(.*)$/
|
17
21
|
["-l", "framework=#{$1}"]
|
18
22
|
else
|
19
|
-
["-C", "
|
23
|
+
["-C", "link-args=#{arg}"]
|
20
24
|
end
|
21
25
|
end
|
22
26
|
end
|