#142 Upgrade to Ruby 3.1.3.
Merged a year ago by vondruch. Opened a year ago by vondruch.
rpms/ vondruch/ruby v3.1.3  into  rawhide

@@ -1,25 +0,0 @@ 

- From 28cc0749d6729aa2444661ee7b411e183fe220b0 Mon Sep 17 00:00:00 2001

- From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>

- Date: Mon, 19 Nov 2012 15:14:51 +0100

- Subject: [PATCH] Verbose mkmf.

- 

- ---

-  lib/mkmf.rb | 2 +-

-  1 file changed, 1 insertion(+), 1 deletion(-)

- 

- diff --git a/lib/mkmf.rb b/lib/mkmf.rb

- index 682eb46..e6b1445 100644

- --- a/lib/mkmf.rb

- +++ b/lib/mkmf.rb

- @@ -1974,7 +1974,7 @@ def configuration(srcdir)

-  SHELL = /bin/sh

-  

-  # V=0 quiet, V=1 verbose.  other values don't work.

- -V = 0

- +V = 1

-  V0 = $(V:0=)

-  Q1 = $(V:1=)

-  Q = $(Q1:0=@)

- -- 

- 1.8.3.1

- 

@@ -11,7 +11,7 @@ 

  index d261ea57b5..3c13076b82 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -3368,6 +3368,11 @@ AS_IF([test ${multiarch+set}], [

+ @@ -3374,6 +3374,11 @@ AS_IF([test ${multiarch+set}], [

   ])

   

   archlibdir='${libdir}/${arch}'

@@ -14,7 +14,7 @@ 

  index c42436c23d..d261ea57b5 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -4026,7 +4026,8 @@ AS_CASE(["$ruby_version_dir_name"],

+ @@ -4032,7 +4032,8 @@ AS_CASE(["$ruby_version_dir_name"],

   ruby_version_dir=/'${ruby_version_dir_name}'

   

   if test -z "${ruby_version_dir_name}"; then

@@ -11,7 +11,7 @@ 

  index 3c13076b82..93af30321d 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -4090,6 +4090,8 @@ AC_SUBST(vendorarchdir)dnl

+ @@ -4096,6 +4096,8 @@ AC_SUBST(vendorarchdir)dnl

   AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl

   AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl

   

@@ -15,7 +15,7 @@ 

  index 93af30321d..bc13397e0e 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -4062,6 +4062,10 @@ AC_ARG_WITH(vendorarchdir,

+ @@ -4068,6 +4068,10 @@ AC_ARG_WITH(vendorarchdir,

               [vendorarchdir=$withval],

               [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])

   
@@ -26,7 +26,7 @@ 

   AS_IF([test "${LOAD_RELATIVE+set}"], [

       AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)

       RUBY_EXEC_PREFIX=''

- @@ -4086,6 +4090,7 @@ AC_SUBST(sitearchdir)dnl

+ @@ -4092,6 +4096,7 @@ AC_SUBST(sitearchdir)dnl

   AC_SUBST(vendordir)dnl

   AC_SUBST(vendorlibdir)dnl

   AC_SUBST(vendorarchdir)dnl

file modified
+21 -21
@@ -20,7 +20,7 @@ 

  index 80b137e380..63cd3b4f8b 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -3977,9 +3977,6 @@ AS_CASE(["$target_os"],

+ @@ -3983,9 +3983,6 @@ AS_CASE(["$target_os"],

       rubyw_install_name='$(RUBYW_INSTALL_NAME)'

       ])

   
@@ -30,7 +30,7 @@ 

   rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}

   AC_ARG_WITH(rubyarchprefix,

   	    AS_HELP_STRING([--with-rubyarchprefix=DIR],

- @@ -4002,56 +3999,62 @@ AC_ARG_WITH(ridir,

+ @@ -4008,56 +4005,62 @@ AC_ARG_WITH(ridir,

   AC_SUBST(ridir)

   AC_SUBST(RI_BASE_NAME)

   
@@ -120,7 +120,7 @@ 

   

   AS_IF([test "${LOAD_RELATIVE+set}"], [

       AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)

- @@ -4068,6 +4071,7 @@ AC_SUBST(sitearchincludedir)dnl

+ @@ -4074,6 +4077,7 @@ AC_SUBST(sitearchincludedir)dnl

   AC_SUBST(arch)dnl

   AC_SUBST(sitearch)dnl

   AC_SUBST(ruby_version)dnl
@@ -202,8 +202,8 @@ 

     # specified in the environment

   

     def self.default_dir

- -    @default_dir ||= File.join(RbConfig::CONFIG['rubylibprefix'], 'gems', RbConfig::CONFIG['ruby_version'])

- +    @default_dir ||= File.join(RbConfig::CONFIG['rubylibprefix'], 'gems', RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'])

+ -    @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"])

+ +    @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"])

     end

   

     ##
@@ -211,18 +211,18 @@ 

       gem_dir = File.join(Gem.user_home, ".gem")

       gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)

       parts = [gem_dir, ruby_engine]

- -    parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?

- +    ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']

+ -    parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?

+ +    ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]

  +    parts << ruby_version_dir_name unless ruby_version_dir_name.empty?

       File.join parts

     end

   

  @@ -234,7 +235,7 @@ def self.vendor_dir # :nodoc:

-      return nil unless RbConfig::CONFIG.key? 'vendordir'

+      return nil unless RbConfig::CONFIG.key? "vendordir"

   

-      File.join RbConfig::CONFIG['vendordir'], 'gems',

- -              RbConfig::CONFIG['ruby_version']

- +              RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']

+      File.join RbConfig::CONFIG["vendordir"], "gems",

+ -              RbConfig::CONFIG["ruby_version"]

+ +              RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]

     end

   

     ##
@@ -230,22 +230,22 @@ 

  index b25068405d..e9fef4a311 100644

  --- a/test/rubygems/test_gem.rb

  +++ b/test/rubygems/test_gem.rb

- @@ -1410,7 +1410,8 @@ def test_self_use_paths

+ @@ -1395,7 +1395,8 @@ def test_self_use_paths

   

     def test_self_user_dir

-      parts = [@userhome, '.gem', Gem.ruby_engine]

- -    parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?

- +    ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']

+      parts = [@userhome, ".gem", Gem.ruby_engine]

+ -    parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?

+ +    ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]

  +    parts << ruby_version_dir_name unless ruby_version_dir_name.empty?

   

       FileUtils.mkdir_p File.join(parts)

   

- @@ -1486,7 +1487,7 @@ def test_self_vendor_dir

-      vendordir(File.join(@tempdir, 'vendor')) do

+ @@ -1471,7 +1472,7 @@ def test_self_vendor_dir

+      vendordir(File.join(@tempdir, "vendor")) do

         expected =

-          File.join RbConfig::CONFIG['vendordir'], 'gems',

- -                  RbConfig::CONFIG['ruby_version']

- +                  RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']

+          File.join RbConfig::CONFIG["vendordir"], "gems",

+ -                  RbConfig::CONFIG["ruby_version"]

+ +                  RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]

   

         assert_equal expected, Gem.vendor_dir

       end
@@ -267,7 +267,7 @@ 

  index a00f2b6776..999e2d6d5d 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -108,7 +108,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`

+ @@ -115,7 +115,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`

   RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`

   AC_SUBST(RUBY_BASE_NAME)

   AC_SUBST(RUBYW_BASE_NAME)

@@ -45,7 +45,7 @@ 

  +++ b/common.mk

  @@ -82,7 +82,8 @@ ENC_MK        = enc.mk

   MAKE_ENC      = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \

-  		RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)

+  		RUBY="$(BOOTSTRAPRUBY)" MINIRUBY="$(BOOTSTRAPRUBY)" $(mflags)

   

  -COMMONOBJS    = array.$(OBJEXT) \

  +COMMONOBJS    = abrt.$(OBJEXT) \
@@ -57,7 +57,7 @@ 

  index 60c57d6259..1eec16f2c8 100644

  --- a/ruby.c

  +++ b/ruby.c

- @@ -1611,10 +1611,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)

+ @@ -1623,10 +1623,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)

   

   void Init_builtin_features(void);

   

@@ -1,338 +0,0 @@ 

- From 111f8422427d78becc9183ae149b2105a16bf327 Mon Sep 17 00:00:00 2001

- From: Nobuyoshi Nakada <nobu@ruby-lang.org>

- Date: Tue, 5 Apr 2022 23:24:00 +0900

- Subject: [PATCH 1/5] Bundled gems are expanded under `.bundle/gems` now

- 

- ---

-  ext/extmk.rb          | 13 +++++++------

-  template/exts.mk.tmpl |  2 +-

-  2 files changed, 8 insertions(+), 7 deletions(-)

- 

- diff --git a/ext/extmk.rb b/ext/extmk.rb

- index 4a087f294ac9..1da9e2704521 100755

- --- a/ext/extmk.rb

- +++ b/ext/extmk.rb

- @@ -146,7 +146,7 @@ def extmake(target, basedir = 'ext', maybestatic = true)

-      top_srcdir = $top_srcdir

-      topdir = $topdir

-      hdrdir = $hdrdir

- -    prefix = "../" * (target.count("/")+1)

- +    prefix = "../" * (basedir.count("/")+target.count("/")+1)

-      $top_srcdir = relative_from(top_srcdir, prefix)

-      $hdrdir = relative_from(hdrdir, prefix)

-      $topdir = prefix + $topdir

- @@ -460,10 +460,11 @@ def $mflags.defined?(var)

-  end unless $extstatic

-  

-  @gemname = nil

- -if ARGV[0]

- -  ext_prefix, exts = ARGV.shift.split('/', 2)

- +if exts = ARGV.shift

- +  ext_prefix = exts[%r[\A(?>\.bundle/)?[^/]+(?:/(?=(.+)?)|\z)]]

- +  exts = $1

-    $extension = [exts] if exts

- -  if ext_prefix == 'gems'

- +  if ext_prefix.start_with?('.')

-      @gemname = exts

-    elsif exts

-      $static_ext.delete_if {|t, *| !File.fnmatch(t, exts)}

- @@ -515,7 +516,7 @@ def $mflags.defined?(var)

-      exts.delete_if {|d| File.fnmatch?("-*", d)}

-    end

-  end

- -ext_prefix = File.basename(ext_prefix)

- +ext_prefix = ext_prefix[$top_srcdir.size+1..-2]

-  

-  extend Module.new {

-    def timestamp_file(name, target_prefix = nil)

- @@ -634,7 +635,7 @@ def initialize(src)

-    end

-  }

-  

- -Dir.chdir ".."

- +Dir.chdir dir

-  unless $destdir.to_s.empty?

-    $mflags.defined?("DESTDIR") or $mflags << "DESTDIR=#{$destdir}"

-  end

- diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl

- index 2f37f4480ac5..964939e365a1 100644

- --- a/template/exts.mk.tmpl

- +++ b/template/exts.mk.tmpl

- @@ -25,7 +25,7 @@ macros["old_extensions"] = []

-  

-  contpat = /(?>(?>[^\\\n]|\\.)*\\\n)*(?>[^\\\n]|\\.)*/

-  Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|

- -  gem = /\Agems(?=\/)/ =~ e

- +  gem = e.start_with?(".bundle/gems/")

-    s = File.read(e)

-    s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|

-      v.gsub!(/\\\n[ \t]*/, ' ')

- 

- From 6ea34cac22131d28a9cc50e7875e854aed9bdb88 Mon Sep 17 00:00:00 2001

- From: Nobuyoshi Nakada <nobu@ruby-lang.org>

- Date: Wed, 6 Apr 2022 20:25:53 +0900

- Subject: [PATCH 2/5] Retrieve configured gems info

- 

- ---

-  template/configure-ext.mk.tmpl | 2 +-

-  template/exts.mk.tmpl          | 4 ++--

-  2 files changed, 3 insertions(+), 3 deletions(-)

- 

- diff --git a/template/configure-ext.mk.tmpl b/template/configure-ext.mk.tmpl

- index 6636a7759c54..8ba6b963e3ec 100644

- --- a/template/configure-ext.mk.tmpl

- +++ b/template/configure-ext.mk.tmpl

- @@ -27,7 +27,7 @@ SCRIPT_ARGS = <%=script_args.gsub("#", "\\#")%>

-  EXTMK_ARGS = $(SCRIPT_ARGS) --gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \

-  	   --make-flags="MINIRUBY='$(MINIRUBY)'"

-  

- -all: exts # gems

- +all: exts gems

-  exts:

-  gems:

-  

- diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl

- index 964939e365a1..e544c4c88bd7 100644

- --- a/template/exts.mk.tmpl

- +++ b/template/exts.mk.tmpl

- @@ -19,7 +19,7 @@ opt = OptionParser.new do |o|

-    o.on('--configure-exts=FILE') {|v| confexts = v}

-    o.order!(ARGV)

-  end

- -confexts &&= File.read(confexts).scan(/^exts: (.*\.mk)/).flatten rescue nil

- +confexts &&= File.read(confexts).scan(/^(?:ext|gem)s: (.*\.mk)/).flatten rescue nil

-  confexts ||= []

-  macros["old_extensions"] = []

-  

- @@ -30,7 +30,7 @@ Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|

-    s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|

-      v.gsub!(/\\\n[ \t]*/, ' ')

-      next if v.empty?

- -    next if gem and n != "extensions"

- +    next if n != "extensions"

-      n = "old_extensions" if n == "extensions" and !confexts.include?(e)

-      v = v.split

-      m = macros[n] ||= []

- 

- From be9d00ee7c72766551ba8c3530f1538034498a6a Mon Sep 17 00:00:00 2001

- From: Nobuyoshi Nakada <nobu@ruby-lang.org>

- Date: Wed, 6 Apr 2022 20:28:00 +0900

- Subject: [PATCH 3/5] Move the target directory of bundled gems like as

-  rubygems

- 

- ---

-  ext/extmk.rb | 6 +++++-

-  1 file changed, 5 insertions(+), 1 deletion(-)

- 

- diff --git a/ext/extmk.rb b/ext/extmk.rb

- index 1da9e2704521..a440af27fc5d 100755

- --- a/ext/extmk.rb

- +++ b/ext/extmk.rb

- @@ -2,6 +2,9 @@

-  # -*- mode: ruby; coding: us-ascii -*-

-  # frozen_string_literal: false

-  

- +module Gem; end # only needs Gem::Platform

- +require 'rubygems/platform'

- +

-  # :stopdoc:

-  $extension = nil

-  $extstatic = nil

- @@ -535,11 +538,12 @@ def create_makefile(*args, &block)

-      super(*args) do |conf|

-        conf.find do |s|

-          s.sub!(/^(TARGET_SO_DIR *= *)\$\(RUBYARCHDIR\)/) {

- -          "TARGET_GEM_DIR = $(extout)/gems/$(arch)/#{@gemname}\n"\

- +          "TARGET_GEM_DIR = $(topdir)/.bundle/extensions/$(gem_platform)/$(ruby_version)/#{@gemname}\n"\

-            "#{$1}$(TARGET_GEM_DIR)$(target_prefix)"

-          }

-        end

-        conf.any? {|s| /^TARGET *= *\S/ =~ s} and conf << %{

- +gem_platform = #{Gem::Platform.local}

-  

-  # default target

-  all:

- 

- From c4daf8e445925695c34bab8bf5135dcd1e8575a3 Mon Sep 17 00:00:00 2001

- From: Nobuyoshi Nakada <nobu@ruby-lang.org>

- Date: Wed, 6 Apr 2022 22:57:01 +0900

- Subject: [PATCH 4/5] Obey spec file locations to rubygems

- 

- ---

-  common.mk          | 3 ++-

-  defs/gmake.mk      | 2 +-

-  tool/gem-unpack.rb | 5 +++--

-  3 files changed, 6 insertions(+), 4 deletions(-)

- 

- diff --git a/common.mk b/common.mk

- index 7c552cba1e04..b4adb2729c0e 100644

- --- a/common.mk

- +++ b/common.mk

- @@ -1359,10 +1359,11 @@ extract-gems$(gnumake:yes=-nongnumake): PHONY

-  	$(Q) $(RUNRUBY) -C "$(srcdir)" \

-  	    -Itool -rgem-unpack -answ \

-  	    -e 'BEGIN {FileUtils.mkdir_p(d = ".bundle/gems")}' \

- +	    -e 'BEGIN {FileUtils.mkdir_p(s = ".bundle/specifications")}' \

-  	    -e 'gem, ver = *$$F' \

-  	    -e 'next if !ver or /^#/=~gem' \

-  	    -e 'g = "#{gem}-#{ver}"' \

- -	    -e 'File.directory?("#{d}/#{g}") or Gem.unpack("gems/#{g}.gem", d)' \

- +	    -e 'File.directory?("#{d}/#{g}") or Gem.unpack("gems/#{g}.gem", d, s)' \

-  	    gems/bundled_gems

-  

-  update-bundled_gems: PHONY

- diff --git a/defs/gmake.mk b/defs/gmake.mk

- index a625379a6804..27e3e21cc4d6 100644

- --- a/defs/gmake.mk

- +++ b/defs/gmake.mk

- @@ -290,7 +290,7 @@ extract-gems: | $(patsubst %,.bundle/gems/%,$(bundled-gems))

-  	$(ECHO) Extracting bundle gem $*...

-  	$(Q) $(BASERUBY) -C "$(srcdir)" \

-  	    -Itool -rgem-unpack \

- -	    -e 'Gem.unpack("gems/$(@F).gem", ".bundle/gems")'

- +	    -e 'Gem.unpack("gems/$(@F).gem", ".bundle/gems", ".bundle/specifications")'

-  

-  $(srcdir)/.bundle/gems:

-  	$(MAKEDIRS) $@

- diff --git a/tool/gem-unpack.rb b/tool/gem-unpack.rb

- index cb05719463f2..fe10b0e420fa 100644

- --- a/tool/gem-unpack.rb

- +++ b/tool/gem-unpack.rb

- @@ -5,13 +5,14 @@

-  # This library is used by "make extract-gems" to

-  # unpack bundled gem files.

-  

- -def Gem.unpack(file, dir = nil)

- +def Gem.unpack(file, dir = nil, spec_dir = nil)

-    pkg = Gem::Package.new(file)

-    spec = pkg.spec

-    target = spec.full_name

-    target = File.join(dir, target) if dir

-    pkg.extract_files target

- -  spec_file = File.join(target, "#{spec.name}-#{spec.version}.gemspec")

- +  FileUtils.mkdir_p(spec_dir ||= target)

- +  spec_file = File.join(spec_dir, "#{spec.name}-#{spec.version}.gemspec")

-    open(spec_file, 'wb') do |f|

-      f.print spec.to_ruby

-    end

- 

- From 3de652d8198be9cd2998c095903889a80e738275 Mon Sep 17 00:00:00 2001

- From: Nobuyoshi Nakada <nobu@ruby-lang.org>

- Date: Thu, 7 Apr 2022 01:44:43 +0900

- Subject: [PATCH 5/5] Install built gem extension binaries

- 

- ---

-  tool/rbinstall.rb | 56 ++++++++++++++---------------------------------

-  1 file changed, 16 insertions(+), 40 deletions(-)

- 

- diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb

- index 9d9b672be472..624961b4eee6 100755

- --- a/tool/rbinstall.rb

- +++ b/tool/rbinstall.rb

- @@ -858,6 +858,9 @@ class UnpackedInstaller < GemInstaller

-      def write_cache_file

-      end

-  

- +    def build_extensions

- +    end

- +

-      def shebang(bin_file_name)

-        path = File.join(gem_dir, spec.bindir, bin_file_name)

-        first_line = File.open(path, "rb") {|file| file.gets}

- @@ -940,13 +943,12 @@ def ensure_writable_dir(dir)

-    install_default_gem('ext', srcdir, bindir)

-  end

-  

- -def load_gemspec(file, expanded = false)

- +def load_gemspec(file, base = nil)

-    file = File.realpath(file)

-    code = File.read(file, encoding: "utf-8:-")

-    code.gsub!(/(?:`git[^\`]*`|%x\[git[^\]]*\])\.split\([^\)]*\)/m) do

-      files = []

- -    if expanded

- -      base = File.dirname(file)

- +    if base

-        Dir.glob("**/*", File::FNM_DOTMATCH, base: base) do |n|

-          case File.basename(n); when ".", ".."; next; end

-          next if File.directory?(File.join(base, n))

- @@ -959,7 +961,7 @@ def load_gemspec(file, expanded = false)

-    unless Gem::Specification === spec

-      raise TypeError, "[#{file}] isn't a Gem::Specification (#{spec.class} instead)."

-    end

- -  spec.loaded_from = file

- +  spec.loaded_from = base ? File.join(base, File.basename(file)) : file

-    spec.files.reject! {|n| n.end_with?(".gemspec") or n.start_with?(".git")}

-  

-    spec

- @@ -1014,20 +1016,6 @@ def install_default_gem(dir, srcdir, bindir)

-  end

-  

-  install?(:ext, :comm, :gem, :'bundled-gems') do

- -  if CONFIG['CROSS_COMPILING'] == 'yes'

- -    # The following hacky steps set "$ruby = BASERUBY" in tool/fake.rb

- -    $hdrdir = ''

- -    $extmk = nil

- -    $ruby = nil  # ...

- -    ruby_path = $ruby + " -I#{Dir.pwd}" # $baseruby + " -I#{Dir.pwd}"

- -  else

- -    # ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name)))

- -    ENV['RUBYLIB'] = nil

- -    ENV['RUBYOPT'] = nil

- -    ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name))) + " --disable=gems -I#{with_destdir(archlibdir)}"

