diff --git a/gemrc b/gemrc deleted file mode 100644 index a7c4c76c63d0748165a0502b0dfe607841bfdb05..0000000000000000000000000000000000000000 --- a/gemrc +++ /dev/null @@ -1,2 +0,0 @@ -sources: -- https://mirrors.aliyun.com/rubygems/ diff --git a/ruby-1.9.3-mkmf-verbose.patch b/ruby-1.9.3-mkmf-verbose.patch deleted file mode 100644 index 2113beaf9972a2d831ea7335d4db019dd29db8e6..0000000000000000000000000000000000000000 --- a/ruby-1.9.3-mkmf-verbose.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 28cc0749d6729aa2444661ee7b411e183fe220b0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -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 - diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index 502b47a4739d076bc37ffd8604e73a4f64a25b59..2646a80e3a9568d6c326739a1e15550a6c923d08 100644 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -11,7 +11,7 @@ diff --git a/configure.ac b/configure.ac index d261ea57b5..3c13076b82 100644 --- a/configure.ac +++ b/configure.ac -@@ -3374,6 +3374,11 @@ AS_IF([test ${multiarch+set}], [ +@@ -3411,6 +3411,11 @@ AS_IF([test ${multiarch+set}], [ ]) archlibdir='${libdir}/${arch}' @@ -23,6 +23,3 @@ index d261ea57b5..3c13076b82 100644 sitearchlibdir='${libdir}/${sitearch}' archincludedir='${includedir}/${arch}' sitearchincludedir='${includedir}/${sitearch}' --- -2.22.0 - diff --git a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch index 8961723415f6814dcef811e107c6bbfbbd5822a6..6f2fbe71c043ba17323b8c72573d235e96812b73 100644 --- a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +++ b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch @@ -14,7 +14,7 @@ diff --git a/configure.ac b/configure.ac index c42436c23d..d261ea57b5 100644 --- a/configure.ac +++ b/configure.ac -@@ -4032,7 +4032,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -4196,7 +4196,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then @@ -75,6 +75,3 @@ index 07076d4..35e6c3c 100755 when /^ARCH_FLAG$/ val = "arch_flag || #{val}" if universal when /^UNIVERSAL_ARCHNAMES$/ --- -1.9.0 - diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 1a9a75837e0f3e01e5716125c41b246260645dc8..f94b6560b75863f0b6cb668f1020d3f609519aa6 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -11,7 +11,7 @@ diff --git a/configure.ac b/configure.ac index 3c13076b82..93af30321d 100644 --- a/configure.ac +++ b/configure.ac -@@ -4096,6 +4096,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -4260,6 +4260,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 @@ -20,6 +20,3 @@ index 3c13076b82..93af30321d 100644 AS_IF([test "${universal_binary-no}" = yes ], [ arch="universal-${target_os}" AS_IF([test "${rb_cv_architecture_available}" = yes], [ --- -1.8.3.1 - diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index fe34219459bfcdaa104a3b39fe34db334fe85108..0cb2012296f5c48cf57e0a9453d5af82c625ec4a 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -15,7 +15,7 @@ diff --git a/configure.ac b/configure.ac index 93af30321d..bc13397e0e 100644 --- a/configure.ac +++ b/configure.ac -@@ -4068,6 +4068,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -4232,6 +4232,10 @@ AC_ARG_WITH(vendorarchdir, [vendorarchdir=$withval], [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) @@ -26,7 +26,7 @@ index 93af30321d..bc13397e0e 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX='' -@@ -4092,6 +4096,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4256,6 +4260,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl @@ -75,7 +75,7 @@ index e9110a17ca..76a1f0a315 100755 mandir = CONFIG["mandir", true] docdir = CONFIG["docdir", true] enable_shared = CONFIG["ENABLE_SHARED"] == 'yes' -@@ -590,7 +591,16 @@ def stub +@@ -595,7 +596,16 @@ def stub install?(:local, :comm, :lib) do prepare "library scripts", rubylibdir noinst = %w[*.txt *.rdoc *.gemspec] @@ -92,6 +92,3 @@ index e9110a17ca..76a1f0a315 100755 end install?(:local, :comm, :hdr, :'comm-hdr') do --- -1.8.3.1 - diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index 2508aeb49c20653b5b87b9e1f1c2eb22eececaa8..866fef4dc2e2ba87bf4506c74e46ea304b5e0d59 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -12,15 +12,15 @@ ruby_version_dir_name now specifies custom version string for versioned directories, e.g. instead of default X.Y.Z, you can specify whatever string. --- - configure.ac | 64 ++++++++++++++++++++++++--------------------- + configure.ac | 66 ++++++++++++++++++++++++--------------------- template/ruby.pc.in | 1 + - 2 files changed, 35 insertions(+), 30 deletions(-) + 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/configure.ac b/configure.ac index 80b137e380..63cd3b4f8b 100644 --- a/configure.ac +++ b/configure.ac -@@ -3983,9 +3983,6 @@ AS_CASE(["$target_os"], +@@ -4146,9 +4146,6 @@ AS_CASE(["$target_os"], rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) @@ -30,7 +30,7 @@ index 80b137e380..63cd3b4f8b 100644 rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} AC_ARG_WITH(rubyarchprefix, AS_HELP_STRING([--with-rubyarchprefix=DIR], -@@ -4008,56 +4005,62 @@ AC_ARG_WITH(ridir, +@@ -4171,57 +4168,63 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -46,6 +46,7 @@ index 80b137e380..63cd3b4f8b 100644 -AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [ - { - echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" +- echo '@%:@include "confdefs.h"' - echo '#define STRINGIZE(x) x' - test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' - echo '#include "version.h"' @@ -61,6 +62,7 @@ index 80b137e380..63cd3b4f8b 100644 +RUBY_LIB_VERSION_STYLE='3 /* full */' +{ +echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" ++echo '@%:@include "confdefs.h"' +echo '#define STRINGIZE(x) x' +test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' +echo '#include "version.h"' @@ -120,7 +122,7 @@ index 80b137e380..63cd3b4f8b 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4074,6 +4077,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4238,6 +4241,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -140,8 +142,6 @@ index 8a2c066..c81b211 100644 RUBY_API_VERSION=@RUBY_API_VERSION@ RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@ arch=@arch@ --- -2.1.0 From 518850aba6eee76de7715aae8d37330e34b01983 Mon Sep 17 00:00:00 2001 @@ -171,7 +171,7 @@ diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index d4c110e..d39c9a6 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -448,7 +448,7 @@ def CONFIG.[](name, mandatory = false) +@@ -453,7 +453,7 @@ def CONFIG.[](name, mandatory = false) install?(:doc, :rdoc) do if $rdocdir @@ -180,9 +180,6 @@ index d4c110e..d39c9a6 100755 prepare "rdoc", ridatadir install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode) end --- -2.23.0 - From 9f0ec0233f618cbb862629816b22491c3df79578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= @@ -217,7 +214,7 @@ index d4ff4a262c..3f9a5bf590 100644 File.join parts end -@@ -234,7 +235,7 @@ def self.vendor_dir # :nodoc: +@@ -248,7 +249,7 @@ def self.vendor_dir # :nodoc: return nil unless RbConfig::CONFIG.key? "vendordir" File.join RbConfig::CONFIG["vendordir"], "gems", @@ -230,7 +227,7 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index b25068405d..e9fef4a311 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1395,7 +1395,8 @@ def test_self_use_paths +@@ -1337,7 +1337,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, ".gem", Gem.ruby_engine] @@ -240,7 +237,7 @@ index b25068405d..e9fef4a311 100644 FileUtils.mkdir_p File.join(parts) -@@ -1471,7 +1472,7 @@ def test_self_vendor_dir +@@ -1413,7 +1414,7 @@ def test_self_vendor_dir vendordir(File.join(@tempdir, "vendor")) do expected = File.join RbConfig::CONFIG["vendordir"], "gems", @@ -249,8 +246,6 @@ index b25068405d..e9fef4a311 100644 assert_equal expected, Gem.vendor_dir end --- -2.1.0 From 88c38a030c22dbf9422ece847bdfbf87d6659313 Mon Sep 17 00:00:00 2001 @@ -267,7 +262,7 @@ diff --git a/configure.ac b/configure.ac index a00f2b6776..999e2d6d5d 100644 --- a/configure.ac +++ b/configure.ac -@@ -115,7 +115,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` +@@ -124,7 +124,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) @@ -276,6 +271,3 @@ index a00f2b6776..999e2d6d5d 100644 dnl checks for alternative programs AC_CANONICAL_BUILD --- -2.1.0 - diff --git a/ruby-2.7.0-Initialize-ABRT-hook.patch b/ruby-2.7.0-Initialize-ABRT-hook.patch index 4d5ab297d1140ecdde11a3c897a1f9baf858feca..b0aace421ce52e5e76c5fc9b4dc42a3c82328bc4 100644 --- a/ruby-2.7.0-Initialize-ABRT-hook.patch +++ b/ruby-2.7.0-Initialize-ABRT-hook.patch @@ -43,7 +43,7 @@ diff --git a/common.mk b/common.mk index b2e5b2b6d0..f39f81da5c 100644 --- a/common.mk +++ b/common.mk -@@ -82,7 +82,8 @@ ENC_MK = enc.mk +@@ -86,7 +86,8 @@ ENC_MK = enc.mk MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \ RUBY="$(BOOTSTRAPRUBY)" MINIRUBY="$(BOOTSTRAPRUBY)" $(mflags) @@ -57,7 +57,7 @@ diff --git a/ruby.c b/ruby.c index 60c57d6259..1eec16f2c8 100644 --- a/ruby.c +++ b/ruby.c -@@ -1623,10 +1623,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) +@@ -1572,10 +1572,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) void Init_builtin_features(void); @@ -72,6 +72,3 @@ index 60c57d6259..1eec16f2c8 100644 rb_const_remove(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX")); } --- -2.24.1 - diff --git a/ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch b/ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch index 5c7afe8cb6d48d0636203be5d27becd6eec4066b..b14971e42adc4f2b6fa5df229b71def8f9292df7 100644 --- a/ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch +++ b/ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch @@ -20,15 +20,12 @@ diff --git a/test/-ext-/bug_reporter/test_bug_reporter.rb b/test/-ext-/bug_repor index 628fcd0340..2c677cc8a7 100644 --- a/test/-ext-/bug_reporter/test_bug_reporter.rb +++ b/test/-ext-/bug_reporter/test_bug_reporter.rb -@@ -22,7 +22,7 @@ def test_bug_reporter_add - args = ["--disable-gems", "-r-test-/bug_reporter", +@@ -28,7 +28,7 @@ def test_bug_reporter_add "-C", tmpdir] - stdin = "register_sample_bug_reporter(12345); Process.kill :SEGV, $$" + args.push("--yjit") if yjit_enabled? # We want the printed description to match this process's RUBY_DESCRIPTION + stdin = "#{no_core}register_sample_bug_reporter(12345); Process.kill :SEGV, $$" - assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT") + assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT", timeout_error: nil) ensure FileUtils.rm_rf(tmpdir) if tmpdir end --- -2.27.0 - diff --git a/ruby-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.patch b/ruby-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.patch index 973fe720adf0970921ff76ea37ee7464dea5ffd6..22b94e692b0d6b4ba6fdf4ab8e8b540fc738dccf 100644 --- a/ruby-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.patch +++ b/ruby-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.patch @@ -21,23 +21,20 @@ diff --git a/vm.c b/vm.c index 8ce8b279d4..3d189fa63a 100644 --- a/vm.c +++ b/vm.c -@@ -479,7 +479,15 @@ rb_dtrace_setup(rb_execution_context_t *ec, VALUE klass, ID id, +@@ -547,7 +547,15 @@ rb_dtrace_setup(rb_execution_context_t *ec, VALUE klass, ID id, } type = BUILTIN_TYPE(klass); if (type == T_CLASS || type == T_ICLASS || type == T_MODULE) { -- VALUE name = rb_class_path(klass); -+ VALUE name = Qnil; -+ /* -+ * Special treatment for rb_mRubyVMFrozenCore wchi is broken by GC. +- VALUE name = rb_class_path(klass); ++ VALUE name = Qnil; ++ /* ++ * Special treatment for rb_mRubyVMFrozenCore wchi is broken by GC. + * https://bugs.ruby-lang.org/issues/18257 -+ */ -+ if (klass == rb_mRubyVMFrozenCore) -+ name = rb_str_new_cstr("RubyVM::FrozenCore"); -+ else -+ name = rb_class_path(klass); - const char *classname, *filename; - const char *methodname = rb_id2name(id); - if (methodname && (filename = rb_source_location_cstr(&args->line_no)) != 0) { --- -2.34.1 - ++ */ ++ if (klass == rb_mRubyVMFrozenCore) ++ name = rb_str_new_cstr("RubyVM::FrozenCore"); ++ else ++ name = rb_class_path(klass); + const char *classname, *filename; + const char *methodname = rb_id2name(id); + if (methodname && (filename = rb_source_location_cstr(&args->line_no)) != 0) { diff --git a/ruby-3.2.0-Build-extension-libraries-in-bundled-gems.patch b/ruby-3.2.0-Build-extension-libraries-in-bundled-gems.patch deleted file mode 100644 index de8d4d3a456a6eb2aae196f544e359fd4f839445..0000000000000000000000000000000000000000 --- a/ruby-3.2.0-Build-extension-libraries-in-bundled-gems.patch +++ /dev/null @@ -1,338 +0,0 @@ -From 111f8422427d78becc9183ae149b2105a16bf327 Mon Sep 17 00:00:00 2001 -From: Nobuyoshi Nakada -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 -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 -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 -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 -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 diff --git a/ruby-3.2.0-Detect-compaction-support-during-runtime.patch b/ruby-3.2.0-Detect-compaction-support-during-runtime.patch deleted file mode 100644 index 64566f5016efcd242806f75fccde431359532325..0000000000000000000000000000000000000000 --- a/ruby-3.2.0-Detect-compaction-support-during-runtime.patch +++ /dev/null @@ -1,291 +0,0 @@ -From 4d9cc9afa47981520d991d19fd78b322f1ba9f2a Mon Sep 17 00:00:00 2001 -From: Jarek Prokop -Date: Wed, 22 Jun 2022 01:03:49 +0200 -Subject: [PATCH] Detect compaction support during runtime. - -The patch is created by backporting 3 commits from -the upstream Ruby master branch in the chronological order below. - -https://github.com/ruby/ruby/commit/52d42e702375446746164a0251e1a10bce813b78 -https://github.com/ruby/ruby/commit/79eaaf2d0b641710613f16525e4b4c439dfe854e -https://github.com/ruby/ruby/commit/2c190863239bee3f54cfb74b16bb6ea4cae6ed20 - -== How to create this patch == - -Download Ruby source code. -``` -$ git clone https://github.com/ruby/ruby.git -$ cd ruby -``` - -First create a commit squashed from the 3 commits above. -Checkout the second commmit above, and create a temporary branch. -``` -$ git checkout 79eaaf2d0b641710613f16525e4b4c439dfe854e -$ git checkout -b wip/detect-compaction-runtime-tmp -``` - -Cherry pick the third commit on the second commit. -``` -$ git cherry-pick 2c190863239bee3f54cfb74b16bb6ea4cae6ed20 -``` - -Squash the last 3 commits on the branch. -``` -$ git rebase -i 2223eb082afa6d05321b69df783d4133b9aacba6 -``` - -Then checkout Ruby 3.1.2 branch. -Create a new branch. -Merge the Fedora Ruby's -ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch. -``` -$ git checkout v3_1_2 -$ git checkout -b wip/detect-compaction-runtime -$ patch -p1 < -~/fed/ruby/ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch -$ git add gc.c gc.rb test/ruby/test_gc_compact.rb -$ git commit -``` - -Merge the squashed one commit on the -`wip/detect-compaction-runtime-tmp` branch -into the `wip/detect-compaction-runtime` branch. -``` -$ git cherry-pick -``` - -Fix conflicts seeing the difference by `git show ` -on another terminal. -``` -$ vi gc.c -$ git add gc.c -$ git commit -``` - -== Notes for the patch == - -``` -+# define GC_COMPACTION_SUPPORTED (GC_CAN_COMPILE_COMPACTION && USE_MMAP_ALIGNED_ALLOC) -``` - -We use the USE_MMAP_ALIGNED_ALLOC instead of HEAP_PAGE_ALLOC_USE_MMAP on -the line above. Because while the Ruby on the master branch replaced the -USE_MMAP_ALIGNED_ALLOC with HEAP_PAGE_ALLOC_USE_MMAP, Ruby 3.1.2 doesn't. -See . - -``` -+ rb_define_singleton_method(rb_mGC, "verify_compaction_references", gc_verify_compaction_references, -1); -``` - -We added the line in the case that GC_COMPACTION_SUPPORTED is true. -Because while the Ruby on the master branch defines the -GC.verify_compaction_references in the gc.rb in -the case that GC_COMPACTION_SUPPORTED is true, Ruby 3.1.2 -doesn't define it in the gc.rb. -See . - -``` -+ OPT(GC_COMPACTION_SUPPORTED); -``` - -We added the line to expose the C macro to Ruby level. -In Ruby the macro existance can then be checked like so: -```Ruby -GC::OPTS.include?("GC_COMPACTION_SUPPORTED") -``` -It will return `true` if the GC_COMPACTION_SUPPORTED evaluates to `true` on the -C level, `false` otherwise. -See - -== Original commit messages == - -This is a combination of 3 commits. -This is the 1st commit message: -~~~ -Rename GC_COMPACTION_SUPPORTED - -Naming this macro GC_COMPACTION_SUPPORTED is misleading because it -only checks whether compaction is supported at compile time. - -[Bug #18829] -~~~ - -This is the commit message #2: -~~~ -Include runtime checks for compaction support - -Commit 0c36ba53192c5a0d245c9b626e4346a32d7d144e changed GC compaction -methods to not be implemented when not supported. However, that commit -only does compile time checks (which currently only checks for WASM), -but there are additional compaction support checks during run time. - -This commit changes it so that GC compaction methods aren't defined -during run time if the platform does not support GC compaction. - -[Bug #18829] -~~~ - -This is the commit message #3: -~~~ -Suppress code unused unless GC_CAN_COMPILE_COMPACTION -~~~ ---- - gc.c | 63 +++++++++++++++++++++++++++++++++++++++++------------------- - 1 file changed, 43 insertions(+), 20 deletions(-) - -diff --git a/gc.c b/gc.c -index 1c35856c44..bff0666a17 100644 ---- a/gc.c -+++ b/gc.c -@@ -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); - -+#ifndef GC_CAN_COMPILE_COMPACTION -+#if defined(__wasi__) /* WebAssembly doesn't support signals */ -+# define GC_CAN_COMPILE_COMPACTION 0 -+#else -+# define GC_CAN_COMPILE_COMPACTION 1 -+#endif -+#endif -+ -+#if defined(__MINGW32__) || defined(_WIN32) -+# define GC_COMPACTION_SUPPORTED 1 -+#else -+/* If not MinGW, Windows, or does not have mmap, we cannot use mprotect for -+ * the read barrier, so we must disable compaction. */ -+# define GC_COMPACTION_SUPPORTED (GC_CAN_COMPILE_COMPACTION && USE_MMAP_ALIGNED_ALLOC) -+#endif -+ -+#if GC_CAN_COMPILE_COMPACTION - static void - read_barrier_handler(uintptr_t address) - { -@@ -5004,6 +5021,7 @@ read_barrier_handler(uintptr_t address) - } - RB_VM_LOCK_LEAVE(); - } -+#endif - - #if defined(_WIN32) - static LPTOP_LEVEL_EXCEPTION_FILTER old_handler; -@@ -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)) { -- /* If not MinGW, Windows, or does not have mmap, we cannot use mprotect for -- * the read barrier, so we must disable compaction. */ --#if !defined(__MINGW32__) && !defined(_WIN32) -- if (!USE_MMAP_ALIGNED_ALLOC) { -- rb_raise(rb_eNotImpError, "Compaction isn't available on this platform"); -- } --#endif -+ GC_ASSERT(GC_COMPACTION_SUPPORTED); - - reason |= GPR_FLAG_COMPACT; - } -@@ -9438,7 +9450,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size) - return (VALUE)src; - } - --#if GC_COMPACTION_SUPPORTED -+#if GC_CAN_COMPILE_COMPACTION - static int - compare_free_slots(const void *left, const void *right, void *dummy) - { -@@ -10166,7 +10178,7 @@ gc_update_references(rb_objspace_t *objspace) - gc_update_table_refs(objspace, finalizer_table); - } - --#if GC_COMPACTION_SUPPORTED -+#if GC_CAN_COMPILE_COMPACTION - /* - * call-seq: - * GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}} -@@ -10207,7 +10219,7 @@ gc_compact_stats(VALUE self) - # define gc_compact_stats rb_f_notimplement - #endif - --#if GC_COMPACTION_SUPPORTED -+#if GC_CAN_COMPILE_COMPACTION - static void - root_obj_check_moved_i(const char *category, VALUE obj, void *data) - { -@@ -10286,7 +10298,7 @@ gc_compact(VALUE self) - # define gc_compact rb_f_notimplement - #endif - --#if GC_COMPACTION_SUPPORTED -+#if GC_CAN_COMPILE_COMPACTION - /* - * call-seq: - * GC.verify_compaction_references(toward: nil, double_heap: false) -> hash -@@ -10817,7 +10829,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _) - return rb_gc_disable(); - } - --#if GC_COMPACTION_SUPPORTED -+#if GC_CAN_COMPILE_COMPACTION - /* - * call-seq: - * GC.auto_compact = flag -@@ -10831,8 +10843,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _) - static VALUE - 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. */ -+ GC_ASSERT(GC_COMPACTION_SUPPORTED); - - ruby_enable_autocompact = RTEST(v); - return v; -@@ -10841,7 +10852,8 @@ gc_set_auto_compact(VALUE _, VALUE v) - # define gc_set_auto_compact rb_f_notimplement - #endif - --#if GC_COMPACTION_SUPPORTED -+ -+#if GC_CAN_COMPILE_COMPACTION - /* - * call-seq: - * GC.auto_compact -> true or false -@@ -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 -- rb_define_singleton_method(rb_mGC, "compact", gc_compact, 0); -- rb_define_singleton_method(rb_mGC, "auto_compact", gc_get_auto_compact, 0); -- rb_define_singleton_method(rb_mGC, "auto_compact=", gc_set_auto_compact, 1); -- rb_define_singleton_method(rb_mGC, "latest_compact_info", gc_compact_stats, 0); -- rb_define_singleton_method(rb_mGC, "verify_compaction_references", gc_verify_compaction_references, -1); -+ if (GC_COMPACTION_SUPPORTED) { -+ rb_define_singleton_method(rb_mGC, "compact", gc_compact, 0); -+ rb_define_singleton_method(rb_mGC, "auto_compact", gc_get_auto_compact, 0); -+ rb_define_singleton_method(rb_mGC, "auto_compact=", gc_set_auto_compact, 1); -+ rb_define_singleton_method(rb_mGC, "latest_compact_info", gc_compact_stats, 0); -+ rb_define_singleton_method(rb_mGC, "verify_compaction_references", gc_verify_compaction_references, -1); -+ } -+ else { -+ rb_define_singleton_method(rb_mGC, "compact", rb_f_notimplement, 0); -+ rb_define_singleton_method(rb_mGC, "auto_compact", rb_f_notimplement, 0); -+ rb_define_singleton_method(rb_mGC, "auto_compact=", rb_f_notimplement, 1); -+ rb_define_singleton_method(rb_mGC, "latest_compact_info", rb_f_notimplement, 0); -+ /* When !GC_COMPACTION_SUPPORTED, this method is not defined in gc.rb */ -+ rb_define_singleton_method(rb_mGC, "verify_compaction_references", rb_f_notimplement, -1); -+ } - - #if GC_DEBUG_STRESS_TO_CLASS - rb_define_singleton_method(rb_mGC, "add_stress_to_class", rb_gcdebug_add_stress_to_class, -1); -@@ -13742,6 +13764,7 @@ Init_GC(void) - OPT(MALLOC_ALLOCATED_SIZE); - OPT(MALLOC_ALLOCATED_SIZE_CHECK); - OPT(GC_PROFILE_DETAIL_MEMORY); -+ OPT(GC_COMPACTION_SUPPORTED); - #undef OPT - OBJ_FREEZE(opts); - } --- -2.36.1 - diff --git a/ruby-3.2.0-Revert-Fix-test-syntax-suggest-order.patch b/ruby-3.2.0-Revert-Fix-test-syntax-suggest-order.patch new file mode 100644 index 0000000000000000000000000000000000000000..ee3b17749376baee16238da72921a82a43dd522c --- /dev/null +++ b/ruby-3.2.0-Revert-Fix-test-syntax-suggest-order.patch @@ -0,0 +1,73 @@ +From 5e2f8761b2342ee58f9689a7d62d48ec031e59c0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Mon, 2 Jan 2023 14:30:13 +0100 +Subject: [PATCH] Revert "Fix test-syntax-suggest order" + +This reverts commit 18c1ca8f4c0748905d5cedb6c044df507ea8ad6a. +--- + common.mk | 12 ++++-------- + defs/gmake.mk | 2 +- + 2 files changed, 5 insertions(+), 9 deletions(-) + +diff --git a/common.mk b/common.mk +index d0558697d7..e73841aae7 100644 +--- a/common.mk ++++ b/common.mk +@@ -767,7 +767,8 @@ clean-spec: PHONY + -$(Q) $(RMDIRS) $(RUBYSPEC_CAPIEXT) 2> $(NULL) || $(NULLCMD) + -$(Q) $(RMALL) rubyspec_temp + +-check: main $(DOT_WAIT) test $(DOT_WAIT) test-tool $(DOT_WAIT) test-all ++check: main $(DOT_WAIT) test $(DOT_WAIT) test-tool $(DOT_WAIT) test-all \ ++ $(DOT_WAIT) test-spec $(DOT_WAIT) test-syntax-suggest + $(ECHO) check succeeded + -$(Q) : : "run only on sh"; \ + if [ x"$(GIT)" != x ] && $(CHDIR) "$(srcdir)" && \ +@@ -903,8 +904,6 @@ yes-test-spec: test-spec-precheck + $(ACTIONS_ENDGROUP) + no-test-spec: + +-check: $(DOT_WAIT) test-spec +- + RUNNABLE = $(LIBRUBY_RELATIVE:no=un)-runnable + runnable: $(RUNNABLE) prog $(tooldir)/mkrunnable.rb PHONY + $(Q) $(MINIRUBY) $(tooldir)/mkrunnable.rb -v $(EXTOUT) +@@ -1456,7 +1455,6 @@ test-syntax-suggest-precheck: $(TEST_RUNNABLE)-test-syntax-suggest-precheck + no-test-syntax-suggest-precheck: + yes-test-syntax-suggest-precheck: main + +-test-syntax-suggest-prepare: $(TEST_RUNNABLE)-test-syntax-suggest-prepare + no-test-syntax-suggest-prepare: no-test-syntax-suggest-precheck + yes-test-syntax-suggest-prepare: yes-test-syntax-suggest-precheck + $(ACTIONS_GROUP) +@@ -1466,15 +1464,13 @@ yes-test-syntax-suggest-prepare: yes-test-syntax-suggest-precheck + + RSPECOPTS = + SYNTAX_SUGGEST_SPECS = +-PREPARE_SYNTAX_SUGGEST = test-syntax-suggest-prepare ++PREPARE_SYNTAX_SUGGEST = yes-test-syntax-suggest-prepare + test-syntax-suggest: $(TEST_RUNNABLE)-test-syntax-suggest +-yes-test-syntax-suggest: yes-$(PREPARE_SYNTAX_SUGGEST) ++yes-test-syntax-suggest: $(PREPARE_SYNTAX_SUGGEST) + $(XRUBY) -C $(srcdir) -Ispec/syntax_suggest .bundle/bin/rspec \ + --require spec_helper $(RSPECOPTS) spec/syntax_suggest/$(SYNTAX_SUGGEST_SPECS) + no-test-syntax-suggest: + +-check: $(DOT_WAIT) $(TEST_RUNNABLE)-$(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest +- + test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck + no-test-bundler-precheck: + yes-test-bundler-precheck: main $(arch)-fake.rb +diff --git a/defs/gmake.mk b/defs/gmake.mk +index 54fef6685f..0aa403a4eb 100644 +--- a/defs/gmake.mk ++++ b/defs/gmake.mk +@@ -84,7 +84,7 @@ endif + ORDERED_TEST_TARGETS := $(filter $(TEST_TARGETS), \ + btest-ruby test-knownbug test-basic \ + test-testframework test-tool test-ruby test-all \ +- test-spec test-syntax-suggest-prepare test-syntax-suggest \ ++ test-spec test-syntax-suggest \ + test-bundler-prepare test-bundler test-bundler-parallel \ + test-bundled-gems-precheck test-bundled-gems-fetch \ + test-bundled-gems-prepare test-bundled-gems-run \ diff --git a/ruby-3.2.0-Revert-Test-syntax_suggest-by-make-check.patch b/ruby-3.2.0-Revert-Test-syntax_suggest-by-make-check.patch new file mode 100644 index 0000000000000000000000000000000000000000..3efb21fdf8fef784d9cff7dada61d438097c8d5c --- /dev/null +++ b/ruby-3.2.0-Revert-Test-syntax_suggest-by-make-check.patch @@ -0,0 +1,67 @@ +From cf60e383a9c98da5cd75012f2aabfa4a2774aade Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Mon, 2 Jan 2023 14:16:39 +0100 +Subject: [PATCH] Revert "Test syntax_suggest by `make check`" + +This reverts commit cae53842735237ccf71a13873fd0d1ae7f165582. +--- + common.mk | 6 ++---- + defs/gmake.mk | 6 ++---- + 2 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/common.mk b/common.mk +index 27f6a9d89d..8021f03a58 100644 +--- a/common.mk ++++ b/common.mk +@@ -767,8 +767,7 @@ clean-spec: PHONY + -$(Q) $(RMDIRS) $(RUBYSPEC_CAPIEXT) 2> $(NULL) || $(NULLCMD) + -$(Q) $(RMALL) rubyspec_temp + +-check: main $(DOT_WAIT) test $(DOT_WAIT) test-tool $(DOT_WAIT) test-all \ +- $(DOT_WAIT) test-spec $(DOT_WAIT) test-syntax-suggest ++check: main $(DOT_WAIT) test $(DOT_WAIT) test-tool $(DOT_WAIT) test-all $(DOT_WAIT) test-spec + $(ECHO) check succeeded + -$(Q) : : "run only on sh"; \ + if [ x"$(GIT)" != x ] && $(CHDIR) "$(srcdir)" && \ +@@ -1464,9 +1463,8 @@ yes-test-syntax-suggest-prepare: yes-test-syntax-suggest-precheck + + RSPECOPTS = + SYNTAX_SUGGEST_SPECS = +-PREPARE_SYNTAX_SUGGEST = yes-test-syntax-suggest-prepare + test-syntax-suggest: $(TEST_RUNNABLE)-test-syntax-suggest +-yes-test-syntax-suggest: $(PREPARE_SYNTAX_SUGGEST) ++yes-test-syntax-suggest: yes-test-syntax-suggest-prepare + $(XRUBY) -C $(srcdir) -Ispec/syntax_suggest .bundle/bin/rspec \ + --require spec_helper $(RSPECOPTS) spec/syntax_suggest/$(SYNTAX_SUGGEST_SPECS) + no-test-syntax-suggest: +diff --git a/defs/gmake.mk b/defs/gmake.mk +index 0aa403a4eb..dc9d31f49e 100644 +--- a/defs/gmake.mk ++++ b/defs/gmake.mk +@@ -27,7 +27,7 @@ TEST_DEPENDS := $(filter-out commit $(TEST_TARGETS),$(MAKECMDGOALS)) + TEST_TARGETS := $(patsubst great,exam,$(TEST_TARGETS)) + TEST_DEPENDS := $(filter-out great $(TEST_TARGETS),$(TEST_DEPENDS)) + TEST_TARGETS := $(patsubst exam,check,$(TEST_TARGETS)) +-TEST_TARGETS := $(patsubst check,test-syntax-suggest test-spec test-all test-tool test-short,$(TEST_TARGETS)) ++TEST_TARGETS := $(patsubst check,test-spec test-all test-tool test-short,$(TEST_TARGETS)) + TEST_TARGETS := $(patsubst test-rubyspec,test-spec,$(TEST_TARGETS)) + TEST_DEPENDS := $(filter-out exam check test-spec $(TEST_TARGETS),$(TEST_DEPENDS)) + TEST_TARGETS := $(patsubst love,check,$(TEST_TARGETS)) +@@ -40,7 +40,6 @@ TEST_TARGETS := $(patsubst test-short,btest-ruby test-knownbug test-basic,$(TEST + TEST_TARGETS := $(patsubst test-bundled-gems,test-bundled-gems-run,$(TEST_TARGETS)) + TEST_TARGETS := $(patsubst test-bundled-gems-run,test-bundled-gems-run $(PREPARE_BUNDLED_GEMS),$(TEST_TARGETS)) + TEST_TARGETS := $(patsubst test-bundled-gems-prepare,test-bundled-gems-prepare $(PRECHECK_BUNDLED_GEMS) test-bundled-gems-fetch,$(TEST_TARGETS)) +-TEST_TARGETS := $(patsubst test-syntax-suggest,test-syntax-suggest $(PREPARE_SYNTAX_SUGGEST),$(TEST_TARGETS)) + TEST_DEPENDS := $(filter-out test-short $(TEST_TARGETS),$(TEST_DEPENDS)) + TEST_DEPENDS += $(if $(filter great exam love check,$(MAKECMDGOALS)),all exts) + endif +@@ -84,8 +83,7 @@ endif + ORDERED_TEST_TARGETS := $(filter $(TEST_TARGETS), \ + btest-ruby test-knownbug test-basic \ + test-testframework test-tool test-ruby test-all \ +- test-spec test-syntax-suggest \ +- test-bundler-prepare test-bundler test-bundler-parallel \ ++ test-spec test-bundler-prepare test-bundler test-bundler-parallel \ + test-bundled-gems-precheck test-bundled-gems-fetch \ + test-bundled-gems-prepare test-bundled-gems-run \ + ) diff --git a/ruby-3.2.0-Use-SHA256-instead-of-SHA1.patch b/ruby-3.2.0-Use-SHA256-instead-of-SHA1.patch new file mode 100644 index 0000000000000000000000000000000000000000..1b3395b00e4c786f2c66876feafa444cc27517f4 --- /dev/null +++ b/ruby-3.2.0-Use-SHA256-instead-of-SHA1.patch @@ -0,0 +1,39 @@ +From 9b9825d6cdda053fea49eb2f613bc62bde465e89 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Wed, 4 Jan 2023 17:23:35 +0100 +Subject: [PATCH] Use SHA256 instead of SHA1 + +Systems such as CentOS 9 / RHEL 9 are moving away from SHA1 disabling it +by default via a system-wide crypto policy. This replaces SHA1 with +SHA256 in similar way as [[1]]. + +[1]: https://github.com/ruby/openssl/pull/554 +--- + spec/ruby/library/openssl/x509/name/verify_spec.rb | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/spec/ruby/library/openssl/x509/name/verify_spec.rb b/spec/ruby/library/openssl/x509/name/verify_spec.rb +index a8bf865bd..6dcfc9946 100644 +--- a/spec/ruby/library/openssl/x509/name/verify_spec.rb ++++ b/spec/ruby/library/openssl/x509/name/verify_spec.rb +@@ -12,7 +12,7 @@ describe "OpenSSL::X509::Name.verify" do + cert.public_key = key.public_key + cert.not_before = Time.now - 10 + cert.not_after = cert.not_before + 365 * 24 * 60 * 60 +- cert.sign key, OpenSSL::Digest.new('SHA1') ++ cert.sign key, OpenSSL::Digest.new('SHA256') + store = OpenSSL::X509::Store.new + store.add_cert(cert) + [store.verify(cert), store.error, store.error_string].should == [true, 0, "ok"] +@@ -28,7 +28,7 @@ describe "OpenSSL::X509::Name.verify" do + cert.public_key = key.public_key + cert.not_before = Time.now - 10 + cert.not_after = Time.now - 5 +- cert.sign key, OpenSSL::Digest.new('SHA1') ++ cert.sign key, OpenSSL::Digest.new('SHA256') + store = OpenSSL::X509::Store.new + store.add_cert(cert) + store.verify(cert).should == false +-- +2.38.1 + diff --git a/ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch b/ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch deleted file mode 100644 index 1a06227258313076a80d71c498074516aa433eec..0000000000000000000000000000000000000000 --- a/ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch +++ /dev/null @@ -1,502 +0,0 @@ -From 1b3502156a665e2782f366aa5ac8c3bfd7637ab8 Mon Sep 17 00:00:00 2001 -From: Mike Dalessio -Date: Mon, 23 May 2022 15:40:22 -0400 -Subject: [PATCH 1/2] Move compaction-related methods into gc.c - -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 -@@ -10164,8 +10164,20 @@ gc_update_references(rb_objspace_t *objspace) - gc_update_table_refs(objspace, finalizer_table); - } - -+/* -+ * 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. -+ */ - static VALUE --gc_compact_stats(rb_execution_context_t *ec, VALUE self) -+gc_compact_stats(VALUE self) - { - size_t i; - rb_objspace_t *objspace = &rb_objspace; -@@ -10238,22 +10250,70 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data) - return 0; - } - -+/* -+ * 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. -+ */ - static VALUE --gc_compact(rb_execution_context_t *ec, VALUE self) -+gc_compact(VALUE self) - { - /* Run GC with compaction enabled */ -- gc_start_internal(ec, self, Qtrue, Qtrue, Qtrue, Qtrue); -+ gc_start_internal(NULL, self, Qtrue, Qtrue, Qtrue, Qtrue); - -- return gc_compact_stats(ec, self); -+ return gc_compact_stats(self); - } - -+/* -+ * 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. -+ */ - static VALUE --gc_verify_compaction_references(rb_execution_context_t *ec, VALUE self, VALUE double_heap, VALUE toward_empty) -+gc_verify_compaction_references(int argc, VALUE *argv, VALUE self) - { - rb_objspace_t *objspace = &rb_objspace; -+ VALUE kwargs, double_heap = Qfalse, toward_empty = Qfalse; -+ static ID id_toward, id_double_heap, id_empty; -+ -+ if (!id_toward) { -+ id_toward = rb_intern("toward"); -+ id_double_heap = rb_intern("double_heap"); -+ id_empty = rb_intern("empty"); -+ } -+ -+ rb_scan_args(argc, argv, ":", &kwargs); -+ if (!NIL_P(kwargs)) { -+ if (rb_hash_has_key(kwargs, ID2SYM(id_toward))) { -+ VALUE toward = rb_hash_aref(kwargs, ID2SYM(id_toward)); -+ toward_empty = (toward == ID2SYM(id_empty)) ? Qtrue : Qfalse; -+ } -+ if (rb_hash_has_key(kwargs, ID2SYM(id_double_heap))) { -+ double_heap = rb_hash_aref(kwargs, ID2SYM(id_double_heap)); -+ } -+ } - - /* Clear the heap. */ -- gc_start_internal(ec, self, Qtrue, Qtrue, Qtrue, Qfalse); -+ gc_start_internal(NULL, self, Qtrue, Qtrue, Qtrue, Qfalse); - - RB_VM_LOCK_ENTER(); - { -@@ -10273,12 +10333,12 @@ gc_verify_compaction_references(rb_execution_context_t *ec, VALUE self, VALUE do - } - RB_VM_LOCK_LEAVE(); - -- gc_start_internal(ec, self, Qtrue, Qtrue, Qtrue, Qtrue); -+ gc_start_internal(NULL, self, Qtrue, Qtrue, Qtrue, Qtrue); - - objspace_reachable_objects_from_root(objspace, root_obj_check_moved_i, NULL); - objspace_each_objects(objspace, heap_check_moved_i, NULL, TRUE); - -- return gc_compact_stats(ec, self); -+ return gc_compact_stats(self); - } - - VALUE -@@ -10739,8 +10799,18 @@ gc_disable(rb_execution_context_t *ec, VALUE _) - return rb_gc_disable(); - } - -+/* -+ * 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. -+ */ - static VALUE --gc_set_auto_compact(rb_execution_context_t *ec, VALUE _, VALUE v) -+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. */ -@@ -10754,8 +10824,14 @@ gc_set_auto_compact(rb_execution_context_t *ec, VALUE _, VALUE v) - return v; - } - -+/* -+ * call-seq: -+ * GC.auto_compact -> true or false -+ * -+ * Returns whether or not automatic compaction has been enabled. -+ */ - static VALUE --gc_get_auto_compact(rb_execution_context_t *ec, VALUE _) -+gc_get_auto_compact(VALUE _) - { - return RBOOL(ruby_enable_autocompact); - } -@@ -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 -+ rb_define_singleton_method(rb_mGC, "compact", gc_compact, 0); -+ rb_define_singleton_method(rb_mGC, "auto_compact", gc_get_auto_compact, 0); -+ rb_define_singleton_method(rb_mGC, "auto_compact=", gc_set_auto_compact, 1); -+ rb_define_singleton_method(rb_mGC, "latest_compact_info", gc_compact_stats, 0); -+ rb_define_singleton_method(rb_mGC, "verify_compaction_references", gc_verify_compaction_references, -1); - - #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 -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 -+++ b/test/ruby/test_gc_compact.rb -@@ -9,14 +9,7 @@ - end - - class TestGCCompact < Test::Unit::TestCase -- module SupportsCompact -- def setup -- skip "autocompact not supported on this platform" unless supports_auto_compact? -- super -- end -- -- private -- -+ module CompactionSupportInspector - def supports_auto_compact? - return true unless defined?(Etc::SC_PAGE_SIZE) - -@@ -30,10 +23,19 @@ def supports_auto_compact? - end - end - -- include SupportsCompact -+ module OmitUnlessCompactSupported -+ include CompactionSupportInspector -+ -+ def setup -+ omit "autocompact not supported on this platform" unless supports_auto_compact? -+ super -+ end -+ end -+ -+ include OmitUnlessCompactSupported - - class AutoCompact < Test::Unit::TestCase -- include SupportsCompact -+ include OmitUnlessCompactSupported - - def test_enable_autocompact - before = GC.auto_compact -@@ -87,13 +89,39 @@ def test_implicit_compaction_does_something - end - end - -- def os_page_size -- return true unless defined?(Etc::SC_PAGE_SIZE) -+ class CompactMethodsNotImplemented < Test::Unit::TestCase -+ include CompactionSupportInspector -+ -+ def assert_not_implemented(method, *args) -+ omit "autocompact is supported on this platform" if supports_auto_compact? -+ -+ assert_raise(NotImplementedError) { GC.send(method, *args) } -+ refute(GC.respond_to?(method), "GC.#{method} should be defined as rb_f_notimplement") -+ end -+ -+ def test_gc_compact_not_implemented -+ assert_not_implemented(:compact) -+ end -+ -+ def test_gc_auto_compact_get_not_implemented -+ assert_not_implemented(:auto_compact) -+ end -+ -+ def test_gc_auto_compact_set_not_implemented -+ assert_not_implemented(:auto_compact=, true) -+ end -+ -+ def test_gc_latest_compact_info_not_implemented -+ assert_not_implemented(:latest_compact_info) -+ end -+ -+ def test_gc_verify_compaction_references_not_implemented -+ assert_not_implemented(:verify_compaction_references) -+ end - end - -- def setup -- skip "autocompact not supported on this platform" unless supports_auto_compact? -- super -+ def os_page_size -+ return true unless defined?(Etc::SC_PAGE_SIZE) - end - - def test_gc_compact_stats diff --git a/ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch b/ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch deleted file mode 100644 index 654c54c8d7a002b2a9893887fbda7d5635acb13c..0000000000000000000000000000000000000000 --- a/ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch +++ /dev/null @@ -1,502 +0,0 @@ ---- 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 */ - --static VALUE builtin_inline_class_277(struct rb_execution_context_struct *ec, const VALUE self) -+static VALUE builtin_inline_class_209(struct rb_execution_context_struct *ec, const VALUE self) - { - MAYBE_UNUSED(const VALUE) flag = rb_vm_lvar(ec, -3); --#line 277 "gc.rb" -+#line 209 "gc.rb" - - rb_objspace.flags.measure_gc = RTEST(flag) ? TRUE : FALSE; - return flag; - #line 20 "gc.rbinc" - } - --static VALUE builtin_inline_class_289(struct rb_execution_context_struct *ec, const VALUE self) -+static VALUE builtin_inline_class_221(struct rb_execution_context_struct *ec, const VALUE self) - { --#line 289 "gc.rb" -+#line 221 "gc.rb" - return - RBOOL(rb_objspace.flags.measure_gc); - #line 28 "gc.rbinc" - } - --static VALUE builtin_inline_class_299(struct rb_execution_context_struct *ec, const VALUE self) -+static VALUE builtin_inline_class_231(struct rb_execution_context_struct *ec, const VALUE self) - { --#line 299 "gc.rb" -+#line 231 "gc.rb" - return - ULL2NUM(rb_objspace.profile.total_time_ns); - #line 36 "gc.rbinc" -@@ -52,31 +52,6 @@ - } - - static void --mjit_compile_invokebuiltin_for_gc_get_auto_compact(FILE *f, long index, unsigned stack_size, bool inlinable_p) --{ -- fprintf(f, " VALUE self = GET_SELF();\n"); -- fprintf(f, " typedef VALUE (*func)(rb_execution_context_t *, VALUE);\n"); -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == gc_get_auto_compact */\n", (VALUE)gc_get_auto_compact); -- fprintf(f, " val = f(ec, self);\n"); --} -- --static void --mjit_compile_invokebuiltin_for_gc_set_auto_compact(FILE *f, long index, unsigned stack_size, bool inlinable_p) --{ -- fprintf(f, " VALUE self = GET_SELF();\n"); -- fprintf(f, " typedef VALUE (*func)(rb_execution_context_t *, VALUE, VALUE);\n"); -- if (index == -1) { -- fprintf(f, " const VALUE *argv = &stack[%d];\n", stack_size - 1); -- } -- else { -- fprintf(f, " const unsigned int lnum = GET_ISEQ()->body->local_table_size;\n"); -- fprintf(f, " const VALUE *argv = GET_EP() - lnum - VM_ENV_DATA_SIZE + 1 + %ld;\n", index); -- } -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == gc_set_auto_compact */\n", (VALUE)gc_set_auto_compact); -- fprintf(f, " val = f(ec, self, argv[0]);\n"); --} -- --static void - mjit_compile_invokebuiltin_for_gc_enable(FILE *f, long index, unsigned stack_size, bool inlinable_p) - { - fprintf(f, " VALUE self = GET_SELF();\n"); -@@ -161,40 +136,6 @@ - } - - static void --mjit_compile_invokebuiltin_for_gc_compact_stats(FILE *f, long index, unsigned stack_size, bool inlinable_p) --{ -- fprintf(f, " VALUE self = GET_SELF();\n"); -- fprintf(f, " typedef VALUE (*func)(rb_execution_context_t *, VALUE);\n"); -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == gc_compact_stats */\n", (VALUE)gc_compact_stats); -- fprintf(f, " val = f(ec, self);\n"); --} -- --static void --mjit_compile_invokebuiltin_for_gc_compact(FILE *f, long index, unsigned stack_size, bool inlinable_p) --{ -- fprintf(f, " VALUE self = GET_SELF();\n"); -- fprintf(f, " typedef VALUE (*func)(rb_execution_context_t *, VALUE);\n"); -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == gc_compact */\n", (VALUE)gc_compact); -- fprintf(f, " val = f(ec, self);\n"); --} -- --static void --mjit_compile_invokebuiltin_for_gc_verify_compaction_references(FILE *f, long index, unsigned stack_size, bool inlinable_p) --{ -- fprintf(f, " VALUE self = GET_SELF();\n"); -- fprintf(f, " typedef VALUE (*func)(rb_execution_context_t *, VALUE, VALUE, VALUE);\n"); -- if (index == -1) { -- fprintf(f, " const VALUE *argv = &stack[%d];\n", stack_size - 2); -- } -- else { -- fprintf(f, " const unsigned int lnum = GET_ISEQ()->body->local_table_size;\n"); -- fprintf(f, " const VALUE *argv = GET_EP() - lnum - VM_ENV_DATA_SIZE + 1 + %ld;\n", index); -- } -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == gc_verify_compaction_references */\n", (VALUE)gc_verify_compaction_references); -- fprintf(f, " val = f(ec, self, argv[0], argv[1]);\n"); --} -- --static void - mjit_compile_invokebuiltin_for__bi0(FILE *f, long index, unsigned stack_size, bool inlinable_p) - { - fprintf(f, " VALUE self = GET_SELF();\n"); -@@ -202,7 +143,7 @@ - if (inlinable_p) { - fprintf(f, "%s", " {\n"); - fprintf(f, "%s", " MAYBE_UNUSED(const VALUE) flag = rb_vm_lvar(ec, -3);\n"); -- fprintf(f, "%s", "#line 277 \"gc.rb\"\n"); -+ fprintf(f, "%s", "#line 209 \"gc.rb\"\n"); - fprintf(f, "%s", " \n"); - fprintf(f, "%s", " rb_objspace.flags.measure_gc = RTEST(flag) ? TRUE : FALSE;\n"); - fprintf(f, "%s", " return flag;\n"); -@@ -211,7 +152,7 @@ - fprintf(f, "%s", " \n"); - return; - } -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == builtin_inline_class_277 */\n", (VALUE)builtin_inline_class_277); -+ fprintf(f, " func f = (func)%"PRIuVALUE"; /* == builtin_inline_class_209 */\n", (VALUE)builtin_inline_class_209); - fprintf(f, " val = f(ec, self);\n"); - } - -@@ -222,7 +163,7 @@ - fprintf(f, " typedef VALUE (*func)(rb_execution_context_t *, VALUE);\n"); - if (inlinable_p) { - fprintf(f, "%s", " {\n"); -- fprintf(f, "%s", "#line 289 \"gc.rb\"\n"); -+ fprintf(f, "%s", "#line 221 \"gc.rb\"\n"); - fprintf(f, "%s", " return \n"); - fprintf(f, "%s", " RBOOL(rb_objspace.flags.measure_gc);\n"); - fprintf(f, "%s", "#line 52 \"gc.rbinc\"\n"); -@@ -230,7 +171,7 @@ - fprintf(f, "%s", " \n"); - return; - } -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == builtin_inline_class_289 */\n", (VALUE)builtin_inline_class_289); -+ fprintf(f, " func f = (func)%"PRIuVALUE"; /* == builtin_inline_class_221 */\n", (VALUE)builtin_inline_class_221); - fprintf(f, " val = f(ec, self);\n"); - } - -@@ -241,7 +182,7 @@ - fprintf(f, " typedef VALUE (*func)(rb_execution_context_t *, VALUE);\n"); - if (inlinable_p) { - fprintf(f, "%s", " {\n"); -- fprintf(f, "%s", "#line 299 \"gc.rb\"\n"); -+ fprintf(f, "%s", "#line 231 \"gc.rb\"\n"); - fprintf(f, "%s", " return \n"); - fprintf(f, "%s", " ULL2NUM(rb_objspace.profile.total_time_ns);\n"); - fprintf(f, "%s", "#line 59 \"gc.rbinc\"\n"); -@@ -249,7 +190,7 @@ - fprintf(f, "%s", " \n"); - return; - } -- fprintf(f, " func f = (func)%"PRIuVALUE"; /* == builtin_inline_class_299 */\n", (VALUE)builtin_inline_class_299); -+ fprintf(f, " func f = (func)%"PRIuVALUE"; /* == builtin_inline_class_231 */\n", (VALUE)builtin_inline_class_231); - fprintf(f, " val = f(ec, self);\n"); - } - -@@ -258,21 +199,16 @@ - // table definition - static const struct rb_builtin_function gc_table[] = { - RB_BUILTIN_FUNCTION(0, gc_start_internal, gc_start_internal, 4, mjit_compile_invokebuiltin_for_gc_start_internal), -- RB_BUILTIN_FUNCTION(1, gc_get_auto_compact, gc_get_auto_compact, 0, mjit_compile_invokebuiltin_for_gc_get_auto_compact), -- RB_BUILTIN_FUNCTION(2, gc_set_auto_compact, gc_set_auto_compact, 1, mjit_compile_invokebuiltin_for_gc_set_auto_compact), -- RB_BUILTIN_FUNCTION(3, gc_enable, gc_enable, 0, mjit_compile_invokebuiltin_for_gc_enable), -- RB_BUILTIN_FUNCTION(4, gc_disable, gc_disable, 0, mjit_compile_invokebuiltin_for_gc_disable), -- RB_BUILTIN_FUNCTION(5, gc_stress_get, gc_stress_get, 0, mjit_compile_invokebuiltin_for_gc_stress_get), -- RB_BUILTIN_FUNCTION(6, gc_stress_set_m, gc_stress_set_m, 1, mjit_compile_invokebuiltin_for_gc_stress_set_m), -- RB_BUILTIN_FUNCTION(7, gc_count, gc_count, 0, mjit_compile_invokebuiltin_for_gc_count), -- RB_BUILTIN_FUNCTION(8, gc_stat, gc_stat, 1, mjit_compile_invokebuiltin_for_gc_stat), -- RB_BUILTIN_FUNCTION(9, gc_latest_gc_info, gc_latest_gc_info, 1, mjit_compile_invokebuiltin_for_gc_latest_gc_info), -- RB_BUILTIN_FUNCTION(10, gc_compact_stats, gc_compact_stats, 0, mjit_compile_invokebuiltin_for_gc_compact_stats), -- RB_BUILTIN_FUNCTION(11, gc_compact, gc_compact, 0, mjit_compile_invokebuiltin_for_gc_compact), -- RB_BUILTIN_FUNCTION(12, gc_verify_compaction_references, gc_verify_compaction_references, 2, mjit_compile_invokebuiltin_for_gc_verify_compaction_references), -- RB_BUILTIN_FUNCTION(13, _bi0, builtin_inline_class_277, 0, mjit_compile_invokebuiltin_for__bi0), -- RB_BUILTIN_FUNCTION(14, _bi1, builtin_inline_class_289, 0, mjit_compile_invokebuiltin_for__bi1), -- RB_BUILTIN_FUNCTION(15, _bi2, builtin_inline_class_299, 0, mjit_compile_invokebuiltin_for__bi2), -+ RB_BUILTIN_FUNCTION(1, gc_enable, gc_enable, 0, mjit_compile_invokebuiltin_for_gc_enable), -+ RB_BUILTIN_FUNCTION(2, gc_disable, gc_disable, 0, mjit_compile_invokebuiltin_for_gc_disable), -+ RB_BUILTIN_FUNCTION(3, gc_stress_get, gc_stress_get, 0, mjit_compile_invokebuiltin_for_gc_stress_get), -+ RB_BUILTIN_FUNCTION(4, gc_stress_set_m, gc_stress_set_m, 1, mjit_compile_invokebuiltin_for_gc_stress_set_m), -+ RB_BUILTIN_FUNCTION(5, gc_count, gc_count, 0, mjit_compile_invokebuiltin_for_gc_count), -+ RB_BUILTIN_FUNCTION(6, gc_stat, gc_stat, 1, mjit_compile_invokebuiltin_for_gc_stat), -+ RB_BUILTIN_FUNCTION(7, gc_latest_gc_info, gc_latest_gc_info, 1, mjit_compile_invokebuiltin_for_gc_latest_gc_info), -+ RB_BUILTIN_FUNCTION(8, _bi0, builtin_inline_class_209, 0, mjit_compile_invokebuiltin_for__bi0), -+ RB_BUILTIN_FUNCTION(9, _bi1, builtin_inline_class_221, 0, mjit_compile_invokebuiltin_for__bi1), -+ RB_BUILTIN_FUNCTION(10, _bi2, builtin_inline_class_231, 0, mjit_compile_invokebuiltin_for__bi2), - RB_BUILTIN_FUNCTION(-1, NULL, NULL, 0, 0), - }; - -@@ -282,8 +218,6 @@ - COMPILER_WARNING_ERROR(-Wincompatible-pointer-types) - #endif - if (0) rb_builtin_function_check_arity4(gc_start_internal); -- if (0) rb_builtin_function_check_arity0(gc_get_auto_compact); -- if (0) rb_builtin_function_check_arity1(gc_set_auto_compact); - if (0) rb_builtin_function_check_arity0(gc_enable); - if (0) rb_builtin_function_check_arity0(gc_disable); - if (0) rb_builtin_function_check_arity0(gc_stress_get); -@@ -291,12 +225,9 @@ - if (0) rb_builtin_function_check_arity0(gc_count); - if (0) rb_builtin_function_check_arity1(gc_stat); - if (0) rb_builtin_function_check_arity1(gc_latest_gc_info); -- if (0) rb_builtin_function_check_arity0(gc_compact_stats); -- if (0) rb_builtin_function_check_arity0(gc_compact); -- if (0) rb_builtin_function_check_arity2(gc_verify_compaction_references); -- if (0) rb_builtin_function_check_arity0(builtin_inline_class_277); -- if (0) rb_builtin_function_check_arity0(builtin_inline_class_289); -- if (0) rb_builtin_function_check_arity0(builtin_inline_class_299); -+ if (0) rb_builtin_function_check_arity0(builtin_inline_class_209); -+ if (0) rb_builtin_function_check_arity0(builtin_inline_class_221); -+ if (0) rb_builtin_function_check_arity0(builtin_inline_class_231); - COMPILER_WARNING_POP - - // load ---- 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[] = ""; - static const struct { -- char L0[479]; /* 1..58 */ -- char L58[508]; /* 59..204 */ -- char L204[504]; /* 205..275 */ -- char L275[490]; /* 276..306 */ -- char L306[128]; /* 307..312 */ -+ char L0[492]; /* 1..70 */ -+ char L70[468]; /* 71..197 */ -+ char L197[470]; /* 198..237 */ -+ char L237[211]; /* 238..244 */ - } prelude_code2 = { - #line 1 "gc.rb" - ""/* for gc.c */ -@@ -593,29 +592,6 @@ - " end\n" - "\n" - "\n"/* call-seq: */ --"\n"/* GC.auto_compact -> true or false */ --"\n"/* */ --"\n"/* Returns whether or not automatic compaction has been enabled. */ --"\n"/* */ --" def self.auto_compact\n" --" Primitive.gc_get_auto_compact\n" --" end\n" --"\n" --"\n"/* call-seq: */ --"\n"/* GC.auto_compact = flag */ --"\n"/* */ --"\n"/* Updates automatic compaction mode. */ --"\n"/* */ --"\n"/* When enabled, the compactor will execute on every major collection. */ --"\n"/* */ --"\n"/* Enabling compaction will degrade performance on major collections. */ --" def self.auto_compact=(flag)\n" --, --#line 59 "gc.rb" --" Primitive.gc_set_auto_compact(flag)\n" --" end\n" --"\n" --"\n"/* call-seq: */ - "\n"/* GC.enable -> true or false */ - "\n"/* */ - "\n"/* Enables garbage collection, returning +true+ if garbage */ -@@ -645,6 +621,8 @@ - "\n"/* GC.stress -> integer, true or false */ - "\n"/* */ - "\n"/* Returns current status of GC stress mode. */ -+, -+#line 71 "gc.rb" - " def self.stress\n" - " Primitive.gc_stress_get\n" - " end\n" -@@ -758,8 +736,6 @@ - "\n"/* GC.latest_gc_info(:major_by) -> :malloc */ - "\n"/* */ - "\n"/* Returns information about the most recent garbage collection. */ --, --#line 205 "gc.rb" - "\n"/* */ - "\n"/* If the optional argument, hash, is given, */ - "\n"/* it is overwritten and returned. */ -@@ -768,59 +744,14 @@ - " Primitive.gc_latest_gc_info hash_or_key\n" - " end\n" - "\n" --"\n"/* call-seq: */ --"\n"/* GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}} */ --"\n"/* */ --"\n"/* Returns information about object moved in the most recent GC compaction. */ --"\n"/* */ --"\n"/* The returned hash has two keys :considered and :moved. The hash for */ --"\n"/* :considered lists the number of objects that were considered for movement */ --"\n"/* by the compactor, and the :moved hash lists the number of objects that */ --"\n"/* were actually moved. Some objects can't be moved (maybe they were pinned) */ --"\n"/* so these numbers can be used to calculate compaction efficiency. */ --" def self.latest_compact_info\n" --" Primitive.gc_compact_stats\n" --" end\n" --"\n" --"\n"/* call-seq: */ --"\n"/* GC.compact */ --"\n"/* */ --"\n"/* This function compacts objects together in Ruby's heap. It eliminates */ --"\n"/* unused space (or fragmentation) in the heap by moving objects in to that */ --"\n"/* unused space. This function returns a hash which contains statistics about */ --"\n"/* which objects were moved. See `GC.latest_gc_info` for details about */ --"\n"/* compaction statistics. */ --"\n"/* */ --"\n"/* This method is implementation specific and not expected to be implemented */ --"\n"/* in any implementation besides MRI. */ --" def self.compact\n" --" Primitive.gc_compact\n" --" end\n" --"\n" --"\n"/* call-seq: */ --"\n"/* GC.verify_compaction_references(toward: nil, double_heap: false) -> hash */ --"\n"/* */ --"\n"/* Verify compaction reference consistency. */ --"\n"/* */ --"\n"/* This method is implementation specific. During compaction, objects that */ --"\n"/* were moved are replaced with T_MOVED objects. No object should have a */ --"\n"/* reference to a T_MOVED object after compaction. */ --"\n"/* */ --"\n"/* This function doubles the heap to ensure room to move all objects, */ --"\n"/* compacts the heap to make sure everything moves, updates all references, */ --"\n"/* then performs a full GC. If any object contains a reference to a T_MOVED */ --"\n"/* object, that object should be pushed on the mark stack, and will */ --"\n"/* make a SEGV. */ --" def self.verify_compaction_references(toward: nil, double_heap: false)\n" --" Primitive.gc_verify_compaction_references(double_heap, toward == :empty)\n" --" end\n" --"\n" - "\n"/* call-seq: */ - "\n"/* GC.using_rvargc? -> true or false */ - "\n"/* */ - "\n"/* Returns true if using experimental feature Variable Width Allocation, false */ - "\n"/* otherwise. */ - " def self.using_rvargc?\n"/* :nodoc: */ -+, -+#line 198 "gc.rb" - " GC::INTERNAL_CONSTANTS[:SIZE_POOL_COUNT] > 1\n" - " end\n" - "\n" -@@ -831,8 +762,6 @@ - "\n"/* Enable to measure GC time. */ - "\n"/* You can get the result with GC.stat(:time). */ - "\n"/* Note that GC time measurement can cause some performance overhead. */ --, --#line 276 "gc.rb" - " def self.measure_total_time=(flag)\n" - " Primitive.cstmt! %{\n" - " rb_objspace.flags.measure_gc = RTEST(flag) ? TRUE : FALSE;\n" -@@ -863,15 +792,15 @@ - "end\n" - "\n" - "module ObjectSpace\n" --" def garbage_collect full_mark: true, immediate_mark: true, immediate_sweep: true\n" - , --#line 307 "gc.rb" -+#line 238 "gc.rb" -+" def garbage_collect full_mark: true, immediate_mark: true, immediate_sweep: true\n" - " Primitive.gc_start_internal full_mark, immediate_mark, immediate_sweep, false\n" - " end\n" - "\n" - " module_function :garbage_collect\n" - "end\n" --#line 875 "miniprelude.c" -+#line 804 "miniprelude.c" - }; - - static const char prelude_name3[] = ""; -@@ -1223,7 +1152,7 @@ - " end\n" - "\n" - "end\n" --#line 1227 "miniprelude.c" -+#line 1156 "miniprelude.c" - }; - - static const char prelude_name4[] = ""; -@@ -1354,7 +1283,7 @@ - " Primitive.io_write_nonblock(buf, exception)\n" - " end\n" - "end\n" --#line 1358 "miniprelude.c" -+#line 1287 "miniprelude.c" - }; - - static const char prelude_name5[] = ""; -@@ -1402,7 +1331,7 @@ - " alias restore load\n" - " end\n" - "end\n" --#line 1406 "miniprelude.c" -+#line 1335 "miniprelude.c" - }; - - static const char prelude_name6[] = ""; -@@ -1724,7 +1653,7 @@ - " Primitive.pack_unpack1(fmt, offset)\n" - " end\n" - "end\n" --#line 1728 "miniprelude.c" -+#line 1657 "miniprelude.c" - }; - - static const char prelude_name7[] = ""; -@@ -2111,7 +2040,7 @@ - " Primitive.tracepoint_attr_instruction_sequence\n" - " end\n" - "end\n" --#line 2115 "miniprelude.c" -+#line 2044 "miniprelude.c" - }; - - static const char prelude_name8[] = ""; -@@ -2172,7 +2101,7 @@ - " Primitive.rb_warn_m(msgs, uplevel, category)\n" - " end\n" - "end\n" --#line 2176 "miniprelude.c" -+#line 2105 "miniprelude.c" - }; - - static const char prelude_name9[] = ""; -@@ -2249,7 +2178,7 @@ - " end\n" - " end\n" - "end\n" --#line 2253 "miniprelude.c" -+#line 2182 "miniprelude.c" - }; - - static const char prelude_name10[] = ""; -@@ -2438,7 +2367,7 @@ - " end\n" - " end\n" - "end\n" --#line 2442 "miniprelude.c" -+#line 2371 "miniprelude.c" - }; - - static const char prelude_name11[] = ""; -@@ -3309,7 +3238,7 @@ - " }\n" - " end\n" - "end\n" --#line 3313 "miniprelude.c" -+#line 3242 "miniprelude.c" - }; - - static const char prelude_name12[] = ""; -@@ -3632,7 +3561,7 @@ - " Primitive.time_init_args(year, mon, mday, hour, min, sec, zone)\n" - " end\n" - "end\n" --#line 3636 "miniprelude.c" -+#line 3565 "miniprelude.c" - }; - - static const char prelude_name13[] = ""; -@@ -3665,7 +3594,7 @@ - " return 0.0\n" - " end\n" - "end\n" --#line 3669 "miniprelude.c" -+#line 3598 "miniprelude.c" - }; - - static const char prelude_name14[] = ""; -@@ -3695,7 +3624,7 @@ - "\n" - " private :pp\n" - "end\n" --#line 3699 "miniprelude.c" -+#line 3628 "miniprelude.c" - }; - - static const char prelude_name15[] = ""; -@@ -3722,7 +3651,7 @@ - "rescue LoadError\n" - " warn \"`did_you_mean' was not loaded.\"\n" - "end if defined?(DidYouMean)\n" --#line 3726 "miniprelude.c" -+#line 3655 "miniprelude.c" - }; - - static const char prelude_name16[] = ""; -@@ -4063,7 +3992,7 @@ - " end\n" - " end\n" - "end\n" --#line 4067 "miniprelude.c" -+#line 3996 "miniprelude.c" - }; - - COMPILER_WARNING_POP diff --git a/ruby-3.1.4-CVE-2023-36617.patch b/ruby-3.2.2-CVE-2023-36617.patch similarity index 53% rename from ruby-3.1.4-CVE-2023-36617.patch rename to ruby-3.2.2-CVE-2023-36617.patch index 94aeb9ef8d80515e3a4899e87b0b6cafeb21c246..d4c98673b2d2d2bf1649c04d9f297eb650551d44 100644 --- a/ruby-3.1.4-CVE-2023-36617.patch +++ b/ruby-3.2.2-CVE-2023-36617.patch @@ -1,26 +1,7 @@ -From 5fbc1d45f17e4bff7cc61a78a7d788aa32ff390a Mon Sep 17 00:00:00 2001 -From: Hiroshi SHIBATA -Date: Thu, 29 Jun 2023 22:24:35 +0900 -Subject: [PATCH] CVE-2023-36617 for Ruby 3.1 (#7996) - -* Bump up v0.12.2 - -* Merge URI-0.10.3 for Bundler ---- - .../vendor/uri/lib/uri/rfc2396_parser.rb | 4 ++-- - .../vendor/uri/lib/uri/rfc3986_parser.rb | 2 +- - lib/bundler/vendor/uri/lib/uri/version.rb | 2 +- - lib/uri/rfc2396_parser.rb | 4 ++-- - lib/uri/rfc3986_parser.rb | 2 +- - lib/uri/version.rb | 2 +- - test/uri/test_parser.rb | 22 +++++++++++++++++++ - 7 files changed, 30 insertions(+), 8 deletions(-) - -diff --git a/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb b/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb -index e48e164f4c13e..09ed40754d5bf 100644 ---- a/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb -+++ b/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb -@@ -491,8 +491,8 @@ def initialize_regexp(pattern) +diff -Nurw ruby-3.2.2/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb ruby-3.2.2_new/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +--- ruby-3.2.2/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb 2023-10-19 13:24:52.881878633 +0800 +@@ -497,8 +497,8 @@ ret = {} # for Bundler::URI::split @@ -31,11 +12,10 @@ index e48e164f4c13e..09ed40754d5bf 100644 # for Bundler::URI::extract ret[:URI_REF] = Regexp.new(pattern[:URI_REF]) -diff --git a/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb b/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb -index cd4dd0c752663..870720e5b3e8d 100644 ---- a/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb -+++ b/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb -@@ -95,7 +95,7 @@ def default_regexp # :nodoc: +diff -Nurw ruby-3.2.2/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb ruby-3.2.2_new/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +--- ruby-3.2.2/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb 2023-10-19 13:25:44.257294942 +0800 +@@ -100,7 +100,7 @@ QUERY: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/, FRAGMENT: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/, OPAQUE: /\A(?:[^\/].*)?\z/, @@ -44,23 +24,21 @@ index cd4dd0c752663..870720e5b3e8d 100644 } end -diff --git a/lib/bundler/vendor/uri/lib/uri/version.rb b/lib/bundler/vendor/uri/lib/uri/version.rb -index 3895df0de5c53..d65b7e5b7574d 100644 ---- a/lib/bundler/vendor/uri/lib/uri/version.rb -+++ b/lib/bundler/vendor/uri/lib/uri/version.rb +diff -Nurw ruby-3.2.2/lib/bundler/vendor/uri/lib/uri/version.rb ruby-3.2.2_new/lib/bundler/vendor/uri/lib/uri/version.rb +--- ruby-3.2.2/lib/bundler/vendor/uri/lib/uri/version.rb 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/lib/bundler/vendor/uri/lib/uri/version.rb 2023-10-19 13:26:45.282601741 +0800 @@ -1,6 +1,6 @@ module Bundler::URI # :stopdoc: -- VERSION_CODE = '001002'.freeze -+ VERSION_CODE = '001003'.freeze +- VERSION_CODE = '001201'.freeze ++ VERSION_CODE = '001202'.freeze VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze # :startdoc: end -diff --git a/lib/uri/rfc2396_parser.rb b/lib/uri/rfc2396_parser.rb -index 76a8f99fd48cc..00c66cf042221 100644 ---- a/lib/uri/rfc2396_parser.rb -+++ b/lib/uri/rfc2396_parser.rb -@@ -497,8 +497,8 @@ def initialize_regexp(pattern) +diff -Nurw ruby-3.2.2/lib/uri/rfc2396_parser.rb ruby-3.2.2_new/lib/uri/rfc2396_parser.rb +--- ruby-3.2.2/lib/uri/rfc2396_parser.rb 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/lib/uri/rfc2396_parser.rb 2023-10-19 13:27:36.563019362 +0800 +@@ -497,8 +497,8 @@ ret = {} # for URI::split @@ -71,11 +49,10 @@ index 76a8f99fd48cc..00c66cf042221 100644 # for URI::extract ret[:URI_REF] = Regexp.new(pattern[:URI_REF]) -diff --git a/lib/uri/rfc3986_parser.rb b/lib/uri/rfc3986_parser.rb -index dd24a409ea174..9b1663dbb6efe 100644 ---- a/lib/uri/rfc3986_parser.rb -+++ b/lib/uri/rfc3986_parser.rb -@@ -100,7 +100,7 @@ def default_regexp # :nodoc: +diff -Nurw ruby-3.2.2/lib/uri/rfc3986_parser.rb ruby-3.2.2_new/lib/uri/rfc3986_parser.rb +--- ruby-3.2.2/lib/uri/rfc3986_parser.rb 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/lib/uri/rfc3986_parser.rb 2023-10-19 13:28:15.281580514 +0800 +@@ -100,7 +100,7 @@ QUERY: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/, FRAGMENT: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/, OPAQUE: /\A(?:[^\/].*)?\z/, @@ -84,10 +61,9 @@ index dd24a409ea174..9b1663dbb6efe 100644 } end -diff --git a/lib/uri/version.rb b/lib/uri/version.rb -index 7497a7d31a5df..f0aca586acab4 100644 ---- a/lib/uri/version.rb -+++ b/lib/uri/version.rb +diff -Nurw ruby-3.2.2/lib/uri/version.rb ruby-3.2.2_new/lib/uri/version.rb +--- ruby-3.2.2/lib/uri/version.rb 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/lib/uri/version.rb 2023-10-19 13:28:51.777167851 +0800 @@ -1,6 +1,6 @@ module URI # :stopdoc: @@ -96,11 +72,10 @@ index 7497a7d31a5df..f0aca586acab4 100644 VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze # :startdoc: end -diff --git a/test/uri/test_parser.rb b/test/uri/test_parser.rb -index 72fb5901d963f..cee0acb4b57c8 100644 ---- a/test/uri/test_parser.rb -+++ b/test/uri/test_parser.rb -@@ -79,4 +79,26 @@ def test_split +diff -Nurw ruby-3.2.2/test/uri/test_parser.rb ruby-3.2.2_new/test/uri/test_parser.rb +--- ruby-3.2.2/test/uri/test_parser.rb 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/test/uri/test_parser.rb 2023-10-19 13:30:04.786343541 +0800 +@@ -79,4 +79,26 @@ assert_equal([nil, nil, "example.com", nil, nil, "", nil, nil, nil], URI.split("//example.com")) assert_equal([nil, nil, "[0::0]", nil, nil, "", nil, nil, nil], URI.split("//[0::0]")) end diff --git a/ruby-3.2.2-change-json-version.patch b/ruby-3.2.2-change-json-version.patch new file mode 100644 index 0000000000000000000000000000000000000000..748ac6ea26a4b01fe765854817941d168adc80d3 --- /dev/null +++ b/ruby-3.2.2-change-json-version.patch @@ -0,0 +1,6 @@ +diff -Nurw ruby-3.2.2/ext/json/VERSION ruby-3.2.2_new/ext/json/VERSION +--- ruby-3.2.2/ext/json/VERSION 2023-03-30 19:06:29.000000000 +0800 ++++ ruby-3.2.2_new/ext/json/VERSION 2023-10-23 10:24:14.883052425 +0800 +@@ -1 +1 @@ +-2.6.3 ++2.6.1 diff --git a/ruby-3.1.4.tar.xz b/ruby-3.2.2.tar.xz similarity index 63% rename from ruby-3.1.4.tar.xz rename to ruby-3.2.2.tar.xz index dfcab374f47928d8a5f445710817c81ff4cad7ae..4adb7e55f1f98f4a3517ab8af59443c07e739325 100644 Binary files a/ruby-3.1.4.tar.xz and b/ruby-3.2.2.tar.xz differ diff --git a/ruby-bundler-2.4.0-bundle-update-bundler-test-in-ruby.patch b/ruby-bundler-2.4.0-bundle-update-bundler-test-in-ruby.patch deleted file mode 100644 index b2085373d891fc5e039548287fe49da301e02d54..0000000000000000000000000000000000000000 --- a/ruby-bundler-2.4.0-bundle-update-bundler-test-in-ruby.patch +++ /dev/null @@ -1,31 +0,0 @@ -From bfa2f72cfa3bfde34049d26dcb24976316074ad7 Mon Sep 17 00:00:00 2001 -From: Jun Aruga -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 . ---- - 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 diff --git a/ruby-irb-1.4.1-drop-rdoc-hard-dep.patch b/ruby-irb-1.4.1-drop-rdoc-hard-dep.patch deleted file mode 100644 index 711c5142f85ed507d2ddc10d94d2a887758da987..0000000000000000000000000000000000000000 --- a/ruby-irb-1.4.1-drop-rdoc-hard-dep.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 54c8df06ff9e161012f89d19a4e3aa2e0e37e1b0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -Date: Tue, 23 Aug 2022 10:41:28 +0200 -Subject: [PATCH] Drop hard dependency on RDoc. - -This has been introduced in 026700499dfd640b2072d7bf0370247a98d5ac40, -but it seems that this is just be mistake, otherwise the later handling -of `LoadError` would not be needed. ---- - lib/irb/input-method.rb | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/lib/irb/input-method.rb b/lib/irb/input-method.rb -index fd68239e..a8227caa 100644 ---- a/lib/irb/input-method.rb -+++ b/lib/irb/input-method.rb -@@ -14,7 +14,6 @@ - require_relative 'completion' - require 'io/console' - require 'reline' --require 'rdoc' - - module IRB - STDIN_FILE_NAME = "(line)" # :nodoc: diff --git a/ruby-irb-1.4.1-set-rdoc-soft-dep.patch b/ruby-irb-1.4.1-set-rdoc-soft-dep.patch deleted file mode 100644 index db8aba7550d3629feb28ed177f3bbcd62acd6f69..0000000000000000000000000000000000000000 --- a/ruby-irb-1.4.1-set-rdoc-soft-dep.patch +++ /dev/null @@ -1,35 +0,0 @@ -From b24852058fc87c940252c8a711c60ae2eb298082 Mon Sep 17 00:00:00 2001 -From: Jun Aruga -Date: Thu, 25 Aug 2022 20:11:34 +0200 -Subject: [PATCH] Require RDoc in `input-method.rb` again in a limited scope. - -RDoc is implemented as soft dependency in IRB. See how the rdoc is required in -the files. I reverted the commit below. - -``` -$ grep -ril rdoc lib/ -lib/irb/cmd/help.rb -lib/irb/completion.rb -lib/irb/easter-egg.rb -lib/irb/input-method.rb -``` ---- - lib/irb/input-method.rb | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/lib/irb/input-method.rb b/lib/irb/input-method.rb -index a8227ca..b77fd32 100644 ---- a/lib/irb/input-method.rb -+++ b/lib/irb/input-method.rb -@@ -320,6 +320,11 @@ def auto_indent(&block) - [195, 164], # The "ä" that appears when Alt+d is pressed on xterm. - [226, 136, 130] # The "∂" that appears when Alt+d in pressed on iTerm2. - ] -+ begin -+ require 'rdoc' -+ rescue LoadError -+ return nil -+ end - - if just_cursor_moving and completion_journey_data.nil? - return nil diff --git a/ruby.spec b/ruby.spec index 0b8a712d038fc44547f896768442e357e7daff95..d6aaeed5dfeb5a08e757bbdf882eef53af53ab7b 100644 --- a/ruby.spec +++ b/ruby.spec @@ -1,65 +1,65 @@ -%define anolis_release 9 +%define anolis_release 10 + %global major_version 3 -%global minor_version 1 -%global teeny_version 4 +%global minor_version 2 +%global teeny_version 2 %global major_minor_version %{major_version}.%{minor_version} %global ruby_version %{major_minor_version}.%{teeny_version} +%global ruby_release %{ruby_version} + %global ruby_archive %{name}-%{ruby_version} + %global rubygems_dir %{_datadir}/rubygems +# Bundled libraries versions +%global rubygems_version 3.4.10 +%global rubygems_molinillo_version 0.8.0 +%global rubygems_optparse_version 0.3.0 +%global rubygems_tsort_version 0.1.0 + # Default gems. -%global bundler_version 2.3.26 +%global bundler_version 2.4.10 %global bundler_connection_pool_version 2.3.0 -%global bundler_fileutils_version 1.4.1 -%global bundler_molinillo_version 0.8.0 -%global bundler_net_http_persistent_version 4.0.0 +%global bundler_fileutils_version 1.7.0 +%global bundler_pub_grub_version 0.5.0 +%global bundler_net_http_persistent_version 4.0.1 %global bundler_thor_version 1.2.1 -%global bundler_tmpdir_version 0.1.0 - -# TODO: Check the version if/when available in library. %global bundler_tsort_version 0.1.1 -%global bundler_uri_version 0.10.3 - -# Bundled libraries versions -%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 +%global bundler_uri_version 0.12.2 -%global bigdecimal_version 3.1.1 -%global did_you_mean_version 1.6.1 -%global erb_version 2.2.3 -%global io_console_version 0.5.11 -%global irb_version 1.4.1 +%global bigdecimal_version 3.1.3 +%global did_you_mean_version 1.6.3 +%global erb_version 4.0.2 +%global io_console_version 0.6.0 +%global irb_version 1.6.2 %global json_version 2.6.1 -%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 +%global openssl_version 3.1.0 +%global psych_version 5.0.1 +%global racc_version 1.6.2 +%global rdoc_version 6.5.0 +%global stringio_version 3.0.4 # Bundled gems. -%global minitest_version 5.15.0 -%global power_assert_version 2.0.1 +%global minitest_version 5.16.3 +%global power_assert_version 2.0.3 %global rake_version 13.0.6 -%global test_unit_version 3.5.3 +%global test_unit_version 3.5.7 %global rexml_version 3.2.5 %global rss_version 0.2.9 -%global net_ftp_version 0.1.3 -%global net_imap_version 0.2.3 -%global net_pop_version 0.1.1 -%global net_smtp_version 0.3.1 +%global net_ftp_version 0.2.0 +%global net_imap_version 0.3.4 +%global net_pop_version 0.1.2 +%global net_smtp_version 0.3.3 %global matrix_version 0.4.2 %global prime_version 0.1.2 -%global rbs_version 2.7.0 +%global rbs_version 2.8.2 %global typeprof_version 0.21.3 -%global debug_version 1.6.3 +%global debug_version 1.7.1 %global tapset_libdir %(echo %{_libdir} | sed 's/64//')* -%bcond_with bundler_tests %bcond_with rubypick %bcond_without cmake @@ -67,123 +67,225 @@ %bcond_without gmp %bcond_without hostname %bcond_without systemtap +%bcond_without yjit +%bcond_with bundler_tests + +%bcond_with hardening_test -# The additional linker flags break binary rubygem- packages. %undefine _package_note_flags +Summary: An interpreter of object-oriented scripting language Name: ruby -Version: %{ruby_version} +Version: %{ruby_version}%{?development_release} Release: %{anolis_release}%{?dist} -Summary: An interpreter of object-oriented scripting language -License: (Ruby or BSD) and Public Domain and MIT and CC0 and zlib and UCD -URL: https://www.%{name}-lang.org/ -Source0: https://cache.%{name}-lang.org/pub/%{name}/%{major_minor_version}/%{ruby_archive}.tar.xz +License: (Ruby OR BSD-2-Clause) AND BSD-3-Clause AND ISC AND Public Domain AND MIT and CC0 AND zlib AND Unicode-DFS-2015 +URL: https://www.ruby-lang.org/ +Source0: https://cache.ruby-lang.org/pub/%{name}/%{major_minor_version}/%{ruby_archive}.tar.xz Source1: operating_system.rb +# TODO: Try to push SystemTap support upstream. Source2: libruby.stp -Source3: %{name}-exercise.stp -Source4: macros.%{name} +Source3: ruby-exercise.stp +Source4: macros.ruby Source5: macros.rubygems +# RPM dependency generators. Source8: rubygems.attr Source9: rubygems.req Source10: rubygems.prov Source11: rubygems.con +# ABRT hoook test case. Source13: test_abrt.rb +# SystemTap tests. Source14: test_systemtap.rb -# Default to aliyun gems mirror -Source101: gemrc %{load:%{SOURCE4}} %{load:%{SOURCE5}} -Patch0: %{name}-2.3.0-ruby_version.patch -Patch1: %{name}-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch -Patch2: %{name}-2.1.0-Enable-configuration-of-archlibdir.patch -Patch3: %{name}-2.1.0-always-use-i386.patch -Patch4: %{name}-2.1.0-custom-rubygems-location.patch -Patch5: %{name}-2.7.0-Initialize-ABRT-hook.patch -Patch6: %{name}-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.patch -Patch7: %{name}-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch -Patch8: %{name}-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch -Patch9: %{name}-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch -Patch10: %{name}-3.2.0-Detect-compaction-support-during-runtime.patch -Patch11: %{name}-irb-1.4.1-drop-rdoc-hard-dep.patch -Patch12: %{name}-irb-1.4.1-set-rdoc-soft-dep.patch +# Fix ruby_version abuse. +# https://bugs.ruby-lang.org/issues/11002 +Patch0: ruby-2.3.0-ruby_version.patch +# http://bugs.ruby-lang.org/issues/7807 +Patch1: ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +# Allows to override libruby.so placement. Hopefully we will be able to return +# to plain --with-rubyarchprefix. +# http://bugs.ruby-lang.org/issues/8973 +Patch2: ruby-2.1.0-Enable-configuration-of-archlibdir.patch +# Force multiarch directories for i.86 to be always named i386. This solves +# some differencies in build between Fedora and RHEL. +Patch3: ruby-2.1.0-always-use-i386.patch +# 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 +# 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 +# Unfortunately, due to https://bugs.ruby-lang.org/issues/16254 +# and especially since https://github.com/ruby/ruby/pull/2735 +# this would require boostrapping: +# https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/ +# For now, load the ABRT hook via this simple patch: +Patch6: ruby-2.7.0-Initialize-ABRT-hook.patch +# Prevent segfaults running with SystemTap due to `RubyVM::FrozenCore` being +# corrupted by GC. +# https://bugzilla.redhat.com/show_bug.cgi?id=2015441 +# https://bugzilla.redhat.com/show_bug.cgi?id=1986206 +# https://bugs.ruby-lang.org/issues/18257 +Patch7: ruby-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.patch +# Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add. +# https://bugs.ruby-lang.org/issues/16492 +Patch8: ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch +# Disable syntax_suggest test suite, which tries to download its dependencies. +# https://bugs.ruby-lang.org/issues/19297 +Patch9: ruby-3.2.0-Revert-Fix-test-syntax-suggest-order.patch +Patch10: ruby-3.2.0-Revert-Test-syntax_suggest-by-make-check.patch +# Fix `OpenSSL::X509::CertificateError: invalid digest` errors on ELN. This +# also might help Fedor, if/when +# https://fedoraproject.org/wiki/Changes/StrongCryptoSettings3Forewarning2 +# is accepted. +# https://github.com/ruby/spec/pull/990 +# https://bugs.ruby-lang.org/issues/19307 +Patch11: ruby-3.2.0-Use-SHA256-instead-of-SHA1.patch + # https://github.com/ruby/ruby/commit/5fbc1d45f17e4bff7cc61a78a7d788aa32ff390a -Patch13: %{name}-3.1.4-CVE-2023-36617.patch +Patch12: ruby-3.2.2-CVE-2023-36617.patch -Suggests: rubypick -Requires: %{name}-libs = %{version}-%{release} +Patch13: ruby-3.2.2-change-json-version.patch + +Requires: %{name}-libs +# = #%%{version}-#%%{release} +%{?with_rubypick:Suggests: rubypick} Recommends: ruby(rubygems) >= %{rubygems_version} Recommends: rubygem(bigdecimal) >= %{bigdecimal_version} -BuildRequires: autoconf libffi-devel openssl-devel libyaml-devel readline-devel -BuildRequires: procps gcc make zlib-devel +BuildRequires: autoconf %{?with_gmp:BuildRequires: gmp-devel} +BuildRequires: libffi-devel +BuildRequires: openssl-devel +BuildRequires: libyaml-devel +BuildRequires: readline-devel +# Needed to pass test_set_program_name(TestRubyOptions) +BuildRequires: procps %{?with_systemtap:BuildRequires: %{_bindir}/dtrace} +# RubyGems test suite optional dependencies. %{?with_git:BuildRequires: git} %{?with_cmake:BuildRequires: %{_bindir}/cmake} +# Required to test hardening. %{?with_hardening_test:BuildRequires: %{_bindir}/checksec} %{?with_hostname:BuildRequires: %{_bindir}/hostname} +BuildRequires: system-rpm-config +BuildRequires: gcc +BuildRequires: make +BuildRequires: zlib-devel +%{?with_yjit:BuildRequires: %{_bindir}/rustc} +# The bundler/spec/runtime/setup_spec.rb requires the command `man`. %{?with_bundler_tests:BuildRequires: %{_bindir}/man} -Provides: %{name}(runtime_executable) = %{ruby_version} +# This package provides %%{_bindir}/ruby-mri therefore it is marked by this +# virtual provide. It can be installed as dependency of rubypick. +Provides: ruby(runtime_executable) = %{ruby_release} %description -The %{name} is the interpreted scripting language for quick and easy +Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible. + +%package devel +Summary: A Ruby development environment +Requires: %{name} = %{version}-%{release} +# This would not be needed if ~50 packages depending on -devel used +# --disable-gems +Requires: rubygems +# Users need CFLAGS from /usr/lib/rpm/redhat/redhat-hardened-cc1 +# for building gems with binary extensions (rhbz#1905222). +Recommends: system-rpm-config + +%description devel +Header files and libraries for building an extension library for the +Ruby or an application embedding Ruby. + %package libs Summary: Libraries necessary to run Ruby -License: Ruby or BSD -Provides: %{name}(release) = %{ruby_version} +Provides: ruby(release) = %{ruby_release} -Provides: bundled(ccan-build_assert) bundled(ccan-check_type) -Provides: bundled(ccan-container_of) bundled(ccan-list) +# Virtual provides for CCAN copylibs. +# https://fedorahosted.org/fpc/ticket/364 +Provides: bundled(ccan-build_assert) +Provides: bundled(ccan-check_type) +Provides: bundled(ccan-container_of) +Provides: bundled(ccan-list) + +# StdLib default gems. Provides: bundled(rubygem-did_you_mean) = %{did_you_mean_version} Provides: bundled(rubygem-openssl) = %{openssl_version} Provides: bundled(rubygem-racc) = %{racc_version} -Obsoletes: %{name}-tcltk < 2.4.0 rubygem-net-telnet < 0.2.0-%{release} +# Tcl/Tk support was removed from stdlib in Ruby 2.4, i.e. F27 timeframe. +Obsoletes: ruby-tcltk < 2.4.0 + +# The Net::Telnet and XMLRPC were removed in Ruby 2.8, i.e. F34 timeframe. +# https://bugs.ruby-lang.org/issues/16484 +Obsoletes: rubygem-net-telnet < 0.2.0-%{release} Obsoletes: rubygem-xmlrpc < 0.3.0-%{release} + %description libs This package includes the libruby, necessary to run Ruby. -%package devel -Summary: A Ruby development environment -Requires: %{name} = %{version}-%{release} -Requires: rubygems -Recommends: system-rpm-config -%description devel -Header files and libraries for building an extension library for the -Ruby or an application embedding Ruby. +# TODO: Rename or not rename to ruby-rubygems? +%package -n rubygems +Summary: The Ruby standard for packaging ruby libraries +Version: %{rubygems_version} +# BSD-2-Clause: lib/rubygems/tsort/ +# BSD-2-Clause OR Ruby: lib/rubygems/optparse/ +# MIT: lib/rubygems/resolver/molinillo +License: (Ruby OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Ruby) AND MIT +Requires: ruby(release) +Recommends: rubygem(bundler) >= %{bundler_version} +Recommends: rubygem(rdoc) >= %{rdoc_version} +Recommends: rubygem(io-console) >= %{io_console_version} +Requires: rubygem(psych) >= %{psych_version} +Provides: gem = %{version}-%{release} +Provides: ruby(rubygems) = %{version}-%{release} +# https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 +Provides: bundled(rubygem-molinillo) = %{rubygems_molinillo_version} +BuildArch: noarch -%package bundled-gems -Summary: Bundled gems which are part of Ruby StdLib -Requires: ruby(rubygems) >= %{rubygems_version} -Recommends: rubygem(irb) >= %{irb_version} -Provides: rubygem(net-ftp) = %{net_ftp_version} -Provides: rubygem(net-imap) = %{net_imap_version} -Provides: rubygem(net-pop) = %{net_pop_version} -Provides: rubygem(net-smtp) = %{net_smtp_version} -Provides: rubygem(matrix) = %{matrix_version} -Provides: rubygem(prime) = %{prime_version} -Provides: rubygem(debug) = %{debug_version} +%description -n rubygems +RubyGems is the Ruby standard for publishing and managing third party +libraries. -%description bundled-gems -Bundled gems which are part of Ruby StdLib. While being part of Ruby, these -needs to be listed in Gemfile to be used by Bundler. + +%package -n rubygems-devel +Summary: Macros and development tools for packaging RubyGems +Version: %{rubygems_version} +License: MIT +Requires: ruby(rubygems) >= %{version}-%{release} +# Needed for RDoc documentation format generation. +Requires: rubygem(json) >= %{json_version} +Requires: rubygem(rdoc) >= %{rdoc_version} +BuildArch: noarch + +%description -n rubygems-devel +Macros and development tools for packaging RubyGems. + + +# Default gems +# +# These packages are part of Ruby StdLib and are expected to be loadable even +# with disabled RubyGems. %package default-gems Summary: Default gems which are part of Ruby StdLib Requires: ruby(rubygems) >= %{rubygems_version} Supplements: ruby(rubygems) +# Include the io-console dependency for reline. Requires: rubygem(io-console) +# Obsoleted by Ruby 2.7 in F32 timeframe. Obsoletes: rubygem-did_you_mean < 1.4.0-130 Obsoletes: rubygem-racc < 1.4.16-130 +# Obsoleted by Ruby 3.0 in F34 timeframe. Obsoletes: rubygem-openssl < 2.2.0-145 Provides: rubygem(openssl) = %{openssl_version}-%{release} Provides: rubygem(stringio) = %{stringio_version} @@ -193,30 +295,68 @@ BuildArch: noarch The .gemspec files and executables of default gems, which are part of Ruby StdLib. -%package -n rubygems -Summary: The Ruby standard for packaging %{name} libraries -Version: %{rubygems_version} -License: Ruby or MIT -Requires: %{name}(release) -Recommends: rubygem(bundler) >= %{bundler_version} + +%package -n rubygem-irb +Summary: The Interactive Ruby +Version: %{irb_version} +License: Ruby OR BSD-2-Clause +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +# ruby-default-gems is required to run irb. +# https://bugs.ruby-lang.org/issues/16951 +Requires: ruby-default-gems >= %{ruby_version}%{?development_release} Recommends: rubygem(rdoc) >= %{rdoc_version} -Recommends: rubygem(io-console) >= %{io_console_version} +Provides: irb = %{version}-%{release} +Provides: rubygem(irb) = %{version}-%{release} +# Obsoleted by Ruby 2.6 in F30 timeframe. +Provides: ruby(irb) = %{ruby_version}%{?development_release}-%{release} +Provides: ruby-irb = %{ruby_version}%{?development_release}-%{release} +Obsoletes: ruby-irb < %{ruby_version}%{?development_release}-%{release} +BuildArch: noarch + +%description -n rubygem-irb +The irb is acronym for Interactive Ruby. It evaluates ruby expression +from the terminal. + + +%package -n rubygem-rdoc +Summary: A tool to generate HTML and command-line documentation for Ruby projects +Version: %{rdoc_version} +# BSD-3-Clause: lib/rdoc/generator/darkfish.rb +# CC-BY-2.5: lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif +# OFL-1.1-RFN: lib/rdoc/generator/template/darkfish/css/fonts.css +License: GPL-2.0-only AND Ruby AND BSD-3-Clause AND CC-BY-2.5 AND OFL-1.1-RFN +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Requires: rubygem(io-console) >= %{io_console_version} +Requires: rubygem(json) >= %{json_version} Requires: rubygem(psych) >= %{psych_version} -Provides: gem = %{version}-%{release} -Provides: %{name}(rubygems) = %{version}-%{release} -Provides: bundled(rubygem-molinillo) = %{rubygems_molinillo_version} +Provides: rdoc = %{version}-%{release} +Provides: ri = %{version}-%{release} +Provides: rubygem(rdoc) = %{version}-%{release} BuildArch: noarch -%description -n rubygems -RubyGems is the Ruby standard for publishing and managing third party -libraries. +%description -n rubygem-rdoc +RDoc produces HTML and command-line documentation for Ruby projects. RDoc +includes the 'rdoc' and 'ri' tools for generating and displaying online +documentation. + + +%package doc +Summary: Documentation for %{name} +Requires: %{_bindir}/ri +BuildArch: noarch + +%description doc +This package contains documentation for %{name}. + %package -n rubygem-bigdecimal Summary: BigDecimal provides arbitrary-precision floating point decimal arithmetic Version: %{bigdecimal_version} -License: Ruby or BSD -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +License: Ruby OR BSD-2-Clause +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(bigdecimal) = %{version}-%{release} %description -n rubygem-bigdecimal @@ -231,20 +371,66 @@ because it provides the correct answers people expect–whereas normal binary floating point arithmetic often introduces subtle errors because of the conversion between base 10 and base 2. + +%package -n rubygem-io-console +Summary: IO/Console is a simple console utilizing library +Version: %{io_console_version} +License: Ruby OR BSD-2-Clause +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(io-console) = %{version}-%{release} + +%description -n rubygem-io-console +IO/Console provides very simple and portable access to console. It doesn't +provide higher layer features, such like curses and readline. + + +%package -n rubygem-json +Summary: This is a JSON implementation as a Ruby extension in C +Version: %{json_version} +# Unicode-DFS-2015: ext/json/ext/generator/generator.c +License: (Ruby OR BSD-2-Clause) AND Unicode-DFS-2015 +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(json) = %{version}-%{release} + +%description -n rubygem-json +This is a implementation of the JSON specification according to RFC 4627. +You can think of it as a low fat alternative to XML, if you want to store +data to disk or transmit it over a network rather than use a verbose +markup language. + + +%package -n rubygem-psych +Summary: A libyaml wrapper for Ruby +Version: %{psych_version} +License: MIT +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Requires: rubygem(stringio) >= %{stringio_version} +Provides: rubygem(psych) = %{version}-%{release} + +%description -n rubygem-psych +Psych is a YAML parser and emitter. Psych leverages +libyaml[http://pyyaml.org/wiki/LibYAML] for its YAML parsing and emitting +capabilities. In addition to wrapping libyaml, Psych also knows how to +serialize and de-serialize most Ruby objects to and from the YAML format. + + %package -n rubygem-bundler Summary: Library and utilities to manage a Ruby application's gem dependencies Version: %{bundler_version} License: MIT -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Requires: rubygem(io-console) Provides: rubygem(bundler) = %{version}-%{release} +# https://github.com/bundler/bundler/issues/3647 Provides: bundled(rubygem-connection_pool) = %{bundler_connection_pool_version} Provides: bundled(rubygem-fileutils) = %{bundler_fileutils_version} -Provides: bundled(rubygem-molinillo) = %{bundler_molinillo_version} +Provides: bundled(rubygem-pub_grub) = %{bundler_pub_grub_version} Provides: bundled(rubygem-net-http-persisntent) = %{bundler_net_http_persistent_version} Provides: bundled(rubygem-thor) = %{bundler_thor_version} -Provides: bundled(rubygem-tmpdir) = %{bundler_tmpdir_version} Provides: bundled(rubygem-uri) = %{bundler_uri_version} BuildArch: noarch @@ -252,67 +438,36 @@ BuildArch: noarch Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably. -%package -n rubygems-devel -Summary: Macros and development tools for packaging RubyGems -Version: %{rubygems_version} -License: Ruby or MIT -Requires: %{name}(rubygems) >= %{version}-%{release} -Requires: rubygem(json) >= %{json_version} -Requires: rubygem(rdoc) >= %{rdoc_version} -BuildArch: noarch -%description -n rubygems-devel -Macros and development tools for packaging RubyGems. +# Bundled gems +# +# These are regular packages, which might be installed just optionally. Users +# should list them among their dependencies (in Gemfile). -%package -n rubygem-irb -Summary: The Interactive Ruby -Version: %{irb_version} -Requires: %{name}(release) +%package bundled-gems +Summary: Bundled gems which are part of Ruby StdLib Requires: ruby(rubygems) >= %{rubygems_version} -Requires: ruby-default-gems >= %{ruby_version} -Recommends: rubygem(rdoc) >= %{rdoc_version} -Provides: irb = %{version}-%{release} -Provides: rubygem(irb) = %{version}-%{release} -Provides: %{name}(irb) = %{ruby_version}-%{release} -Provides: %{name}-irb = %{ruby_version}-%{release} -Obsoletes: %{name}-irb < %{ruby_version}-%{release} -BuildArch: noarch - -%description -n rubygem-irb -The irb is acronym for Interactive Ruby. It evaluates ruby expression -from the terminal. - -%package -n rubygem-io-console -Summary: IO/Console is a simple console utilizing library -Version: %{io_console_version} -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} -Provides: rubygem(io-console) = %{version}-%{release} - -%description -n rubygem-io-console -IO/Console provides very simple and portable access to console. It doesn't -provide higher layer features, such like curses and readline. +# Runtime dependency of rubygem(debug). +Recommends: rubygem(irb) >= %{irb_version} +Provides: rubygem(net-ftp) = %{net_ftp_version} +Provides: rubygem(net-imap) = %{net_imap_version} +Provides: rubygem(net-pop) = %{net_pop_version} +Provides: rubygem(net-smtp) = %{net_smtp_version} +Provides: rubygem(matrix) = %{matrix_version} +Provides: rubygem(prime) = %{prime_version} +Provides: rubygem(debug) = %{debug_version} -%package -n rubygem-json -Summary: This is a JSON implementation as a Ruby extension in C -Version: %{json_version} -License: (Ruby or GPLv2) and UCD -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} -Provides: rubygem(json) = %{version}-%{release} +%description bundled-gems +Bundled gems which are part of Ruby StdLib. While being part of Ruby, these +needs to be listed in Gemfile to be used by Bundler. -%description -n rubygem-json -This is a implementation of the JSON specification according to RFC 4627. -You can think of it as a low fat alternative to XML, if you want to store -data to disk or transmit it over a network rather than use a verbose -markup language. %package -n rubygem-minitest Summary: Minitest provides a complete suite of testing facilities Version: %{minitest_version} License: MIT -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(minitest) = %{version}-%{release} BuildArch: noarch @@ -330,12 +485,13 @@ framework. minitest/pride shows pride in testing and adds coloring to your test output. + %package -n rubygem-power_assert Summary: Power Assert for Ruby Version: %{power_assert_version} -License: Ruby or BSD -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +License: Ruby OR BSD-2-Clause +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(power_assert) = %{version}-%{release} BuildArch: noarch @@ -344,46 +500,13 @@ Power Assert shows each value of variables and method calls in the expression. It is useful for testing, providing which value wasn't correct when the condition is not satisfied. -%package -n rubygem-psych -Summary: A libyaml wrapper for Ruby -Version: %{psych_version} -License: MIT -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} -Requires: rubygem(stringio) >= %{stringio_version} -Provides: rubygem(psych) = %{version}-%{release} - -%description -n rubygem-psych -Psych is a YAML parser and emitter. Psych leverages -libyaml[http://pyyaml.org/wiki/LibYAML] for its YAML parsing and emitting -capabilities. In addition to wrapping libyaml, Psych also knows how to -serialize and de-serialize most Ruby objects to and from the YAML format. - -%package -n rubygem-rdoc -Summary: A tool to generate HTML and command-line documentation for Ruby projects -Version: %{rdoc_version} -License: GPLv2 and Ruby and MIT and OFL -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} -Requires: rubygem(io-console) >= %{io_console_version} -Requires: rubygem(json) >= %{json_version} -Requires: rubygem(psych) >= %{psych_version} -Provides: rdoc = %{version}-%{release} -Provides: ri = %{version}-%{release} -Provides: rubygem(rdoc) = %{version}-%{release} -BuildArch: noarch - -%description -n rubygem-rdoc -RDoc produces HTML and command-line documentation for Ruby projects. RDoc -includes the 'rdoc' and 'ri' tools for generating and displaying online -documentation. %package -n rubygem-rake Summary: Ruby based make-like utility Version: %{rake_version} License: MIT -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Provides: rake = %{version}-%{release} Provides: rubygem(rake) = %{version}-%{release} BuildArch: noarch @@ -392,25 +515,45 @@ BuildArch: noarch Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax. + %package -n rubygem-rbs Summary: Type signature for Ruby Version: %{rbs_version} -License: Ruby or BSD -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +License: Ruby OR BSD-2-Clause +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(rbs) = %{version}-%{release} %description -n rubygem-rbs RBS is the language for type signatures for Ruby and standard library definitions. + +%package -n rubygem-test-unit +Summary: An xUnit family unit testing framework for Ruby +Version: %{test_unit_version} +# lib/test/unit/diff.rb is a double license of the Ruby license and PSF license. +License: (Ruby OR BSD-2-Clause) AND (Ruby OR BSD-2-Clause OR Python-2.0.1) +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Requires: rubygem(power_assert) +Provides: rubygem(test-unit) = %{version}-%{release} +BuildArch: noarch + +%description -n rubygem-test-unit +Test::Unit (test-unit) is unit testing framework for Ruby, based on xUnit +principles. These were originally designed by Kent Beck, creator of extreme +programming software development methodology, for Smalltalk's SUnit. It allows +writing tests, checking results and automated testing in Ruby. + + %package -n rubygem-rexml Summary: An XML toolkit for Ruby Version: %{rexml_version} -License: BSD -URL: https://github.com/%{name}/rexml -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +License: BSD-2-Clause +URL: https://github.com/ruby/rexml +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(rexml) = %{version}-%{release} BuildArch: noarch @@ -429,10 +572,10 @@ features such as XPath. %package -n rubygem-rss Summary: Family of libraries that support various formats of XML "feeds" Version: %{rss_version} -License: BSD -URL: https://github.com/%{name}/rss -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +License: BSD-2-Clause +URL: https://github.com/ruby/rss +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(rss) = %{version}-%{release} BuildArch: noarch @@ -447,9 +590,9 @@ to read and create these feeds. Summary: TypeProf is a type analysis tool for Ruby code based on abstract interpretation Version: %{typeprof_version} License: MIT -URL: https://github.com/%{name}/typeprof -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} +URL: https://github.com/ruby/typeprof +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} Requires: rubygem(rbs) >= %{rbs_version} Provides: rubygem(typeprof) = %{version}-%{release} BuildArch: noarch @@ -461,30 +604,6 @@ gathers what types are passed to and returned by methods, and prints the analysis result in RBS format, a standard type description format for Ruby 3.0. -%package -n rubygem-test-unit -Summary: An xUnit family unit testing framework for Ruby -Version: %{test_unit_version} -License: (Ruby or BSD) and (Ruby or BSD or Python) and (Ruby or BSD or LGPLv2+) -Requires: %{name}(release) -Requires: %{name}(rubygems) >= %{rubygems_version} -Requires: rubygem(power_assert) -Provides: rubygem(test-unit) = %{version}-%{release} -BuildArch: noarch - -%description -n rubygem-test-unit -Test::Unit (test-unit) is unit testing framework for Ruby, based on xUnit -principles. These were originally designed by Kent Beck, creator of extreme -programming software development methodology, for Smalltalk's SUnit. It allows -writing tests, checking results and automated testing in Ruby. - -%package doc -Summary: Documentation for %{name} -Requires: %{_bindir}/ri -BuildArch: noarch - -%description doc -This package contains documentation for %{name}. - %prep %autosetup -n %{ruby_archive} -p1 @@ -492,11 +611,13 @@ This package contains documentation for %{name}. rm -rf ext/psych/yaml rm -rf ext/fiddle/libffi* +# Provide an example of usage of the tapset: cp -a %{SOURCE3} . %build autoconf + %configure \ --with-rubylibprefix='%{ruby_libdir}' \ --with-archlibdir='%{_libdir}' \ @@ -517,15 +638,18 @@ autoconf --enable-shared \ --with-ruby-version='' \ --enable-multiarch \ + %{?with_yjit: --enable-yjit} \ %make_build COPY="cp -p" %install %make_install +# Rename the ruby executable. It is replaced by RubyPick. %{?with_rubypick:mv %{buildroot}%{_bindir}/%{name}{,-mri}} sed -i 's/Version: \${ruby_version}/Version: %{ruby_version}/' %{buildroot}%{_libdir}/pkgconfig/%{name}.pc +# Kill bundled certificates, as they should be part of ca-certificates. for cert in \ rubygems.org/GlobalSignRootCA.pem \ rubygems.org/GlobalSignRootCA_R3.pem @@ -533,16 +657,20 @@ do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert rm -d $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) || : done +# Ensure there is not forgotten any certificate. test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" -mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d -install -m 644 %{SOURCE4} %{buildroot}%{_rpmconfigdir}/macros.d/macros.ruby -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.ruby -install -m 644 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems - -mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs -install -m 644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/fileattrs +# Move macros file into proper place and replace the %%{name} macro, since it +# would be wrongly evaluated during build of other packages. +mkdir -p %{buildroot}%{_rpmmacrodir} +install -m 644 %{SOURCE4} %{buildroot}%{_rpmmacrodir}/macros.ruby +sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmmacrodir}/macros.ruby +install -m 644 %{SOURCE5} %{buildroot}%{_rpmmacrodir}/macros.rubygems +sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmmacrodir}/macros.rubygems + +# Install dependency generators. +mkdir -p %{buildroot}%{_fileattrsdir} +install -m 644 %{SOURCE8} %{buildroot}%{_fileattrsdir} install -m 755 %{SOURCE9} %{buildroot}%{_rpmconfigdir} install -m 755 %{SOURCE10} %{buildroot}%{_rpmconfigdir} install -m 755 %{SOURCE11} %{buildroot}%{_rpmconfigdir} @@ -611,21 +739,26 @@ ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych %{buildroot}%{ruby_libdir ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych.rb %{buildroot}%{ruby_libdir}/psych.rb ln -s %{_libdir}/gems/%{name}/psych-%{psych_version}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so +# Move the binary extensions into proper place (if no gem has binary extension, +# the extensions directory might be empty). +# TODO: Get information about extension form .gemspec files. find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{major_minor_version}.*/* -maxdepth 0 \ -exec mv '{}' %{buildroot}%{_libdir}/gems/%{name}/ \; \ || echo "No gem binary extensions to move." +# Remove the extension sources and library copies from `lib` dir. find %{buildroot}%{gem_dir}/gems/*/ext -maxdepth 0 -exec rm -rf '{}' + find %{buildroot}%{gem_dir}/gems/*/lib -name \*.so -delete +# Move man pages into proper location mkdir -p %{buildroot}%{_mandir}/man{1,5} mv %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/doc/rake.1 %{buildroot}%{_mandir}/man1 +# https://bugs.ruby-lang.org/issues/17778 cp -a %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version}/lib/bundler/man/*.1 %{buildroot}%{_mandir}/man1 cp -a %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version}/lib/bundler/man/*.5 %{buildroot}%{_mandir}/man5 -install -m0644 -p -D %{SOURCE101} %{buildroot}%{_sysconfdir}/gemrc - %if %{with systemtap} +# Install a tapset and fix up the path to the library. mkdir -p %{buildroot}%{_systemtap_tapsetdir} sed -e "s|@LIBRARY_PATH@|%{tapset_libdir}/libruby.so.%{major_minor_version}|" \ %{SOURCE2} > %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp @@ -633,6 +766,7 @@ sed -e "s|@LIBRARY_PATH@|%{tapset_libdir}/libruby.so.%{major_minor_version}|" \ sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp %endif +# Prepare -doc subpackage file lists. find doc -maxdepth 1 -type f ! -name '.*' ! -name '*.ja*' > .ruby-doc.en echo 'doc/images' >> .ruby-doc.en echo 'doc/syntax' >> .ruby-doc.en @@ -653,14 +787,21 @@ checksec --file=libruby.so.%{ruby_version} | \ grep "Full RELRO.*Canary found.*NX enabled.*DSO.*No RPATH.*No RUNPATH.*Yes.*\d*.*\d*.*libruby.so.%{ruby_version}" %endif +# Check RubyGems version. [ "`make runruby TESTRUN_SCRIPT='bin/gem -v' | tail -1`" == '%{rubygems_version}' ] -[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ +# Check Rubygems bundled dependencies versions. + +# Molinillo. +make runruby TESTRUN_SCRIPT="-e \" \ module Gem; module Resolver; end; end; \ require 'rubygems/resolver/molinillo/lib/molinillo/gem_metadata'; \ - puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \ - == '%{rubygems_molinillo_version}' ] + puts '%%{rubygems_molinillo_version}: %{rubygems_molinillo_version}'; \ + puts %Q[Gem::Resolver::Molinillo::VERSION: #{Gem::Resolver::Molinillo::VERSION}]; \ + exit 1 if Gem::Resolver::Molinillo::VERSION != '%{rubygems_molinillo_version}'; \ +\"" +# OptParse. make runruby TESTRUN_SCRIPT="-e \" \ module Gem; end; \ require 'rubygems/optparse/lib/optparse'; \ @@ -669,66 +810,86 @@ make runruby TESTRUN_SCRIPT="-e \" \ 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'\"" -[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ +# Check Bundler bundled dependencies versions. + +# connection_pool. +make runruby TESTRUN_SCRIPT="-e \" \ module Bundler; end; \ require 'bundler/vendor/connection_pool/lib/connection_pool/version'; \ - puts Bundler::ConnectionPool::VERSION\\\"\" | tail -1`" \ - == '%{bundler_connection_pool_version}' ] + puts '%%{bundler_connection_pool_version}; %{bundler_connection_pool_version}'; \ + puts %Q[Bundler::ConnectionPool::VERSION: #{Bundler::ConnectionPool::VERSION}]; \ + exit 1 if Bundler::ConnectionPool::VERSION != '%{bundler_connection_pool_version}'; \ +\"" -[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ +# FileUtils. +make runruby TESTRUN_SCRIPT="-e \" \ module Bundler; end; \ require 'bundler/vendor/fileutils/lib/fileutils'; \ - puts Bundler::FileUtils::VERSION\\\"\" | tail -1`" \ - == '%{bundler_fileutils_version}' ] + puts '%%{bundler_fileutils_version}: %{bundler_fileutils_version}'; \ + puts %Q[Bundler::FileUtils::VERSION: #{Bundler::FileUtils::VERSION}]; \ + exit 1 if Bundler::FileUtils::VERSION != '%{bundler_fileutils_version}'; \ +\"" -[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ +# PubGrub +make runruby TESTRUN_SCRIPT="-e \" \ module Bundler; end; \ - require 'bundler/vendor/molinillo/lib/molinillo/gem_metadata'; \ - puts Bundler::Molinillo::VERSION\\\"\" | tail -1`" \ - == '%{bundler_molinillo_version}' ] + require 'bundler/vendor/pub_grub/lib/pub_grub/version'; \ + puts '%%{bundler_pub_grub_version}: %{bundler_pub_grub_version}'; \ + puts %Q[Bundler::PubGrub::VERSION: #{Bundler::PubGrub::VERSION}]; \ + exit 1 if Bundler::PubGrub::VERSION != '%{bundler_pub_grub_version}'; \ +\"" -[ "`make runruby TESTRUN_SCRIPT=\"-rrubygems -e \\\" \ +make runruby TESTRUN_SCRIPT="-e \" \ module Bundler; module Persistent; module Net; module HTTP; \ end; end; end; end; \ require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'; \ - puts Bundler::Persistent::Net::HTTP::Persistent::VERSION\\\"\" | tail -1`" \ - == '%{bundler_net_http_persistent_version}' ] + puts '%%{bundler_net_http_persistent_version}: %{bundler_net_http_persistent_version}'; \ + puts %Q[Bundler::Persistent::Net::HTTP::Persistent::VERSION: #{Bundler::Persistent::Net::HTTP::Persistent::VERSION}]; \ + exit 1 if Bundler::Persistent::Net::HTTP::Persistent::VERSION != '%{bundler_net_http_persistent_version}'; \ +\"" -[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ +# Thor. +make runruby TESTRUN_SCRIPT="-e \" \ module Bundler; end; \ require 'bundler/vendor/thor/lib/thor/version'; \ - puts Bundler::Thor::VERSION\\\"\" | tail -1`" \ - == '%{bundler_thor_version}' ] + puts '%%{bundler_thor_version}: %{bundler_thor_version}'; \ + puts %Q[Bundler::Thor::VERSION: #{Bundler::Thor::VERSION}]; \ + exit 1 if Bundler::Thor::VERSION != '%{bundler_thor_version}'; \ +\"" -[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ +make runruby TESTRUN_SCRIPT="-e \" \ + module Bundler; end; \ + require 'bundler/vendor/tsort/lib/tsort' \"" + +# URI. +make runruby TESTRUN_SCRIPT="-e \" \ module Bundler; end; \ require 'bundler/vendor/uri/lib/uri/version'; \ - puts Bundler::URI::VERSION\\\"\" | tail -1`" \ - == '%{bundler_uri_version}' ] + puts '%%{bundler_uri_version}: %{bundler_uri_version}'; \ + puts %Q[Bundler::URI::VERSION: #{Bundler::URI::VERSION}]; \ + exit 1 if Bundler::URI::VERSION != '%{bundler_uri_version}'; \ +\"" + touch abrt.rb make runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE13}" -%{?with_systemtap:make runruby TESTRUN_SCRIPT=%{SOURCE14}} +%if %{with systemtap} +make runruby TESTRUN_SCRIPT=%{SOURCE14} +%endif DISABLE_TESTS="" MSPECOPTS="" +# Avoid `hostname' dependency. %{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"} -mv test/fiddle/test_import.rb{,.disable} -mv test/fiddle/test_closure.rb{,.disable} -DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunc#test_qsort1/" -DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/" -DISABLE_TESTS="$DISABLE_TESTS -n !/TestResolvAddr#test_valid_socket_ip_address_list/" - -%ifarch aarch64 -DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" -%endif %{?test_timeout_scale:RUBY_TEST_TIMEOUT_SCALE="%{test_timeout_scale}"} \ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS" @@ -744,18 +905,37 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{_bindir}/erb %{_bindir}/%{name}%{?with_rubypick:-mri} %{_mandir}/man1/erb* -%{_mandir}/man1/%{name}* +%{_mandir}/man1/ruby* + +%files devel +%license BSDL +%license COPYING +%lang(ja) %license COPYING.ja +%license GPL +%license LEGAL + +%{_rpmmacrodir}/macros.ruby + +%{_includedir}/* +%{_libdir}/libruby.so +%{_libdir}/pkgconfig/%{name}.pc %files libs %license COPYING %lang(ja) %license COPYING.ja %license GPL %license LEGAL +%doc README.md +%doc NEWS.md +# Exclude /usr/local directory since it is supposed to be managed by +# local system administrator. %exclude %{ruby_sitelibdir} %exclude %{ruby_sitearchdir} %dir %{ruby_vendorlibdir} %dir %{ruby_vendorarchdir} +# List all these files explicitly to prevent surprises +# Platform independent libraries. %dir %{ruby_libdir} %exclude %{ruby_libdir}/bigdecimal* %exclude %{ruby_libdir}/irb* @@ -805,11 +985,14 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{ruby_libdir}/resolv-replace.rb %{ruby_libdir}/rinda %{ruby_libdir}/ripper* +%dir %{ruby_libdir}/ruby_vm +%{ruby_libdir}/ruby_vm/mjit %{ruby_libdir}/securerandom.rb %{ruby_libdir}/set* %{ruby_libdir}/shellwords.rb %{ruby_libdir}/singleton* %{ruby_libdir}/socket.rb +%{ruby_libdir}/syntax_suggest* %{ruby_libdir}/syslog %{ruby_libdir}/tempfile.rb %{ruby_libdir}/timeout* @@ -822,6 +1005,7 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{ruby_libdir}/weakref* %{ruby_libdir}/yaml* +# Platform specific libraries. %{_libdir}/libruby.so.{%{major_minor_version},%{ruby_version}} %dir %{ruby_libarchdir} %dir %{ruby_libarchdir}/cgi @@ -899,6 +1083,7 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{ruby_libarchdir}/enc/windows_1254.so %{ruby_libarchdir}/enc/windows_1257.so %{ruby_libarchdir}/enc/windows_31j.so +%{ruby_libarchdir}/erb/escape.so %{ruby_libarchdir}/etc.so %{ruby_libarchdir}/fcntl.so %{ruby_libarchdir}/fiddle.so @@ -931,26 +1116,14 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{?with_systemtap:%{_systemtap_datadir}} -%files devel -%license BSDL -%license COPYING -%lang(ja) %license COPYING.ja -%license GPL -%license LEGAL - -%{_rpmconfigdir}/macros.d/macros.%{name} - -%{_includedir}/* -%{_libdir}/libruby.so -%{_libdir}/pkgconfig/%{name}.pc - %files -n rubygems %{_bindir}/gem -%config(noreplace) %{_sysconfdir}/gemrc %dir %{rubygems_dir} %{rubygems_dir}/rubygems %{rubygems_dir}/rubygems.rb +# Explicitly include only RubyGems directory strucure to avoid accidentally +# packaged content. %dir %{gem_dir} %dir %{gem_dir}/build_info %dir %{gem_dir}/cache @@ -966,12 +1139,107 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %exclude %{gem_dir}/cache/* %files -n rubygems-devel -%{_rpmconfigdir}/macros.d/macros.rubygems -%{_rpmconfigdir}/fileattrs/rubygems.attr +%{_rpmmacrodir}/macros.rubygems +%{_fileattrsdir}/rubygems.attr %{_rpmconfigdir}/rubygems.req %{_rpmconfigdir}/rubygems.prov %{_rpmconfigdir}/rubygems.con +%files default-gems +%{gem_dir}/specifications/default/abbrev-0.1.1.gemspec +%{gem_dir}/specifications/default/base64-0.1.1.gemspec +%{gem_dir}/specifications/default/benchmark-0.2.1.gemspec +%{gem_dir}/specifications/default/cgi-0.3.6.gemspec +%{gem_dir}/specifications/default/csv-3.2.6.gemspec +%{gem_dir}/specifications/default/date-3.3.3.gemspec +%{gem_dir}/specifications/default/delegate-0.3.0.gemspec +%{gem_dir}/specifications/default/did_you_mean-%{did_you_mean_version}.gemspec +%{gem_dir}/specifications/default/digest-3.1.1.gemspec +%{gem_dir}/specifications/default/drb-2.1.1.gemspec +%{gem_dir}/specifications/default/english-0.7.2.gemspec +%{gem_dir}/specifications/default/erb-%{erb_version}.gemspec +%{gem_dir}/specifications/default/error_highlight-0.5.1.gemspec +%{gem_dir}/specifications/default/etc-1.4.2.gemspec +%{gem_dir}/specifications/default/fcntl-1.0.2.gemspec +%{gem_dir}/specifications/default/fiddle-1.1.1.gemspec +%{gem_dir}/specifications/default/fileutils-1.7.0.gemspec +%{gem_dir}/specifications/default/find-0.1.1.gemspec +%{gem_dir}/specifications/default/forwardable-1.3.3.gemspec +%{gem_dir}/specifications/default/getoptlong-0.2.0.gemspec +%{gem_dir}/specifications/default/io-nonblock-0.2.0.gemspec +%{gem_dir}/specifications/default/io-wait-0.3.0.gemspec +%{gem_dir}/specifications/default/ipaddr-1.2.5.gemspec +%{gem_dir}/specifications/default/logger-1.5.3.gemspec +%{gem_dir}/specifications/default/mutex_m-0.1.2.gemspec +%{gem_dir}/specifications/default/net-http-0.3.2.gemspec +%{gem_dir}/specifications/default/net-protocol-0.2.1.gemspec +%{gem_dir}/specifications/default/nkf-0.1.2.gemspec +%{gem_dir}/specifications/default/observer-0.1.1.gemspec +%{gem_dir}/specifications/default/open3-0.1.2.gemspec +%{gem_dir}/specifications/default/open-uri-0.3.0.gemspec +%{gem_dir}/specifications/default/optparse-0.3.1.gemspec +%{gem_dir}/specifications/default/openssl-%{openssl_version}.gemspec +%{gem_dir}/specifications/default/ostruct-0.5.5.gemspec +%{gem_dir}/specifications/default/pathname-0.2.1.gemspec +%{gem_dir}/specifications/default/pp-0.4.0.gemspec +%{gem_dir}/specifications/default/prettyprint-0.1.1.gemspec +%{gem_dir}/specifications/default/pstore-0.1.2.gemspec +%{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.5.gemspec +%{gem_dir}/specifications/default/reline-0.3.2.gemspec +%{gem_dir}/specifications/default/resolv-0.2.2.gemspec +%{gem_dir}/specifications/default/resolv-replace-0.1.1.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.2.2.gemspec +%{gem_dir}/specifications/default/set-1.0.3.gemspec +%{gem_dir}/specifications/default/shellwords-0.1.0.gemspec +%{gem_dir}/specifications/default/singleton-0.1.1.gemspec +%{gem_dir}/specifications/default/stringio-%{stringio_version}.gemspec +%{gem_dir}/specifications/default/strscan-3.0.5.gemspec +%{gem_dir}/specifications/default/syntax_suggest-1.0.2.gemspec +%{gem_dir}/specifications/default/syslog-0.1.1.gemspec +%{gem_dir}/specifications/default/tempfile-0.1.3.gemspec +%{gem_dir}/specifications/default/time-0.2.2.gemspec +%{gem_dir}/specifications/default/timeout-0.3.1.gemspec +%{gem_dir}/specifications/default/tmpdir-0.1.3.gemspec +%{gem_dir}/specifications/default/tsort-0.1.1.gemspec +%{gem_dir}/specifications/default/un-0.2.1.gemspec +%{gem_dir}/specifications/default/uri-0.12.2.gemspec +%{gem_dir}/specifications/default/weakref-0.1.2.gemspec +#%%{gem_dir}/specifications/default/win32ole-1.8.9.gemspec +%{gem_dir}/specifications/default/yaml-0.2.1.gemspec +%{gem_dir}/specifications/default/zlib-3.0.0.gemspec + +%{gem_dir}/gems/erb-%{erb_version} +# Use standalone rubygem-racc if Racc binary is required. Shipping this +# executable in both packages might possibly cause conflicts. The situation +# could be better if Ruby generated these files: +# https://github.com/ruby/ruby/pull/2545 +%exclude %{_bindir}/racc +%exclude %{gem_dir}/gems/racc-%{racc_version}/bin + +%files -n rubygem-irb +%{_bindir}/irb +%{ruby_libdir}/irb* +%{gem_dir}/gems/irb-%{irb_version} +%{gem_dir}/specifications/irb-%{irb_version}.gemspec +%{_mandir}/man1/irb.1* + +%files -n rubygem-rdoc +%{_bindir}/rdoc +%{_bindir}/ri +%{gem_dir}/gems/rdoc-%{rdoc_version} +%{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec +%{_mandir}/man1/ri* + +%files doc -f .ruby-doc.en -f .ruby-doc.ja +%doc README.md +%doc ChangeLog +%{?with_systemtap:%doc ruby-exercise.stp} +%{_datadir}/ri + %files -n rubygem-bigdecimal %{ruby_libdir}/bigdecimal* %{ruby_libarchdir}/bigdecimal* @@ -979,6 +1247,29 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{gem_dir}/gems/bigdecimal-%{bigdecimal_version} %{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec +%files -n rubygem-io-console +%{ruby_libdir}/io +%{ruby_libarchdir}/io/console.so +%{_libdir}/gems/%{name}/io-console-%{io_console_version} +%{gem_dir}/gems/io-console-%{io_console_version} +%{gem_dir}/specifications/io-console-%{io_console_version}.gemspec + +%files -n rubygem-json +%{ruby_libdir}/json* +%{ruby_libarchdir}/json* +%{_libdir}/gems/%{name}/json-%{json_version} +%{gem_dir}/gems/json-%{json_version} +%{gem_dir}/specifications/json-%{json_version}.gemspec + +%files -n rubygem-psych +%{ruby_libdir}/psych +%{ruby_libdir}/psych.rb +%{ruby_libarchdir}/psych.so +%{_libdir}/gems/%{name}/psych-%{psych_version} +%dir %{gem_dir}/gems/psych-%{psych_version} +%{gem_dir}/gems/psych-%{psych_version}/lib +%{gem_dir}/specifications/psych-%{psych_version}.gemspec + %files -n rubygem-bundler %{_bindir}/bundle %{_bindir}/bundler @@ -1011,7 +1302,6 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %license %{gem_dir}/gems/net-ftp-%{net_ftp_version}/LICENSE.txt %doc %{gem_dir}/gems/net-ftp-%{net_ftp_version}/README.md %{gem_dir}/gems/net-ftp-%{net_ftp_version}/Rakefile -%{gem_dir}/gems/net-ftp-%{net_ftp_version}/bin %{gem_dir}/gems/net-ftp-%{net_ftp_version}/lib %{gem_dir}/specifications/net-ftp-%{net_ftp_version}.gemspec @@ -1020,7 +1310,10 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %license %{gem_dir}/gems/net-imap-%{net_imap_version}/LICENSE.txt %doc %{gem_dir}/gems/net-imap-%{net_imap_version}/README.md %{gem_dir}/gems/net-imap-%{net_imap_version}/Rakefile +%{gem_dir}/gems/net-imap-%{net_imap_version}/benchmarks +%{gem_dir}/gems/net-imap-%{net_imap_version}/docs %{gem_dir}/gems/net-imap-%{net_imap_version}/lib +%{gem_dir}/gems/net-imap-%{net_imap_version}/rakelib %{gem_dir}/specifications/net-imap-%{net_imap_version}.gemspec %dir %{gem_dir}/gems/net-pop-%{net_pop_version} @@ -1028,7 +1321,6 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %license %{gem_dir}/gems/net-pop-%{net_pop_version}/LICENSE.txt %doc %{gem_dir}/gems/net-pop-%{net_pop_version}/README.md %{gem_dir}/gems/net-pop-%{net_pop_version}/Rakefile -%{gem_dir}/gems/net-pop-%{net_pop_version}/bin %{gem_dir}/gems/net-pop-%{net_pop_version}/lib %{gem_dir}/specifications/net-pop-%{net_pop_version}.gemspec @@ -1051,96 +1343,6 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{gem_dir}/gems/prime-%{prime_version}/lib %{gem_dir}/specifications/prime-%{prime_version}.gemspec -%files default-gems -%{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.6.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 -%{gem_dir}/specifications/default/digest-3.1.0.gemspec -%{gem_dir}/specifications/default/drb-2.1.0.gemspec -%{gem_dir}/specifications/default/english-0.7.1.gemspec -%{gem_dir}/specifications/default/erb-%{erb_version}.gemspec -%{gem_dir}/specifications/default/error_highlight-0.3.0.gemspec -%{gem_dir}/specifications/default/etc-1.3.0.gemspec -%{gem_dir}/specifications/default/fcntl-1.0.1.gemspec -%{gem_dir}/specifications/default/fiddle-1.1.0.gemspec -%{gem_dir}/specifications/default/fileutils-1.6.0.gemspec -%{gem_dir}/specifications/default/find-0.1.1.gemspec -%{gem_dir}/specifications/default/forwardable-1.3.2.gemspec -%{gem_dir}/specifications/default/getoptlong-0.1.1.gemspec -%{gem_dir}/specifications/default/io-nonblock-0.1.0.gemspec -%{gem_dir}/specifications/default/io-wait-0.2.1.gemspec -%{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.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 -%{gem_dir}/specifications/default/open3-0.1.1.gemspec -%{gem_dir}/specifications/default/open-uri-0.2.0.gemspec -%{gem_dir}/specifications/default/optparse-0.2.0.gemspec -%{gem_dir}/specifications/default/openssl-%{openssl_version}.gemspec -%{gem_dir}/specifications/default/ostruct-0.5.2.gemspec -%{gem_dir}/specifications/default/pathname-0.2.0.gemspec -%{gem_dir}/specifications/default/pp-0.3.0.gemspec -%{gem_dir}/specifications/default/prettyprint-0.1.1.gemspec -%{gem_dir}/specifications/default/pstore-0.1.1.gemspec -%{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.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.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 -%{gem_dir}/specifications/default/stringio-%{stringio_version}.gemspec -%{gem_dir}/specifications/default/strscan-3.0.1.gemspec -%{gem_dir}/specifications/default/syslog-0.1.0.gemspec -%{gem_dir}/specifications/default/tempfile-0.1.2.gemspec -%{gem_dir}/specifications/default/time-0.2.2.gemspec -%{gem_dir}/specifications/default/timeout-0.2.0.gemspec -%{gem_dir}/specifications/default/tmpdir-0.1.2.gemspec -%{gem_dir}/specifications/default/tsort-0.1.0.gemspec -%{gem_dir}/specifications/default/un-0.2.0.gemspec -%{gem_dir}/specifications/default/uri-0.12.2.gemspec -%{gem_dir}/specifications/default/weakref-0.1.1.gemspec -%{gem_dir}/specifications/default/yaml-0.2.0.gemspec -%{gem_dir}/specifications/default/zlib-2.1.1.gemspec -%{gem_dir}/gems/erb-%{erb_version} -%exclude %{_bindir}/racc -%exclude %{gem_dir}/gems/racc-%{racc_version}/bin - -%files -n rubygem-io-console -%{ruby_libdir}/io -%{ruby_libarchdir}/io/console.so -%{_libdir}/gems/%{name}/io-console-%{io_console_version} -%{gem_dir}/gems/io-console-%{io_console_version} -%{gem_dir}/specifications/io-console-%{io_console_version}.gemspec - -%files -n rubygem-irb -%{_bindir}/irb -%{ruby_libdir}/irb* -%{gem_dir}/gems/irb-%{irb_version} -%{gem_dir}/specifications/irb-%{irb_version}.gemspec -%{_mandir}/man1/irb.1* - -%files -n rubygem-json -%{ruby_libdir}/json* -%{ruby_libarchdir}/json* -%{_libdir}/gems/%{name}/json-%{json_version} -%{gem_dir}/gems/json-%{json_version} -%{gem_dir}/specifications/json-%{json_version}.gemspec - - %files -n rubygem-minitest %dir %{gem_dir}/gems/minitest-%{minitest_version} %exclude %{gem_dir}/gems/minitest-%{minitest_version}/.* @@ -1165,22 +1367,6 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %doc %{gem_dir}/gems/power_assert-%{power_assert_version}/README.md %{gem_dir}/gems/power_assert-%{power_assert_version}/Rakefile -%files -n rubygem-psych -%{ruby_libdir}/psych -%{ruby_libdir}/psych.rb -%{ruby_libarchdir}/psych.so -%{_libdir}/gems/%{name}/psych-%{psych_version} -%dir %{gem_dir}/gems/psych-%{psych_version} -%{gem_dir}/gems/psych-%{psych_version}/lib -%{gem_dir}/specifications/psych-%{psych_version}.gemspec - -%files -n rubygem-rdoc -%{_bindir}/rdoc -%{_bindir}/ri -%{gem_dir}/gems/rdoc-%{rdoc_version} -%{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec -%{_mandir}/man1/ri* - %files -n rubygem-rake %{_bindir}/rake %{gem_dir}/gems/rake-%{rake_version} @@ -1212,6 +1398,18 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %{gem_dir}/gems/rbs-%{rbs_version}/steep %{gem_dir}/specifications/rbs-%{rbs_version}.gemspec +%files -n rubygem-test-unit +%dir %{gem_dir}/gems/test-unit-%{test_unit_version} +%license %{gem_dir}/gems/test-unit-%{test_unit_version}/BSDL +%license %{gem_dir}/gems/test-unit-%{test_unit_version}/COPYING +%license %{gem_dir}/gems/test-unit-%{test_unit_version}/PSFL +%{gem_dir}/gems/test-unit-%{test_unit_version}/lib +%{gem_dir}/gems/test-unit-%{test_unit_version}/sample +%{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec +%doc %{gem_dir}/gems/test-unit-%{test_unit_version}/README.md +%{gem_dir}/gems/test-unit-%{test_unit_version}/Rakefile +%doc %{gem_dir}/gems/test-unit-%{test_unit_version}/doc + %files -n rubygem-rexml %dir %{gem_dir}/gems/rexml-%{rexml_version} %license %{gem_dir}/gems/rexml-%{rexml_version}/LICENSE.txt @@ -1247,24 +1445,13 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/TestWeakMap#test_compaction_bug_19529/" %doc %{gem_dir}/gems/typeprof-%{typeprof_version}/README.md %doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Rakefile -%files -n rubygem-test-unit -%dir %{gem_dir}/gems/test-unit-%{test_unit_version} -%license %{gem_dir}/gems/test-unit-%{test_unit_version}/BSDL -%license %{gem_dir}/gems/test-unit-%{test_unit_version}/COPYING -%license %{gem_dir}/gems/test-unit-%{test_unit_version}/PSFL -%{gem_dir}/gems/test-unit-%{test_unit_version}/lib -%{gem_dir}/gems/test-unit-%{test_unit_version}/sample -%{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec -%doc %{gem_dir}/gems/test-unit-%{test_unit_version}/README.md -%{gem_dir}/gems/test-unit-%{test_unit_version}/Rakefile -%doc %{gem_dir}/gems/test-unit-%{test_unit_version}/doc - -%files doc -f .ruby-doc.en -f .ruby-doc.ja -%doc README.md ChangeLog NEWS.md -%{?with_systemtap:%doc ruby-exercise.stp} -%{_datadir}/ri %changelog +* Thu Oct 19 2023 mgb01105731 - 3.2.2-10 +- update to 3.2.2 and fix CVE-2023-22795 +- rewrite Fix CVE-2023-36617 +- change json version + * Thu Jul 13 2023 Funda Wang - 3.1.4-9 - Fix CVE-2023-36617