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
@@ -16,6 +16,7 @@ require "rubygems/specification"
|
|
16
16
|
require "rubygems/source"
|
17
17
|
|
18
18
|
require_relative "match_metadata"
|
19
|
+
require_relative "force_platform"
|
19
20
|
require_relative "match_platform"
|
20
21
|
|
21
22
|
# Cherry-pick fixes to `Gem.ruby_version` to be useful for modern Bundler
|
@@ -153,12 +154,16 @@ module Gem
|
|
153
154
|
end
|
154
155
|
|
155
156
|
class Dependency
|
157
|
+
include ::Bundler::ForcePlatform
|
158
|
+
|
156
159
|
attr_accessor :source, :groups
|
157
160
|
|
158
161
|
alias_method :eql?, :==
|
159
162
|
|
160
163
|
def force_ruby_platform
|
161
|
-
|
164
|
+
return @force_ruby_platform if defined?(@force_ruby_platform) && !@force_ruby_platform.nil?
|
165
|
+
|
166
|
+
@force_ruby_platform = default_force_ruby_platform
|
162
167
|
end
|
163
168
|
|
164
169
|
def encode_with(coder)
|
@@ -277,6 +282,10 @@ module Gem
|
|
277
282
|
without_gnu_nor_abi_modifiers
|
278
283
|
end
|
279
284
|
end
|
285
|
+
|
286
|
+
if RUBY_ENGINE == "truffleruby" && !defined?(REUSE_AS_BINARY_ON_TRUFFLERUBY)
|
287
|
+
REUSE_AS_BINARY_ON_TRUFFLERUBY = %w[libv8 libv8-node sorbet-static].freeze
|
288
|
+
end
|
280
289
|
end
|
281
290
|
|
282
291
|
Platform.singleton_class.module_eval do
|
@@ -338,11 +347,7 @@ module Gem
|
|
338
347
|
end
|
339
348
|
|
340
349
|
def glob_files_in_dir(glob, base_path)
|
341
|
-
|
342
|
-
Dir.glob(glob, :base => base_path).map! {|f| File.expand_path(f, base_path) }
|
343
|
-
else
|
344
|
-
Dir.glob(File.join(base_path.to_s.gsub(/[\[\]]/, '\\\\\\&'), glob)).map! {|f| File.expand_path(f) }
|
345
|
-
end
|
350
|
+
Dir.glob(glob, :base => base_path).map! {|f| File.expand_path(f, base_path) }
|
346
351
|
end
|
347
352
|
end
|
348
353
|
end
|
@@ -109,8 +109,10 @@ module Bundler
|
|
109
109
|
|
110
110
|
def strict_rm_rf(dir)
|
111
111
|
Bundler.rm_rf dir
|
112
|
-
rescue
|
113
|
-
raise
|
112
|
+
rescue StandardError => e
|
113
|
+
raise unless File.exist?(dir)
|
114
|
+
|
115
|
+
raise DirectoryRemovalError.new(e, "Could not delete previous installation of `#{dir}`")
|
114
116
|
end
|
115
117
|
|
116
118
|
def validate_bundler_checksum(checksum)
|
@@ -272,11 +272,7 @@ module Bundler
|
|
272
272
|
|
273
273
|
e = Gem::LoadError.new(message)
|
274
274
|
e.name = dep.name
|
275
|
-
|
276
|
-
e.requirement = dep.requirement
|
277
|
-
elsif e.respond_to?(:version_requirement=)
|
278
|
-
e.version_requirement = dep.requirement
|
279
|
-
end
|
275
|
+
e.requirement = dep.requirement
|
280
276
|
raise e
|
281
277
|
end
|
282
278
|
|
@@ -508,10 +504,6 @@ module Bundler
|
|
508
504
|
Gem::Package.build(spec, skip_validation)
|
509
505
|
end
|
510
506
|
|
511
|
-
def repository_subdirectories
|
512
|
-
Gem::REPOSITORY_SUBDIRECTORIES
|
513
|
-
end
|
514
|
-
|
515
507
|
def path_separator
|
516
508
|
Gem.path_separator
|
517
509
|
end
|
@@ -300,11 +300,7 @@ module Bundler
|
|
300
300
|
e = Gem::LoadError.new "You have already activated #{activated_spec.name} #{activated_spec.version}, " \
|
301
301
|
"but your Gemfile requires #{spec.name} #{spec.version}. #{suggestion}"
|
302
302
|
e.name = spec.name
|
303
|
-
|
304
|
-
e.requirement = Gem::Requirement.new(spec.version.to_s)
|
305
|
-
else
|
306
|
-
e.version_requirement = Gem::Requirement.new(spec.version.to_s)
|
307
|
-
end
|
303
|
+
e.requirement = Gem::Requirement.new(spec.version.to_s)
|
308
304
|
raise e
|
309
305
|
end
|
310
306
|
end
|
@@ -277,12 +277,6 @@ module Bundler
|
|
277
277
|
end
|
278
278
|
end
|
279
279
|
|
280
|
-
def allow_sudo?
|
281
|
-
key = key_for(:path)
|
282
|
-
path_configured = @temporary.key?(key) || @local_config.key?(key)
|
283
|
-
!path_configured
|
284
|
-
end
|
285
|
-
|
286
280
|
def ignore_config?
|
287
281
|
ENV["BUNDLE_IGNORE_CONFIG"]
|
288
282
|
end
|
@@ -284,6 +284,7 @@ module Bundler
|
|
284
284
|
Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file
|
285
285
|
Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s
|
286
286
|
Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION
|
287
|
+
Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__)
|
287
288
|
end
|
288
289
|
|
289
290
|
def set_path
|
@@ -31,7 +31,6 @@ module Bundler
|
|
31
31
|
msg = String.new
|
32
32
|
msg << "Git error: command `#{command}` in directory #{path} has failed."
|
33
33
|
msg << "\n#{extra_info}" if extra_info
|
34
|
-
msg << "\nIf this error persists you could try removing the cache directory '#{path}'" if path.exist?
|
35
34
|
super msg
|
36
35
|
end
|
37
36
|
end
|
@@ -47,23 +46,27 @@ module Bundler
|
|
47
46
|
# All actions required by the Git source is encapsulated in this
|
48
47
|
# object.
|
49
48
|
class GitProxy
|
50
|
-
attr_accessor :path, :uri, :ref
|
49
|
+
attr_accessor :path, :uri, :branch, :tag, :ref, :explicit_ref
|
51
50
|
attr_writer :revision
|
52
51
|
|
53
|
-
def initialize(path, uri,
|
52
|
+
def initialize(path, uri, options = {}, revision = nil, git = nil)
|
54
53
|
@path = path
|
55
54
|
@uri = uri
|
56
|
-
@
|
55
|
+
@branch = options["branch"]
|
56
|
+
@tag = options["tag"]
|
57
|
+
@ref = options["ref"]
|
58
|
+
@explicit_ref = branch || tag || ref
|
57
59
|
@revision = revision
|
58
60
|
@git = git
|
61
|
+
@commit_ref = nil
|
59
62
|
end
|
60
63
|
|
61
64
|
def revision
|
62
|
-
@revision ||= find_local_revision
|
65
|
+
@revision ||= allowed_with_path { find_local_revision }
|
63
66
|
end
|
64
67
|
|
65
|
-
def
|
66
|
-
@
|
68
|
+
def current_branch
|
69
|
+
@current_branch ||= allowed_with_path do
|
67
70
|
git("rev-parse", "--abbrev-ref", "HEAD", :dir => path).strip
|
68
71
|
end
|
69
72
|
end
|
@@ -76,36 +79,26 @@ module Bundler
|
|
76
79
|
end
|
77
80
|
|
78
81
|
def version
|
79
|
-
|
82
|
+
@version ||= full_version.match(/((\.?\d+)+).*/)[1]
|
80
83
|
end
|
81
84
|
|
82
85
|
def full_version
|
83
|
-
git("--version").sub(
|
86
|
+
@full_version ||= git("--version").sub(/git version\s*/, "").strip
|
84
87
|
end
|
85
88
|
|
86
89
|
def checkout
|
87
|
-
return if
|
88
|
-
extra_ref = "#{ref}:#{ref}" if ref && ref.start_with?("refs/")
|
90
|
+
return if has_revision_cached?
|
89
91
|
|
90
|
-
Bundler.ui.info "Fetching #{
|
92
|
+
Bundler.ui.info "Fetching #{credential_filtered_uri}"
|
91
93
|
|
92
|
-
|
94
|
+
extra_fetch_needed = clone_needs_extra_fetch?
|
95
|
+
unshallow_needed = clone_needs_unshallow?
|
96
|
+
return unless extra_fetch_needed || unshallow_needed
|
93
97
|
|
94
|
-
|
95
|
-
SharedHelpers.filesystem_access(path.dirname) do |p|
|
96
|
-
FileUtils.mkdir_p(p)
|
97
|
-
end
|
98
|
-
git_retry "clone", "--bare", "--no-hardlinks", "--quiet", "--", configured_uri, path.to_s
|
99
|
-
return unless extra_ref
|
100
|
-
end
|
101
|
-
|
102
|
-
with_path do
|
103
|
-
git_retry(*["fetch", "--force", "--quiet", "--tags", "--", configured_uri, "refs/heads/*:refs/heads/*", extra_ref].compact, :dir => path)
|
104
|
-
end
|
98
|
+
git_remote_fetch(unshallow_needed ? ["--unshallow"] : depth_args)
|
105
99
|
end
|
106
100
|
|
107
101
|
def copy_to(destination, submodules = false)
|
108
|
-
# method 1
|
109
102
|
unless File.exist?(destination.join(".git"))
|
110
103
|
begin
|
111
104
|
SharedHelpers.filesystem_access(destination.dirname) do |p|
|
@@ -114,7 +107,7 @@ module Bundler
|
|
114
107
|
SharedHelpers.filesystem_access(destination) do |p|
|
115
108
|
FileUtils.rm_rf(p)
|
116
109
|
end
|
117
|
-
|
110
|
+
git "clone", "--no-checkout", "--quiet", path.to_s, destination.to_s
|
118
111
|
File.chmod(((File.stat(destination).mode | 0o777) & ~File.umask), destination)
|
119
112
|
rescue Errno::EEXIST => e
|
120
113
|
file_path = e.message[%r{.*?((?:[a-zA-Z]:)?/.*)}, 1]
|
@@ -123,14 +116,10 @@ module Bundler
|
|
123
116
|
"this file and try again."
|
124
117
|
end
|
125
118
|
end
|
126
|
-
# method 2
|
127
|
-
git_retry "fetch", "--force", "--quiet", "--tags", path.to_s, :dir => destination
|
128
119
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
raise MissingGitRevisionError.new(e.command, destination, @revision, URICredentialsFilter.credential_filtered_uri(uri))
|
133
|
-
end
|
120
|
+
git "fetch", "--force", "--quiet", *extra_fetch_args, :dir => destination if @commit_ref
|
121
|
+
|
122
|
+
git "reset", "--hard", @revision, :dir => destination
|
134
123
|
|
135
124
|
if submodules
|
136
125
|
git_retry "submodule", "update", "--init", "--recursive", :dir => destination
|
@@ -142,14 +131,103 @@ module Bundler
|
|
142
131
|
|
143
132
|
private
|
144
133
|
|
145
|
-
def
|
146
|
-
|
134
|
+
def git_remote_fetch(args)
|
135
|
+
command = ["fetch", "--force", "--quiet", "--no-tags", *args, "--", configured_uri, refspec].compact
|
136
|
+
command_with_no_credentials = check_allowed(command)
|
137
|
+
|
138
|
+
Bundler::Retry.new("`#{command_with_no_credentials}` at #{path}", [MissingGitRevisionError]).attempts do
|
139
|
+
out, err, status = capture(command, path)
|
140
|
+
return out if status.success?
|
141
|
+
|
142
|
+
if err.include?("couldn't find remote ref")
|
143
|
+
raise MissingGitRevisionError.new(command_with_no_credentials, path, explicit_ref, credential_filtered_uri)
|
144
|
+
else
|
145
|
+
raise GitCommandError.new(command_with_no_credentials, path, err)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def clone_needs_extra_fetch?
|
151
|
+
return true if path.exist?
|
152
|
+
|
153
|
+
SharedHelpers.filesystem_access(path.dirname) do |p|
|
154
|
+
FileUtils.mkdir_p(p)
|
155
|
+
end
|
156
|
+
git_retry "clone", "--bare", "--no-hardlinks", "--quiet", *extra_clone_args, "--", configured_uri, path.to_s
|
157
|
+
|
158
|
+
extra_ref
|
159
|
+
end
|
160
|
+
|
161
|
+
def clone_needs_unshallow?
|
162
|
+
return false unless path.join("shallow").exist?
|
163
|
+
return true if full_clone?
|
164
|
+
|
165
|
+
@revision && @revision != head_revision
|
166
|
+
end
|
167
|
+
|
168
|
+
def extra_ref
|
169
|
+
return false if not_pinned?
|
170
|
+
return true unless full_clone?
|
171
|
+
|
172
|
+
ref.start_with?("refs/")
|
173
|
+
end
|
174
|
+
|
175
|
+
def depth
|
176
|
+
return @depth if defined?(@depth)
|
177
|
+
|
178
|
+
@depth = if !supports_fetching_unreachable_refs?
|
179
|
+
nil
|
180
|
+
elsif not_pinned? || pinned_to_full_sha?
|
181
|
+
1
|
182
|
+
elsif ref.include?("~")
|
183
|
+
parsed_depth = ref.split("~").last
|
184
|
+
parsed_depth.to_i + 1
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
def refspec
|
189
|
+
commit = pinned_to_full_sha? ? ref : @revision
|
190
|
+
|
191
|
+
if commit
|
192
|
+
@commit_ref = "refs/#{commit}-sha"
|
193
|
+
return "#{commit}:#{@commit_ref}"
|
194
|
+
end
|
195
|
+
|
196
|
+
reference = fully_qualified_ref
|
197
|
+
|
198
|
+
reference ||= if ref.include?("~")
|
199
|
+
ref.split("~").first
|
200
|
+
elsif ref.start_with?("refs/")
|
201
|
+
ref
|
202
|
+
else
|
203
|
+
"refs/*"
|
204
|
+
end
|
205
|
+
|
206
|
+
"#{reference}:#{reference}"
|
207
|
+
end
|
147
208
|
|
148
|
-
|
149
|
-
|
209
|
+
def fully_qualified_ref
|
210
|
+
if branch
|
211
|
+
"refs/heads/#{branch}"
|
212
|
+
elsif tag
|
213
|
+
"refs/tags/#{tag}"
|
214
|
+
elsif ref.nil?
|
215
|
+
"refs/heads/#{current_branch}"
|
150
216
|
end
|
217
|
+
end
|
218
|
+
|
219
|
+
def not_pinned?
|
220
|
+
branch || tag || ref.nil?
|
221
|
+
end
|
222
|
+
|
223
|
+
def pinned_to_full_sha?
|
224
|
+
ref =~ /\A\h{40}\z/
|
225
|
+
end
|
151
226
|
|
152
|
-
|
227
|
+
def git_null(*command, dir: nil)
|
228
|
+
check_allowed(command)
|
229
|
+
|
230
|
+
capture(command, dir, :ignore_err => true)
|
153
231
|
end
|
154
232
|
|
155
233
|
def git_retry(*command, dir: nil)
|
@@ -163,49 +241,62 @@ module Bundler
|
|
163
241
|
def git(*command, dir: nil)
|
164
242
|
command_with_no_credentials = check_allowed(command)
|
165
243
|
|
166
|
-
out, status =
|
167
|
-
capture_and_filter_stderr(*capture3_args_for(command, dir))
|
168
|
-
end
|
244
|
+
out, err, status = capture(command, dir)
|
169
245
|
|
170
|
-
|
246
|
+
raise GitCommandError.new(command_with_no_credentials, dir || SharedHelpers.pwd, err) unless status.success?
|
171
247
|
|
172
|
-
|
248
|
+
Bundler.ui.warn err unless err.empty?
|
173
249
|
|
174
|
-
|
250
|
+
out
|
175
251
|
end
|
176
252
|
|
177
253
|
def has_revision_cached?
|
178
|
-
return unless @revision
|
179
|
-
|
254
|
+
return unless @revision && path.exist?
|
255
|
+
git("cat-file", "-e", @revision, :dir => path)
|
180
256
|
true
|
181
257
|
rescue GitError
|
182
258
|
false
|
183
259
|
end
|
184
260
|
|
185
|
-
def
|
186
|
-
|
261
|
+
def find_local_revision
|
262
|
+
return head_revision if explicit_ref.nil?
|
263
|
+
|
264
|
+
find_revision_for(explicit_ref)
|
187
265
|
end
|
188
266
|
|
189
|
-
def
|
190
|
-
|
191
|
-
|
192
|
-
|
267
|
+
def head_revision
|
268
|
+
verify("HEAD")
|
269
|
+
end
|
270
|
+
|
271
|
+
def find_revision_for(reference)
|
272
|
+
verify(reference)
|
193
273
|
rescue GitCommandError => e
|
194
|
-
raise MissingGitRevisionError.new(e.command, path,
|
274
|
+
raise MissingGitRevisionError.new(e.command, path, reference, credential_filtered_uri)
|
275
|
+
end
|
276
|
+
|
277
|
+
def verify(reference)
|
278
|
+
git("rev-parse", "--verify", reference, :dir => path).strip
|
195
279
|
end
|
196
280
|
|
197
|
-
# Adds credentials to the URI
|
198
|
-
def
|
199
|
-
if /https
|
281
|
+
# Adds credentials to the URI
|
282
|
+
def configured_uri
|
283
|
+
if /https?:/.match?(uri)
|
200
284
|
remote = Bundler::URI(uri)
|
201
285
|
config_auth = Bundler.settings[remote.to_s] || Bundler.settings[remote.host]
|
202
286
|
remote.userinfo ||= config_auth
|
203
287
|
remote.to_s
|
288
|
+
elsif File.exist?(uri)
|
289
|
+
"file://#{uri}"
|
204
290
|
else
|
205
|
-
uri
|
291
|
+
uri.to_s
|
206
292
|
end
|
207
293
|
end
|
208
294
|
|
295
|
+
# Removes credentials from the URI
|
296
|
+
def credential_filtered_uri
|
297
|
+
URICredentialsFilter.credential_filtered_uri(uri)
|
298
|
+
end
|
299
|
+
|
209
300
|
def allow?
|
210
301
|
allowed = @git ? @git.allow_git_ops? : true
|
211
302
|
|
@@ -231,17 +322,17 @@ module Bundler
|
|
231
322
|
command_with_no_credentials
|
232
323
|
end
|
233
324
|
|
234
|
-
def
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
325
|
+
def capture(cmd, dir, ignore_err: false)
|
326
|
+
SharedHelpers.with_clean_git_env do
|
327
|
+
require "open3"
|
328
|
+
out, err, status = Open3.capture3(*capture3_args_for(cmd, dir))
|
329
|
+
|
330
|
+
filtered_out = URICredentialsFilter.credential_filtered_string(out, uri)
|
331
|
+
return [filtered_out, status] if ignore_err
|
240
332
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
[return_value, status]
|
333
|
+
filtered_err = URICredentialsFilter.credential_filtered_string(err, uri)
|
334
|
+
[filtered_out, filtered_err, status]
|
335
|
+
end
|
245
336
|
end
|
246
337
|
|
247
338
|
def capture3_args_for(cmd, dir)
|
@@ -254,9 +345,44 @@ module Bundler
|
|
254
345
|
end
|
255
346
|
end
|
256
347
|
|
348
|
+
def extra_clone_args
|
349
|
+
args = depth_args
|
350
|
+
return [] if args.empty?
|
351
|
+
|
352
|
+
args += ["--single-branch"]
|
353
|
+
args.unshift("--no-tags") if supports_cloning_with_no_tags?
|
354
|
+
|
355
|
+
args += ["--branch", branch || tag] if branch || tag
|
356
|
+
args
|
357
|
+
end
|
358
|
+
|
359
|
+
def depth_args
|
360
|
+
return [] if full_clone?
|
361
|
+
|
362
|
+
["--depth", depth.to_s]
|
363
|
+
end
|
364
|
+
|
365
|
+
def extra_fetch_args
|
366
|
+
extra_args = [path.to_s, *depth_args]
|
367
|
+
extra_args.push(@commit_ref)
|
368
|
+
extra_args
|
369
|
+
end
|
370
|
+
|
371
|
+
def full_clone?
|
372
|
+
depth.nil?
|
373
|
+
end
|
374
|
+
|
257
375
|
def supports_minus_c?
|
258
376
|
@supports_minus_c ||= Gem::Version.new(version) >= Gem::Version.new("1.8.5")
|
259
377
|
end
|
378
|
+
|
379
|
+
def supports_fetching_unreachable_refs?
|
380
|
+
@supports_fetching_unreachable_refs ||= Gem::Version.new(version) >= Gem::Version.new("2.5.0")
|
381
|
+
end
|
382
|
+
|
383
|
+
def supports_cloning_with_no_tags?
|
384
|
+
@supports_cloning_with_no_tags ||= Gem::Version.new(version) >= Gem::Version.new("2.14.0-rc0")
|
385
|
+
end
|
260
386
|
end
|
261
387
|
end
|
262
388
|
end
|
@@ -64,7 +64,7 @@ module Bundler
|
|
64
64
|
at = if local?
|
65
65
|
path
|
66
66
|
elsif user_ref = options["ref"]
|
67
|
-
if
|
67
|
+
if /\A[a-z0-9]{4,}\z/i.match?(ref)
|
68
68
|
shortref_for_display(user_ref)
|
69
69
|
else
|
70
70
|
user_ref
|
@@ -72,7 +72,7 @@ module Bundler
|
|
72
72
|
elsif ref
|
73
73
|
ref
|
74
74
|
else
|
75
|
-
|
75
|
+
current_branch
|
76
76
|
end
|
77
77
|
|
78
78
|
rev = "at #{at}@#{shortref_for_display(revision)}"
|
@@ -102,13 +102,7 @@ module Bundler
|
|
102
102
|
@install_path ||= begin
|
103
103
|
git_scope = "#{base_name}-#{shortref_for_path(revision)}"
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
if !path.exist? && Bundler.requires_sudo?
|
108
|
-
Bundler.user_bundle_path.join(Bundler.ruby_scope).join(git_scope)
|
109
|
-
else
|
110
|
-
path
|
111
|
-
end
|
105
|
+
Bundler.install_path.join(git_scope)
|
112
106
|
end
|
113
107
|
end
|
114
108
|
|
@@ -132,7 +126,7 @@ module Bundler
|
|
132
126
|
path = Pathname.new(path)
|
133
127
|
path = path.expand_path(Bundler.root) unless path.relative?
|
134
128
|
|
135
|
-
unless
|
129
|
+
unless branch || Bundler.settings[:disable_local_branch_check]
|
136
130
|
raise GitError, "Cannot use local override for #{name} at #{path} because " \
|
137
131
|
":branch is not specified in Gemfile. Specify a branch or run " \
|
138
132
|
"`bundle config unset local.#{override_for(original_path)}` to remove the local override"
|
@@ -147,14 +141,14 @@ module Bundler
|
|
147
141
|
|
148
142
|
# Create a new git proxy without the cached revision
|
149
143
|
# so the Gemfile.lock always picks up the new revision.
|
150
|
-
@git_proxy = GitProxy.new(path, uri,
|
144
|
+
@git_proxy = GitProxy.new(path, uri, options)
|
151
145
|
|
152
|
-
if
|
146
|
+
if current_branch != branch && !Bundler.settings[:disable_local_branch_check]
|
153
147
|
raise GitError, "Local override for #{name} at #{path} is using branch " \
|
154
|
-
"#{
|
148
|
+
"#{current_branch} but Gemfile specifies #{branch}"
|
155
149
|
end
|
156
150
|
|
157
|
-
changed = cached_revision && cached_revision !=
|
151
|
+
changed = cached_revision && cached_revision != revision
|
158
152
|
|
159
153
|
if !Bundler.settings[:disable_local_revision_check] && changed && !@unlocked && !git_proxy.contains?(cached_revision)
|
160
154
|
raise GitError, "The Gemfile lock is pointing to revision #{shortref_for_display(cached_revision)} " \
|
@@ -219,7 +213,7 @@ module Bundler
|
|
219
213
|
# across different projects, this cache will be shared.
|
220
214
|
# When using local git repos, this is set to the local repo.
|
221
215
|
def cache_path
|
222
|
-
@cache_path ||= if Bundler.
|
216
|
+
@cache_path ||= if Bundler.feature_flag.global_gem_cache?
|
223
217
|
Bundler.user_cache
|
224
218
|
else
|
225
219
|
Bundler.bundle_path.join("cache", "bundler")
|
@@ -234,6 +228,10 @@ module Bundler
|
|
234
228
|
git_proxy.revision
|
235
229
|
end
|
236
230
|
|
231
|
+
def current_branch
|
232
|
+
git_proxy.current_branch
|
233
|
+
end
|
234
|
+
|
237
235
|
def allow_git_ops?
|
238
236
|
@allow_remote || @allow_cached
|
239
237
|
end
|
@@ -297,7 +295,7 @@ module Bundler
|
|
297
295
|
end
|
298
296
|
|
299
297
|
def uri_hash
|
300
|
-
if
|
298
|
+
if %r{^\w+://(\w+@)?}.match?(uri)
|
301
299
|
# Downcase the domain component of the URI
|
302
300
|
# and strip off a trailing slash, if one is present
|
303
301
|
input = Bundler::URI.parse(uri).normalize.to_s.sub(%r{/$}, "")
|
@@ -319,7 +317,7 @@ module Bundler
|
|
319
317
|
end
|
320
318
|
|
321
319
|
def git_proxy
|
322
|
-
@git_proxy ||= GitProxy.new(cache_path, uri,
|
320
|
+
@git_proxy ||= GitProxy.new(cache_path, uri, options, cached_revision, self)
|
323
321
|
end
|
324
322
|
|
325
323
|
def fetch
|
@@ -18,13 +18,7 @@ module Bundler
|
|
18
18
|
@build_args = options[:build_args] || Bundler.rubygems.build_args
|
19
19
|
@gem_bin_dir = "#{Bundler.rubygems.gem_dir}/bin"
|
20
20
|
@disable_extensions = options[:disable_extensions]
|
21
|
-
|
22
|
-
if Bundler.requires_sudo?
|
23
|
-
@tmp_dir = Bundler.tmp(spec.full_name).to_s
|
24
|
-
@bin_dir = "#{@tmp_dir}/bin"
|
25
|
-
else
|
26
|
-
@bin_dir = @gem_bin_dir
|
27
|
-
end
|
21
|
+
@bin_dir = @gem_bin_dir
|
28
22
|
end
|
29
23
|
|
30
24
|
def post_install
|
@@ -38,25 +32,10 @@ module Bundler
|
|
38
32
|
generate_bin unless spec.executables.empty?
|
39
33
|
|
40
34
|
run_hooks(:post_install)
|
41
|
-
ensure
|
42
|
-
Bundler.rm_rf(@tmp_dir) if Bundler.requires_sudo?
|
43
35
|
end
|
44
36
|
|
45
37
|
private
|
46
38
|
|
47
|
-
def generate_bin
|
48
|
-
super
|
49
|
-
|
50
|
-
if Bundler.requires_sudo?
|
51
|
-
SharedHelpers.filesystem_access(@gem_bin_dir) do |p|
|
52
|
-
Bundler.mkdir_p(p)
|
53
|
-
end
|
54
|
-
spec.executables.each do |exe|
|
55
|
-
Bundler.sudo "cp -R #{@bin_dir}/#{exe} #{@gem_bin_dir}"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
39
|
def run_hooks(type)
|
61
40
|
hooks_meth = "#{type}_hooks"
|
62
41
|
return unless Gem.respond_to?(hooks_meth)
|
@@ -224,13 +224,13 @@ module Bundler
|
|
224
224
|
|
225
225
|
# Some gem authors put absolute paths in their gemspec
|
226
226
|
# and we have to save them from themselves
|
227
|
-
spec.files = spec.files.map do |
|
228
|
-
next
|
229
|
-
next if File.directory?(
|
227
|
+
spec.files = spec.files.map do |path|
|
228
|
+
next path unless /\A#{Pathname::SEPARATOR_PAT}/.match?(path)
|
229
|
+
next if File.directory?(path)
|
230
230
|
begin
|
231
|
-
Pathname.new(
|
231
|
+
Pathname.new(path).relative_path_from(gem_dir).to_s
|
232
232
|
rescue ArgumentError
|
233
|
-
|
233
|
+
path
|
234
234
|
end
|
235
235
|
end.compact
|
236
236
|
|