diff --git a/.gitignore b/.gitignore index 3523d77..a59f941 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /*/ -/ruby-2.*.tar.bz2 -/ruby-2.*.tar.xz +/ruby-*.tar.xz /*.rpm diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index 87583c2..9759776 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 -@@ -3105,6 +3105,11 @@ AS_IF([test ${multiarch+set}], [ +@@ -3211,6 +3211,11 @@ AS_IF([test ${multiarch+set}], [ ]) archlibdir='${libdir}/${arch}' 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 9d5dc20..2e751cb 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 -@@ -3743,7 +3743,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -3852,7 +3852,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 3595c0d..c1b3942 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 -@@ -3807,6 +3807,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -3916,6 +3916,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 diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index f0eeb61..1646675 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 -@@ -3779,6 +3779,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -3888,6 +3888,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='' -@@ -3803,6 +3807,7 @@ AC_SUBST(sitearchdir)dnl +@@ -3912,6 +3916,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl @@ -64,10 +64,10 @@ index 79c003e..34f2382 100644 % R = {} % R["ruby_version"] = '"RUBY_LIB_VERSION"' diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb -index b47b6e1..0b99408 100755 +index e9110a17ca..76a1f0a315 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -343,6 +343,7 @@ def CONFIG.[](name, mandatory = false) +@@ -348,6 +348,7 @@ def CONFIG.[](name, mandatory = false) vendorlibdir = CONFIG["vendorlibdir"] vendorarchlibdir = CONFIG["vendorarchdir"] end @@ -75,7 +75,7 @@ index b47b6e1..0b99408 100755 mandir = CONFIG["mandir", true] docdir = CONFIG["docdir", true] enable_shared = CONFIG["ENABLE_SHARED"] == 'yes' -@@ -570,7 +571,16 @@ def stub +@@ -580,7 +581,16 @@ def stub install?(:local, :comm, :lib) do prepare "library scripts", rubylibdir noinst = %w[*.txt *.rdoc *.gemspec] diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index fc85914..9dc9cc4 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -20,7 +20,7 @@ diff --git a/configure.ac b/configure.ac index 80b137e380..63cd3b4f8b 100644 --- a/configure.ac +++ b/configure.ac -@@ -3694,9 +3694,6 @@ AS_CASE(["$target_os"], +@@ -3803,9 +3803,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], -@@ -3719,56 +3716,62 @@ AC_ARG_WITH(ridir, +@@ -3828,56 +3825,62 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -120,7 +120,7 @@ index 80b137e380..63cd3b4f8b 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -3785,6 +3788,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -3894,6 +3897,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -165,13 +165,13 @@ index 970cb91..5bf8230 100644 - version = RbConfig::CONFIG['ruby_version'] + version = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] - BASE = if RbConfig::CONFIG.key? 'ridir' then - File.join RbConfig::CONFIG['ridir'], version + BASE = File.join RbConfig::CONFIG['ridir'], version + diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index d4c110e..d39c9a6 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -433,7 +433,7 @@ def CONFIG.[](name, mandatory = false) +@@ -438,7 +438,7 @@ def CONFIG.[](name, mandatory = false) install?(:doc, :rdoc) do if $rdocdir @@ -198,33 +198,33 @@ diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb index d4ff4a262c..3f9a5bf590 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb -@@ -32,13 +32,13 @@ def self.default_dir +@@ -38,13 +38,13 @@ def self.default_dir [ File.dirname(RbConfig::CONFIG['sitedir']), 'Gems', -- RbConfig::CONFIG['ruby_version'] +- RbConfig::CONFIG['ruby_version'], + RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ] else [ RbConfig::CONFIG['rubylibprefix'], 'gems', -- RbConfig::CONFIG['ruby_version'] +- RbConfig::CONFIG['ruby_version'], + RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ] end -@@ -75,7 +75,8 @@ def self.default_specifications_dir - - def self.user_dir - parts = [Gem.user_home, '.gem', ruby_engine] +@@ -117,7 +117,8 @@ def self.user_dir + gem_dir = File.join(Gem.user_home, ".gem") + gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir) + parts = [gem_dir, ruby_engine] - parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? + ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + parts << ruby_version_dir_name unless ruby_version_dir_name.empty? File.join parts end -@@ -158,7 +159,7 @@ def self.vendor_dir # :nodoc: +@@ -252,7 +253,7 @@ def self.vendor_dir # :nodoc: return nil unless RbConfig::CONFIG.key? 'vendordir' File.join RbConfig::CONFIG['vendordir'], 'gems', @@ -237,7 +237,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 -@@ -1378,7 +1378,8 @@ def test_self_use_paths +@@ -1369,7 +1369,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, '.gem', Gem.ruby_engine] @@ -245,9 +245,9 @@ index b25068405d..e9fef4a311 100644 + 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? - assert_equal File.join(parts), Gem.user_dir - end -@@ -1454,7 +1455,7 @@ def test_self_vendor_dir + FileUtils.mkdir_p File.join(parts) + +@@ -1447,7 +1448,7 @@ def test_self_vendor_dir vendordir(File.join(@tempdir, 'vendor')) do expected = File.join RbConfig::CONFIG['vendordir'], 'gems', @@ -274,15 +274,15 @@ diff --git a/configure.ac b/configure.ac index a00f2b6776..999e2d6d5d 100644 --- a/configure.ac +++ b/configure.ac -@@ -98,7 +98,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` +@@ -81,7 +81,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) -AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}') +AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version_dir_name}') - AC_CANONICAL_TARGET - test x"$target_alias" = x && + dnl checks for alternative programs + AC_CANONICAL_BUILD -- 2.1.0 diff --git a/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch index 9718d6e..db6737d 100644 --- a/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch +++ b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch @@ -8,126 +8,20 @@ on Red Hat platforms. This workaround rhbz#1361037 --- - test/fiddle/helper.rb | 111 ------------------------------------------ - 1 file changed, 111 deletions(-) + test/fiddle/helper.rb | 3 +++ + 1 file changed, 3 insertions(+) diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb index 1da3d93..65148a1 100644 --- a/test/fiddle/helper.rb +++ b/test/fiddle/helper.rb -@@ -6,115 +6,6 @@ +@@ -139,6 +139,9 @@ + libc_so = libm_so = "/usr/lib/libSystem.B.dylib" + end - libc_so = libm_so = nil - --case RUBY_PLATFORM --when /cygwin/ -- libc_so = "cygwin1.dll" -- libm_so = "cygwin1.dll" --when /android/ -- libdir = '/system/lib' -- if [0].pack('L!').size == 8 -- libdir = '/system/lib64' -- end -- libc_so = File.join(libdir, "libc.so") -- libm_so = File.join(libdir, "libm.so") --when /linux/ -- libdir = '/lib' -- case RbConfig::SIZEOF['void*'] -- when 4 -- # 32-bit ruby -- case RUBY_PLATFORM -- when /armv\w+-linux/ -- # In the ARM 32-bit libc package such as libc6:armhf libc6:armel, -- # libc.so and libm.so are installed to /lib/arm-linux-gnu*. -- # It's not installed to /lib32. -- dirs = Dir.glob('/lib/arm-linux-gnu*') -- libdir = dirs[0] if dirs && File.directory?(dirs[0]) -- else -- libdir = '/lib32' if File.directory? '/lib32' -- end -- when 8 -- # 64-bit ruby -- libdir = '/lib64' if File.directory? '/lib64' -- end -- libc_so = File.join(libdir, "libc.so.6") -- libm_so = File.join(libdir, "libm.so.6") --when /mingw/, /mswin/ -- require "rbconfig" -- crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase' -- libc_so = libm_so = "#{crtname}.dll" --when /darwin/ -- libc_so = libm_so = "/usr/lib/libSystem.B.dylib" --when /kfreebsd/ -- libc_so = "/lib/libc.so.0.1" -- libm_so = "/lib/libm.so.1" --when /gnu/ #GNU/Hurd -- libc_so = "/lib/libc.so.0.3" -- libm_so = "/lib/libm.so.6" --when /mirbsd/ -- libc_so = "/usr/lib/libc.so.41.10" -- libm_so = "/usr/lib/libm.so.7.0" --when /freebsd/ -- libc_so = "/lib/libc.so.7" -- libm_so = "/lib/libm.so.5" --when /bsd|dragonfly/ -- libc_so = "/usr/lib/libc.so" -- libm_so = "/usr/lib/libm.so" --when /solaris/ -- libdir = '/lib' -- case RbConfig::SIZEOF['void*'] -- when 4 -- # 32-bit ruby -- libdir = '/lib' if File.directory? '/lib' -- when 8 -- # 64-bit ruby -- libdir = '/lib/64' if File.directory? '/lib/64' -- end -- libc_so = File.join(libdir, "libc.so") -- libm_so = File.join(libdir, "libm.so") --when /aix/ -- pwd=Dir.pwd -- libc_so = libm_so = "#{pwd}/libaixdltest.so" -- unless File.exist? libc_so -- cobjs=%w!strcpy.o! -- mobjs=%w!floats.o sin.o! -- funcs=%w!sin sinf strcpy strncpy! -- expfile='dltest.exp' -- require 'tmpdir' -- Dir.mktmpdir do |dir| -- begin -- Dir.chdir dir -- %x!/usr/bin/ar x /usr/lib/libc.a #{cobjs.join(' ')}! -- %x!/usr/bin/ar x /usr/lib/libm.a #{mobjs.join(' ')}! -- %x!echo "#{funcs.join("\n")}\n" > #{expfile}! -- require 'rbconfig' -- if RbConfig::CONFIG["GCC"] = 'yes' -- lflag='-Wl,' -- else -- lflag='' -- end -- flags="#{lflag}-bE:#{expfile} #{lflag}-bnoentry -lm" -- %x!#{RbConfig::CONFIG["LDSHARED"]} -o #{libc_so} #{(cobjs+mobjs).join(' ')} #{flags}! -- ensure -- Dir.chdir pwd -- end -- end -- end --else -- libc_so = ARGV[0] if ARGV[0] && ARGV[0][0] == ?/ -- libm_so = ARGV[1] if ARGV[1] && ARGV[1][0] == ?/ -- if( !(libc_so && libm_so) ) -- $stderr.puts("libc and libm not found: #{$0} ") -- end --end -- --libc_so = nil if !libc_so || (libc_so[0] == ?/ && !File.file?(libc_so)) --libm_so = nil if !libm_so || (libm_so[0] == ?/ && !File.file?(libm_so)) -- --# macOS 11.0+ removed libSystem.B.dylib from /usr/lib. But It works with dlopen. --if RUBY_PLATFORM =~ /darwin/ -- libc_so = libm_so = "/usr/lib/libSystem.B.dylib" --end -- ++# Just ignore the heuristic, because it is not reliable on all platforms. ++libc_so = libm_so = nil ++ if !libc_so || !libm_so ruby = EnvUtil.rubybin # When the ruby binary is 32-bit and the host is 64-bit, diff --git a/ruby-2.7.0-Initialize-ABRT-hook.patch b/ruby-2.7.0-Initialize-ABRT-hook.patch index 5dd2654..2b90d9e 100644 --- a/ruby-2.7.0-Initialize-ABRT-hook.patch +++ b/ruby-2.7.0-Initialize-ABRT-hook.patch @@ -15,7 +15,7 @@ To keep the things simple for now, load the ABRT hook via C. [4]: https://github.com/ruby/ruby/pull/2735 [5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/ --- - abrt.c | 12 ++++++++++++++ + abrt.c | 12 ++++++++++++ common.mk | 3 ++- ruby.c | 4 ++++ 3 files changed, 18 insertions(+), 1 deletion(-) @@ -57,7 +57,7 @@ diff --git a/ruby.c b/ruby.c index 60c57d6259..1eec16f2c8 100644 --- a/ruby.c +++ b/ruby.c -@@ -1451,10 +1451,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) +@@ -1489,10 +1489,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) void Init_builtin_features(void); diff --git a/ruby-2.7.0-Remove-RubyGems-dependency.patch b/ruby-2.7.0-Remove-RubyGems-dependency.patch deleted file mode 100644 index 4166900..0000000 --- a/ruby-2.7.0-Remove-RubyGems-dependency.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 6532dbecf36d1f24dab1f2143afd171e0b7699eb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -Date: Wed, 4 Sep 2019 15:07:07 +0200 -Subject: [PATCH] Remove RubyGems dependency. - -Since `Process::RLIMIT_NOFILE` is platform specific, better to use Ruby -introspection than detecting platform. ---- - .../vendor/net-http-persistent/lib/net/http/persistent.rb | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb -index a54be2a..06739f1 100644 ---- a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb -+++ b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb -@@ -197,10 +197,10 @@ class Bundler::Persistent::Net::HTTP::Persistent - ## - # The default connection pool size is 1/4 the allowed open files. - -- if Gem.win_platform? then -- DEFAULT_POOL_SIZE = 256 -- else -+ if Process.const_defined? :RLIMIT_NOFILE - DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4 -+ else -+ DEFAULT_POOL_SIZE = 256 - end - - ## --- -2.23.0 - 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 81384ba..64e2114 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,7 +20,7 @@ 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 -@@ -19,7 +19,7 @@ def test_bug_reporter_add +@@ -21,7 +21,7 @@ def test_bug_reporter_add args = ["--disable-gems", "-r-test-/bug_reporter", "-C", tmpdir] stdin = "register_sample_bug_reporter(12345); Process.kill :SEGV, $$" diff --git a/ruby-2.8.0-remove-unneeded-gem-require-for-ipaddr.patch b/ruby-2.8.0-remove-unneeded-gem-require-for-ipaddr.patch deleted file mode 100644 index c6923ee..0000000 --- a/ruby-2.8.0-remove-unneeded-gem-require-for-ipaddr.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 0689147586c6cb56b91bf0f368890f19d630ece1 Mon Sep 17 00:00:00 2001 -From: nobletrout -Date: Tue, 5 Feb 2019 08:14:02 -0500 -Subject: [PATCH] remove unneeded gem require for ipaddr - -ipaddr is a builtin class for ruby, that is occasionally merged. If the version isn't specified by the runtime dependency, then it will default to needing the latest gem rather than the version that ships with that version of ruby. That will lead to all kinds of potential dependency fails that are most likely unneeded since this gem already requires ruby > 2.3.0 ---- - ext/openssl/openssl.gemspec | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/ext/openssl/openssl.gemspec b/ext/openssl/openssl.gemspec -index 7c17cd54..f721f247 100644 ---- a/ext/openssl/openssl.gemspec -+++ b/ext/openssl/openssl.gemspec -@@ -21,7 +21,6 @@ Gem::Specification.new do |spec| - s.rubygems_version = "3.0.0.beta1" - s.summary = "OpenSSL provides SSL, TLS and general purpose cryptography." - -- s.add_runtime_dependency("ipaddr", [">= 0"]) - s.add_development_dependency("rake", [">= 0"]) - s.add_development_dependency("rake-compiler", [">= 0"]) - s.add_development_dependency("test-unit", ["~> 3.0"]) diff --git a/ruby-3.0.0-preview1-Enable-arm64-optimizations-that-exist-for-power-x86.patch b/ruby-3.0.0-preview1-Enable-arm64-optimizations-that-exist-for-power-x86.patch deleted file mode 100644 index decb45f..0000000 --- a/ruby-3.0.0-preview1-Enable-arm64-optimizations-that-exist-for-power-x86.patch +++ /dev/null @@ -1,178 +0,0 @@ -From c5806d668f84a86e9e6a522f84b8aa6cb4cdaae9 Mon Sep 17 00:00:00 2001 -From: Ali Saidi -Date: Wed, 5 Aug 2020 20:46:28 -0500 -Subject: [PATCH 1/3] Enable unaligned accesses on arm64 - -64-bit Arm platforms support unaligned accesses. - -Running the string benchmarks this change improves performance -by an average of 1.04x, min .96x, max 1.21x, median 1.01x ---- - include/ruby/defines.h | 2 +- - regint.h | 2 +- - siphash.c | 2 +- - st.c | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/include/ruby/defines.h b/include/ruby/defines.h -index 49f673ef936a..0193275e8b78 100644 ---- a/include/ruby/defines.h -+++ b/include/ruby/defines.h -@@ -485,7 +485,7 @@ - #ifndef UNALIGNED_WORD_ACCESS - # if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \ -- defined(__powerpc64__) || \ -+ defined(__powerpc64__) || defined(__aarch64__) || \ - defined(__mc68020__) - # define UNALIGNED_WORD_ACCESS 1 - # else -diff --git a/regint.h b/regint.h -index a2f5bbba1d1f..0740429688bc 100644 ---- a/regint.h -+++ b/regint.h -@@ -52,7 +52,7 @@ - #ifndef UNALIGNED_WORD_ACCESS - # if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \ -- defined(__powerpc64__) || \ -+ defined(__powerpc64__) || defined(__aarch64__) || \ - defined(__mc68020__) - # define UNALIGNED_WORD_ACCESS 1 - # else -diff --git a/siphash.c b/siphash.c -index 153d2c690ab9..ddf8ee245d81 100644 ---- a/siphash.c -+++ b/siphash.c -@@ -30,7 +30,7 @@ - #ifndef UNALIGNED_WORD_ACCESS - # if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \ -- defined(__powerpc64__) || \ -+ defined(__powerpc64__) || defined(__aarch64__) || \ - defined(__mc68020__) - # define UNALIGNED_WORD_ACCESS 1 - # endif -diff --git a/st.c b/st.c -index c11535ef9779..8be466bf733f 100644 ---- a/st.c -+++ b/st.c -@@ -1815,7 +1815,7 @@ st_values_check(st_table *tab, st_data_t *values, st_index_t size, - #ifndef UNALIGNED_WORD_ACCESS - # if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \ -- defined(__powerpc64__) || \ -+ defined(__powerpc64__) || defined(__aarch64__) || \ - defined(__mc68020__) - # define UNALIGNED_WORD_ACCESS 1 - # endif - -From 79b7b9143fda0f33fc9375980cecc61eb42c6f66 Mon Sep 17 00:00:00 2001 -From: Ali Saidi -Date: Wed, 5 Aug 2020 21:04:37 -0500 -Subject: [PATCH 2/3] arm64 enable gc optimizations - -Similar to x86 and powerpc optimizations. - -| |compare-ruby|built-ruby| -|:------|-----------:|---------:| -|hash1 | 0.225| 0.237| -| | -| 1.05x| -|hash2 | 0.110| 0.110| -| | 1.00x| -| ---- - gc.c | 13 +++++++++++++ - gc.h | 2 ++ - 2 files changed, 15 insertions(+) - -diff --git a/gc.c b/gc.c -index 22972dfc806c..788f06f1586e 100644 ---- a/gc.c -+++ b/gc.c -@@ -1153,6 +1153,19 @@ tick(void) - return val; - } - -+#elif defined(__aarch64__) && defined(__GNUC__) -+typedef unsigned long tick_t; -+#define PRItick "lu" -+ -+static __inline__ tick_t -+tick(void) -+{ -+ unsigned long val; -+ __asm__ __volatile__ ("mrs %0, cntvct_el0", : "=r" (val)); -+ return val; -+} -+ -+ - #elif defined(_WIN32) && defined(_MSC_VER) - #include - typedef unsigned __int64 tick_t; -diff --git a/gc.h b/gc.h -index 6568079c54e5..47a4ca19a0c5 100644 ---- a/gc.h -+++ b/gc.h -@@ -8,6 +8,8 @@ - #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movl\t%%esp, %0" : "=r" (*(p))) - #elif defined(__powerpc64__) && defined(__GNUC__) - #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mr\t%0, %%r1" : "=r" (*(p))) -+#elif defined(__aarch64__) && defined(__GNUC__) -+#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mov\t%0, sp" : "=r" (*(p))) - #else - NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p)); - #define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p) - -From c985b8c6868a380e44e285368af4a4f414ce3309 Mon Sep 17 00:00:00 2001 -From: Ali Saidi -Date: Wed, 5 Aug 2020 21:15:55 -0500 -Subject: [PATCH 3/3] vm_exec.c: improve performance for arm64 - -| |compare-ruby|built-ruby| -|:------------------------------|-----------:|---------:| -|vm_array | 26.501M| 27.959M| -| | -| 1.06x| -|vm_attr_ivar | 21.606M| 31.429M| -| | -| 1.45x| -|vm_attr_ivar_set | 21.178M| 26.113M| -| | -| 1.23x| -|vm_backtrace | 6.621| 6.668| -| | -| 1.01x| -|vm_bigarray | 26.205M| 29.958M| -| | -| 1.14x| -|vm_bighash | 504.155k| 479.306k| -| | 1.05x| -| -|vm_block | 16.692M| 21.315M| -| | -| 1.28x| -|block_handler_type_iseq | 5.083| 7.004| -| | -| 1.38x| ---- - vm_exec.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/vm_exec.c b/vm_exec.c -index ce2e053ee745..7aa56f6ad620 100644 ---- a/vm_exec.c -+++ b/vm_exec.c -@@ -27,6 +27,9 @@ static void vm_insns_counter_count_insn(int insn) {} - #elif defined(__GNUC__) && defined(__powerpc64__) - #define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("r" reg) - -+#elif defined(__GNUC__) && defined(__aarch64__) -+#define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("x" reg) -+ - #else - #define DECL_SC_REG(type, r, reg) register type reg_##r - #endif -@@ -74,6 +77,11 @@ vm_exec_core(rb_execution_context_t *ec, VALUE initial) - DECL_SC_REG(rb_control_frame_t *, cfp, "15"); - #define USE_MACHINE_REGS 1 - -+#elif defined(__GNUC__) && defined(__aarch64__) -+ DECL_SC_REG(const VALUE *, pc, "19"); -+ DECL_SC_REG(rb_control_frame_t *, cfp, "20"); -+#define USE_MACHINE_REGS 1 -+ - #else - register rb_control_frame_t *reg_cfp; - const VALUE *reg_pc; diff --git a/ruby.spec b/ruby.spec index 3d3d309..23a9fbc 100644 --- a/ruby.spec +++ b/ruby.spec @@ -1,6 +1,6 @@ -%global major_version 2 -%global minor_version 7 -%global teeny_version 2 +%global major_version 3 +%global minor_version 0 +%global teeny_version 0 %global major_minor_version %{major_version}.%{minor_version} %global ruby_version %{major_minor_version}.%{teeny_version} @@ -9,20 +9,20 @@ # Specify the named version. It has precedense to revision. #%%global milestone rc1 -# Keep the revision enabled for pre-releases from SVN. -#%%global revision af11efd377 +# Keep the revision enabled for pre-releases from GIT. +#%%global revision 684649ea05 %global ruby_archive %{name}-%{ruby_version} # If revision and milestone are removed/commented out, the official release build is expected. %if 0%{?milestone:1}%{?revision:1} != 0 %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision}} -%define ruby_archive_timestamp %(stat --printf='@%Y' %{ruby_archive}.tar.xz | date -f - +"%Y%m%d") +%define ruby_archive_timestamp %(stat --printf='@%Y' %{_sourcedir}/%{ruby_archive}.tar.xz | date -f - +"%Y%m%d") %define development_release %{?milestone}%{?!milestone:%{?revision:%{ruby_archive_timestamp}git%{revision}}} %endif -%global release 137 +%global release 138 %{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory tree, since the @@ -30,43 +30,42 @@ %global rubygems_dir %{_datadir}/rubygems # Bundled libraries versions -%global rubygems_version 3.1.4 -%global rubygems_molinillo_version 0.5.7 +%global rubygems_version 3.2.3 +%global rubygems_molinillo_version 0.7.0 # Default gems. -%global bundler_version 2.1.4 +%global bundler_version 2.2.3 %global bundler_connection_pool_version 2.2.2 -%global bundler_fileutils_version 1.3.0 -%global bundler_molinillo_version 0.6.6 -%global bundler_net_http_persistent_version 3.1.0 -%global bundler_thor_version 1.0.0 +%global bundler_fileutils_version 1.4.1 +%global bundler_molinillo_version 0.7.0 +%global bundler_net_http_persistent_version 4.0.0 +%global bundler_thor_version 1.0.1 +%global bundler_tmpdir_version 0.1.0 +%global bundler_uri_version 0.10.0 -%global bigdecimal_version 2.0.0 -%global did_you_mean_version 1.4.0 +%global bigdecimal_version 3.0.0 +%global did_you_mean_version 1.5.0 +%global erb_version 2.2.0 %global io_console_version 0.5.6 -%global irb_version 1.2.6 -%global json_version 2.3.0 -%global net_telnet_version 0.2.0 -%global openssl_version 2.1.2 -%global psych_version 3.1.0 -%global racc_version 1.4.16 -%global rdoc_version 6.2.1 -%global xmlrpc_version 0.3.0 +%global irb_version 1.3.0 +%global json_version 2.5.1 +%global openssl_version 2.2.0 +%global psych_version 3.3.0 +%global racc_version 1.5.1 +%global rdoc_version 6.3.0 # Bundled gems. -%global minitest_version 5.13.0 -%global power_assert_version 1.1.7 -%global rake_version 13.0.1 -%global test_unit_version 3.3.4 +%global minitest_version 5.14.2 +%global power_assert_version 1.2.0 +%global rake_version 13.0.3 +%global rbs_version 1.0.0 +%global test_unit_version 3.3.7 +%global rexml_version 3.2.4 +%global rss_version 0.2.9 +%global typeprof_version 0.11.0 -# Might not be needed in the future, if we are lucky enough. -# https://bugzilla.redhat.com/show_bug.cgi?id=888262 -%global tapset_root %{_datadir}/systemtap -%global tapset_dir %{tapset_root}/tapset %global tapset_libdir %(echo %{_libdir} | sed 's/64//')* -%global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/') - %if 0%{?fedora} >= 19 %bcond_without rubypick %endif @@ -147,38 +146,14 @@ Patch6: ruby-2.7.0-Initialize-ABRT-hook.patch # hardening features of glibc (rhbz#1361037). # https://bugs.ruby-lang.org/issues/12666 Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch -# Revert commit which breaks bundled net-http-persistent version check. -# https://github.com/drbrain/net-http-persistent/pull/109 -Patch10: ruby-2.7.0-Remove-RubyGems-dependency.patch -# Prevent issues with openssl loading when RubyGems are disabled. -# https://github.com/ruby/openssl/pull/242 -Patch13: ruby-2.8.0-remove-unneeded-gem-require-for-ipaddr.patch -# Fix `require` behavior allowing to load libraries multiple times. -# https://github.com/rubygems/rubygems/issues/3647 -# Because there were multiple fixes in `Kernel.require` in recent months, -# pickup all the changes one by one instead of squashing them. -# https://github.com/rubygems/rubygems/pull/3124 -Patch15: rubygems-3.1.3-Fix-I-require-priority.patch -# https://github.com/rubygems/rubygems/pull/3133 -Patch16: rubygems-3.1.3-Improve-require.patch -# https://github.com/rubygems/rubygems/pull/3153 -Patch17: rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch -# https://github.com/rubygems/rubygems/pull/3639 -Patch18: rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch # Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add. # https://bugs.ruby-lang.org/issues/16492 Patch19: ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch -# Enable arm64 optimizations. -# https://bugzilla.redhat.com/show_bug.cgi?id=1884728 -# https://github.com/ruby/ruby/pull/3393 -Patch20: ruby-3.0.0-preview1-Enable-arm64-optimizations-that-exist-for-power-x86.patch Requires: %{name}-libs%{?_isa} = %{version}-%{release} Suggests: rubypick Recommends: ruby(rubygems) >= %{rubygems_version} Recommends: rubygem(bigdecimal) >= %{bigdecimal_version} -# Change this to requires, hopefully just as temporary measure. -# https://bugs.ruby-lang.org/issues/16431 Recommends: rubygem(openssl) >= %{openssl_version} BuildRequires: autoconf @@ -243,12 +218,15 @@ Provides: bundled(ccan-list) Provides: bundled(rubygem-did_you_mean) = %{did_you_mean_version} Provides: bundled(rubygem-racc) = %{racc_version} -# Tcl/Tk support was removed from stdlib in Ruby 2.4, i.e. F27 timeframe -# so lets obsolete it. This is not the best place, but we don't have -# better, unless https://fedorahosted.org/fpc/ticket/645 provides some -# generic solution. +# 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 +# TODO: Update the versions prior landing in Fedora. +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. @@ -451,6 +429,8 @@ Provides: bundled(rubygem-fileutils) = %{bundler_fileutils_version} Provides: bundled(rubygem-molinillo) = %{bundler_molinillo_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 %description -n rubygem-bundler @@ -517,23 +497,18 @@ Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax. -%package -n rubygem-net-telnet -Summary: Provides telnet client functionality -Version: %{net_telnet_version} +%package -n rubygem-rbs +Summary: Type signature for Ruby +Version: %{rbs_version} +License: Ruby or BSD Requires: ruby(release) Requires: ruby(rubygems) >= %{rubygems_version} -Provides: rubygem(net-telnet) = %{version}-%{release} +Provides: rubygem(rbs) = %{version}-%{release} BuildArch: noarch -%description -n rubygem-net-telnet -Provides telnet client functionality. - -This class also has, through delegation, all the methods of a socket object -(by default, a TCPSocket, but can be set by the Proxy option to new()). This -provides methods such as close() to end the session and sysread() to read data -directly from the host, instead of via the waitfor() mechanism. Note that if -you do use sysread() directly when in telnet mode, you should probably pass -the output through preprocess() to extract telnet command sequences. +%description -n rubygem-rbs +RBS is the language for type signatures for Ruby and standard library +definitions. %package -n rubygem-test-unit @@ -555,18 +530,62 @@ programming software development methodology, for Smalltalk's SUnit. It allows writing tests, checking results and automated testing in Ruby. -%package -n rubygem-xmlrpc -Summary: XMLRPC is a lightweight protocol that enables remote procedure calls over HTTP -Version: %{xmlrpc_version} -License: Ruby or BSD +%package -n rubygem-rexml +Summary: An XML toolkit for Ruby +Version: %{rexml_version} +License: BSD +URL: https://github.com/ruby/rexml Requires: ruby(release) Requires: ruby(rubygems) >= %{rubygems_version} -Provides: rubygem(xmlrpc) = %{version}-%{release} +Provides: rubygem(rexml) = %{version}-%{release} BuildArch: noarch -%description -n rubygem-xmlrpc -XMLRPC is a lightweight protocol that enables remote procedure calls over -HTTP. +%description -n rubygem-rexml +REXML was inspired by the Electric XML library for Java, which features an +easy-to-use API, small size, and speed. Hopefully, REXML, designed with the same +philosophy, has these same features. I've tried to keep the API as intuitive as +possible, and have followed the Ruby methodology for method naming and code +flow, rather than mirroring the Java API. + +REXML supports both tree and stream document parsing. Stream parsing is faster +(about 1.5 times as fast). However, with stream parsing, you don't get access to +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/ruby/rss +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(rss) = %{version}-%{release} +BuildArch: noarch + +%description -n rubygem-rss +Really Simple Syndication (RSS) is a family of formats that describe 'feeds', +specially constructed XML documents that allow an interested person to subscribe +and receive updates from a particular web service. This library provides tooling +to read and create these feeds. + + +%package -n rubygem-typeprof +Version: %{typeprof_version} +Summary: TypeProf is a type analysis tool for Ruby code based on abstract interpretation +License: MIT +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 + +%description -n rubygem-typeprof +TypeProf performs a type analysis of non-annotated Ruby code. +It abstractly executes input Ruby code in a level of types instead of values, +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. %prep @@ -584,14 +603,7 @@ rm -rf ext/fiddle/libffi* %patch5 -p1 %patch6 -p1 %patch9 -p1 -%patch10 -p1 -%patch13 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 %patch19 -p1 -%patch20 -p1 # Provide an example of usage of the tapset: cp -a %{SOURCE3} . @@ -621,11 +633,13 @@ autoconf # Q= makes the build output more verbose and allows to check Fedora # compiler options. -make %{?_smp_mflags} COPY="cp -p" Q= +%make_build COPY="cp -p" Q= %install rm -rf %{buildroot} -make install DESTDIR=%{buildroot} +%make_install + +# TODO: Regenerate RBS parser in lib/rbs/parser.rb # Rename ruby/config.h to ruby/config-.h to avoid file conflicts on # multilib systems and install config.h wrapper @@ -643,12 +657,11 @@ sed -i 's/Version: \${ruby_version}/Version: %{ruby_version}/' %{buildroot}%{_li # Kill bundled certificates, as they should be part of ca-certificates. for cert in \ - rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem \ - rubygems.org/AddTrustExternalCARoot.pem \ - index.rubygems.org/GlobalSignRootCA.pem + rubygems.org/GlobalSignRootCA.pem \ + rubygems.org/GlobalSignRootCA_R3.pem do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert - rm -r $(dirname %{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)" @@ -765,11 +778,11 @@ mv %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/doc/rake.1 %{buildroot}%{_ma %if %{with systemtap} # Install a tapset and fix up the path to the library. -mkdir -p %{buildroot}%{tapset_dir} +mkdir -p %{buildroot}%{_systemtap_tapsetdir} sed -e "s|@LIBRARY_PATH@|%{tapset_libdir}/libruby.so.%{major_minor_version}|" \ - %{SOURCE2} > %{buildroot}%{tapset_dir}/libruby.so.%{major_minor_version}.stp + %{SOURCE2} > %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp # Escape '*/' in comment. -sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{tapset_dir}/libruby.so.%{major_minor_version}.stp +sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp %endif # Prepare -doc subpackage file lists. @@ -819,7 +832,7 @@ checksec --file=libruby.so.%{ruby_version} | \ # FileUtils. [ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ module Bundler; end; \ - require 'bundler/vendor/fileutils/lib/fileutils/version'; \ + require 'bundler/vendor/fileutils/lib/fileutils'; \ puts Bundler::FileUtils::VERSION\\\"\" | tail -1`" \ == '%{bundler_fileutils_version}' ] @@ -845,6 +858,17 @@ checksec --file=libruby.so.%{ruby_version} | \ puts Bundler::Thor::VERSION\\\"\" | tail -1`" \ == '%{bundler_thor_version}' ] +# tmpdir. +# TODO: There is no version in bundled tmpdir yet. +#%%{global bundler_tmpdir_version} + +# 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}' ] + # test_debug(TestRubyOptions) fails due to LoadError reported in debug mode, # when abrt.rb cannot be required (seems to be easier way then customizing @@ -864,14 +888,9 @@ MSPECOPTS="" # Avoid `hostname' dependency. %{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"} -# Disable "File.utime allows Time instances in the far future to set -# mtime and atime". -# https://bugs.ruby-lang.org/issues/16410 -MSPECOPTS="$MSPECOPTS -P 'File.utime allows Time instances in the far future to set mtime and atime'" - -# Disable File.lchmod specs, which fails when building against glibc 2.31.9000. -# https://bugs.ruby-lang.org/issues/16749 -MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not of the file'" +# The test suite gets stuck in 'C-API Kernel function rb_rescue2'. +# https://bugs.ruby-lang.org/issues/17338 +MSPECOPTS="$MSPECOPTS -P 'raises TypeError if one of the passed exceptions is not a Module'" # Give an option to increase the timeout in tests. # https://bugs.ruby-lang.org/issues/16921 @@ -908,7 +927,7 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %license GPL %license LEGAL %doc README.md -%doc NEWS +%doc NEWS.md # Exclude /usr/local directory since it is supposed to be managed by # local system administrator. %exclude %{ruby_sitelibdir} @@ -952,6 +971,7 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %{ruby_libdir}/monitor.rb %{ruby_libdir}/mutex_m.rb %{ruby_libdir}/net +%{ruby_libdir}/objspace.rb %{ruby_libdir}/observer* %{ruby_libdir}/open-uri.rb %{ruby_libdir}/open3* @@ -967,12 +987,10 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %{ruby_libdir}/reline* %{ruby_libdir}/resolv.rb %{ruby_libdir}/resolv-replace.rb -%{ruby_libdir}/rexml %{ruby_libdir}/rinda %{ruby_libdir}/ripper* -%{ruby_libdir}/rss* %{ruby_libdir}/securerandom.rb -%{ruby_libdir}/set.rb +%{ruby_libdir}/set* %{ruby_libdir}/shellwords.rb %{ruby_libdir}/singleton* %{ruby_libdir}/socket.rb @@ -987,7 +1005,6 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %{ruby_libdir}/un.rb %{ruby_libdir}/uri* %{ruby_libdir}/weakref* -%{ruby_libdir}/webrick* %{ruby_libdir}/yaml* # Platform specific libraries. @@ -1087,7 +1104,6 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %{ruby_libarchdir}/rbconfig/sizeof.so %{ruby_libarchdir}/readline.so %{ruby_libarchdir}/ripper.so -%{ruby_libarchdir}/sdbm.so %{ruby_libarchdir}/socket.so %{ruby_libarchdir}/stringio.so %{ruby_libarchdir}/strscan.so @@ -1100,7 +1116,7 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %dir %{ruby_libarchdir}/racc %{ruby_libarchdir}/racc/cparse.so -%{?with_systemtap:%{tapset_root}} +%{?with_systemtap:%{_systemtap_datadir}} %files -n rubygems %{_bindir}/gem @@ -1131,59 +1147,86 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %{_rpmconfigdir}/rubygems.con %files default-gems -%{gem_dir}/specifications/default/benchmark-0.1.0.gemspec -%{gem_dir}/specifications/default/cgi-0.1.0.gemspec -%{gem_dir}/specifications/default/csv-3.1.2.gemspec -%{gem_dir}/specifications/default/date-3.0.0.gemspec +%{gem_dir}/specifications/default/english-0.7.1.gemspec +%{gem_dir}/specifications/default/abbrev-0.1.0.gemspec +%{gem_dir}/specifications/default/base64-0.1.0.gemspec +%{gem_dir}/specifications/default/benchmark-0.1.1.gemspec +%{gem_dir}/specifications/default/cgi-0.2.0.gemspec +%{gem_dir}/specifications/default/csv-3.1.9.gemspec +%{gem_dir}/specifications/default/date-3.1.0.gemspec %{gem_dir}/specifications/default/dbm-1.1.0.gemspec -%{gem_dir}/specifications/default/delegate-0.1.0.gemspec +%{gem_dir}/specifications/default/debug-0.1.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/etc-1.1.0.gemspec +%{gem_dir}/specifications/default/digest-3.0.0.gemspec +%{gem_dir}/specifications/default/drb-2.0.4.gemspec +%{gem_dir}/specifications/default/erb-%{erb_version}.gemspec +%{gem_dir}/specifications/default/etc-1.2.0.gemspec %{gem_dir}/specifications/default/fcntl-1.0.0.gemspec -%{gem_dir}/specifications/default/fiddle-1.0.0.gemspec -%{gem_dir}/specifications/default/fileutils-1.4.1.gemspec -%{gem_dir}/specifications/default/forwardable-1.3.1.gemspec +%{gem_dir}/specifications/default/fiddle-1.0.6.gemspec +%{gem_dir}/specifications/default/fileutils-1.5.0.gemspec +%{gem_dir}/specifications/default/find-0.1.0.gemspec +%{gem_dir}/specifications/default/forwardable-1.3.2.gemspec %{gem_dir}/specifications/default/gdbm-2.1.0.gemspec -%{gem_dir}/specifications/default/getoptlong-0.1.0.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.1.0.gemspec %{gem_dir}/specifications/default/ipaddr-1.2.2.gemspec -%{gem_dir}/specifications/default/logger-1.4.2.gemspec -%{gem_dir}/specifications/default/matrix-0.2.0.gemspec -%{gem_dir}/specifications/default/mutex_m-0.1.0.gemspec -%{gem_dir}/specifications/default/net-pop-0.1.0.gemspec -%{gem_dir}/specifications/default/net-smtp-0.1.0.gemspec -%{gem_dir}/specifications/default/observer-0.1.0.gemspec -%{gem_dir}/specifications/default/open3-0.1.0.gemspec -%{gem_dir}/specifications/default/ostruct-0.2.0.gemspec -%{gem_dir}/specifications/default/prime-0.1.1.gemspec -%{gem_dir}/specifications/default/pstore-0.1.0.gemspec +%{gem_dir}/specifications/default/logger-1.4.3.gemspec +%{gem_dir}/specifications/default/matrix-0.3.1.gemspec +%{gem_dir}/specifications/default/mutex_m-0.1.1.gemspec +%{gem_dir}/specifications/default/net-ftp-0.1.1.gemspec +%{gem_dir}/specifications/default/net-http-0.1.1.gemspec +%{gem_dir}/specifications/default/net-imap-0.1.1.gemspec +%{gem_dir}/specifications/default/net-pop-0.1.1.gemspec +%{gem_dir}/specifications/default/net-protocol-0.1.0.gemspec +%{gem_dir}/specifications/default/net-smtp-0.2.1.gemspec +%{gem_dir}/specifications/default/nkf-0.1.0.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.1.0.gemspec +%{gem_dir}/specifications/default/optparse-0.1.0.gemspec +%{gem_dir}/specifications/default/ostruct-0.3.1.gemspec +%{gem_dir}/specifications/default/pathname-0.1.0.gemspec +%{gem_dir}/specifications/default/pp-0.1.0.gemspec +%{gem_dir}/specifications/default/prettyprint-0.1.0.gemspec +%{gem_dir}/specifications/default/prime-0.1.2.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.2.gemspec -%{gem_dir}/specifications/default/readline-ext-0.1.0.gemspec -%{gem_dir}/specifications/default/reline-0.1.5.gemspec -%{gem_dir}/specifications/default/rexml-3.2.3.gemspec -%{gem_dir}/specifications/default/rss-0.2.8.gemspec -%{gem_dir}/specifications/default/sdbm-1.0.0.gemspec -%{gem_dir}/specifications/default/singleton-0.1.0.gemspec -%{gem_dir}/specifications/default/stringio-0.1.0.gemspec -%{gem_dir}/specifications/default/strscan-1.0.3.gemspec -%{gem_dir}/specifications/default/timeout-0.1.0.gemspec -%{gem_dir}/specifications/default/tracer-0.1.0.gemspec -%{gem_dir}/specifications/default/uri-0.10.0.gemspec -%{gem_dir}/specifications/default/webrick-1.6.0.gemspec -%{gem_dir}/specifications/default/yaml-0.1.0.gemspec +%{gem_dir}/specifications/default/readline-ext-0.1.1.gemspec +%{gem_dir}/specifications/default/reline-0.2.0.gemspec +%{gem_dir}/specifications/default/resolv-0.2.0.gemspec +%{gem_dir}/specifications/default/resolv-replace-0.1.0.gemspec +%{gem_dir}/specifications/default/rinda-0.1.0.gemspec +%{gem_dir}/specifications/default/securerandom-0.1.0.gemspec +%{gem_dir}/specifications/default/set-1.0.1.gemspec +%{gem_dir}/specifications/default/shellwords-0.1.0.gemspec +%{gem_dir}/specifications/default/singleton-0.1.1.gemspec +%{gem_dir}/specifications/default/stringio-3.0.0.gemspec +%{gem_dir}/specifications/default/strscan-3.0.0.gemspec +%{gem_dir}/specifications/default/syslog-0.1.0.gemspec +%{gem_dir}/specifications/default/tempfile-0.1.1.gemspec +%{gem_dir}/specifications/default/time-0.1.0.gemspec +%{gem_dir}/specifications/default/timeout-0.1.1.gemspec +%{gem_dir}/specifications/default/tmpdir-0.1.1.gemspec +%{gem_dir}/specifications/default/tsort-0.1.0.gemspec +%{gem_dir}/specifications/default/tracer-0.1.1.gemspec +%{gem_dir}/specifications/default/un-0.1.0.gemspec +%{gem_dir}/specifications/default/uri-0.10.1.gemspec +%{gem_dir}/specifications/default/weakref-0.1.1.gemspec +#%%{gem_dir}/specifications/default/win32ole-1.8.8.gemspec +%{gem_dir}/specifications/default/yaml-0.1.1.gemspec %{gem_dir}/specifications/default/zlib-1.1.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 -# These have wrong shebangs. Exclude them for now and let's see what upstream -# thinks about them. -# https://bugs.ruby-lang.org/issues/15982 -%exclude %{_bindir}/{racc2y,y2racc} -%exclude %{gem_dir}/gems/racc-%{racc_version}/bin/{racc2y,y2racc} -%{gem_dir}/gems/racc-%{racc_version} +%exclude %{gem_dir}/gems/racc-%{racc_version}/bin + %files -n rubygem-irb %{_bindir}/irb @@ -1255,11 +1298,6 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %exclude %{gem_dir}/gems/minitest-%{minitest_version}/.* %{gem_dir}/specifications/minitest-%{minitest_version}.gemspec -%files -n rubygem-net-telnet -%{gem_dir}/gems/net-telnet-%{net_telnet_version} -%exclude %{gem_dir}/gems/net-telnet-%{net_telnet_version}/.* -%{gem_dir}/specifications/net-telnet-%{net_telnet_version}.gemspec - %files -n rubygem-power_assert %{gem_dir}/gems/power_assert-%{power_assert_version} %exclude %{gem_dir}/gems/power_assert-%{power_assert_version}/.* @@ -1271,24 +1309,81 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not %{gem_dir}/specifications/rake-%{rake_version}.gemspec %{_mandir}/man1/rake.1* +%files -n rubygem-rbs +%{_bindir}/rbs +%dir %{gem_dir}/gems/rbs-%{rbs_version} +%exclude %{gem_dir}/gems/rbs-%{rbs_version}/.* +%license %{gem_dir}/gems/rbs-%{rbs_version}/BSDL +%doc %{gem_dir}/gems/rbs-%{rbs_version}/CHANGELOG.md +%license %{gem_dir}/gems/rbs-%{rbs_version}/COPYING +%{gem_dir}/gems/rbs-%{rbs_version}/Gemfile +%doc %{gem_dir}/gems/rbs-%{rbs_version}/README.md +%{gem_dir}/gems/rbs-%{rbs_version}/Rakefile +%{gem_dir}/gems/rbs-%{rbs_version}/Steepfile +%{gem_dir}/gems/rbs-%{rbs_version}/bin +%{gem_dir}/gems/rbs-%{rbs_version}/core +%doc %{gem_dir}/gems/rbs-%{rbs_version}/docs +%{gem_dir}/gems/rbs-%{rbs_version}/exe +%{gem_dir}/gems/rbs-%{rbs_version}/goodcheck.yml +%{gem_dir}/gems/rbs-%{rbs_version}/lib +%{gem_dir}/gems/rbs-%{rbs_version}/schema +%{gem_dir}/gems/rbs-%{rbs_version}/sig +%{gem_dir}/gems/rbs-%{rbs_version}/stdlib +%{gem_dir}/gems/rbs-%{rbs_version}/steep +%{gem_dir}/specifications/rbs-%{rbs_version}.gemspec + %files -n rubygem-test-unit %{gem_dir}/gems/test-unit-%{test_unit_version} %{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec -%files -n rubygem-xmlrpc -%license %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/LICENSE.txt -%dir %{gem_dir}/gems/xmlrpc-%{xmlrpc_version} -%exclude %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/.* -%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Gemfile -%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Rakefile -%doc %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/README.md -%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/bin -%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/lib -%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/xmlrpc.gemspec -%{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec +%files -n rubygem-rexml +%dir %{gem_dir}/gems/rexml-%{rexml_version} +%exclude %{gem_dir}/gems/rexml-%{rexml_version}/.* +%license %{gem_dir}/gems/rexml-%{rexml_version}/LICENSE.txt +%doc %{gem_dir}/gems/rexml-%{rexml_version}/NEWS.md +%{gem_dir}/gems/rexml-%{rexml_version}/lib +%{gem_dir}/specifications/rexml-%{rexml_version}.gemspec +%doc %{gem_dir}/gems/rexml-%{rexml_version}/Gemfile +%doc %{gem_dir}/gems/rexml-%{rexml_version}/README.md +%doc %{gem_dir}/gems/rexml-%{rexml_version}/Rakefile + +%files -n rubygem-rss +%dir %{gem_dir}/gems/rss-%{rss_version} +%exclude %{gem_dir}/gems/rss-%{rss_version}/.* +%license %{gem_dir}/gems/rss-%{rss_version}/LICENSE.txt +%doc %{gem_dir}/gems/rss-%{rss_version}/NEWS.md +%{gem_dir}/gems/rss-%{rss_version}/lib +%{gem_dir}/specifications/rss-%{rss_version}.gemspec +%doc %{gem_dir}/gems/rss-%{rss_version}/Gemfile +%doc %{gem_dir}/gems/rss-%{rss_version}/README.md +%doc %{gem_dir}/gems/rss-%{rss_version}/Rakefile +%doc %{gem_dir}/gems/rss-%{rss_version}/test + +%files -n rubygem-typeprof +%dir %{gem_dir}/gems/typeprof-%{typeprof_version} +%{_bindir}/typeprof +%exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/.* +%license %{gem_dir}/gems/typeprof-%{typeprof_version}/LICENSE +%{gem_dir}/gems/typeprof-%{typeprof_version}/exe +%{gem_dir}/gems/typeprof-%{typeprof_version}/lib +%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/smoke +%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/tools +%{gem_dir}/specifications/typeprof-%{typeprof_version}.gemspec +%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Gemfile* +%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/README.md +%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Rakefile +%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/doc +%lang(ja) %doc %{gem_dir}/gems/typeprof-%{typeprof_version}/doc/doc.ja.md +%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/testbed %changelog +* Mon Jan 04 2021 Vít Ondruch - 3.0.0-138 +- Upgrade to Ruby 3.0.0. +- Extract RSS and REXML into separate subpackages, because they were moved from + default gems to bundled gems. +- Obsolete Net::Telnet and XMLRPC packages, because they were dropped from Ruby. + * Tue Dec 15 16:26:46 CET 2020 Pavel Valena - 2.7.2-137 - Add Recommends: redhat-rpm-config to devel subpackage. Resolves: rhbz#1905222 @@ -1306,6 +1401,10 @@ MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not - Disable LTO, which appear to cause issues with SIGSEV handler. - Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add. +* Tue Jul 14 2020 Tom Stellard - 2.7.1-133 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + * Wed Jun 24 2020 Jun Aruga - 2.7.1-132 - Add ruby-default-gems dependency on irb. Resolves: rhbz#1850541 diff --git a/rubygems-3.1.3-Fix-I-require-priority.patch b/rubygems-3.1.3-Fix-I-require-priority.patch deleted file mode 100644 index 6ed2f76..0000000 --- a/rubygems-3.1.3-Fix-I-require-priority.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 912d141a351053d0f6d915b5e7807f6a8f4c0631 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 4 Feb 2020 17:25:56 +0100 -Subject: [PATCH 1/2] Make non "test_" method private - ---- - test/rubygems/test_require.rb | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index aa2675af5d..d618a93473 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -532,6 +532,8 @@ def test_require_bundler_with_bundler_version - end - end - -+ private -+ - def silence_warnings - old_verbose, $VERBOSE = $VERBOSE, false - yield - -From b3944384f44b869985051863d8b05b545d09a585 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 4 Feb 2020 17:26:28 +0100 -Subject: [PATCH 2/2] Fix require issue with file extension priority - -If `require "a"` is run when two folders have been specified in the -I -option including a "a.rb" file and a "a.so" file respectively, the ruby -spec says that the ".rb" file should always be preferred. However, the -logic we added in https://github.com/rubygems/rubygems/commit/6b81076d9 -to make the -I option always beat default gems does not respect this -spec, creating a difference from the original ruby-core's require. - -[the ruby spec says]: https://github.com/ruby/spec/blob/d80a6e2b221d4f17a8cadcac75ef950c59cba901/core/kernel/shared/require.rb#L234-L246 ---- - lib/rubygems/core_ext/kernel_require.rb | 28 +++++------ - test/rubygems/test_require.rb | 62 +++++++++++++++++++++++++ - 2 files changed, 74 insertions(+), 16 deletions(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 60f4d18712..369f2c743e 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,18 +43,18 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| -- safe_lp = lp.dup.tap(&Gem::UNTAINT) -- begin -- if File.symlink? safe_lp # for backward compatibility -- next -+ Gem.suffixes.each do |s| -+ $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| -+ safe_lp = lp.dup.tap(&Gem::UNTAINT) -+ begin -+ if File.symlink? safe_lp # for backward compatibility -+ next -+ end -+ rescue SecurityError -+ RUBYGEMS_ACTIVATION_MONITOR.exit -+ raise - end -- rescue SecurityError -- RUBYGEMS_ACTIVATION_MONITOR.exit -- raise -- end - -- Gem.suffixes.each do |s| - full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) - if File.file?(full_path) - rp = full_path -@@ -67,12 +67,8 @@ def require(path) - end - - if resolved_path -- begin -- RUBYGEMS_ACTIVATION_MONITOR.exit -- return gem_original_require(resolved_path) -- rescue LoadError -- RUBYGEMS_ACTIVATION_MONITOR.enter -- end -+ RUBYGEMS_ACTIVATION_MONITOR.exit -+ return gem_original_require(resolved_path) - end - - if spec = Gem.find_unresolved_default_spec(path) -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index d618a93473..7cffbfa7fe 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -120,6 +120,24 @@ def test_dash_i_beats_default_gems - Object.send :remove_const, :HELLO if Object.const_defined? :HELLO - end - -+ def test_dash_i_respects_default_library_extension_priority -+ skip "extensions don't quite work on jruby" if Gem.java_platform? -+ -+ dash_i_ext_arg = util_install_extension_file('a') -+ dash_i_lib_arg = util_install_ruby_file('a') -+ -+ lp = $LOAD_PATH.dup -+ -+ begin -+ $LOAD_PATH.unshift dash_i_lib_arg -+ $LOAD_PATH.unshift dash_i_ext_arg -+ assert_require 'a' -+ assert_match(/a\.rb$/, $LOADED_FEATURES.last) -+ ensure -+ $LOAD_PATH.replace lp -+ end -+ end -+ - def test_concurrent_require - Object.const_set :FILE_ENTERED_LATCH, Latch.new(2) - Object.const_set :FILE_EXIT_LATCH, Latch.new(1) -@@ -541,4 +559,48 @@ def silence_warnings - $VERBOSE = old_verbose - end - -+ def util_install_extension_file(name) -+ spec = quick_gem name -+ util_build_gem spec -+ -+ spec.extensions << "extconf.rb" -+ write_file File.join(@tempdir, "extconf.rb") do |io| -+ io.write <<-RUBY -+ require "mkmf" -+ create_makefile("#{name}") -+ RUBY -+ end -+ -+ write_file File.join(@tempdir, "#{name}.c") do |io| -+ io.write <<-C -+ #include -+ void Init_#{name}() { } -+ C -+ end -+ -+ spec.files += ["extconf.rb", "#{name}.c"] -+ -+ so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}") -+ refute_path_exists so -+ -+ path = Gem::Package.build spec -+ installer = Gem::Installer.at path -+ installer.install -+ assert_path_exists so -+ -+ spec.gem_dir -+ end -+ -+ def util_install_ruby_file(name) -+ dir_lib = Dir.mktmpdir("test_require_lib", @tempdir) -+ dash_i_lib_arg = File.join dir_lib -+ -+ a_rb = File.join dash_i_lib_arg, "#{name}.rb" -+ -+ FileUtils.mkdir_p File.dirname a_rb -+ File.open(a_rb, 'w') { |f| f.write "# #{name}.rb" } -+ -+ dash_i_lib_arg -+ end -+ - end diff --git a/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch b/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch deleted file mode 100644 index ae6ecbb..0000000 --- a/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch +++ /dev/null @@ -1,324 +0,0 @@ -From 00d98eb8a3245fb93a475ecbbbc4c7ec7e6704cd Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 19 May 2020 14:00:00 +0200 -Subject: [PATCH 1/5] Fix performance regression in `require` - -Our check for `-I` paths should not go through all activated gems. ---- - lib/rubygems.rb | 10 ++++++++++ - lib/rubygems/core_ext/kernel_require.rb | 2 +- - lib/rubygems/test_case.rb | 1 + - test/rubygems/test_require.rb | 11 +++++++++++ - 4 files changed, 23 insertions(+), 1 deletion(-) - -diff --git a/lib/rubygems.rb b/lib/rubygems.rb -index 843cb49e4a..d1a9a1c7e1 100644 ---- a/lib/rubygems.rb -+++ b/lib/rubygems.rb -@@ -662,10 +662,20 @@ def self.load_path_insert_index - index - end - -+ ## -+ # The number of paths in the `$LOAD_PATH` from activated gems. Used to -+ # prioritize `-I` and `ENV['RUBYLIB`]` entries during `require`. -+ -+ def self.activated_gem_paths -+ @activated_gem_paths ||= 0 -+ end -+ - ## - # Add a list of paths to the $LOAD_PATH at the proper place. - - def self.add_to_load_path(*paths) -+ @activated_gem_paths = activated_gem_paths + paths.size -+ - insert_index = load_path_insert_index - - if insert_index -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index ed24111bd5..7625ce1bee 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -47,7 +47,7 @@ def require(path) - load_path_insert_index = Gem.load_path_insert_index - break unless load_path_insert_index - -- $LOAD_PATH[0...load_path_insert_index].each do |lp| -+ $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility -diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb -index a05a2898d1..53dd495aef 100644 ---- a/lib/rubygems/test_case.rb -+++ b/lib/rubygems/test_case.rb -@@ -385,6 +385,7 @@ def setup - Gem::Security.reset - - Gem.loaded_specs.clear -+ Gem.instance_variable_set(:@activated_gem_paths, 0) - Gem.clear_default_specs - Bundler.reset! - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index f36892f8cc..9f2fe3439a 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -382,6 +382,17 @@ def test_default_gem_require_activates_just_once - assert_equal 0, times_called - end - -+ def test_second_gem_require_does_not_resolve_path_manually_before_going_through_standard_require -+ a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb" -+ install_gem a1 -+ -+ assert_require "test_gem_require_a" -+ -+ stub(:gem_original_require, ->(path) { assert_equal "test_gem_require_a", path }) do -+ require "test_gem_require_a" -+ end -+ end -+ - def test_realworld_default_gem - testing_ruby_repo = !ENV["GEM_COMMAND"].nil? - skip "this test can't work under ruby-core setup" if testing_ruby_repo || java_platform? - -From ae95885dff6189c5ac59bbdf685cb4ec4751fdef Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 19 May 2020 14:08:19 +0200 -Subject: [PATCH 2/5] Refactor `Gem.load_path_insert_index` - ---- - lib/rubygems.rb | 13 +++---------- - lib/rubygems/core_ext/kernel_require.rb | 5 +---- - 2 files changed, 4 insertions(+), 14 deletions(-) - -diff --git a/lib/rubygems.rb b/lib/rubygems.rb -index d1a9a1c7e1..ca80326459 100644 ---- a/lib/rubygems.rb -+++ b/lib/rubygems.rb -@@ -659,7 +659,7 @@ def self.load_path_insert_index - - index = $LOAD_PATH.index RbConfig::CONFIG['sitelibdir'] - -- index -+ index || 0 - end - - ## -@@ -676,15 +676,8 @@ def self.activated_gem_paths - def self.add_to_load_path(*paths) - @activated_gem_paths = activated_gem_paths + paths.size - -- insert_index = load_path_insert_index -- -- if insert_index -- # gem directories must come after -I and ENV['RUBYLIB'] -- $LOAD_PATH.insert(insert_index, *paths) -- else -- # we are probably testing in core, -I and RUBYLIB don't apply -- $LOAD_PATH.unshift(*paths) -- end -+ # gem directories must come after -I and ENV['RUBYLIB'] -+ $LOAD_PATH.insert(Gem.load_path_insert_index, *paths) - end - - @yaml_loaded = false -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 7625ce1bee..decf4829f1 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -44,10 +44,7 @@ def require(path) - resolved_path = begin - rp = nil - Gem.suffixes.each do |s| -- load_path_insert_index = Gem.load_path_insert_index -- break unless load_path_insert_index -- -- $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp| -+ $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility - -From da1492e9d7b28d068fbfbb0ba1cafcc516681567 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 19 May 2020 14:32:12 +0200 -Subject: [PATCH 3/5] Extract a local outside the loop - ---- - lib/rubygems/core_ext/kernel_require.rb | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index decf4829f1..6a7faaf2d1 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,8 +43,9 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths - Gem.suffixes.each do |s| -- $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp| -+ $LOAD_PATH[0...load_path_check_index].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility - -From 22ad5717c38feda2375b53628d15ae3db2195684 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Thu, 21 May 2020 15:20:57 +0200 -Subject: [PATCH 4/5] Fix `$LOADED_FEATURES` cache sometimes not respected - -In the cases where the initial manually `-I` path resolution succeeded, -we were passing a full path to the original require effectively skipping -the `$LOADED_FEATURES` cache. With this change, we _only_ do the -resolution when a matching requirable path is found in a default gem. In -that case, we skip activation of the default gem if we detect that the -required file will be picked up for a `-I` path. ---- - lib/rubygems/core_ext/kernel_require.rb | 53 +++++++++++-------------- - test/rubygems/test_require.rb | 29 ++++++++++++++ - 2 files changed, 53 insertions(+), 29 deletions(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 6a7faaf2d1..81e37b98bf 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -39,46 +39,41 @@ def require(path) - - path = path.to_path if path.respond_to? :to_path - -- # Ensure -I beats a default gem -- # https://github.com/rubygems/rubygems/pull/1868 -- resolved_path = begin -- rp = nil -- load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths -- Gem.suffixes.each do |s| -- $LOAD_PATH[0...load_path_check_index].each do |lp| -- safe_lp = lp.dup.tap(&Gem::UNTAINT) -- begin -- if File.symlink? safe_lp # for backward compatibility -- next -+ if spec = Gem.find_unresolved_default_spec(path) -+ # Ensure -I beats a default gem -+ # https://github.com/rubygems/rubygems/pull/1868 -+ resolved_path = begin -+ rp = nil -+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths -+ Gem.suffixes.each do |s| -+ $LOAD_PATH[0...load_path_check_index].each do |lp| -+ safe_lp = lp.dup.tap(&Gem::UNTAINT) -+ begin -+ if File.symlink? safe_lp # for backward compatibility -+ next -+ end -+ rescue SecurityError -+ RUBYGEMS_ACTIVATION_MONITOR.exit -+ raise - end -- rescue SecurityError -- RUBYGEMS_ACTIVATION_MONITOR.exit -- raise -- end - -- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) -- if File.file?(full_path) -- rp = full_path -- break -+ full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) -+ if File.file?(full_path) -+ rp = full_path -+ break -+ end - end -+ break if rp - end -- break if rp -+ rp - end -- rp -- end - -- if resolved_path -- RUBYGEMS_ACTIVATION_MONITOR.exit -- return gem_original_require(resolved_path) -- end -- -- if spec = Gem.find_unresolved_default_spec(path) - begin - Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) - rescue Exception - RUBYGEMS_ACTIVATION_MONITOR.exit - raise -- end -+ end unless resolved_path - end - - # If there are no unresolved deps, then we can use just try -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index 9f2fe3439a..2b11e26dfe 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -45,6 +45,35 @@ def refute_require(path) - refute require(path), "'#{path}' was not yet required" - end - -+ def test_respect_loaded_features_caching_like_standard_require -+ dir = Dir.mktmpdir("test_require", @tempdir) -+ -+ lp1 = File.join dir, 'foo1' -+ foo1 = File.join lp1, 'foo.rb' -+ -+ FileUtils.mkdir_p lp1 -+ File.open(foo1, 'w') { |f| f.write "class Object; HELLO = 'foo1' end" } -+ -+ lp = $LOAD_PATH.dup -+ -+ $LOAD_PATH.unshift lp1 -+ assert_require 'foo' -+ assert_equal "foo1", ::Object::HELLO -+ -+ lp2 = File.join dir, 'foo2' -+ foo2 = File.join lp2, 'foo.rb' -+ -+ FileUtils.mkdir_p lp2 -+ File.open(foo2, 'w') { |f| f.write "class Object; HELLO = 'foo2' end" } -+ -+ $LOAD_PATH.unshift lp2 -+ refute_require 'foo' -+ assert_equal "foo1", ::Object::HELLO -+ ensure -+ $LOAD_PATH.replace lp -+ Object.send :remove_const, :HELLO if Object.const_defined? :HELLO -+ end -+ - # Providing -I on the commandline should always beat gems - def test_dash_i_beats_gems - a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb" - -From db872c7a18d616f4447bdcca3130be6db9e5cb03 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Sat, 23 May 2020 20:18:41 +0200 -Subject: [PATCH 5/5] Remove direct reference to PR - -The code is quite different now, so I think the link might be even -confusing. If you want to know more, use git history. ---- - lib/rubygems/core_ext/kernel_require.rb | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 81e37b98bf..115ae0cb50 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -41,7 +41,6 @@ def require(path) - - if spec = Gem.find_unresolved_default_spec(path) - # Ensure -I beats a default gem -- # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil - load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths diff --git a/rubygems-3.1.3-Improve-require.patch b/rubygems-3.1.3-Improve-require.patch deleted file mode 100644 index 2df5c4f..0000000 --- a/rubygems-3.1.3-Improve-require.patch +++ /dev/null @@ -1,92 +0,0 @@ -From c5197b2ab35ba389f48918e0c773b43b6dca2fa5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Fri, 7 Feb 2020 17:16:05 +0100 -Subject: [PATCH 1/3] Tweaks to get test passing more reliably - ---- - test/rubygems/test_require.rb | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index 7cffbfa7fe..67c55416d4 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -567,18 +567,20 @@ def util_install_extension_file(name) - write_file File.join(@tempdir, "extconf.rb") do |io| - io.write <<-RUBY - require "mkmf" -+ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||' - create_makefile("#{name}") - RUBY - end - - write_file File.join(@tempdir, "#{name}.c") do |io| - io.write <<-C -- #include - void Init_#{name}() { } - C - end - -- spec.files += ["extconf.rb", "#{name}.c"] -+ write_file File.join(@tempdir, "depend") -+ -+ spec.files += ["extconf.rb", "depend", "#{name}.c"] - - so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}") - refute_path_exists so - -From 7bfd7319cd751837c3ccaf1d97b02846eaaf39d5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 11 Feb 2020 11:56:06 +0100 -Subject: [PATCH 2/3] Fix bug bug calculating $LOAD_PATH's to check in - `require` - -In `Gem.load_path_insert_index` is not set, we end up having -`$LOAD_PATH[0...-1]`, unintentionally skipping the last $LOAD_PATH entry -from the check. - -The correct thing to do in that case is to not even try since we have no -way of distinguisng default LOAD_PATH entries from those added with -I. ---- - lib/rubygems/core_ext/kernel_require.rb | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 369f2c743e..a8d170f13a 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -44,7 +44,10 @@ def require(path) - resolved_path = begin - rp = nil - Gem.suffixes.each do |s| -- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| -+ load_path_insert_index = Gem.load_path_insert_index -+ break unless load_path_insert_index -+ -+ $LOAD_PATH[0...load_path_insert_index].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility - -From 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Fri, 14 Feb 2020 02:03:04 +0100 -Subject: [PATCH 3/3] Exclude empty suffix from `-I` require loop - ---- - lib/rubygems/core_ext/kernel_require.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index a8d170f13a..9712fb6ac0 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,7 +43,7 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -- Gem.suffixes.each do |s| -+ Gem.suffixes[1..-1].each do |s| - load_path_insert_index = Gem.load_path_insert_index - break unless load_path_insert_index - diff --git a/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch b/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch deleted file mode 100644 index 463047c..0000000 --- a/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 301e30bf97dd603ca81d52b90186908575c4ddf8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 25 Feb 2020 15:01:44 +0100 -Subject: [PATCH] Revert "Exclude empty suffix from `-I` require loop" - -This reverts commit 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3. - -Technically, extensionless ruby files are valid ruby files that can be -required. For example, `bin/bundle` is sometimes required from other -binstubs even if it's also runnable directly. - -So, we should technically consider this kind of files too. ---- - lib/rubygems/core_ext/kernel_require.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 9712fb6ac0..a8d170f13a 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,7 +43,7 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -- Gem.suffixes[1..-1].each do |s| -+ Gem.suffixes.each do |s| - load_path_insert_index = Gem.load_path_insert_index - break unless load_path_insert_index - diff --git a/sources b/sources index df34d8a..2b68f2e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ruby-2.7.2.tar.xz) = 7972278b096aa768c7adf2befd26003e18781a29ca317640317d30d93d6e963ded197724c8e2f1dfe1e838c5647176d414a74732a62e931fb50d6f2e0f777349 +SHA512 (ruby-3.0.0.tar.xz) = 2a23c2894e62e24bb20cec6b2a016b66d7df05083668726b6f70af8338211cfec417aa3624290d1f5ccd130f65ee7b52b5db7d428abc4a9460459c9a5dd1a450