- -  end

- -  Gem.instance_variable_set(:@ruby, ruby_path) if Gem.ruby != ruby_path

- -

-    gem_dir = Gem.default_dir

-    install_dir = with_destdir(gem_dir)

-    prepare "bundled gems", gem_dir

- @@ -1047,40 +1035,28 @@ def install_default_gem(dir, srcdir, bindir)

-      :wrappers => true,

-      :format_executable => true,

-    }

- -  gem_ext_dir = "#$extout/gems/#{CONFIG['arch']}"

- -  extensions_dir = with_destdir(Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir)

- +

- +  extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir

- +  specifications_dir = File.join(gem_dir, "specifications")

- +  build_dir = Gem::StubSpecification.gemspec_stub("", ".bundle", ".bundle").extensions_dir

-  

-    File.foreach("#{srcdir}/gems/bundled_gems") do |name|

-      next if /^\s*(?:#|$)/ =~ name

-      next unless /^(\S+)\s+(\S+).*/ =~ name

-      gem_name = "#$1-#$2"

- -    path = "#{srcdir}/.bundle/gems/#{gem_name}/#{gem_name}.gemspec"

- -    if File.exist?(path)

- -      spec = load_gemspec(path)

- -    else

- -      path = "#{srcdir}/.bundle/gems/#{gem_name}/#$1.gemspec"

- -      next unless File.exist?(path)

- -      spec = load_gemspec(path, true)

- -    end

- +    path = "#{srcdir}/.bundle/specifications/#{gem_name}.gemspec"

- +    next unless File.exist?(path)

- +    spec = load_gemspec(path, "#{srcdir}/.bundle/gems/#{gem_name}")

-      next unless spec.platform == Gem::Platform::RUBY

-      next unless spec.full_name == gem_name

- -    if !spec.extensions.empty? && CONFIG["EXTSTATIC"] == "static"

- -      puts "skip installation of #{spec.name} #{spec.version}; bundled gem with an extension library is not supported on --with-static-linked-ext"

- -      next

- -    end

-      spec.extension_dir = "#{extensions_dir}/#{spec.full_name}"

- -    if File.directory?(ext = "#{gem_ext_dir}/#{spec.full_name}")

- -      spec.extensions[0] ||= "-"

- -    end

-      package = RbInstall::DirPackage.new spec

-      ins = RbInstall::UnpackedInstaller.new(package, options)

-      puts "#{INDENT}#{spec.name} #{spec.version}"

-      ins.install

- -    unless $dryrun

- -      File.chmod($data_mode, File.join(install_dir, "specifications", "#{spec.full_name}.gemspec"))

- -    end

- -    unless spec.extensions.empty?

- -      install_recursive(ext, spec.extension_dir)

- +    install_recursive("#{build_dir}/#{gem_name}", "#{extensions_dir}/#{gem_name}") do |src, dest|

- +      # puts "#{INDENT}    #{dest[extensions_dir.size+gem_name.size+2..-1]}"

- +      install src, dest, :mode => (File.executable?(src) ? $prog_mode : $data_mode)

-      end

-      installed_gems[spec.full_name] = true

-    end

@@ -75,7 +75,6 @@ 

  USE_MMAP_ALIGNED_ALLOC with HEAP_PAGE_ALLOC_USE_MMAP, Ruby 3.1.2 doesn't.

  See <https://github.com/ruby/ruby/commit/fe21b7794af0cdb7ebd502e2c0da38c68fd89839>.

  

- 

  ```

  +        rb_define_singleton_method(rb_mGC, "verify_compaction_references", gc_verify_compaction_references, -1);

  ```
@@ -87,7 +86,6 @@ 

  doesn't define it in the gc.rb.

  See <https://github.com/ruby/ruby/commit/b96a3a6fd2093e1dbea5491c002da515652dd347>.

  

- 

  ```

  +	OPT(GC_COMPACTION_SUPPORTED);

  ```
@@ -141,7 +139,7 @@ 

  index 1c35856c44..bff0666a17 100644

  --- a/gc.c

  +++ b/gc.c

- @@ -4980,6 +4980,23 @@ gc_unprotect_pages(rb_objspace_t *objspace, rb_heap_t *heap)

+ @@ -4984,6 +4984,23 @@ gc_unprotect_pages(rb_objspace_t *objspace, rb_heap_t *heap)

   static void gc_update_references(rb_objspace_t * objspace);

   static void invalidate_moved_page(rb_objspace_t *objspace, struct heap_page *page);

   
@@ -165,7 +163,7 @@ 

   static void

   read_barrier_handler(uintptr_t address)

   {

- @@ -5000,6 +5017,7 @@ read_barrier_handler(uintptr_t address)

+ @@ -5004,6 +5021,7 @@ read_barrier_handler(uintptr_t address)

       }

       RB_VM_LOCK_LEAVE();

   }
