bundler 2.3.26 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +48 -0
  3. data/README.md +2 -2
  4. data/bundler.gemspec +2 -2
  5. data/exe/bundle +1 -4
  6. data/lib/bundler/build_metadata.rb +2 -2
  7. data/lib/bundler/cli/add.rb +1 -1
  8. data/lib/bundler/cli/check.rb +1 -1
  9. data/lib/bundler/cli/common.rb +1 -0
  10. data/lib/bundler/cli/console.rb +2 -2
  11. data/lib/bundler/cli/doctor.rb +4 -6
  12. data/lib/bundler/cli/gem.rb +62 -40
  13. data/lib/bundler/cli/install.rb +2 -3
  14. data/lib/bundler/cli/lock.rb +8 -5
  15. data/lib/bundler/cli/outdated.rb +1 -3
  16. data/lib/bundler/cli/viz.rb +1 -1
  17. data/lib/bundler/cli.rb +43 -2
  18. data/lib/bundler/compact_index_client/cache.rb +1 -1
  19. data/lib/bundler/compact_index_client/updater.rb +40 -39
  20. data/lib/bundler/constants.rb +1 -1
  21. data/lib/bundler/definition.rb +61 -31
  22. data/lib/bundler/dependency.rb +12 -11
  23. data/lib/bundler/digest.rb +1 -1
  24. data/lib/bundler/dsl.rb +1 -1
  25. data/lib/bundler/env.rb +1 -1
  26. data/lib/bundler/environment_preserver.rb +1 -0
  27. data/lib/bundler/errors.rb +1 -11
  28. data/lib/bundler/fetcher/compact_index.rb +9 -11
  29. data/lib/bundler/fetcher/dependency.rb +1 -1
  30. data/lib/bundler/fetcher/downloader.rb +2 -5
  31. data/lib/bundler/fetcher.rb +2 -6
  32. data/lib/bundler/force_platform.rb +18 -0
  33. data/lib/bundler/friendly_errors.rb +0 -3
  34. data/lib/bundler/gem_version_promoter.rb +52 -86
  35. data/lib/bundler/graph.rb +3 -3
  36. data/lib/bundler/index.rb +5 -13
  37. data/lib/bundler/injector.rb +1 -1
  38. data/lib/bundler/inline.rb +2 -2
  39. data/lib/bundler/installer/parallel_installer.rb +0 -31
  40. data/lib/bundler/installer.rb +6 -16
  41. data/lib/bundler/lazy_specification.rb +5 -1
  42. data/lib/bundler/lockfile_parser.rb +5 -5
  43. data/lib/bundler/man/bundle-add.1 +1 -1
  44. data/lib/bundler/man/bundle-binstubs.1 +1 -1
  45. data/lib/bundler/man/bundle-cache.1 +1 -1
  46. data/lib/bundler/man/bundle-check.1 +1 -1
  47. data/lib/bundler/man/bundle-clean.1 +1 -1
  48. data/lib/bundler/man/bundle-config.1 +1 -1
  49. data/lib/bundler/man/bundle-console.1 +1 -1
  50. data/lib/bundler/man/bundle-doctor.1 +1 -1
  51. data/lib/bundler/man/bundle-exec.1 +1 -1
  52. data/lib/bundler/man/bundle-gem.1 +27 -37
  53. data/lib/bundler/man/bundle-gem.1.ronn +5 -5
  54. data/lib/bundler/man/bundle-help.1 +1 -1
  55. data/lib/bundler/man/bundle-info.1 +1 -1
  56. data/lib/bundler/man/bundle-init.1 +1 -1
  57. data/lib/bundler/man/bundle-inject.1 +1 -1
  58. data/lib/bundler/man/bundle-install.1 +1 -30
  59. data/lib/bundler/man/bundle-install.1.ronn +0 -29
  60. data/lib/bundler/man/bundle-list.1 +1 -1
  61. data/lib/bundler/man/bundle-lock.1 +1 -1
  62. data/lib/bundler/man/bundle-open.1 +1 -1
  63. data/lib/bundler/man/bundle-outdated.1 +1 -1
  64. data/lib/bundler/man/bundle-platform.1 +2 -2
  65. data/lib/bundler/man/bundle-platform.1.ronn +1 -1
  66. data/lib/bundler/man/bundle-plugin.1 +1 -1
  67. data/lib/bundler/man/bundle-pristine.1 +1 -1
  68. data/lib/bundler/man/bundle-remove.1 +1 -1
  69. data/lib/bundler/man/bundle-show.1 +1 -1
  70. data/lib/bundler/man/bundle-update.1 +1 -1
  71. data/lib/bundler/man/bundle-version.1 +1 -1
  72. data/lib/bundler/man/bundle-viz.1 +1 -1
  73. data/lib/bundler/man/bundle.1 +1 -1
  74. data/lib/bundler/man/gemfile.5 +1 -1
  75. data/lib/bundler/mirror.rb +5 -7
  76. data/lib/bundler/plugin/index.rb +4 -4
  77. data/lib/bundler/plugin/installer/rubygems.rb +0 -4
  78. data/lib/bundler/resolver/base.rb +7 -11
  79. data/lib/bundler/resolver/candidate.rb +92 -0
  80. data/lib/bundler/resolver/incompatibility.rb +15 -0
  81. data/lib/bundler/resolver/package.rb +63 -0
  82. data/lib/bundler/resolver/root.rb +25 -0
  83. data/lib/bundler/resolver/spec_group.rb +26 -36
  84. data/lib/bundler/resolver.rb +285 -277
  85. data/lib/bundler/rubygems_ext.rb +11 -6
  86. data/lib/bundler/rubygems_gem_installer.rb +4 -2
  87. data/lib/bundler/rubygems_integration.rb +1 -9
  88. data/lib/bundler/runtime.rb +1 -5
  89. data/lib/bundler/settings.rb +0 -6
  90. data/lib/bundler/shared_helpers.rb +1 -0
  91. data/lib/bundler/source/git/git_proxy.rb +190 -67
  92. data/lib/bundler/source/git.rb +15 -17
  93. data/lib/bundler/source/metadata.rb +0 -1
  94. data/lib/bundler/source/path/installer.rb +1 -22
  95. data/lib/bundler/source/path.rb +5 -5
  96. data/lib/bundler/source/rubygems.rb +13 -67
  97. data/lib/bundler/source_list.rb +8 -2
  98. data/lib/bundler/spec_set.rb +7 -9
  99. data/lib/bundler/templates/Executable +1 -1
  100. data/lib/bundler/templates/Executable.bundler +4 -9
  101. data/lib/bundler/templates/Executable.standalone +2 -0
  102. data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  103. data/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  104. data/lib/bundler/templates/newgem/README.md.tt +6 -4
  105. data/lib/bundler/templates/newgem/Rakefile.tt +2 -1
  106. data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  107. data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  108. data/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
  109. data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  110. data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  111. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  112. data/lib/bundler/templates/newgem/gitignore.tt +3 -0
  113. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
  114. data/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  115. data/lib/bundler/ui/shell.rb +35 -12
  116. data/lib/bundler/ui/silent.rb +21 -5
  117. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  118. data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  119. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  120. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  121. data/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  122. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  123. data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  124. data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  125. data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  126. data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  127. data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +151 -0
  128. data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  129. data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  130. data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  131. data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  132. data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +53 -0
  133. data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  134. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  135. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +124 -0
  136. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
  137. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -0
  138. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  139. data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  140. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  141. data/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  142. data/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  143. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  144. data/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  145. data/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  146. data/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  147. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  148. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  149. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  150. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
  151. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
  152. data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  153. data/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  154. data/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  155. data/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  156. data/lib/bundler/vendored_persistent.rb +1 -33
  157. data/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  158. data/lib/bundler/version.rb +5 -1
  159. data/lib/bundler/worker.rb +5 -7
  160. data/lib/bundler.rb +20 -64
  161. metadata +33 -32
  162. data/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  163. data/lib/bundler/vendor/molinillo/LICENSE +0 -9
  164. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  165. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  166. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  167. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  168. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  169. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  170. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  171. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  172. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  173. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  174. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  175. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  176. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  177. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  178. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  179. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  180. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  181. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  182. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  183. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  184. data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  185. data/lib/bundler/vendored_molinillo.rb +0 -4
  186. data/lib/bundler/version_ranges.rb +0 -122
