rubygems-update 3.5.0 → 3.5.2
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 +21 -0
- data/Manifest.txt +12 -1
- data/bundler/CHANGELOG.md +22 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/checksum.rb +42 -33
- data/bundler/lib/bundler/definition.rb +19 -11
- data/bundler/lib/bundler/dsl.rb +3 -5
- data/bundler/lib/bundler/lazy_specification.rb +2 -0
- data/bundler/lib/bundler/remote_specification.rb +4 -0
- data/bundler/lib/bundler/self_manager.rb +1 -1
- data/bundler/lib/bundler/spec_set.rb +35 -7
- data/bundler/lib/bundler/vendor/connection_pool/.document +1 -0
- data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
- data/bundler/lib/bundler/vendor/thor/.document +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +0 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +0 -3
- data/bundler/lib/bundler/vendor/tsort/.document +1 -0
- data/bundler/lib/bundler/vendor/uri/.document +1 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +3 -5
- data/lib/rubygems/basic_specification.rb +7 -1
- data/lib/rubygems/net-http/.document +1 -0
- data/lib/rubygems/net-protocol/.document +1 -0
- data/lib/rubygems/package.rb +12 -2
- data/lib/rubygems/request.rb +4 -4
- data/lib/rubygems/resolv/.document +1 -0
- data/lib/rubygems/resolver/molinillo/.document +1 -0
- data/lib/rubygems/timeout/.document +1 -0
- data/lib/rubygems.rb +8 -1
- data/rubygems-update.gemspec +1 -1
- metadata +15 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +0 -49
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 516ff3035710aec51c55a79b9d0634c6900796ff1a0ed176db0eed96ea9fdc83
         | 
| 4 | 
            +
              data.tar.gz: 3a7c9ba6ba6c93e8c78ece390b1d14c7b9aa5876c7580fa53a85b0eb18e83311
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 14bde13965cae368e5b5c812fb6e4e45cdec3bd7fe116b1eff897e3a2b7131ca555fbe3dff6da0d847854c81cc886bfb5f8835d13e7e60fa4a569432149f4684
         | 
| 7 | 
            +
              data.tar.gz: d50b039fa4f0b3ed8a66019f522a6c8b64679a69e05a31b31a82a7e6e2c97d2fffab43593076729b3bf98da795f345f252a678a33e55d50209d3f15b1e74ef9f
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,24 @@ | |
| 1 | 
            +
            # 3.5.2 / 2023-12-21
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## Enhancements:
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Support dynamic library loading with extension .so or .o. Pull request
         | 