@@ -173,7 +171,7 @@ 

   

   #if defined(_WIN32)

   static LPTOP_LEVEL_EXCEPTION_FILTER old_handler;

- @@ -9250,13 +9268,7 @@ gc_start_internal(rb_execution_context_t *ec, VALUE self, VALUE full_mark, VALUE

+ @@ -9267,13 +9285,7 @@ gc_start_internal(rb_execution_context_t *ec, VALUE self, VALUE full_mark, VALUE

   

       /* For now, compact implies full mark / sweep, so ignore other flags */

       if (RTEST(compact)) {
@@ -188,7 +186,7 @@ 

   

           reason |= GPR_FLAG_COMPACT;

       }

- @@ -9421,7 +9433,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)

+ @@ -9438,7 +9450,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)

       return (VALUE)src;

   }

   
@@ -197,7 +195,7 @@ 

   static int

   compare_free_slots(const void *left, const void *right, void *dummy)

   {

- @@ -10149,7 +10161,7 @@ gc_update_references(rb_objspace_t *objspace)

+ @@ -10166,7 +10178,7 @@ gc_update_references(rb_objspace_t *objspace)

       gc_update_table_refs(objspace, finalizer_table);

   }

   
@@ -206,7 +204,7 @@ 

   /*

    *  call-seq:

    *     GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}

- @@ -10190,7 +10202,7 @@ gc_compact_stats(VALUE self)

+ @@ -10207,7 +10219,7 @@ gc_compact_stats(VALUE self)

   #  define gc_compact_stats rb_f_notimplement

   #endif

   
@@ -215,7 +213,7 @@ 

   static void

   root_obj_check_moved_i(const char *category, VALUE obj, void *data)

   {

- @@ -10269,7 +10281,7 @@ gc_compact(VALUE self)

+ @@ -10286,7 +10298,7 @@ gc_compact(VALUE self)

   #  define gc_compact rb_f_notimplement

   #endif

   
@@ -224,7 +222,7 @@ 

   /*

    * call-seq:

    *    GC.verify_compaction_references(toward: nil, double_heap: false) -> hash

- @@ -10800,7 +10812,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)

+ @@ -10817,7 +10829,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)

       return rb_gc_disable();

   }

   
@@ -233,7 +231,7 @@ 

   /*

    *  call-seq:

    *     GC.auto_compact = flag

- @@ -10814,8 +10826,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)

+ @@ -10831,8 +10843,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)

   static VALUE

   gc_set_auto_compact(VALUE _, VALUE v)

   {
@@ -243,7 +241,7 @@ 

   

       ruby_enable_autocompact = RTEST(v);

       return v;

- @@ -10824,7 +10835,8 @@ gc_set_auto_compact(VALUE _, VALUE v)

+ @@ -10841,7 +10852,8 @@ gc_set_auto_compact(VALUE _, VALUE v)

   #  define gc_set_auto_compact rb_f_notimplement

   #endif

   
@@ -253,7 +251,7 @@ 

   /*

    *  call-seq:

    *     GC.auto_compact    -> true or false

- @@ -13696,11 +13708,21 @@ Init_GC(void)

+ @@ -13714,11 +13726,21 @@ Init_GC(void)

       rb_define_singleton_method(rb_mGC, "malloc_allocated_size", gc_malloc_allocated_size, 0);

       rb_define_singleton_method(rb_mGC, "malloc_allocations", gc_malloc_allocations, 0);

   #endif
@@ -280,7 +278,7 @@ 

   

   #if GC_DEBUG_STRESS_TO_CLASS

       rb_define_singleton_method(rb_mGC, "add_stress_to_class", rb_gcdebug_add_stress_to_class, -1);

- @@ -13724,6 +13746,7 @@ Init_GC(void)

+ @@ -13742,6 +13764,7 @@ Init_GC(void)

   	OPT(MALLOC_ALLOCATED_SIZE);

   	OPT(MALLOC_ALLOCATED_SIZE_CHECK);

   	OPT(GC_PROFILE_DETAIL_MEMORY);

@@ -1,34 +1,31 @@ 

- commit 6d1ca6737f31b2e24664a093f1827dd74a121a9f

- Author: Jarek Prokop <jprokop@redhat.com>

- Date:   Thu May 26 11:28:13 2022 +0200

+ From 1b3502156a665e2782f366aa5ac8c3bfd7637ab8 Mon Sep 17 00:00:00 2001

+ From: Mike Dalessio <mike.dalessio@gmail.com>

+ Date: Mon, 23 May 2022 15:40:22 -0400

+ Subject: [PATCH 1/2] Move compaction-related methods into gc.c

  

-     Gc ppc64le fix

+ These methods are removed from gc.rb and added to gc.c:

+ 

+ - GC.compact

+ - GC.auto_compact

+ - GC.auto_compact=

+ - GC.latest_compact_info

+ - GC.verify_compaction_references

+ 

+ This is a prefactor to allow setting these methods to

+ `rb_f_notimplement` in a followup commit.

+ ---

+  gc.c  | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++------

+  gc.rb |  68 ---------------------------------------

+  2 files changed, 91 insertions(+), 78 deletions(-)

  

  diff --git a/gc.c b/gc.c

  index ef9327df1f..1c35856c44 100644

  --- a/gc.c

  +++ b/gc.c

- @@ -9421,6 +9421,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)

-      return (VALUE)src;

-  }

-  

- +#if GC_COMPACTION_SUPPORTED

-  static int

-  compare_free_slots(const void *left, const void *right, void *dummy)

-  {

- @@ -9468,6 +9469,7 @@ gc_sort_heap_by_empty_slots(rb_objspace_t *objspace)

-          free(page_list);

-      }

-  }

- +#endif

-  

-  static void

-  gc_ref_update_array(rb_objspace_t * objspace, VALUE v)

- @@ -10147,8 +10149,21 @@ gc_update_references(rb_objspace_t *objspace)

+ @@ -10164,8 +10164,20 @@ gc_update_references(rb_objspace_t *objspace)

       gc_update_table_refs(objspace, finalizer_table);

   }

   

- +#if GC_COMPACTION_SUPPORTED

  +/*

  + *  call-seq:

  + *     GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}
@@ -47,19 +44,7 @@ 

   {

       size_t i;

       rb_objspace_t *objspace = &rb_objspace;

- @@ -10171,7 +10186,11 @@ gc_compact_stats(rb_execution_context_t *ec, VALUE self)

-  

-      return h;

-  }

- +#else

- +#  define gc_compact_stats rb_f_notimplement

- +#endif

-  

- +#if GC_COMPACTION_SUPPORTED

-  static void

-  root_obj_check_moved_i(const char *category, VALUE obj, void *data)

-  {

- @@ -10221,22 +10240,78 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)

+ @@ -10238,22 +10250,70 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)

       return 0;

   }

   
@@ -75,10 +60,6 @@ 

  + *

  + * This method is implementation specific and not expected to be implemented

  + * in any implementation besides MRI.

- + *

- + * To test whether GC compaction is supported, use the idiom:

- + *

- + *   GC.respond_to?(:compact)

  + */

   static VALUE

  -gc_compact(rb_execution_context_t *ec, VALUE self)
