| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
7591: Revise compatibility policies r=indirect a=indirect
### What was the end-user problem that led to this PR?
The POLICIES file was a bit contradictory, saying in one place that Ruby versions would be dropped in minor releases, and in another place that Ruby versions would be dropped in major releases.
### What was your diagnosis of the problem?
The POLICIES file was not fully updated after several Bundler and RubyGems team discussions, agreements, and public statements during 2019.
### What is your fix for the problem, implemented in this PR?
This PR updates the POLICIES file to be consistent both with itself and with my understanding of the agreements and statements made by the Bundler and RubyGems teams in 2019.
/cc @deivid-rodriguez @colby-swandale
Co-authored-by: André Arko <andre@arko.net>
|
| |
| |
| | |
keep editing, add tldr, mention man pages
|
| | |
|
| |
| |
| | |
removes trailing whitespace (I hope)
|
| |
| |
| | |
I didn't actually mean to delete this paragraph, whoops
|
| |
| |
| | |
This updates the written policies to reflect discussions, agreements, and public statements during 2019.
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
7600: Improve cache specs r=deivid-rodriguez a=deivid-rodriguez
<!--
Thanks so much for the contribution!
If you're updating documentation, make sure you run `bin/rake man:build` and
squash the result into your changes, so that all documentation formats are
updated.
To make reviewing this PR a bit easier, please fill out answers to the following questions.
-->
### What was the end-user or developer problem that led to this PR?
I noticed that when running specs on Windows, sometime I got a `_gem` leftover folder in the root of the repo.
### What is your fix for the problem, implemented in this PR?
My fix is to run the particular spec creating this test folder in `tmp`, just like the rest of the specs.
Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
|
| | |
| | |
| | |
| | |
| | | |
Everything in this tests happens inside `tmp/` and `tmp/` is cleaned up
after each spec.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
So it runs in the isolated tmp as expected. Also, as it is written, this
spec would leave a leftover `_gem` folder in the root of the repo in
case it fails, since the root of the repo is obviously not cleaned up
after each test.
|
|\ \ \
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
7527: Report original exception when failing to load openssl r=deivid-rodriguez a=p-mongo
### What was the end-user problem that led to this PR?
See #7192.
### What was your diagnosis of the problem?
Bundler discards `LoadError` class and message when reporting it.
### What is your fix for the problem, implemented in this PR?
Report class and message of the original exception when reporting `LoadError`.
Fixes #7192
Co-authored-by: Oleg Pudeyev <oleg@bsdpower.com>
Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
Co-authored-by: Emily Giurleo <e.m.giurleo@gmail.com>
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
7594: Fix flaky spec failure r=deivid-rodriguez a=deivid-rodriguez
<!--
Thanks so much for the contribution!
If you're updating documentation, make sure you run `bin/rake man:build` and
squash the result into your changes, so that all documentation formats are
updated.
To make reviewing this PR a bit easier, please fill out answers to the following questions.
-->
### What was the end-user or developer problem that led to this PR?
The problem was flaky tests: https://www.travis-ci.org/rubygems/bundler/jobs/639403049.
### What is your fix for the problem, implemented in this PR?
My diagnosis was that if our test code happens to run `Gem.configuration` before `ENV["HOME"]` is changed for our tests, this test starts failing because the test first writes to the global `~/.gemrc` file (not in `tmp/`), because `Gem.config_file` has that value memoized. Then, however, the `bundle install` subprocess infers `Gem.config_file` from the modified `ENV["HOME"]` and tries to read `tmp/home/.gemrc`. However, that file doesn't exist, so rubygems configuration is ignored and doesn't print an error like the test expects.
My fix is to make this test independent from the specific rubygems configuration in the main test process.
<!-- Explain the fix being implemented. Include any diagnosis you run to
determine the cause of the issue and your conclusions. If you considered other
alternatives, explain why you end up choosing the current implementation -->
Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If our test code happens to run `Gem.configuration` before `ENV["HOME"]`
is changed for our tests, this test starts failing because the test
first writes to the global `~/.gemrc` file (not in `tmp/`), because
`Gem.config_file` has that value memoized. Then, however, the `bundle
install` subprocess infers `Gem.config_file` from the modified
`ENV["HOME"]` and tries to read `tmp/home/.gemrc`. However, that file
doesn't exist, so rubygems configuration is ignored and doesn't print an
error like the test expects.
The error looks like this:
```
Failures:
1) Bundler friendly errors with invalid YAML in .gemrc reports a relevant friendly error message
Failure/Error: expect(err).to include("Failed to load #{home(".gemrc")}")
expected "" to include "Failed to load /home/travis/build/rubygems/bundler/tmp/1/home/.gemrc"
Commands:
$ /home/travis/.rvm/rubies/ruby-2.6.5/bin/ruby -I/home/travis/build/rubygems/bundler/lib:/home/travis/build/rubygems/bundler/spec -rsupport/hax -rsupport/artifice/fail /home/travis/build/rubygems/bundler/exe/bundle install
Running `bundle install` with bundler 3.0.0
Found changes from the lockfile, re-resolving dependencies because the list of sources changed, the dependencies in your gemfile changed, you added a new platform to your gemfile
Fetching source index from file:///home/travis/build/rubygems/bundler/tmp/1/gems/remote1/
Resolving dependencies...
Using bundler 3.0.0
0: bundler (3.0.0) from /home/travis/build/rubygems/bundler/lib/bundler/source
Fetching rack 1.0.0
Installing rack 1.0.0
Rack's post install message
0: rack (1.0.0) from /home/travis/build/rubygems/bundler/tmp/1/bundled_app/.bundle/ruby/2.6.0/specifications/rack-1.0.0.gemspec
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Bundled gems are installed into `./.bundle`
Post-install message from rack:
Rack's post install message
# $? => 0
# ./spec/bundler/friendly_errors_spec.rb:27:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (2 levels) in <top (required)>'
# ./spec/spec_helper.rb:76:in `block (2 levels) in <top (required)>'
# ./spec/support/rubygems_ext.rb:98:in `load'
# ./spec/support/rubygems_ext.rb:98:in `gem_load_and_activate'
# ./spec/support/rubygems_ext.rb:45:in `gem_load'
```
My fix is to make this test independent from the specific rubygems
configuration in the main test process.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
7592: Fix running compact client updater spec in isolation r=deivid-rodriguez a=deivid-rodriguez
<!--
Thanks so much for the contribution!
If you're updating documentation, make sure you run `bin/rake man:build` and
squash the result into your changes, so that all documentation formats are
updated.
To make reviewing this PR a bit easier, please fill out answers to the following questions.
-->
### What was the end-user or developer problem that led to this PR?
The problem is the following error when running tests:
```
$ bin/rspec ./spec/bundler/compact_index_client/updater_spec.rb:47
Randomized with seed 40401
/home/deivid/.rbenv/versions/2.7.0/lib/ruby/2.7.0/tmpdir.rb:81: warning: method redefined; discarding old mktmpdir
/home/deivid/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_double.rb:63: warning: previous definition of mktmpdir was here
F
Retried examples: 0
Failures:
1) Bundler::CompactIndexClient::Updater when bundler doesn't have permissions on Dir.tmpdir Errno::EACCES is raised
Failure/Error:
expect do
updater.update(local_path, remote_path)
end.to raise_error(Bundler::PermissionError)
expected Bundler::PermissionError, got #<RSpec::Mocks::MockExpectationError: #<Double :fetcher> received unexpected message :call with (#<Double :remote_path>, {"Accept-Encoding"=>"gzip"})> with backtrace:
# ./spec/bundler/compact_index_client/updater_spec.rb:51:in `block (4 levels) in <top (required)>'
# ./spec/bundler/compact_index_client/updater_spec.rb:50:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (2 levels) in <top (required)>'
# ./spec/spec_helper.rb:76:in `block (2 levels) in <top (required)>'
# ./spec/support/rubygems_ext.rb:98:in `load'
# ./spec/support/rubygems_ext.rb:98:in `gem_load_and_activate'
# ./spec/support/rubygems_ext.rb:45:in `gem_load'
# ./spec/bundler/compact_index_client/updater_spec.rb:50:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (2 levels) in <top (required)>'
# ./spec/spec_helper.rb:76:in `block (2 levels) in <top (required)>'
# ./spec/support/rubygems_ext.rb:98:in `load'
# ./spec/support/rubygems_ext.rb:98:in `gem_load_and_activate'
# ./spec/support/rubygems_ext.rb:45:in `gem_load'
Finished in 0.24158 seconds (files took 0.21522 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/bundler/compact_index_client/updater_spec.rb:47 # Bundler::CompactIndexClient::Updater when bundler doesn't have permissions on Dir.tmpdir Errno::EACCES is raised
Randomized with seed 40401
```
### What is your fix for the problem, implemented in this PR?
My diagnosis was that it's the `Updater#initialize` method that requires `tmpdir` making `Dir.mktmpdir` available. In the offending spec, first we stub `Dir.mktmpdir`, and then we initialize the updater, requiring `tmpdir`, and "undoing the stub". That means the test no longer does what it's supposed to.
So, my fix is to early instantiate the update, so that by the time we stub `Dir.mktmpdir`, `tmpdir` has already been required, so the stub is not reverted.
Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In particular,
```
$ bin/rspec ./spec/bundler/compact_index_client/updater_spec.rb:47
Randomized with seed 40401
/home/deivid/.rbenv/versions/2.7.0/lib/ruby/2.7.0/tmpdir.rb:81: warning: method redefined; discarding old mktmpdir
/home/deivid/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_double.rb:63: warning: previous definition of mktmpdir was here
F
Retried examples: 0
Failures:
1) Bundler::CompactIndexClient::Updater when bundler doesn't have permissions on Dir.tmpdir Errno::EACCES is raised
Failure/Error:
expect do
updater.update(local_path, remote_path)
end.to raise_error(Bundler::PermissionError)
expected Bundler::PermissionError, got #<RSpec::Mocks::MockExpectationError: #<Double :fetcher> received unexpected message :call with (#<Double :remote_path>, {"Accept-Encoding"=>"gzip"})> with backtrace:
# ./spec/bundler/compact_index_client/updater_spec.rb:51:in `block (4 levels) in <top (required)>'
# ./spec/bundler/compact_index_client/updater_spec.rb:50:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (2 levels) in <top (required)>'
# ./spec/spec_helper.rb:76:in `block (2 levels) in <top (required)>'
# ./spec/support/rubygems_ext.rb:98:in `load'
# ./spec/support/rubygems_ext.rb:98:in `gem_load_and_activate'
# ./spec/support/rubygems_ext.rb:45:in `gem_load'
# ./spec/bundler/compact_index_client/updater_spec.rb:50:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (3 levels) in <top (required)>'
# ./spec/spec_helper.rb:109:in `block (2 levels) in <top (required)>'
# ./spec/spec_helper.rb:76:in `block (2 levels) in <top (required)>'
# ./spec/support/rubygems_ext.rb:98:in `load'
# ./spec/support/rubygems_ext.rb:98:in `gem_load_and_activate'
# ./spec/support/rubygems_ext.rb:45:in `gem_load'
Finished in 0.24158 seconds (files took 0.21522 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/bundler/compact_index_client/updater_spec.rb:47 # Bundler::CompactIndexClient::Updater when bundler doesn't have permissions on Dir.tmpdir Errno::EACCES is raised
Randomized with seed 40401
```
It's the `Updater#initialize` method that requires `tmpdir` making
`Dir.mktmpdir` available. In the offending spec, first we stub
`Dir.mktmpdir`, and then we initialize the updater, requiring `tmpdir`,
and "undoing the stub". That means the test no longer does what it's
supposed to.
So, my fix is to early instantiate the update, so that by the time we
stub `Dir.mktmpdir`, `tmpdir` has already been required, so the stub is
not reverted.
|
|\ \ \ \
| |_|_|/
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
7574: Improve PR template r=indirect a=deivid-rodriguez
### What was the end-user problem that led to this PR?
The problem was that the current PR template sometimes asks too many questions, and the answers are a bit artificial.
### What was your diagnosis of the problem?
My diagnosis was that experience tell me that some questions are too much, and a bit artificial to answer for many PRs.
### What is your fix for the problem, implemented in this PR?
My fix is to still let contributors know what kind of information we find valuable, but don't force all questions to be answered.
Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
So that the author gets the message, but it doesn't appear by default in
the PR's body.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In my experience, for most PRs it is enough to just explain the problem
and explain your fix, and most times it's a bit artificial to fill out
all 4 questions. So, I'm squashing them.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead of forcing fixed beginning of the answers, give some more
information on what's expected, but leave the section wording completely
up to the PR author.
|
| | | | |
|
|\ \ \ \
| |_|/ /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
7589: Add support for BUNDLER_ prefixed debug environment variables r=colby-swandale a=kou
DEBUG_RESOLVER is used in RubyGems too. So we can't enable it only for
Bundler.
### What was the end-user problem that led to this PR?
The problem was not the end-user problem. It's a developer problem.
### What was your diagnosis of the problem?
My diagnosis was RubyGems also uses `DEBUG_RESOLVER` environment variable. So we can't use `DEBUG_RESOLVER` environment variable to enable debug mode only for Bundler. We can use `DEBUG_RESOLVER_TREE` instead of `DEBUG_RESOLVER` only for `Bundler::Resolver`. But we can't do it for `Bundler::GemVersionPromoter`.
### What is your fix for the problem, implemented in this PR?
My fix adds `BUNDLER_` prefix to `DEBUG_RESOLVER` and `DEBUG_RESOLVER_TREE` like other environment variables for Bundler such as `BUNDLER_EDITOR` do.
### Why did you choose this fix out of the possible options?
I chose this fix because adding prefix is a common way. Bundlerd Molinillo and Thor also use this way such as `MOLINILLO_DEBUG` and `THOR_SHELL`.
Co-authored-by: Sutou Kouhei <kou@clear-code.com>
|
|/ / /
| | |
| | |
| | |
| | | |
DEBUG_RESOLVER is used in RubyGems too. So we can't enable it only for
Bundler.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
7577: Update references to old repo location r=deivid-rodriguez a=duckinator
Related: #7572.
### What was the end-user problem that led to this PR?
A lot of things use the outdated `https://github.com/bundler/bundler` URL (and similarly for e.g. `bundler/bundler-site`).
### What is your fix for the problem, implemented in this PR?
My fix was to update the outdated URLs. :slightly_smiling_face:
### TODO
- [x] `bundler.gemspec`
- [x] `CHANGELOG.md` (Moved to its own PR, #7582)
- [x] `CODE_OF_CONDUCT.md`
- [x] `doc/`, excluding reference to now-dead `pullreview.com`
- [x] `doc/contributing/HOW_YOU_CAN_HELP.md` reference to long-dead `pullreview.com`
- [x] `.github/config.yml`
- [x] `lib/` (comments)
- [ ] `lib/` (functional changes)
- [ ] `man/`
- [x] `README.md`
- [x] `spec/` (comments, `skip` messages)
- [ ] `spec/` (functional changes)
- [ ] `task/release.rake`
Co-authored-by: Ellen Marie Dash <me@duckie.co>
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
7584: Fix flaky test failure r=deivid-rodriguez a=deivid-rodriguez
### What was the end-user problem that led to this PR?
The problem was that sometimes a spec is failing on Windows because the rename syscall sometimes is raising Errno::EXDEV.
### What was your diagnosis of the problem?
I don't really know why this problem is happening.
### What is your fix for the problem, implemented in this PR?
My fix is to stop renaming the folder and copy it instead.
### Why did you choose this fix out of the possible options?
I chose this fix because copying will no longer make a rename syscall, so at least it should no longer fail in the same way.
Co-authored-by: David Rodríguez <deivid.rodriguez@riseup.net>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
I'm not really sure why, but the rename syscall sometimes is raising
Errno::EXDEV under Windows. I figure using a copy will fix the issue,
and it stills reproduces the regression the test is meant to check for.
|
|\ \ \ \ \
| |/ / / /
|/| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
7582: Update GitHub links in CHANGELOG.md r=deivid-rodriguez a=duckinator
Related: #7572 ("Update all references to old repo location to new one")
Follow-up for: #7577 ("Update references to old repo location")
This updates all the links in `CHANGELOG.md`. It's a large enough diff that I decided to make a separate PR for it, to avoid blocking #7577.
Command used to update the file:
sed -i 's|https://github.com/bundler/bundler|https://github.com/rubygems/bundler|' CHANGELOG.md
Co-authored-by: Ellen Marie Dash <me@duckie.co>
|
| |/ / / |
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
7559: Reactivate usused code for ruby version resolution r=deivid-rodriguez a=larskanis
The code was changed in commit 38b0e7ed64c3ca1c40f43c5aa9a1ead2f6cd7049 so that RubyVersion.system was no longer respected. This is reactivated now and specs are adjusted accordingly.
### What was the end-user problem that led to this PR?
Not known.
### What was your diagnosis of the problem?
I read the bundler source code and noticed this.
### What is your fix for the problem, implemented in this PR?
My fix re-adds the ruby version as it was before commit 38b0e7ed64c3ca1c40f43c5aa9a1ead2f6cd7049 , since it seems to be a mistake.
### Why did you choose this fix out of the possible options?
As a alternative I added #7558 that removes the code in question.
Co-authored-by: Lars Kanis <kanis@comcard.de>
|
| |/ / /
| | | |
| | | |
| | | |
| | | | |
The code was changed in commit 38b0e7ed64c3ca1c40f43c5aa9a1ead2f6cd7049 so that RubyVersion.system was no longer respected.
This is reactivated now and specs are adjusted accordingly.
|
|\ \ \ \
| |/ / /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
7578: Don't ignore resolved platform information r=deivid-rodriguez a=kou
This is a follow-up change of #7522.
### What was the end-user problem that led to this PR?
The problem was installing wrong platform gem even when resolver resolves the correct platform gem.
See also:
* https://github.com/rubygems/bundler/pull/7522#issuecomment-574628275
* https://github.com/rubygems/bundler/pull/7522#issuecomment-574882536
### What was your diagnosis of the problem?
My diagnosis was `Bundler::LazySpecification#__materialize__` doesn't care about the resolved platform information.
### What is your fix for the problem, implemented in this PR?
My fix cares about the resolved platform information.
### Why did you choose this fix out of the possible options?
I chose this fix because we should respect the resolved platform information to install correct gem.
Co-authored-by: Sutou Kouhei <kou@clear-code.com>
|
| | | |
| | | |
| | | | |
Co-Authored-By: David Rodríguez <deivid.rodriguez@riseup.net>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Because some examples are failed:
rspec ./spec/cache/gems_spec.rb:236 # bundle cache when previously cached doesn't remove gems that are for another platform
rspec ./spec/commands/install_spec.rb:220 # bundle install with gem sources the simple case with a gem that installs multiple platforms installs gems for the local platform as first choice
rspec ./spec/commands/update_spec.rb:39 # bundle update with --all updates the entire bundle
rspec ./spec/commands/update_spec.rb:49 # bundle update with --all doesn't delete the Gemfile.lock file if something goes wrong
rspec ./spec/commands/update_spec.rb:104 # bundle update with a top level dependency unlocks all child dependencies that are unrelated to other locked dependencies
rspec ./spec/commands/update_spec.rb:115 # bundle update with an unknown dependency should inform the user
rspec ./spec/commands/update_spec.rb:119 # bundle update with an unknown dependency should suggest alternatives
rspec ./spec/commands/update_spec.rb:126 # bundle update with a child dependency should update the child dependency
rspec ./spec/commands/update_spec.rb:299 # bundle update in a frozen bundle should suggest different command when frozen is set globally
rspec ./spec/runtime/platform_spec.rb:60 # Bundler.setup with multi platform stuff will add the resolve for the current platform
|
|/ / /
| | |
| | |
| | | |
This is a follow-up change of #7522.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
7522: Improve platform specific gem resolution r=deivid-rodriguez a=kou
### What was the end-user problem that led to this PR?
Platform specific gems aren't resolved when platform specific gems are conflicted.
For example, in the following situation, foo-1.0.0-x64-mingw32 that requires bar<1 is conflicted because there is no bar<1. Without this change, Bundler raises a conflict error. But users can use foo-1.0.0 (no x64-mingw32) in this situation. With this change, Bundler resolves to foo-1.0.0 (no x64-mingw32).
```ruby
@index = build_index do
gem "bar", "1.0.0"
gem "foo", "1.0.0"
gem "foo", "1.0.0", "x64-mingw32" do
dep "bar", "< 1"
end
end
dep "foo"
platforms "x64-mingw32"
````
See also #6247. This change includes the specs that were added in #6247.
### What was your diagnosis of the problem?
Not platform specific gem (foo-1.0.0 in the above case) isn't tried to be resolved when platform specific gem (foo-1.0.0-x64-mingw32 in the above case) is available.
### What is your fix for the problem, implemented in this PR?
In this PR, not platform specific gem (foo-1.0.0 in the above case) is also tried to be resolved even when platform specific gem (foo-1.0.0-x64-mingw32 in the above case) is available. Priority is "platform specific gem" -> "not platform specific gem". So platform specific gem is usable, platform specific gem is used. Not platform specific gem is used as fallback.
`search_for` represents this. Here is the `search_for` specification:
https://github.com/bundler/bundler/blob/master/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb#L11-L13
> Search for the specifications that match the given dependency. The specifications in the returned array will be considered in reverse order, so the latest version ought to be last.
## Why did you choose this fix out of the possible options?
I choose this fix because this is based on Molinillo's specification.
Co-authored-by: Lars Kanis <lars@greiz-reinsdorf.de>
Co-authored-by: Samuel Giddins <segiddins@segiddins.me>
Co-authored-by: Sutou Kouhei <kou@clear-code.com>
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|