rubygems-update 3.3.2 → 3.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +68 -0
- data/bundler/CHANGELOG.md +44 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +9 -1
- data/bundler/lib/bundler/cli/gem.rb +11 -1
- data/bundler/lib/bundler/cli/install.rb +0 -3
- data/bundler/lib/bundler/cli/platform.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +6 -2
- data/bundler/lib/bundler/cli.rb +3 -10
- data/bundler/lib/bundler/compact_index_client/cache.rb +0 -9
- data/bundler/lib/bundler/compact_index_client.rb +0 -6
- data/bundler/lib/bundler/definition.rb +2 -9
- data/bundler/lib/bundler/endpoint_specification.rb +21 -3
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +0 -10
- data/bundler/lib/bundler/fetcher/index.rb +0 -26
- data/bundler/lib/bundler/fetcher.rb +4 -9
- data/bundler/lib/bundler/gem_helper.rb +2 -2
- data/bundler/lib/bundler/lazy_specification.rb +2 -2
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +1 -1
- data/bundler/lib/bundler/resolver.rb +7 -12
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/self_manager.rb +106 -14
- data/bundler/lib/bundler/settings.rb +1 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems/basic_specification.rb +8 -8
- data/lib/rubygems/bundler_version_finder.rb +3 -3
- data/lib/rubygems/command.rb +4 -4
- data/lib/rubygems/commands/cleanup_command.rb +6 -6
- data/lib/rubygems/commands/dependency_command.rb +20 -30
- data/lib/rubygems/commands/fetch_command.rb +27 -8
- data/lib/rubygems/commands/list_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +12 -12
- data/lib/rubygems/commands/push_command.rb +8 -8
- data/lib/rubygems/commands/query_command.rb +1 -1
- data/lib/rubygems/commands/rdoc_command.rb +6 -6
- data/lib/rubygems/commands/search_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +8 -8
- data/lib/rubygems/commands/specification_command.rb +4 -4
- data/lib/rubygems/commands/update_command.rb +11 -8
- data/lib/rubygems/config_file.rb +4 -4
- data/lib/rubygems/doctor.rb +5 -5
- data/lib/rubygems/gem_runner.rb +5 -5
- data/lib/rubygems/install_update_options.rb +4 -4
- data/lib/rubygems/installer.rb +51 -12
- data/lib/rubygems/package/old.rb +1 -1
- data/lib/rubygems/package.rb +11 -11
- data/lib/rubygems/platform.rb +42 -42
- data/lib/rubygems/psych_additions.rb +1 -1
- data/lib/rubygems/query_utils.rb +16 -18
- data/lib/rubygems/remote_fetcher.rb +4 -4
- data/lib/rubygems/request_set/lockfile.rb +4 -4
- data/lib/rubygems/resolver/installer_set.rb +9 -9
- data/lib/rubygems/safe_yaml.rb +8 -8
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/source.rb +6 -6
- data/lib/rubygems/source_list.rb +7 -7
- data/lib/rubygems/spec_fetcher.rb +25 -25
- data/lib/rubygems/specification.rb +50 -51
- data/lib/rubygems/specification_policy.rb +16 -16
- data/lib/rubygems/stub_specification.rb +16 -19
- data/lib/rubygems/uninstaller.rb +7 -7
- data/lib/rubygems/user_interaction.rb +12 -12
- data/lib/rubygems/version.rb +9 -7
- data/lib/rubygems.rb +18 -17
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/helper.rb +10 -10
- data/test/rubygems/test_gem.rb +2 -0
- data/test/rubygems/test_gem_command_manager.rb +1 -1
- data/test/rubygems/test_gem_commands_fetch_command.rb +97 -0
- data/test/rubygems/test_gem_commands_install_command.rb +16 -0
- data/test/rubygems/test_gem_commands_update_command.rb +59 -0
- data/test/rubygems/test_gem_installer.rb +170 -58
- data/test/rubygems/test_gem_package.rb +2 -2
- data/test/rubygems/test_gem_stream_ui.rb +1 -1
- data/test/rubygems/test_gem_stub_specification.rb +0 -16
- data/test/rubygems/test_gem_version.rb +4 -0
- data/test/rubygems/utilities.rb +4 -4
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 498b97d36cfdbe927831044d377e36e6ce8bf07724f1ec5fc1b9dfa39376c7d4
|
|
4
|
+
data.tar.gz: 4afa885b9263b0154b00e0695849c2b795f7870f625c37a368104333ea56309b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 34f91a116d9e346e3fd26ea549d5d6b2c5f959d00612557d1abf133da8d6566b9a186f5d116f878f49ad629215de9604763f84cd32bc14c8d2b7b200c80ae387
|
|
7
|
+
data.tar.gz: 173c8fdd07607bc57c6ba6bc12a5551f5db03f20fabdb25924069e4e067e7dc8314fb343495487735eb16ad2bc410aebd0c21002fffaab873399a017953f7e89
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,71 @@
|
|
|
1
|
+
# 3.3.6 / 2022-01-26
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
* Forbid downgrading past the originally shipped version on Ruby 3.1. Pull
|
|
6
|
+
request #5301 by deivid-rodriguez
|
|
7
|
+
* Support `--enable-load-relative` inside binstubs. Pull request #2929 by
|
|
8
|
+
deivid-rodriguez
|
|
9
|
+
* Let `Version#<=>` accept a String. Pull request #5275 by amatsuda
|
|
10
|
+
* Installs bundler 2.3.6 as a default gem.
|
|
11
|
+
|
|
12
|
+
## Bug fixes:
|
|
13
|
+
|
|
14
|
+
* Avoid `flock` on non Windows systems, since it causing issues on NFS
|
|
15
|
+
file systems. Pull request #5278 by deivid-rodriguez
|
|
16
|
+
* Fix `gem update --system` for already installed version of
|
|
17
|
+
`rubygems-update`. Pull request #5285 by loadkpi
|
|
18
|
+
|
|
19
|
+
# 3.3.5 / 2022-01-12
|
|
20
|
+
|
|
21
|
+
## Enhancements:
|
|
22
|
+
|
|
23
|
+
* Don't activate `yaml` gem from RubyGems. Pull request #5266 by
|
|
24
|
+
deivid-rodriguez
|
|
25
|
+
* Let `gem fetch` understand `<gem>:<version>` syntax and
|
|
26
|
+
`--[no-]suggestions` flag. Pull request #5242 by ximenasandoval
|
|
27
|
+
* Installs bundler 2.3.5 as a default gem.
|
|
28
|
+
|
|
29
|
+
## Bug fixes:
|
|
30
|
+
|
|
31
|
+
* Fix `gem install <non-existent-gem> --force` crash. Pull request #5262
|
|
32
|
+
by deivid-rodriguez
|
|
33
|
+
* Fix longstanding `gem install` failure on JRuby. Pull request #5228 by
|
|
34
|
+
deivid-rodriguez
|
|
35
|
+
|
|
36
|
+
## Documentation:
|
|
37
|
+
|
|
38
|
+
* Markup `Gem::Specification` documentation with RDoc notations. Pull
|
|
39
|
+
request #5268 by nobu
|
|
40
|
+
|
|
41
|
+
# 3.3.4 / 2021-12-29
|
|
42
|
+
|
|
43
|
+
## Enhancements:
|
|
44
|
+
|
|
45
|
+
* Don't redownload `rubygems-update` package if already there. Pull
|
|
46
|
+
request #5230 by deivid-rodriguez
|
|
47
|
+
* Installs bundler 2.3.4 as a default gem.
|
|
48
|
+
|
|
49
|
+
## Bug fixes:
|
|
50
|
+
|
|
51
|
+
* Fix `gem update --system` crashing when latest version not supported.
|
|
52
|
+
Pull request #5191 by deivid-rodriguez
|
|
53
|
+
|
|
54
|
+
## Performance:
|
|
55
|
+
|
|
56
|
+
* Make SpecificationPolicy autoload constant. Pull request #5222 by pocke
|
|
57
|
+
|
|
58
|
+
# 3.3.3 / 2021-12-24
|
|
59
|
+
|
|
60
|
+
## Enhancements:
|
|
61
|
+
|
|
62
|
+
* Installs bundler 2.3.3 as a default gem.
|
|
63
|
+
|
|
64
|
+
## Bug fixes:
|
|
65
|
+
|
|
66
|
+
* Fix gem installation failing in Solaris due to bad `IO#flock` usage.
|
|
67
|
+
Pull request #5216 by mame
|
|
68
|
+
|
|
1
69
|
# 3.3.2 / 2021-12-23
|
|
2
70
|
|
|
3
71
|
## Enhancements:
|
data/bundler/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,47 @@
|
|
|
1
|
+
# 2.3.6 (January 26, 2022)
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
- Use `Gem::Platform.local` instead of `RUBY_PLATFORM` when displaying local platform [#5306](https://github.com/rubygems/rubygems/pull/5306)
|
|
6
|
+
- Lock standard.yml to the required ruby version [#5284](https://github.com/rubygems/rubygems/pull/5284)
|
|
7
|
+
- Use `Fiddle` in `bundle doctor` to check for dynamic library presence [#5173](https://github.com/rubygems/rubygems/pull/5173)
|
|
8
|
+
|
|
9
|
+
## Bug fixes:
|
|
10
|
+
|
|
11
|
+
- Fix edge case where gems were incorrectly removed from the lockfile [#5302](https://github.com/rubygems/rubygems/pull/5302)
|
|
12
|
+
- Fix `force_ruby_platform` ignored when lockfile includes current specific platform [#5304](https://github.com/rubygems/rubygems/pull/5304)
|
|
13
|
+
- Create minitest file to underscored path in "bundle gem" command with dashed gem name [#5273](https://github.com/rubygems/rubygems/pull/5273)
|
|
14
|
+
- Fix regression with old marshaled specs having null `required_rubygems_version` [#5291](https://github.com/rubygems/rubygems/pull/5291)
|
|
15
|
+
|
|
16
|
+
# 2.3.5 (January 12, 2022)
|
|
17
|
+
|
|
18
|
+
## Enhancements:
|
|
19
|
+
|
|
20
|
+
- Make `bundle update --bundler` actually lock to the latest bundler version (even if not yet installed) [#5182](https://github.com/rubygems/rubygems/pull/5182)
|
|
21
|
+
- Use thor-1.2.1 [#5260](https://github.com/rubygems/rubygems/pull/5260)
|
|
22
|
+
- Exclude bin directory for newgem template [#5259](https://github.com/rubygems/rubygems/pull/5259)
|
|
23
|
+
|
|
24
|
+
## Bug fixes:
|
|
25
|
+
|
|
26
|
+
- Fix metadata requirements being bypassed when custom gem servers are used [#5256](https://github.com/rubygems/rubygems/pull/5256)
|
|
27
|
+
- Fix `rake build:checksum` writing checksum of package path, not package contents [#5250](https://github.com/rubygems/rubygems/pull/5250)
|
|
28
|
+
|
|
29
|
+
# 2.3.4 (December 29, 2021)
|
|
30
|
+
|
|
31
|
+
## Enhancements:
|
|
32
|
+
|
|
33
|
+
- Improve error message when `BUNDLED WITH` version does not exist [#5205](https://github.com/rubygems/rubygems/pull/5205)
|
|
34
|
+
|
|
35
|
+
## Bug fixes:
|
|
36
|
+
|
|
37
|
+
- Fix `bundle update --bundler` no longer updating lockfile [#5224](https://github.com/rubygems/rubygems/pull/5224)
|
|
38
|
+
|
|
39
|
+
# 2.3.3 (December 24, 2021)
|
|
40
|
+
|
|
41
|
+
## Bug fixes:
|
|
42
|
+
|
|
43
|
+
- Fix locked bundler not installed to the right path when `deployment` is set [#5217](https://github.com/rubygems/rubygems/pull/5217)
|
|
44
|
+
|
|
1
45
|
# 2.3.2 (December 23, 2021)
|
|
2
46
|
|
|
3
47
|
## Enhancements:
|
|
@@ -4,8 +4,8 @@ module Bundler
|
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
|
5
5
|
module BuildMetadata
|
|
6
6
|
# begin ivars
|
|
7
|
-
@built_at = "
|
|
8
|
-
@git_commit_sha = "
|
|
7
|
+
@built_at = "2022-01-26".freeze
|
|
8
|
+
@git_commit_sha = "056f64c33a".freeze
|
|
9
9
|
@release = true
|
|
10
10
|
# end ivars
|
|
11
11
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require "rbconfig"
|
|
4
4
|
require "shellwords"
|
|
5
|
+
require "fiddle"
|
|
5
6
|
|
|
6
7
|
module Bundler
|
|
7
8
|
class CLI::Doctor
|
|
@@ -71,7 +72,14 @@ module Bundler
|
|
|
71
72
|
|
|
72
73
|
definition.specs.each do |spec|
|
|
73
74
|
bundles_for_gem(spec).each do |bundle|
|
|
74
|
-
bad_paths = dylibs(bundle).select
|
|
75
|
+
bad_paths = dylibs(bundle).select do |f|
|
|
76
|
+
begin
|
|
77
|
+
Fiddle.dlopen(f)
|
|
78
|
+
false
|
|
79
|
+
rescue Fiddle::DLError
|
|
80
|
+
true
|
|
81
|
+
end
|
|
82
|
+
end
|
|
75
83
|
if bad_paths.any?
|
|
76
84
|
broken_links[spec] ||= []
|
|
77
85
|
broken_links[spec].concat(bad_paths)
|
|
@@ -38,6 +38,7 @@ module Bundler
|
|
|
38
38
|
namespaced_path = name.tr("-", "/")
|
|
39
39
|
constant_name = name.gsub(/-[_-]*(?![_-]|$)/) { "::" }.gsub(/([_-]+|(::)|^)(.|$)/) { $2.to_s + $3.upcase }
|
|
40
40
|
constant_array = constant_name.split("::")
|
|
41
|
+
minitest_constant_name = constant_array.clone.tap {|a| a[-1] = "Test#{a[-1]}" }.join("::") # Foo::Bar => Foo::TestBar
|
|
41
42
|
|
|
42
43
|
use_git = Bundler.git_present? && options[:git]
|
|
43
44
|
|
|
@@ -69,6 +70,7 @@ module Bundler
|
|
|
69
70
|
:git => use_git,
|
|
70
71
|
:github_username => github_username.empty? ? "[USERNAME]" : github_username,
|
|
71
72
|
:required_ruby_version => required_ruby_version,
|
|
73
|
+
:minitest_constant_name => minitest_constant_name,
|
|
72
74
|
}
|
|
73
75
|
ensure_safe_gem_name(name, constant_array)
|
|
74
76
|
|
|
@@ -104,9 +106,17 @@ module Bundler
|
|
|
104
106
|
)
|
|
105
107
|
config[:test_task] = :spec
|
|
106
108
|
when "minitest"
|
|
109
|
+
# Generate path for minitest target file (FileList["test/**/test_*.rb"])
|
|
110
|
+
# foo => test/test_foo.rb
|
|
111
|
+
# foo-bar => test/foo/test_bar.rb
|
|
112
|
+
# foo_bar => test/test_foo_bar.rb
|
|
113
|
+
paths = namespaced_path.rpartition("/")
|
|
114
|
+
paths[2] = "test_#{paths[2]}"
|
|
115
|
+
minitest_namespaced_path = paths.join("")
|
|
116
|
+
|
|
107
117
|
templates.merge!(
|
|
108
118
|
"test/minitest/test_helper.rb.tt" => "test/test_helper.rb",
|
|
109
|
-
"test/minitest/test_newgem.rb.tt" => "test
|
|
119
|
+
"test/minitest/test_newgem.rb.tt" => "test/#{minitest_namespaced_path}.rb"
|
|
110
120
|
)
|
|
111
121
|
config[:test_task] = :test
|
|
112
122
|
when "test-unit"
|
|
@@ -165,9 +165,6 @@ module Bundler
|
|
|
165
165
|
|
|
166
166
|
def normalize_settings
|
|
167
167
|
Bundler.settings.set_command_option :path, nil if options[:system]
|
|
168
|
-
Bundler.settings.temporary(:path_relative_to_cwd => false) do
|
|
169
|
-
Bundler.settings.set_command_option :path, "vendor/bundle" if Bundler.settings[:deployment] && Bundler.settings[:path].nil?
|
|
170
|
-
end
|
|
171
168
|
Bundler.settings.set_command_option_if_given :path, options[:path]
|
|
172
169
|
Bundler.settings.temporary(:path_relative_to_cwd => false) do
|
|
173
170
|
Bundler.settings.set_command_option :path, "bundle" if options["standalone"] && Bundler.settings[:path].nil?
|
|
@@ -23,7 +23,7 @@ module Bundler
|
|
|
23
23
|
output << "No ruby version specified"
|
|
24
24
|
end
|
|
25
25
|
else
|
|
26
|
-
output << "Your platform is: #{
|
|
26
|
+
output << "Your platform is: #{Gem::Platform.local}"
|
|
27
27
|
output << "Your app has gems that work on these platforms:\n#{platforms.join("\n")}"
|
|
28
28
|
|
|
29
29
|
if ruby_version
|
|
@@ -11,12 +11,16 @@ module Bundler
|
|
|
11
11
|
def run
|
|
12
12
|
Bundler.ui.level = "warn" if options[:quiet]
|
|
13
13
|
|
|
14
|
+
update_bundler = options[:bundler]
|
|
15
|
+
|
|
16
|
+
Bundler.self_manager.update_bundler_and_restart_with_it_if_needed(update_bundler) if update_bundler
|
|
17
|
+
|
|
14
18
|
Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
|
|
15
19
|
|
|
16
20
|
sources = Array(options[:source])
|
|
17
21
|
groups = Array(options[:group]).map(&:to_sym)
|
|
18
22
|
|
|
19
|
-
full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !
|
|
23
|
+
full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !update_bundler
|
|
20
24
|
|
|
21
25
|
if full_update && !options[:all]
|
|
22
26
|
if Bundler.feature_flag.update_requires_all_flag?
|
|
@@ -49,7 +53,7 @@ module Bundler
|
|
|
49
53
|
|
|
50
54
|
Bundler.definition(:gems => gems, :sources => sources, :ruby => options[:ruby],
|
|
51
55
|
:conservative => conservative,
|
|
52
|
-
:bundler =>
|
|
56
|
+
:bundler => update_bundler)
|
|
53
57
|
end
|
|
54
58
|
|
|
55
59
|
Bundler::CLI::Common.configure_gem_version_promoter(Bundler.definition, options)
|
data/bundler/lib/bundler/cli.rb
CHANGED
|
@@ -809,17 +809,10 @@ module Bundler
|
|
|
809
809
|
|
|
810
810
|
current = Gem::Version.new(VERSION)
|
|
811
811
|
return if current >= latest
|
|
812
|
-
latest_installed = Bundler.rubygems.find_name("bundler").map(&:version).max
|
|
813
812
|
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
suggestion = "#{installation}\n#{suggestion}" if latest_installed < latest
|
|
818
|
-
else
|
|
819
|
-
suggestion = installation
|
|
820
|
-
end
|
|
821
|
-
|
|
822
|
-
Bundler.ui.warn "The latest bundler is #{latest}, but you are currently running #{current}.\n#{suggestion}"
|
|
813
|
+
Bundler.ui.warn \
|
|
814
|
+
"The latest bundler is #{latest}, but you are currently running #{current}.\n" \
|
|
815
|
+
"To update to the most recent version, run `bundle update --bundler`"
|
|
823
816
|
rescue RuntimeError
|
|
824
817
|
nil
|
|
825
818
|
end
|
|
@@ -76,15 +76,6 @@ module Bundler
|
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
def specific_dependency(name, version, platform)
|
|
80
|
-
pattern = [version, platform].compact.join("-")
|
|
81
|
-
return nil if pattern.empty?
|
|
82
|
-
|
|
83
|
-
gem_lines = info_path(name).read
|
|
84
|
-
gem_line = gem_lines[/^#{Regexp.escape(pattern)}\b.*/, 0]
|
|
85
|
-
gem_line ? parse_gem(gem_line) : nil
|
|
86
|
-
end
|
|
87
|
-
|
|
88
79
|
private
|
|
89
80
|
|
|
90
81
|
def lines(path)
|
|
@@ -73,12 +73,6 @@ module Bundler
|
|
|
73
73
|
end.flatten(1)
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def spec(name, version, platform = nil)
|
|
77
|
-
Bundler::CompactIndexClient.debug { "spec(name = #{name}, version = #{version}, platform = #{platform})" }
|
|
78
|
-
update_info(name)
|
|
79
|
-
@cache.specific_dependency(name, version, platform)
|
|
80
|
-
end
|
|
81
|
-
|
|
82
76
|
def update_and_parse_checksums!
|
|
83
77
|
Bundler::CompactIndexClient.debug { "update_and_parse_checksums!" }
|
|
84
78
|
return @info_checksums_by_name if @parsed_checksums
|
|
@@ -265,7 +265,7 @@ module Bundler
|
|
|
265
265
|
else
|
|
266
266
|
# Run a resolve against the locally available gems
|
|
267
267
|
Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
|
|
268
|
-
expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies,
|
|
268
|
+
expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true)
|
|
269
269
|
Resolver.resolve(expanded_dependencies, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
|
|
270
270
|
end
|
|
271
271
|
end
|
|
@@ -309,14 +309,6 @@ module Bundler
|
|
|
309
309
|
end
|
|
310
310
|
end
|
|
311
311
|
|
|
312
|
-
def locked_bundler_version
|
|
313
|
-
if @locked_bundler_version && @locked_bundler_version < Gem::Version.new(Bundler::VERSION)
|
|
314
|
-
new_version = Bundler::VERSION
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
new_version || @locked_bundler_version || Bundler::VERSION
|
|
318
|
-
end
|
|
319
|
-
|
|
320
312
|
def locked_ruby_version
|
|
321
313
|
return unless ruby_version
|
|
322
314
|
if @unlock[:ruby] || !@locked_ruby_version
|
|
@@ -503,6 +495,7 @@ module Bundler
|
|
|
503
495
|
|
|
504
496
|
def current_ruby_platform_locked?
|
|
505
497
|
return false unless generic_local_platform == Gem::Platform::RUBY
|
|
498
|
+
return false if Bundler.settings[:force_ruby_platform] && !@platforms.include?(Gem::Platform::RUBY)
|
|
506
499
|
|
|
507
500
|
current_platform_locked?
|
|
508
501
|
end
|
|
@@ -5,14 +5,15 @@ module Bundler
|
|
|
5
5
|
class EndpointSpecification < Gem::Specification
|
|
6
6
|
include MatchPlatform
|
|
7
7
|
|
|
8
|
-
attr_reader :name, :version, :platform, :
|
|
8
|
+
attr_reader :name, :version, :platform, :checksum
|
|
9
9
|
attr_accessor :source, :remote, :dependencies
|
|
10
10
|
|
|
11
|
-
def initialize(name, version, platform, dependencies, metadata = nil)
|
|
11
|
+
def initialize(name, version, platform, spec_fetcher, dependencies, metadata = nil)
|
|
12
12
|
super()
|
|
13
13
|
@name = name
|
|
14
14
|
@version = Gem::Version.create version
|
|
15
15
|
@platform = platform
|
|
16
|
+
@spec_fetcher = spec_fetcher
|
|
16
17
|
@dependencies = dependencies.map {|dep, reqs| build_dependency(dep, reqs) }
|
|
17
18
|
|
|
18
19
|
@loaded_from = nil
|
|
@@ -21,6 +22,14 @@ module Bundler
|
|
|
21
22
|
parse_metadata(metadata)
|
|
22
23
|
end
|
|
23
24
|
|
|
25
|
+
def required_ruby_version
|
|
26
|
+
@required_ruby_version ||= _remote_specification.required_ruby_version
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def required_rubygems_version
|
|
30
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version
|
|
31
|
+
end
|
|
32
|
+
|
|
24
33
|
def fetch_platform
|
|
25
34
|
@platform
|
|
26
35
|
end
|
|
@@ -105,12 +114,21 @@ module Bundler
|
|
|
105
114
|
|
|
106
115
|
private
|
|
107
116
|
|
|
117
|
+
def _remote_specification
|
|
118
|
+
@_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @platform])
|
|
119
|
+
end
|
|
120
|
+
|
|
108
121
|
def local_specification_path
|
|
109
122
|
"#{base_dir}/specifications/#{full_name}.gemspec"
|
|
110
123
|
end
|
|
111
124
|
|
|
112
125
|
def parse_metadata(data)
|
|
113
|
-
|
|
126
|
+
unless data
|
|
127
|
+
@required_ruby_version = nil
|
|
128
|
+
@required_rubygems_version = nil
|
|
129
|
+
return
|
|
130
|
+
end
|
|
131
|
+
|
|
114
132
|
data.each do |k, v|
|
|
115
133
|
next unless v
|
|
116
134
|
case k.to_s
|
data/bundler/lib/bundler/env.rb
CHANGED
|
@@ -71,7 +71,7 @@ module Bundler
|
|
|
71
71
|
def self.ruby_version
|
|
72
72
|
str = String.new(RUBY_VERSION)
|
|
73
73
|
str << "p#{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
|
|
74
|
-
str << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{
|
|
74
|
+
str << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{Gem::Platform.local}]"
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def self.git_version
|
|
@@ -57,16 +57,6 @@ module Bundler
|
|
|
57
57
|
gem_info
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
def fetch_spec(spec)
|
|
61
|
-
spec -= [nil, "ruby", ""]
|
|
62
|
-
contents = compact_index_client.spec(*spec)
|
|
63
|
-
return nil if contents.nil?
|
|
64
|
-
contents.unshift(spec.first)
|
|
65
|
-
contents[3].map! {|d| Gem::Dependency.new(*d) }
|
|
66
|
-
EndpointSpecification.new(*contents)
|
|
67
|
-
end
|
|
68
|
-
compact_index_request :fetch_spec
|
|
69
|
-
|
|
70
60
|
def available?
|
|
71
61
|
unless SharedHelpers.md5_available?
|
|
72
62
|
Bundler.ui.debug("FIPS mode is enabled, bundler can't use the CompactIndex API")
|
|
@@ -21,32 +21,6 @@ module Bundler
|
|
|
21
21
|
raise HTTPError, "Could not fetch specs from #{display_uri} due to underlying error <#{e.message}>"
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
|
-
|
|
25
|
-
def fetch_spec(spec)
|
|
26
|
-
spec -= [nil, "ruby", ""]
|
|
27
|
-
spec_file_name = "#{spec.join "-"}.gemspec"
|
|
28
|
-
|
|
29
|
-
uri = Bundler::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
|
|
30
|
-
if uri.scheme == "file"
|
|
31
|
-
path = Bundler.rubygems.correct_for_windows_path(uri.path)
|
|
32
|
-
Bundler.load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
|
|
33
|
-
elsif cached_spec_path = gemspec_cached_path(spec_file_name)
|
|
34
|
-
Bundler.load_gemspec(cached_spec_path)
|
|
35
|
-
else
|
|
36
|
-
Bundler.load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
|
|
37
|
-
end
|
|
38
|
-
rescue MarshalError
|
|
39
|
-
raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \
|
|
40
|
-
"Your network or your gem server is probably having issues right now."
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
private
|
|
44
|
-
|
|
45
|
-
# cached gem specification path, if one exists
|
|
46
|
-
def gemspec_cached_path(spec_file_name)
|
|
47
|
-
paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
|
|
48
|
-
paths.find {|path| File.file? path }
|
|
49
|
-
end
|
|
50
24
|
end
|
|
51
25
|
end
|
|
52
26
|
end
|
|
@@ -129,17 +129,15 @@ module Bundler
|
|
|
129
129
|
specs = fetchers.last.specs(gem_names)
|
|
130
130
|
else
|
|
131
131
|
specs = []
|
|
132
|
-
fetchers
|
|
133
|
-
|
|
134
|
-
break unless f.api_fetcher? && !gem_names || !specs = f.specs(gem_names)
|
|
135
|
-
fetchers.delete(f)
|
|
132
|
+
@fetchers = fetchers.drop_while do |f|
|
|
133
|
+
!f.available? || (f.api_fetcher? && !gem_names) || !specs = f.specs(gem_names)
|
|
136
134
|
end
|
|
137
135
|
@use_api = false if fetchers.none?(&:api_fetcher?)
|
|
138
136
|
end
|
|
139
137
|
|
|
140
138
|
specs.each do |name, version, platform, dependencies, metadata|
|
|
141
139
|
spec = if dependencies
|
|
142
|
-
EndpointSpecification.new(name, version, platform, dependencies, metadata)
|
|
140
|
+
EndpointSpecification.new(name, version, platform, self, dependencies, metadata)
|
|
143
141
|
else
|
|
144
142
|
RemoteSpecification.new(name, version, platform, self)
|
|
145
143
|
end
|
|
@@ -272,8 +270,7 @@ module Bundler
|
|
|
272
270
|
# cached gem specification path, if one exists
|
|
273
271
|
def gemspec_cached_path(spec_file_name)
|
|
274
272
|
paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
|
|
275
|
-
paths
|
|
276
|
-
paths.first
|
|
273
|
+
paths.find {|path| File.file? path }
|
|
277
274
|
end
|
|
278
275
|
|
|
279
276
|
HTTP_ERRORS = [
|
|
@@ -301,8 +298,6 @@ module Bundler
|
|
|
301
298
|
store
|
|
302
299
|
end
|
|
303
300
|
|
|
304
|
-
private
|
|
305
|
-
|
|
306
301
|
def remote_uri
|
|
307
302
|
@remote.uri
|
|
308
303
|
end
|
|
@@ -107,9 +107,9 @@ module Bundler
|
|
|
107
107
|
SharedHelpers.filesystem_access(File.join(base, "checksums")) {|p| FileUtils.mkdir_p(p) }
|
|
108
108
|
file_name = "#{File.basename(built_gem_path)}.sha512"
|
|
109
109
|
require "digest/sha2"
|
|
110
|
-
checksum = ::Digest::SHA512.
|
|
110
|
+
checksum = ::Digest::SHA512.file(built_gem_path).hexdigest
|
|
111
111
|
target = File.join(base, "checksums", file_name)
|
|
112
|
-
File.write(target, checksum)
|
|
112
|
+
File.write(target, checksum + "\n")
|
|
113
113
|
Bundler.ui.confirm "#{name} #{version} checksum written to checksums/#{file_name}."
|
|
114
114
|
end
|
|
115
115
|
|
|
@@ -90,11 +90,11 @@ module Bundler
|
|
|
90
90
|
MatchPlatform.platforms_match?(spec.platform, platform_object)
|
|
91
91
|
end
|
|
92
92
|
installable_candidates = same_platform_candidates.select do |spec|
|
|
93
|
-
|
|
93
|
+
spec.is_a?(StubSpecification) ||
|
|
94
94
|
(spec.required_ruby_version.satisfied_by?(Gem.ruby_version) &&
|
|
95
95
|
spec.required_rubygems_version.satisfied_by?(Gem.rubygems_version))
|
|
96
96
|
end
|
|
97
|
-
search = installable_candidates.last
|
|
97
|
+
search = installable_candidates.last
|
|
98
98
|
search.dependencies = dependencies if search && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
|
|
99
99
|
search
|
|
100
100
|
end
|
|
@@ -27,6 +27,13 @@ module Bundler
|
|
|
27
27
|
@platform = _remote_specification.platform
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
# A fallback is included because the original version of the specification
|
|
31
|
+
# API didn't include that field, so some marshalled specs in the index have it
|
|
32
|
+
# set to +nil+.
|
|
33
|
+
def required_rubygems_version
|
|
34
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
|
35
|
+
end
|
|
36
|
+
|
|
30
37
|
def full_name
|
|
31
38
|
if platform == Gem::Platform::RUBY || platform.nil?
|
|
32
39
|
"#{@name}-#{@version}"
|
|
@@ -95,7 +95,7 @@ module Bundler
|
|
|
95
95
|
|
|
96
96
|
def metadata_dependencies(platform)
|
|
97
97
|
spec = @specs[platform].first
|
|
98
|
-
return []
|
|
98
|
+
return [] if spec.is_a?(LazySpecification)
|
|
99
99
|
dependencies = []
|
|
100
100
|
if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none?
|
|
101
101
|
dependencies << DepProxy.get_proxy(Gem::Dependency.new("Ruby\0", spec.required_ruby_version), platform)
|
|
@@ -249,10 +249,11 @@ module Bundler
|
|
|
249
249
|
end
|
|
250
250
|
|
|
251
251
|
def verify_gemfile_dependencies_are_found!(requirements)
|
|
252
|
-
requirements.
|
|
252
|
+
requirements.map! do |requirement|
|
|
253
253
|
name = requirement.name
|
|
254
|
-
next if name == "bundler"
|
|
255
|
-
next unless search_for(requirement).empty?
|
|
254
|
+
next requirement if name == "bundler"
|
|
255
|
+
next requirement unless search_for(requirement).empty?
|
|
256
|
+
next unless requirement.current_platform?
|
|
256
257
|
|
|
257
258
|
if (base = @base[name]) && !base.empty?
|
|
258
259
|
version = base.first.version
|
|
@@ -266,7 +267,7 @@ module Bundler
|
|
|
266
267
|
message = gem_not_found_message(name, requirement, source_for(name))
|
|
267
268
|
end
|
|
268
269
|
raise GemNotFound, message
|
|
269
|
-
end
|
|
270
|
+
end.compact!
|
|
270
271
|
end
|
|
271
272
|
|
|
272
273
|
def gem_not_found_message(name, requirement, source, extra_message = "")
|
|
@@ -358,24 +359,18 @@ module Bundler
|
|
|
358
359
|
o << "\n"
|
|
359
360
|
o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
|
|
360
361
|
o << %(the gems in your Gemfile, which may resolve the conflict.\n)
|
|
361
|
-
elsif !conflict.existing
|
|
362
|
+
elsif !conflict.existing && !name.end_with?("\0")
|
|
362
363
|
o << "\n"
|
|
363
364
|
|
|
364
365
|
relevant_source = conflict.requirement.source || source_for(name)
|
|
365
366
|
|
|
366
|
-
metadata_requirement = name.end_with?("\0")
|
|
367
|
-
|
|
368
367
|
extra_message = if conflict.requirement_trees.first.size > 1
|
|
369
368
|
", which is required by gem '#{SharedHelpers.pretty_dependency(conflict.requirement_trees.first[-2])}',"
|
|
370
369
|
else
|
|
371
370
|
""
|
|
372
371
|
end
|
|
373
372
|
|
|
374
|
-
|
|
375
|
-
o << "#{SharedHelpers.pretty_dependency(conflict.requirement)}#{extra_message} is not available in #{relevant_source}"
|
|
376
|
-
else
|
|
377
|
-
o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
|
|
378
|
-
end
|
|
373
|
+
o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
|
|
379
374
|
end
|
|
380
375
|
end,
|
|
381
376
|
:version_for_spec => lambda {|spec| spec.version },
|
|
@@ -103,7 +103,7 @@ module Bundler
|
|
|
103
103
|
|
|
104
104
|
def self.system
|
|
105
105
|
ruby_engine = RUBY_ENGINE.dup
|
|
106
|
-
ruby_version =
|
|
106
|
+
ruby_version = RUBY_VERSION.dup
|
|
107
107
|
ruby_engine_version = RUBY_ENGINE_VERSION.dup
|
|
108
108
|
patchlevel = RUBY_PATCHLEVEL.to_s
|
|
109
109
|
|