Upgrade to Ruby 3.1.3.
This commit is contained in:
parent
1d0c071aeb
commit
649a6e3083
@ -11,11 +11,11 @@ diff --git a/lib/mkmf.rb b/lib/mkmf.rb
|
|||||||
index 682eb46..e6b1445 100644
|
index 682eb46..e6b1445 100644
|
||||||
--- a/lib/mkmf.rb
|
--- a/lib/mkmf.rb
|
||||||
+++ b/lib/mkmf.rb
|
+++ b/lib/mkmf.rb
|
||||||
@@ -1974,7 +1974,7 @@ def configuration(srcdir)
|
@@ -1971,7 +1971,7 @@ def configuration(srcdir)
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
||||||
# V=0 quiet, V=1 verbose. other values don't work.
|
# V=0 quiet, V=1 verbose. other values don't work.
|
||||||
-V = 0
|
-V = #{CONFIG['MKMF_VERBOSE']}
|
||||||
+V = 1
|
+V = 1
|
||||||
V0 = $(V:0=)
|
V0 = $(V:0=)
|
||||||
Q1 = $(V:1=)
|
Q1 = $(V:1=)
|
||||||
|
@ -11,7 +11,7 @@ diff --git a/configure.ac b/configure.ac
|
|||||||
index d261ea57b5..3c13076b82 100644
|
index d261ea57b5..3c13076b82 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3368,6 +3368,11 @@ AS_IF([test ${multiarch+set}], [
|
@@ -3374,6 +3374,11 @@ AS_IF([test ${multiarch+set}], [
|
||||||
])
|
])
|
||||||
|
|
||||||
archlibdir='${libdir}/${arch}'
|
archlibdir='${libdir}/${arch}'
|
||||||
|
@ -14,7 +14,7 @@ diff --git a/configure.ac b/configure.ac
|
|||||||
index c42436c23d..d261ea57b5 100644
|
index c42436c23d..d261ea57b5 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -4026,7 +4026,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
@@ -4032,7 +4032,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
||||||
ruby_version_dir=/'${ruby_version_dir_name}'
|
ruby_version_dir=/'${ruby_version_dir_name}'
|
||||||
|
|
||||||
if test -z "${ruby_version_dir_name}"; then
|
if test -z "${ruby_version_dir_name}"; then
|
||||||
|
@ -11,7 +11,7 @@ diff --git a/configure.ac b/configure.ac
|
|||||||
index 3c13076b82..93af30321d 100644
|
index 3c13076b82..93af30321d 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -4090,6 +4090,8 @@ AC_SUBST(vendorarchdir)dnl
|
@@ -4096,6 +4096,8 @@ AC_SUBST(vendorarchdir)dnl
|
||||||
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
||||||
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
|
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ diff --git a/configure.ac b/configure.ac
|
|||||||
index 93af30321d..bc13397e0e 100644
|
index 93af30321d..bc13397e0e 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -4062,6 +4062,10 @@ AC_ARG_WITH(vendorarchdir,
|
@@ -4068,6 +4068,10 @@ AC_ARG_WITH(vendorarchdir,
|
||||||
[vendorarchdir=$withval],
|
[vendorarchdir=$withval],
|
||||||
[vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])
|
[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}"], [
|
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||||
RUBY_EXEC_PREFIX=''
|
RUBY_EXEC_PREFIX=''
|
||||||
@@ -4086,6 +4090,7 @@ AC_SUBST(sitearchdir)dnl
|
@@ -4092,6 +4096,7 @@ AC_SUBST(sitearchdir)dnl
|
||||||
AC_SUBST(vendordir)dnl
|
AC_SUBST(vendordir)dnl
|
||||||
AC_SUBST(vendorlibdir)dnl
|
AC_SUBST(vendorlibdir)dnl
|
||||||
AC_SUBST(vendorarchdir)dnl
|
AC_SUBST(vendorarchdir)dnl
|
||||||
|
@ -20,7 +20,7 @@ diff --git a/configure.ac b/configure.ac
|
|||||||
index 80b137e380..63cd3b4f8b 100644
|
index 80b137e380..63cd3b4f8b 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3977,9 +3977,6 @@ AS_CASE(["$target_os"],
|
@@ -3983,9 +3983,6 @@ AS_CASE(["$target_os"],
|
||||||
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
|
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ index 80b137e380..63cd3b4f8b 100644
|
|||||||
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
|
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
|
||||||
AC_ARG_WITH(rubyarchprefix,
|
AC_ARG_WITH(rubyarchprefix,
|
||||||
AS_HELP_STRING([--with-rubyarchprefix=DIR],
|
AS_HELP_STRING([--with-rubyarchprefix=DIR],
|
||||||
@@ -4002,56 +3999,62 @@ AC_ARG_WITH(ridir,
|
@@ -4008,56 +4005,62 @@ AC_ARG_WITH(ridir,
|
||||||
AC_SUBST(ridir)
|
AC_SUBST(ridir)
|
||||||
AC_SUBST(RI_BASE_NAME)
|
AC_SUBST(RI_BASE_NAME)
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ index 80b137e380..63cd3b4f8b 100644
|
|||||||
|
|
||||||
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||||
@@ -4068,6 +4071,7 @@ AC_SUBST(sitearchincludedir)dnl
|
@@ -4074,6 +4077,7 @@ AC_SUBST(sitearchincludedir)dnl
|
||||||
AC_SUBST(arch)dnl
|
AC_SUBST(arch)dnl
|
||||||
AC_SUBST(sitearch)dnl
|
AC_SUBST(sitearch)dnl
|
||||||
AC_SUBST(ruby_version)dnl
|
AC_SUBST(ruby_version)dnl
|
||||||
@ -202,8 +202,8 @@ index d4ff4a262c..3f9a5bf590 100644
|
|||||||
# specified in the environment
|
# specified in the environment
|
||||||
|
|
||||||
def self.default_dir
|
def self.default_dir
|
||||||
- @default_dir ||= File.join(RbConfig::CONFIG['rubylibprefix'], 'gems', RbConfig::CONFIG['ruby_version'])
|
- @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"])
|
||||||
+ @default_dir ||= File.join(RbConfig::CONFIG['rubylibprefix'], 'gems', RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'])
|
+ @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"])
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
@ -211,18 +211,18 @@ index d4ff4a262c..3f9a5bf590 100644
|
|||||||
gem_dir = File.join(Gem.user_home, ".gem")
|
gem_dir = File.join(Gem.user_home, ".gem")
|
||||||
gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
|
gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
|
||||||
parts = [gem_dir, ruby_engine]
|
parts = [gem_dir, ruby_engine]
|
||||||
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
|
- parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?
|
||||||
+ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
+ ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]
|
||||||
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
|
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
|
||||||
File.join parts
|
File.join parts
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -234,7 +235,7 @@ def self.vendor_dir # :nodoc:
|
@@ -234,7 +235,7 @@ def self.vendor_dir # :nodoc:
|
||||||
return nil unless RbConfig::CONFIG.key? 'vendordir'
|
return nil unless RbConfig::CONFIG.key? "vendordir"
|
||||||
|
|
||||||
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
File.join RbConfig::CONFIG["vendordir"], "gems",
|
||||||
- RbConfig::CONFIG['ruby_version']
|
- RbConfig::CONFIG["ruby_version"]
|
||||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
+ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
@ -230,22 +230,22 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
|
|||||||
index b25068405d..e9fef4a311 100644
|
index b25068405d..e9fef4a311 100644
|
||||||
--- a/test/rubygems/test_gem.rb
|
--- a/test/rubygems/test_gem.rb
|
||||||
+++ b/test/rubygems/test_gem.rb
|
+++ b/test/rubygems/test_gem.rb
|
||||||
@@ -1410,7 +1410,8 @@ def test_self_use_paths
|
@@ -1395,7 +1395,8 @@ def test_self_use_paths
|
||||||
|
|
||||||
def test_self_user_dir
|
def test_self_user_dir
|
||||||
parts = [@userhome, '.gem', Gem.ruby_engine]
|
parts = [@userhome, ".gem", Gem.ruby_engine]
|
||||||
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
|
- parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?
|
||||||
+ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
+ ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]
|
||||||
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
|
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
|
||||||
|
|
||||||
FileUtils.mkdir_p File.join(parts)
|
FileUtils.mkdir_p File.join(parts)
|
||||||
|
|
||||||
@@ -1486,7 +1487,7 @@ def test_self_vendor_dir
|
@@ -1471,7 +1472,7 @@ def test_self_vendor_dir
|
||||||
vendordir(File.join(@tempdir, 'vendor')) do
|
vendordir(File.join(@tempdir, "vendor")) do
|
||||||
expected =
|
expected =
|
||||||
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
File.join RbConfig::CONFIG["vendordir"], "gems",
|
||||||
- RbConfig::CONFIG['ruby_version']
|
- RbConfig::CONFIG["ruby_version"]
|
||||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
+ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]
|
||||||
|
|
||||||
assert_equal expected, Gem.vendor_dir
|
assert_equal expected, Gem.vendor_dir
|
||||||
end
|
end
|
||||||
@ -267,7 +267,7 @@ diff --git a/configure.ac b/configure.ac
|
|||||||
index a00f2b6776..999e2d6d5d 100644
|
index a00f2b6776..999e2d6d5d 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -108,7 +108,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
|
@@ -115,7 +115,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
|
||||||
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
|
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
|
||||||
AC_SUBST(RUBY_BASE_NAME)
|
AC_SUBST(RUBY_BASE_NAME)
|
||||||
AC_SUBST(RUBYW_BASE_NAME)
|
AC_SUBST(RUBYW_BASE_NAME)
|
||||||
|
@ -45,7 +45,7 @@ index b2e5b2b6d0..f39f81da5c 100644
|
|||||||
+++ b/common.mk
|
+++ b/common.mk
|
||||||
@@ -82,7 +82,8 @@ ENC_MK = enc.mk
|
@@ -82,7 +82,8 @@ ENC_MK = enc.mk
|
||||||
MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
|
MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
|
||||||
RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)
|
RUBY="$(BOOTSTRAPRUBY)" MINIRUBY="$(BOOTSTRAPRUBY)" $(mflags)
|
||||||
|
|
||||||
-COMMONOBJS = array.$(OBJEXT) \
|
-COMMONOBJS = array.$(OBJEXT) \
|
||||||
+COMMONOBJS = abrt.$(OBJEXT) \
|
+COMMONOBJS = abrt.$(OBJEXT) \
|
||||||
@ -57,7 +57,7 @@ diff --git a/ruby.c b/ruby.c
|
|||||||
index 60c57d6259..1eec16f2c8 100644
|
index 60c57d6259..1eec16f2c8 100644
|
||||||
--- a/ruby.c
|
--- a/ruby.c
|
||||||
+++ b/ruby.c
|
+++ b/ruby.c
|
||||||
@@ -1611,10 +1611,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)
|
@@ -1623,10 +1623,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)
|
||||||
|
|
||||||
void Init_builtin_features(void);
|
void Init_builtin_features(void);
|
||||||
|
|
||||||
|
@ -1,338 +0,0 @@
|
|||||||
From 111f8422427d78becc9183ae149b2105a16bf327 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
||||||
Date: Tue, 5 Apr 2022 23:24:00 +0900
|
|
||||||
Subject: [PATCH 1/5] Bundled gems are expanded under `.bundle/gems` now
|
|
||||||
|
|
||||||
---
|
|
||||||
ext/extmk.rb | 13 +++++++------
|
|
||||||
template/exts.mk.tmpl | 2 +-
|
|
||||||
2 files changed, 8 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/ext/extmk.rb b/ext/extmk.rb
|
|
||||||
index 4a087f294ac9..1da9e2704521 100755
|
|
||||||
--- a/ext/extmk.rb
|
|
||||||
+++ b/ext/extmk.rb
|
|
||||||
@@ -146,7 +146,7 @@ def extmake(target, basedir = 'ext', maybestatic = true)
|
|
||||||
top_srcdir = $top_srcdir
|
|
||||||
topdir = $topdir
|
|
||||||
hdrdir = $hdrdir
|
|
||||||
- prefix = "../" * (target.count("/")+1)
|
|
||||||
+ prefix = "../" * (basedir.count("/")+target.count("/")+1)
|
|
||||||
$top_srcdir = relative_from(top_srcdir, prefix)
|
|
||||||
$hdrdir = relative_from(hdrdir, prefix)
|
|
||||||
$topdir = prefix + $topdir
|
|
||||||
@@ -460,10 +460,11 @@ def $mflags.defined?(var)
|
|
||||||
end unless $extstatic
|
|
||||||
|
|
||||||
@gemname = nil
|
|
||||||
-if ARGV[0]
|
|
||||||
- ext_prefix, exts = ARGV.shift.split('/', 2)
|
|
||||||
+if exts = ARGV.shift
|
|
||||||
+ ext_prefix = exts[%r[\A(?>\.bundle/)?[^/]+(?:/(?=(.+)?)|\z)]]
|
|
||||||
+ exts = $1
|
|
||||||
$extension = [exts] if exts
|
|
||||||
- if ext_prefix == 'gems'
|
|
||||||
+ if ext_prefix.start_with?('.')
|
|
||||||
@gemname = exts
|
|
||||||
elsif exts
|
|
||||||
$static_ext.delete_if {|t, *| !File.fnmatch(t, exts)}
|
|
||||||
@@ -515,7 +516,7 @@ def $mflags.defined?(var)
|
|
||||||
exts.delete_if {|d| File.fnmatch?("-*", d)}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-ext_prefix = File.basename(ext_prefix)
|
|
||||||
+ext_prefix = ext_prefix[$top_srcdir.size+1..-2]
|
|
||||||
|
|
||||||
extend Module.new {
|
|
||||||
def timestamp_file(name, target_prefix = nil)
|
|
||||||
@@ -634,7 +635,7 @@ def initialize(src)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
-Dir.chdir ".."
|
|
||||||
+Dir.chdir dir
|
|
||||||
unless $destdir.to_s.empty?
|
|
||||||
$mflags.defined?("DESTDIR") or $mflags << "DESTDIR=#{$destdir}"
|
|
||||||
end
|
|
||||||
diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl
|
|
||||||
index 2f37f4480ac5..964939e365a1 100644
|
|
||||||
--- a/template/exts.mk.tmpl
|
|
||||||
+++ b/template/exts.mk.tmpl
|
|
||||||
@@ -25,7 +25,7 @@ macros["old_extensions"] = []
|
|
||||||
|
|
||||||
contpat = /(?>(?>[^\\\n]|\\.)*\\\n)*(?>[^\\\n]|\\.)*/
|
|
||||||
Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
|
|
||||||
- gem = /\Agems(?=\/)/ =~ e
|
|
||||||
+ gem = e.start_with?(".bundle/gems/")
|
|
||||||
s = File.read(e)
|
|
||||||
s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|
|
|
||||||
v.gsub!(/\\\n[ \t]*/, ' ')
|
|
||||||
|
|
||||||
From 6ea34cac22131d28a9cc50e7875e854aed9bdb88 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
||||||
Date: Wed, 6 Apr 2022 20:25:53 +0900
|
|
||||||
Subject: [PATCH 2/5] Retrieve configured gems info
|
|
||||||
|
|
||||||
---
|
|
||||||
template/configure-ext.mk.tmpl | 2 +-
|
|
||||||
template/exts.mk.tmpl | 4 ++--
|
|
||||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/template/configure-ext.mk.tmpl b/template/configure-ext.mk.tmpl
|
|
||||||
index 6636a7759c54..8ba6b963e3ec 100644
|
|
||||||
--- a/template/configure-ext.mk.tmpl
|
|
||||||
+++ b/template/configure-ext.mk.tmpl
|
|
||||||
@@ -27,7 +27,7 @@ SCRIPT_ARGS = <%=script_args.gsub("#", "\\#")%>
|
|
||||||
EXTMK_ARGS = $(SCRIPT_ARGS) --gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \
|
|
||||||
--make-flags="MINIRUBY='$(MINIRUBY)'"
|
|
||||||
|
|
||||||
-all: exts # gems
|
|
||||||
+all: exts gems
|
|
||||||
exts:
|
|
||||||
gems:
|
|
||||||
|
|
||||||
diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl
|
|
||||||
index 964939e365a1..e544c4c88bd7 100644
|
|
||||||
--- a/template/exts.mk.tmpl
|
|
||||||
+++ b/template/exts.mk.tmpl
|
|
||||||
@@ -19,7 +19,7 @@ opt = OptionParser.new do |o|
|
|
||||||
o.on('--configure-exts=FILE') {|v| confexts = v}
|
|
||||||
o.order!(ARGV)
|
|
||||||
end
|
|
||||||
-confexts &&= File.read(confexts).scan(/^exts: (.*\.mk)/).flatten rescue nil
|
|
||||||
+confexts &&= File.read(confexts).scan(/^(?:ext|gem)s: (.*\.mk)/).flatten rescue nil
|
|
||||||
confexts ||= []
|
|
||||||
macros["old_extensions"] = []
|
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
|
|
||||||
s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|
|
|
||||||
v.gsub!(/\\\n[ \t]*/, ' ')
|
|
||||||
next if v.empty?
|
|
||||||
- next if gem and n != "extensions"
|
|
||||||
+ next if n != "extensions"
|
|
||||||
n = "old_extensions" if n == "extensions" and !confexts.include?(e)
|
|
||||||
v = v.split
|
|
||||||
m = macros[n] ||= []
|
|
||||||
|
|
||||||
From be9d00ee7c72766551ba8c3530f1538034498a6a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
||||||
Date: Wed, 6 Apr 2022 20:28:00 +0900
|
|
||||||
Subject: [PATCH 3/5] Move the target directory of bundled gems like as
|
|
||||||
rubygems
|
|
||||||
|
|
||||||
---
|
|
||||||
ext/extmk.rb | 6 +++++-
|
|
||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/ext/extmk.rb b/ext/extmk.rb
|
|
||||||
index 1da9e2704521..a440af27fc5d 100755
|
|
||||||
--- a/ext/extmk.rb
|
|
||||||
+++ b/ext/extmk.rb
|
|
||||||
@@ -2,6 +2,9 @@
|
|
||||||
# -*- mode: ruby; coding: us-ascii -*-
|
|
||||||
# frozen_string_literal: false
|
|
||||||
|
|
||||||
+module Gem; end # only needs Gem::Platform
|
|
||||||
+require 'rubygems/platform'
|
|
||||||
+
|
|
||||||
# :stopdoc:
|
|
||||||
$extension = nil
|
|
||||||
$extstatic = nil
|
|
||||||
@@ -535,11 +538,12 @@ def create_makefile(*args, &block)
|
|
||||||
super(*args) do |conf|
|
|
||||||
conf.find do |s|
|
|
||||||
s.sub!(/^(TARGET_SO_DIR *= *)\$\(RUBYARCHDIR\)/) {
|
|
||||||
- "TARGET_GEM_DIR = $(extout)/gems/$(arch)/#{@gemname}\n"\
|
|
||||||
+ "TARGET_GEM_DIR = $(topdir)/.bundle/extensions/$(gem_platform)/$(ruby_version)/#{@gemname}\n"\
|
|
||||||
"#{$1}$(TARGET_GEM_DIR)$(target_prefix)"
|
|
||||||
}
|
|
||||||
end
|
|
||||||
conf.any? {|s| /^TARGET *= *\S/ =~ s} and conf << %{
|
|
||||||
+gem_platform = #{Gem::Platform.local}
|
|
||||||
|
|
||||||
# default target
|
|
||||||
all:
|
|
||||||
|
|
||||||
From c4daf8e445925695c34bab8bf5135dcd1e8575a3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
||||||
Date: Wed, 6 Apr 2022 22:57:01 +0900
|
|
||||||
Subject: [PATCH 4/5] Obey spec file locations to rubygems
|
|
||||||
|
|
||||||
---
|
|
||||||
common.mk | 3 ++-
|
|
||||||
defs/gmake.mk | 2 +-
|
|
||||||
tool/gem-unpack.rb | 5 +++--
|
|
||||||
3 files changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/common.mk b/common.mk
|
|
||||||
index 7c552cba1e04..b4adb2729c0e 100644
|
|
||||||
--- a/common.mk
|
|
||||||
+++ b/common.mk
|
|
||||||
@@ -1359,10 +1359,11 @@ extract-gems$(gnumake:yes=-nongnumake): PHONY
|
|
||||||
$(Q) $(RUNRUBY) -C "$(srcdir)" \
|
|
||||||
-Itool -rgem-unpack -answ \
|
|
||||||
-e 'BEGIN {FileUtils.mkdir_p(d = ".bundle/gems")}' \
|
|
||||||
+ -e 'BEGIN {FileUtils.mkdir_p(s = ".bundle/specifications")}' \
|
|
||||||
-e 'gem, ver = *$$F' \
|
|
||||||
-e 'next if !ver or /^#/=~gem' \
|
|
||||||
-e 'g = "#{gem}-#{ver}"' \
|
|
||||||
- -e 'File.directory?("#{d}/#{g}") or Gem.unpack("gems/#{g}.gem", d)' \
|
|
||||||
+ -e 'File.directory?("#{d}/#{g}") or Gem.unpack("gems/#{g}.gem", d, s)' \
|
|
||||||
gems/bundled_gems
|
|
||||||
|
|
||||||
update-bundled_gems: PHONY
|
|
||||||
diff --git a/defs/gmake.mk b/defs/gmake.mk
|
|
||||||
index a625379a6804..27e3e21cc4d6 100644
|
|
||||||
--- a/defs/gmake.mk
|
|
||||||
+++ b/defs/gmake.mk
|
|
||||||
@@ -290,7 +290,7 @@ extract-gems: | $(patsubst %,.bundle/gems/%,$(bundled-gems))
|
|
||||||
$(ECHO) Extracting bundle gem $*...
|
|
||||||
$(Q) $(BASERUBY) -C "$(srcdir)" \
|
|
||||||
-Itool -rgem-unpack \
|
|
||||||
- -e 'Gem.unpack("gems/$(@F).gem", ".bundle/gems")'
|
|
||||||
+ -e 'Gem.unpack("gems/$(@F).gem", ".bundle/gems", ".bundle/specifications")'
|
|
||||||
|
|
||||||
$(srcdir)/.bundle/gems:
|
|
||||||
$(MAKEDIRS) $@
|
|
||||||
diff --git a/tool/gem-unpack.rb b/tool/gem-unpack.rb
|
|
||||||
index cb05719463f2..fe10b0e420fa 100644
|
|
||||||
--- a/tool/gem-unpack.rb
|
|
||||||
+++ b/tool/gem-unpack.rb
|
|
||||||
@@ -5,13 +5,14 @@
|
|
||||||
# This library is used by "make extract-gems" to
|
|
||||||
# unpack bundled gem files.
|
|
||||||
|
|
||||||
-def Gem.unpack(file, dir = nil)
|
|
||||||
+def Gem.unpack(file, dir = nil, spec_dir = nil)
|
|
||||||
pkg = Gem::Package.new(file)
|
|
||||||
spec = pkg.spec
|
|
||||||
target = spec.full_name
|
|
||||||
target = File.join(dir, target) if dir
|
|
||||||
pkg.extract_files target
|
|
||||||
- spec_file = File.join(target, "#{spec.name}-#{spec.version}.gemspec")
|
|
||||||
+ FileUtils.mkdir_p(spec_dir ||= target)
|
|
||||||
+ spec_file = File.join(spec_dir, "#{spec.name}-#{spec.version}.gemspec")
|
|
||||||
open(spec_file, 'wb') do |f|
|
|
||||||
f.print spec.to_ruby
|
|
||||||
end
|
|
||||||
|
|
||||||
From 3de652d8198be9cd2998c095903889a80e738275 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
||||||
Date: Thu, 7 Apr 2022 01:44:43 +0900
|
|
||||||
Subject: [PATCH 5/5] Install built gem extension binaries
|
|
||||||
|
|
||||||
---
|
|
||||||
tool/rbinstall.rb | 56 ++++++++++++++---------------------------------
|
|
||||||
1 file changed, 16 insertions(+), 40 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
|
||||||
index 9d9b672be472..624961b4eee6 100755
|
|
||||||
--- a/tool/rbinstall.rb
|
|
||||||
+++ b/tool/rbinstall.rb
|
|
||||||
@@ -858,6 +858,9 @@ class UnpackedInstaller < GemInstaller
|
|
||||||
def write_cache_file
|
|
||||||
end
|
|
||||||
|
|
||||||
+ def build_extensions
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
def shebang(bin_file_name)
|
|
||||||
path = File.join(gem_dir, spec.bindir, bin_file_name)
|
|
||||||
first_line = File.open(path, "rb") {|file| file.gets}
|
|
||||||
@@ -940,13 +943,12 @@ def ensure_writable_dir(dir)
|
|
||||||
install_default_gem('ext', srcdir, bindir)
|
|
||||||
end
|
|
||||||
|
|
||||||
-def load_gemspec(file, expanded = false)
|
|
||||||
+def load_gemspec(file, base = nil)
|
|
||||||
file = File.realpath(file)
|
|
||||||
code = File.read(file, encoding: "utf-8:-")
|
|
||||||
code.gsub!(/(?:`git[^\`]*`|%x\[git[^\]]*\])\.split\([^\)]*\)/m) do
|
|
||||||
files = []
|
|
||||||
- if expanded
|
|
||||||
- base = File.dirname(file)
|
|
||||||
+ if base
|
|
||||||
Dir.glob("**/*", File::FNM_DOTMATCH, base: base) do |n|
|
|
||||||
case File.basename(n); when ".", ".."; next; end
|
|
||||||
next if File.directory?(File.join(base, n))
|
|
||||||
@@ -959,7 +961,7 @@ def load_gemspec(file, expanded = false)
|
|
||||||
unless Gem::Specification === spec
|
|
||||||
raise TypeError, "[#{file}] isn't a Gem::Specification (#{spec.class} instead)."
|
|
||||||
end
|
|
||||||
- spec.loaded_from = file
|
|
||||||
+ spec.loaded_from = base ? File.join(base, File.basename(file)) : file
|
|
||||||
spec.files.reject! {|n| n.end_with?(".gemspec") or n.start_with?(".git")}
|
|
||||||
|
|
||||||
spec
|
|
||||||
@@ -1014,20 +1016,6 @@ def install_default_gem(dir, srcdir, bindir)
|
|
||||||
end
|
|
||||||
|
|
||||||
install?(:ext, :comm, :gem, :'bundled-gems') do
|
|
||||||
- if CONFIG['CROSS_COMPILING'] == 'yes'
|
|
||||||
- # The following hacky steps set "$ruby = BASERUBY" in tool/fake.rb
|
|
||||||
- $hdrdir = ''
|
|
||||||
- $extmk = nil
|
|
||||||
- $ruby = nil # ...
|
|
||||||
- ruby_path = $ruby + " -I#{Dir.pwd}" # $baseruby + " -I#{Dir.pwd}"
|
|
||||||
- else
|
|
||||||
- # ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name)))
|
|
||||||
- ENV['RUBYLIB'] = nil
|
|
||||||
- ENV['RUBYOPT'] = nil
|
|
||||||
- ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name))) + " --disable=gems -I#{with_destdir(archlibdir)}"
|
|
||||||
- end
|
|
||||||
- Gem.instance_variable_set(:@ruby, ruby_path) if Gem.ruby != ruby_path
|
|
||||||
-
|
|
||||||
gem_dir = Gem.default_dir
|
|
||||||
install_dir = with_destdir(gem_dir)
|
|
||||||
prepare "bundled gems", gem_dir
|
|
||||||
@@ -1047,40 +1035,28 @@ def install_default_gem(dir, srcdir, bindir)
|
|
||||||
:wrappers => true,
|
|
||||||
:format_executable => true,
|
|
||||||
}
|
|
||||||
- gem_ext_dir = "#$extout/gems/#{CONFIG['arch']}"
|
|
||||||
- extensions_dir = with_destdir(Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir)
|
|
||||||
+
|
|
||||||
+ extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir
|
|
||||||
+ specifications_dir = File.join(gem_dir, "specifications")
|
|
||||||
+ build_dir = Gem::StubSpecification.gemspec_stub("", ".bundle", ".bundle").extensions_dir
|
|
||||||
|
|
||||||
File.foreach("#{srcdir}/gems/bundled_gems") do |name|
|
|
||||||
next if /^\s*(?:#|$)/ =~ name
|
|
||||||
next unless /^(\S+)\s+(\S+).*/ =~ name
|
|
||||||
gem_name = "#$1-#$2"
|
|
||||||
- path = "#{srcdir}/.bundle/gems/#{gem_name}/#{gem_name}.gemspec"
|
|
||||||
- if File.exist?(path)
|
|
||||||
- spec = load_gemspec(path)
|
|
||||||
- else
|
|
||||||
- path = "#{srcdir}/.bundle/gems/#{gem_name}/#$1.gemspec"
|
|
||||||
- next unless File.exist?(path)
|
|
||||||
- spec = load_gemspec(path, true)
|
|
||||||
- end
|
|
||||||
+ path = "#{srcdir}/.bundle/specifications/#{gem_name}.gemspec"
|
|
||||||
+ next unless File.exist?(path)
|
|
||||||
+ spec = load_gemspec(path, "#{srcdir}/.bundle/gems/#{gem_name}")
|
|
||||||
next unless spec.platform == Gem::Platform::RUBY
|
|
||||||
next unless spec.full_name == gem_name
|
|
||||||
- if !spec.extensions.empty? && CONFIG["EXTSTATIC"] == "static"
|
|
||||||
- puts "skip installation of #{spec.name} #{spec.version}; bundled gem with an extension library is not supported on --with-static-linked-ext"
|
|
||||||
- next
|
|
||||||
- end
|
|
||||||
spec.extension_dir = "#{extensions_dir}/#{spec.full_name}"
|
|
||||||
- if File.directory?(ext = "#{gem_ext_dir}/#{spec.full_name}")
|
|
||||||
- spec.extensions[0] ||= "-"
|
|
||||||
- end
|
|
||||||
package = RbInstall::DirPackage.new spec
|
|
||||||
ins = RbInstall::UnpackedInstaller.new(package, options)
|
|
||||||
puts "#{INDENT}#{spec.name} #{spec.version}"
|
|
||||||
ins.install
|
|
||||||
- unless $dryrun
|
|
||||||
- File.chmod($data_mode, File.join(install_dir, "specifications", "#{spec.full_name}.gemspec"))
|
|
||||||
- end
|
|
||||||
- unless spec.extensions.empty?
|
|
||||||
- install_recursive(ext, spec.extension_dir)
|
|
||||||
+ install_recursive("#{build_dir}/#{gem_name}", "#{extensions_dir}/#{gem_name}") do |src, dest|
|
|
||||||
+ # puts "#{INDENT} #{dest[extensions_dir.size+gem_name.size+2..-1]}"
|
|
||||||
+ install src, dest, :mode => (File.executable?(src) ? $prog_mode : $data_mode)
|
|
||||||
end
|
|
||||||
installed_gems[spec.full_name] = true
|
|
||||||
end
|
|
@ -75,7 +75,6 @@ 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.
|
USE_MMAP_ALIGNED_ALLOC with HEAP_PAGE_ALLOC_USE_MMAP, Ruby 3.1.2 doesn't.
|
||||||
See <https://github.com/ruby/ruby/commit/fe21b7794af0cdb7ebd502e2c0da38c68fd89839>.
|
See <https://github.com/ruby/ruby/commit/fe21b7794af0cdb7ebd502e2c0da38c68fd89839>.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
+ rb_define_singleton_method(rb_mGC, "verify_compaction_references", gc_verify_compaction_references, -1);
|
+ rb_define_singleton_method(rb_mGC, "verify_compaction_references", gc_verify_compaction_references, -1);
|
||||||
```
|
```
|
||||||
@ -87,7 +86,6 @@ the case that GC_COMPACTION_SUPPORTED is true, Ruby 3.1.2
|
|||||||
doesn't define it in the gc.rb.
|
doesn't define it in the gc.rb.
|
||||||
See <https://github.com/ruby/ruby/commit/b96a3a6fd2093e1dbea5491c002da515652dd347>.
|
See <https://github.com/ruby/ruby/commit/b96a3a6fd2093e1dbea5491c002da515652dd347>.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
+ OPT(GC_COMPACTION_SUPPORTED);
|
+ OPT(GC_COMPACTION_SUPPORTED);
|
||||||
```
|
```
|
||||||
@ -141,7 +139,7 @@ diff --git a/gc.c b/gc.c
|
|||||||
index 1c35856c44..bff0666a17 100644
|
index 1c35856c44..bff0666a17 100644
|
||||||
--- a/gc.c
|
--- a/gc.c
|
||||||
+++ b/gc.c
|
+++ b/gc.c
|
||||||
@@ -4980,6 +4980,23 @@ gc_unprotect_pages(rb_objspace_t *objspace, rb_heap_t *heap)
|
@@ -4984,6 +4984,23 @@ gc_unprotect_pages(rb_objspace_t *objspace, rb_heap_t *heap)
|
||||||
static void gc_update_references(rb_objspace_t * objspace);
|
static void gc_update_references(rb_objspace_t * objspace);
|
||||||
static void invalidate_moved_page(rb_objspace_t *objspace, struct heap_page *page);
|
static void invalidate_moved_page(rb_objspace_t *objspace, struct heap_page *page);
|
||||||
|
|
||||||
@ -165,7 +163,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
static void
|
static void
|
||||||
read_barrier_handler(uintptr_t address)
|
read_barrier_handler(uintptr_t address)
|
||||||
{
|
{
|
||||||
@@ -5000,6 +5017,7 @@ read_barrier_handler(uintptr_t address)
|
@@ -5004,6 +5021,7 @@ read_barrier_handler(uintptr_t address)
|
||||||
}
|
}
|
||||||
RB_VM_LOCK_LEAVE();
|
RB_VM_LOCK_LEAVE();
|
||||||
}
|
}
|
||||||
@ -173,7 +171,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
static LPTOP_LEVEL_EXCEPTION_FILTER old_handler;
|
static LPTOP_LEVEL_EXCEPTION_FILTER old_handler;
|
||||||
@@ -9250,13 +9268,7 @@ gc_start_internal(rb_execution_context_t *ec, VALUE self, VALUE full_mark, VALUE
|
@@ -9267,13 +9285,7 @@ gc_start_internal(rb_execution_context_t *ec, VALUE self, VALUE full_mark, VALUE
|
||||||
|
|
||||||
/* For now, compact implies full mark / sweep, so ignore other flags */
|
/* For now, compact implies full mark / sweep, so ignore other flags */
|
||||||
if (RTEST(compact)) {
|
if (RTEST(compact)) {
|
||||||
@ -188,7 +186,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
|
|
||||||
reason |= GPR_FLAG_COMPACT;
|
reason |= GPR_FLAG_COMPACT;
|
||||||
}
|
}
|
||||||
@@ -9421,7 +9433,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)
|
@@ -9438,7 +9450,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)
|
||||||
return (VALUE)src;
|
return (VALUE)src;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,7 +195,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
static int
|
static int
|
||||||
compare_free_slots(const void *left, const void *right, void *dummy)
|
compare_free_slots(const void *left, const void *right, void *dummy)
|
||||||
{
|
{
|
||||||
@@ -10149,7 +10161,7 @@ gc_update_references(rb_objspace_t *objspace)
|
@@ -10166,7 +10178,7 @@ gc_update_references(rb_objspace_t *objspace)
|
||||||
gc_update_table_refs(objspace, finalizer_table);
|
gc_update_table_refs(objspace, finalizer_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,7 +204,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}
|
* GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}
|
||||||
@@ -10190,7 +10202,7 @@ gc_compact_stats(VALUE self)
|
@@ -10207,7 +10219,7 @@ gc_compact_stats(VALUE self)
|
||||||
# define gc_compact_stats rb_f_notimplement
|
# define gc_compact_stats rb_f_notimplement
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -215,7 +213,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
static void
|
static void
|
||||||
root_obj_check_moved_i(const char *category, VALUE obj, void *data)
|
root_obj_check_moved_i(const char *category, VALUE obj, void *data)
|
||||||
{
|
{
|
||||||
@@ -10269,7 +10281,7 @@ gc_compact(VALUE self)
|
@@ -10286,7 +10298,7 @@ gc_compact(VALUE self)
|
||||||
# define gc_compact rb_f_notimplement
|
# define gc_compact rb_f_notimplement
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -224,7 +222,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
|
* GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
|
||||||
@@ -10800,7 +10812,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)
|
@@ -10817,7 +10829,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)
|
||||||
return rb_gc_disable();
|
return rb_gc_disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,7 +231,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* GC.auto_compact = flag
|
* GC.auto_compact = flag
|
||||||
@@ -10814,8 +10826,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)
|
@@ -10831,8 +10843,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)
|
||||||
static VALUE
|
static VALUE
|
||||||
gc_set_auto_compact(VALUE _, VALUE v)
|
gc_set_auto_compact(VALUE _, VALUE v)
|
||||||
{
|
{
|
||||||
@ -243,7 +241,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
|
|
||||||
ruby_enable_autocompact = RTEST(v);
|
ruby_enable_autocompact = RTEST(v);
|
||||||
return v;
|
return v;
|
||||||
@@ -10824,7 +10835,8 @@ gc_set_auto_compact(VALUE _, VALUE v)
|
@@ -10841,7 +10852,8 @@ gc_set_auto_compact(VALUE _, VALUE v)
|
||||||
# define gc_set_auto_compact rb_f_notimplement
|
# define gc_set_auto_compact rb_f_notimplement
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -253,7 +251,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* GC.auto_compact -> true or false
|
* GC.auto_compact -> true or false
|
||||||
@@ -13696,11 +13708,21 @@ Init_GC(void)
|
@@ -13714,11 +13726,21 @@ Init_GC(void)
|
||||||
rb_define_singleton_method(rb_mGC, "malloc_allocated_size", gc_malloc_allocated_size, 0);
|
rb_define_singleton_method(rb_mGC, "malloc_allocated_size", gc_malloc_allocated_size, 0);
|
||||||
rb_define_singleton_method(rb_mGC, "malloc_allocations", gc_malloc_allocations, 0);
|
rb_define_singleton_method(rb_mGC, "malloc_allocations", gc_malloc_allocations, 0);
|
||||||
#endif
|
#endif
|
||||||
@ -280,7 +278,7 @@ index 1c35856c44..bff0666a17 100644
|
|||||||
|
|
||||||
#if GC_DEBUG_STRESS_TO_CLASS
|
#if GC_DEBUG_STRESS_TO_CLASS
|
||||||
rb_define_singleton_method(rb_mGC, "add_stress_to_class", rb_gcdebug_add_stress_to_class, -1);
|
rb_define_singleton_method(rb_mGC, "add_stress_to_class", rb_gcdebug_add_stress_to_class, -1);
|
||||||
@@ -13724,6 +13746,7 @@ Init_GC(void)
|
@@ -13742,6 +13764,7 @@ Init_GC(void)
|
||||||
OPT(MALLOC_ALLOCATED_SIZE);
|
OPT(MALLOC_ALLOCATED_SIZE);
|
||||||
OPT(MALLOC_ALLOCATED_SIZE_CHECK);
|
OPT(MALLOC_ALLOCATED_SIZE_CHECK);
|
||||||
OPT(GC_PROFILE_DETAIL_MEMORY);
|
OPT(GC_PROFILE_DETAIL_MEMORY);
|
||||||
|
@ -1,34 +1,31 @@
|
|||||||
commit 6d1ca6737f31b2e24664a093f1827dd74a121a9f
|
From 1b3502156a665e2782f366aa5ac8c3bfd7637ab8 Mon Sep 17 00:00:00 2001
|
||||||
Author: Jarek Prokop <jprokop@redhat.com>
|
From: Mike Dalessio <mike.dalessio@gmail.com>
|
||||||
Date: Thu May 26 11:28:13 2022 +0200
|
Date: Mon, 23 May 2022 15:40:22 -0400
|
||||||
|
Subject: [PATCH 1/2] Move compaction-related methods into gc.c
|
||||||
|
|
||||||
Gc ppc64le fix
|
These methods are removed from gc.rb and added to gc.c:
|
||||||
|
|
||||||
|
- GC.compact
|
||||||
|
- GC.auto_compact
|
||||||
|
- GC.auto_compact=
|
||||||
|
- GC.latest_compact_info
|
||||||
|
- GC.verify_compaction_references
|
||||||
|
|
||||||
|
This is a prefactor to allow setting these methods to
|
||||||
|
`rb_f_notimplement` in a followup commit.
|
||||||
|
---
|
||||||
|
gc.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
|
||||||
|
gc.rb | 68 ---------------------------------------
|
||||||
|
2 files changed, 91 insertions(+), 78 deletions(-)
|
||||||
|
|
||||||
diff --git a/gc.c b/gc.c
|
diff --git a/gc.c b/gc.c
|
||||||
index ef9327df1f..1c35856c44 100644
|
index ef9327df1f..1c35856c44 100644
|
||||||
--- a/gc.c
|
--- a/gc.c
|
||||||
+++ b/gc.c
|
+++ b/gc.c
|
||||||
@@ -9421,6 +9421,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)
|
@@ -10164,8 +10164,20 @@ gc_update_references(rb_objspace_t *objspace)
|
||||||
return (VALUE)src;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if GC_COMPACTION_SUPPORTED
|
|
||||||
static int
|
|
||||||
compare_free_slots(const void *left, const void *right, void *dummy)
|
|
||||||
{
|
|
||||||
@@ -9468,6 +9469,7 @@ gc_sort_heap_by_empty_slots(rb_objspace_t *objspace)
|
|
||||||
free(page_list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
static void
|
|
||||||
gc_ref_update_array(rb_objspace_t * objspace, VALUE v)
|
|
||||||
@@ -10147,8 +10149,21 @@ gc_update_references(rb_objspace_t *objspace)
|
|
||||||
gc_update_table_refs(objspace, finalizer_table);
|
gc_update_table_refs(objspace, finalizer_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
+#if GC_COMPACTION_SUPPORTED
|
|
||||||
+/*
|
+/*
|
||||||
+ * call-seq:
|
+ * call-seq:
|
||||||
+ * GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}
|
+ * GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}
|
||||||
@ -47,19 +44,7 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
rb_objspace_t *objspace = &rb_objspace;
|
rb_objspace_t *objspace = &rb_objspace;
|
||||||
@@ -10171,7 +10186,11 @@ gc_compact_stats(rb_execution_context_t *ec, VALUE self)
|
@@ -10238,22 +10250,70 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)
|
||||||
|
|
||||||
return h;
|
|
||||||
}
|
|
||||||
+#else
|
|
||||||
+# define gc_compact_stats rb_f_notimplement
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
+#if GC_COMPACTION_SUPPORTED
|
|
||||||
static void
|
|
||||||
root_obj_check_moved_i(const char *category, VALUE obj, void *data)
|
|
||||||
{
|
|
||||||
@@ -10221,22 +10240,78 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,10 +60,6 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
+ *
|
+ *
|
||||||
+ * This method is implementation specific and not expected to be implemented
|
+ * This method is implementation specific and not expected to be implemented
|
||||||
+ * in any implementation besides MRI.
|
+ * in any implementation besides MRI.
|
||||||
+ *
|
|
||||||
+ * To test whether GC compaction is supported, use the idiom:
|
|
||||||
+ *
|
|
||||||
+ * GC.respond_to?(:compact)
|
|
||||||
+ */
|
+ */
|
||||||
static VALUE
|
static VALUE
|
||||||
-gc_compact(rb_execution_context_t *ec, VALUE self)
|
-gc_compact(rb_execution_context_t *ec, VALUE self)
|
||||||
@ -91,11 +72,7 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
- return gc_compact_stats(ec, self);
|
- return gc_compact_stats(ec, self);
|
||||||
+ return gc_compact_stats(self);
|
+ return gc_compact_stats(self);
|
||||||
}
|
}
|
||||||
+#else
|
|
||||||
+# define gc_compact rb_f_notimplement
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
+#if GC_COMPACTION_SUPPORTED
|
|
||||||
+/*
|
+/*
|
||||||
+ * call-seq:
|
+ * call-seq:
|
||||||
+ * GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
|
+ * GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
|
||||||
@ -143,7 +120,7 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
|
|
||||||
RB_VM_LOCK_ENTER();
|
RB_VM_LOCK_ENTER();
|
||||||
{
|
{
|
||||||
@@ -10256,13 +10331,16 @@ gc_verify_compaction_references(rb_execution_context_t *ec, VALUE self, VALUE do
|
@@ -10273,12 +10333,12 @@ gc_verify_compaction_references(rb_execution_context_t *ec, VALUE self, VALUE do
|
||||||
}
|
}
|
||||||
RB_VM_LOCK_LEAVE();
|
RB_VM_LOCK_LEAVE();
|
||||||
|
|
||||||
@ -156,17 +133,12 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
- return gc_compact_stats(ec, self);
|
- return gc_compact_stats(ec, self);
|
||||||
+ return gc_compact_stats(self);
|
+ return gc_compact_stats(self);
|
||||||
}
|
}
|
||||||
+#else
|
|
||||||
+# define gc_verify_compaction_references rb_f_notimplement
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
rb_gc_start(void)
|
@@ -10739,8 +10799,18 @@ gc_disable(rb_execution_context_t *ec, VALUE _)
|
||||||
@@ -10722,26 +10800,45 @@ gc_disable(rb_execution_context_t *ec, VALUE _)
|
|
||||||
return rb_gc_disable();
|
return rb_gc_disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
+#if GC_COMPACTION_SUPPORTED
|
|
||||||
+/*
|
+/*
|
||||||
+ * call-seq:
|
+ * call-seq:
|
||||||
+ * GC.auto_compact = flag
|
+ * GC.auto_compact = flag
|
||||||
@ -183,6 +155,237 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
{
|
{
|
||||||
/* If not MinGW, Windows, or does not have mmap, we cannot use mprotect for
|
/* If not MinGW, Windows, or does not have mmap, we cannot use mprotect for
|
||||||
* the read barrier, so we must disable automatic compaction. */
|
* 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 <mike.dalessio@gmail.com>
|
||||||
|
Date: Mon, 23 May 2022 17:31:14 -0400
|
||||||
|
Subject: [PATCH 2/2] Define unsupported GC compaction methods as
|
||||||
|
rb_f_notimplement
|
||||||
|
|
||||||
|
Fixes [Bug #18779]
|
||||||
|
|
||||||
|
Define the following methods as `rb_f_notimplement` on unsupported
|
||||||
|
platforms:
|
||||||
|
|
||||||
|
- GC.compact
|
||||||
|
- GC.auto_compact
|
||||||
|
- GC.auto_compact=
|
||||||
|
- GC.latest_compact_info
|
||||||
|
- GC.verify_compaction_references
|
||||||
|
|
||||||
|
This change allows users to call `GC.respond_to?(:compact)` to
|
||||||
|
properly test for compaction support. Previously, it was necessary to
|
||||||
|
invoke `GC.compact` or `GC.verify_compaction_references` and check if
|
||||||
|
those methods raised `NotImplementedError` to determine if compaction
|
||||||
|
was supported.
|
||||||
|
|
||||||
|
This follows the precedent set for other platform-specific
|
||||||
|
methods. For example, in `process.c` for methods such as
|
||||||
|
`Process.fork`, `Process.setpgid`, and `Process.getpriority`.
|
||||||
|
---
|
||||||
|
gc.c | 31 +++++++++++++++----
|
||||||
|
test/ruby/test_gc_compact.rb | 58 ++++++++++++++++++++++++++----------
|
||||||
|
2 files changed, 69 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gc.c b/gc.c
|
||||||
|
index 92ed76cf96..d71924846a 100644
|
||||||
|
--- a/gc.c
|
||||||
|
+++ b/gc.c
|
||||||
|
@@ -9438,6 +9438,7 @@ gc_move(rb_objspace_t *objspace, VALUE scan, VALUE free, size_t slot_size)
|
||||||
|
return (VALUE)src;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if GC_COMPACTION_SUPPORTED
|
||||||
|
static int
|
||||||
|
compare_free_slots(const void *left, const void *right, void *dummy)
|
||||||
|
{
|
||||||
|
@@ -9485,6 +9486,7 @@ gc_sort_heap_by_empty_slots(rb_objspace_t *objspace)
|
||||||
|
free(page_list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
gc_ref_update_array(rb_objspace_t * objspace, VALUE v)
|
||||||
|
@@ -10164,6 +10166,7 @@ gc_update_references(rb_objspace_t *objspace)
|
||||||
|
gc_update_table_refs(objspace, finalizer_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if GC_COMPACTION_SUPPORTED
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}
|
||||||
|
@@ -10200,7 +10203,11 @@ gc_compact_stats(VALUE self)
|
||||||
|
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+# define gc_compact_stats rb_f_notimplement
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
+#if GC_COMPACTION_SUPPORTED
|
||||||
|
static void
|
||||||
|
root_obj_check_moved_i(const char *category, VALUE obj, void *data)
|
||||||
|
{
|
||||||
|
@@ -10262,6 +10269,10 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)
|
||||||
|
*
|
||||||
|
* This method is implementation specific and not expected to be implemented
|
||||||
|
* in any implementation besides MRI.
|
||||||
|
+ *
|
||||||
|
+ * To test whether GC compaction is supported, use the idiom:
|
||||||
|
+ *
|
||||||
|
+ * GC.respond_to?(:compact)
|
||||||
|
*/
|
||||||
|
static VALUE
|
||||||
|
gc_compact(VALUE self)
|
||||||
|
@@ -10271,7 +10282,11 @@ gc_compact(VALUE self)
|
||||||
|
|
||||||
|
return gc_compact_stats(self);
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+# define gc_compact rb_f_notimplement
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
+#if GC_COMPACTION_SUPPORTED
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
|
||||||
|
@@ -10340,6 +10355,9 @@ gc_verify_compaction_references(int argc, VALUE *argv, VALUE self)
|
||||||
|
|
||||||
|
return gc_compact_stats(self);
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+# define gc_verify_compaction_references rb_f_notimplement
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
VALUE
|
||||||
|
rb_gc_start(void)
|
||||||
|
@@ -10799,6 +10817,7 @@ gc_disable(rb_execution_context_t *ec, VALUE _)
|
||||||
|
return rb_gc_disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if GC_COMPACTION_SUPPORTED
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* GC.auto_compact = flag
|
||||||
|
@@ -10814,16 +10833,15 @@ gc_set_auto_compact(VALUE _, VALUE v)
|
||||||
|
{
|
||||||
|
/* If not MinGW, Windows, or does not have mmap, we cannot use mprotect for
|
||||||
|
* the read barrier, so we must disable automatic compaction. */
|
||||||
-#if !defined(__MINGW32__) && !defined(_WIN32)
|
-#if !defined(__MINGW32__) && !defined(_WIN32)
|
||||||
- if (!USE_MMAP_ALIGNED_ALLOC) {
|
- if (!USE_MMAP_ALIGNED_ALLOC) {
|
||||||
- rb_raise(rb_eNotImpError, "Automatic compaction isn't available on this platform");
|
- rb_raise(rb_eNotImpError, "Automatic compaction isn't available on this platform");
|
||||||
@ -197,15 +400,10 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
+#if GC_COMPACTION_SUPPORTED
|
+#if GC_COMPACTION_SUPPORTED
|
||||||
+/*
|
/*
|
||||||
+ * call-seq:
|
* call-seq:
|
||||||
+ * GC.auto_compact -> true or false
|
* GC.auto_compact -> true or false
|
||||||
+ *
|
@@ -10835,6 +10853,9 @@ gc_get_auto_compact(VALUE _)
|
||||||
+ * 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);
|
return RBOOL(ruby_enable_autocompact);
|
||||||
}
|
}
|
||||||
@ -215,18 +413,6 @@ index ef9327df1f..1c35856c44 100644
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
get_envparam_size(const char *name, size_t *default_value, size_t lower_bound)
|
get_envparam_size(const char *name, size_t *default_value, size_t lower_bound)
|
||||||
@@ -13599,6 +13696,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/test/ruby/test_gc_compact.rb b/test/ruby/test_gc_compact.rb
|
diff --git a/test/ruby/test_gc_compact.rb b/test/ruby/test_gc_compact.rb
|
||||||
index 42ad028530..411d5eab69 100644
|
index 42ad028530..411d5eab69 100644
|
||||||
--- a/test/ruby/test_gc_compact.rb
|
--- a/test/ruby/test_gc_compact.rb
|
||||||
@ -314,89 +500,3 @@ index 42ad028530..411d5eab69 100644
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_gc_compact_stats
|
def test_gc_compact_stats
|
||||||
diff --git a/gc.rb b/gc.rb
|
|
||||||
index 72637f3796..9265dd7b57 100644
|
|
||||||
--- a/gc.rb
|
|
||||||
+++ b/gc.rb
|
|
||||||
@@ -38,27 +38,6 @@ def garbage_collect full_mark: true, immediate_mark: true, immediate_sweep: true
|
|
||||||
Primitive.gc_start_internal full_mark, immediate_mark, immediate_sweep, false
|
|
||||||
end
|
|
||||||
|
|
||||||
- # call-seq:
|
|
||||||
- # GC.auto_compact -> true or false
|
|
||||||
- #
|
|
||||||
- # Returns whether or not automatic compaction has been enabled.
|
|
||||||
- #
|
|
||||||
- def self.auto_compact
|
|
||||||
- Primitive.gc_get_auto_compact
|
|
||||||
- end
|
|
||||||
-
|
|
||||||
- # call-seq:
|
|
||||||
- # GC.auto_compact = flag
|
|
||||||
- #
|
|
||||||
- # Updates automatic compaction mode.
|
|
||||||
- #
|
|
||||||
- # When enabled, the compactor will execute on every major collection.
|
|
||||||
- #
|
|
||||||
- # Enabling compaction will degrade performance on major collections.
|
|
||||||
- def self.auto_compact=(flag)
|
|
||||||
- Primitive.gc_set_auto_compact(flag)
|
|
||||||
- end
|
|
||||||
-
|
|
||||||
# call-seq:
|
|
||||||
# GC.enable -> true or false
|
|
||||||
#
|
|
||||||
@@ -210,53 +189,6 @@ def self.latest_gc_info hash_or_key = nil
|
|
||||||
Primitive.gc_latest_gc_info hash_or_key
|
|
||||||
end
|
|
||||||
|
|
||||||
- # call-seq:
|
|
||||||
- # GC.latest_compact_info -> {:considered=>{:T_CLASS=>11}, :moved=>{:T_CLASS=>11}}
|
|
||||||
- #
|
|
||||||
- # Returns information about object moved in the most recent GC compaction.
|
|
||||||
- #
|
|
||||||
- # The returned hash has two keys :considered and :moved. The hash for
|
|
||||||
- # :considered lists the number of objects that were considered for movement
|
|
||||||
- # by the compactor, and the :moved hash lists the number of objects that
|
|
||||||
- # were actually moved. Some objects can't be moved (maybe they were pinned)
|
|
||||||
- # so these numbers can be used to calculate compaction efficiency.
|
|
||||||
- def self.latest_compact_info
|
|
||||||
- Primitive.gc_compact_stats
|
|
||||||
- end
|
|
||||||
-
|
|
||||||
- # call-seq:
|
|
||||||
- # GC.compact
|
|
||||||
- #
|
|
||||||
- # This function compacts objects together in Ruby's heap. It eliminates
|
|
||||||
- # unused space (or fragmentation) in the heap by moving objects in to that
|
|
||||||
- # unused space. This function returns a hash which contains statistics about
|
|
||||||
- # which objects were moved. See `GC.latest_gc_info` for details about
|
|
||||||
- # compaction statistics.
|
|
||||||
- #
|
|
||||||
- # This method is implementation specific and not expected to be implemented
|
|
||||||
- # in any implementation besides MRI.
|
|
||||||
- def self.compact
|
|
||||||
- Primitive.gc_compact
|
|
||||||
- end
|
|
||||||
-
|
|
||||||
- # call-seq:
|
|
||||||
- # GC.verify_compaction_references(toward: nil, double_heap: false) -> hash
|
|
||||||
- #
|
|
||||||
- # Verify compaction reference consistency.
|
|
||||||
- #
|
|
||||||
- # This method is implementation specific. During compaction, objects that
|
|
||||||
- # were moved are replaced with T_MOVED objects. No object should have a
|
|
||||||
- # reference to a T_MOVED object after compaction.
|
|
||||||
- #
|
|
||||||
- # This function doubles the heap to ensure room to move all objects,
|
|
||||||
- # compacts the heap to make sure everything moves, updates all references,
|
|
||||||
- # then performs a full GC. If any object contains a reference to a T_MOVED
|
|
||||||
- # object, that object should be pushed on the mark stack, and will
|
|
||||||
- # make a SEGV.
|
|
||||||
- def self.verify_compaction_references(toward: nil, double_heap: false)
|
|
||||||
- Primitive.gc_verify_compaction_references(double_heap, toward == :empty)
|
|
||||||
- end
|
|
||||||
-
|
|
||||||
# call-seq:
|
|
||||||
# GC.using_rvargc? -> true or false
|
|
||||||
#
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--- ruby-3.1.2/gc.rbinc 2022-04-12 13:11:17.000000000 +0200
|
--- ruby-3.1.3/gc.rbinc 2022-11-24 11:20:33.000000000 +0100
|
||||||
+++ ruby/gc.rbinc 2022-06-08 12:49:16.288024971 +0200
|
+++ ruby/gc.rbinc 2022-11-25 11:50:19.939820992 +0100
|
||||||
@@ -9,27 +9,27 @@
|
@@ -9,27 +9,27 @@
|
||||||
#include "builtin.h" /* for RB_BUILTIN_FUNCTION */
|
#include "builtin.h" /* for RB_BUILTIN_FUNCTION */
|
||||||
struct rb_execution_context_struct; /* in vm_core.h */
|
struct rb_execution_context_struct; /* in vm_core.h */
|
||||||
@ -218,8 +218,8 @@
|
|||||||
COMPILER_WARNING_POP
|
COMPILER_WARNING_POP
|
||||||
|
|
||||||
// load
|
// load
|
||||||
--- ruby-3.1.2/miniprelude.c 2022-04-12 13:11:17.000000000 +0200
|
--- ruby-3.1.3/miniprelude.c 2022-11-24 11:20:33.000000000 +0100
|
||||||
+++ ruby/miniprelude.c 2022-06-08 12:49:16.377024871 +0200
|
+++ ruby/miniprelude.c 2022-11-25 11:50:20.012820803 +0100
|
||||||
@@ -545,11 +545,10 @@
|
@@ -545,11 +545,10 @@
|
||||||
|
|
||||||
static const char prelude_name2[] = "<internal:gc>";
|
static const char prelude_name2[] = "<internal:gc>";
|
||||||
@ -446,57 +446,57 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char prelude_name11[] = "<internal:ractor>";
|
static const char prelude_name11[] = "<internal:ractor>";
|
||||||
@@ -3305,7 +3234,7 @@
|
@@ -3309,7 +3238,7 @@
|
||||||
" }\n"
|
" }\n"
|
||||||
" end\n"
|
" end\n"
|
||||||
"end\n"
|
"end\n"
|
||||||
-#line 3309 "miniprelude.c"
|
-#line 3313 "miniprelude.c"
|
||||||
+#line 3238 "miniprelude.c"
|
+#line 3242 "miniprelude.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char prelude_name12[] = "<internal:timev>";
|
static const char prelude_name12[] = "<internal:timev>";
|
||||||
@@ -3628,7 +3557,7 @@
|
@@ -3632,7 +3561,7 @@
|
||||||
" Primitive.time_init_args(year, mon, mday, hour, min, sec, zone)\n"
|
" Primitive.time_init_args(year, mon, mday, hour, min, sec, zone)\n"
|
||||||
" end\n"
|
" end\n"
|
||||||
"end\n"
|
"end\n"
|
||||||
-#line 3632 "miniprelude.c"
|
-#line 3636 "miniprelude.c"
|
||||||
+#line 3561 "miniprelude.c"
|
+#line 3565 "miniprelude.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char prelude_name13[] = "<internal:nilclass>";
|
static const char prelude_name13[] = "<internal:nilclass>";
|
||||||
@@ -3661,7 +3590,7 @@
|
@@ -3665,7 +3594,7 @@
|
||||||
" return 0.0\n"
|
" return 0.0\n"
|
||||||
" end\n"
|
" end\n"
|
||||||
"end\n"
|
"end\n"
|
||||||
-#line 3665 "miniprelude.c"
|
-#line 3669 "miniprelude.c"
|
||||||
+#line 3594 "miniprelude.c"
|
+#line 3598 "miniprelude.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char prelude_name14[] = "<internal:prelude>";
|
static const char prelude_name14[] = "<internal:prelude>";
|
||||||
@@ -3691,7 +3620,7 @@
|
@@ -3695,7 +3624,7 @@
|
||||||
"\n"
|
"\n"
|
||||||
" private :pp\n"
|
" private :pp\n"
|
||||||
"end\n"
|
"end\n"
|
||||||
-#line 3695 "miniprelude.c"
|
-#line 3699 "miniprelude.c"
|
||||||
+#line 3624 "miniprelude.c"
|
+#line 3628 "miniprelude.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char prelude_name15[] = "<internal:gem_prelude>";
|
static const char prelude_name15[] = "<internal:gem_prelude>";
|
||||||
@@ -3718,7 +3647,7 @@
|
@@ -3722,7 +3651,7 @@
|
||||||
"rescue LoadError\n"
|
"rescue LoadError\n"
|
||||||
" warn \"`did_you_mean' was not loaded.\"\n"
|
" warn \"`did_you_mean' was not loaded.\"\n"
|
||||||
"end if defined?(DidYouMean)\n"
|
"end if defined?(DidYouMean)\n"
|
||||||
-#line 3722 "miniprelude.c"
|
-#line 3726 "miniprelude.c"
|
||||||
+#line 3651 "miniprelude.c"
|
+#line 3655 "miniprelude.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char prelude_name16[] = "<internal:yjit>";
|
static const char prelude_name16[] = "<internal:yjit>";
|
||||||
@@ -4059,7 +3988,7 @@
|
@@ -4063,7 +3992,7 @@
|
||||||
" end\n"
|
" end\n"
|
||||||
" end\n"
|
" end\n"
|
||||||
"end\n"
|
"end\n"
|
||||||
-#line 4063 "miniprelude.c"
|
-#line 4067 "miniprelude.c"
|
||||||
+#line 3992 "miniprelude.c"
|
+#line 3996 "miniprelude.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
COMPILER_WARNING_POP
|
COMPILER_WARNING_POP
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
From dae843f6b7502f921a7e66f39e3714a39d860181 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
|
||||||
Date: Wed, 19 Oct 2022 19:40:00 +0900
|
|
||||||
Subject: [PATCH] Bypass git submodule add/update with git config
|
|
||||||
protocol.file.allow=always option.
|
|
||||||
|
|
||||||
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
||||||
---
|
|
||||||
test/rubygems/test_gem_source_git.rb | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/test/rubygems/test_gem_source_git.rb b/test/rubygems/test_gem_source_git.rb
|
|
||||||
index 5702da05974b6..c3b324771fa4d 100644
|
|
||||||
--- a/test/rubygems/test_gem_source_git.rb
|
|
||||||
+++ b/test/rubygems/test_gem_source_git.rb
|
|
||||||
@@ -63,6 +63,11 @@ def test_checkout_local_cached
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_checkout_submodules
|
|
||||||
+ # We need to allow to checkout submodules with file:// protocol
|
|
||||||
+ # CVE-2022-39253
|
|
||||||
+ # https://lore.kernel.org/lkml/xmqq4jw1uku5.fsf@gitster.g/
|
|
||||||
+ system(@git, *%W"config --global protocol.file.allow always")
|
|
||||||
+
|
|
||||||
source = Gem::Source::Git.new @name, @repository, 'master', true
|
|
||||||
|
|
||||||
git_gem 'b'
|
|
@ -1,31 +0,0 @@
|
|||||||
From bfa2f72cfa3bfde34049d26dcb24976316074ad7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jun Aruga <jaruga@redhat.com>
|
|
||||||
Date: Mon, 21 Mar 2022 15:36:51 +0100
|
|
||||||
Subject: [PATCH] Fix a test for `bin/bundle update --bundler` to pass on
|
|
||||||
ruby/ruby.
|
|
||||||
|
|
||||||
Consider the case that the latest Bundler version on RubyGems is higher than
|
|
||||||
the `system_bundler_version` (= `Bundler::VERSION`) in `make test-bundler` on
|
|
||||||
ruby/ruby.
|
|
||||||
|
|
||||||
See <https://bugs.ruby-lang.org/issues/18643>.
|
|
||||||
---
|
|
||||||
spec/bundler/commands/binstubs_spec.rb | 5 ++++-
|
|
||||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/spec/bundler/commands/binstubs_spec.rb b/spec/bundler/commands/binstubs_spec.rb
|
|
||||||
index 198226207bc..2634f43417c 100644
|
|
||||||
--- a/spec/bundler/commands/binstubs_spec.rb
|
|
||||||
+++ b/spec/bundler/commands/binstubs_spec.rb
|
|
||||||
@@ -226,7 +226,10 @@
|
|
||||||
|
|
||||||
it "calls through to the latest bundler version" do
|
|
||||||
sys_exec "bin/bundle update --bundler", :env => { "DEBUG" => "1" }
|
|
||||||
- expect(out).to include %(Using bundler #{system_bundler_version}\n)
|
|
||||||
+ using_bundler_line = /Using bundler ([\w\.]+)\n/.match(out)
|
|
||||||
+ expect(using_bundler_line).to_not be_nil
|
|
||||||
+ latest_version = using_bundler_line[1]
|
|
||||||
+ expect(Gem::Version.new(latest_version)).to be >= Gem::Version.new(system_bundler_version)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "calls through to the explicit bundler version" do
|
|
@ -13,12 +13,6 @@ lib/irb/completion.rb
|
|||||||
lib/irb/easter-egg.rb
|
lib/irb/easter-egg.rb
|
||||||
lib/irb/input-method.rb
|
lib/irb/input-method.rb
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Revert "Remove `require` in signal handler to avoid ThreadError"
|
|
||||||
|
|
||||||
This reverts commit 5f749c613c895cf1b11b5e4cbd1205363bc58028.
|
|
||||||
---
|
---
|
||||||
lib/irb/input-method.rb | 5 +++++
|
lib/irb/input-method.rb | 5 +++++
|
||||||
1 file changed, 5 insertions(+)
|
1 file changed, 5 insertions(+)
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
From 623162ad2bb3b589bddcc32616492a2bc4651726 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
|
|
||||||
Date: Tue, 22 Feb 2022 11:58:54 +0900
|
|
||||||
Subject: [PATCH] Resolve cleaned-up error with temporary gemhome
|
|
||||||
|
|
||||||
---
|
|
||||||
test/rubygems/test_gem_commands_setup_command.rb | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/test/rubygems/test_gem_commands_setup_command.rb b/test/rubygems/test_gem_commands_setup_command.rb
|
|
||||||
index 5cf94a1dc99..934c76b1d1a 100644
|
|
||||||
--- a/test/rubygems/test_gem_commands_setup_command.rb
|
|
||||||
+++ b/test/rubygems/test_gem_commands_setup_command.rb
|
|
||||||
@@ -274,6 +274,8 @@ def test_install_default_bundler_gem_with_destdir_flag
|
|
||||||
spec.executables.each do |e|
|
|
||||||
assert_path_exist File.join destdir, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'gems', spec.full_name, spec.bindir, e
|
|
||||||
end
|
|
||||||
+ ensure
|
|
||||||
+ FileUtils.chmod "+w", @gemhome
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_install_default_bundler_gem_with_destdir_and_prefix_flags
|
|
@ -1,40 +0,0 @@
|
|||||||
From 7e9ec8a20b0f7469b415283d2ec0c22087f8eb2b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jun Aruga <jaruga@redhat.com>
|
|
||||||
Date: Wed, 24 Aug 2022 12:02:56 +0200
|
|
||||||
Subject: [PATCH] Fix tests with Europe/Amsterdam pre-1970 time on tzdata
|
|
||||||
version 2022b.
|
|
||||||
|
|
||||||
The Time Zone Database (tzdata) changed the pre-1970 timestamps in some zones
|
|
||||||
including Europe/Amsterdam on tzdata version 2022b or later.
|
|
||||||
See <https://github.com/eggert/tz/commit/35fa37fbbb152f5dbed4fd5edfdc968e3584fe12>.
|
|
||||||
|
|
||||||
The tzdata RPM package maintainer on Fedora project suggested changing the Ruby
|
|
||||||
test, because the change is intentional.
|
|
||||||
See <https://bugzilla.redhat.com/show_bug.cgi?id=2118259#c1>.
|
|
||||||
|
|
||||||
We use post-1970 time test data to simplify the test.
|
|
||||||
---
|
|
||||||
core/time/shared/local.rb | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/spec/ruby/core/time/shared/local.rb b/spec/ruby/core/time/shared/local.rb
|
|
||||||
index 43f331c4c..c4aa7a7ea 100644
|
|
||||||
--- a/spec/ruby/core/time/shared/local.rb
|
|
||||||
+++ b/spec/ruby/core/time/shared/local.rb
|
|
||||||
@@ -8,10 +8,10 @@ describe :time_local, shared: true do
|
|
||||||
|
|
||||||
platform_is_not :windows do
|
|
||||||
describe "timezone changes" do
|
|
||||||
- it "correctly adjusts the timezone change to 'CEST' on 'Europe/Amsterdam'" do
|
|
||||||
+ it "correctly adjusts the timezone change to 'CET' on 'Europe/Amsterdam'" do
|
|
||||||
with_timezone("Europe/Amsterdam") do
|
|
||||||
- Time.send(@method, 1940, 5, 16).to_a.should ==
|
|
||||||
- [0, 40, 1, 16, 5, 1940, 4, 137, true, "CEST"]
|
|
||||||
+ Time.send(@method, 1970, 5, 16).to_a.should ==
|
|
||||||
+ [0, 0, 0, 16, 5, 1970, 6, 136, false, "CET"]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
--
|
|
||||||
2.36.1
|
|
||||||
|
|
97
ruby.spec
97
ruby.spec
@ -1,6 +1,6 @@
|
|||||||
%global major_version 3
|
%global major_version 3
|
||||||
%global minor_version 1
|
%global minor_version 1
|
||||||
%global teeny_version 2
|
%global teeny_version 3
|
||||||
%global major_minor_version %{major_version}.%{minor_version}
|
%global major_minor_version %{major_version}.%{minor_version}
|
||||||
|
|
||||||
%global ruby_version %{major_minor_version}.%{teeny_version}
|
%global ruby_version %{major_minor_version}.%{teeny_version}
|
||||||
@ -22,7 +22,7 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%global release 171
|
%global release 172
|
||||||
%{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
|
%{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
|
||||||
|
|
||||||
# The RubyGems library has to stay out of Ruby directory tree, since the
|
# The RubyGems library has to stay out of Ruby directory tree, since the
|
||||||
@ -30,14 +30,16 @@
|
|||||||
%global rubygems_dir %{_datadir}/rubygems
|
%global rubygems_dir %{_datadir}/rubygems
|
||||||
|
|
||||||
# Bundled libraries versions
|
# Bundled libraries versions
|
||||||
%global rubygems_version 3.3.7
|
%global rubygems_version 3.3.26
|
||||||
%global rubygems_molinillo_version 0.7.0
|
%global rubygems_molinillo_version 0.7.0
|
||||||
|
%global rubygems_optparse_version 0.2.0
|
||||||
|
%global rubygems_tsort_version 0.1.0
|
||||||
|
|
||||||
# Default gems.
|
# Default gems.
|
||||||
%global bundler_version 2.3.7
|
%global bundler_version 2.3.26
|
||||||
%global bundler_connection_pool_version 2.3.0
|
%global bundler_connection_pool_version 2.3.0
|
||||||
%global bundler_fileutils_version 1.4.1
|
%global bundler_fileutils_version 1.4.1
|
||||||
%global bundler_molinillo_version 0.7.0
|
%global bundler_molinillo_version 0.8.0
|
||||||
%global bundler_net_http_persistent_version 4.0.0
|
%global bundler_net_http_persistent_version 4.0.0
|
||||||
%global bundler_thor_version 1.2.1
|
%global bundler_thor_version 1.2.1
|
||||||
%global bundler_tmpdir_version 0.1.0
|
%global bundler_tmpdir_version 0.1.0
|
||||||
@ -51,8 +53,8 @@
|
|||||||
%global io_console_version 0.5.11
|
%global io_console_version 0.5.11
|
||||||
%global irb_version 1.4.1
|
%global irb_version 1.4.1
|
||||||
%global json_version 2.6.1
|
%global json_version 2.6.1
|
||||||
%global openssl_version 3.0.0
|
%global openssl_version 3.0.1
|
||||||
%global psych_version 4.0.3
|
%global psych_version 4.0.4
|
||||||
%global racc_version 1.6.0
|
%global racc_version 1.6.0
|
||||||
%global rdoc_version 6.4.0
|
%global rdoc_version 6.4.0
|
||||||
%global stringio_version 3.0.1
|
%global stringio_version 3.0.1
|
||||||
@ -70,9 +72,9 @@
|
|||||||
%global net_smtp_version 0.3.1
|
%global net_smtp_version 0.3.1
|
||||||
%global matrix_version 0.4.2
|
%global matrix_version 0.4.2
|
||||||
%global prime_version 0.1.2
|
%global prime_version 0.1.2
|
||||||
%global rbs_version 2.1.0
|
%global rbs_version 2.7.0
|
||||||
%global typeprof_version 0.21.2
|
%global typeprof_version 0.21.3
|
||||||
%global debug_version 1.4.0
|
%global debug_version 1.6.3
|
||||||
|
|
||||||
%global tapset_libdir %(echo %{_libdir} | sed 's/64//')*
|
%global tapset_libdir %(echo %{_libdir} | sed 's/64//')*
|
||||||
|
|
||||||
@ -163,54 +165,33 @@ Patch7: ruby-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.patch
|
|||||||
# Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add.
|
# Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add.
|
||||||
# https://bugs.ruby-lang.org/issues/16492
|
# https://bugs.ruby-lang.org/issues/16492
|
||||||
Patch19: ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch
|
Patch19: ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch
|
||||||
# Fix a test for `bin/bundle update --bundler` in `make test-bundler`.
|
|
||||||
# https://bugs.ruby-lang.org/issues/18643
|
|
||||||
# https://github.com/rubygems/rubygems/commit/bfa2f72cfa3bfde34049d26dcb24976316074ad7
|
|
||||||
Patch20: ruby-bundler-2.4.0-bundle-update-bundler-test-in-ruby.patch
|
|
||||||
# Workaround gem binary extensions build and installation issues.
|
|
||||||
# https://bugs.ruby-lang.org/issues/18373
|
|
||||||
# https://github.com/ruby/ruby/pull/5774
|
|
||||||
Patch21: ruby-3.2.0-Build-extension-libraries-in-bundled-gems.patch
|
|
||||||
# If GC compaction is not supported on platform, define the
|
# If GC compaction is not supported on platform, define the
|
||||||
# corresponding GC methods as not implemented.
|
# corresponding GC methods as not implemented.
|
||||||
# https://bugs.ruby-lang.org/issues/18779
|
# https://bugs.ruby-lang.org/issues/18779
|
||||||
# https://github.com/ruby/ruby/pull/5934
|
# https://github.com/ruby/ruby/pull/5934
|
||||||
Patch22: ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch
|
Patch22: ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch
|
||||||
# To regenerate the patch you need to have ruby, autoconf, xz, tar and make installed:
|
# To regenerate the patch you need to have ruby, autoconf, xz, tar and make installed:
|
||||||
# tar -Jxvf ./ruby-3.1.2.tar.xz
|
# tar -Jxvf ./ruby-3.1.3.tar.xz
|
||||||
# git clone https://github.com/ruby/ruby.git
|
# git clone https://github.com/ruby/ruby.git
|
||||||
# cd ruby && git checkout v3_1_2
|
# cd ruby && git checkout v3_1_3
|
||||||
# patch -p1 < ../ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch
|
# patch -p1 < ../ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch
|
||||||
# ./autogen.sh && ./configure
|
# ./autogen.sh && ./configure
|
||||||
# make gc.rbinc miniprelude.c
|
# make gc.rbinc miniprelude.c
|
||||||
# cd ..
|
# cd ..
|
||||||
# diff -u {ruby-3.1.2,ruby}/gc.rbinc > ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
|
# diff -u {ruby-3.1.3,ruby}/gc.rbinc > ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
|
||||||
# diff -u {ruby-3.1.2,ruby}/miniprelude.c >> ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
|
# diff -u {ruby-3.1.3,ruby}/miniprelude.c >> ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
|
||||||
Patch23: ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
|
Patch23: ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
|
||||||
# Define the GC compaction support macro at run time.
|
# Define the GC compaction support macro at run time.
|
||||||
# https://bugs.ruby-lang.org/issues/18829
|
# https://bugs.ruby-lang.org/issues/18829
|
||||||
# https://github.com/ruby/ruby/pull/6019
|
# https://github.com/ruby/ruby/pull/6019
|
||||||
# https://github.com/ruby/ruby/commit/2c190863239bee3f54cfb74b16bb6ea4cae6ed20
|
# https://github.com/ruby/ruby/commit/2c190863239bee3f54cfb74b16bb6ea4cae6ed20
|
||||||
Patch24: ruby-3.2.0-Detect-compaction-support-during-runtime.patch
|
Patch24: ruby-3.2.0-Detect-compaction-support-during-runtime.patch
|
||||||
# RPM 4.18.0-beta1 or later versions remove the build directory automatically
|
|
||||||
# on successful build, the build then fails on removing temporary directories
|
|
||||||
# that are missing the 'w' bit.
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2105393
|
|
||||||
# https://github.com/rpm-software-management/rpm/pull/2080
|
|
||||||
# https://github.com/rubygems/rubygems/pull/5372
|
|
||||||
Patch25: ruby-rubygems-3.3.8-Resolve-cleaned-up-error-with-temporary-gemhome.patch
|
|
||||||
# Fix tests with Europe/Amsterdam pre-1970 time on tzdata version 2022b.
|
|
||||||
# https://github.com/ruby/spec/pull/939
|
|
||||||
Patch26: ruby-spec-Fix-tests-on-tzdata-2022b.patch
|
|
||||||
# Drop hard dependency on RDoc in IRB.
|
# Drop hard dependency on RDoc in IRB.
|
||||||
# https://github.com/ruby/irb/pull/393
|
# https://github.com/ruby/irb/pull/393
|
||||||
Patch27: ruby-irb-1.4.1-drop-rdoc-hard-dep.patch
|
Patch27: ruby-irb-1.4.1-drop-rdoc-hard-dep.patch
|
||||||
# Set soft dependency on RDoc in input-method.rb in IRB.
|
# Set soft dependency on RDoc in input-method.rb in IRB.
|
||||||
# https://github.com/ruby/irb/pull/395
|
# https://github.com/ruby/irb/pull/395
|
||||||
Patch28: ruby-irb-1.4.1-set-rdoc-soft-dep.patch
|
Patch28: ruby-irb-1.4.1-set-rdoc-soft-dep.patch
|
||||||
# Bypass git submodule test failure on Git >= 2.38.1.
|
|
||||||
# https://github.com/ruby/ruby/pull/6587
|
|
||||||
Patch29: ruby-3.2.0-git-2.38.1-fix-rubygems-test.patch
|
|
||||||
|
|
||||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||||
Suggests: rubypick
|
Suggests: rubypick
|
||||||
@ -678,22 +659,11 @@ rm -rf ext/fiddle/libffi*
|
|||||||
%patch6 -p1
|
%patch6 -p1
|
||||||
%patch7 -p1
|
%patch7 -p1
|
||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
%patch20 -p1
|
|
||||||
|
|
||||||
# Once the upstream tarball contains the files on the right place, this code
|
|
||||||
# won't be necessary. This should happen at the same moment when the patch21
|
|
||||||
# is not needed anymore.
|
|
||||||
mkdir .bundle/specifications
|
|
||||||
find .bundle/gems -name '*-[0-9]*.gemspec' -exec cp -t .bundle/specifications/ {} +
|
|
||||||
%patch21 -p1
|
|
||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
%patch23 -p1
|
%patch23 -p1
|
||||||
%patch24 -p1
|
%patch24 -p1
|
||||||
%patch25 -p1
|
|
||||||
%patch26 -p1
|
|
||||||
%patch27 -p1
|
%patch27 -p1
|
||||||
%patch28 -p1
|
%patch28 -p1
|
||||||
%patch29 -p1
|
|
||||||
|
|
||||||
# Provide an example of usage of the tapset:
|
# Provide an example of usage of the tapset:
|
||||||
cp -a %{SOURCE3} .
|
cp -a %{SOURCE3} .
|
||||||
@ -910,6 +880,21 @@ checksec --file=libruby.so.%{ruby_version} | \
|
|||||||
puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \
|
puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \
|
||||||
== '%{rubygems_molinillo_version}' ]
|
== '%{rubygems_molinillo_version}' ]
|
||||||
|
|
||||||
|
# OptParse.
|
||||||
|
make runruby TESTRUN_SCRIPT="-e \" \
|
||||||
|
module Gem; end; \
|
||||||
|
require 'rubygems/optparse/lib/optparse'; \
|
||||||
|
puts '%%{rubygems_optparse_version}: %{rubygems_optparse_version}'; \
|
||||||
|
puts %Q[Gem::OptionParser::Version: #{Gem::OptionParser::Version}]; \
|
||||||
|
exit 1 if Gem::OptionParser::Version != '%{rubygems_optparse_version}'; \
|
||||||
|
\""
|
||||||
|
|
||||||
|
# tsort
|
||||||
|
# TODO: Provide some real version test if version is available.
|
||||||
|
make runruby TESTRUN_SCRIPT="-e \" \
|
||||||
|
module Gem; end;\
|
||||||
|
require 'rubygems/tsort/lib/tsort'\""
|
||||||
|
|
||||||
# Check Bundler bundled dependencies versions.
|
# Check Bundler bundled dependencies versions.
|
||||||
|
|
||||||
# connection_pool.
|
# connection_pool.
|
||||||
@ -981,9 +966,6 @@ MSPECOPTS=""
|
|||||||
# Avoid `hostname' dependency.
|
# Avoid `hostname' dependency.
|
||||||
%{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"}
|
%{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"}
|
||||||
|
|
||||||
# https://bugs.ruby-lang.org/issues/18380
|
|
||||||
DISABLE_TESTS="$DISABLE_TESTS -n !/TestAddressResolve#test_socket_getnameinfo_domain_blocking/"
|
|
||||||
|
|
||||||
%ifarch armv7hl
|
%ifarch armv7hl
|
||||||
# TestReadline#test_interrupt_in_other_thread fails on 32 bit arches according
|
# TestReadline#test_interrupt_in_other_thread fails on 32 bit arches according
|
||||||
# to upstream, but the test is disabled just on Travis, not in test suite.
|
# to upstream, but the test is disabled just on Travis, not in test suite.
|
||||||
@ -1255,8 +1237,8 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"
|
|||||||
%{gem_dir}/specifications/default/abbrev-0.1.0.gemspec
|
%{gem_dir}/specifications/default/abbrev-0.1.0.gemspec
|
||||||
%{gem_dir}/specifications/default/base64-0.1.1.gemspec
|
%{gem_dir}/specifications/default/base64-0.1.1.gemspec
|
||||||
%{gem_dir}/specifications/default/benchmark-0.2.0.gemspec
|
%{gem_dir}/specifications/default/benchmark-0.2.0.gemspec
|
||||||
%{gem_dir}/specifications/default/cgi-0.3.1.gemspec
|
%{gem_dir}/specifications/default/cgi-0.3.5.gemspec
|
||||||
%{gem_dir}/specifications/default/csv-3.2.2.gemspec
|
%{gem_dir}/specifications/default/csv-3.2.5.gemspec
|
||||||
%{gem_dir}/specifications/default/date-3.2.2.gemspec
|
%{gem_dir}/specifications/default/date-3.2.2.gemspec
|
||||||
%{gem_dir}/specifications/default/delegate-0.2.0.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/did_you_mean-%{did_you_mean_version}.gemspec
|
||||||
@ -1277,7 +1259,7 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"
|
|||||||
%{gem_dir}/specifications/default/ipaddr-1.2.4.gemspec
|
%{gem_dir}/specifications/default/ipaddr-1.2.4.gemspec
|
||||||
%{gem_dir}/specifications/default/logger-1.5.0.gemspec
|
%{gem_dir}/specifications/default/logger-1.5.0.gemspec
|
||||||
%{gem_dir}/specifications/default/mutex_m-0.1.1.gemspec
|
%{gem_dir}/specifications/default/mutex_m-0.1.1.gemspec
|
||||||
%{gem_dir}/specifications/default/net-http-0.2.0.gemspec
|
%{gem_dir}/specifications/default/net-http-0.3.0.gemspec
|
||||||
%{gem_dir}/specifications/default/net-protocol-0.1.2.gemspec
|
%{gem_dir}/specifications/default/net-protocol-0.1.2.gemspec
|
||||||
%{gem_dir}/specifications/default/nkf-0.1.1.gemspec
|
%{gem_dir}/specifications/default/nkf-0.1.1.gemspec
|
||||||
%{gem_dir}/specifications/default/observer-0.1.1.gemspec
|
%{gem_dir}/specifications/default/observer-0.1.1.gemspec
|
||||||
@ -1293,12 +1275,12 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"
|
|||||||
%{gem_dir}/specifications/default/racc-%{racc_version}.gemspec
|
%{gem_dir}/specifications/default/racc-%{racc_version}.gemspec
|
||||||
%{gem_dir}/specifications/default/readline-0.0.3.gemspec
|
%{gem_dir}/specifications/default/readline-0.0.3.gemspec
|
||||||
%{gem_dir}/specifications/default/readline-ext-0.1.4.gemspec
|
%{gem_dir}/specifications/default/readline-ext-0.1.4.gemspec
|
||||||
%{gem_dir}/specifications/default/reline-0.3.0.gemspec
|
%{gem_dir}/specifications/default/reline-0.3.1.gemspec
|
||||||
%{gem_dir}/specifications/default/resolv-0.2.1.gemspec
|
%{gem_dir}/specifications/default/resolv-0.2.1.gemspec
|
||||||
%{gem_dir}/specifications/default/resolv-replace-0.1.0.gemspec
|
%{gem_dir}/specifications/default/resolv-replace-0.1.0.gemspec
|
||||||
%{gem_dir}/specifications/default/rinda-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/ruby2_keywords-0.0.5.gemspec
|
||||||
%{gem_dir}/specifications/default/securerandom-0.1.1.gemspec
|
%{gem_dir}/specifications/default/securerandom-0.2.0.gemspec
|
||||||
%{gem_dir}/specifications/default/set-1.0.2.gemspec
|
%{gem_dir}/specifications/default/set-1.0.2.gemspec
|
||||||
%{gem_dir}/specifications/default/shellwords-0.1.0.gemspec
|
%{gem_dir}/specifications/default/shellwords-0.1.0.gemspec
|
||||||
%{gem_dir}/specifications/default/singleton-0.1.1.gemspec
|
%{gem_dir}/specifications/default/singleton-0.1.1.gemspec
|
||||||
@ -1397,7 +1379,6 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"
|
|||||||
%doc %{gem_dir}/gems/debug-%{debug_version}/README.md
|
%doc %{gem_dir}/gems/debug-%{debug_version}/README.md
|
||||||
%{gem_dir}/gems/debug-%{debug_version}/Rakefile
|
%{gem_dir}/gems/debug-%{debug_version}/Rakefile
|
||||||
%doc %{gem_dir}/gems/debug-%{debug_version}/TODO.md
|
%doc %{gem_dir}/gems/debug-%{debug_version}/TODO.md
|
||||||
%{gem_dir}/gems/debug-%{debug_version}/bin
|
|
||||||
%{gem_dir}/gems/debug-%{debug_version}/exe
|
%{gem_dir}/gems/debug-%{debug_version}/exe
|
||||||
%{gem_dir}/gems/debug-%{debug_version}/lib
|
%{gem_dir}/gems/debug-%{debug_version}/lib
|
||||||
%{gem_dir}/gems/debug-%{debug_version}/misc
|
%{gem_dir}/gems/debug-%{debug_version}/misc
|
||||||
@ -1488,7 +1469,7 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"
|
|||||||
%license %{gem_dir}/gems/rbs-%{rbs_version}/BSDL
|
%license %{gem_dir}/gems/rbs-%{rbs_version}/BSDL
|
||||||
%doc %{gem_dir}/gems/rbs-%{rbs_version}/CHANGELOG.md
|
%doc %{gem_dir}/gems/rbs-%{rbs_version}/CHANGELOG.md
|
||||||
%license %{gem_dir}/gems/rbs-%{rbs_version}/COPYING
|
%license %{gem_dir}/gems/rbs-%{rbs_version}/COPYING
|
||||||
%{gem_dir}/gems/rbs-%{rbs_version}/Gemfile
|
%{gem_dir}/gems/rbs-%{rbs_version}/Gemfile*
|
||||||
%doc %{gem_dir}/gems/rbs-%{rbs_version}/README.md
|
%doc %{gem_dir}/gems/rbs-%{rbs_version}/README.md
|
||||||
%{gem_dir}/gems/rbs-%{rbs_version}/Rakefile
|
%{gem_dir}/gems/rbs-%{rbs_version}/Rakefile
|
||||||
%{gem_dir}/gems/rbs-%{rbs_version}/Steepfile
|
%{gem_dir}/gems/rbs-%{rbs_version}/Steepfile
|
||||||
@ -1545,7 +1526,6 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"
|
|||||||
%{gem_dir}/gems/typeprof-%{typeprof_version}/lib
|
%{gem_dir}/gems/typeprof-%{typeprof_version}/lib
|
||||||
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/tools
|
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/tools
|
||||||
%exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/typeprof-lsp
|
%exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/typeprof-lsp
|
||||||
%exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/vscode
|
|
||||||
%{gem_dir}/specifications/typeprof-%{typeprof_version}.gemspec
|
%{gem_dir}/specifications/typeprof-%{typeprof_version}.gemspec
|
||||||
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Gemfile*
|
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Gemfile*
|
||||||
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/README.md
|
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/README.md
|
||||||
@ -1553,6 +1533,9 @@ DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Nov 24 2022 Vít Ondruch <vondruch@redhat.com> - 3.1.3-172
|
||||||
|
- Upgrade to Ruby 3.1.3.
|
||||||
|
|
||||||
* Tue Nov 22 2022 Vít Ondruch <vondruch@redhat.com> - 3.1.2-171
|
* Tue Nov 22 2022 Vít Ondruch <vondruch@redhat.com> - 3.1.2-171
|
||||||
- Re-disable package notes. It causes additional issues with installing binary
|
- Re-disable package notes. It causes additional issues with installing binary
|
||||||
gems.
|
gems.
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (ruby-3.1.2.tar.xz) = 4a74e9efc6ea4b3eff4fec7534eb1fff4794d021531defc2e9937e53c6668db8ecdc0fff2bc23d5e6602d0df344a2caa85b31c5414309541e3d5313ec82b6e21
|
SHA512 (ruby-3.1.3.tar.xz) = 4b0fd334ae56132ba98b8a69adad54bdcf7f7aeabd5eba5b0f0399a3868e2054f9026ca1b1cb2dbb197a9e9b0610b263481949c0623a62071546bc5adff8ca69
|
||||||
|
Loading…
Reference in New Issue
Block a user