rubygems-update 3.4.7 → 3.4.9
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 +57 -0
- data/Manifest.txt +4 -0
- data/POLICIES.md +5 -5
- data/README.md +17 -4
- data/bundler/CHANGELOG.md +48 -0
- data/bundler/README.md +1 -4
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/endpoint_specification.rb +0 -4
- data/bundler/lib/bundler/environment_preserver.rb +2 -2
- data/bundler/lib/bundler/fetcher/dependency.rb +1 -5
- data/bundler/lib/bundler/fetcher.rb +2 -2
- data/bundler/lib/bundler/incomplete_specification.rb +24 -0
- data/bundler/lib/bundler/index.rb +2 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/installer/parallel_installer.rb +1 -14
- data/bundler/lib/bundler/lazy_specification.rb +4 -8
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +11 -11
- data/bundler/lib/bundler/plugin.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +2 -6
- data/bundler/lib/bundler/resolver/base.rb +5 -3
- data/bundler/lib/bundler/resolver.rb +6 -9
- data/bundler/lib/bundler/rubygems_integration.rb +1 -1
- data/bundler/lib/bundler/settings.rb +1 -1
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +1 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +21 -4
- data/bundler/lib/bundler/source/git.rb +2 -1
- data/bundler/lib/bundler/source/path.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +1 -2
- data/bundler/lib/bundler/spec_set.rb +19 -12
- data/bundler/lib/bundler/templates/Executable.bundler +1 -1
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +0 -5
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +11 -9
- data/lib/rubygems/bundler_version_finder.rb +1 -1
- data/lib/rubygems/command.rb +10 -6
- data/lib/rubygems/command_manager.rb +1 -0
- data/lib/rubygems/commands/exec_command.rb +248 -0
- data/lib/rubygems/commands/help_command.rb +3 -3
- data/lib/rubygems/commands/pristine_command.rb +9 -0
- data/lib/rubygems/commands/uninstall_command.rb +3 -0
- data/lib/rubygems/core_ext/kernel_require.rb +0 -10
- data/lib/rubygems/defaults.rb +2 -2
- data/lib/rubygems/dependency.rb +1 -1
- data/lib/rubygems/ext/builder.rb +17 -0
- data/lib/rubygems/ext/ext_conf_builder.rb +1 -2
- data/lib/rubygems/ext/rake_builder.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +1 -1
- data/lib/rubygems/package/tar_reader/entry.rb +82 -3
- data/lib/rubygems/package/tar_reader.rb +0 -28
- data/lib/rubygems/platform.rb +2 -2
- data/lib/rubygems/request_set/gem_dependency_api.rb +0 -1
- data/lib/rubygems/requirement.rb +1 -1
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/source/git.rb +1 -1
- data/lib/rubygems/specification.rb +9 -1
- data/lib/rubygems/stub_specification.rb +7 -7
- data/lib/rubygems/text.rb +1 -1
- data/lib/rubygems/util/licenses.rb +2 -2
- data/lib/rubygems/version.rb +2 -2
- data/lib/rubygems.rb +3 -3
- data/rubygems-update.gemspec +1 -1
- data/test/rubygems/helper.rb +2 -3
- data/test/rubygems/package/tar_test_case.rb +50 -15
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/test_gem.rb +29 -0
- data/test/rubygems/test_gem_bundler_version_finder.rb +2 -2
- data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
- data/test/rubygems/test_gem_commands_install_command.rb +1 -1
- data/test/rubygems/test_gem_commands_pristine_command.rb +48 -0
- data/test/rubygems/test_gem_commands_setup_command.rb +1 -1
- data/test/rubygems/test_gem_commands_uninstall_command.rb +31 -14
- data/test/rubygems/test_gem_ext_builder.rb +3 -5
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +20 -6
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_gem_runner.rb +6 -1
- data/test/rubygems/test_gem_package.rb +0 -25
- data/test/rubygems/test_gem_package_tar_reader.rb +48 -1
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +102 -15
- data/test/rubygems/test_gem_remote_fetcher.rb +1 -1
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +10 -10
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +2 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +9 -9
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
- data/test/rubygems/test_gem_source.rb +1 -1
- data/test/rubygems/test_gem_source_git.rb +13 -12
- data/test/rubygems/test_gem_source_installed.rb +1 -1
- data/test/rubygems/test_gem_source_lock.rb +3 -3
- data/test/rubygems/test_gem_source_vendor.rb +1 -1
- data/test/rubygems/test_gem_specification.rb +19 -2
- data/test/rubygems/test_gem_version.rb +2 -2
- data/test/rubygems/test_kernel.rb +0 -8
- metadata +7 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a0ce67a665c26fdc475dafc0858072799332dc0b01b57143bd46a25bd3d07c8d
|
|
4
|
+
data.tar.gz: 88d69d29ecde40e8ca5112f6ee1d706a66c7819842902a0515b322eeff6187f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fd112dabe5437ac6a58a3bbcb73bd08bbc4061cce3c9e2923fead4816bdf956eb6ce4315fb16d40fc78179939bdb516c748fdb0a7a09debad2f520599968f137
|
|
7
|
+
data.tar.gz: 1a2ec92153d67b8d8deb53ead80c6ab7652d709cceb4ffe9d97528f1adcd0be95892e90a573a6ff305b82b5fd1ead9c48223bce93bf6d6bfe960c1bd71478629
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,60 @@
|
|
|
1
|
+
# 3.4.9 / 2023-03-20
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
* Improve `TarHeader#calculate_checksum` speed and readability. Pull
|
|
6
|
+
request [#6476](https://github.com/rubygems/rubygems/pull/6476) by
|
|
7
|
+
Maumagnaguagno
|
|
8
|
+
* Added only missing extensions option into pristine command. Pull request
|
|
9
|
+
[#6446](https://github.com/rubygems/rubygems/pull/6446) by hsbt
|
|
10
|
+
* Installs bundler 2.4.9 as a default gem.
|
|
11
|
+
|
|
12
|
+
## Bug fixes:
|
|
13
|
+
|
|
14
|
+
* Fix `$LOAD_PATH` in rake and ext_conf builder. Pull request
|
|
15
|
+
[#6490](https://github.com/rubygems/rubygems/pull/6490) by ntkme
|
|
16
|
+
* Fix `gem uninstall` with `--install-dir`. Pull request
|
|
17
|
+
[#6481](https://github.com/rubygems/rubygems/pull/6481) by
|
|
18
|
+
deivid-rodriguez
|
|
19
|
+
|
|
20
|
+
## Documentation:
|
|
21
|
+
|
|
22
|
+
* Document our current release policy. Pull request
|
|
23
|
+
[#6450](https://github.com/rubygems/rubygems/pull/6450) by
|
|
24
|
+
deivid-rodriguez
|
|
25
|
+
|
|
26
|
+
# 3.4.8 / 2023-03-08
|
|
27
|
+
|
|
28
|
+
## Enhancements:
|
|
29
|
+
|
|
30
|
+
* Add TarReader::Entry#seek to seek within the tar file entry. Pull
|
|
31
|
+
request [#6390](https://github.com/rubygems/rubygems/pull/6390) by
|
|
32
|
+
martinemde
|
|
33
|
+
* Avoid calling String#dup in Gem::Version#marshal_dump. Pull request
|
|
34
|
+
[#6438](https://github.com/rubygems/rubygems/pull/6438) by segiddins
|
|
35
|
+
* Remove hardcoded "master" branch references. Pull request
|
|
36
|
+
[#6425](https://github.com/rubygems/rubygems/pull/6425) by
|
|
37
|
+
deivid-rodriguez
|
|
38
|
+
* [Experimental] Add `gem exec` command to run executables from gems that
|
|
39
|
+
may or may not be installed. Pull request
|
|
40
|
+
[#6309](https://github.com/rubygems/rubygems/pull/6309) by segiddins
|
|
41
|
+
* Installs bundler 2.4.8 as a default gem.
|
|
42
|
+
|
|
43
|
+
## Bug fixes:
|
|
44
|
+
|
|
45
|
+
* Fix installation error of same version of default gems with local
|
|
46
|
+
installation. Pull request
|
|
47
|
+
[#6430](https://github.com/rubygems/rubygems/pull/6430) by hsbt
|
|
48
|
+
* Use proper memoized var name for Gem.state_home. Pull request
|
|
49
|
+
[#6420](https://github.com/rubygems/rubygems/pull/6420) by simi
|
|
50
|
+
|
|
51
|
+
## Documentation:
|
|
52
|
+
|
|
53
|
+
* Switch supporting explanations to all Ruby Central. Pull request
|
|
54
|
+
[#6419](https://github.com/rubygems/rubygems/pull/6419) by indirect
|
|
55
|
+
* Update the link to OpenSource.org. Pull request
|
|
56
|
+
[#6392](https://github.com/rubygems/rubygems/pull/6392) by nobu
|
|
57
|
+
|
|
1
58
|
# 3.4.7 / 2023-02-15
|
|
2
59
|
|
|
3
60
|
## Enhancements:
|
data/Manifest.txt
CHANGED
|
@@ -80,6 +80,7 @@ bundler/lib/bundler/gem_helpers.rb
|
|
|
80
80
|
bundler/lib/bundler/gem_tasks.rb
|
|
81
81
|
bundler/lib/bundler/gem_version_promoter.rb
|
|
82
82
|
bundler/lib/bundler/graph.rb
|
|
83
|
+
bundler/lib/bundler/incomplete_specification.rb
|
|
83
84
|
bundler/lib/bundler/index.rb
|
|
84
85
|
bundler/lib/bundler/injector.rb
|
|
85
86
|
bundler/lib/bundler/inline.rb
|
|
@@ -243,6 +244,7 @@ bundler/lib/bundler/ui/rg_proxy.rb
|
|
|
243
244
|
bundler/lib/bundler/ui/shell.rb
|
|
244
245
|
bundler/lib/bundler/ui/silent.rb
|
|
245
246
|
bundler/lib/bundler/uri_credentials_filter.rb
|
|
247
|
+
bundler/lib/bundler/uri_normalizer.rb
|
|
246
248
|
bundler/lib/bundler/vendor/.document
|
|
247
249
|
bundler/lib/bundler/vendor/connection_pool/LICENSE
|
|
248
250
|
bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
|
|
@@ -347,6 +349,7 @@ lib/rubygems/commands/cleanup_command.rb
|
|
|
347
349
|
lib/rubygems/commands/contents_command.rb
|
|
348
350
|
lib/rubygems/commands/dependency_command.rb
|
|
349
351
|
lib/rubygems/commands/environment_command.rb
|
|
352
|
+
lib/rubygems/commands/exec_command.rb
|
|
350
353
|
lib/rubygems/commands/fetch_command.rb
|
|
351
354
|
lib/rubygems/commands/generate_index_command.rb
|
|
352
355
|
lib/rubygems/commands/help_command.rb
|
|
@@ -616,6 +619,7 @@ test/rubygems/test_gem_commands_cleanup_command.rb
|
|
|
616
619
|
test/rubygems/test_gem_commands_contents_command.rb
|
|
617
620
|
test/rubygems/test_gem_commands_dependency_command.rb
|
|
618
621
|
test/rubygems/test_gem_commands_environment_command.rb
|
|
622
|
+
test/rubygems/test_gem_commands_exec_command.rb
|
|
619
623
|
test/rubygems/test_gem_commands_fetch_command.rb
|
|
620
624
|
test/rubygems/test_gem_commands_generate_index_command.rb
|
|
621
625
|
test/rubygems/test_gem_commands_help_command.rb
|
data/POLICIES.md
CHANGED
|
@@ -128,8 +128,8 @@ permissions compromised or exposed.
|
|
|
128
128
|
|
|
129
129
|
## Changing These Policies
|
|
130
130
|
|
|
131
|
-
These policies were set in order to reduce the burden of maintenance and to
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
support. By joining [Ruby
|
|
135
|
-
extend support for older RubyGems versions.
|
|
131
|
+
These policies were set in order to reduce the burden of maintenance and to keep
|
|
132
|
+
committers current with existing development and policies. RubyGems work is
|
|
133
|
+
primarily volunteer-driven which limits the ability to provide long-term
|
|
134
|
+
support. By joining [Ruby Central](https://rubycentral.org/#/portal/signup) you
|
|
135
|
+
can help extend support for older RubyGems versions.
|
data/README.md
CHANGED
|
@@ -64,6 +64,22 @@ To upgrade to the latest RubyGems, run:
|
|
|
64
64
|
|
|
65
65
|
See [UPGRADING](UPGRADING.md) for more details and alternative instructions.
|
|
66
66
|
|
|
67
|
+
## Release policy
|
|
68
|
+
|
|
69
|
+
RubyGems and Bundler are released in sync, although they do not share their
|
|
70
|
+
major version number. It is planned that also their major version numbers will
|
|
71
|
+
be sync'ed in the future.
|
|
72
|
+
|
|
73
|
+
The release policy is somewhat similar to the release policy of Ruby itself:
|
|
74
|
+
|
|
75
|
+
* Frequent patch releases (every 2-4 weeks) including bug fixes, minor
|
|
76
|
+
enhancements, small features, or even medium sized features declared as
|
|
77
|
+
experimental for battle testing.
|
|
78
|
+
* Yearly minor releases including bigger features, and minor breaking changes
|
|
79
|
+
(affecting only edge cases and a very small set of users).
|
|
80
|
+
* Occasional major releases (replacing yearly minors) including major breaking
|
|
81
|
+
changes.
|
|
82
|
+
|
|
67
83
|
## Documentation
|
|
68
84
|
|
|
69
85
|
RubyGems uses [rdoc](https://github.com/rdoc/rdoc) for documentation. A compiled set of the docs
|
|
@@ -87,15 +103,12 @@ See https://bundler.io/compatibility for known issues.
|
|
|
87
103
|
|
|
88
104
|
### Supporting
|
|
89
105
|
|
|
90
|
-
|
|
91
|
-
<a href="https://rubytogether.org/">Ruby Together</a> pays some RubyGems maintainers for their ongoing work. As a grassroots initiative committed to supporting the critical Ruby infrastructure you rely on, Ruby Together is funded entirely by the Ruby community. Contribute today <a href="https://rubytogether.org/developers">as an individual</a> or even better, <a href="https://rubytogether.org/companies">as a company</a>, and ensure that RubyGems, Bundler, and other shared tooling is around for years to come.
|
|
106
|
+
RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit organization that supports the Ruby community through projects like this one, as well as [RubyConf](https://rubyconf.org), [RailsConf](https://railsconf.org), and [RubyGems.org](https://rubygems.org). You can support Ruby Central by attending or [sponsoring](sponsors@rubycentral.org) a conference, or by [joining as a supporting member](https://rubycentral.org/#/portal/signup).
|
|
92
107
|
|
|
93
108
|
### Contributing
|
|
94
109
|
|
|
95
110
|
If you'd like to contribute to RubyGems, that's awesome, and we <3 you. Check out our [guide to contributing](CONTRIBUTING.md) for more information.
|
|
96
111
|
|
|
97
|
-
While some RubyGems contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author’s affiliation with Ruby Together.
|
|
98
|
-
|
|
99
112
|
### Code of Conduct
|
|
100
113
|
|
|
101
114
|
Everyone interacting in the RubyGems project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [contributor code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md).
|
data/bundler/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,51 @@
|
|
|
1
|
+
# 2.4.9 (March 20, 2023)
|
|
2
|
+
|
|
3
|
+
## Security:
|
|
4
|
+
|
|
5
|
+
- Don't recommend `--full-index` on errors [#6493](https://github.com/rubygems/rubygems/pull/6493)
|
|
6
|
+
|
|
7
|
+
## Enhancements:
|
|
8
|
+
|
|
9
|
+
- Fix duplicated specs in some error messages [#6475](https://github.com/rubygems/rubygems/pull/6475)
|
|
10
|
+
- When running `bundle lock --update <name>`, checkout locked revision of unrelated git sources directly [#6459](https://github.com/rubygems/rubygems/pull/6459)
|
|
11
|
+
- Avoid expiring git sources when unnecessary [#6458](https://github.com/rubygems/rubygems/pull/6458)
|
|
12
|
+
- Use `RbSys::ExtensionTask` when creating new rust gems [#6352](https://github.com/rubygems/rubygems/pull/6352)
|
|
13
|
+
- Don't ignore pre-releases when there's only one candidate [#6441](https://github.com/rubygems/rubygems/pull/6441)
|
|
14
|
+
|
|
15
|
+
## Bug fixes:
|
|
16
|
+
|
|
17
|
+
- Fix incorrect removal of ruby platform when auto-healing corrupted lockfiles [#6495](https://github.com/rubygems/rubygems/pull/6495)
|
|
18
|
+
- Don't consider platform specific candidates when `force_ruby_platform` set [#6442](https://github.com/rubygems/rubygems/pull/6442)
|
|
19
|
+
- Better deal with circular dependencies [#6330](https://github.com/rubygems/rubygems/pull/6330)
|
|
20
|
+
|
|
21
|
+
## Documentation:
|
|
22
|
+
|
|
23
|
+
- Add debugging docs [#6387](https://github.com/rubygems/rubygems/pull/6387)
|
|
24
|
+
- Document our current release policy [#6450](https://github.com/rubygems/rubygems/pull/6450)
|
|
25
|
+
|
|
26
|
+
# 2.4.8 (March 8, 2023)
|
|
27
|
+
|
|
28
|
+
## Security:
|
|
29
|
+
|
|
30
|
+
- Safe load all marshaled data [#6384](https://github.com/rubygems/rubygems/pull/6384)
|
|
31
|
+
|
|
32
|
+
## Enhancements:
|
|
33
|
+
|
|
34
|
+
- Better suggestion when `bundler/setup` fails due to missing gems and Gemfile is not the default [#6428](https://github.com/rubygems/rubygems/pull/6428)
|
|
35
|
+
- Simplify the gem package file filter in the gemspec template [#6344](https://github.com/rubygems/rubygems/pull/6344)
|
|
36
|
+
- Auto-heal corrupted `Gemfile.lock` with no specs [#6423](https://github.com/rubygems/rubygems/pull/6423)
|
|
37
|
+
- Auto-heal on corrupted lockfile with missing deps [#6400](https://github.com/rubygems/rubygems/pull/6400)
|
|
38
|
+
- Give a better message when Gemfile branch does not exist [#6383](https://github.com/rubygems/rubygems/pull/6383)
|
|
39
|
+
|
|
40
|
+
## Bug fixes:
|
|
41
|
+
|
|
42
|
+
- Respect --no-install option for git: sources [#6088](https://github.com/rubygems/rubygems/pull/6088)
|
|
43
|
+
- Fix `gems.rb` lockfile for bundler version lookup in template [#6413](https://github.com/rubygems/rubygems/pull/6413)
|
|
44
|
+
|
|
45
|
+
## Documentation:
|
|
46
|
+
|
|
47
|
+
- Switch supporting explanations to all Ruby Central [#6419](https://github.com/rubygems/rubygems/pull/6419)
|
|
48
|
+
|
|
1
49
|
# 2.4.7 (February 15, 2023)
|
|
2
50
|
|
|
3
51
|
## Enhancements:
|
data/bundler/README.md
CHANGED
|
@@ -46,12 +46,9 @@ If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put
|
|
|
46
46
|
|
|
47
47
|
If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/rubygems/rfcs) for more information.
|
|
48
48
|
|
|
49
|
-
While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author's affiliation with Ruby Together.
|
|
50
|
-
|
|
51
49
|
### Supporting
|
|
52
50
|
|
|
53
|
-
|
|
54
|
-
<a href="https://rubytogether.org/">Ruby Together</a> pays some Bundler maintainers for their ongoing work. As a grassroots initiative committed to supporting the critical Ruby infrastructure you rely on, Ruby Together is funded entirely by the Ruby community. Contribute today <a href="https://rubytogether.org/developers">as an individual</a> or (better yet) <a href="https://rubytogether.org/companies">as a company</a> to ensure that Bundler, RubyGems, and other shared tooling is around for years to come.
|
|
51
|
+
RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit organization that supports the Ruby community through projects like this one, as well as [RubyConf](https://rubyconf.org), [RailsConf](https://railsconf.org), and [RubyGems.org](https://rubygems.org). You can support Ruby Central by attending or [sponsoring](sponsors@rubycentral.org) a conference, or by [joining as a supporting member](https://rubycentral.org/#/portal/signup).
|
|
55
52
|
|
|
56
53
|
### Code of Conduct
|
|
57
54
|
|
|
@@ -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 = "2023-
|
|
8
|
-
@git_commit_sha = "
|
|
7
|
+
@built_at = "2023-03-20".freeze
|
|
8
|
+
@git_commit_sha = "6f8e92bcc6".freeze
|
|
9
9
|
@release = true
|
|
10
10
|
# end ivars
|
|
11
11
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module Bundler
|
|
4
4
|
class EnvironmentPreserver
|
|
5
|
-
INTENTIONALLY_NIL = "BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL"
|
|
5
|
+
INTENTIONALLY_NIL = "BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL"
|
|
6
6
|
BUNDLER_KEYS = %w[
|
|
7
7
|
BUNDLE_BIN_PATH
|
|
8
8
|
BUNDLE_GEMFILE
|
|
@@ -16,7 +16,7 @@ module Bundler
|
|
|
16
16
|
RUBYLIB
|
|
17
17
|
RUBYOPT
|
|
18
18
|
].map(&:freeze).freeze
|
|
19
|
-
BUNDLER_PREFIX = "BUNDLER_ORIG_"
|
|
19
|
+
BUNDLER_PREFIX = "BUNDLER_ORIG_"
|
|
20
20
|
|
|
21
21
|
def self.from_env
|
|
22
22
|
new(env_to_hash(ENV), BUNDLER_KEYS)
|
|
@@ -34,14 +34,10 @@ module Bundler
|
|
|
34
34
|
|
|
35
35
|
returned_gems = spec_list.map(&:first).uniq
|
|
36
36
|
specs(deps_list, full_dependency_list + returned_gems, spec_list + last_spec_list)
|
|
37
|
-
rescue MarshalError
|
|
37
|
+
rescue MarshalError, HTTPError, GemspecError
|
|
38
38
|
Bundler.ui.info "" unless Bundler.ui.debug? # new line now that the dots are over
|
|
39
39
|
Bundler.ui.debug "could not fetch from the dependency API, trying the full index"
|
|
40
40
|
nil
|
|
41
|
-
rescue HTTPError, GemspecError
|
|
42
|
-
Bundler.ui.info "" unless Bundler.ui.debug? # new line now that the dots are over
|
|
43
|
-
Bundler.ui.debug "could not fetch from the dependency API\nit's suggested to retry using the full index via `bundle install --full-index`"
|
|
44
|
-
nil
|
|
45
41
|
end
|
|
46
42
|
|
|
47
43
|
def dependency_specs(gem_names)
|
|
@@ -102,11 +102,11 @@ module Bundler
|
|
|
102
102
|
uri = Bundler::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
|
|
103
103
|
if uri.scheme == "file"
|
|
104
104
|
path = Bundler.rubygems.correct_for_windows_path(uri.path)
|
|
105
|
-
Bundler.
|
|
105
|
+
Bundler.safe_load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
|
|
106
106
|
elsif cached_spec_path = gemspec_cached_path(spec_file_name)
|
|
107
107
|
Bundler.load_gemspec(cached_spec_path)
|
|
108
108
|
else
|
|
109
|
-
Bundler.
|
|
109
|
+
Bundler.safe_load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
|
|
110
110
|
end
|
|
111
111
|
rescue MarshalError
|
|
112
112
|
raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bundler
|
|
4
|
+
#
|
|
5
|
+
# Represents a package name that was found to be incomplete when trying to
|
|
6
|
+
# materialize a fresh resolution or the lockfile.
|
|
7
|
+
#
|
|
8
|
+
# Holds the actual partially complete set of specifications for the name.
|
|
9
|
+
# These are used so that they can be unlocked in a future resolution, and fix
|
|
10
|
+
# the situation.
|
|
11
|
+
#
|
|
12
|
+
class IncompleteSpecification
|
|
13
|
+
attr_reader :name, :partially_complete_specs
|
|
14
|
+
|
|
15
|
+
def initialize(name, partially_complete_specs = [])
|
|
16
|
+
@name = name
|
|
17
|
+
@partially_complete_specs = partially_complete_specs
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def ==(other)
|
|
21
|
+
partially_complete_specs == other.partially_complete_specs
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -47,13 +47,6 @@ module Bundler
|
|
|
47
47
|
dependencies.all? {|d| installed_specs.include? d.name }
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
# Check whether spec's dependencies are missing, which can indicate a
|
|
51
|
-
# corrupted lockfile
|
|
52
|
-
def dependencies_missing?(all_specs)
|
|
53
|
-
spec_names = all_specs.map(&:name)
|
|
54
|
-
dependencies.any? {|d| !spec_names.include? d.name }
|
|
55
|
-
end
|
|
56
|
-
|
|
57
50
|
# Represents only the non-development dependencies, the ones that are
|
|
58
51
|
# itself and are in the total list.
|
|
59
52
|
def dependencies
|
|
@@ -123,11 +116,7 @@ module Bundler
|
|
|
123
116
|
unmet_dependencies.each do |spec, unmet_spec_dependencies|
|
|
124
117
|
unmet_spec_dependencies.each do |unmet_spec_dependency|
|
|
125
118
|
found = @specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) }
|
|
126
|
-
|
|
127
|
-
warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name}, unsatisfied by #{found.full_name}"
|
|
128
|
-
else
|
|
129
|
-
warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name} but missing from lockfile"
|
|
130
|
-
end
|
|
119
|
+
warning << "* #{unmet_spec_dependency}, dependency of #{spec.full_name}, unsatisfied by #{found.full_name}"
|
|
131
120
|
end
|
|
132
121
|
end
|
|
133
122
|
|
|
@@ -224,8 +213,6 @@ module Bundler
|
|
|
224
213
|
if spec.dependencies_installed? @specs
|
|
225
214
|
spec.state = :enqueued
|
|
226
215
|
worker_pool.enq spec
|
|
227
|
-
elsif spec.dependencies_missing? @specs
|
|
228
|
-
spec.state = :failed
|
|
229
216
|
end
|
|
230
217
|
end
|
|
231
218
|
end
|
|
@@ -20,7 +20,7 @@ module Bundler
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def full_name
|
|
23
|
-
if platform == Gem::Platform::RUBY
|
|
23
|
+
@full_name ||= if platform == Gem::Platform::RUBY
|
|
24
24
|
"#{@name}-#{@version}"
|
|
25
25
|
else
|
|
26
26
|
"#{@name}-#{@version}-#{platform}"
|
|
@@ -28,15 +28,15 @@ module Bundler
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def ==(other)
|
|
31
|
-
|
|
31
|
+
full_name == other.full_name
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def eql?(other)
|
|
35
|
-
|
|
35
|
+
full_name.eql?(other.full_name)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def hash
|
|
39
|
-
|
|
39
|
+
full_name.hash
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
##
|
|
@@ -129,10 +129,6 @@ module Bundler
|
|
|
129
129
|
end
|
|
130
130
|
end
|
|
131
131
|
|
|
132
|
-
def identifier
|
|
133
|
-
@__identifier ||= [name, version, platform.to_s]
|
|
134
|
-
end
|
|
135
|
-
|
|
136
132
|
def git_version
|
|
137
133
|
return unless source.is_a?(Bundler::Source::Git)
|
|
138
134
|
" #{source.revision[0..6]}"
|
|
@@ -4,15 +4,15 @@ module Bundler
|
|
|
4
4
|
class LockfileParser
|
|
5
5
|
attr_reader :sources, :dependencies, :specs, :platforms, :bundler_version, :ruby_version
|
|
6
6
|
|
|
7
|
-
BUNDLED = "BUNDLED WITH"
|
|
8
|
-
DEPENDENCIES = "DEPENDENCIES"
|
|
9
|
-
PLATFORMS = "PLATFORMS"
|
|
10
|
-
RUBY = "RUBY VERSION"
|
|
11
|
-
GIT = "GIT"
|
|
12
|
-
GEM = "GEM"
|
|
13
|
-
PATH = "PATH"
|
|
14
|
-
PLUGIN = "PLUGIN SOURCE"
|
|
15
|
-
SPECS = " specs:"
|
|
7
|
+
BUNDLED = "BUNDLED WITH"
|
|
8
|
+
DEPENDENCIES = "DEPENDENCIES"
|
|
9
|
+
PLATFORMS = "PLATFORMS"
|
|
10
|
+
RUBY = "RUBY VERSION"
|
|
11
|
+
GIT = "GIT"
|
|
12
|
+
GEM = "GEM"
|
|
13
|
+
PATH = "PATH"
|
|
14
|
+
PLUGIN = "PLUGIN SOURCE"
|
|
15
|
+
SPECS = " specs:"
|
|
16
16
|
OPTIONS = /^ ([a-z]+): (.*)$/i.freeze
|
|
17
17
|
SOURCE = [GIT, GEM, PATH, PLUGIN].freeze
|
|
18
18
|
|
|
@@ -86,7 +86,7 @@ module Bundler
|
|
|
86
86
|
send("parse_#{@state}", line)
|
|
87
87
|
end
|
|
88
88
|
end
|
|
89
|
-
@specs = @specs.values.sort_by(&:
|
|
89
|
+
@specs = @specs.values.sort_by(&:full_name)
|
|
90
90
|
rescue ArgumentError => e
|
|
91
91
|
Bundler.ui.debug(e)
|
|
92
92
|
raise LockfileError, "Your lockfile is unreadable. Run `rm #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}` " \
|
|
@@ -199,7 +199,7 @@ module Bundler
|
|
|
199
199
|
@current_spec.source = @current_source
|
|
200
200
|
@current_source.add_dependency_names(name)
|
|
201
201
|
|
|
202
|
-
@specs[@current_spec.
|
|
202
|
+
@specs[@current_spec.full_name] = @current_spec
|
|
203
203
|
elsif spaces.size == 6
|
|
204
204
|
version = version.split(",").map(&:strip) if version
|
|
205
205
|
dep = Gem::Dependency.new(name, version)
|
|
@@ -29,12 +29,8 @@ module Bundler
|
|
|
29
29
|
@platform = _remote_specification.platform
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
def identifier
|
|
33
|
-
@__identifier ||= [name, version, @platform.to_s]
|
|
34
|
-
end
|
|
35
|
-
|
|
36
32
|
def full_name
|
|
37
|
-
if @platform == Gem::Platform::RUBY
|
|
33
|
+
@full_name ||= if @platform == Gem::Platform::RUBY
|
|
38
34
|
"#{@name}-#{@version}"
|
|
39
35
|
else
|
|
40
36
|
"#{@name}-#{@version}-#{@platform}"
|
|
@@ -106,7 +102,7 @@ module Bundler
|
|
|
106
102
|
def _remote_specification
|
|
107
103
|
@_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @original_platform])
|
|
108
104
|
@_remote_specification || raise(GemspecError, "Gemspec data for #{full_name} was" \
|
|
109
|
-
" missing from the server!
|
|
105
|
+
" missing from the server!")
|
|
110
106
|
end
|
|
111
107
|
|
|
112
108
|
def method_missing(method, *args, &blk)
|
|
@@ -34,9 +34,11 @@ module Bundler
|
|
|
34
34
|
@base[name]
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def delete(
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
def delete(incomplete_specs)
|
|
38
|
+
incomplete_specs.each do |incomplete_spec|
|
|
39
|
+
incomplete_spec.partially_complete_specs.each do |spec|
|
|
40
|
+
@base.delete(spec)
|
|
41
|
+
end
|
|
40
42
|
end
|
|
41
43
|
end
|
|
42
44
|
|
|
@@ -37,7 +37,9 @@ module Bundler
|
|
|
37
37
|
root_version = Resolver::Candidate.new(0)
|
|
38
38
|
|
|
39
39
|
@all_specs = Hash.new do |specs, name|
|
|
40
|
-
specs[name] = source_for(name).specs.search(name).
|
|
40
|
+
specs[name] = source_for(name).specs.search(name).reject do |s|
|
|
41
|
+
s.dependencies.any? {|d| d.name == name && !d.requirement.satisfied_by?(s.version) } # ignore versions that depend on themselves incorrectly
|
|
42
|
+
end.sort_by {|s| [s.version, s.platform.to_s] }
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
@sorted_versions = Hash.new do |candidates, package|
|
|
@@ -55,7 +57,7 @@ module Bundler
|
|
|
55
57
|
{ root_version => root_dependencies }
|
|
56
58
|
else
|
|
57
59
|
Hash.new do |versions, version|
|
|
58
|
-
versions[version] = to_dependency_hash(version.dependencies, @packages)
|
|
60
|
+
versions[version] = to_dependency_hash(version.dependencies.reject {|d| d.name == package.name }, @packages)
|
|
59
61
|
end
|
|
60
62
|
end
|
|
61
63
|
end
|
|
@@ -186,11 +188,6 @@ module Bundler
|
|
|
186
188
|
package_deps = @cached_dependencies[package]
|
|
187
189
|
sorted_versions = @sorted_versions[package]
|
|
188
190
|
package_deps[version].map do |dep_package, dep_constraint|
|
|
189
|
-
if package == dep_package
|
|
190
|
-
cause = PubGrub::Incompatibility::CircularDependency.new(dep_package, dep_constraint.constraint_string)
|
|
191
|
-
return [PubGrub::Incompatibility.new([PubGrub::Term.new(dep_constraint, true)], :cause => cause)]
|
|
192
|
-
end
|
|
193
|
-
|
|
194
191
|
low = high = sorted_versions.index(version)
|
|
195
192
|
|
|
196
193
|
# find version low such that all >= low share the same dep
|
|
@@ -243,7 +240,7 @@ module Bundler
|
|
|
243
240
|
ruby_specs = select_best_platform_match(specs, Gem::Platform::RUBY)
|
|
244
241
|
groups << Resolver::Candidate.new(version, :specs => ruby_specs) if ruby_specs.any?
|
|
245
242
|
|
|
246
|
-
next groups if platform_specs == ruby_specs
|
|
243
|
+
next groups if platform_specs == ruby_specs || package.force_ruby_platform?
|
|
247
244
|
|
|
248
245
|
groups << Resolver::Candidate.new(version, :specs => platform_specs)
|
|
249
246
|
|
|
@@ -302,7 +299,7 @@ module Bundler
|
|
|
302
299
|
end
|
|
303
300
|
|
|
304
301
|
def filter_prereleases(specs, package)
|
|
305
|
-
return specs unless package.ignores_prereleases?
|
|
302
|
+
return specs unless package.ignores_prereleases? && specs.size > 1
|
|
306
303
|
|
|
307
304
|
specs.reject {|s| s.version.prerelease? }
|
|
308
305
|
end
|
|
@@ -453,7 +453,7 @@ module Bundler
|
|
|
453
453
|
fetcher = gem_remote_fetcher
|
|
454
454
|
fetcher.headers = { "X-Gemfile-Source" => remote.original_uri.to_s } if remote.original_uri
|
|
455
455
|
string = fetcher.fetch_path(path)
|
|
456
|
-
Bundler.
|
|
456
|
+
Bundler.safe_load_marshal(string)
|
|
457
457
|
rescue Gem::RemoteFetcher::FetchError
|
|
458
458
|
# it's okay for prerelease to fail
|
|
459
459
|
raise unless name == "prerelease_specs"
|
|
@@ -12,7 +12,10 @@ if Bundler::SharedHelpers.in_bundle?
|
|
|
12
12
|
Bundler.ui.error e.message
|
|
13
13
|
Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
|
|
14
14
|
if e.is_a?(Bundler::GemNotFound)
|
|
15
|
-
|
|
15
|
+
suggested_cmd = "bundle install"
|
|
16
|
+
original_gemfile = Bundler.original_env["BUNDLE_GEMFILE"]
|
|
17
|
+
suggested_cmd += " --gemfile #{original_gemfile}" if original_gemfile
|
|
18
|
+
Bundler.ui.warn "Run `#{suggested_cmd}` to install missing gems."
|
|
16
19
|
end
|
|
17
20
|
exit e.status_code
|
|
18
21
|
end
|
|
@@ -160,7 +160,7 @@ module Bundler
|
|
|
160
160
|
" (was expecting #{old_deps.map(&:to_s)}, but the real spec has #{new_deps.map(&:to_s)})"
|
|
161
161
|
raise APIResponseMismatchError,
|
|
162
162
|
"Downloading #{spec.full_name} revealed dependencies not in the API or the lockfile (#{extra_deps.join(", ")})." \
|
|
163
|
-
"\
|
|
163
|
+
"\nRunning `bundle update #{spec.name}` should fix the problem."
|
|
164
164
|
end
|
|
165
165
|
|
|
166
166
|
def pretty_dependency(dep)
|