| 6 | 
            +
              [#7241](https://github.com/rubygems/rubygems/pull/7241) by hogelog
         | 
| 7 | 
            +
            * Installs bundler 2.5.2 as a default gem.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## Performance:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            * Replace `object_id` comparison with identity Hash. Pull request
         | 
| 12 | 
            +
              [#7303](https://github.com/rubygems/rubygems/pull/7303) by amomchilov
         | 
| 13 | 
            +
            * Use IO.copy_stream when reading, writing. Pull request
         | 
| 14 | 
            +
              [#6958](https://github.com/rubygems/rubygems/pull/6958) by martinemde
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            # 3.5.1 / 2023-12-15
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ## Enhancements:
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            * Installs bundler 2.5.1 as a default gem.
         | 
| 21 | 
            +
             | 
| 1 22 | 
             
            # 3.5.0 / 2023-12-15
         | 
| 2 23 |  | 
| 3 24 | 
             
            ## Security:
         | 
    
        data/Manifest.txt
    CHANGED
    
    | @@ -248,18 +248,22 @@ bundler/lib/bundler/ui/silent.rb | |
| 248 248 | 
             
            bundler/lib/bundler/uri_credentials_filter.rb
         | 
| 249 249 | 
             
            bundler/lib/bundler/uri_normalizer.rb
         | 
| 250 250 | 
             
            bundler/lib/bundler/vendor/.document
         | 
| 251 | 
            +
            bundler/lib/bundler/vendor/connection_pool/.document
         | 
| 251 252 | 
             
            bundler/lib/bundler/vendor/connection_pool/LICENSE
         | 
| 252 253 | 
             
            bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
         | 
| 253 254 | 
             
            bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
         | 
| 254 255 | 
             
            bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb
         | 
| 255 256 | 
             
            bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
         | 
| 257 | 
            +
            bundler/lib/bundler/vendor/fileutils/.document
         | 
| 256 258 | 
             
            bundler/lib/bundler/vendor/fileutils/LICENSE.txt
         | 
| 257 259 | 
             
            bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb
         | 
| 260 | 
            +
            bundler/lib/bundler/vendor/net-http-persistent/.document
         | 
| 258 261 | 
             
            bundler/lib/bundler/vendor/net-http-persistent/README.rdoc
         | 
| 259 262 | 
             
            bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
         | 
| 260 263 | 
             
            bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
         | 
| 261 264 | 
             
            bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
         | 
| 262 265 | 
             
            bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
         | 
| 266 | 
            +
            bundler/lib/bundler/vendor/pub_grub/.document
         | 
| 263 267 | 
             
            bundler/lib/bundler/vendor/pub_grub/LICENSE.txt
         | 
| 264 268 | 
             
            bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb
         | 
| 265 269 | 
             
            bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb
         | 
| @@ -277,6 +281,7 @@ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb | |
| 277 281 | 
             
            bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb
         | 
| 278 282 | 
             
            bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
         | 
| 279 283 | 
             
            bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb
         | 
| 284 | 
            +
            bundler/lib/bundler/vendor/thor/.document
         | 
| 280 285 | 
             
            bundler/lib/bundler/vendor/thor/LICENSE.md
         | 
| 281 286 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor.rb
         | 
| 282 287 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/actions.rb
         | 
| @@ -308,14 +313,15 @@ bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb | |
| 308 313 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb
         | 
| 309 314 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb
         | 
| 310 315 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb
         | 
| 311 | 
            -
            bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb
         | 
| 312 316 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb
         | 
| 313 317 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb
         | 
| 314 318 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb
         | 
| 315 319 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/util.rb
         | 
| 316 320 | 
             
            bundler/lib/bundler/vendor/thor/lib/thor/version.rb
         | 
| 321 | 
            +
            bundler/lib/bundler/vendor/tsort/.document
         | 
| 317 322 | 
             
            bundler/lib/bundler/vendor/tsort/LICENSE.txt
         | 
| 318 323 | 
             
            bundler/lib/bundler/vendor/tsort/lib/tsort.rb
         | 
| 324 | 
            +
            bundler/lib/bundler/vendor/uri/.document
         | 
| 319 325 | 
             
            bundler/lib/bundler/vendor/uri/LICENSE.txt
         | 
| 320 326 | 
             
            bundler/lib/bundler/vendor/uri/lib/uri.rb
         | 
| 321 327 | 
             
            bundler/lib/bundler/vendor/uri/lib/uri/common.rb
         | 
| @@ -425,6 +431,7 @@ lib/rubygems/installer.rb | |
| 425 431 | 
             
            lib/rubygems/installer_uninstaller_utils.rb
         | 
| 426 432 | 
             
            lib/rubygems/local_remote_options.rb
         | 
| 427 433 | 
             
            lib/rubygems/name_tuple.rb
         | 
| 434 | 
            +
            lib/rubygems/net-http/.document
         | 
| 428 435 | 
             
            lib/rubygems/net-http/LICENSE.txt
         | 
| 429 436 | 
             
            lib/rubygems/net-http/lib/net/http.rb
         | 
| 430 437 | 
             
            lib/rubygems/net-http/lib/net/http/backward.rb
         | 
| @@ -438,6 +445,7 @@ lib/rubygems/net-http/lib/net/http/response.rb | |
| 438 445 | 
             
            lib/rubygems/net-http/lib/net/http/responses.rb
         | 
| 439 446 | 
             
            lib/rubygems/net-http/lib/net/http/status.rb
         | 
| 440 447 | 
             
            lib/rubygems/net-http/lib/net/https.rb
         | 
| 448 | 
            +
            lib/rubygems/net-protocol/.document
         | 
| 441 449 | 
             
            lib/rubygems/net-protocol/LICENSE.txt
         | 
| 442 450 | 
             
            lib/rubygems/net-protocol/lib/net/protocol.rb
         | 
| 443 451 | 
             
            lib/rubygems/net/http.rb
         | 
| @@ -481,6 +489,7 @@ lib/rubygems/request_set/lockfile.rb | |
| 481 489 | 
             
            lib/rubygems/request_set/lockfile/parser.rb
         | 
| 482 490 | 
             
            lib/rubygems/request_set/lockfile/tokenizer.rb
         | 
| 483 491 | 
             
            lib/rubygems/requirement.rb
         | 
| 492 | 
            +
            lib/rubygems/resolv/.document
         | 
| 484 493 | 
             
            lib/rubygems/resolv/LICENSE.txt
         | 
| 485 494 | 
             
            lib/rubygems/resolv/lib/resolv.rb
         | 
| 486 495 | 
             
            lib/rubygems/resolver.rb
         | 
| @@ -503,6 +512,7 @@ lib/rubygems/resolver/local_specification.rb | |
| 503 512 | 
             
            lib/rubygems/resolver/lock_set.rb
         | 
| 504 513 | 
             
            lib/rubygems/resolver/lock_specification.rb
         | 
| 505 514 | 
             
            lib/rubygems/resolver/molinillo.rb
         | 
| 515 | 
            +
            lib/rubygems/resolver/molinillo/.document
         | 
| 506 516 | 
             
            lib/rubygems/resolver/molinillo/LICENSE
         | 
| 507 517 | 
             
            lib/rubygems/resolver/molinillo/lib/molinillo.rb
         | 
| 508 518 | 
             
            lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb
         | 
| @@ -564,6 +574,7 @@ lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem | |
| 564 574 | 
             
            lib/rubygems/stub_specification.rb
         | 
| 565 575 | 
             
            lib/rubygems/text.rb
         | 
| 566 576 | 
             
            lib/rubygems/timeout.rb
         | 
| 577 | 
            +
            lib/rubygems/timeout/.document
         | 
| 567 578 | 
             
            lib/rubygems/timeout/LICENSE.txt
         | 
| 568 579 | 
             
            lib/rubygems/timeout/lib/timeout.rb
         | 
| 569 580 | 
             
            lib/rubygems/tsort.rb
         | 
    
        data/bundler/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,25 @@ | |
| 1 | 
            +
            # 2.5.2 (December 21, 2023)
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## Enhancements:
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              - Avoid vendored thor gem polluting the global namespace [#7305](https://github.com/rubygems/rubygems/pull/7305)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## Bug fixes:
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              - Fix `bundle update --bundler` when latest version does not support current ruby [#7310](https://github.com/rubygems/rubygems/pull/7310)
         | 
| 10 | 
            +
              - Fix incorrect lockfiles being generated in some situations [#7307](https://github.com/rubygems/rubygems/pull/7307)
         | 
| 11 | 
            +
              - Fix incorrect re-resolve messages [#7306](https://github.com/rubygems/rubygems/pull/7306)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            # 2.5.1 (December 15, 2023)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ## Bug fixes:
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              - Fix `ruby` Gemfile DSL with `file:` parameter no longer working [#7288](https://github.com/rubygems/rubygems/pull/7288)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ## Performance:
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              - Save array allocation for every dependency in Gemfile [#7270](https://github.com/rubygems/rubygems/pull/7270)
         | 
| 22 | 
            +
             | 
| 1 23 | 
             
            # 2.5.0 (December 15, 2023)
         | 
| 2 24 |  | 
| 3 25 | 
             
            ## Breaking changes:
         | 
| @@ -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-12- | 
| 8 | 
            -
                @git_commit_sha = " | 
| 7 | 
            +
                @built_at = "2023-12-21".freeze
         | 
| 8 | 
            +
                @git_commit_sha = "00351925e4".freeze
         | 
| 9 9 | 
             
                @release = true
         | 
| 10 10 | 
             
                # end ivars
         | 
| 11 11 |  | 
| @@ -30,6 +30,7 @@ module Bundler | |
| 30 30 |  | 
| 31 31 | 
             
                  def from_api(digest, source_uri, algo = DEFAULT_ALGORITHM)
         | 
| 32 32 | 
             
                    return if Bundler.settings[:disable_checksum_validation]
         | 
| 33 | 
            +
             | 
| 33 34 | 
             
                    Checksum.new(algo, to_hexdigest(digest, algo), Source.new(:api, source_uri))
         | 
| 34 35 | 
             
                  end
         | 
| 35 36 |  | 
| @@ -41,11 +42,13 @@ module Bundler | |
| 41 42 | 
             
                  def to_hexdigest(digest, algo = DEFAULT_ALGORITHM)
         | 
| 42 43 | 
             
                    return digest unless algo == DEFAULT_ALGORITHM
         | 
| 43 44 | 
             
                    return digest if digest.match?(/\A[0-9a-f]{64}\z/i)
         | 
| 45 | 
            +
             | 
| 44 46 | 
             
                    if digest.match?(%r{\A[-0-9a-z_+/]{43}={0,2}\z}i)
         | 
| 45 47 | 
             
                      digest = digest.tr("-_", "+/") # fix urlsafe base64
         | 
| 46 | 
            -
                       | 
| 48 | 
            +
                      digest.unpack1("m0").unpack1("H*")
         | 
| 49 | 
            +
                    else
         | 
| 50 | 
            +
                      raise ArgumentError, "#{digest.inspect} is not a valid SHA256 hex or base64 digest"
         | 
| 47 51 | 
             
                    end
         | 
| 48 | 
            -
                    raise ArgumentError, "#{digest.inspect} is not a valid SHA256 hex or base64 digest"
         | 
| 49 52 | 
             
                  end
         | 
| 50 53 | 
             
                end
         | 
| 51 54 |  | 
| @@ -63,6 +66,10 @@ module Bundler | |
| 63 66 |  | 
| 64 67 | 
             
                alias_method :eql?, :==
         | 
| 65 68 |  | 
| 69 | 
            +
                def same_source?(other)
         | 
| 70 | 
            +
                  sources.include?(other.sources.first)
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
             | 
| 66 73 | 
             
                def match?(other)
         | 
| 67 74 | 
             
                  other.is_a?(self.class) && other.digest == digest && other.algo == algo
         | 
| 68 75 | 
             
                end
         | 
| @@ -81,6 +88,7 @@ module Bundler | |
| 81 88 |  | 
| 82 89 | 
             
                def merge!(other)
         | 
| 83 90 | 
             
                  return nil unless match?(other)
         | 
| 91 | 
            +
             | 
| 84 92 | 
             
                  @sources.concat(other.sources).uniq!
         | 
| 85 93 | 
             
                  self
         | 
| 86 94 | 
             
                end
         | 
| @@ -161,26 +169,17 @@ module Bundler | |
| 161 169 |  | 
| 162 170 | 
             
                  def initialize
         | 
| 163 171 | 
             
                    @store = {}
         | 
| 164 | 
            -
             | 
| 165 | 
            -
             | 
| 166 | 
            -
                  def initialize_copy(other)
         | 
| 167 | 
            -
                    @store = {}
         | 
| 168 | 
            -
                    other.store.each do |lock_name, checksums|
         | 
| 169 | 
            -
                      store[lock_name] = checksums.dup
         | 
| 170 | 
            -
                    end
         | 
| 172 | 
            +
                    @store_mutex = Mutex.new
         | 
| 171 173 | 
             
                  end
         | 
| 172 174 |  | 
| 173 175 | 
             
                  def inspect
         | 
| 174 176 | 
             
                    "#<#{self.class}:#{object_id} size=#{store.size}>"
         | 
| 175 177 | 
             
                  end
         | 
| 176 178 |  | 
| 177 | 
            -
                  def fetch(spec, algo = DEFAULT_ALGORITHM)
         | 
| 178 | 
            -
                    store[spec.name_tuple.lock_name]&.fetch(algo, nil)
         | 
| 179 | 
            -
                  end
         | 
| 180 | 
            -
             | 
| 181 179 | 
             
                  # Replace when the new checksum is from the same source.
         | 
| 182 | 
            -
                  # The primary purpose  | 
| 180 | 
            +
                  # The primary purpose is registering checksums from gems where there are
         | 
| 183 181 | 
             
                  # duplicates of the same gem (according to full_name) in the index.
         | 
| 182 | 
            +
                  #
         | 
| 184 183 | 
             
                  # In particular, this is when 2 gems have two similar platforms, e.g.
         | 
| 185 184 | 
             
                  # "darwin20" and "darwin-20", both of which resolve to darwin-20.
         | 
| 186 185 | 
             
                  # In the Index, the later gem replaces the former, so we do that here.
         | 
| @@ -192,19 +191,19 @@ module Bundler | |
| 192 191 | 
             
                    return unless checksum
         | 
| 193 192 |  | 
| 194 193 | 
             
                    lock_name = spec.name_tuple.lock_name
         | 
| 195 | 
            -
                     | 
| 196 | 
            -
             | 
| 197 | 
            -
             | 
| 198 | 
            -
             | 
| 199 | 
            -
             | 
| 200 | 
            -
             | 
| 201 | 
            -
             | 
| 202 | 
            -
                      register_checksum(lock_name, checksum)
         | 
| 194 | 
            +
                    @store_mutex.synchronize do
         | 
| 195 | 
            +
                      existing = fetch_checksum(lock_name, checksum.algo)
         | 
| 196 | 
            +
                      if !existing || existing.same_source?(checksum)
         | 
| 197 | 
            +
                        store_checksum(lock_name, checksum)
         | 
| 198 | 
            +
                      else
         | 
| 199 | 
            +
                        merge_checksum(lock_name, checksum, existing)
         | 
| 200 | 
            +
                      end
         | 
| 203 201 | 
             
                    end
         | 
| 204 202 | 
             
                  end
         | 
| 205 203 |  | 
| 206 204 | 
             
                  def register(spec, checksum)
         | 
| 207 205 | 
             
                    return unless checksum
         | 
| 206 | 
            +
             | 
| 208 207 | 
             
                    register_checksum(spec.name_tuple.lock_name, checksum)
         | 
| 209 208 | 
             
                  end
         | 
| 210 209 |  | 
| @@ -218,7 +217,8 @@ module Bundler | |
| 218 217 |  | 
| 219 218 | 
             
                  def to_lock(spec)
         | 
| 220 219 | 
             
                    lock_name = spec.name_tuple.lock_name
         | 
| 221 | 
            -
                     | 
| 220 | 
            +
                    checksums = @store[lock_name]
         | 
| 221 | 
            +
                    if checksums
         | 
| 222 222 | 
             
                      "#{lock_name} #{checksums.values.map(&:to_lock).sort.join(",")}"
         | 
| 223 223 | 
             
                    else
         | 
| 224 224 | 
             
                      lock_name
         | 
| @@ -228,18 +228,27 @@ module Bundler | |
| 228 228 | 
             
                  private
         | 
| 229 229 |  | 
| 230 230 | 
             
                  def register_checksum(lock_name, checksum)
         | 
| 231 | 
            -
                     | 
| 232 | 
            -
             | 
| 233 | 
            -
             | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 236 | 
            -
             | 
| 237 | 
            -
             | 
| 238 | 
            -
                      checksum
         | 
| 239 | 
            -
                    else
         | 
| 240 | 
            -
                      raise ChecksumMismatchError.new(lock_name, existing, checksum)
         | 
| 231 | 
            +
                    @store_mutex.synchronize do
         | 
| 232 | 
            +
                      existing = fetch_checksum(lock_name, checksum.algo)
         | 
| 233 | 
            +
                      if existing
         | 
| 234 | 
            +
                        merge_checksum(lock_name, checksum, existing)
         | 
| 235 | 
            +
                      else
         | 
| 236 | 
            +
                        store_checksum(lock_name, checksum)
         | 
| 237 | 
            +
                      end
         | 
| 241 238 | 
             
                    end
         | 
| 242 239 | 
             
                  end
         | 
| 240 | 
            +
             | 
| 241 | 
            +
                  def merge_checksum(lock_name, checksum, existing)
         | 
| 242 | 
            +
                    existing.merge!(checksum) || raise(ChecksumMismatchError.new(lock_name, existing, checksum))
         | 
| 243 | 
            +
                  end
         | 
| 244 | 
            +
             | 
| 245 | 
            +
                  def store_checksum(lock_name, checksum)
         | 
| 246 | 
            +
                    (@store[lock_name] ||= {})[checksum.algo] = checksum
         | 
| 247 | 
            +
                  end
         | 
| 248 | 
            +
             | 
| 249 | 
            +
                  def fetch_checksum(lock_name, algo)
         | 
| 250 | 
            +
                    @store[lock_name]&.fetch(algo, nil)
         | 
| 251 | 
            +
                  end
         | 
| 243 252 | 
             
                end
         | 
| 244 253 | 
             
              end
         | 
| 245 254 | 
             
            end
         | 
| @@ -496,7 +496,15 @@ module Bundler | |
| 496 496 | 
             
                private :sources
         | 
| 497 497 |  | 
| 498 498 | 
             
                def nothing_changed?
         | 
| 499 | 
            -
                  !@source_changes && | 
| 499 | 
            +
                  !@source_changes &&
         | 
| 500 | 
            +
                    !@dependency_changes &&
         | 
| 501 | 
            +
                    !@new_platform &&
         | 
| 502 | 
            +
                    !@path_changes &&
         | 
| 503 | 
            +
                    !@local_changes &&
         | 
| 504 | 
            +
                    !@missing_lockfile_dep &&
         | 
| 505 | 
            +
                    !@unlocking_bundler &&
         | 
| 506 | 
            +
                    !@locked_spec_with_missing_deps &&
         | 
| 507 | 
            +
                    !@locked_spec_with_invalid_deps
         | 
| 500 508 | 
             
                end
         | 
| 501 509 |  | 
| 502 510 | 
             
                def no_resolve_needed?
         | 
| @@ -653,7 +661,8 @@ module Bundler | |
| 653 661 | 
             
                    [@local_changes, "the gemspecs for git local gems changed"],
         | 
| 654 662 | 
             
                    [@missing_lockfile_dep, "your lock file is missing \"#{@missing_lockfile_dep}\""],
         | 
| 655 663 | 
             
                    [@unlocking_bundler, "an update to the version of Bundler itself was requested"],
         | 
| 656 | 
            -
                    [@ | 
| 664 | 
            +
                    [@locked_spec_with_missing_deps, "your lock file includes \"#{@locked_spec_with_missing_deps}\" but not some of its dependencies"],
         | 
| 665 | 
            +
                    [@locked_spec_with_invalid_deps, "your lockfile does not satisfy dependencies of \"#{@locked_spec_with_invalid_deps}\""],
         | 
| 657 666 | 
             
                  ].select(&:first).map(&:last).join(", ")
         | 
| 658 667 | 
             
                end
         | 
| 659 668 |  | 
| @@ -708,26 +717,25 @@ module Bundler | |
| 708 717 | 
             
                end
         | 
| 709 718 |  | 
| 710 719 | 
             
                def check_lockfile
         | 
| 711 | 
            -
                  @invalid_lockfile_dep = nil
         | 
| 712 720 | 
             
                  @missing_lockfile_dep = nil
         | 
| 713 721 |  | 
| 714 | 
            -
                   | 
| 722 | 
            +
                  @locked_spec_with_invalid_deps = nil
         | 
| 723 | 
            +
                  @locked_spec_with_missing_deps = nil
         | 
| 724 | 
            +
             | 
| 715 725 | 
             
                  missing = []
         | 
| 716 726 | 
             
                  invalid = []
         | 
| 717 727 |  | 
| 718 728 | 
             
                  @locked_specs.each do |s|
         | 
| 719 | 
            -
                     | 
| 720 | 
            -
                      next if dep.name == "bundler"
         | 
| 729 | 
            +
                    validation = @locked_specs.validate_deps(s)
         | 
| 721 730 |  | 
| 722 | 
            -
             | 
| 723 | 
            -
             | 
| 724 | 
            -
                    end
         | 
| 731 | 
            +
                    missing << s if validation == :missing
         | 
| 732 | 
            +
                    invalid << s if validation == :invalid
         | 
| 725 733 | 
             
                  end
         | 
| 726 734 |  | 
| 727 735 | 
             
                  if missing.any?
         | 
| 728 736 | 
             
                    @locked_specs.delete(missing)
         | 
| 729 737 |  | 
| 730 | 
            -
                    @ | 
| 738 | 
            +
                    @locked_spec_with_missing_deps = missing.first.name
         | 
| 731 739 | 
             
                  elsif !@dependency_changes
         | 
| 732 740 | 
             
                    @missing_lockfile_dep = current_dependencies.find do |d|
         | 
| 733 741 | 
             
                      @locked_specs[d.name].empty? && d.name != "bundler"
         | 
| @@ -737,7 +745,7 @@ module Bundler | |
| 737 745 | 
             
                  if invalid.any?
         | 
| 738 746 | 
             
                    @locked_specs.delete(invalid)
         | 
| 739 747 |  | 
| 740 | 
            -
                    @ | 
| 748 | 
            +
                    @locked_spec_with_invalid_deps = invalid.first.name
         | 
| 741 749 | 
             
                  end
         | 
| 742 750 | 
             
                end
         | 
| 743 751 |  | 
    
        data/bundler/lib/bundler/dsl.rb
    CHANGED
    
    | @@ -20,7 +20,7 @@ module Bundler | |
| 20 20 |  | 
| 21 21 | 
             
                GITHUB_PULL_REQUEST_URL = %r{\Ahttps://github\.com/([A-Za-z0-9_\-\.]+/[A-Za-z0-9_\-\.]+)/pull/(\d+)\z}
         | 
| 22 22 |  | 
| 23 | 
            -
                attr_reader :gemspecs
         | 
| 23 | 
            +
                attr_reader :gemspecs, :gemfile
         | 
| 24 24 | 
             
                attr_accessor :dependencies
         | 
| 25 25 |  | 
| 26 26 | 
             
                def initialize
         | 
| @@ -404,13 +404,11 @@ module Bundler | |
| 404 404 | 
             
                end
         | 
| 405 405 |  | 
| 406 406 | 
             
                def validate_keys(command, opts, valid_keys)
         | 
| 407 | 
            -
                   | 
| 408 | 
            -
             | 
| 409 | 
            -
                  git_source = opts.keys & @git_sources.keys.map(&:to_s)
         | 
| 410 | 
            -
                  if opts["branch"] && !(opts["git"] || opts["github"] || git_source.any?)
         | 
| 407 | 
            +
                  if opts["branch"] && !(opts["git"] || opts["github"] || (opts.keys & @git_sources.keys.map(&:to_s)).any?)
         | 
| 411 408 | 
             
                    raise GemfileError, %(The `branch` option for `#{command}` is not allowed. Only gems with a git source can specify a branch)
         | 
| 412 409 | 
             
                  end
         | 
| 413 410 |  | 
| 411 | 
            +
                  invalid_keys = opts.keys - valid_keys
         | 
| 414 412 | 
             
                  return true unless invalid_keys.any?
         | 
| 415 413 |  | 
| 416 414 | 
             
                  message = String.new
         | 
| @@ -10,6 +10,8 @@ module Bundler | |
| 10 10 | 
             
                attr_reader :name, :version, :platform
         | 
| 11 11 | 
             
                attr_accessor :source, :remote, :force_ruby_platform, :dependencies, :required_ruby_version, :required_rubygems_version
         | 
| 12 12 |  | 
| 13 | 
            +
                alias_method :runtime_dependencies, :dependencies
         | 
| 14 | 
            +
             | 
| 13 15 | 
             
                def self.from_spec(s)
         | 
| 14 16 | 
             
                  lazy_spec = new(s.name, s.version, s.platform, s.source)
         | 
| 15 17 | 
             
                  lazy_spec.dependencies = s.dependencies
         | 
| @@ -37,7 +37,7 @@ module Bundler | |
| 37 37 |  | 
| 38 38 | 
             
                      specs_for_dep.first.dependencies.each do |d|
         | 
| 39 39 | 
             
                        next if d.type == :development
         | 
| 40 | 
            -
                        incomplete = true if d.name != "bundler" && lookup[d.name]. | 
| 40 | 
            +
                        incomplete = true if d.name != "bundler" && lookup[d.name].nil?
         | 
| 41 41 | 
             
                        deps << [d, dep[1]]
         | 
| 42 42 | 
             
                      end
         | 
| 43 43 | 
             
                    else
         | 
| @@ -45,7 +45,7 @@ module Bundler | |
| 45 45 | 
             
                    end
         | 
| 46 46 |  | 
| 47 47 | 
             
                    if incomplete && check
         | 
| 48 | 
            -
                      @incomplete_specs += lookup[name] | 
| 48 | 
            +
                      @incomplete_specs += lookup[name] || [LazySpecification.new(name, nil, nil)]
         | 
| 49 49 | 
             
                    end
         | 
| 50 50 | 
             
                  end
         | 
| 51 51 |  | 
| @@ -64,7 +64,9 @@ module Bundler | |
| 64 64 | 
             
                    valid_platform = lookup.all? do |_, specs|
         | 
| 65 65 | 
             
                      spec = specs.first
         | 
| 66 66 | 
             
                      matching_specs = spec.source.specs.search([spec.name, spec.version])
         | 
| 67 | 
            -
                      platform_spec = GemHelpers.select_best_platform_match(matching_specs, platform).find | 
| 67 | 
            +
                      platform_spec = GemHelpers.select_best_platform_match(matching_specs, platform).find do |s|
         | 
| 68 | 
            +
                        s.matches_current_metadata? && valid_dependencies?(s)
         | 
| 69 | 
            +
                      end
         | 
| 68 70 |  | 
| 69 71 | 
             
                      if platform_spec
         | 
| 70 72 | 
             
                        new_specs << LazySpecification.from_spec(platform_spec)
         | 
| @@ -90,9 +92,20 @@ module Bundler | |
| 90 92 | 
             
                  platforms
         | 
| 91 93 | 
             
                end
         | 
| 92 94 |  | 
| 95 | 
            +
                def validate_deps(s)
         | 
| 96 | 
            +
                  s.runtime_dependencies.each do |dep|
         | 
| 97 | 
            +
                    next if dep.name == "bundler"
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                    return :missing unless names.include?(dep.name)
         | 
| 100 | 
            +
                    return :invalid if none? {|spec| dep.matches_spec?(spec) }
         | 
| 101 | 
            +
                  end
         | 
| 102 | 
            +
             | 
| 103 | 
            +
                  :valid
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
             | 
| 93 106 | 
             
                def [](key)
         | 
| 94 107 | 
             
                  key = key.name if key.respond_to?(:name)
         | 
| 95 | 
            -
                  lookup[key] | 
| 108 | 
            +
                  lookup[key]&.reverse || []
         | 
| 96 109 | 
             
                end
         | 
| 97 110 |  | 
| 98 111 | 
             
                def []=(key, value)
         | 
| @@ -167,7 +180,7 @@ module Bundler | |
| 167 180 | 
             
                end
         | 
| 168 181 |  | 
| 169 182 | 
             
                def what_required(spec)
         | 
| 170 | 
            -
                  unless req = find {|s| s. | 
| 183 | 
            +
                  unless req = find {|s| s.runtime_dependencies.any? {|d| d.name == spec.name } }
         | 
| 171 184 | 
             
                    return [spec]
         | 
| 172 185 | 
             
                  end
         | 
| 173 186 | 
             
                  what_required(req) << spec
         | 
| @@ -193,8 +206,16 @@ module Bundler | |
| 193 206 | 
             
                  sorted.each(&b)
         | 
| 194 207 | 
             
                end
         | 
| 195 208 |  | 
| 209 | 
            +
                def names
         | 
| 210 | 
            +
                  lookup.keys
         | 
| 211 | 
            +
                end
         | 
| 212 | 
            +
             | 
| 196 213 | 
             
                private
         | 
| 197 214 |  | 
| 215 | 
            +
                def valid_dependencies?(s)
         | 
| 216 | 
            +
                  validate_deps(s) == :valid
         | 
| 217 | 
            +
                end
         | 
| 218 | 
            +
             | 
| 198 219 | 
             
                def sorted
         | 
| 199 220 | 
             
                  rake = @specs.find {|s| s.name == "rake" }
         | 
| 200 221 | 
             
                  begin
         | 
| @@ -213,8 +234,9 @@ module Bundler | |
| 213 234 |  | 
| 214 235 | 
             
                def lookup
         | 
| 215 236 | 
             
                  @lookup ||= begin
         | 
| 216 | 
            -
                    lookup =  | 
| 237 | 
            +
                    lookup = {}
         | 
| 217 238 | 
             
                    @specs.each do |s|
         | 
| 239 | 
            +
                      lookup[s.name] ||= []
         | 
| 218 240 | 
             
                      lookup[s.name] << s
         | 
| 219 241 | 
             
                    end
         | 
| 220 242 | 
             
                    lookup
         | 
| @@ -228,6 +250,8 @@ module Bundler | |
| 228 250 |  | 
| 229 251 | 
             
                def specs_for_dependency(dep, platform)
         | 
| 230 252 | 
             
                  specs_for_name = lookup[dep.name]
         | 
| 253 | 
            +
                  return [] unless specs_for_name
         | 
| 254 | 
            +
             | 
| 231 255 | 
             
                  matching_specs = if dep.force_ruby_platform
         | 
| 232 256 | 
             
                    GemHelpers.force_ruby_platform(specs_for_name)
         | 
| 233 257 | 
             
                  else
         | 
| @@ -240,7 +264,11 @@ module Bundler | |
| 240 264 | 
             
                def tsort_each_child(s)
         | 
| 241 265 | 
             
                  s.dependencies.sort_by(&:name).each do |d|
         | 
| 242 266 | 
             
                    next if d.type == :development
         | 
| 243 | 
            -
             | 
| 267 | 
            +
             | 
| 268 | 
            +
                    specs_for_name = lookup[d.name]
         | 
| 269 | 
            +
                    next unless specs_for_name
         | 
| 270 | 
            +
             | 
| 271 | 
            +
                    specs_for_name.each {|s2| yield s2 }
         | 
| 244 272 | 
             
                  end
         | 
| 245 273 | 
             
                end
         | 
| 246 274 | 
             
              end
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -20,7 +20,7 @@ autoload :OpenSSL, 'openssl' | |
| 20 20 | 
             
            #
         | 
| 21 21 | 
             
            # Example:
         | 
| 22 22 | 
             
            #
         | 
| 23 | 
            -
            #   require 'bundler/vendor/net-http/lib/net/http/persistent'
         | 
| 23 | 
            +
            #   require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'
         | 
| 24 24 | 
             
            #
         | 
| 25 25 | 
             
            #   uri = Bundler::URI 'http://example.com/awesome/web/service'
         | 
| 26 26 | 
             
            #
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            require_relative "basic"
         | 
| 2 | 
            -
            require_relative "lcs_diff"
         | 
| 3 2 |  | 
| 4 3 | 
             
            class Bundler::Thor
         | 
| 5 4 | 
             
              module Shell
         | 
| @@ -7,8 +6,6 @@ class Bundler::Thor | |
| 7 6 | 
             
                # Bundler::Thor::Shell::Basic to see all available methods.
         | 
| 8 7 | 
             
                #
         | 
| 9 8 | 
             
                class Color < Basic
         | 
| 10 | 
            -
                  include LCSDiff
         | 
| 11 | 
            -
             | 
| 12 9 | 
             
                  # Embed in a String to clear all previous ANSI sequences.
         | 
| 13 10 | 
             
                  CLEAR      = "\e[0m"
         | 
| 14 11 | 
             
                  # The start of an ANSI bold sequence.
         | 
| @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            require_relative "basic"
         | 
| 2 | 
            -
            require_relative "lcs_diff"
         | 
| 3 2 |  | 
| 4 3 | 
             
            class Bundler::Thor
         | 
| 5 4 | 
             
              module Shell
         | 
| @@ -7,8 +6,6 @@ class Bundler::Thor | |
| 7 6 | 
             
                # Bundler::Thor::Shell::Basic to see all available methods.
         | 
| 8 7 | 
             
                #
         | 
| 9 8 | 
             
                class HTML < Basic
         | 
| 10 | 
            -
                  include LCSDiff
         | 
| 11 | 
            -
             | 
| 12 9 | 
             
                  # The start of an HTML bold sequence.
         | 
| 13 10 | 
             
                  BOLD       = "font-weight: bold"
         | 
| 14 11 |  | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
    
        data/bundler/lib/bundler.rb
    CHANGED
    
    | @@ -100,9 +100,7 @@ module Bundler | |
| 100 100 | 
             
                end
         | 
| 101 101 |  | 
| 102 102 | 
             
                def create_bundle_path
         | 
| 103 | 
            -
                   | 
| 104 | 
            -
                    mkdir_p(p)
         | 
| 105 | 
            -
                  end unless bundle_path.exist?
         | 
| 103 | 
            +
                  mkdir_p(bundle_path) unless bundle_path.exist?
         | 
| 106 104 |  | 
| 107 105 | 
             
                  @bundle_path = bundle_path.realpath
         | 
| 108 106 | 
             
                rescue Errno::EEXIST
         | 
| @@ -119,7 +117,7 @@ module Bundler | |
| 119 117 | 
             
                  @bin_path ||= begin
         | 
| 120 118 | 
             
                    path = settings[:bin] || "bin"
         | 
| 121 119 | 
             
                    path = Pathname.new(path).expand_path(root).expand_path
         | 
| 122 | 
            -
                     | 
| 120 | 
            +
                    mkdir_p(path)
         | 
| 123 121 | 
             
                    path
         | 
| 124 122 | 
             
                  end
         | 
| 125 123 | 
             
                end
         | 
| @@ -483,7 +481,7 @@ module Bundler | |
| 483 481 | 
             
                  configured_bundle_path.use_system_gems?
         | 
| 484 482 | 
             
                end
         | 
| 485 483 |  | 
| 486 | 
            -
                def mkdir_p(path | 
| 484 | 
            +
                def mkdir_p(path)
         | 
| 487 485 | 
             
                  SharedHelpers.filesystem_access(path, :write) do |p|
         | 
| 488 486 | 
             
                    FileUtils.mkdir_p(p)
         | 
| 489 487 | 
             
                  end
         | 
| @@ -84,7 +84,13 @@ class Gem::BasicSpecification | |
| 84 84 | 
             
                  return false
         | 
| 85 85 | 
             
                end
         | 
| 86 86 |  | 
| 87 | 
            -
                 | 
| 87 | 
            +
                is_soext = file.end_with?(".so", ".o")
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                if is_soext
         | 
| 90 | 
            +
                  have_file? file.delete_suffix(File.extname(file)), Gem.dynamic_library_suffixes
         | 
| 91 | 
            +
                else
         | 
| 92 | 
            +
                  have_file? file, Gem.suffixes
         | 
| 93 | 
            +
                end
         | 
| 88 94 | 
             
              end
         | 
| 89 95 |  | 
| 90 96 | 
             
              def default_gem?
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
    
        data/lib/rubygems/package.rb
    CHANGED
    
    | @@ -268,7 +268,7 @@ class Gem::Package | |
| 268 268 |  | 
| 269 269 | 
             
                  tar.add_file_simple file, stat.mode, stat.size do |dst_io|
         | 
| 270 270 | 
             
                    File.open file, "rb" do |src_io|
         | 
| 271 | 
            -
                       | 
| 271 | 
            +
                      copy_stream(src_io, dst_io)
         | 
| 272 272 | 
             
                    end
         | 
| 273 273 | 
             
                  end
         | 
| 274 274 | 
             
                end
         | 
| @@ -453,7 +453,7 @@ EOM | |
| 453 453 | 
             
                    end
         | 
| 454 454 |  | 
| 455 455 | 
             
                    if entry.file?
         | 
| 456 | 
            -
                      File.open(destination, "wb") {|out| out | 
| 456 | 
            +
                      File.open(destination, "wb") {|out| copy_stream(entry, out) }
         | 
| 457 457 | 
             
                      FileUtils.chmod file_mode(entry.header.mode), destination
         | 
| 458 458 | 
             
                    end
         | 
| 459 459 |  | 
| @@ -714,6 +714,16 @@ EOM | |
| 714 714 | 
             
              rescue Zlib::GzipFile::Error => e
         | 
| 715 715 | 
             
                raise Gem::Package::FormatError.new(e.message, entry.full_name)
         | 
| 716 716 | 
             
              end
         | 
| 717 | 
            +
             | 
| 718 | 
            +
              if RUBY_ENGINE == "truffleruby"
         | 
| 719 | 
            +
                def copy_stream(src, dst) # :nodoc:
         | 
| 720 | 
            +
                  dst.write src.read
         | 
| 721 | 
            +
                end
         | 
| 722 | 
            +
              else
         | 
| 723 | 
            +
                def copy_stream(src, dst) # :nodoc:
         | 
| 724 | 
            +
                  IO.copy_stream(src, dst)
         | 
| 725 | 
            +
                end
         | 
| 726 | 
            +
              end
         | 
| 717 727 | 
             
            end
         | 
| 718 728 |  | 
| 719 729 | 
             
            require_relative "package/digest_io"
         | 
    
        data/lib/rubygems/request.rb
    CHANGED
    
    | @@ -30,7 +30,7 @@ class Gem::Request | |
| 30 30 | 
             
                @uri = uri
         | 
| 31 31 | 
             
                @request_class = request_class
         | 
| 32 32 | 
             
                @last_modified = last_modified
         | 
| 33 | 
            -
                @requests = Hash.new | 
| 33 | 
            +
                @requests = Hash.new(0).compare_by_identity
         | 
| 34 34 | 
             
                @user_agent = user_agent
         | 
| 35 35 |  | 
| 36 36 | 
             
                @connection_pool = pool
         | 
| @@ -196,7 +196,7 @@ class Gem::Request | |
| 196 196 | 
             
                bad_response = false
         | 
| 197 197 |  | 
| 198 198 | 
             
                begin
         | 
| 199 | 
            -
                  @requests[connection | 
| 199 | 
            +
                  @requests[connection] += 1
         | 
| 200 200 |  | 
| 201 201 | 
             
                  verbose "#{request.method} #{Gem::Uri.redact(@uri)}"
         | 
| 202 202 |  | 
| @@ -247,7 +247,7 @@ class Gem::Request | |
| 247 247 | 
             
                rescue EOFError, Gem::Timeout::Error,
         | 
| 248 248 | 
             
                       Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE
         | 
| 249 249 |  | 
| 250 | 
            -
                  requests = @requests[connection | 
| 250 | 
            +
                  requests = @requests[connection]
         | 
| 251 251 | 
             
                  verbose "connection reset after #{requests} requests, retrying"
         | 
| 252 252 |  | 
| 253 253 | 
             
                  raise Gem::RemoteFetcher::FetchError.new("too many connection resets", @uri) if retried
         | 
| @@ -267,7 +267,7 @@ class Gem::Request | |
| 267 267 | 
             
              # Resets HTTP connection +connection+.
         | 
| 268 268 |  | 
| 269 269 | 
             
              def reset(connection)
         | 
| 270 | 
            -
                @requests.delete connection | 
| 270 | 
            +
                @requests.delete connection
         | 
| 271 271 |  | 
| 272 272 | 
             
                connection.finish
         | 
| 273 273 | 
             
                connection.start
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # Vendored files do not need to be documented
         | 
    
        data/lib/rubygems.rb
    CHANGED
    
    | @@ -9,7 +9,7 @@ | |
| 9 9 | 
             
            require "rbconfig"
         | 
| 10 10 |  | 
| 11 11 | 
             
            module Gem
         | 
| 12 | 
            -
              VERSION = "3.5. | 
| 12 | 
            +
              VERSION = "3.5.2"
         | 
| 13 13 | 
             
            end
         | 
| 14 14 |  | 
| 15 15 | 
             
            # Must be first since it unloads the prelude from 1.9.2
         | 
| @@ -942,6 +942,13 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} | |
| 942 942 | 
             
                               end].compact.uniq
         | 
| 943 943 | 
             
              end
         | 
| 944 944 |  | 
| 945 | 
            +
              ##
         | 
| 946 | 
            +
              # Suffixes for dynamic library require-able paths.
         | 
| 947 | 
            +
             | 
| 948 | 
            +
              def self.dynamic_library_suffixes
         | 
| 949 | 
            +
                @dynamic_library_suffixes ||= suffixes - [".rb"]
         | 
| 950 | 
            +
              end
         | 
| 951 | 
            +
             | 
| 945 952 | 
             
              ##
         | 
| 946 953 | 
             
              # Prints the amount of time the supplied block takes to run using the debug
         | 
| 947 954 | 
             
              # UI output.
         | 
    
        data/rubygems-update.gemspec
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |s|
         | 
| 4 4 | 
             
              s.name = "rubygems-update"
         | 
| 5 | 
            -
              s.version = "3.5. | 
| 5 | 
            +
              s.version = "3.5.2"
         | 
| 6 6 | 
             
              s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
         | 
| 7 7 | 
             
              s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
         | 
| 8 8 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rubygems-update
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.5. | 
| 4 | 
            +
              version: 3.5.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jim Weirich
         | 
| @@ -16,7 +16,7 @@ authors: | |
| 16 16 | 
             
            autorequire:
         | 
| 17 17 | 
             
            bindir: exe
         | 
| 18 18 | 
             
            cert_chain: []
         | 
| 19 | 
            -
            date: 2023-12- | 
| 19 | 
            +
            date: 2023-12-21 00:00:00.000000000 Z
         | 
| 20 20 | 
             
            dependencies: []
         | 
| 21 21 | 
             
            description: |-
         | 
| 22 22 | 
             
              A package (also known as a library) contains a set of functionality
         | 
| @@ -330,18 +330,22 @@ files: | |
| 330 330 | 
             
            - bundler/lib/bundler/uri_credentials_filter.rb
         | 
| 331 331 | 
             
            - bundler/lib/bundler/uri_normalizer.rb
         | 
| 332 332 | 
             
            - bundler/lib/bundler/vendor/.document
         | 
| 333 | 
            +
            - bundler/lib/bundler/vendor/connection_pool/.document
         | 
| 333 334 | 
             
            - bundler/lib/bundler/vendor/connection_pool/LICENSE
         | 
| 334 335 | 
             
            - bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
         | 
| 335 336 | 
             
            - bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
         | 
| 336 337 | 
             
            - bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb
         | 
| 337 338 | 
             
            - bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
         | 
| 339 | 
            +
            - bundler/lib/bundler/vendor/fileutils/.document
         | 
| 338 340 | 
             
            - bundler/lib/bundler/vendor/fileutils/LICENSE.txt
         | 
| 339 341 | 
             
            - bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb
         | 
| 342 | 
            +
            - bundler/lib/bundler/vendor/net-http-persistent/.document
         | 
| 340 343 | 
             
            - bundler/lib/bundler/vendor/net-http-persistent/README.rdoc
         | 
| 341 344 | 
             
            - bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
         | 
| 342 345 | 
             
            - bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
         | 
| 343 346 | 
             
            - bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
         | 
| 344 347 | 
             
            - bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
         | 
| 348 | 
            +
            - bundler/lib/bundler/vendor/pub_grub/.document
         | 
| 345 349 | 
             
            - bundler/lib/bundler/vendor/pub_grub/LICENSE.txt
         | 
| 346 350 | 
             
            - bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb
         | 
| 347 351 | 
             
            - bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb
         | 
| @@ -359,6 +363,7 @@ files: | |
| 359 363 | 
             
            - bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb
         | 
| 360 364 | 
             
            - bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
         | 
| 361 365 | 
             
            - bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb
         | 
| 366 | 
            +
            - bundler/lib/bundler/vendor/thor/.document
         | 
| 362 367 | 
             
            - bundler/lib/bundler/vendor/thor/LICENSE.md
         | 
| 363 368 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor.rb
         | 
| 364 369 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/actions.rb
         | 
| @@ -390,14 +395,15 @@ files: | |
| 390 395 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb
         | 
| 391 396 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb
         | 
| 392 397 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb
         | 
| 393 | 
            -
            - bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb
         | 
| 394 398 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb
         | 
| 395 399 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb
         | 
| 396 400 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb
         | 
| 397 401 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/util.rb
         | 
| 398 402 | 
             
            - bundler/lib/bundler/vendor/thor/lib/thor/version.rb
         | 
| 403 | 
            +
            - bundler/lib/bundler/vendor/tsort/.document
         | 
| 399 404 | 
             
            - bundler/lib/bundler/vendor/tsort/LICENSE.txt
         | 
| 400 405 | 
             
            - bundler/lib/bundler/vendor/tsort/lib/tsort.rb
         | 
| 406 | 
            +
            - bundler/lib/bundler/vendor/uri/.document
         | 
| 401 407 | 
             
            - bundler/lib/bundler/vendor/uri/LICENSE.txt
         | 
| 402 408 | 
             
            - bundler/lib/bundler/vendor/uri/lib/uri.rb
         | 
| 403 409 | 
             
            - bundler/lib/bundler/vendor/uri/lib/uri/common.rb
         | 
| @@ -507,6 +513,7 @@ files: | |
| 507 513 | 
             
            - lib/rubygems/installer_uninstaller_utils.rb
         | 
| 508 514 | 
             
            - lib/rubygems/local_remote_options.rb
         | 
| 509 515 | 
             
            - lib/rubygems/name_tuple.rb
         | 
| 516 | 
            +
            - lib/rubygems/net-http/.document
         | 
| 510 517 | 
             
            - lib/rubygems/net-http/LICENSE.txt
         | 
| 511 518 | 
             
            - lib/rubygems/net-http/lib/net/http.rb
         | 
| 512 519 | 
             
            - lib/rubygems/net-http/lib/net/http/backward.rb
         | 
| @@ -520,6 +527,7 @@ files: | |
| 520 527 | 
             
            - lib/rubygems/net-http/lib/net/http/responses.rb
         | 
| 521 528 | 
             
            - lib/rubygems/net-http/lib/net/http/status.rb
         | 
| 522 529 | 
             
            - lib/rubygems/net-http/lib/net/https.rb
         | 
| 530 | 
            +
            - lib/rubygems/net-protocol/.document
         | 
| 523 531 | 
             
            - lib/rubygems/net-protocol/LICENSE.txt
         | 
| 524 532 | 
             
            - lib/rubygems/net-protocol/lib/net/protocol.rb
         | 
| 525 533 | 
             
            - lib/rubygems/net/http.rb
         | 
| @@ -563,6 +571,7 @@ files: | |
| 563 571 | 
             
            - lib/rubygems/request_set/lockfile/parser.rb
         | 
| 564 572 | 
             
            - lib/rubygems/request_set/lockfile/tokenizer.rb
         | 
| 565 573 | 
             
            - lib/rubygems/requirement.rb
         | 
| 574 | 
            +
            - lib/rubygems/resolv/.document
         | 
| 566 575 | 
             
            - lib/rubygems/resolv/LICENSE.txt
         | 
| 567 576 | 
             
            - lib/rubygems/resolv/lib/resolv.rb
         | 
| 568 577 | 
             
            - lib/rubygems/resolver.rb
         | 
| @@ -585,6 +594,7 @@ files: | |
| 585 594 | 
             
            - lib/rubygems/resolver/lock_set.rb
         | 
| 586 595 | 
             
            - lib/rubygems/resolver/lock_specification.rb
         | 
| 587 596 | 
             
            - lib/rubygems/resolver/molinillo.rb
         | 
| 597 | 
            +
            - lib/rubygems/resolver/molinillo/.document
         | 
| 588 598 | 
             
            - lib/rubygems/resolver/molinillo/LICENSE
         | 
| 589 599 | 
             
            - lib/rubygems/resolver/molinillo/lib/molinillo.rb
         | 
| 590 600 | 
             
            - lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb
         | 
| @@ -646,6 +656,7 @@ files: | |
| 646 656 | 
             
            - lib/rubygems/stub_specification.rb
         | 
| 647 657 | 
             
            - lib/rubygems/text.rb
         | 
| 648 658 | 
             
            - lib/rubygems/timeout.rb
         | 
| 659 | 
            +
            - lib/rubygems/timeout/.document
         | 
| 649 660 | 
             
            - lib/rubygems/timeout/LICENSE.txt
         | 
| 650 661 | 
             
            - lib/rubygems/timeout/lib/timeout.rb
         | 
| 651 662 | 
             
            - lib/rubygems/tsort.rb
         | 
| @@ -691,7 +702,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 691 702 | 
             
                - !ruby/object:Gem::Version
         | 
| 692 703 | 
             
                  version: '0'
         | 
| 693 704 | 
             
            requirements: []
         | 
| 694 | 
            -
            rubygems_version: 3.5. | 
| 705 | 
            +
            rubygems_version: 3.5.2
         | 
| 695 706 | 
             
            signing_key:
         | 
| 696 707 | 
             
            specification_version: 4
         | 
| 697 708 | 
             
            summary: RubyGems is a package management framework for Ruby. This gem is downloaded
         | 
| @@ -1,49 +0,0 @@ | |
| 1 | 
            -
            module LCSDiff
         | 
| 2 | 
            -
            protected
         | 
| 3 | 
            -
             | 
| 4 | 
            -
              # Overwrite show_diff to show diff with colors if Diff::LCS is
         | 
| 5 | 
            -
              # available.
         | 
| 6 | 
            -
              def show_diff(destination, content) #:nodoc:
         | 
| 7 | 
            -
                if diff_lcs_loaded? && ENV["THOR_DIFF"].nil? && ENV["RAILS_DIFF"].nil?
         | 
| 8 | 
            -
                  actual  = File.binread(destination).to_s.split("\n")
         | 
| 9 | 
            -
                  content = content.to_s.split("\n")
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  Diff::LCS.sdiff(actual, content).each do |diff|
         | 
| 12 | 
            -
                    output_diff_line(diff)
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
                else
         | 
| 15 | 
            -
                  super
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            private
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              def output_diff_line(diff) #:nodoc:
         | 
| 22 | 
            -
                case diff.action
         | 
| 23 | 
            -
                when "-"
         | 
| 24 | 
            -
                  say "- #{diff.old_element.chomp}", :red, true
         | 
| 25 | 
            -
                when "+"
         | 
| 26 | 
            -
                  say "+ #{diff.new_element.chomp}", :green, true
         | 
| 27 | 
            -
                when "!"
         | 
| 28 | 
            -
                  say "- #{diff.old_element.chomp}", :red, true
         | 
| 29 | 
            -
                  say "+ #{diff.new_element.chomp}", :green, true
         | 
| 30 | 
            -
                else
         | 
| 31 | 
            -
                  say "  #{diff.old_element.chomp}", nil, true
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
              # Check if Diff::LCS is loaded. If it is, use it to create pretty output
         | 
| 36 | 
            -
              # for diff.
         | 
| 37 | 
            -
              def diff_lcs_loaded? #:nodoc:
         | 
| 38 | 
            -
                return true if defined?(Diff::LCS)
         | 
| 39 | 
            -
                return @diff_lcs_loaded unless @diff_lcs_loaded.nil?
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                @diff_lcs_loaded = begin
         | 
| 42 | 
            -
                  require "diff/lcs"
         | 
| 43 | 
            -
                  true
         | 
| 44 | 
            -
                rescue LoadError
         | 
| 45 | 
            -
                  false
         | 
| 46 | 
            -
                end
         | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
            end
         |