@@ -91,11 +72,7 @@ 

  -    return gc_compact_stats(ec, self);

  +    return gc_compact_stats(self);

   }

- +#else

- +#  define gc_compact rb_f_notimplement

- +#endif

   

- +#if GC_COMPACTION_SUPPORTED

  +/*

  + * call-seq:

  + *    GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
@@ -143,7 +120,7 @@ 

   

       RB_VM_LOCK_ENTER();

       {

- @@ -10256,13 +10331,16 @@ gc_verify_compaction_references(rb_execution_context_t *ec, VALUE self, VALUE do

+ @@ -10273,12 +10333,12 @@ gc_verify_compaction_references(rb_execution_context_t *ec, VALUE self, VALUE do

       }

       RB_VM_LOCK_LEAVE();

   
@@ -156,17 +133,12 @@ 

  -    return gc_compact_stats(ec, self);

  +    return gc_compact_stats(self);

   }

- +#else

- +#  define gc_verify_compaction_references rb_f_notimplement

- +#endif

   

   VALUE

-  rb_gc_start(void)

- @@ -10722,26 +10800,45 @@ gc_disable(rb_execution_context_t *ec, VALUE _)

+ @@ -10739,8 +10799,18 @@ gc_disable(rb_execution_context_t *ec, VALUE _)

       return rb_gc_disable();

   }

   

- +#if GC_COMPACTION_SUPPORTED

  +/*

  + *  call-seq:

  + *     GC.auto_compact = flag
@@ -183,20 +155,10 @@ 

   {

       /* If not MinGW, Windows, or does not have mmap, we cannot use mprotect for

        * the read barrier, so we must disable automatic compaction. */

- -#if !defined(__MINGW32__) && !defined(_WIN32)

- -    if (!USE_MMAP_ALIGNED_ALLOC) {

- -        rb_raise(rb_eNotImpError, "Automatic compaction isn't available on this platform");

- -    }

- -#endif

-  

-      ruby_enable_autocompact = RTEST(v);

+ @@ -10754,8 +10824,14 @@ gc_set_auto_compact(rb_execution_context_t *ec, VALUE _, VALUE v)

       return v;

   }

- +#else

- +#  define gc_set_auto_compact rb_f_notimplement

- +#endif

   

