diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e3c557d6bc3..8ba703dddc0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 4.0.15 / 2026-06-24 + +### Enhancements: + +* Reduce peak memory usage of full index loading and bundle install. Pull request [#9618](https://github.com/ruby/rubygems/pull/9618) by hsbt +* Installs bundler 4.0.15 as a default gem. + +### Bug fixes: + +* Forward security policy to old-format gems. Pull request [#9611](https://github.com/ruby/rubygems/pull/9611) by hsbt + ## 4.0.14 / 2026-06-10 ### Enhancements: diff --git a/bundler/CHANGELOG.md b/bundler/CHANGELOG.md index 6b7e3df452c3..1bfb1a228984 100644 --- a/bundler/CHANGELOG.md +++ b/bundler/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 4.0.15 / 2026-06-24 + +### Enhancements: + +* Resolve Git LFS files in git sources from the real remote. Pull request [#9632](https://github.com/ruby/rubygems/pull/9632) by hsbt +* Suggest access issues, not only yanking, for missing locked gems. Pull request [#9631](https://github.com/ruby/rubygems/pull/9631) by hsbt +* Implement a make jobserver (continuation of #9210). Pull request [#9625](https://github.com/ruby/rubygems/pull/9625) by hsbt +* Reduce peak memory usage of full index loading and bundle install. Pull request [#9618](https://github.com/ruby/rubygems/pull/9618) by hsbt +* Bump up to rb-sys 0.9.128. Pull request [#9569](https://github.com/ruby/rubygems/pull/9569) by hsbt + +### Bug fixes: + +* Skip the make jobserver on Windows. Pull request [#9630](https://github.com/ruby/rubygems/pull/9630) by hsbt +* Exempt lockfile versions from cooldown on every resolution path. Pull request [#9619](https://github.com/ruby/rubygems/pull/9619) by hsbt +* Set `Bundler.settings[:ssl_ca_cert]` to download gems. Pull request [#9610](https://github.com/ruby/rubygems/pull/9610) by junaruga + ## 4.0.14 / 2026-06-10 ### Bug fixes: diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index 6c12d790722e..b316a4013efd 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -230,6 +230,16 @@ def prefer_local! sources.prefer_local! end + # Releases memory only needed during resolution, such as remote spec + # indexes and resolver state. Only safe to call once resolution is + # complete and the result has been materialized, since any further + # resolution will need to refetch remote specs. + def release_resolution_memory! + @resolver = nil + @resolution_base = nil + sources.release_resolution_memory! + end + # For given dependency list returns a SpecSet with Gemspec of all the required # dependencies. # 1. The method first resolves the dependencies specified in Gemfile @@ -688,9 +698,10 @@ def materialize(dependencies) "available locally before rerunning Bundler." else "Your bundle is locked to #{locked_gem} from #{locked_gem.source}, but that version can " \ - "no longer be found in that source. That means the author of #{locked_gem} has removed it. " \ - "You'll need to update your bundle to a version other than #{locked_gem} that hasn't been " \ - "removed in order to install." + "no longer be found in that source. That means either the author of #{locked_gem} has removed it, " \ + "or you no longer have access to that source. You'll need to update your bundle to a version other " \ + "than #{locked_gem} that hasn't been removed, or check your credentials and access rights for " \ + "#{locked_gem.source}, in order to install." end raise GemNotFound, message @@ -1283,7 +1294,7 @@ def unlocked_resolution_base def new_resolution_base(last_resolve:, unlock:) new_resolution_platforms = @current_platform_missing ? @new_platforms + [Bundler.local_platform] : @new_platforms - Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, locked_specs: @originally_locked_specs, unlock: unlock, prerelease: gem_version_promoter.pre?, prefer_local: @prefer_local, new_platforms: new_resolution_platforms) + Resolver::Base.new(source_requirements, expanded_dependencies, last_resolve, @platforms, locked_specs: @originally_locked_specs, unlock: unlock, prerelease: gem_version_promoter.pre?, prefer_local: @prefer_local, new_platforms: new_resolution_platforms, explicit_unlocks: @explicit_unlocks) end def new_resolver(base) diff --git a/bundler/lib/bundler/fetcher.rb b/bundler/lib/bundler/fetcher.rb index 0b6ced6f395c..cce005dd34be 100644 --- a/bundler/lib/bundler/fetcher.rb +++ b/bundler/lib/bundler/fetcher.rb @@ -243,6 +243,10 @@ def api_fetcher? fetchers.first.api_fetcher? end + def release_resolution_memory! + @fetchers&.each(&:release_resolution_memory!) + end + def gem_remote_fetcher @gem_remote_fetcher ||= begin require_relative "fetcher/gem_remote_fetcher" diff --git a/bundler/lib/bundler/fetcher/base.rb b/bundler/lib/bundler/fetcher/base.rb index cfec2f8e9419..8012bbc71641 100644 --- a/bundler/lib/bundler/fetcher/base.rb +++ b/bundler/lib/bundler/fetcher/base.rb @@ -38,6 +38,9 @@ def api_fetcher? false end + def release_resolution_memory! + end + private def log_specs(&block) diff --git a/bundler/lib/bundler/fetcher/compact_index.rb b/bundler/lib/bundler/fetcher/compact_index.rb index 52168111fea7..b41d42b794fd 100644 --- a/bundler/lib/bundler/fetcher/compact_index.rb +++ b/bundler/lib/bundler/fetcher/compact_index.rb @@ -63,6 +63,13 @@ def api_fetcher? true end + # The client holds the parsed checksums of all info files in the + # index. Dropping it is always safe because it is rebuilt from the + # local cache on demand. + def release_resolution_memory! + @compact_index_client = nil + end + private def compact_index_client @@ -73,6 +80,12 @@ def compact_index_client end def fetch_gem_infos(names) + # Create the client and update the versions file on this thread. + # Otherwise the workers race to lazily create the client and update + # the versions file concurrently, e.g. when the client was released + # after resolution and is being rebuilt for `bundle cache`. + compact_index_client.available? + in_parallel(names) {|name| compact_index_client.info(name) } rescue TooManyRequestsError # rubygems.org is rate limiting us, slow down. @bundle_worker&.stop diff --git a/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb b/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb index 3159e056880a..d53a7ea52a8a 100644 --- a/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +++ b/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb @@ -9,6 +9,8 @@ def initialize(*) super @pool_size = Bundler.settings.installation_parallelization + ssl_ca_cert = Bundler.settings[:ssl_ca_cert] + @cert_files << ssl_ca_cert if ssl_ca_cert end def request(*args) diff --git a/bundler/lib/bundler/installer.rb b/bundler/lib/bundler/installer.rb index 763223ac008a..61e147ed1b84 100644 --- a/bundler/lib/bundler/installer.rb +++ b/bundler/lib/bundler/installer.rb @@ -195,7 +195,13 @@ def install(options) force = options[:force] local = options[:local] || options[:"prefer-local"] jobs = Bundler.settings.installation_parallelization - spec_installations = ParallelInstaller.call(self, @definition.specs, jobs, standalone, force, local: local) + specs = @definition.specs + # Installing default gems may need the remote index again to cache + # their .gem files, so keep resolution memory around in that case. + # The bundler spec itself is excluded because it comes from the + # metadata source and never goes through that path. + @definition.release_resolution_memory! if specs.none? {|s| s.default_gem? && s.source.is_a?(Source::Rubygems) } + spec_installations = ParallelInstaller.call(self, specs, jobs, standalone, force, local: local) spec_installations.each do |installation| post_install_messages[installation.name] = installation.post_install_message if installation.has_post_install_message? end diff --git a/bundler/lib/bundler/installer/parallel_installer.rb b/bundler/lib/bundler/installer/parallel_installer.rb index fef326ed0a9c..f65f171cb8a8 100644 --- a/bundler/lib/bundler/installer/parallel_installer.rb +++ b/bundler/lib/bundler/installer/parallel_installer.rb @@ -110,10 +110,49 @@ def failed_specs end def install_with_worker - installed_specs = {} - enqueue_specs(installed_specs) + with_jobserver do + installed_specs = {} + enqueue_specs(installed_specs) - process_specs(installed_specs) until finished_installing? + process_specs(installed_specs) until finished_installing? + end + end + + def with_jobserver + # The jobserver hands tokens to child `make` processes through MAKEFLAGS + # using the GNU make `--jobserver-auth` protocol. nmake, the default make + # on mswin, instead reads MAKEFLAGS as bare option letters and aborts + # every native extension build with `fatal error U1065: invalid option + # '-'`. Skip the jobserver when nmake is in use. Other Windows toolchains + # such as mingw use GNU make and keep working through the inherited pipe. + return yield if nmake? + + begin + r, w = IO.pipe + r.close_on_exec = false + w.close_on_exec = false + w.write("*" * @size) + + old_makeflags = ENV["MAKEFLAGS"] + ENV["MAKEFLAGS"] = [old_makeflags, "--jobserver-auth=#{r.fileno},#{w.fileno}"].compact.join(" ") + + yield + ensure + # Restore MAKEFLAGS before closing the pipe so a close failure can't + # leave the process with descriptors that point at a closed pipe. + old_makeflags ? ENV["MAKEFLAGS"] = old_makeflags : ENV.delete("MAKEFLAGS") + + r&.close + w&.close + end + end + + # Mirror how RubyGems' extension builder picks the make program so the + # jobserver is only set up when a GNU-compatible make will consume it. + def nmake? + make = ENV["MAKE"] || ENV["make"] + make ||= "nmake" if RUBY_PLATFORM.include?("mswin") + /\bnmake/i.match?(make.to_s) end def install_serially diff --git a/bundler/lib/bundler/mirror.rb b/bundler/lib/bundler/mirror.rb index 494a6d6aef18..234c6bd37dcf 100644 --- a/bundler/lib/bundler/mirror.rb +++ b/bundler/lib/bundler/mirror.rb @@ -160,18 +160,18 @@ def replies?(mirror) def wait_for_writtable_socket(socket, address, timeout) if IO.select(nil, [socket], nil, timeout) - probe_writtable_socket(socket, address) + probe_writtable_socket(socket) else # TCP Handshake timed out, or there is something dropping packets false end end - def probe_writtable_socket(socket, address) - socket.connect_nonblock(address) - rescue Errno::EISCONN - true - rescue StandardError # Connection failed - false + def probe_writtable_socket(socket) + # Check the pending error on the socket rather than calling + # +connect_nonblock+ a second time. On BSD-based systems such as macOS a + # second connect returns +EISCONN+ even when the asynchronous connect + # failed, which would make a down mirror look reachable. + socket.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR).int == 0 end end end diff --git a/bundler/lib/bundler/resolver.rb b/bundler/lib/bundler/resolver.rb index d7c3bf22c7b2..356314179851 100644 --- a/bundler/lib/bundler/resolver.rb +++ b/bundler/lib/bundler/resolver.rb @@ -437,25 +437,29 @@ def cooldown_hint(specs) def cooldown_excluded?(spec) return false unless spec.respond_to?(:created_at) && spec.created_at return false unless spec.respond_to?(:remote) && spec.remote - return false if pinned_by_lockfile_floor?(spec) + return false if locked_by_lockfile?(spec) days = spec.remote.effective_cooldown return false if days.nil? || days <= 0 (cooldown_now - spec.created_at) < (days * 86_400) end - # A spec sitting exactly at a `>= locked_version` prevent-downgrade floor is - # the version the lockfile currently pins. `bundle update` and `bundle - # outdated` install that floor so resolution never moves a gem backwards. - # Filtering it out for cooldown would then make resolution impossible - # whenever the locked version is itself inside the cooldown window, which is - # exactly what happens to a lockfile written before cooldown was enabled. - # Keep it eligible; gems being explicitly updated carry an exact `=` - # requirement instead and stay subject to the cooldown filter. - def pinned_by_lockfile_floor?(spec) + # A version already written to the lockfile has been adopted, and cooldown + # only governs the adoption of *new* versions, so it must never retract one + # the lockfile already pins. Keying this off the locked specs rather than the + # prevent-downgrade floor matters because that floor is absent on resolutions + # that re-pick a gem from scratch: the auxiliary full update run to compute + # `--update` targets, and the from-scratch retries after a conflict unlocks a + # gem. In those passes the locked version is the only candidate, so filtering + # it out makes an unrelated operation impossible whenever every published + # version matching the requirement sits inside the cooldown window. + # + # Gems named on a `bundle update GEM` command are the exception: the user + # asked to move them, so they stay subject to cooldown and a locked-but-fresh + # release is pushed back to an older one (or fails loudly when none exists). + def locked_by_lockfile?(spec) return false unless defined?(@base) && @base - requirement = base_requirements[spec.name] - return false unless requirement && !requirement.exact? - requirement.requirements.any? {|op, version| op == ">=" && version == spec.version } + return false if @base.explicitly_unlocked?(spec.name) + @base.locked_specs[spec.name].any? {|locked| locked.version == spec.version } end def cooldown_now diff --git a/bundler/lib/bundler/resolver/base.rb b/bundler/lib/bundler/resolver/base.rb index 932a92ff4156..e2b8935aa5c5 100644 --- a/bundler/lib/bundler/resolver/base.rb +++ b/bundler/lib/bundler/resolver/base.rb @@ -8,6 +8,7 @@ class Base attr_reader :packages, :requirements, :source_requirements, :locked_specs def initialize(source_requirements, dependencies, base, platforms, options) + @explicit_unlocks = options.delete(:explicit_unlocks) || [] @source_requirements = source_requirements @locked_specs = options[:locked_specs] @@ -43,6 +44,14 @@ def get_package(name) @packages[name] end + # Gems the user named on a `bundle update GEM` / `bundle lock --update GEM` + # command line. These are the only ones meant to move off their locked + # version, so cooldown keeps applying to them while every other locked gem + # stays exempt. + def explicitly_unlocked?(name) + @explicit_unlocks.include?(name) + end + def base_requirements @base_requirements ||= build_base_requirements end diff --git a/bundler/lib/bundler/rubygems_gem_installer.rb b/bundler/lib/bundler/rubygems_gem_installer.rb index c6b15359613d..1c7398ac798b 100644 --- a/bundler/lib/bundler/rubygems_gem_installer.rb +++ b/bundler/lib/bundler/rubygems_gem_installer.rb @@ -4,6 +4,11 @@ module Bundler class RubyGemsGemInstaller < Gem::Installer + # Cap how many jobserver slots a single gem's `make` may grab so that one + # gem with many recipes doesn't starve the others sharing the pool. Beyond + # a handful of jobs the extra parallelism rarely pays off in practice. + MAX_JOBS_PER_GEM = 3 + def check_executable_overwrite(filename) # Bundler needs to install gems regardless of binstub overwriting end @@ -101,10 +106,18 @@ def generate_bin_script(filename, bindir) end def build_jobs - Bundler.settings[:jobs] || super + @jobserver_read_io&.read_nonblock(MAX_JOBS_PER_GEM, @jobserver_tokens) + acquired_jobs = @jobserver_tokens.empty? ? nil : @jobserver_tokens.size + + acquired_jobs || Bundler.settings[:jobs] || super + rescue IO::WaitReadable, EOFError + 1 end def build_extensions + @jobserver_tokens = +"" + @jobserver_read_io, @jobserver_write_io = connect_to_jobserver + extension_cache_path = options[:bundler_extension_cache_path] extension_dir = spec.extension_dir unless extension_cache_path && extension_dir @@ -128,6 +141,11 @@ def build_extensions FileUtils.cp_r extension_dir, extension_cache_path end end + ensure + unless @jobserver_tokens.empty? + @jobserver_write_io.write(@jobserver_tokens) + @jobserver_write_io.flush + end end def spec @@ -144,6 +162,21 @@ def gem_checksum private + def connect_to_jobserver + return unless ENV["MAKEFLAGS"] + # We append our own --jobserver-auth, so read the last one. Otherwise a + # parent jobserver's descriptors (e.g. `bundle install` run under + # `make -j`) would be picked up instead of the pool ParallelInstaller created. + read_fd, write_fd = ENV["MAKEFLAGS"].scan(/--jobserver-auth=(\d+),(\d+)/).last + + return unless read_fd && write_fd + + # Pass explicit modes. On POSIX, IO.new detects the descriptor's access + # mode, but on Windows it can't, so the write end would default to read + # mode and raise "IOError: not opened for writing" when releasing slots. + [IO.new(read_fd.to_i, "r", autoclose: false), IO.new(write_fd.to_i, "w", autoclose: false)] + end + def prepare_extension_build(extension_dir) SharedHelpers.filesystem_access(extension_dir, :create) do FileUtils.mkdir_p extension_dir diff --git a/bundler/lib/bundler/source/git/git_proxy.rb b/bundler/lib/bundler/source/git/git_proxy.rb index 8094dcaa9d94..78ab747215ca 100644 --- a/bundler/lib/bundler/source/git/git_proxy.rb +++ b/bundler/lib/bundler/source/git/git_proxy.rb @@ -144,6 +144,12 @@ def copy_to(destination, submodules = false) FileUtils.rm_rf(p) end git "clone", "--no-checkout", "--quiet", path.to_s, destination.to_s + # The copy is cloned from the local bare cache, which holds no Git LFS + # objects, so point origin back at the real remote and let git-lfs derive + # its endpoint from there when checking out. Use the credential-filtered + # URI to avoid persisting secrets in the copy's .git/config; auth is left + # to git's credential helper. + git "remote", "set-url", "origin", credential_filtered_uri, dir: destination File.chmod((File.stat(destination).mode | 0o777) & ~File.umask, destination) rescue Errno::EEXIST => e file_path = e.message[%r{.*?((?:[a-zA-Z]:)?/.*)}, 1] diff --git a/bundler/lib/bundler/source/rubygems.rb b/bundler/lib/bundler/source/rubygems.rb index 39a24e300419..873849fa0732 100644 --- a/bundler/lib/bundler/source/rubygems.rb +++ b/bundler/lib/bundler/source/rubygems.rb @@ -25,6 +25,7 @@ def initialize(options = {}) @checksum_store = Checksum::Store.new @gem_installers = {} @gem_installers_mutex = Mutex.new + @remote_specs_mutex = Mutex.new cooldown = options["cooldown"] Array(options["remotes"]).reverse_each {|r| add_remote(r, cooldown: cooldown) } @@ -243,7 +244,7 @@ def cache(spec, custom_path = nil) def cached_built_in_gem(spec, local: false) cached_path = cached_gem(spec) if cached_path.nil? && !local - remote_spec = remote_specs.search(spec).first + remote_spec = remote_spec_for(spec) if remote_spec cached_path = fetch_gem(remote_spec) spec.remote = remote_spec.remote @@ -337,6 +338,12 @@ def clear_cache @cached_specs = nil end + def release_resolution_memory! + @specs = nil + @remote_specs_mutex.synchronize { @remote_specs = nil } + @fetchers&.each(&:release_resolution_memory!) + end + protected def remote_names @@ -414,17 +421,30 @@ def api_fetchers end def remote_specs - @remote_specs ||= Index.build do |idx| - index_fetchers = fetchers - api_fetchers + @remote_specs ||= @remote_specs_mutex.synchronize do + @remote_specs ||= Index.build do |idx| + index_fetchers = fetchers - api_fetchers - if index_fetchers.empty? - fetch_names(api_fetchers, dependency_names, idx) - else - fetch_names(fetchers, nil, idx) + if index_fetchers.empty? + fetch_names(api_fetchers, dependency_names, idx) + else + fetch_names(fetchers, nil, idx) + end end end end + # Looks up a single spec in the remote sources, fetching only its own + # name when the full remote index is not already materialized. + def remote_spec_for(spec) + return remote_specs.search(spec).first if @remote_specs || api_fetchers.empty? + + index = Index.build do |idx| + fetch_names(api_fetchers, [spec.name], idx) + end + index.search(spec).first + end + def fetch_names(fetchers, dependency_names, index) fetchers.each do |f| if dependency_names diff --git a/bundler/lib/bundler/source_list.rb b/bundler/lib/bundler/source_list.rb index 954efbb65fc1..23c73c23f1b2 100644 --- a/bundler/lib/bundler/source_list.rb +++ b/bundler/lib/bundler/source_list.rb @@ -140,6 +140,10 @@ def clear_cache rubygems_sources.each(&:clear_cache) end + def release_resolution_memory! + rubygems_sources.each(&:release_resolution_memory!) + end + private def map_sources(replacement_sources) diff --git a/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt b/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt index b81ecec624af..1ab1c28f4622 100644 --- a/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +++ b/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt @@ -45,12 +45,12 @@ Gem::Specification.new do |spec| <%- end -%> # Uncomment to register a new dependency of your gem - # spec.add_dependency "example-gem", "~> 1.0" + # spec.add_dependency "example-gem", ">= 1.0" <%- if config[:ext] == 'rust' -%> - spec.add_dependency "rb_sys", "~> 0.9.91" + spec.add_dependency "rb_sys", ">= 0.9.128" <%- end -%> <%- if config[:ext] == 'go' -%> - spec.add_dependency "go_gem", "~> 0.2" + spec.add_dependency "go_gem", ">= 0.2" <%- end -%> # For more information and examples about making a new gem, check out our diff --git a/bundler/lib/bundler/version.rb b/bundler/lib/bundler/version.rb index a3a3c49a817a..ab809cdd3f31 100644 --- a/bundler/lib/bundler/version.rb +++ b/bundler/lib/bundler/version.rb @@ -1,7 +1,7 @@ # frozen_string_literal: false module Bundler - VERSION = "4.0.14".freeze + VERSION = "4.0.15".freeze def self.bundler_major_version @bundler_major_version ||= gem_version.segments.first diff --git a/bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb b/bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb index df1a58d84362..a06cf0396c66 100644 --- a/bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb +++ b/bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb @@ -6,6 +6,36 @@ require "bundler/vendored_persistent.rb" RSpec.describe Bundler::Fetcher::GemRemoteFetcher do + describe "#initialize" do + context "when ssl_ca_cert setting is not set" do + before do + allow(Bundler.settings).to receive(:[]).and_call_original + allow(Bundler.settings).to receive(:[]).with(:ssl_ca_cert).and_return(nil) + end + + it "does not append the setting to @cert_files" do + cert_files = subject.instance_variable_get(:@cert_files) + gem_cert_files = Gem::Request.get_cert_files + expect(cert_files).to eq(gem_cert_files) + end + end + + context "when ssl_ca_cert setting is set" do + let(:ca_cert_path) { "/path/to/ca_cert" } + + before do + allow(Bundler.settings).to receive(:[]).and_call_original + allow(Bundler.settings).to receive(:[]).with(:ssl_ca_cert).and_return(ca_cert_path) + end + + it "appends the setting to @cert_files" do + cert_files = subject.instance_variable_get(:@cert_files) + gem_cert_files = Gem::Request.get_cert_files + expect(cert_files).to eq(gem_cert_files + [ca_cert_path]) + end + end + end + describe "Parallel download" do it "download using multiple connections from the pool" do unless Bundler.rubygems.provides?(">= 4.0.0.dev") diff --git a/bundler/spec/bundler/installer/parallel_installer_spec.rb b/bundler/spec/bundler/installer/parallel_installer_spec.rb index 49bcb5310ba9..6a91f05bf8b4 100644 --- a/bundler/spec/bundler/installer/parallel_installer_spec.rb +++ b/bundler/spec/bundler/installer/parallel_installer_spec.rb @@ -76,4 +76,172 @@ parallel_installer.call end end + + describe "connect to make jobserver" do + before do + unless Gem::Installer.private_method_defined?(:build_jobs) + skip "This example is runnable when RubyGems::Installer implements `build_jobs`" + end + + # When run under a parent make that already passes `-j` (e.g. ruby/ruby's + # `make test-bundler-parallel`), RubyGems' extension builder sees the + # inherited MAKEFLAGS as "jobs already requested" and skips appending its + # own `-jN`. That makes the per-gem slot count unobservable, so these + # assertions can never hold. Skip rather than fail in that environment. + if ENV["MAKEFLAGS"]&.match?(/-j\d*(\s|\Z)/) + skip "This example does not work under a parent make jobserver" + end + + require "support/artifice/compact_index" + + @previous_client = Gem::Request::ConnectionPools.client + Gem::Request::ConnectionPools.client = Gem::Net::HTTP + Gem::RemoteFetcher.fetcher.close_all + + build_repo2 do + build_gem "one", &:add_c_extension + build_gem "two", &:add_c_extension + end + + gemfile <<~G + source "https://gem.repo2" + + gem "one" + gem "two" + G + lockfile <<~L + GEM + remote: https://gem.repo2/ + specs: + one (1.0) + two (1.0) + + DEPENDENCIES + one + two + L + + @old_ui = Bundler.ui + Bundler.ui = Bundler::UI::Silent.new + end + + after do + Bundler.ui = @old_ui + Gem::Request::ConnectionPools.client = @previous_client + Artifice.deactivate + end + + let(:definition) do + allow(Bundler).to receive(:root) { bundled_app } + + definition = Bundler::Definition.build(bundled_app.join("Gemfile"), bundled_app.join("Gemfile.lock"), false) + definition.tap(&:setup_domain!) + end + let(:installer) { Bundler::Installer.new(bundled_app, definition) } + let(:gem_one) { definition.specs.find {|spec| spec.name == "one" } } + let(:gem_two) { definition.specs.find {|spec| spec.name == "two" } } + + it "takes all available slots" do + redefine_build_jobs do + Bundler::ParallelInstaller.call(installer, definition.specs, 5, false, true) + end + + # Take 3 slots out of the 5 available. + expect(File.read(File.join(gem_one.extension_dir, "gem_make.out"))).to include("make -j3") + # Take the remaining 2 slots. + expect(File.read(File.join(gem_two.extension_dir, "gem_make.out"))).to include("make -j2") + end + + it "fallback to non parallel when no slots are available" do + redefine_build_jobs do + Bundler::ParallelInstaller.call(installer, definition.specs, 3, false, true) + end + + # Take 3 slots out of the 3 available. + expect(File.read(File.join(gem_one.extension_dir, "gem_make.out"))).to include("make -j3") + # Fallback to one slot (non parallel). + expect(File.read(File.join(gem_two.extension_dir, "gem_make.out"))).to_not include("make -j") + end + + it "uses one jobs when installing serially" do + Bundler.settings.temporary(jobs: 1) do + Bundler::ParallelInstaller.call(installer, definition.specs, 1, false, true) + end + + expect(File.read(File.join(gem_one.extension_dir, "gem_make.out"))).to_not include("make -j") + expect(File.read(File.join(gem_two.extension_dir, "gem_make.out"))).to_not include("make -j") + end + + it "release the job slots" do + build_repo2 do + build_gem "one", &:add_c_extension + build_gem "two" do |spec| + spec.add_c_extension + spec.add_dependency(:one) # ParallelInstaller will wait for `one` to be fully installed. + end + end + + Bundler::ParallelInstaller.call(installer, definition.specs, 3, false, true) + + # Take 3 slots out of the 3 available. + expect(File.read(File.join(gem_one.extension_dir, "gem_make.out"))).to include("make -j3") + # Take 3 slots that were released. + expect(File.read(File.join(gem_two.extension_dir, "gem_make.out"))).to include("make -j3") + end + + def redefine_build_jobs + old_method = Bundler::RubyGemsGemInstaller.instance_method(:build_jobs) + Bundler::RubyGemsGemInstaller.remove_method(:build_jobs) + + # Rendezvous so that "one" grabs its slots first and keeps holding them + # until "two" has grabbed the rest. Blocking on a queue avoids the + # busy-wait and makes the ordering deterministic. + one_acquired = Thread::Queue.new + two_acquired = Thread::Queue.new + + Bundler::RubyGemsGemInstaller.define_method(:build_jobs) do + if spec.name == "one" + value = old_method.bind(self).call + one_acquired << true + two_acquired.pop + elsif spec.name == "two" + one_acquired.pop + value = old_method.bind(self).call + two_acquired << true + end + + value + end + + yield + ensure + Bundler::RubyGemsGemInstaller.remove_method(:build_jobs) + Bundler::RubyGemsGemInstaller.define_method(:build_jobs, old_method) + end + end + + describe "make jobserver with nmake" do + # nmake reads MAKEFLAGS from the environment and treats its contents as + # bare option letters, so a GNU make `--jobserver-auth` aborts the build + # with `fatal error U1065: invalid option '-'`. The jobserver must be + # skipped when nmake is the make program. + it "leaves MAKEFLAGS untouched" do + parallel_installer = Bundler::ParallelInstaller.new(nil, [], 5, false, false) + + makeflags_before = ENV["MAKEFLAGS"] + makeflags_during = :not_yielded + + old_make = ENV["MAKE"] + ENV["MAKE"] = "nmake" + begin + parallel_installer.send(:with_jobserver) do + makeflags_during = ENV["MAKEFLAGS"] + end + ensure + ENV["MAKE"] = old_make + end + + expect(makeflags_during).to eq(makeflags_before) + end + end end diff --git a/bundler/spec/bundler/source/git/git_proxy_spec.rb b/bundler/spec/bundler/source/git/git_proxy_spec.rb index 1f10ca4b0776..e2d3bbb6e7ef 100644 --- a/bundler/spec/bundler/source/git/git_proxy_spec.rb +++ b/bundler/spec/bundler/source/git/git_proxy_spec.rb @@ -98,6 +98,45 @@ end end + describe "#copy_to" do + let(:revision) { "abc123" } + let(:destination) { tmp("git-proxy-copy") } + + before do + # The bare cache (`path`) is the clone source, so stub it away and only + # exercise the post-clone wiring of the working copy at `destination`. + allow(File).to receive(:stat).and_call_original + allow(File).to receive(:stat).with(destination).and_return(double("File::Stat", mode: 0o755)) + allow(File).to receive(:chmod) + allow(git_proxy).to receive(:capture).and_return(["", "", clone_result]) + end + + it "points the working copy's origin back at the real remote" do + expect(git_proxy).to receive(:capture).with(["remote", "set-url", "origin", uri], destination).and_return(["", "", clone_result]) + git_proxy.copy_to(destination) + end + + it "does not persist credentials in the working copy's origin" do + Bundler.settings.temporary(uri => "u:p") do + credentialed_uri = "https://u:p@github.com/ruby/rubygems.git" + expect(git_proxy).not_to receive(:capture).with(["remote", "set-url", "origin", credentialed_uri], destination) + expect(git_proxy).to receive(:capture).with(["remote", "set-url", "origin", uri], destination).and_return(["", "", clone_result]) + git_proxy.copy_to(destination) + end + end + + context "when the remote URI embeds credentials" do + let(:uri) { "https://user:secret@github.com/ruby/rubygems.git" } + + it "strips the password before writing origin" do + filtered_uri = "https://user@github.com/ruby/rubygems.git" + expect(git_proxy).not_to receive(:capture).with(["remote", "set-url", "origin", uri], destination) + expect(git_proxy).to receive(:capture).with(["remote", "set-url", "origin", filtered_uri], destination).and_return(["", "", clone_result]) + git_proxy.copy_to(destination) + end + end + end + describe "#version" do context "with a normal version number" do before do diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index e20b79acde9e..eeecd813fee7 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -1389,7 +1389,7 @@ def run expect(gem_make_out).not_to include("make -j8") end - it "pass down the BUNDLE_JOBS to RubyGems when running the compilation of an extension" do + it "uses 3 slots from the available pool when running the compilation of an extension" do ENV.delete("MAKEFLAGS") install_gemfile(<<~G, env: { "BUNDLE_JOBS" => "8" }) @@ -1399,10 +1399,10 @@ def run gem_make_out = File.read(File.join(@gemspec.extension_dir, "gem_make.out")) - expect(gem_make_out).to include("make -j8") + expect(gem_make_out).to include("make -j3") end - it "uses nprocessors by default" do + it "consumes 3 slots from the pool when BUNDLE_JOBS isn't set" do ENV.delete("MAKEFLAGS") install_gemfile(<<~G) @@ -1412,7 +1412,7 @@ def run gem_make_out = File.read(File.join(@gemspec.extension_dir, "gem_make.out")) - expect(gem_make_out).to include("make -j#{Etc.nprocessors + 1}") + expect(gem_make_out).to include("make -j3") end end diff --git a/bundler/spec/install/cooldown_spec.rb b/bundler/spec/install/cooldown_spec.rb index 01e87be663c1..8d42f4ad8255 100644 --- a/bundler/spec/install/cooldown_spec.rb +++ b/bundler/spec/install/cooldown_spec.rb @@ -107,9 +107,52 @@ build_gem "upgradable", "3.0.0" do |s| s.date = now - (30 * 86_400) end + + # every published version is inside the cooldown window + build_gem "fresh_gem", "0.3.1" do |s| + s.date = now - (1 * 86_400) + end + build_gem "fresh_gem", "0.3.2" do |s| + s.date = now - (1 * 86_400) + end end end + it "keeps a locked all-in-cooldown gem when explicitly updating an unrelated gem" do + # Updating ripe_gem runs an auxiliary full-update resolution to compute its + # target version. That pass carries no prevent-downgrade floor, so without + # exempting locked versions it re-picks fresh_gem from an empty + # cooldown-filtered candidate set (every published 0.3.x is in the window) + # and fails an update that never touched fresh_gem. + gemfile <<-G + source "https://gem.repo3", cooldown: 7 + gem "fresh_gem", "~> 0.3" + gem "ripe_gem" + G + + lockfile <<-L + GEM + remote: https://gem.repo3/ + specs: + fresh_gem (0.3.2) + ripe_gem (1.0.0) + + PLATFORMS + #{lockfile_platforms} + + DEPENDENCIES + fresh_gem (~> 0.3) + ripe_gem + + BUNDLED WITH + #{Bundler::VERSION} + L + + bundle "lock --update ripe_gem", artifice: "compact_index_cooldown" + + expect(lockfile).to include("fresh_gem (0.3.2)") + end + it "excludes versions within the cooldown window" do gemfile <<-G source "https://gem.repo3" @@ -641,6 +684,34 @@ expect(lockfile).not_to include("ripe_gem (2.0.0)") end + it "still applies cooldown and downgrades a gem explicitly updated via bundle lock --update" do + gemfile <<-G + source "https://gem.repo3", cooldown: 7 + gem "ripe_gem" + G + + lockfile <<-L + GEM + remote: https://gem.repo3/ + specs: + ripe_gem (2.0.0) + + PLATFORMS + #{lockfile_platforms} + + DEPENDENCIES + ripe_gem + + BUNDLED WITH + #{Bundler::VERSION} + L + + bundle "lock --update ripe_gem", artifice: "compact_index_cooldown" + + expect(lockfile).to include("ripe_gem (1.0.0)") + expect(lockfile).not_to include("ripe_gem (2.0.0)") + end + it "ignores cooldown and installs the locked version when frozen" do # Frozen installs read the lockfile instead of resolving, so cooldown has # no say. A version already locked inside the window must still install. diff --git a/bundler/spec/install/gemfile/git_spec.rb b/bundler/spec/install/gemfile/git_spec.rb index 89172fdf10a6..24cabab395a3 100644 --- a/bundler/spec/install/gemfile/git_spec.rb +++ b/bundler/spec/install/gemfile/git_spec.rb @@ -31,6 +31,14 @@ expect(out).to eq("WIN") end + it "points the installed copy's origin at the real remote, not the local cache" do + install_base_gemfile + + installed = Pathname.glob(default_bundle_path("bundler/gems/foo-1.0-*")).first + origin = git("config --get remote.origin.url", installed).strip + expect(origin).to eq(lib_path("foo-1.0").to_s) + end + it "does not (yet?) enforce CHECKSUMS" do build_git "foo" revision = revision_for(lib_path("foo-1.0")) diff --git a/bundler/spec/install/yanked_spec.rb b/bundler/spec/install/yanked_spec.rb index 08d6bbdc2a3a..308fbc3be64d 100644 --- a/bundler/spec/install/yanked_spec.rb +++ b/bundler/spec/install/yanked_spec.rb @@ -26,6 +26,8 @@ G expect(err).to include("Your bundle is locked to foo (10.0.0)") + expect(err).to include("either the author of foo (10.0.0) has removed it, or you no longer have access to that source") + expect(err).to include("check your credentials and access rights") end context "when a platform specific yanked version is included in the lockfile, and a generic variant is available remotely" do diff --git a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock index 812a0a0ce2ea..4f53583462dd 100644 --- a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock @@ -46,4 +46,4 @@ DEPENDENCIES tapioca BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock index fbf393c5218d..f583bf36df21 100644 --- a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock @@ -36,4 +36,4 @@ DEPENDENCIES warbler! BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/bundler/spec/support/path.rb b/bundler/spec/support/path.rb index 0a534dd40e44..f7a33ff473f0 100644 --- a/bundler/spec/support/path.rb +++ b/bundler/spec/support/path.rb @@ -338,7 +338,9 @@ def man_tracked_files_glob end def ruby_core_tarball? - !git_root.join(".git").directory? + # A tarball checkout has no `.git` entry at all. Note that `.git` may be + # a file rather than a directory in linked git worktrees. + !git_root.join(".git").exist? end def rubocop_gemfile_basename diff --git a/lib/rubygems.rb b/lib/rubygems.rb index b45abcad19ad..9767692c654d 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -9,7 +9,7 @@ require "rbconfig" module Gem - VERSION = "4.0.14" + VERSION = "4.0.15" end require_relative "rubygems/defaults" diff --git a/lib/rubygems/ext/builder.rb b/lib/rubygems/ext/builder.rb index e00cf159da3e..53a02f61f31b 100644 --- a/lib/rubygems/ext/builder.rb +++ b/lib/rubygems/ext/builder.rb @@ -41,8 +41,9 @@ def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil, targets = [ # nmake doesn't support parallel build unless is_nmake have_make_arguments = make_program.size > 1 + n_jobs ||= 0 - if !have_make_arguments && !ENV["MAKEFLAGS"] && n_jobs + if !have_make_arguments && n_jobs > 1 && !ENV["MAKEFLAGS"]&.match(/-j\d*(\s|\Z)/) make_program << "-j#{n_jobs}" end end diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb index 7bf4d0f08653..98c7a4a8d8a9 100644 --- a/lib/rubygems/package.rb +++ b/lib/rubygems/package.rb @@ -161,7 +161,7 @@ def self.new(gem, security_policy = nil) return super unless gem.start return super unless gem.start.include? "MD5SUM =" - Gem::Package::Old.new gem + Gem::Package::Old.new gem, security_policy end ## diff --git a/lib/rubygems/safe_marshal/reader.rb b/lib/rubygems/safe_marshal/reader.rb index 4362d65fd681..4d5796f93703 100644 --- a/lib/rubygems/safe_marshal/reader.rb +++ b/lib/rubygems/safe_marshal/reader.rb @@ -28,6 +28,8 @@ class NegativeLengthError < Error def initialize(io) @io = io + @object_links = {} + @symbol_links = {} end def read! @@ -191,7 +193,7 @@ def read_object_with_ivars def read_symbol_link offset = read_integer - Elements::SymbolLink.new(offset) + @symbol_links[offset] ||= Elements::SymbolLink.new(offset) end def read_user_marshal @@ -200,43 +202,9 @@ def read_user_marshal Elements::UserMarshal.new(name, data) end - # profiling bundle install --full-index shows that - # offset 6 is by far the most common object link, - # so we special case it to avoid allocating a new - # object a third of the time. - # the following are all the object links that - # appear more than 10000 times in my profiling - - OBJECT_LINKS = { - 6 => Elements::ObjectLink.new(6).freeze, - 30 => Elements::ObjectLink.new(30).freeze, - 81 => Elements::ObjectLink.new(81).freeze, - 34 => Elements::ObjectLink.new(34).freeze, - 38 => Elements::ObjectLink.new(38).freeze, - 50 => Elements::ObjectLink.new(50).freeze, - 91 => Elements::ObjectLink.new(91).freeze, - 42 => Elements::ObjectLink.new(42).freeze, - 46 => Elements::ObjectLink.new(46).freeze, - 150 => Elements::ObjectLink.new(150).freeze, - 100 => Elements::ObjectLink.new(100).freeze, - 104 => Elements::ObjectLink.new(104).freeze, - 108 => Elements::ObjectLink.new(108).freeze, - 242 => Elements::ObjectLink.new(242).freeze, - 246 => Elements::ObjectLink.new(246).freeze, - 139 => Elements::ObjectLink.new(139).freeze, - 143 => Elements::ObjectLink.new(143).freeze, - 114 => Elements::ObjectLink.new(114).freeze, - 308 => Elements::ObjectLink.new(308).freeze, - 200 => Elements::ObjectLink.new(200).freeze, - 54 => Elements::ObjectLink.new(54).freeze, - 62 => Elements::ObjectLink.new(62).freeze, - 1_286_245 => Elements::ObjectLink.new(1_286_245).freeze, - }.freeze - private_constant :OBJECT_LINKS - def read_object_link offset = read_integer - OBJECT_LINKS[offset] || Elements::ObjectLink.new(offset) + @object_links[offset] ||= Elements::ObjectLink.new(offset) end EMPTY_HASH = Elements::Hash.new([].freeze).freeze diff --git a/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock b/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock index 6302e9ee37b6..d6c49c3de13f 100644 --- a/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +++ b/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock @@ -13,16 +13,14 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.1" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "bitflags", "cexpr", "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", + "itertools", "proc-macro2", "quote", "regex", @@ -70,6 +68,12 @@ dependencies = [ "rb-sys", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "glob" version = "0.3.0" @@ -77,16 +81,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] -name = "lazy_static" -version = "1.4.0" +name = "itertools" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] [[package]] -name = "lazycell" -version = "1.3.0" +name = "lazy_static" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" @@ -126,17 +133,11 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -152,18 +153,18 @@ dependencies = [ [[package]] name = "rb-sys" -version = "0.9.117" +version = "0.9.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f900d1ce4629a2ebffaf5de74bd8f9c1188d4c5ed406df02f97e22f77a006f44" +checksum = "45ca28513560e56cfb79a62b1fce363c73af170a182024ce880c77ee9429920a" dependencies = [ "rb-sys-build", ] [[package]] name = "rb-sys-build" -version = "0.9.117" +version = "0.9.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e9c857028f631056bcd6d88cec390c751e343ce2223ddb26d23eb4a151d59" +checksum = "ce04b2c55eff3a21aaa623fcc655d94373238e72cac6b3e1a3641ff31649f99a" dependencies = [ "bindgen", "lazy_static", @@ -193,9 +194,9 @@ checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "shell-words" diff --git a/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml b/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml index e26fa352a811..056567c7086f 100644 --- a/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +++ b/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml @@ -7,4 +7,4 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -rb-sys = "0.9.117" +rb-sys = "0.9.128" diff --git a/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock b/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock index 4bbe8932a2b8..806d51d3a1c0 100644 --- a/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +++ b/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock @@ -13,16 +13,14 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.1" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "bitflags", "cexpr", "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", + "itertools", "proc-macro2", "quote", "regex", @@ -63,6 +61,12 @@ dependencies = [ "libloading", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "glob" version = "0.3.0" @@ -70,16 +74,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] -name = "lazy_static" -version = "1.4.0" +name = "itertools" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] [[package]] -name = "lazycell" -version = "1.3.0" +name = "lazy_static" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" @@ -119,17 +126,11 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -145,18 +146,18 @@ dependencies = [ [[package]] name = "rb-sys" -version = "0.9.117" +version = "0.9.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f900d1ce4629a2ebffaf5de74bd8f9c1188d4c5ed406df02f97e22f77a006f44" +checksum = "45ca28513560e56cfb79a62b1fce363c73af170a182024ce880c77ee9429920a" dependencies = [ "rb-sys-build", ] [[package]] name = "rb-sys-build" -version = "0.9.117" +version = "0.9.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e9c857028f631056bcd6d88cec390c751e343ce2223ddb26d23eb4a151d59" +checksum = "ce04b2c55eff3a21aaa623fcc655d94373238e72cac6b3e1a3641ff31649f99a" dependencies = [ "bindgen", "lazy_static", @@ -193,9 +194,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "shell-words" diff --git a/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml b/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml index 55d5c5bde7f6..f0ddeeb91c60 100644 --- a/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +++ b/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml @@ -7,4 +7,4 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -rb-sys = "0.9.117" +rb-sys = "0.9.128" diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb index fbfc1d2aa0de..1c3cf2e1784a 100644 --- a/test/rubygems/test_gem_package.rb +++ b/test/rubygems/test_gem_package.rb @@ -33,6 +33,25 @@ def test_class_new_old_format assert package.spec end + def test_class_new_old_format_forwards_security_policy + pend "jruby can't require the simple_gem file" if Gem.java_platform? + pend "openssl is missing" unless Gem::HAVE_OPENSSL + require_relative "simple_gem" + File.open "old_format.gem", "wb" do |io| + io.write SIMPLE_GEM + end + + package = Gem::Package.new "old_format.gem", Gem::Security::HighSecurity + + e = assert_raise Gem::Security::Exception do + package.verify + end + + assert_equal "old format gems do not contain signatures " \ + "and cannot be verified", + e.message + end + def test_add_checksums gem_io = StringIO.new diff --git a/tool/bundler/dev_gems.rb b/tool/bundler/dev_gems.rb index 91ac5628f1f3..babf499e12aa 100644 --- a/tool/bundler/dev_gems.rb +++ b/tool/bundler/dev_gems.rb @@ -5,7 +5,7 @@ gem "test-unit", "~> 3.0" gem "test-unit-ruby-core" gem "rake", "~> 13.1" -gem "rb_sys" +gem "rb_sys", ">= 0.9.128" gem "turbo_tests", "~> 2.2.3" gem "parallel_tests", "~> 4.10.1" diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index 6eb462bce846..544778136d25 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -3,39 +3,39 @@ GEM specs: compact_index (0.15.0) diff-lcs (1.6.2) - kramdown (2.5.1) - rexml (>= 3.3.9) + kramdown (2.5.2) + rexml (>= 3.4.4) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) mini_portile2 (2.8.9) - mustache (1.1.1) - nokogiri (1.19.0) + mustache (1.1.2) + nokogiri (1.19.3) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.19.0-aarch64-linux-gnu) + nokogiri (1.19.3-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.19.0-arm-linux-gnu) + nokogiri (1.19.3-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.19.0-arm64-darwin) + nokogiri (1.19.3-arm64-darwin) racc (~> 1.4) - nokogiri (1.19.0-java) + nokogiri (1.19.3-java) racc (~> 1.4) - nokogiri (1.19.0-x64-mingw-ucrt) + nokogiri (1.19.3-x64-mingw-ucrt) racc (~> 1.4) - nokogiri (1.19.0-x86_64-darwin) + nokogiri (1.19.3-x86_64-darwin) racc (~> 1.4) - nokogiri (1.19.0-x86_64-linux-gnu) + nokogiri (1.19.3-x86_64-linux-gnu) racc (~> 1.4) - parallel (1.27.0) + parallel (1.28.0) parallel_tests (4.10.1) parallel power_assert (3.0.1) racc (1.8.1) racc (1.8.1-java) - rake (13.3.1) - rake-compiler-dock (1.9.1) - rb_sys (0.9.117) - rake-compiler-dock (= 1.9.1) + rake (13.4.2) + rake-compiler-dock (1.12.0) + rb_sys (0.9.128) + rake-compiler-dock (= 1.12.0) rexml (3.4.4) ronn-ng (0.10.1) kramdown (~> 2, >= 2.1) @@ -51,16 +51,16 @@ GEM rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.7) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.6) + rspec-support (3.13.7) rubygems-generate_index (1.1.3) compact_index (~> 0.15.0) - test-unit (3.7.1) + test-unit (3.7.7) power_assert - test-unit-ruby-core (1.0.13) - test-unit + test-unit-ruby-core (1.0.14) + test-unit (>= 3.7.2) turbo_tests (2.2.5) parallel_tests (>= 3.3.0, < 5) rspec (>= 3.10) @@ -83,7 +83,7 @@ DEPENDENCIES parallel (~> 1.19) parallel_tests (~> 4.10.1) rake (~> 13.1) - rb_sys + rb_sys (>= 0.9.128) ronn-ng (~> 0.10.1) rspec-core (~> 3.12) rspec-expectations (~> 3.12) @@ -96,37 +96,37 @@ DEPENDENCIES CHECKSUMS compact_index (0.15.0) sha256=5c6c404afca8928a7d9f4dde9524f6e1610db17e675330803055db282da84a8b diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 - kramdown (2.5.1) sha256=87bbb6abd9d3cebe4fc1f33e367c392b4500e6f8fa19dd61c0972cf4afe7368c + kramdown (2.5.2) sha256=1ba542204c66b6f9111ff00dcc26075b95b220b07f2905d8261740c82f7f02fa kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 mini_portile2 (2.8.9) sha256=0cd7c7f824e010c072e33f68bc02d85a00aeb6fce05bb4819c03dfd3c140c289 - mustache (1.1.1) sha256=90891fdd50b53919ca334c8c1031eada1215e78d226d5795e523d6123a2717d0 - nokogiri (1.19.0) sha256=e304d21865f62518e04f2bf59f93bd3a97ca7b07e7f03952946d8e1c05f45695 - nokogiri (1.19.0-aarch64-linux-gnu) sha256=11a97ecc3c0e7e5edcf395720b10860ef493b768f6aa80c539573530bc933767 - nokogiri (1.19.0-arm-linux-gnu) sha256=572a259026b2c8b7c161fdb6469fa2d0edd2b61cd599db4bbda93289abefbfe5 - nokogiri (1.19.0-arm64-darwin) sha256=0811dfd936d5f6dd3f6d32ef790568bf29b2b7bead9ba68866847b33c9cf5810 - nokogiri (1.19.0-java) sha256=5f3a70e252be641d8a4099f7fb4cc25c81c632cb594eec9b4b8f2ca8be4374f3 - nokogiri (1.19.0-x64-mingw-ucrt) sha256=05d7ed2d95731edc9bef2811522dc396df3e476ef0d9c76793a9fca81cab056b - nokogiri (1.19.0-x86_64-darwin) sha256=1dad56220b603a8edb9750cd95798bffa2b8dd9dd9aa47f664009ee5b43e3067 - nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c - parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 + mustache (1.1.2) sha256=d420243400354da78ded2d81541b381ad8d94e8e9b95022d0d71d66f8ef36c00 + nokogiri (1.19.3) sha256=78312cbac32a40c812780d9678221b79d51288eec00054c1a8d15f7ce05960e8 + nokogiri (1.19.3-aarch64-linux-gnu) sha256=46b89e5d7b9e844c2ee360794240c6ea2a4e6fa0c5892a4ed487db621224b639 + nokogiri (1.19.3-arm-linux-gnu) sha256=3919d5ffc334ad778a4a9eb88fda7dcb8b1fb58c8a52ac640c6dcd2f038e774f + nokogiri (1.19.3-arm64-darwin) sha256=71b9bd424b1b7abc18b05052a1a3cfd3627abdca62be280854cc411791357e42 + nokogiri (1.19.3-java) sha256=40ea6ebf5cf2005dae1dee26dd557d3afb41fb6de6c9764aca8cf06fdb841db1 + nokogiri (1.19.3-x64-mingw-ucrt) sha256=8bb7132cad356c879a1286eaabcb5e68326cb2490317984280fbc62f456d506a + nokogiri (1.19.3-x86_64-darwin) sha256=77f3fba57d46c53ab31e62fc6c28f705109d1bf6264356c76f132b2be5728d4d + nokogiri (1.19.3-x86_64-linux-gnu) sha256=2f5078620fe12e83669b5b17311b32532a8153d02eee7ad06948b926d6080976 + parallel (1.28.0) sha256=33e6de1484baf2524792d178b0913fc8eb94c628d6cfe45599ad4458c638c970 parallel_tests (4.10.1) sha256=df05458c691462b210f7a41fc2651d4e4e8a881e8190e6d1e122c92c07735d70 power_assert (3.0.1) sha256=8ce9876716cc74e863fcd4cdcdc52d792bd983598d1af3447083a3a9a4d34103 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 - rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c - rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 + rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701 + rake-compiler-dock (1.12.0) sha256=f13205c2738f3d2053afcd03491a9e4541b22a59a0bfc53fc8bc883bd8188023 + rb_sys (0.9.128) sha256=9ab81f4d6d4e1895de18762232362d1264475aa7035756b50441e442130538fd rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 ronn-ng (0.10.1) sha256=4eeb0185c0fbfa889efed923b5b50e949cd869e7d82ac74138acd0c9c7165ec0 rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 - rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c - rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 + rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47 + rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c rubygems-generate_index (1.1.3) sha256=3571424322666598e9586a906485e1543b617f87644913eaf137d986a3393f5c - test-unit (3.7.1) sha256=be595279c3427c00f57600db3dd59b6a9596e1f1e447864b158608d8e0d91570 - test-unit-ruby-core (1.0.13) sha256=0c08e61b3b97060028a47d8fc4827de077fdbfc26ef80b4afd9035b9e15ecc5b + test-unit (3.7.7) sha256=3c89d5ff0690a16bef9946156c4624390402b9d54dfcf4ce9cbd5b06bead1e45 + test-unit-ruby-core (1.0.14) sha256=d2e997796c9c5c5e8e31ac014f83a473ff5c2523a67cfa491b08893e12d43d22 turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/tool/bundler/lint_gems.rb.lock b/tool/bundler/lint_gems.rb.lock index c008ecebfea6..d822dfa7def6 100644 --- a/tool/bundler/lint_gems.rb.lock +++ b/tool/bundler/lint_gems.rb.lock @@ -2,66 +2,66 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.3) - chef-utils (18.8.54) + chef-utils (19.2.110) concurrent-ruby - concurrent-ruby (1.3.5) - ffi (1.17.2-x64-mingw-ucrt) + concurrent-ruby (1.3.6) + ffi (1.17.4-x64-mingw-ucrt) ffi-win32-extensions (1.0.4) ffi - json (2.16.0) - json (2.16.0-java) - kramdown (2.5.1) - rexml (>= 3.3.9) + json (2.19.4) + json (2.19.4-java) + kramdown (2.5.2) + rexml (>= 3.4.4) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) language_server-protocol (3.17.0.5) lint_roller (1.1.0) - mdl (0.13.0) + mdl (0.15.0) kramdown (~> 2.3) kramdown-parser-gfm (~> 1.1) - mixlib-cli (~> 2.1, >= 2.1.1) - mixlib-config (>= 2.2.1, < 4) + mixlib-cli + mixlib-config mixlib-shellout mixlib-cli (2.1.8) mixlib-config (3.0.27) tomlrb - mixlib-shellout (3.3.9) + mixlib-shellout (3.4.10) chef-utils - mixlib-shellout (3.3.9-x64-mingw-ucrt) + mixlib-shellout (3.4.10-x64-mingw-ucrt) chef-utils ffi-win32-extensions (~> 1.0.3) win32-process (~> 0.9) wmi-lite (~> 1.0) - parallel (1.27.0) - parser (3.3.10.0) + parallel (2.1.0) + parser (3.3.11.1) ast (~> 2.4.1) racc - prism (1.6.0) + prism (1.9.0) racc (1.8.1) racc (1.8.1-java) rainbow (3.1.1) - regexp_parser (2.11.3) + regexp_parser (2.12.0) rexml (3.4.4) - rubocop (1.81.7) + rubocop (1.86.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) - parallel (~> 1.10) + parallel (>= 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.47.1, < 2.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.48.0) + rubocop-ast (1.49.1) parser (>= 3.3.7.2) - prism (~> 1.4) + prism (~> 1.7) rubocop-performance (1.26.1) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (1.13.0) - tomlrb (2.0.3) + tomlrb (2.0.4) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) unicode-emoji (4.2.0) @@ -85,38 +85,38 @@ DEPENDENCIES CHECKSUMS ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 - chef-utils (18.8.54) sha256=651c6c53291a520eddf636c7be598169fa52a07c41706b35e2e2a262c1eb0dc7 - concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6 - ffi (1.17.2-x64-mingw-ucrt) sha256=15d2da54ee578657a333a6059ed16eaba1cbd794ceecd15944825b65c8381ac0 + chef-utils (19.2.110) sha256=477c9a755922b1695ddf3488458ae9d2fc2443d83fa1381795e7307804276ff5 + concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab + ffi (1.17.4-x64-mingw-ucrt) sha256=f6ff9618cfccc494138bddade27aa06c74c6c7bc367a1ea1103d80c2fcb9ed35 ffi-win32-extensions (1.0.4) sha256=9d01a511a7ea957d8f73a06892f3ccfa49dcb32be95c4edb86b5ba3103edea00 - json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 - json (2.16.0-java) sha256=ee4c6fcc8f4efd156414b3e253e51675ec95bdfc79230b0bd5ec3a6139ed6d22 - kramdown (2.5.1) sha256=87bbb6abd9d3cebe4fc1f33e367c392b4500e6f8fa19dd61c0972cf4afe7368c + json (2.19.4) sha256=670a7d333fb3b18ca5b29cb255eb7bef099e40d88c02c80bd42a3f30fe5239ac + json (2.19.4-java) sha256=f7f0fe701e2bef648497b0eb59422f5b453e5038cfbaf9cde09af20e22241efb + kramdown (2.5.2) sha256=1ba542204c66b6f9111ff00dcc26075b95b220b07f2905d8261740c82f7f02fa kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 - mdl (0.13.0) sha256=207a5e26a4c4e19095b39be0201834a69d31d838982a57eba343918dba1c86a8 + mdl (0.15.0) sha256=5fb62937cf49b3130a6cd0296981f55a8596bf559e65273d346a800ff57cfdf5 mixlib-cli (2.1.8) sha256=e6f27be34d580f6ed71731ca46b967e57793a627131c1f6e1ed2dad39ea3bdf9 mixlib-config (3.0.27) sha256=d7748b1898e4f16502afec1de00b5ad65c6de405114b1b0c65ec61b1a9100148 - mixlib-shellout (3.3.9) sha256=0edf5ee3b07526de8eb5219af051752fb8df2691dc030ce233e248dedf4fd388 - mixlib-shellout (3.3.9-x64-mingw-ucrt) sha256=0169db7b7dc6304903c7205588ca1194b3d3aab722c1f0090c2a8f42f67a6c57 - parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 - parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 - prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b + mixlib-shellout (3.4.10) sha256=7c8a6c5a6c90922a8871ed682129c19c9b1a514eedea2e867077229e6a415f0c + mixlib-shellout (3.4.10-x64-mingw-ucrt) sha256=77defd5c445db201aa0f3e5602173953c538755c5626675f63dbca40e2042d2a + parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356 + parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54 + prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 - rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 - rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 + rubocop (1.86.1) sha256=44415f3f01d01a21e01132248d2fd0867572475b566ca188a0a42133a08d4531 + rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035 rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 - tomlrb (2.0.3) sha256=c2736acf24919f793334023a4ff396c0647d93fce702a73c9d348deaa815d4f7 + tomlrb (2.0.4) sha256=262f77947ac3ac9b3366a0a5940ecd238300c553e2e14f22009e2afcd2181b99 unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f win32-process (0.10.0) sha256=ad2d401c62f56f922f3fabb7a55fd2b65ea85becbad3b5d9093ffe59c386f542 wmi-lite (1.0.7) sha256=116ef5bb470dbe60f58c2db9047af3064c16245d6562c646bc0d90877e27ddda BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/tool/bundler/release_gems.rb.lock b/tool/bundler/release_gems.rb.lock index 4c25562f7cf5..959e6bb29343 100644 --- a/tool/bundler/release_gems.rb.lock +++ b/tool/bundler/release_gems.rb.lock @@ -1,11 +1,11 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) aws-eventstream (1.4.0) - aws-partitions (1.1181.0) - aws-sdk-core (3.237.0) + aws-partitions (1.1243.0) + aws-sdk-core (3.246.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -13,19 +13,19 @@ GEM bigdecimal jmespath (~> 1, >= 1.6.1) logger - aws-sdk-kms (1.117.0) - aws-sdk-core (~> 3, >= 3.234.0) + aws-sdk-kms (1.124.0) + aws-sdk-core (~> 3, >= 3.244.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.203.1) - aws-sdk-core (~> 3, >= 3.234.0) + aws-sdk-s3 (1.220.0) + aws-sdk-core (~> 3, >= 3.244.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) base64 (0.3.0) - bigdecimal (3.3.1) - bigdecimal (3.3.1-java) - faraday (2.14.0) + bigdecimal (4.1.2) + bigdecimal (4.1.2-java) + faraday (2.14.1) faraday-net_http (>= 2.0, < 3.5) json logger @@ -34,15 +34,15 @@ GEM faraday-retry (2.4.0) faraday (~> 2.0) jmespath (1.6.2) - json (2.18.1) - json (2.18.1-java) + json (2.19.4) + json (2.19.4-java) logger (1.7.0) net-http (0.9.1) uri (>= 0.11.1) octokit (7.2.0) faraday (>= 1, < 3) sawyer (~> 0.9) - public_suffix (6.0.2) + public_suffix (7.0.5) sawyer (0.9.3) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) @@ -63,28 +63,28 @@ DEPENDENCIES octokit (~> 7.0) CHECKSUMS - addressable (2.8.7) sha256=462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232 + addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af aws-eventstream (1.4.0) sha256=116bf85c436200d1060811e6f5d2d40c88f65448f2125bc77ffce5121e6e183b - aws-partitions (1.1181.0) sha256=ad818435b31c5ed60f9332896dc83bfa7eff9661af93935b468f012e07c8ea7d - aws-sdk-core (3.237.0) sha256=9a8b14167a75be07ba7cfd9d27075aa12f1ed897d6eaed808a1c6a20963af32b - aws-sdk-kms (1.117.0) sha256=d3d655ae825ca0d6715555e2543e062fe14ccacf30bace04f3aefd6005b76c14 - aws-sdk-s3 (1.203.1) sha256=edaa6ecc641ffa8564f38df237876876ac679b937ca8cd7873f6f9857d8f99b9 + aws-partitions (1.1243.0) sha256=2751071202381b7bb115a1f592d699c73bb5ac9ad4e5aece6a14b1dabc265c43 + aws-sdk-core (3.246.0) sha256=393864ec8948560e69fcccc2e4d256b40c7028eb98930608dd295279e3c4ddcc + aws-sdk-kms (1.124.0) sha256=40d00ab706d7e49fd620270bd0dcb546f266295abdd49b54fec2611e2a41f37c + aws-sdk-s3 (1.220.0) sha256=237fda5e6ac7ecdd9c848e27187bfdc370edad5c5a141aeec389fb450fa28c7c aws-sigv4 (1.12.1) sha256=6973ff95cb0fd0dc58ba26e90e9510a2219525d07620c8babeb70ef831826c00 base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b - bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218 - bigdecimal (3.3.1-java) sha256=ed496e9c075dd501d58a519707bf704dba82a0cef658c719c929789551ec7d85 - faraday (2.14.0) sha256=8699cfe5d97e55268f2596f9a9d5a43736808a943714e3d9a53e6110593941cd + bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd + bigdecimal (4.1.2-java) sha256=ccc836eab720a525529f70ed0de26a206fdbc9a9e8ac67b3b4ac7318b03e114d + faraday (2.14.1) sha256=a43cceedc1e39d188f4d2cdd360a8aaa6a11da0c407052e426ba8d3fb42ef61c faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1 - json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986 - json (2.18.1-java) sha256=06f20d8b4e261f2659d310873bfa09c3bb16550e8990efe27f6f79727eb6fa31 + json (2.19.4) sha256=670a7d333fb3b18ca5b29cb255eb7bef099e40d88c02c80bd42a3f30fe5239ac + json (2.19.4-java) sha256=f7f0fe701e2bef648497b0eb59422f5b453e5038cfbaf9cde09af20e22241efb logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996 octokit (7.2.0) sha256=7032d968d03177ee7a29e3bd4782fc078215cca4743db0dfc66a49feb9411907 - public_suffix (6.0.2) sha256=bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394 + public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623 sawyer (0.9.3) sha256=0d0f19298408047037638639fe62f4794483fb04320269169bd41af2bdcf5e41 uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/tool/bundler/rubocop_gems.rb b/tool/bundler/rubocop_gems.rb index ab13b1b2c374..e6d6dc5b6ec5 100644 --- a/tool/bundler/rubocop_gems.rb +++ b/tool/bundler/rubocop_gems.rb @@ -10,4 +10,4 @@ gem "rake-compiler" gem "rspec" gem "test-unit" -gem "rb_sys" +gem "rb_sys", ">= 0.9.128" diff --git a/tool/bundler/rubocop_gems.rb.lock b/tool/bundler/rubocop_gems.rb.lock index b4fea24b5dd1..e41af76c6d9b 100644 --- a/tool/bundler/rubocop_gems.rb.lock +++ b/tool/bundler/rubocop_gems.rb.lock @@ -2,52 +2,53 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.3) - date (3.5.0) - date (3.5.0-java) + date (3.5.1) + date (3.5.1-java) diff-lcs (1.6.2) - erb (6.0.0) - erb (6.0.0-java) - io-console (0.8.1) - io-console (0.8.1-java) - irb (1.15.3) + erb (6.0.4) + erb (6.0.4-java) + io-console (0.8.2) + io-console (0.8.2-java) + irb (1.18.0) pp (>= 0.6.0) + prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - jar-dependencies (0.5.5) - json (2.16.0) - json (2.16.0-java) + jar-dependencies (0.5.7) + json (2.19.4) + json (2.19.4-java) language_server-protocol (3.17.0.5) lint_roller (1.1.0) - minitest (5.26.1) - parallel (1.27.0) - parser (3.3.10.0) + minitest (5.27.0) + parallel (2.1.0) + parser (3.3.11.1) ast (~> 2.4.1) racc power_assert (3.0.1) pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.6.0) - psych (5.2.6) + prism (1.9.0) + psych (5.3.1) date stringio - psych (5.2.6-java) + psych (5.3.1-java) date jar-dependencies (>= 0.1.7) racc (1.8.1) racc (1.8.1-java) rainbow (3.1.1) - rake (13.3.1) - rake-compiler (1.3.0) + rake (13.4.2) + rake-compiler (1.3.1) rake - rake-compiler-dock (1.9.1) - rb_sys (0.9.117) - rake-compiler-dock (= 1.9.1) - rdoc (6.15.1) + rake-compiler-dock (1.12.0) + rb_sys (0.9.128) + rake-compiler-dock (= 1.12.0) + rdoc (7.2.0) erb psych (>= 4.0.0) tsort - regexp_parser (2.11.3) + regexp_parser (2.12.0) reline (0.6.3) io-console (~> 0.5) rspec (3.13.2) @@ -59,27 +60,27 @@ GEM rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.7) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.6) - rubocop (1.81.7) + rspec-support (3.13.7) + rubocop (1.86.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) - parallel (~> 1.10) + parallel (>= 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.47.1, < 2.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.48.0) + rubocop-ast (1.49.1) parser (>= 3.3.7.2) - prism (~> 1.4) + prism (~> 1.7) ruby-progressbar (1.13.0) - stringio (3.1.8) - test-unit (3.7.1) + stringio (3.2.0) + test-unit (3.7.7) power_assert tsort (0.2.0) unicode-display_width (3.2.0) @@ -102,58 +103,58 @@ DEPENDENCIES minitest rake rake-compiler - rb_sys + rb_sys (>= 0.9.128) rspec rubocop (>= 1.52.1, < 2) test-unit CHECKSUMS ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 - date (3.5.0) sha256=5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5 - date (3.5.0-java) sha256=d6876651299185b935e1b834a353e3a1d1db054be478967e8104e30a9a8f1127 + date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 + date (3.5.1-java) sha256=12e09477dc932afe45bf768cd362bf73026804e0db1e6c314186d6cd0bee3344 diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 - erb (6.0.0) sha256=2730893f9d8c9733f16cab315a4e4b71c1afa9cabc1a1e7ad1403feba8f52579 - erb (6.0.0-java) sha256=6537c84b596d889c4e20d87da41b38664e79bfe0af812ba7ea2a82a7ebf0ed62 - io-console (0.8.1) sha256=1e15440a6b2f67b6ea496df7c474ed62c860ad11237f29b3bd187f054b925fcb - io-console (0.8.1-java) sha256=9457a61a7b23aab11e9e9ff67f71ae81d7f1a6a2e582bb5d65d754cbb546c06f - irb (1.15.3) sha256=4349edff1efa7ff7bfd34cb9df74a133a588ba88c2718098b3b4468b81184aaa - jar-dependencies (0.5.5) sha256=2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059 - json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 - json (2.16.0-java) sha256=ee4c6fcc8f4efd156414b3e253e51675ec95bdfc79230b0bd5ec3a6139ed6d22 + erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9 + erb (6.0.4-java) sha256=3014611d37917a20e14ea3ba71e06a8d581b71c073858d7796eeee45b01e8407 + io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc + io-console (0.8.2-java) sha256=837efefe96084c13ae91114917986ae6c6d1cf063b27b8419cc564a722a38af8 + irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 + jar-dependencies (0.5.7) sha256=013ce5f4639414ac8cf1169cdbe763da164b81e2d2c983d11042b5ff7bfcce80 + json (2.19.4) sha256=670a7d333fb3b18ca5b29cb255eb7bef099e40d88c02c80bd42a3f30fe5239ac + json (2.19.4-java) sha256=f7f0fe701e2bef648497b0eb59422f5b453e5038cfbaf9cde09af20e22241efb language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 - minitest (5.26.1) sha256=f16a63d4278e230bba342c3bda3006a69c5216d46461b77dd57f7c7c529b5a96 - parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 - parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 + minitest (5.27.0) sha256=2d3b17f8a36fe7801c1adcffdbc38233b938eb0b4966e97a6739055a45fa77d5 + parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356 + parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54 power_assert (3.0.1) sha256=8ce9876716cc74e863fcd4cdcdc52d792bd983598d1af3447083a3a9a4d34103 pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 - prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b - psych (5.2.6) sha256=814328aa5dcb6d604d32126a20bc1cbcf05521a5b49dbb1a8b30a07e580f316e - psych (5.2.6-java) sha256=0a5f65d47ed1ae3475d062b254e7b2035a259eac578038016d62172dd4cfbd91 + prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 + psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974 + psych (5.3.1-java) sha256=20a4a81ad01479ef060f604ed75ba42fe673169e67d923b1bae5aa4e13cc5820 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c - rake-compiler (1.3.0) sha256=eec272ef6d4dad27b36f5cdcf5b9ee4df2193751f4082b095f981ebf9cdf4127 - rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 - rdoc (6.15.1) sha256=28bfac73cd8b226a8079f53a564ceaccdb5b4480e34335100001570ddb1a481a - regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701 + rake-compiler (1.3.1) sha256=6b351612b6e2d73ddd5563ee799bb58685176e05363db6758504bd11573d670a + rake-compiler-dock (1.12.0) sha256=f13205c2738f3d2053afcd03491a9e4541b22a59a0bfc53fc8bc883bd8188023 + rb_sys (0.9.128) sha256=9ab81f4d6d4e1895de18762232362d1264475aa7035756b50441e442130538fd + rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192 + regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 - rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c - rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 - rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 - rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 + rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47 + rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c + rubocop (1.86.1) sha256=44415f3f01d01a21e01132248d2fd0867572475b566ca188a0a42133a08d4531 + rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 - stringio (3.1.8) sha256=99c43c3a9302843cca223fd985bfc503dd50a4b1723d3e4a9eb1d9c37d99e4ec - test-unit (3.7.1) sha256=be595279c3427c00f57600db3dd59b6a9596e1f1e447864b158608d8e0d91570 + stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 + test-unit (3.7.7) sha256=3c89d5ff0690a16bef9946156c4624390402b9d54dfcf4ce9cbd5b06bead1e45 tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/tool/bundler/standard_gems.rb b/tool/bundler/standard_gems.rb index fab93e6d6d89..11fc9e68ed93 100644 --- a/tool/bundler/standard_gems.rb +++ b/tool/bundler/standard_gems.rb @@ -10,4 +10,4 @@ gem "rake-compiler" gem "rspec" gem "test-unit" -gem "rb_sys" +gem "rb_sys", ">= 0.9.128" diff --git a/tool/bundler/standard_gems.rb.lock b/tool/bundler/standard_gems.rb.lock index d2d29bba4875..95d88283ae63 100644 --- a/tool/bundler/standard_gems.rb.lock +++ b/tool/bundler/standard_gems.rb.lock @@ -2,52 +2,53 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.3) - date (3.5.0) - date (3.5.0-java) + date (3.5.1) + date (3.5.1-java) diff-lcs (1.6.2) - erb (6.0.0) - erb (6.0.0-java) - io-console (0.8.1) - io-console (0.8.1-java) - irb (1.15.3) + erb (6.0.4) + erb (6.0.4-java) + io-console (0.8.2) + io-console (0.8.2-java) + irb (1.18.0) pp (>= 0.6.0) + prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - jar-dependencies (0.5.5) - json (2.16.0) - json (2.16.0-java) + jar-dependencies (0.5.7) + json (2.19.4) + json (2.19.4-java) language_server-protocol (3.17.0.5) lint_roller (1.1.0) - minitest (5.26.1) - parallel (1.27.0) - parser (3.3.10.0) + minitest (5.27.0) + parallel (1.28.0) + parser (3.3.11.1) ast (~> 2.4.1) racc power_assert (3.0.1) pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.6.0) - psych (5.2.6) + prism (1.9.0) + psych (5.3.1) date stringio - psych (5.2.6-java) + psych (5.3.1-java) date jar-dependencies (>= 0.1.7) racc (1.8.1) racc (1.8.1-java) rainbow (3.1.1) - rake (13.3.1) - rake-compiler (1.3.0) + rake (13.4.2) + rake-compiler (1.3.1) rake - rake-compiler-dock (1.9.1) - rb_sys (0.9.117) - rake-compiler-dock (= 1.9.1) - rdoc (6.15.1) + rake-compiler-dock (1.12.0) + rb_sys (0.9.128) + rake-compiler-dock (= 1.12.0) + rdoc (7.2.0) erb psych (>= 4.0.0) tsort - regexp_parser (2.11.3) + regexp_parser (2.12.0) reline (0.6.3) io-console (~> 0.5) rspec (3.13.2) @@ -59,11 +60,11 @@ GEM rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.7) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.6) - rubocop (1.80.2) + rspec-support (3.13.7) + rubocop (1.84.2) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -71,31 +72,31 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.46.0, < 2.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.48.0) + rubocop-ast (1.49.1) parser (>= 3.3.7.2) - prism (~> 1.4) - rubocop-performance (1.25.0) + prism (~> 1.7) + rubocop-performance (1.26.1) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (1.13.0) - standard (1.51.1) + standard (1.54.0) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.80.2) + rubocop (~> 1.84.0) standard-custom (~> 1.0.0) standard-performance (~> 1.8) standard-custom (1.0.2) lint_roller (~> 1.0) rubocop (~> 1.50) - standard-performance (1.8.0) + standard-performance (1.9.0) lint_roller (~> 1.1) - rubocop-performance (~> 1.25.0) - stringio (3.1.8) - test-unit (3.7.1) + rubocop-performance (~> 1.26.0) + stringio (3.2.0) + test-unit (3.7.7) power_assert tsort (0.2.0) unicode-display_width (3.2.0) @@ -118,62 +119,62 @@ DEPENDENCIES minitest rake rake-compiler - rb_sys + rb_sys (>= 0.9.128) rspec standard (~> 1.0) test-unit CHECKSUMS ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 - date (3.5.0) sha256=5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5 - date (3.5.0-java) sha256=d6876651299185b935e1b834a353e3a1d1db054be478967e8104e30a9a8f1127 + date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 + date (3.5.1-java) sha256=12e09477dc932afe45bf768cd362bf73026804e0db1e6c314186d6cd0bee3344 diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 - erb (6.0.0) sha256=2730893f9d8c9733f16cab315a4e4b71c1afa9cabc1a1e7ad1403feba8f52579 - erb (6.0.0-java) sha256=6537c84b596d889c4e20d87da41b38664e79bfe0af812ba7ea2a82a7ebf0ed62 - io-console (0.8.1) sha256=1e15440a6b2f67b6ea496df7c474ed62c860ad11237f29b3bd187f054b925fcb - io-console (0.8.1-java) sha256=9457a61a7b23aab11e9e9ff67f71ae81d7f1a6a2e582bb5d65d754cbb546c06f - irb (1.15.3) sha256=4349edff1efa7ff7bfd34cb9df74a133a588ba88c2718098b3b4468b81184aaa - jar-dependencies (0.5.5) sha256=2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059 - json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 - json (2.16.0-java) sha256=ee4c6fcc8f4efd156414b3e253e51675ec95bdfc79230b0bd5ec3a6139ed6d22 + erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9 + erb (6.0.4-java) sha256=3014611d37917a20e14ea3ba71e06a8d581b71c073858d7796eeee45b01e8407 + io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc + io-console (0.8.2-java) sha256=837efefe96084c13ae91114917986ae6c6d1cf063b27b8419cc564a722a38af8 + irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 + jar-dependencies (0.5.7) sha256=013ce5f4639414ac8cf1169cdbe763da164b81e2d2c983d11042b5ff7bfcce80 + json (2.19.4) sha256=670a7d333fb3b18ca5b29cb255eb7bef099e40d88c02c80bd42a3f30fe5239ac + json (2.19.4-java) sha256=f7f0fe701e2bef648497b0eb59422f5b453e5038cfbaf9cde09af20e22241efb language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 - minitest (5.26.1) sha256=f16a63d4278e230bba342c3bda3006a69c5216d46461b77dd57f7c7c529b5a96 - parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 - parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 + minitest (5.27.0) sha256=2d3b17f8a36fe7801c1adcffdbc38233b938eb0b4966e97a6739055a45fa77d5 + parallel (1.28.0) sha256=33e6de1484baf2524792d178b0913fc8eb94c628d6cfe45599ad4458c638c970 + parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54 power_assert (3.0.1) sha256=8ce9876716cc74e863fcd4cdcdc52d792bd983598d1af3447083a3a9a4d34103 pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 - prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b - psych (5.2.6) sha256=814328aa5dcb6d604d32126a20bc1cbcf05521a5b49dbb1a8b30a07e580f316e - psych (5.2.6-java) sha256=0a5f65d47ed1ae3475d062b254e7b2035a259eac578038016d62172dd4cfbd91 + prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 + psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974 + psych (5.3.1-java) sha256=20a4a81ad01479ef060f604ed75ba42fe673169e67d923b1bae5aa4e13cc5820 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c - rake-compiler (1.3.0) sha256=eec272ef6d4dad27b36f5cdcf5b9ee4df2193751f4082b095f981ebf9cdf4127 - rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 - rdoc (6.15.1) sha256=28bfac73cd8b226a8079f53a564ceaccdb5b4480e34335100001570ddb1a481a - regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701 + rake-compiler (1.3.1) sha256=6b351612b6e2d73ddd5563ee799bb58685176e05363db6758504bd11573d670a + rake-compiler-dock (1.12.0) sha256=f13205c2738f3d2053afcd03491a9e4541b22a59a0bfc53fc8bc883bd8188023 + rb_sys (0.9.128) sha256=9ab81f4d6d4e1895de18762232362d1264475aa7035756b50441e442130538fd + rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192 + regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 - rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c - rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 - rubocop (1.80.2) sha256=6485f30fefcf5c199db3b91e5e253b1ef43f7e564784e2315255809a3dd9abf4 - rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 - rubocop-performance (1.25.0) sha256=6f7d03568a770054117a78d0a8e191cefeffb703b382871ca7743831b1a52ec1 + rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47 + rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c + rubocop (1.84.2) sha256=5692cea54168f3dc8cb79a6fe95c5424b7ea893c707ad7a4307b0585e88dbf5f + rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035 + rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 - standard (1.51.1) sha256=6d0d98a1fac26d660393f37b3d9c864632bb934b17abfa23811996b20f87faf2 + standard (1.54.0) sha256=7a4b08f83d9893083c8f03bc486f0feeb6a84d48233b40829c03ef4767ea0100 standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b - standard-performance (1.8.0) sha256=ed17b7d0e061b2a19a91dd434bef629439e2f32310f22f26acb451addc92b788 - stringio (3.1.8) sha256=99c43c3a9302843cca223fd985bfc503dd50a4b1723d3e4a9eb1d9c37d99e4ec - test-unit (3.7.1) sha256=be595279c3427c00f57600db3dd59b6a9596e1f1e447864b158608d8e0d91570 + standard-performance (1.9.0) sha256=49483d31be448292951d80e5e67cdcb576c2502103c7b40aec6f1b6e9c88e3f2 + stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 + test-unit (3.7.7) sha256=3c89d5ff0690a16bef9946156c4624390402b9d54dfcf4ce9cbd5b06bead1e45 tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/tool/bundler/test_gems.rb b/tool/bundler/test_gems.rb index 86ca5cd6d623..71230c32b7c9 100644 --- a/tool/bundler/test_gems.rb +++ b/tool/bundler/test_gems.rb @@ -7,7 +7,7 @@ gem "sinatra", "~> 4.1" gem "rake", "~> 13.1" gem "builder", "~> 3.2" -gem "rb_sys" +gem "rb_sys", ">= 0.9.128" gem "fiddle" gem "rubygems-generate_index", "~> 1.1" gem "concurrent-ruby" diff --git a/tool/bundler/test_gems.rb.lock b/tool/bundler/test_gems.rb.lock index c4dfdbf4c1e6..3c04a0a2113c 100644 --- a/tool/bundler/test_gems.rb.lock +++ b/tool/bundler/test_gems.rb.lock @@ -4,37 +4,35 @@ GEM base64 (0.3.0) builder (3.3.0) compact_index (0.15.0) - concurrent-ruby (1.3.5) - date (3.5.0) - date (3.5.0-java) + concurrent-ruby (1.3.6) + date (3.5.1) + date (3.5.1-java) etc (1.4.6) fiddle (1.1.8) - jar-dependencies (0.5.5) + jar-dependencies (0.5.7) logger (1.7.0) - mustermann (3.0.4) - ruby2_keywords (~> 0.0.1) + mustermann (3.1.1) open3 (0.2.1) - psych (5.2.6) + psych (5.3.1) date stringio - psych (5.2.6-java) + psych (5.3.1-java) date jar-dependencies (>= 0.1.7) - rack (3.2.4) + rack (3.2.6) rack-protection (4.2.1) base64 (>= 0.1.0) logger (>= 1.6.0) rack (>= 3.0.0, < 4) - rack-session (2.1.1) + rack-session (2.1.2) base64 (>= 0.1.0) rack (>= 3.0.0) rack-test (2.2.0) rack (>= 1.3) - rake (13.3.1) - rake-compiler-dock (1.9.1) - rb_sys (0.9.117) - rake-compiler-dock (= 1.9.1) - ruby2_keywords (0.0.5) + rake (13.4.2) + rake-compiler-dock (1.12.0) + rb_sys (0.9.128) + rake-compiler-dock (= 1.12.0) rubygems-generate_index (1.1.3) compact_index (~> 0.15.0) shellwords (0.2.2) @@ -45,8 +43,8 @@ GEM rack-protection (= 4.2.1) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - stringio (3.1.8) - tilt (2.6.1) + stringio (3.2.0) + tilt (2.7.0) PLATFORMS java @@ -67,7 +65,7 @@ DEPENDENCIES rack (~> 3.1) rack-test (~> 2.1) rake (~> 13.1) - rb_sys + rb_sys (>= 0.9.128) rubygems-generate_index (~> 1.1) shellwords sinatra (~> 4.1) @@ -76,30 +74,29 @@ CHECKSUMS base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f compact_index (0.15.0) sha256=5c6c404afca8928a7d9f4dde9524f6e1610db17e675330803055db282da84a8b - concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6 - date (3.5.0) sha256=5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5 - date (3.5.0-java) sha256=d6876651299185b935e1b834a353e3a1d1db054be478967e8104e30a9a8f1127 + concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab + date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0 + date (3.5.1-java) sha256=12e09477dc932afe45bf768cd362bf73026804e0db1e6c314186d6cd0bee3344 etc (1.4.6) sha256=0f7e9e7842ea5e3c3bd9bc81746ebb8c65ea29e4c42a93520a0d638129c7de01 fiddle (1.1.8) sha256=7fa8ee3627271497f3add5503acdbc3f40b32f610fc1cf49634f083ef3f32eee - jar-dependencies (0.5.5) sha256=2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059 + jar-dependencies (0.5.7) sha256=013ce5f4639414ac8cf1169cdbe763da164b81e2d2c983d11042b5ff7bfcce80 logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 - mustermann (3.0.4) sha256=85fadcb6b3c6493a8b511b42426f904b7f27b282835502233dd154daab13aa22 + mustermann (3.1.1) sha256=4c6170c7234d5499c345562ba7c7dfe73e1754286dcc1abb053064d66a127198 open3 (0.2.1) sha256=8e2d7d2113526351201438c1aa35c8139f0141c9e8913baa007c898973bf3952 - psych (5.2.6) sha256=814328aa5dcb6d604d32126a20bc1cbcf05521a5b49dbb1a8b30a07e580f316e - psych (5.2.6-java) sha256=0a5f65d47ed1ae3475d062b254e7b2035a259eac578038016d62172dd4cfbd91 - rack (3.2.4) sha256=5d74b6f75082a643f43c1e76b419c40f0e5527fcfee1e669ac1e6b73c0ccb6f6 + psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974 + psych (5.3.1-java) sha256=20a4a81ad01479ef060f604ed75ba42fe673169e67d923b1bae5aa4e13cc5820 + rack (3.2.6) sha256=5ed78e1f73b2e25679bec7d45ee2d4483cc4146eb1be0264fc4d94cb5ef212c2 rack-protection (4.2.1) sha256=cf6e2842df8c55f5e4d1a4be015e603e19e9bc3a7178bae58949ccbb58558bac - rack-session (2.1.1) sha256=0b6dc07dea7e4b583f58a48e8b806d4c9f1c6c9214ebc202ec94562cbea2e4e9 + rack-session (2.1.2) sha256=595434f8c0c3473ae7d7ac56ecda6cc6dfd9d37c0b2b5255330aa1576967ffe8 rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463 - rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c - rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 - ruby2_keywords (0.0.5) sha256=ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef + rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701 + rake-compiler-dock (1.12.0) sha256=f13205c2738f3d2053afcd03491a9e4541b22a59a0bfc53fc8bc883bd8188023 + rb_sys (0.9.128) sha256=9ab81f4d6d4e1895de18762232362d1264475aa7035756b50441e442130538fd rubygems-generate_index (1.1.3) sha256=3571424322666598e9586a906485e1543b617f87644913eaf137d986a3393f5c shellwords (0.2.2) sha256=b8695a791de2f71472de5abdc3f4332f6535a4177f55d8f99e7e44266cd32f94 sinatra (4.2.1) sha256=b7aeb9b11d046b552972ade834f1f9be98b185fa8444480688e3627625377080 - stringio (3.1.8) sha256=99c43c3a9302843cca223fd985bfc503dd50a4b1723d3e4a9eb1d9c37d99e4ec - tilt (2.6.1) sha256=35a99bba2adf7c1e362f5b48f9b581cce4edfba98117e34696dde6d308d84770 + stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 + tilt (2.7.0) sha256=0d5b9ba69f6a36490c64b0eee9f6e9aad517e20dcc848800a06eb116f08c6ab3 BUNDLED WITH - 4.0.14 + 4.0.15 diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 64c8e1a73d9b..e0d5e9ec2c50 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -72,4 +72,4 @@ CHECKSUMS uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH - 4.0.14 + 4.0.15