rubygems-update 2.7.6 → 2.7.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +2 -23
- data/History.txt +53 -0
- data/Manifest.txt +1 -0
- data/bundler/CHANGELOG.md +50 -0
- data/bundler/README.md +4 -0
- data/bundler/lib/bundler.rb +2 -2
- data/bundler/lib/bundler/cli.rb +2 -0
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +3 -4
- data/bundler/lib/bundler/cli/gem.rb +5 -2
- data/bundler/lib/bundler/cli/init.rb +5 -0
- data/bundler/lib/bundler/cli/install.rb +2 -2
- data/bundler/lib/bundler/cli/outdated.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +10 -1
- data/bundler/lib/bundler/definition.rb +16 -11
- data/bundler/lib/bundler/fetcher.rb +2 -2
- data/bundler/lib/bundler/fetcher/index.rb +2 -2
- data/bundler/lib/bundler/friendly_errors.rb +2 -0
- data/bundler/lib/bundler/injector.rb +4 -4
- data/bundler/lib/bundler/installer.rb +12 -4
- data/bundler/lib/bundler/installer/gem_installer.rb +6 -1
- data/bundler/lib/bundler/plugin/index.rb +6 -1
- data/bundler/lib/bundler/resolver/spec_group.rb +0 -1
- data/bundler/lib/bundler/rubygems_integration.rb +9 -3
- data/bundler/lib/bundler/runtime.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +2 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +6 -1
- data/bundler/lib/bundler/source/rubygems.rb +6 -1
- data/bundler/lib/bundler/spec_set.rb +4 -1
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -2
- data/bundler/lib/bundler/ui/shell.rb +3 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/man/bundle-binstubs.ronn +3 -3
- data/bundler/man/bundle-check.ronn +3 -3
- data/bundler/man/bundle-config.ronn +13 -9
- data/bundler/man/bundle-doctor.ronn +33 -0
- data/bundler/man/bundle-exec.ronn +3 -3
- data/bundler/man/bundle-gem.ronn +1 -1
- data/bundler/man/bundle-init.ronn +15 -4
- data/bundler/man/bundle-inject.ronn +3 -3
- data/bundler/man/bundle-install.ronn +1 -1
- data/bundler/man/bundle-lock.ronn +1 -1
- data/bundler/man/bundle-outdated.ronn +1 -1
- data/bundler/man/bundle-package.ronn +3 -3
- data/bundler/man/bundle-show.ronn +2 -2
- data/bundler/man/bundle-update.ronn +8 -8
- data/bundler/man/bundle-viz.ronn +1 -1
- data/bundler/man/bundle.ronn +25 -25
- data/bundler/man/gemfile.5.ronn +3 -3
- data/lib/rubygems.rb +21 -3
- data/lib/rubygems/bundler_version_finder.rb +5 -1
- data/lib/rubygems/commands/push_command.rb +1 -1
- data/lib/rubygems/commands/setup_command.rb +3 -3
- data/lib/rubygems/commands/unpack_command.rb +1 -1
- data/lib/rubygems/dependency.rb +1 -0
- data/lib/rubygems/dependency_installer.rb +4 -2
- data/lib/rubygems/exceptions.rb +5 -1
- data/lib/rubygems/indexer.rb +1 -1
- data/lib/rubygems/installer.rb +5 -1
- data/lib/rubygems/package.rb +10 -2
- data/lib/rubygems/remote_fetcher.rb +1 -1
- data/lib/rubygems/request_set.rb +3 -1
- data/lib/rubygems/server.rb +3 -3
- data/lib/rubygems/source.rb +1 -1
- data/lib/rubygems/specification.rb +7 -10
- data/lib/rubygems/test_case.rb +21 -3
- data/lib/rubygems/test_utilities.rb +1 -1
- data/lib/rubygems/user_interaction.rb +4 -0
- data/lib/rubygems/version.rb +1 -0
- data/lib/ubygems.rb +3 -0
- data/test/rubygems/test_gem.rb +7 -7
- data/test/rubygems/test_gem_commands_setup_command.rb +6 -1
- data/test/rubygems/test_gem_package.rb +54 -5
- data/test/rubygems/test_gem_package_tar_header.rb +2 -1
- data/test/rubygems/test_gem_remote_fetcher.rb +1 -1
- data/test/rubygems/test_gem_security_policy.rb +3 -3
- data/test/rubygems/test_gem_server.rb +12 -12
- data/test/rubygems/test_gem_specification.rb +1 -1
- data/test/rubygems/test_gem_util.rb +4 -2
- data/test/rubygems/test_gem_version.rb +1 -0
- data/util/ci +1 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8894c9873527e4af5cc83ac8aded3cee104bcc856ca20bb56fc1323b42505e12
|
4
|
+
data.tar.gz: 931f155a8de59dd9b17423356e1dc0de54f3cf5b40bbe5eae801c884420a9407
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b23ba224604b357bb71d7f0aff9bb7e73979bb53c59310ef70566e8df2bbaca3c3aec46961cfdd38262baba89af52c8131a4d3eecc50470b2181c52b8db340d
|
7
|
+
data.tar.gz: e1632f7987dbd4eaa50704237ea7b78cb952ca6f775ed4613399c7b4797e0fb92402a1af7ea4f4cd39e38065c4883a4ba0acc07086ee908d0eb6e50ad356e497
|
data/.travis.yml
CHANGED
@@ -28,28 +28,7 @@ env:
|
|
28
28
|
- "TEST_TOOL=rubygems YAML=psych"
|
29
29
|
- "TEST_TOOL=bundler RGV=master"
|
30
30
|
script:
|
31
|
-
- util/ci script
|
31
|
+
- util/ci script
|
32
32
|
matrix:
|
33
|
-
exclude:
|
34
|
-
- rvm: 1.8.7
|
35
|
-
env: "TEST_TOOL=rubygems YAML=psych"
|
36
|
-
- rvm: 1.9.2
|
37
|
-
env: "TEST_TOOL=bundler RGV=master"
|
38
|
-
- rvm: 2.0.0
|
39
|
-
env: "TEST_TOOL=rubygems YAML=syck"
|
40
|
-
- rvm: 2.1.10
|
41
|
-
env: "TEST_TOOL=rubygems YAML=syck"
|
42
|
-
- rvm: 2.2.9
|
43
|
-
env: "TEST_TOOL=rubygems YAML=syck"
|
44
|
-
- rvm: 2.3.6
|
45
|
-
env: "TEST_TOOL=rubygems YAML=syck"
|
46
|
-
- rvm: 2.4.3
|
47
|
-
env: "TEST_TOOL=rubygems YAML=syck"
|
48
|
-
- rvm: 2.5.0
|
49
|
-
env: "TEST_TOOL=rubygems YAML=syck"
|
50
|
-
- rvm: ruby-head
|
51
|
-
env: "TEST_TOOL=rubygems YAML=syck"
|
52
33
|
allow_failures:
|
53
|
-
-
|
54
|
-
- rvm: 2.5.0
|
55
|
-
env: "TEST_TOOL=rubygems YAML=psych"
|
34
|
+
- env: "TEST_TOOL=bundler RGV=master"
|
data/History.txt
CHANGED
@@ -1,5 +1,44 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
|
3
|
+
=== 2.7.7 / 2018-05-08
|
4
|
+
|
5
|
+
Minor enhancements:
|
6
|
+
|
7
|
+
* [RequestSet] Only suggest a gem version with an installable platform.
|
8
|
+
Pull request #2175 by Samuel Giddins.
|
9
|
+
* Fixed no assignment variables about default gems installation. Pull
|
10
|
+
request #2181 by SHIBATA Hiroshi.
|
11
|
+
* Backport improvements for test-case from Ruby core. Pull request #2189
|
12
|
+
by SHIBATA Hiroshi.
|
13
|
+
* Fix ruby warnings in test suite. Pull request #2205 by Colby Swandale.
|
14
|
+
* To use Gem::Specification#bindir of bundler instead of hard coded path.
|
15
|
+
Pull request #2208 by SHIBATA Hiroshi.
|
16
|
+
* Update gem push --help description. Pull request #2215 by Luis
|
17
|
+
Sagastume.
|
18
|
+
* Backport ruby core commits. Pull request #2264 by SHIBATA Hiroshi.
|
19
|
+
|
20
|
+
Bug fixes:
|
21
|
+
|
22
|
+
* Frozen string fix - lib/rubygems/bundler_version_finder.rb. Pull request
|
23
|
+
#2115 by MSP-Greg.
|
24
|
+
* Fixed tempfile leak for RubyGems 2.7.6. Pull request #2194 by SHIBATA
|
25
|
+
Hiroshi.
|
26
|
+
* Add missing requires. Pull request #2196 by David Rodríguez.
|
27
|
+
* Fix Gem::Version.correct?. Pull request #2203 by Masato Nakamura.
|
28
|
+
* Fix verify_entry regex for metadata. Pull request #2212 by Luis
|
29
|
+
Sagastume.
|
30
|
+
* Fix path checks for case insensitive filesystem. Pull request #2211 by
|
31
|
+
Lars Kanis.
|
32
|
+
|
33
|
+
Compatibility changes:
|
34
|
+
|
35
|
+
* Deprecate unused code before removing them at #1524. Pull request #2197
|
36
|
+
by SHIBATA Hiroshi.
|
37
|
+
* Deprecate for rubygems 3. Pull request #2214 by SHIBATA Hiroshi.
|
38
|
+
* Mark deprecation to `ubygems.rb` for RubyGems 4. Pull request #2269 by
|
39
|
+
SHIBATA Hiroshi.
|
40
|
+
* Update bundler-1.16.2. Pull request #2291 by SHIBATA Hiroshi.
|
41
|
+
|
3
42
|
=== 2.7.6 / 2018-02-16
|
4
43
|
|
5
44
|
Security fixes:
|
@@ -19,6 +58,20 @@ Security fixes:
|
|
19
58
|
* Prevent Path Traversal issue during gem installation.
|
20
59
|
Discovered by nmalkin.
|
21
60
|
|
61
|
+
=== 2.7.5
|
62
|
+
|
63
|
+
Bug fixes:
|
64
|
+
|
65
|
+
* To use bundler-1.16.1 #2121 by SHIBATA Hiroshi.
|
66
|
+
* Fixed leaked FDs. Pull request #2127 by Nobuyoshi Nakada.
|
67
|
+
* Support option for `--destdir` with upgrade installer. #2169 by Thibault Jouan.
|
68
|
+
* Remove PID from gem index directory. #2155 by SHIBATA Hiroshi.
|
69
|
+
* Avoid a #mkdir race condition #2148 by Samuel Giddins.
|
70
|
+
* Gem::Util.traverse_parents should not crash on permissions error #2147 by Robert Ulejczyk.
|
71
|
+
* Use `File.open` instead of `open`. #2142 by SHIBATA Hiroshi.
|
72
|
+
* Set whether bundler is used for gemdeps with an environmental variable #2126 by SHIBATA Hiroshi.
|
73
|
+
* Fix undefined method error when printing alert #1884 by Robert Ross.
|
74
|
+
|
22
75
|
=== 2.7.4
|
23
76
|
|
24
77
|
Bug fixes:
|
data/Manifest.txt
CHANGED
@@ -247,6 +247,7 @@ bundler/man/bundle-binstubs.ronn
|
|
247
247
|
bundler/man/bundle-check.ronn
|
248
248
|
bundler/man/bundle-clean.ronn
|
249
249
|
bundler/man/bundle-config.ronn
|
250
|
+
bundler/man/bundle-doctor.ronn
|
250
251
|
bundler/man/bundle-exec.ronn
|
251
252
|
bundler/man/bundle-gem.ronn
|
252
253
|
bundler/man/bundle-info.ronn
|
data/bundler/CHANGELOG.md
CHANGED
@@ -1,3 +1,53 @@
|
|
1
|
+
## 1.16.2 (2018-04-20)
|
2
|
+
|
3
|
+
Changes:
|
4
|
+
|
5
|
+
- Include the gem's source in the gem install error message when available (@papanikge)
|
6
|
+
- Remove unnecessary executable bit from gem template (@voxik)
|
7
|
+
- Dont add the timestamp comment with gems added to the Gemfile via `bundle add` ([#6193](https://github.com/bundler/bundler/issues/6193), @cpgo)
|
8
|
+
- Improve yanked gem error message (@alyssais)
|
9
|
+
- Use `Bundler.rubygems.inflate` instead of the Gem::Util method directly (@segiddins)
|
10
|
+
- Remove unused instance variable (@segiddins)
|
11
|
+
|
12
|
+
Bugfixes:
|
13
|
+
|
14
|
+
- Only trap INT signal and have Ruby's signal default handler be invoked (@shayonj)
|
15
|
+
- Fix warning about the use of `__FILE__` in RubyGems integration testing (@MSP-Greg)
|
16
|
+
- Skip the outdated bundler check when MD5 is not available ([#6032](https://github.com/bundler/bundler/issues/6032), @segiddins)
|
17
|
+
- Fallback to the original error if the friendly message raises (@segiddins)
|
18
|
+
- Rename Bundler.frozen? to avoid Object method conflict ([#6252](https://github.com/bundler/bundler/issues/6252), @segiddins)
|
19
|
+
- Ensure the bindir exists before installing gems (@segiddins)
|
20
|
+
- Handle gzip corruption errors in the compact index client ([#6261](https://github.com/bundler/bundler/issues/6261), @colby-swandale)
|
21
|
+
- Check if the current directory is writeable when writing files in `bundle gem` ([#6219](https://github.com/bundler/bundler/issues/6219), @nilsding)
|
22
|
+
- Fix hang when gemspec has incompatible encoding (@deivid-rodriguez)
|
23
|
+
- Gracefully handle when the lockfile is missing spec entries for the current platform ([#6079](https://github.com/bundler/bundler/issues/6079), @segiddins)
|
24
|
+
- Use Gem::Util.inflate instead of Gem.inflate (@hsbt)
|
25
|
+
- Update binstub generator to use new ERB.new arity in Ruby 2.6 (@koic)
|
26
|
+
- Fix `source_location` call in rubygems integration (@MSP-Greg)
|
27
|
+
- Use `filesystem_access` when copying files in Compact Index Updater ([#6289](https://github.com/bundler/bundler/issues/6289), @segiddins)
|
28
|
+
- Fail gracefully when resetting git gems to the given revision fails ([#6324](https://github.com/bundler/bundler/issues/6324), @segiddins)
|
29
|
+
- Handle exceptions that do not have a backtrace ([#6342](https://github.com/bundler/bundler/issues/6342), @nesaulov)
|
30
|
+
- Check if stderr was closed before writing to it (@shime)
|
31
|
+
- Handle updating a specific gem for a non-local platform ([#6350](https://github.com/bundler/bundler/issues/6350), @greysteil)
|
32
|
+
- Bump the `bundle_binstub` check-length to 300 characters (@tduffield)
|
33
|
+
- Fix specifying alterntive Lockfile with `bundle lock` when default gemfile is present ([#6460](https://github.com/bundler/bundler/issues/6460), @agrim123)
|
34
|
+
- Allow installing dependencies when the path is set to `.` ([#6475](https://github.com/bundler/bundler/issues/6475), @segiddins)
|
35
|
+
- Support Bundler installing on a readonly filesystem without a home directory ([#6461](https://github.com/bundler/bundler/issues/6461), @grosser)
|
36
|
+
- Filter git uri credentials in source description (@segiddins)
|
37
|
+
|
38
|
+
Documentation:
|
39
|
+
|
40
|
+
- Correct typos in `bundle binstubs` man page (@erikj, @samueloph)
|
41
|
+
- Update links in `bundle gem` command documentation to use https (@KrauseFx)
|
42
|
+
- Fix broken links between bundler man pages (@segiddins)
|
43
|
+
- Add man page for the `bundle doctor` command ([#6243](https://github.com/bundler/bundler/issues/6243), @nholden)
|
44
|
+
- Document `# frozen_string_literal` in `bundle init` Gemfile (@315tky)
|
45
|
+
- Explain the gemspec files attribute in `bundle gem` template and print a link to bundler.io guides when running `bundle gem` ([#6246](https://github.com/bundler/bundler/issues/6246), @nesaulov)
|
46
|
+
- Small copy tweaks & removed redundant phrasing in the bundler man page (@rubymorillo)
|
47
|
+
- Improve the documentation of the settings load order in Bundler (@rubymorillo)
|
48
|
+
- Added license info to main README (@rubymorillo)
|
49
|
+
- Document parameters and return value of Injector#inject (@tobias-grasse)
|
50
|
+
|
1
51
|
## 1.16.1 (2017-12-12)
|
2
52
|
|
3
53
|
Bugfixes:
|
data/bundler/README.md
CHANGED
@@ -57,3 +57,7 @@ While some Bundler contributors are compensated by Ruby Together, the project ma
|
|
57
57
|
### Code of Conduct
|
58
58
|
|
59
59
|
Everyone interacting in the Bundler project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/bundler/bundler/blob/master/CODE_OF_CONDUCT.md).
|
60
|
+
|
61
|
+
### License
|
62
|
+
|
63
|
+
[MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md)
|
data/bundler/lib/bundler.rb
CHANGED
@@ -136,7 +136,7 @@ module Bundler
|
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
139
|
-
def
|
139
|
+
def frozen_bundle?
|
140
140
|
frozen = settings[:deployment]
|
141
141
|
frozen ||= settings[:frozen] unless feature_flag.deployment_means_frozen?
|
142
142
|
frozen
|
@@ -427,7 +427,7 @@ EOF
|
|
427
427
|
|
428
428
|
def load_gemspec_uncached(file, validate = false)
|
429
429
|
path = Pathname.new(file)
|
430
|
-
contents =
|
430
|
+
contents = read_file(file)
|
431
431
|
spec = if contents.start_with?("---") # YAML header
|
432
432
|
eval_yaml_gemspec(path, contents)
|
433
433
|
else
|
data/bundler/lib/bundler/cli.rb
CHANGED
@@ -717,6 +717,8 @@ module Bundler
|
|
717
717
|
command_name = current_command.name
|
718
718
|
return if PARSEABLE_COMMANDS.include?(command_name)
|
719
719
|
|
720
|
+
return unless SharedHelpers.md5_available?
|
721
|
+
|
720
722
|
latest = Fetcher::CompactIndex.
|
721
723
|
new(nil, Source::Rubygems::Remote.new(URI("https://rubygems.org")), nil).
|
722
724
|
send(:compact_index_client).
|
@@ -26,7 +26,7 @@ module Bundler
|
|
26
26
|
not_installed.each {|s| Bundler.ui.error " * #{s.name} (#{s.version})" }
|
27
27
|
Bundler.ui.warn "Install missing gems with `bundle install`"
|
28
28
|
exit 1
|
29
|
-
elsif !Bundler.default_lockfile.file? && Bundler.
|
29
|
+
elsif !Bundler.default_lockfile.file? && Bundler.frozen_bundle?
|
30
30
|
Bundler.ui.error "This bundle has been frozen, but there is no #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} present"
|
31
31
|
exit 1
|
32
32
|
else
|
@@ -6,7 +6,7 @@ module Bundler
|
|
6
6
|
class CLI::Exec
|
7
7
|
attr_reader :options, :args, :cmd
|
8
8
|
|
9
|
-
|
9
|
+
TRAPPED_SIGNALS = %w[INT].freeze
|
10
10
|
|
11
11
|
def initialize(options, args)
|
12
12
|
@options = options
|
@@ -70,15 +70,14 @@ module Bundler
|
|
70
70
|
ui = Bundler.ui
|
71
71
|
Bundler.ui = nil
|
72
72
|
require "bundler/setup"
|
73
|
-
|
74
|
-
signals.each {|s| trap(s, "DEFAULT") }
|
73
|
+
TRAPPED_SIGNALS.each {|s| trap(s, "DEFAULT") }
|
75
74
|
Kernel.load(file)
|
76
75
|
rescue SystemExit, SignalException
|
77
76
|
raise
|
78
77
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
79
78
|
Bundler.ui = ui
|
80
79
|
Bundler.ui.error "bundler: failed to load command: #{cmd} (#{file})"
|
81
|
-
backtrace = e.backtrace.take_while {|bt| !bt.start_with?(__FILE__) }
|
80
|
+
backtrace = e.backtrace ? e.backtrace.take_while {|bt| !bt.start_with?(__FILE__) } : []
|
82
81
|
abort "#{e.class}: #{e.message}\n #{backtrace.join("\n ")}"
|
83
82
|
end
|
84
83
|
|
@@ -105,7 +105,7 @@ module Bundler
|
|
105
105
|
if ask_and_set(:mit, "Do you want to license your code permissively under the MIT license?",
|
106
106
|
"This means that any other developer or company will be legally allowed to use your code " \
|
107
107
|
"for free as long as they admit you created it. You can read more about the MIT license " \
|
108
|
-
"at
|
108
|
+
"at https://choosealicense.com/licenses/mit.")
|
109
109
|
config[:mit] = true
|
110
110
|
Bundler.ui.info "MIT License enabled in config"
|
111
111
|
templates.merge!("LICENSE.txt.tt" => "LICENSE.txt")
|
@@ -118,7 +118,7 @@ module Bundler
|
|
118
118
|
"of enforcing it, so be sure that you are prepared to do that. Be sure that your email " \
|
119
119
|
"address is specified as a contact in the generated code of conduct so that people know " \
|
120
120
|
"who to contact in case of a violation. For suggestions about " \
|
121
|
-
"how to enforce codes of conduct, see
|
121
|
+
"how to enforce codes of conduct, see https://bit.ly/coc-enforcement.")
|
122
122
|
config[:coc] = true
|
123
123
|
Bundler.ui.info "Code of conduct enabled in config"
|
124
124
|
templates.merge!("CODE_OF_CONDUCT.md.tt" => "CODE_OF_CONDUCT.md")
|
@@ -158,6 +158,9 @@ module Bundler
|
|
158
158
|
|
159
159
|
# Open gemspec in editor
|
160
160
|
open_editor(options["edit"], target.join("#{name}.gemspec")) if options[:edit]
|
161
|
+
|
162
|
+
Bundler.ui.info "Gem '#{name}' was successfully created. " \
|
163
|
+
"For more information on making a RubyGem visit https://bundler.io/guides/creating_gem.html"
|
161
164
|
rescue Errno::EEXIST => e
|
162
165
|
raise GenericSystemCallError.new(e, "There was a conflict while creating the new gem.")
|
163
166
|
end
|
@@ -13,6 +13,11 @@ module Bundler
|
|
13
13
|
exit 1
|
14
14
|
end
|
15
15
|
|
16
|
+
unless File.writable?(Dir.pwd)
|
17
|
+
Bundler.ui.error "Can not create #{gemfile} as the current directory is not writable."
|
18
|
+
exit 1
|
19
|
+
end
|
20
|
+
|
16
21
|
if options[:gemspec]
|
17
22
|
gemspec = File.expand_path(options[:gemspec])
|
18
23
|
unless File.exist?(gemspec)
|
@@ -23,7 +23,7 @@ module Bundler
|
|
23
23
|
|
24
24
|
check_trust_policy
|
25
25
|
|
26
|
-
if options[:deployment] || options[:frozen] || Bundler.
|
26
|
+
if options[:deployment] || options[:frozen] || Bundler.frozen_bundle?
|
27
27
|
unless Bundler.default_lockfile.exist?
|
28
28
|
flag = "--deployment flag" if options[:deployment]
|
29
29
|
flag ||= "--frozen flag" if options[:frozen]
|
@@ -63,7 +63,7 @@ module Bundler
|
|
63
63
|
definition.validate_runtime!
|
64
64
|
|
65
65
|
installer = Installer.install(Bundler.root, definition, options)
|
66
|
-
Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.
|
66
|
+
Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.frozen_bundle?
|
67
67
|
|
68
68
|
Bundler.ui.confirm "Bundle complete! #{dependencies_count_for(definition)}, #{gems_installed_for(definition)}."
|
69
69
|
Bundler::CLI::Common.output_without_groups_message
|
@@ -213,7 +213,7 @@ module Bundler
|
|
213
213
|
end
|
214
214
|
|
215
215
|
def check_for_deployment_mode
|
216
|
-
return unless Bundler.
|
216
|
+
return unless Bundler.frozen_bundle?
|
217
217
|
suggested_command = if Bundler.settings.locations("frozen")[:global]
|
218
218
|
"bundle config --delete frozen"
|
219
219
|
elsif Bundler.settings.locations("deployment").keys.&([:global, :local]).any?
|
@@ -33,7 +33,9 @@ module Bundler
|
|
33
33
|
|
34
34
|
# first try to fetch any new bytes on the existing file
|
35
35
|
if retrying.nil? && local_path.file?
|
36
|
-
|
36
|
+
SharedHelpers.filesystem_access(local_temp_path) do
|
37
|
+
FileUtils.cp local_path, local_temp_path
|
38
|
+
end
|
37
39
|
headers["If-None-Match"] = etag_for(local_temp_path)
|
38
40
|
headers["Range"] =
|
39
41
|
if local_temp_path.size.nonzero?
|
@@ -78,6 +80,13 @@ module Bundler
|
|
78
80
|
|
79
81
|
update(local_path, remote_path, :retrying)
|
80
82
|
end
|
83
|
+
rescue Errno::EACCES
|
84
|
+
raise Bundler::PermissionError,
|
85
|
+
"Bundler does not have write access to create a temp directory " \
|
86
|
+
"within #{Dir.tmpdir}. Bundler must have write access to your " \
|
87
|
+
"systems temp directory to function properly. "
|
88
|
+
rescue Zlib::GzipFile::Error
|
89
|
+
raise Bundler::HTTPError
|
81
90
|
end
|
82
91
|
|
83
92
|
def etag_for(path)
|
@@ -77,6 +77,7 @@ module Bundler
|
|
77
77
|
@lockfile_contents = String.new
|
78
78
|
@locked_bundler_version = nil
|
79
79
|
@locked_ruby_version = nil
|
80
|
+
@locked_specs_incomplete_for_platform = false
|
80
81
|
|
81
82
|
if lockfile && File.exist?(lockfile)
|
82
83
|
@lockfile_contents = Bundler.read_file(lockfile)
|
@@ -113,15 +114,15 @@ module Bundler
|
|
113
114
|
end
|
114
115
|
@unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version)
|
115
116
|
|
116
|
-
add_current_platform unless Bundler.
|
117
|
+
add_current_platform unless Bundler.frozen_bundle?
|
117
118
|
|
118
119
|
converge_path_sources_to_gemspec_sources
|
119
120
|
@path_changes = converge_paths
|
120
121
|
@source_changes = converge_sources
|
121
122
|
|
122
123
|
unless @unlock[:lock_shared_dependencies]
|
123
|
-
eager_unlock = expand_dependencies(@unlock[:gems])
|
124
|
-
@unlock[:gems] = @locked_specs.for(eager_unlock).map(&:name)
|
124
|
+
eager_unlock = expand_dependencies(@unlock[:gems], true)
|
125
|
+
@unlock[:gems] = @locked_specs.for(eager_unlock, [], false, false, false).map(&:name)
|
125
126
|
end
|
126
127
|
|
127
128
|
@gem_version_promoter = create_gem_version_promoter
|
@@ -175,7 +176,7 @@ module Bundler
|
|
175
176
|
raise GemNotFound, "Your bundle is locked to #{locked_gem}, but that version could not " \
|
176
177
|
"be found in any of the sources listed in your Gemfile. If you haven't changed sources, " \
|
177
178
|
"that means the author of #{locked_gem} has removed it. You'll need to update your bundle " \
|
178
|
-
"to a
|
179
|
+
"to a version other than #{locked_gem} that hasn't been removed in order to install."
|
179
180
|
end
|
180
181
|
unless specs["bundler"].any?
|
181
182
|
bundler = sources.metadata_source.specs.search(Gem::Dependency.new("bundler", VERSION)).last
|
@@ -245,7 +246,7 @@ module Bundler
|
|
245
246
|
def resolve
|
246
247
|
@resolve ||= begin
|
247
248
|
last_resolve = converge_locked_specs
|
248
|
-
if Bundler.
|
249
|
+
if Bundler.frozen_bundle?
|
249
250
|
Bundler.ui.debug "Frozen, using resolution from the lockfile"
|
250
251
|
last_resolve
|
251
252
|
elsif !unlocking? && nothing_changed?
|
@@ -336,10 +337,11 @@ module Bundler
|
|
336
337
|
end
|
337
338
|
end
|
338
339
|
|
339
|
-
preserve_unknown_sections ||= !updating_major && (Bundler.
|
340
|
-
return if lockfiles_equal?(@lockfile_contents, contents, preserve_unknown_sections)
|
340
|
+
preserve_unknown_sections ||= !updating_major && (Bundler.frozen_bundle? || !(unlocking? || @unlocking_bundler))
|
341
341
|
|
342
|
-
if
|
342
|
+
return if file && File.exist?(file) && lockfiles_equal?(@lockfile_contents, contents, preserve_unknown_sections)
|
343
|
+
|
344
|
+
if Bundler.frozen_bundle?
|
343
345
|
Bundler.ui.error "Cannot write a changed lockfile while frozen."
|
344
346
|
return
|
345
347
|
end
|
@@ -530,7 +532,7 @@ module Bundler
|
|
530
532
|
private :sources
|
531
533
|
|
532
534
|
def nothing_changed?
|
533
|
-
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes
|
535
|
+
!@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes && !@locked_specs_incomplete_for_platform
|
534
536
|
end
|
535
537
|
|
536
538
|
def unlocking?
|
@@ -557,6 +559,7 @@ module Bundler
|
|
557
559
|
[@new_platform, "you added a new platform to your gemfile"],
|
558
560
|
[@path_changes, "the gemspecs for path gems changed"],
|
559
561
|
[@local_changes, "the gemspecs for git local gems changed"],
|
562
|
+
[@locked_specs_incomplete_for_platform, "the lockfile does not have all gems needed for the current platform"],
|
560
563
|
].select(&:first).map(&:last).join(", ")
|
561
564
|
end
|
562
565
|
|
@@ -682,7 +685,7 @@ module Bundler
|
|
682
685
|
end
|
683
686
|
|
684
687
|
def converge_dependencies
|
685
|
-
frozen = Bundler.
|
688
|
+
frozen = Bundler.frozen_bundle?
|
686
689
|
(@dependencies + @locked_deps.values).each do |dep|
|
687
690
|
locked_source = @locked_deps[dep.name]
|
688
691
|
# This is to make sure that if bundler is installing in deployment mode and
|
@@ -803,7 +806,9 @@ module Bundler
|
|
803
806
|
end
|
804
807
|
|
805
808
|
resolve = SpecSet.new(converged)
|
806
|
-
|
809
|
+
expanded_deps = expand_dependencies(deps, true)
|
810
|
+
@locked_specs_incomplete_for_platform = !resolve.for(expanded_deps, @unlock[:gems], true, true)
|
811
|
+
resolve = resolve.for(expanded_deps, @unlock[:gems], false, false, false)
|
807
812
|
diff = nil
|
808
813
|
|
809
814
|
# Now, we unlock any sources that do not have anymore gems pinned to it
|
@@ -96,11 +96,11 @@ module Bundler
|
|
96
96
|
|
97
97
|
uri = URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
|
98
98
|
if uri.scheme == "file"
|
99
|
-
Bundler.load_marshal
|
99
|
+
Bundler.load_marshal Bundler.rubygems.inflate(Gem.read_binary(uri.path))
|
100
100
|
elsif cached_spec_path = gemspec_cached_path(spec_file_name)
|
101
101
|
Bundler.load_gemspec(cached_spec_path)
|
102
102
|
else
|
103
|
-
Bundler.load_marshal
|
103
|
+
Bundler.load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
|
104
104
|
end
|
105
105
|
rescue MarshalError
|
106
106
|
raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \
|