- +#if GC_COMPACTION_SUPPORTED

  +/*

  + *  call-seq:

  + *     GC.auto_compact    -> true or false
@@ -209,13 +171,7 @@ 

   {

       return RBOOL(ruby_enable_autocompact);

   }

- +#else

- +#  define gc_get_auto_compact rb_f_notimplement

- +#endif

-  

-  static int

-  get_envparam_size(const char *name, size_t *default_value, size_t lower_bound)

- @@ -13599,6 +13696,11 @@ Init_GC(void)

+ @@ -13617,6 +13693,11 @@ Init_GC(void)

       rb_define_singleton_method(rb_mGC, "malloc_allocated_size", gc_malloc_allocated_size, 0);

       rb_define_singleton_method(rb_mGC, "malloc_allocations", gc_malloc_allocations, 0);

   #endif
@@ -227,6 +183,236 @@ 

   

   #if GC_DEBUG_STRESS_TO_CLASS

       rb_define_singleton_method(rb_mGC, "add_stress_to_class", rb_gcdebug_add_stress_to_class, -1);

+ diff --git a/gc.rb b/gc.rb

+ index 72637f3796..9265dd7b57 100644

+ --- a/gc.rb

+ +++ b/gc.rb

+ @@ -38,27 +38,6 @@ def garbage_collect full_mark: true, immediate_mark: true, immediate_sweep: true

+      Primitive.gc_start_internal full_mark, immediate_mark, immediate_sweep, false

+    end

+  

+ -  #  call-seq:

+ -  #     GC.auto_compact    -> true or false

+ -  #

+ -  #  Returns whether or not automatic compaction has been enabled.

+ -  #

+ -  def self.auto_compact

+ -    Primitive.gc_get_auto_compact

+ -  end

+ -

+ -  #  call-seq:

+ -  #     GC.auto_compact = flag

+ -  #

+ -  #  Updates automatic compaction mode.

+ -  #

+ -  #  When enabled, the compactor will execute on every major collection.

+ -  #

+ -  #  Enabling compaction will degrade performance on major collections.

+ -  def self.auto_compact=(flag)

+ -    Primitive.gc_set_auto_compact(flag)

+ -  end

+ -

+    #  call-seq:

+    #     GC.enable    -> true or false

+    #

+ @@ -210,53 +189,6 @@ def self.latest_gc_info hash_or_key = nil

+      Primitive.gc_latest_gc_info hash_or_key

+    end

+  

+ -  #  call-seq:

+ -  #     GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}

+ -  #

+ -  #  Returns information about object moved in the most recent GC compaction.

+ -  #

+ -  # The returned hash has two keys :considered and :moved.  The hash for

+ -  # :considered lists the number of objects that were considered for movement

+ -  # by the compactor, and the :moved hash lists the number of objects that

+ -  # were actually moved.  Some objects can't be moved (maybe they were pinned)

+ -  # so these numbers can be used to calculate compaction efficiency.

+ -  def self.latest_compact_info

+ -    Primitive.gc_compact_stats

+ -  end

+ -

+ -  #  call-seq:

+ -  #     GC.compact

+ -  #

+ -  # This function compacts objects together in Ruby's heap.  It eliminates

+ -  # unused space (or fragmentation) in the heap by moving objects in to that

+ -  # unused space.  This function returns a hash which contains statistics about

+ -  # which objects were moved.  See `GC.latest_gc_info` for details about

+ -  # compaction statistics.

+ -  #

+ -  # This method is implementation specific and not expected to be implemented

+ -  # in any implementation besides MRI.

+ -  def self.compact

+ -    Primitive.gc_compact

+ -  end

+ -

+ -  # call-seq:

+ -  #    GC.verify_compaction_references(toward: nil, double_heap: false) -> hash

+ -  #

+ -  # Verify compaction reference consistency.

+ -  #

+ -  # This method is implementation specific.  During compaction, objects that

+ -  # were moved are replaced with T_MOVED objects.  No object should have a

+ -  # reference to a T_MOVED object after compaction.

+ -  #

+ -  # This function doubles the heap to ensure room to move all objects,

+ -  # compacts the heap to make sure everything moves, updates all references,

+ -  # then performs a full GC.  If any object contains a reference to a T_MOVED

+ -  # object, that object should be pushed on the mark stack, and will

+ -  # make a SEGV.

+ -  def self.verify_compaction_references(toward: nil, double_heap: false)

+ -    Primitive.gc_verify_compaction_references(double_heap, toward == :empty)

+ -  end

+ -

+    # call-seq:

+    #     GC.using_rvargc? -> true or false

+    #

+ 

+ From d3273559356db6852d1fd794f0f076fba100e09e Mon Sep 17 00:00:00 2001

+ From: Mike Dalessio <mike.dalessio@gmail.com>

+ Date: Mon, 23 May 2022 17:31:14 -0400

+ Subject: [PATCH 2/2] Define unsupported GC compaction methods as

+  rb_f_notimplement

+ 

+ Fixes [Bug #18779]

+ 

+ Define the following methods as `rb_f_notimplement` on unsupported

+ platforms:

+ 

+ - GC.compact

+ - GC.auto_compact

+ - GC.auto_compact=

+ - GC.latest_compact_info

+ - GC.verify_compaction_references

+ 

+ This change allows users to call `GC.respond_to?(:compact)` to

+ properly test for compaction support. Previously, it was necessary to

+ invoke `GC.compact` or `GC.verify_compaction_references` and check if

+ those methods raised `NotImplementedError` to determine if compaction

+ was supported.

+ 

+ This follows the precedent set for other platform-specific

+ methods. For example, in `process.c` for methods such as

+ `Process.fork`, `Process.setpgid`, and `Process.getpriority`.

+ ---

+  gc.c                         | 31 +++++++++++++++----

+  test/ruby/test_gc_compact.rb | 58 ++++++++++++++++++++++++++----------

+  2 files changed, 69 insertions(+), 20 deletions(-)

+ 

+ diff --git a/gc.c b/gc.c

+ index 92ed76cf96..d71924846a 100644

+ --- a/gc.c

+ +++ b/gc.c

+ @@ -9438,6 +9438,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)

+      return (VALUE)src;

+  }

+  

+ +#if GC_COMPACTION_SUPPORTED

+  static int

+  compare_free_slots(const void *left, const void *right, void *dummy)

+  {

+ @@ -9485,6 +9486,7 @@ gc_sort_heap_by_empty_slots(rb_objspace_t *objspace)

+          free(page_list);

+      }

+  }

+ +#endif

+  

+  static void

+  gc_ref_update_array(rb_objspace_t * objspace, VALUE v)

+ @@ -10164,6 +10166,7 @@ gc_update_references(rb_objspace_t *objspace)

+      gc_update_table_refs(objspace, finalizer_table);

+  }

+  

+ +#if GC_COMPACTION_SUPPORTED

+  /*

+   *  call-seq:

+   *     GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}

+ @@ -10200,7 +10203,11 @@ gc_compact_stats(VALUE self)

+  

+      return h;

+  }

+ +#else

+ +#  define gc_compact_stats rb_f_notimplement

+ +#endif

+  

+ +#if GC_COMPACTION_SUPPORTED

+  static void

+  root_obj_check_moved_i(const char *category, VALUE obj, void *data)

+  {

+ @@ -10262,6 +10269,10 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)

+   *

+   * This method is implementation specific and not expected to be implemented

+   * in any implementation besides MRI.

+ + *

+ + * To test whether GC compaction is supported, use the idiom:

+ + *

+ + *   GC.respond_to?(:compact)

+   */

+  static VALUE

+  gc_compact(VALUE self)

+ @@ -10271,7 +10282,11 @@ gc_compact(VALUE self)

+  

+      return gc_compact_stats(self);

+  }

+ +#else

+ +#  define gc_compact rb_f_notimplement

+ +#endif

+  

+ +#if GC_COMPACTION_SUPPORTED

+  /*

+   * call-seq:

+   *    GC.verify_compaction_references(toward: nil, double_heap: false) -> hash

+ @@ -10340,6 +10355,9 @@ gc_verify_compaction_references(int argc, VALUE *argv, VALUE self)

+  

+      return gc_compact_stats(self);

+  }

+ +#else

+ +#  define gc_verify_compaction_references rb_f_notimplement

+ +#endif

+  

+  VALUE

+  rb_gc_start(void)

+ @@ -10799,6 +10817,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)

+      return rb_gc_disable();

+  }

+  

+ +#if GC_COMPACTION_SUPPORTED

+  /*

+   *  call-seq:

+   *     GC.auto_compact = flag

+ @@ -10814,16 +10833,15 @@ gc_set_auto_compact(VALUE _, VALUE v)

+  {

+      /* If not MinGW, Windows, or does not have mmap, we cannot use mprotect for

+       * the read barrier, so we must disable automatic compaction. */

+ -#if !defined(__MINGW32__) && !defined(_WIN32)

+ -    if (!USE_MMAP_ALIGNED_ALLOC) {

+ -        rb_raise(rb_eNotImpError, "Automatic compaction isn't available on this platform");

+ -    }

+ -#endif

+  

+      ruby_enable_autocompact = RTEST(v);

+      return v;

+  }

+ +#else

+ +#  define gc_set_auto_compact rb_f_notimplement

+ +#endif

+  

+ +#if GC_COMPACTION_SUPPORTED