@@ -41,12 +41,12 @@ configuration file using the following names:
41
41
  Do not create a `CODE_OF_CONDUCT.md` (overrides `--coc` specified in the
42
42
  global config).
43
43
 
44
- * `--ext`:
45
- Add boilerplate for C extension code to the generated project. This behavior
44
+ * `--ext=c`, `--ext=rust`
45
+ Add boilerplate for C or Rust (currently [magnus](https://docs.rs/magnus) based) extension code to the generated project. This behavior
46
46
  is disabled by default.
47
47
 
48
48
  * `--no-ext`:
49
- Do not add C extension code (overrides `--ext` specified in the global
49
+ Do not add extension code (overrides `--ext` specified in the global
50
50
  config).
51
51
 
52
52
  * `--mit`:
@@ -76,9 +76,9 @@ configuration file using the following names:
76
76
  the answer will be saved in Bundler's global config for future `bundle gem`
77
77
  use.
78
78
 
79
- * `--ci`, `--ci=github`, `--ci=travis`, `--ci=gitlab`, `--ci=circle`:
79
+ * `--ci`, `--ci=github`, `--ci=gitlab`, `--ci=circle`:
80
80
  Specify the continuous integration service that Bundler should use when
81
- generating the project. Acceptable values are `github`, `travis`, `gitlab`
81
+ generating the project. Acceptable values are `github`, `gitlab`
82
82
  and `circle`. A configuration file will be generated in the project directory.
83
83
  Given no option is specified:
84
84
 
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-HELP" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-HELP" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-help\fR \- Displays detailed help for each subcommand
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INFO" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-INFO" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-info\fR \- Show information for the given gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INIT" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-INIT" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INJECT" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-INJECT" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INSTALL" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-INSTALL" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
@@ -170,35 +170,6 @@ As a result, \fBbundle install \-\-deployment\fR installs gems to the \fBvendor/
170
170
  .
171
171
  .IP "" 0
172
172
  .
173
- .SH "SUDO USAGE"
174
- By default, Bundler installs gems to the same location as \fBgem install\fR\.
175
- .
176
- .P
177
- In some cases, that location may not be writable by your Unix user\. In that case, Bundler will stage everything in a temporary directory, then ask you for your \fBsudo\fR password in order to copy the gems into their system location\.
178
- .
179
- .P
180
- From your perspective, this is identical to installing the gems directly into the system\.
181
- .
182
- .P
183
- You should never use \fBsudo bundle install\fR\. This is because several other steps in \fBbundle install\fR must be performed as the current user:
184
- .
185
- .IP "\(bu" 4
186
- Updating your \fBGemfile\.lock\fR
187
- .
188
- .IP "\(bu" 4
189
- Updating your \fBvendor/cache\fR, if necessary
190
- .
191
- .IP "\(bu" 4
192
- Checking out private git repositories using your user\'s SSH keys
193
- .
194
- .IP "" 0
195
- .
196
- .P
197
- Of these three, the first two could theoretically be performed by \fBchown\fRing the resulting files to \fB$SUDO_USER\fR\. The third, however, can only be performed by invoking the \fBgit\fR command as the current user\. Therefore, git gems are downloaded and installed into \fB~/\.bundle\fR rather than $GEM_HOME or $BUNDLE_PATH\.
198
- .
199
- .P
200
- As a result, you should run \fBbundle install\fR as the current user, and Bundler will ask for your password if it is needed to put the gems into their final location\.
201
- .
202
173
  .SH "INSTALLING GROUPS"
203
174
  By default, \fBbundle install\fR will install all gems in all groups in your Gemfile(5), except those declared for a different platform\.
204
175
  .
@@ -224,35 +224,6 @@ will cause an error when the Gemfile(5) is modified.
224
224
  the `vendor/bundle` directory in the application. This may be
225
225
  overridden using the `--path` option.
226
226
 
227
- ## SUDO USAGE
228
-
229
- By default, Bundler installs gems to the same location as `gem install`.
230
-
231
- In some cases, that location may not be writable by your Unix user. In
232
- that case, Bundler will stage everything in a temporary directory,
233
- then ask you for your `sudo` password in order to copy the gems into
234
- their system location.
235
-
236
- From your perspective, this is identical to installing the gems
237
- directly into the system.
238
-
239
- You should never use `sudo bundle install`. This is because several
240
- other steps in `bundle install` must be performed as the current user:
241
-
242
- * Updating your `Gemfile.lock`
243
- * Updating your `vendor/cache`, if necessary
244
- * Checking out private git repositories using your user's SSH keys
245
-
246
- Of these three, the first two could theoretically be performed by
247
- `chown`ing the resulting files to `$SUDO_USER`. The third, however,
248
- can only be performed by invoking the `git` command as
249
- the current user. Therefore, git gems are downloaded and installed
250
- into `~/.bundle` rather than $GEM_HOME or $BUNDLE_PATH.
251
-
252
- As a result, you should run `bundle install` as the current user,
253
- and Bundler will ask for your password if it is needed to put the
254
- gems into their final location.
255
-
256
227
  ## INSTALLING GROUPS
257
228
 
258
229
  By default, `bundle install` will install all gems in all groups
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LIST" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-LIST" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-list\fR \- List all the gems in the bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LOCK" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-LOCK" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OPEN" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-OPEN" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OUTDATED" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-OUTDATED" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-outdated\fR \- List installed gems with newer versions available
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PLATFORM" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-PLATFORM" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-platform\fR \- Displays platform compatibility information
@@ -65,7 +65,7 @@ It will display the ruby directive information, so you don\'t have to parse it f
65
65
  .SH "SEE ALSO"
66
66
  .
67
67
  .IP "\(bu" 4
68
- bundle\-lock(1) \fIbundle\-lock\.1\.ronn\fR
68
+ bundle\-lock(1) \fIbundle\-lock\.1\.html\fR
69
69
  .
70
70
  .IP "" 0
71
71
 
@@ -46,4 +46,4 @@ match the running Ruby VM, it tells you what part does not.
46
46
 
47
47
  ## SEE ALSO
48
48
 
49
- * [bundle-lock(1)](bundle-lock.1.ronn)
49
+ * [bundle-lock(1)](bundle-lock.1.html)
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PLUGIN" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-PLUGIN" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-plugin\fR \- Manage Bundler plugins
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PRISTINE" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-PRISTINE" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-REMOVE" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-REMOVE" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-remove\fR \- Removes gems from the Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-SHOW" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-SHOW" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-UPDATE" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-UPDATE" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-update\fR \- Update your gems to the latest available versions
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-VERSION" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-VERSION" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-version\fR \- Prints Bundler version information
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-VIZ" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-VIZ" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE" "1" "October 2022" "" ""
4
+ .TH "BUNDLE" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\fR \- Ruby Dependency Management
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "GEMFILE" "5" "October 2022" "" ""
4
+ .TH "GEMFILE" "5" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
@@ -148,13 +148,11 @@ module Bundler
148
148
  class TCPSocketProbe
149
149
  def replies?(mirror)
150
150
  MirrorSockets.new(mirror).any? do |socket, address, timeout|
151
- begin
152
- socket.connect_nonblock(address)
153
- rescue Errno::EINPROGRESS
154
- wait_for_writtable_socket(socket, address, timeout)
155
- rescue RuntimeError # Connection failed somehow, again
156
- false
157
- end
151
+ socket.connect_nonblock(address)
152
+ rescue Errno::EINPROGRESS
153
+ wait_for_writtable_socket(socket, address, timeout)
154
+ rescue RuntimeError # Connection failed somehow, again
155
+ false
158
156
  end
159
157
  end
160
158
 
@@ -167,11 +167,11 @@ module Bundler
167
167
  # to be only String key value pairs)
168
168
  def save_index
169
169
  index = {
170
- "commands" => @commands,
171
- "hooks" => @hooks,
172
- "load_paths" => @load_paths,
170
+ "commands" => @commands,
171
+ "hooks" => @hooks,
172
+ "load_paths" => @load_paths,
173
173
  "plugin_paths" => @plugin_paths,
174
- "sources" => @sources,
174
+ "sources" => @sources,
175
175
  }
176
176
 
177
177
  require_relative "../yaml_serializer"
@@ -6,10 +6,6 @@ module Bundler
6
6
  class Rubygems < Bundler::Source::Rubygems
7
7
  private
8
8
 
9
- def requires_sudo?
10
- false # Will change on implementation of project level plugins
11
- end
12
-
13
9
  def rubygems_dir
14
10
  Plugin.root
15
11
  end
@@ -20,15 +20,11 @@ module Bundler
20
20
  @base_requirements ||= build_base_requirements
21
21
  end
22
22
 
23
- def unlock_deps(deps)
24
- exact, lower_bound = deps.partition(&:specific?)
23
+ def unlock_names(names)
24
+ names.each do |name|
25
+ @base.delete_by_name(name)
25
26
 
26
- exact.each do |exact_dep|
27
- @base.delete_by_name_and_version(exact_dep.name, exact_dep.requirement.requirements.first.last)
28
- end
29
-
30
- lower_bound.each do |lower_bound_dep|
31
- @additional_base_requirements.delete(lower_bound_dep)
27
+ @additional_base_requirements.reject! {|dep| dep.name == name }
32
28
  end
33
29
 
34
30
  @base_requirements = nil
@@ -39,10 +35,10 @@ module Bundler
39
35
  def build_base_requirements
40
36
  base_requirements = {}
41
37
  @base.each do |ls|
42
- dep = Dependency.new(ls.name, ls.version)
43
- base_requirements[ls.name] = dep
38
+ req = Gem::Requirement.new(ls.version)
39
+ base_requirements[ls.name] = req
44
40
  end
45
- @additional_base_requirements.each {|d| base_requirements[d.name] = d }
41
+ @additional_base_requirements.each {|d| base_requirements[d.name] = d.requirement }
46
42
  base_requirements
47
43
  end
48
44
  end
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "spec_group"
4
+
5
+ module Bundler
6
+ class Resolver
7
+ #
8
+ # This class is a PubGrub compatible "Version" class that takes Bundler
9
+ # resolution complexities into account.
10
+ #
11
+ # Each Resolver::Candidate has a underlying `Gem::Version` plus a set of
12
+ # platforms. For example, 1.1.0-x86_64-linux is a different resolution candidate
13
+ # from 1.1.0 (generic). This is because different platform variants of the
14
+ # same gem version can bring different dependencies, so they need to be
15
+ # considered separately.
16
+ #
17
+ # Some candidates may also keep some information explicitly about the
18
+ # package the refer to. These candidates are referred to as "canonical" and
19
+ # are used when materializing resolution results back into RubyGems
20
+ # specifications that can be installed, written to lock files, and so on.
21
+ #
22
+ class Candidate
23
+ include Comparable
24
+
25
+ attr_reader :version
26
+
27
+ def initialize(version, specs: [])
28
+ @spec_group = Resolver::SpecGroup.new(specs)
29
+ @platforms = specs.map(&:platform).sort_by(&:to_s).uniq
30
+ @version = Gem::Version.new(version)
31
+ @ruby_only = @platforms == [Gem::Platform::RUBY]
32
+ end
33
+
34
+ def dependencies
35
+ @spec_group.dependencies
36
+ end
37
+
38
+ def to_specs(package)
39
+ return [] if package.meta?
40
+
41
+ @spec_group.to_specs(package.force_ruby_platform?)
42
+ end
43
+
44
+ def prerelease?
45
+ @version.prerelease?
46
+ end
47
+
48
+ def segments
49
+ @version.segments
50
+ end
51
+
52
+ def sort_obj
53
+ [@version, @ruby_only ? -1 : 1]
54
+ end
55
+
56
+ def canonical?
57
+ !@spec_group.empty?
58
+ end
59
+
60
+ def <=>(other)
61
+ return unless other.is_a?(self.class)
62
+ return @version <=> other.version unless canonical? && other.canonical?
63
+
64
+ sort_obj <=> other.sort_obj
65
+ end
66
+
67
+ def ==(other)
68
+ return unless other.is_a?(self.class)
69
+ return @version == other.version unless canonical? && other.canonical?
70
+
71
+ sort_obj == other.sort_obj
72
+ end
73
+
74
+ def eql?(other)
75
+ return unless other.is_a?(self.class)
76
+ return @version.eql?(other.version) unless canonical? || other.canonical?
77
+
78
+ sort_obj.eql?(other.sort_obj)
79
+ end
80
+
81
+ def hash
82
+ sort_obj.hash
83
+ end
84
+
85
+ def to_s
86
+ return @version.to_s if @platforms.empty? || @ruby_only
87
+
88
+ "#{@version} (#{@platforms.join(", ")})"
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Resolver
5
+ class Incompatibility < PubGrub::Incompatibility
6
+ attr_reader :extended_explanation
7
+
8
+ def initialize(terms, cause:, custom_explanation: nil, extended_explanation: nil)
9
+ @extended_explanation = extended_explanation
10
+
11
+ super(terms, :cause => cause, :custom_explanation => custom_explanation)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Resolver
5
+ #
6
+ # Represents a gem being resolved, in a format PubGrub likes.
7
+ #
8
+ # The class holds the following information:
9
+ #
10
+ # * Platforms this gem will be resolved on.
11
+ # * The locked version of this gem resolution should favor (if any).
12
+ # * Whether the gem should be unlocked to its latest version.
13
+ # * The dependency explicit set in the Gemfile for this gem (if any).
14
+ #
15
+ class Package
16
+ attr_reader :name, :platforms, :dependency, :locked_version
17
+
18
+ def initialize(name, platforms, locked_specs, unlock, dependency: nil)
19
+ @name = name
20
+ @platforms = platforms
21
+ @locked_version = locked_specs[name].first&.version
22
+ @unlock = unlock
23
+ @dependency = dependency || Dependency.new(name, @locked_version)
24
+ end
25
+
26
+ def to_s
27
+ @name.delete("\0")
28
+ end
29
+
30
+ def root?
31
+ false
32
+ end
33
+
34
+ def meta?
35
+ @name.end_with?("\0")
36
+ end
37
+
38
+ def ==(other)
39
+ self.class == other.class && @name == other.name
40
+ end
41
+
42
+ def hash
43
+ @name.hash
44
+ end
45
+
46
+ def unlock?
47
+ @unlock.empty? || @unlock.include?(name)
48
+ end
49
+
50
+ def prerelease_specified?
51
+ @dependency.prerelease?
52
+ end
53
+
54
+ def force_ruby_platform?
55
+ @dependency.force_ruby_platform
56
+ end
57
+
58
+ def current_platform?
59
+ @dependency.current_platform?
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "package"
4
+
5
+ module Bundler
6
+ class Resolver
7
+ #
8
+ # Represents the Gemfile from the resolver's perspective. It's the root
9
+ # package and Gemfile entries depend on it.
10
+ #
11
+ class Root < Package
12
+ def initialize(name)
13
+ @name = name
14
+ end
15
+
16
+ def meta?
17
+ true
18
+ end
19
+
20
+ def root?
21
+ true
22
+ end
23
+ end
24
+ end
25
+ end