diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2022-05-17 11:26:18 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2022-05-18 10:02:42 +0900 |
commit | c7bbed299493d0fe5323916b83dab04021bc570f (patch) | |
tree | 168e627f795ccec74e46da2ec0b145f3f7088e7f /lib | |
parent | 14e4055ab127b37e48d07ead34dcb8ffa8874a65 (diff) |
Merge RubyGems-3.3.13 and Bundler-2.3.13
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/definition.rb | 30 | ||||
-rw-r--r-- | lib/bundler/endpoint_specification.rb | 5 | ||||
-rw-r--r-- | lib/bundler/version.rb | 2 | ||||
-rw-r--r-- | lib/rubygems.rb | 4 | ||||
-rw-r--r-- | lib/rubygems/commands/owner_command.rb | 11 |
5 files changed, 32 insertions, 20 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index 21949bc85c..d862877c2e 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -87,10 +87,11 @@ module Bundler @platforms = @locked_platforms.dup @locked_bundler_version = @locked_gems.bundler_version @locked_ruby_version = @locked_gems.ruby_version + @originally_locked_specs = SpecSet.new(@locked_gems.specs) if unlock != true @locked_deps = @locked_gems.dependencies - @locked_specs = SpecSet.new(@locked_gems.specs) + @locked_specs = @originally_locked_specs @locked_sources = @locked_gems.sources else @unlock = {} @@ -255,14 +256,14 @@ module Bundler # @return [SpecSet] resolved dependencies def resolve @resolve ||= begin - last_resolve = converge_locked_specs if Bundler.frozen_bundle? Bundler.ui.debug "Frozen, using resolution from the lockfile" - last_resolve + @locked_specs elsif !unlocking? && nothing_changed? Bundler.ui.debug("Found no changes, using resolution from the lockfile") - last_resolve + SpecSet.new(filter_specs(@locked_specs, @dependencies.select{|dep| @locked_specs[dep].any? })) else + last_resolve = converge_locked_specs # Run a resolve against the locally available gems Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}") expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true) @@ -464,6 +465,10 @@ module Bundler private + def filter_specs(specs, deps) + SpecSet.new(specs).for(expand_dependencies(deps, true), false, false) + end + def materialize(dependencies) specs = resolve.materialize(dependencies) missing_specs = specs.missing_specs @@ -679,17 +684,17 @@ module Bundler end def converge_specs(specs) - deps = [] converged = [] + + deps = @dependencies.select do |dep| + specs[dep].any? {|s| s.satisfies?(dep) && (!dep.source || s.source.include?(dep.source)) } + end + specs.each do |s| # Replace the locked dependency's source with the equivalent source from the Gemfile dep = @dependencies.find {|d| s.satisfies?(d) } - if dep && (!dep.source || s.source.include?(dep.source)) - deps << dep - end - - s.source = (dep && dep.source) || sources.get(s.source) || sources.default_source unless Bundler.frozen_bundle? + s.source = (dep && dep.source) || sources.get(s.source) || sources.default_source next if @unlock[:sources].include?(s.source.name) @@ -726,8 +731,7 @@ module Bundler end end - resolve = SpecSet.new(converged) - SpecSet.new(resolve.for(expand_dependencies(deps, true), false, false).reject{|s| @unlock[:gems].include?(s.name) }) + SpecSet.new(filter_specs(converged, deps).reject{|s| @unlock[:gems].include?(s.name) }) end def metadata_dependencies @@ -804,7 +808,7 @@ module Bundler def additional_base_requirements_for_resolve return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources) - converge_specs(@locked_gems.specs).map do |locked_spec| + converge_specs(@originally_locked_specs).map do |locked_spec| name = locked_spec.name dep = Gem::Dependency.new(name, ">= #{locked_spec.version}") DepProxy.get_proxy(dep, locked_spec.platform) diff --git a/lib/bundler/endpoint_specification.rb b/lib/bundler/endpoint_specification.rb index f3260a38e6..e9aa366b41 100644 --- a/lib/bundler/endpoint_specification.rb +++ b/lib/bundler/endpoint_specification.rb @@ -26,8 +26,11 @@ module Bundler @required_ruby_version ||= _remote_specification.required_ruby_version end + # A fallback is included because the original version of the specification + # API didn't include that field, so some marshalled specs in the index have it + # set to +nil+. def required_rubygems_version - @required_rubygems_version ||= _remote_specification.required_rubygems_version + @required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default end def fetch_platform diff --git a/lib/bundler/version.rb b/lib/bundler/version.rb index 8c645c7a49..aa9c29199d 100644 --- a/lib/bundler/version.rb +++ b/lib/bundler/version.rb @@ -1,7 +1,7 @@ # frozen_string_literal: false module Bundler - VERSION = "2.3.12".freeze + VERSION = "2.3.13".freeze def self.bundler_major_version @bundler_major_version ||= VERSION.split(".").first.to_i diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 419b6e54b7..2cbb6a2410 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -8,7 +8,7 @@ require 'rbconfig' module Gem - VERSION = "3.3.12".freeze + VERSION = "3.3.13".freeze end # Must be first since it unloads the prelude from 1.9.2 @@ -864,7 +864,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} return @ruby_version if defined? @ruby_version version = RUBY_VERSION.dup - if defined?(RUBY_DESCRIPTION) + unless defined?(RUBY_PATCHLEVEL) && RUBY_PATCHLEVEL != -1 if RUBY_ENGINE == "ruby" desc = RUBY_DESCRIPTION[/\Aruby #{Regexp.quote(RUBY_VERSION)}([^ ]+) /, 1] else diff --git a/lib/rubygems/commands/owner_command.rb b/lib/rubygems/commands/owner_command.rb index 0a5665228f..42b0d79135 100644 --- a/lib/rubygems/commands/owner_command.rb +++ b/lib/rubygems/commands/owner_command.rb @@ -12,7 +12,12 @@ class Gem::Commands::OwnerCommand < Gem::Command def description # :nodoc: <<-EOF The owner command lets you add and remove owners of a gem on a push -server (the default is https://rubygems.org). +server (the default is https://rubygems.org). Multiple owners can be +added or removed at the same time, if the flag is given multiple times. + +The supported user identifiers are dependant on the push server. +For rubygems.org, both e-mail and handle are supported, even though the +user identifier field is called "email". The owner of a gem has the permission to push new versions, yank existing versions or edit the HTML page of the gem. Be careful of who you give push @@ -35,11 +40,11 @@ permission to. add_otp_option defaults.merge! :add => [], :remove => [] - add_option '-a', '--add EMAIL', 'Add an owner' do |value, options| + add_option '-a', '--add NEW_OWNER', 'Add an owner by user identifier' do |value, options| options[:add] << value end - add_option '-r', '--remove EMAIL', 'Remove an owner' do |value, options| + add_option '-r', '--remove OLD_OWNER', 'Remove an owner by user identifier' do |value, options| options[:remove] << value end |