+  /*

+   *  call-seq:

+   *     GC.auto_compact    -> true or false

+ @@ -10835,6 +10853,9 @@ gc_get_auto_compact(VALUE _)

+  {

+      return RBOOL(ruby_enable_autocompact);

+  }

+ +#else

+ +#  define gc_get_auto_compact rb_f_notimplement

+ +#endif

+  

+  static int

+  get_envparam_size(const char *name, size_t *default_value, size_t lower_bound)

  diff --git a/test/ruby/test_gc_compact.rb b/test/ruby/test_gc_compact.rb

  index 42ad028530..411d5eab69 100644

  --- a/test/ruby/test_gc_compact.rb
@@ -314,89 +500,3 @@ 

     end

   

     def test_gc_compact_stats

- diff --git a/gc.rb b/gc.rb

- index 72637f3796..9265dd7b57 100644

- --- a/gc.rb

- +++ b/gc.rb

- @@ -38,27 +38,6 @@ def garbage_collect full_mark: true, immediate_mark: true, immediate_sweep: true

-      Primitive.gc_start_internal full_mark, immediate_mark, immediate_sweep, false

-    end

- 

- -  #  call-seq:

- -  #     GC.auto_compact    -> true or false

- -  #

- -  #  Returns whether or not automatic compaction has been enabled.

- -  #

- -  def self.auto_compact

- -    Primitive.gc_get_auto_compact

- -  end

- -

- -  #  call-seq:

- -  #     GC.auto_compact = flag

- -  #

- -  #  Updates automatic compaction mode.

- -  #

- -  #  When enabled, the compactor will execute on every major collection.

- -  #

- -  #  Enabling compaction will degrade performance on major collections.

- -  def self.auto_compact=(flag)

- -    Primitive.gc_set_auto_compact(flag)

- -  end

- -

-    #  call-seq:

-    #     GC.enable    -> true or false

-    #

- @@ -210,53 +189,6 @@ def self.latest_gc_info hash_or_key = nil

-      Primitive.gc_latest_gc_info hash_or_key

-    end

- 

- -  #  call-seq:

- -  #     GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}

- -  #

- -  #  Returns information about object moved in the most recent GC compaction.

- -  #

- -  # The returned hash has two keys :considered and :moved.  The hash for

- -  # :considered lists the number of objects that were considered for movement

- -  # by the compactor, and the :moved hash lists the number of objects that

- -  # were actually moved.  Some objects can't be moved (maybe they were pinned)

- -  # so these numbers can be used to calculate compaction efficiency.

- -  def self.latest_compact_info

- -    Primitive.gc_compact_stats

- -  end

- -

- -  #  call-seq:

- -  #     GC.compact

- -  #

- -  # This function compacts objects together in Ruby's heap.  It eliminates

- -  # unused space (or fragmentation) in the heap by moving objects in to that

- -  # unused space.  This function returns a hash which contains statistics about

- -  # which objects were moved.  See `GC.latest_gc_info` for details about

- -  # compaction statistics.

- -  #

- -  # This method is implementation specific and not expected to be implemented

- -  # in any implementation besides MRI.

- -  def self.compact

- -    Primitive.gc_compact

- -  end

- -

- -  # call-seq:

- -  #    GC.verify_compaction_references(toward: nil, double_heap: false) -> hash

- -  #

- -  # Verify compaction reference consistency.

- -  #

- -  # This method is implementation specific.  During compaction, objects that

- -  # were moved are replaced with T_MOVED objects.  No object should have a

- -  # reference to a T_MOVED object after compaction.

- -  #

- -  # This function doubles the heap to ensure room to move all objects,

- -  # compacts the heap to make sure everything moves, updates all references,

- -  # then performs a full GC.  If any object contains a reference to a T_MOVED

- -  # object, that object should be pushed on the mark stack, and will

- -  # make a SEGV.

- -  def self.verify_compaction_references(toward: nil, double_heap: false)

- -    Primitive.gc_verify_compaction_references(double_heap, toward == :empty)

- -  end

- -

-    # call-seq:

-    #     GC.using_rvargc? -> true or false

-    #

@@ -1,5 +1,5 @@ 

- --- ruby-3.1.2/gc.rbinc	2022-04-12 13:11:17.000000000 +0200

- +++ ruby/gc.rbinc	2022-06-08 12:49:16.288024971 +0200

+ --- ruby-3.1.3/gc.rbinc	2022-11-24 11:20:33.000000000 +0100

+ +++ ruby/gc.rbinc	2022-11-25 11:50:19.939820992 +0100

  @@ -9,27 +9,27 @@

   #include "builtin.h"                /* for RB_BUILTIN_FUNCTION */

   struct rb_execution_context_struct; /* in vm_core.h */
@@ -218,8 +218,8 @@ 

   COMPILER_WARNING_POP

   

     // load

- --- ruby-3.1.2/miniprelude.c	2022-04-12 13:11:17.000000000 +0200

- +++ ruby/miniprelude.c	2022-06-08 12:49:16.377024871 +0200

+ --- ruby-3.1.3/miniprelude.c	2022-11-24 11:20:33.000000000 +0100

+ +++ ruby/miniprelude.c	2022-11-25 11:50:20.012820803 +0100

  @@ -545,11 +545,10 @@

   

   static const char prelude_name2[] = "<internal:gc>";
@@ -446,57 +446,57 @@ 

   };

   

   static const char prelude_name11[] = "<internal:ractor>";

- @@ -3305,7 +3234,7 @@

+ @@ -3309,7 +3238,7 @@

   "    }\n"

   "  end\n"

   "end\n"

- -#line 3309 "miniprelude.c"

- +#line 3238 "miniprelude.c"

+ -#line 3313 "miniprelude.c"

+ +#line 3242 "miniprelude.c"

   };

   

   static const char prelude_name12[] = "<internal:timev>";

- @@ -3628,7 +3557,7 @@

+ @@ -3632,7 +3561,7 @@

   "    Primitive.time_init_args(year, mon, mday, hour, min, sec, zone)\n"

   "  end\n"

   "end\n"

- -#line 3632 "miniprelude.c"

- +#line 3561 "miniprelude.c"

+ -#line 3636 "miniprelude.c"

+ +#line 3565 "miniprelude.c"

   };

   

   static const char prelude_name13[] = "<internal:nilclass>";

- @@ -3661,7 +3590,7 @@

+ @@ -3665,7 +3594,7 @@

   "    return 0.0\n"

   "  end\n"

   "end\n"

- -#line 3665 "miniprelude.c"

- +#line 3594 "miniprelude.c"

+ -#line 3669 "miniprelude.c"

+ +#line 3598 "miniprelude.c"

   };

   

   static const char prelude_name14[] = "<internal:prelude>";

- @@ -3691,7 +3620,7 @@

+ @@ -3695,7 +3624,7 @@

   "\n"

   "  private :pp\n"

   "end\n"

- -#line 3695 "miniprelude.c"

- +#line 3624 "miniprelude.c"

+ -#line 3699 "miniprelude.c"

+ +#line 3628 "miniprelude.c"

   };

   

   static const char prelude_name15[] = "<internal:gem_prelude>";

- @@ -3718,7 +3647,7 @@

+ @@ -3722,7 +3651,7 @@

   "rescue LoadError\n"

   "  warn \"`did_you_mean' was not loaded.\"\n"

   "end if defined?(DidYouMean)\n"

- -#line 3722 "miniprelude.c"

- +#line 3651 "miniprelude.c"

+ -#line 3726 "miniprelude.c"

+ +#line 3655 "miniprelude.c"

   };

   

   static const char prelude_name16[] = "<internal:yjit>";

- @@ -4059,7 +3988,7 @@

+ @@ -4063,7 +3992,7 @@

   "    end\n"

   "  end\n"

   "end\n"

- -#line 4063 "miniprelude.c"

- +#line 3992 "miniprelude.c"

+ -#line 4067 "miniprelude.c"

+ +#line 3996 "miniprelude.c"

   };

   

   COMPILER_WARNING_POP

@@ -1,27 +0,0 @@ 

- From dae843f6b7502f921a7e66f39e3714a39d860181 Mon Sep 17 00:00:00 2001

- From: Hiroshi SHIBATA <hsbt@ruby-lang.org>

- Date: Wed, 19 Oct 2022 19:40:00 +0900

- Subject: [PATCH] Bypass git submodule add/update with git config

-  protocol.file.allow=always option.

- 

- Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>

- ---

-  test/rubygems/test_gem_source_git.rb | 5 +++++

-  1 file changed, 5 insertions(+)

- 

- diff --git a/test/rubygems/test_gem_source_git.rb b/test/rubygems/test_gem_source_git.rb

- index 5702da05974b6..c3b324771fa4d 100644

- --- a/test/rubygems/test_gem_source_git.rb

- +++ b/test/rubygems/test_gem_source_git.rb

- @@ -63,6 +63,11 @@ def test_checkout_local_cached

-    end

-  

-    def test_checkout_submodules

- +    # We need to allow to checkout submodules with file:// protocol

- +    # CVE-2022-39253

- +    # https://lore.kernel.org/lkml/xmqq4jw1uku5.fsf@gitster.g/

- +    system(@git, *%W"config --global protocol.file.allow always")

- +

-      source = Gem::Source::Git.new @name, @repository, 'master', true

-  

-      git_gem 'b'

@@ -1,31 +0,0 @@ 

- From bfa2f72cfa3bfde34049d26dcb24976316074ad7 Mon Sep 17 00:00:00 2001

- From: Jun Aruga <jaruga@redhat.com>

- Date: Mon, 21 Mar 2022 15:36:51 +0100

- Subject: [PATCH] Fix a test for `bin/bundle update --bundler` to pass on

-  ruby/ruby.

- 

- Consider the case that the latest Bundler version on RubyGems is higher than

- the `system_bundler_version` (= `Bundler::VERSION`) in `make test-bundler` on

- ruby/ruby.

- 

- See <https://bugs.ruby-lang.org/issues/18643>.

- ---

-  spec/bundler/commands/binstubs_spec.rb | 5 ++++-

-  1 file changed, 4 insertions(+), 1 deletion(-)

- 

- diff --git a/spec/bundler/commands/binstubs_spec.rb b/spec/bundler/commands/binstubs_spec.rb

- index 198226207bc..2634f43417c 100644

- --- a/spec/bundler/commands/binstubs_spec.rb

- +++ b/spec/bundler/commands/binstubs_spec.rb

- @@ -226,7 +226,10 @@

-  

-          it "calls through to the latest bundler version" do

-            sys_exec "bin/bundle update --bundler", :env => { "DEBUG" => "1" }

- -          expect(out).to include %(Using bundler #{system_bundler_version}\n)

- +          using_bundler_line = /Using bundler ([\w\.]+)\n/.match(out)

- +          expect(using_bundler_line).to_not be_nil

- +          latest_version = using_bundler_line[1]

- +          expect(Gem::Version.new(latest_version)).to be >= Gem::Version.new(system_bundler_version)

-          end

-  

-          it "calls through to the explicit bundler version" do

@@ -13,12 +13,6 @@ 

  lib/irb/easter-egg.rb

  lib/irb/input-method.rb

  ```

- 

- ---

- 

- Revert "Remove `require` in signal handler to avoid ThreadError"

- 

- This reverts commit 5f749c613c895cf1b11b5e4cbd1205363bc58028.

  ---

   lib/irb/input-method.rb | 5 +++++

   1 file changed, 5 insertions(+)

@@ -1,22 +0,0 @@ 

- From 623162ad2bb3b589bddcc32616492a2bc4651726 Mon Sep 17 00:00:00 2001

- From: Hiroshi SHIBATA <hsbt@ruby-lang.org>

- Date: Tue, 22 Feb 2022 11:58:54 +0900

- Subject: [PATCH] Resolve cleaned-up error with temporary gemhome

- 

- ---

-  test/rubygems/test_gem_commands_setup_command.rb | 2 ++

-  1 file changed, 2 insertions(+)

- 

- diff --git a/test/rubygems/test_gem_commands_setup_command.rb b/test/rubygems/test_gem_commands_setup_command.rb

- index 5cf94a1dc99..934c76b1d1a 100644

- --- a/test/rubygems/test_gem_commands_setup_command.rb

- +++ b/test/rubygems/test_gem_commands_setup_command.rb

- @@ -274,6 +274,8 @@ def test_install_default_bundler_gem_with_destdir_flag

-      spec.executables.each do |e|

-        assert_path_exist File.join destdir, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'gems', spec.full_name, spec.bindir, e

-      end

- +  ensure

- +    FileUtils.chmod "+w", @gemhome

-    end

-  

-    def test_install_default_bundler_gem_with_destdir_and_prefix_flags

@@ -1,40 +0,0 @@ 

- From 7e9ec8a20b0f7469b415283d2ec0c22087f8eb2b Mon Sep 17 00:00:00 2001

- From: Jun Aruga <jaruga@redhat.com>

- Date: Wed, 24 Aug 2022 12:02:56 +0200

- Subject: [PATCH] Fix tests with Europe/Amsterdam pre-1970 time on tzdata

-  version 2022b.

- 

- The Time Zone Database (tzdata) changed the pre-1970 timestamps in some zones

- including Europe/Amsterdam on tzdata version 2022b or later.

- See <https://github.com/eggert/tz/commit/35fa37fbbb152f5dbed4fd5edfdc968e3584fe12>.

- 

- The tzdata RPM package maintainer on Fedora project suggested changing the Ruby

- test, because the change is intentional.

- See <https://bugzilla.redhat.com/show_bug.cgi?id=2118259#c1>.

- 

- We use post-1970 time test data to simplify the test.

- ---

-  core/time/shared/local.rb | 6 +++---

-  1 file changed, 3 insertions(+), 3 deletions(-)

- 

- diff --git a/spec/ruby/core/time/shared/local.rb b/spec/ruby/core/time/shared/local.rb

- index 43f331c4c..c4aa7a7ea 100644

- --- a/spec/ruby/core/time/shared/local.rb

- +++ b/spec/ruby/core/time/shared/local.rb

- @@ -8,10 +8,10 @@ describe :time_local, shared: true do

-  

-    platform_is_not :windows do

-      describe "timezone changes" do

- -      it "correctly adjusts the timezone change to 'CEST' on 'Europe/Amsterdam'" do

- +      it "correctly adjusts the timezone change to 'CET' on 'Europe/Amsterdam'" do

-          with_timezone("Europe/Amsterdam") do

- -          Time.send(@method, 1940, 5, 16).to_a.should ==

- -            [0, 40, 1, 16, 5, 1940, 4, 137, true, "CEST"]

- +          Time.send(@method, 1970, 5, 16).to_a.should ==

- +            [0, 0, 0, 16, 5, 1970, 6, 136, false, "CET"]

-          end

-        end

-      end

- -- 

- 2.36.1

- 

file modified
+41 -60
@@ -1,6 +1,6 @@ 

  %global major_version 3

  %global minor_version 1

- %global teeny_version 2

+ %global teeny_version 3

  %global major_minor_version %{major_version}.%{minor_version}

  

  %global ruby_version %{major_minor_version}.%{teeny_version}
@@ -22,7 +22,7 @@ 

  %endif

  

  

- %global release 171

+ %global release 172

  %{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}

  

  # The RubyGems library has to stay out of Ruby directory tree, since the
@@ -30,14 +30,16 @@ 

  %global rubygems_dir %{_datadir}/rubygems

  

  # Bundled libraries versions

- %global rubygems_version 3.3.7

+ %global rubygems_version 3.3.26

  %global rubygems_molinillo_version 0.7.0

+ %global rubygems_optparse_version 0.2.0

+ %global rubygems_tsort_version 0.1.0

  

  # Default gems.

- %global bundler_version 2.3.7

+ %global bundler_version 2.3.26

  %global bundler_connection_pool_version 2.3.0

  %global bundler_fileutils_version 1.4.1

- %global bundler_molinillo_version 0.7.0

+ %global bundler_molinillo_version 0.8.0

  %global bundler_net_http_persistent_version 4.0.0

  %global bundler_thor_version 1.2.1

  %global bundler_tmpdir_version 0.1.0
@@ -51,8 +53,8 @@ 

  %global io_console_version 0.5.11

  %global irb_version 1.4.1

  %global json_version 2.6.1

- %global openssl_version 3.0.0

- %global psych_version 4.0.3

+ %global openssl_version 3.0.1

+ %global psych_version 4.0.4

  %global racc_version 1.6.0

  %global rdoc_version 6.4.0

  %global stringio_version 3.0.1
@@ -70,9 +72,9 @@ 

  %global net_smtp_version 0.3.1

  %global matrix_version 0.4.2

  %global prime_version 0.1.2

- %global rbs_version 2.1.0

- %global typeprof_version 0.21.2

- %global debug_version 1.4.0

+ %global rbs_version 2.7.0

+ %global typeprof_version 0.21.3

+ %global debug_version 1.6.3

  

  %global tapset_libdir %(echo %{_libdir} | sed 's/64//')*

  
@@ -143,8 +145,6 @@ 

  # Allows to install RubyGems into custom directory, outside of Ruby's tree.

  # http://bugs.ruby-lang.org/issues/5617

  Patch4: ruby-2.1.0-custom-rubygems-location.patch

- # Make mkmf verbose by default

- Patch5: ruby-1.9.3-mkmf-verbose.patch

  # The ABRT hook used to be initialized by preludes via following patches:

  # https://bugs.ruby-lang.org/issues/8566

  # https://bugs.ruby-lang.org/issues/15306
@@ -163,54 +163,33 @@ 

  # Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add.

  # https://bugs.ruby-lang.org/issues/16492

  Patch19: ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch

- # Fix a test for `bin/bundle update --bundler` in `make test-bundler`.

- # https://bugs.ruby-lang.org/issues/18643

- # https://github.com/rubygems/rubygems/commit/bfa2f72cfa3bfde34049d26dcb24976316074ad7

- Patch20: ruby-bundler-2.4.0-bundle-update-bundler-test-in-ruby.patch

- # Workaround gem binary extensions build and installation issues.

- # https://bugs.ruby-lang.org/issues/18373

- # https://github.com/ruby/ruby/pull/5774

- Patch21: ruby-3.2.0-Build-extension-libraries-in-bundled-gems.patch

  # If GC compaction is not supported on platform, define the

  # corresponding GC methods as not implemented.

  # https://bugs.ruby-lang.org/issues/18779

  # https://github.com/ruby/ruby/pull/5934

  Patch22: ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch

  # To regenerate the patch you need to have ruby, autoconf, xz, tar and make installed:

- # tar -Jxvf ./ruby-3.1.2.tar.xz

+ # tar -Jxvf ./ruby-3.1.3.tar.xz

  # git clone https://github.com/ruby/ruby.git

- # cd ruby && git checkout v3_1_2

+ # cd ruby && git checkout v3_1_3

  # patch -p1 < ../ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch

  # ./autogen.sh && ./configure

  # make gc.rbinc miniprelude.c

  # cd ..

- # diff -u {ruby-3.1.2,ruby}/gc.rbinc > ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch

- # diff -u {ruby-3.1.2,ruby}/miniprelude.c >> ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch

+ # diff -u {ruby-3.1.3,ruby}/gc.rbinc > ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch

+ # diff -u {ruby-3.1.3,ruby}/miniprelude.c >> ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch

  Patch23: ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch

  # Define the GC compaction support macro at run time.

  # https://bugs.ruby-lang.org/issues/18829

  # https://github.com/ruby/ruby/pull/6019

  # https://github.com/ruby/ruby/commit/2c190863239bee3f54cfb74b16bb6ea4cae6ed20

  Patch24: ruby-3.2.0-Detect-compaction-support-during-runtime.patch

- # RPM 4.18.0-beta1 or later versions remove the build directory automatically

- # on successful build, the build then fails on removing temporary directories

- # that are missing the 'w' bit.

- # https://bugzilla.redhat.com/show_bug.cgi?id=2105393

- # https://github.com/rpm-software-management/rpm/pull/2080

- # https://github.com/rubygems/rubygems/pull/5372

- Patch25: ruby-rubygems-3.3.8-Resolve-cleaned-up-error-with-temporary-gemhome.patch

- # Fix tests with Europe/Amsterdam pre-1970 time on tzdata version 2022b.

- # https://github.com/ruby/spec/pull/939

- Patch26: ruby-spec-Fix-tests-on-tzdata-2022b.patch

  # Drop hard dependency on RDoc in IRB.

  # https://github.com/ruby/irb/pull/393

  Patch27: ruby-irb-1.4.1-drop-rdoc-hard-dep.patch

  # Set soft dependency on RDoc in input-method.rb in IRB.

  # https://github.com/ruby/irb/pull/395

  Patch28: ruby-irb-1.4.1-set-rdoc-soft-dep.patch

- # Bypass git submodule test failure on Git >= 2.38.1.

- # https://github.com/ruby/ruby/pull/6587

- Patch29: ruby-3.2.0-git-2.38.1-fix-rubygems-test.patch

  

  Requires: %{name}-libs%{?_isa} = %{version}-%{release}

  Suggests: rubypick
@@ -674,26 +653,14 @@ 

  %patch2 -p1

  %patch3 -p1

  %patch4 -p1

- %patch5 -p1

  %patch6 -p1

  %patch7 -p1

  %patch19 -p1

- %patch20 -p1

- 

- # Once the upstream tarball contains the files on the right place, this code

- # won't be necessary. This should happen at the same moment when the patch21

- # is not needed anymore.

- mkdir .bundle/specifications

- find .bundle/gems -name '*-[0-9]*.gemspec' -exec cp -t .bundle/specifications/ {} +

- %patch21 -p1

  %patch22 -p1

  %patch23 -p1

  %patch24 -p1

- %patch25 -p1

- %patch26 -p1

  %patch27 -p1

  %patch28 -p1

- %patch29 -p1

  

  # Provide an example of usage of the tapset:

  cp -a %{SOURCE3} .
@@ -717,6 +684,7 @@ 

          --with-ruby-pc='%{name}.pc' \

          --with-compress-debug-sections=no \

          --disable-rpath \

+         --enable-mkmf-verbose \

          --enable-shared \

          --with-ruby-version='' \

          --enable-multiarch \
@@ -910,6 +878,21 @@ 

    puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \

    == '%{rubygems_molinillo_version}' ]

  

+ # OptParse.

+ make runruby TESTRUN_SCRIPT="-e \" \

+   module Gem; end; \

+   require 'rubygems/optparse/lib/optparse'; \

+   puts '%%{rubygems_optparse_version}: %{rubygems_optparse_version}'; \

+   puts %Q[Gem::OptionParser::Version: #{Gem::OptionParser::Version}]; \

+   exit 1 if Gem::OptionParser::Version != '%{rubygems_optparse_version}'; \

+ \""

+ 

+ # tsort

+ # TODO: Provide some real version test if version is available.

+ make runruby TESTRUN_SCRIPT="-e \" \

+   module Gem; end;\

+   require 'rubygems/tsort/lib/tsort'\""

+ 

  # Check Bundler bundled dependencies versions.

  

  # connection_pool.
@@ -981,9 +964,6 @@ 

  # Avoid `hostname' dependency.

  %{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"}

  

- # https://bugs.ruby-lang.org/issues/18380

- DISABLE_TESTS="$DISABLE_TESTS -n !/TestAddressResolve#test_socket_getnameinfo_domain_blocking/"

- 

  %ifarch armv7hl

  # TestReadline#test_interrupt_in_other_thread fails on 32 bit arches according

  # to upstream, but the test is disabled just on Travis, not in test suite.
@@ -1255,8 +1235,8 @@ 

  %{gem_dir}/specifications/default/abbrev-0.1.0.gemspec

  %{gem_dir}/specifications/default/base64-0.1.1.gemspec

  %{gem_dir}/specifications/default/benchmark-0.2.0.gemspec

- %{gem_dir}/specifications/default/cgi-0.3.1.gemspec

- %{gem_dir}/specifications/default/csv-3.2.2.gemspec

+ %{gem_dir}/specifications/default/cgi-0.3.5.gemspec

+ %{gem_dir}/specifications/default/csv-3.2.5.gemspec

  %{gem_dir}/specifications/default/date-3.2.2.gemspec

  %{gem_dir}/specifications/default/delegate-0.2.0.gemspec

  %{gem_dir}/specifications/default/did_you_mean-%{did_you_mean_version}.gemspec
@@ -1277,7 +1257,7 @@ 

  %{gem_dir}/specifications/default/ipaddr-1.2.4.gemspec

  %{gem_dir}/specifications/default/logger-1.5.0.gemspec

  %{gem_dir}/specifications/default/mutex_m-0.1.1.gemspec

- %{gem_dir}/specifications/default/net-http-0.2.0.gemspec

+ %{gem_dir}/specifications/default/net-http-0.3.0.gemspec

  %{gem_dir}/specifications/default/net-protocol-0.1.2.gemspec

  %{gem_dir}/specifications/default/nkf-0.1.1.gemspec

  %{gem_dir}/specifications/default/observer-0.1.1.gemspec
@@ -1293,12 +1273,12 @@ 

  %{gem_dir}/specifications/default/racc-%{racc_version}.gemspec

  %{gem_dir}/specifications/default/readline-0.0.3.gemspec

  %{gem_dir}/specifications/default/readline-ext-0.1.4.gemspec

- %{gem_dir}/specifications/default/reline-0.3.0.gemspec

+ %{gem_dir}/specifications/default/reline-0.3.1.gemspec

  %{gem_dir}/specifications/default/resolv-0.2.1.gemspec

  %{gem_dir}/specifications/default/resolv-replace-0.1.0.gemspec

  %{gem_dir}/specifications/default/rinda-0.1.1.gemspec

  %{gem_dir}/specifications/default/ruby2_keywords-0.0.5.gemspec

- %{gem_dir}/specifications/default/securerandom-0.1.1.gemspec

+ %{gem_dir}/specifications/default/securerandom-0.2.0.gemspec

  %{gem_dir}/specifications/default/set-1.0.2.gemspec

  %{gem_dir}/specifications/default/shellwords-0.1.0.gemspec

  %{gem_dir}/specifications/default/singleton-0.1.1.gemspec
@@ -1397,7 +1377,6 @@ 

  %doc %{gem_dir}/gems/debug-%{debug_version}/README.md

  %{gem_dir}/gems/debug-%{debug_version}/Rakefile

  %doc %{gem_dir}/gems/debug-%{debug_version}/TODO.md

- %{gem_dir}/gems/debug-%{debug_version}/bin

  %{gem_dir}/gems/debug-%{debug_version}/exe

  %{gem_dir}/gems/debug-%{debug_version}/lib

  %{gem_dir}/gems/debug-%{debug_version}/misc
@@ -1488,7 +1467,7 @@ 

  %license %{gem_dir}/gems/rbs-%{rbs_version}/BSDL

  %doc %{gem_dir}/gems/rbs-%{rbs_version}/CHANGELOG.md

  %license %{gem_dir}/gems/rbs-%{rbs_version}/COPYING

- %{gem_dir}/gems/rbs-%{rbs_version}/Gemfile

+ %{gem_dir}/gems/rbs-%{rbs_version}/Gemfile*

  %doc %{gem_dir}/gems/rbs-%{rbs_version}/README.md

  %{gem_dir}/gems/rbs-%{rbs_version}/Rakefile

  %{gem_dir}/gems/rbs-%{rbs_version}/Steepfile
@@ -1545,7 +1524,6 @@ 

  %{gem_dir}/gems/typeprof-%{typeprof_version}/lib

  %doc %{gem_dir}/gems/typeprof-%{typeprof_version}/tools

  %exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/typeprof-lsp

- %exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/vscode

  %{gem_dir}/specifications/typeprof-%{typeprof_version}.gemspec

  %doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Gemfile*

  %doc %{gem_dir}/gems/typeprof-%{typeprof_version}/README.md
@@ -1553,6 +1531,9 @@ 

  

  

  %changelog

+ * Thu Nov 24 2022 Vít Ondruch <vondruch@redhat.com> - 3.1.3-172

+ - Upgrade to Ruby 3.1.3.

+ 

  * Tue Nov 22 2022 Vít Ondruch <vondruch@redhat.com> - 3.1.2-171

  - Re-disable package notes. It causes additional issues with installing binary

    gems.

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (ruby-3.1.2.tar.xz) = 4a74e9efc6ea4b3eff4fec7534eb1fff4794d021531defc2e9937e53c6668db8ecdc0fff2bc23d5e6602d0df344a2caa85b31c5414309541e3d5313ec82b6e21

+ SHA512 (ruby-3.1.3.tar.xz) = 4b0fd334ae56132ba98b8a69adad54bdcf7f7aeabd5eba5b0f0399a3868e2054f9026ca1b1cb2dbb197a9e9b0610b263481949c0623a62071546bc5adff8ca69

I will let this sit here over the weekend. I'll be glad if somebody can review (especially the ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch patch, which should be now much closer to the original PR and git formatted).

Build succeeded.

rebased onto 128a81ce27bfca350189f0478c39cfe4f676d292

a year ago

rebased onto 649a6e3

a year ago

Pull-Request has been merged by vondruch

a year ago

Build succeeded.