diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index a59f941..d2399ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ /*/ /ruby-*.tar.xz +/rexml-*.gem /*.rpm + +!/plans/ diff --git a/macros.rubygems b/macros.rubygems index f6e830f..7146c77 100644 --- a/macros.rubygems +++ b/macros.rubygems @@ -2,17 +2,41 @@ %gem_dir %{_datadir}/gems %gem_archdir %{_libdir}/gems +# %gem_prerelease - Provides prerelease string if available. +# +# Usage: %gem_prerelease [custom_gem_name] +# +# If avilable, prints prerelease string, which is a %prerelease macro by +# default. When [custom_gem_name] is provided, the custom_gem_name is used to +# derive %custom_gem_name_prerelease macro, which can be predefined. +# +# Please note that for the prerelease macros are the dashes in +# [custom_gem_name] replaced by underscores. +# +%gem_prerelease() %{?1:%{expand:%%{?%{gsub %{1} - _}_prerelease}}}%{!?1:%{?prerelease}} + +# %gem_version - Provides version string (including prerelease if available). +# +# Usage: %gem_version [custom_gem_name] +# +# Prints version (including prerelease string), that is %version macro by +# default. When [custom_gem_name] is provided, the custom_gem_name is used to +# derive %custom_gem_name_version macro which needs to be predefined. +# +# Please note that for the version macros are the dashes in [custom_gem_name] +# replaced by underscores. +# +%gem_version() %{?1:%{expand:%{%{gsub %{1} - _}_version}}}%{!?1:%{version}}%{gem_prerelease %{?1}} + # %gem_name_version - Provides gem_name-version string. # # Usage: %gem_name_version [custom_gem_name] # # Prints gem_name-version string, by default joining %gem_name, %version and # %prerelease macros. When [custom_gem_name] is provided, the -# custom_gem_name is joined with %custom_gem_name_version macro which needs -# to be predefined. Please note that for the version macros are the dashes -# replaced by underscores. +# custom_gem_name is joined with version as provided by %gem_version macro. # -%gem_name_version() %{?1}%{!?1:%{gem_name}}-%{?1:%{expand:%{%{gsub %{1} - _}_version}}}%{!?1:%{version}}%{?prerelease} +%gem_name_version() %{?1}%{!?1:%{gem_name}}-%{gem_version %{?1}} # Common gem locations and files. # diff --git a/plans/all.fmf b/plans/all.fmf new file mode 100644 index 0000000..7b06cfb --- /dev/null +++ b/plans/all.fmf @@ -0,0 +1,6 @@ +summary: Test plan with all Fedora tests +discover: + how: fmf + url: https://src.fedoraproject.org/tests/ruby.git +execute: + how: tmt diff --git a/rdoc-pr1531-fix-mutilple-document-installation.patch b/rdoc-pr1531-fix-mutilple-document-installation.patch new file mode 100644 index 0000000..192863f --- /dev/null +++ b/rdoc-pr1531-fix-mutilple-document-installation.patch @@ -0,0 +1,28 @@ +From 994ee4c17fb8c217ab0335df55620c6bdb5d5cbe Mon Sep 17 00:00:00 2001 +From: tompng +Date: Fri, 26 Dec 2025 04:57:12 +0900 +Subject: [PATCH] Fix comment_location for merged ClassModule + +--- + lib/rdoc/code_object/class_module.rb | 7 ++++++- + test/rdoc/code_object/class_module_test.rb | 6 ++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/lib/rdoc/code_object/class_module.rb b/lib/rdoc/code_object/class_module.rb +index b6bed352a2..d7ee36f950 100644 +--- a/lib/rdoc/code_object/class_module.rb ++++ b/lib/rdoc/code_object/class_module.rb +@@ -477,7 +477,12 @@ def merge(class_module) + document = document.merge other_document + + @comment = RDoc::Comment.from_document(document) +- @comment_location = document ++ ++ @comment_location = if document.parts.first.is_a?(RDoc::Markup::Document) ++ document.parts.map { |doc| [doc, doc.file] } ++ else ++ [[document, document.file]] ++ end + end + + cm = class_module diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index 4cd8dd1..8551d79 100644 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -1,4 +1,4 @@ -From 07c666ba5c3360dd6f43605a8ac7c85c99c1721f Mon Sep 17 00:00:00 2001 +From e1293f665128b0d9c5bfa0b5beeab4afebf07e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 1 Oct 2013 12:22:40 +0200 Subject: [PATCH] Allow to configure libruby.so placement. @@ -8,10 +8,10 @@ Subject: [PATCH] Allow to configure libruby.so placement. 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac -index d261ea57b5..3c13076b82 100644 +index a64358fada..b3bdfad1eb 100644 --- a/configure.ac +++ b/configure.ac -@@ -3482,6 +3482,11 @@ AS_IF([test ${multiarch+set}], [ +@@ -3556,6 +3556,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 e6315c0..045d6ae 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 @@ -1,4 +1,4 @@ -From e24d97c938c481450ed80ec83e5399595946c1ae Mon Sep 17 00:00:00 2001 +From 6062f4976c5b51f8b952b9f6745175be7b1c5ff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Fri, 8 Feb 2013 22:48:41 +0100 Subject: [PATCH] Prevent duplicated paths when empty version string is @@ -11,10 +11,10 @@ Subject: [PATCH] Prevent duplicated paths when empty version string is 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac -index c42436c23d..d261ea57b5 100644 +index 2bc5153141..a64358fada 100644 --- a/configure.ac +++ b/configure.ac -@@ -4321,7 +4321,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -4472,7 +4472,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then @@ -25,7 +25,7 @@ index c42436c23d..d261ea57b5 100644 rubylibdir='${rubylibprefix}'${ruby_version_dir} diff --git a/loadpath.c b/loadpath.c -index 9160031..0d4d953 100644 +index b8969e6998..bbfd4daa78 100644 --- a/loadpath.c +++ b/loadpath.c @@ -65,21 +65,33 @@ const char ruby_initial_load_paths[] = @@ -63,10 +63,10 @@ index 9160031..0d4d953 100644 RUBY_LIB "\0" diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb -index 07076d4..35e6c3c 100755 +index db74115730..2b01796abf 100755 --- a/tool/mkconfig.rb +++ b/tool/mkconfig.rb -@@ -115,7 +115,7 @@ +@@ -114,7 +114,7 @@ val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump case name when /^prefix$/ diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 8e1b4fe..6ecfb2e 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -1,4 +1,4 @@ -From 2089cab72b38d6d5e7ba2b596e41014209acad30 Mon Sep 17 00:00:00 2001 +From 9e70f6e4b8771965a30ecfb6d1c6015df350ca55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 19 Nov 2012 14:37:28 +0100 Subject: [PATCH] Always use i386. @@ -8,10 +8,10 @@ Subject: [PATCH] Always use i386. 1 file changed, 2 insertions(+) diff --git a/configure.ac b/configure.ac -index 3c13076b82..93af30321d 100644 +index b3bdfad1eb..411322a27f 100644 --- a/configure.ac +++ b/configure.ac -@@ -4385,6 +4385,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -4536,6 +4536,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 7dc8eca..969fefa 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -1,4 +1,4 @@ -From 94da59aafacc6a9efe829529eb51385588d6f149 Mon Sep 17 00:00:00 2001 +From c7952996ac9738a14bea0a1a971fea13460a6c94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Fri, 11 Nov 2011 13:14:45 +0100 Subject: [PATCH] Allow to install RubyGems into custom location, outside of @@ -12,10 +12,10 @@ Subject: [PATCH] Allow to install RubyGems into custom location, outside of 4 files changed, 22 insertions(+) diff --git a/configure.ac b/configure.ac -index 93af30321d..bc13397e0e 100644 +index 411322a27f..b5f842a512 100644 --- a/configure.ac +++ b/configure.ac -@@ -4357,6 +4357,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -4508,6 +4508,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='' -@@ -4381,6 +4385,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4532,6 +4536,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl @@ -35,7 +35,7 @@ index 93af30321d..bc13397e0e 100644 AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl diff --git a/loadpath.c b/loadpath.c -index 623dc9d..74c5d9e 100644 +index bbfd4daa78..69677a9297 100644 --- a/loadpath.c +++ b/loadpath.c @@ -94,6 +94,10 @@ const char ruby_initial_load_paths[] = @@ -50,7 +50,7 @@ index 623dc9d..74c5d9e 100644 #ifdef RUBY_THINARCH RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0" diff --git a/template/verconf.h.tmpl b/template/verconf.h.tmpl -index 79c003e..34f2382 100644 +index 9ba2bd6de5..4ec4ce9353 100644 --- a/template/verconf.h.tmpl +++ b/template/verconf.h.tmpl @@ -36,6 +36,9 @@ @@ -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 e9110a17ca..76a1f0a315 100755 +index a9e6365b27..7117e65e82 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -359,6 +359,7 @@ def CONFIG.[](name, mandatory = false) +@@ -393,6 +393,7 @@ def CONFIG.[](name, mandatory = false) vendorlibdir = CONFIG["vendorlibdir"] vendorarchlibdir = CONFIG["vendorarchdir"] end @@ -75,7 +75,7 @@ index e9110a17ca..76a1f0a315 100755 mandir = CONFIG["mandir", true] docdir = CONFIG["docdir", true] enable_shared = CONFIG["ENABLE_SHARED"] == 'yes' -@@ -595,7 +596,16 @@ def stub +@@ -1082,7 +1083,16 @@ def (bins = []).add(name) install?(:local, :comm, :lib) do prepare "library scripts", rubylibdir noinst = %w[*.txt *.rdoc *.gemspec] diff --git a/ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch b/ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch new file mode 100644 index 0000000..82f5963 --- /dev/null +++ b/ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch @@ -0,0 +1,22 @@ +From f833e213596b0bcfad8264a555eb5093303fb5f2 Mon Sep 17 00:00:00 2001 +From: Jarek Prokop +Date: Thu, 25 Sep 2025 12:26:39 +0200 +Subject: [PATCH] Add ruby_version_dir_name support for RDoc. + +--- + lib/rdoc/ri/paths.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb +index 8e89b04e..731f9e36 100644 +--- a/lib/rdoc/ri/paths.rb ++++ b/lib/rdoc/ri/paths.rb +@@ -10,7 +10,7 @@ module RDoc::RI::Paths + #:stopdoc: + require 'rbconfig' + +- version = RbConfig::CONFIG['ruby_version'] ++ version = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + + BASE = File.join RbConfig::CONFIG['ridir'], version + diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index 68782cd..2eb5d00 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -1,4 +1,4 @@ -From 4fc1be3af3f58621bb751c9e63c208b15c0e8d16 Mon Sep 17 00:00:00 2001 +From 5406ea4b4b13db747e5c1f8341bb257b4da04435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 31 Mar 2015 16:21:04 +0200 Subject: [PATCH 1/4] Use ruby_version_dir_name for versioned directories. @@ -17,10 +17,10 @@ string. 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/configure.ac b/configure.ac -index 80b137e380..63cd3b4f8b 100644 +index 2bbce78fd0..9d8662369c 100644 --- a/configure.ac +++ b/configure.ac -@@ -4271,9 +4271,6 @@ AS_CASE(["$target_os"], +@@ -4422,9 +4422,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], -@@ -4296,57 +4293,63 @@ AC_ARG_WITH(ridir, +@@ -4447,57 +4444,63 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -122,7 +122,7 @@ index 80b137e380..63cd3b4f8b 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4363,6 +4366,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4514,6 +4517,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -131,7 +131,7 @@ index 80b137e380..63cd3b4f8b 100644 AC_SUBST(rubyarchdir)dnl AC_SUBST(sitedir)dnl diff --git a/template/ruby.pc.in b/template/ruby.pc.in -index 8a2c066..c81b211 100644 +index 6901ec2320..9b7b787208 100644 --- a/template/ruby.pc.in +++ b/template/ruby.pc.in @@ -2,6 +2,7 @@ MAJOR=@MAJOR@ @@ -143,35 +143,20 @@ index 8a2c066..c81b211 100644 RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@ arch=@arch@ - -From 518850aba6eee76de7715aae8d37330e34b01983 Mon Sep 17 00:00:00 2001 +From baff562149499973123d2187620201be641c6538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 31 Mar 2015 16:37:26 +0200 Subject: [PATCH 2/4] Add ruby_version_dir_name support for RDoc. --- - lib/rdoc/ri/paths.rb | 2 +- - tool/rbinstall.rb | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + tool/rbinstall.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb -index 970cb91..5bf8230 100644 ---- a/lib/rdoc/ri/paths.rb -+++ b/lib/rdoc/ri/paths.rb -@@ -10,7 +10,7 @@ module RDoc::RI::Paths - #:stopdoc: - require 'rbconfig' - -- version = RbConfig::CONFIG['ruby_version'] -+ version = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] - - BASE = File.join RbConfig::CONFIG['ridir'], version - diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb -index d4c110e..d39c9a6 100755 +index 874c3ef1d9..a9e6365b27 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -453,7 +453,7 @@ def CONFIG.[](name, mandatory = false) +@@ -1053,7 +1053,7 @@ def (bins = []).add(name) install?(:doc, :rdoc) do if $rdocdir @@ -181,7 +166,7 @@ index d4c110e..d39c9a6 100755 install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode) end -From 9f0ec0233f618cbb862629816b22491c3df79578 Mon Sep 17 00:00:00 2001 +From 7cf872a9a34f38d71cd2ca04ac114b4ea85cc56c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 31 Mar 2015 16:37:44 +0200 Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems. @@ -192,7 +177,7 @@ Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems. 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb -index d4ff4a262c..3f9a5bf590 100644 +index 90f09fc191..f6b8a03b95 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb @@ -35,7 +35,7 @@ def self.default_spec_cache_dir @@ -224,10 +209,10 @@ index d4ff4a262c..3f9a5bf590 100644 ## diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb -index b25068405d..e9fef4a311 100644 +index 74c8953904..1f3bd91d51 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1365,7 +1365,8 @@ def test_self_use_paths +@@ -1339,7 +1339,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, ".gem", Gem.ruby_engine] @@ -237,7 +222,7 @@ index b25068405d..e9fef4a311 100644 FileUtils.mkdir_p File.join(parts) -@@ -1441,7 +1442,7 @@ def test_self_vendor_dir +@@ -1415,7 +1416,7 @@ def test_self_vendor_dir vendordir(File.join(@tempdir, "vendor")) do expected = File.join RbConfig::CONFIG["vendordir"], "gems", @@ -247,8 +232,7 @@ index b25068405d..e9fef4a311 100644 assert_equal expected, Gem.vendor_dir end - -From 88c38a030c22dbf9422ece847bdfbf87d6659313 Mon Sep 17 00:00:00 2001 +From 17cb98b7b78f8bfc511feffbe061747f676055b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 1 Apr 2015 14:55:37 +0200 Subject: [PATCH 4/4] Let headers directories follow the configured version @@ -259,10 +243,10 @@ Subject: [PATCH 4/4] Let headers directories follow the configured version 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index a00f2b6776..999e2d6d5d 100644 +index 9d8662369c..2bc5153141 100644 --- a/configure.ac +++ b/configure.ac -@@ -136,7 +136,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` +@@ -151,7 +151,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) diff --git a/ruby-2.7.0-Initialize-ABRT-hook.patch b/ruby-2.7.0-Initialize-ABRT-hook.patch index 0f32243..86d97fc 100644 --- a/ruby-2.7.0-Initialize-ABRT-hook.patch +++ b/ruby-2.7.0-Initialize-ABRT-hook.patch @@ -1,4 +1,4 @@ -From eca084e4079c77c061045df9c21b219175b05228 Mon Sep 17 00:00:00 2001 +From 03b44a86b574dc0b63fd57c5f9b52b56ad3ced37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 6 Jan 2020 13:56:04 +0100 Subject: [PATCH] Initialize ABRT hook. @@ -16,15 +16,15 @@ To keep the things simple for now, load the ABRT hook via C. [5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/ --- abrt.c | 12 ++++++++++++ - common.mk | 3 ++- + common.mk | 1 + ruby.c | 4 ++++ spec/ruby/core/kernel/require_spec.rb | 2 ++ - 4 files changed, 20 insertions(+), 1 deletion(-) + 4 files changed, 19 insertions(+) create mode 100644 abrt.c diff --git a/abrt.c b/abrt.c new file mode 100644 -index 0000000000..74b0bd5c0f +index 0000000000..e99cb432e6 --- /dev/null +++ b/abrt.c @@ -0,0 +1,12 @@ @@ -41,24 +41,22 @@ index 0000000000..74b0bd5c0f + ); +} diff --git a/common.mk b/common.mk -index b2e5b2b6d0..f39f81da5c 100644 +index 08fee9119a..dae7d9dc00 100644 --- a/common.mk +++ b/common.mk -@@ -111,7 +111,8 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \ - prism/prism.$(OBJEXT) \ +@@ -116,6 +116,7 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \ prism_init.$(OBJEXT) --COMMONOBJS = array.$(OBJEXT) \ -+COMMONOBJS = abrt.$(OBJEXT) \ -+ array.$(OBJEXT) \ + COMMONOBJS = \ ++ abrt.$(OBJEXT) \ + array.$(OBJEXT) \ ast.$(OBJEXT) \ bignum.$(OBJEXT) \ - class.$(OBJEXT) \ diff --git a/ruby.c b/ruby.c -index 60c57d6259..1eec16f2c8 100644 +index b00fc1502d..32b88f7496 100644 --- a/ruby.c +++ b/ruby.c -@@ -1724,10 +1724,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) +@@ -1773,10 +1773,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) void Init_builtin_features(void); @@ -70,19 +68,19 @@ index 60c57d6259..1eec16f2c8 100644 { Init_builtin_features(); + Init_abrt(); - rb_const_remove(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX")); } + void rb_call_builtin_inits(void); diff --git a/spec/ruby/core/kernel/require_spec.rb b/spec/ruby/core/kernel/require_spec.rb -index 60c57d6259..1eec16f2c8 100644 +index 60d17242fe..a8f93b0db4 100644 --- a/spec/ruby/core/kernel/require_spec.rb +++ b/spec/ruby/core/kernel/require_spec.rb -@@ -25,6 +25,8 @@ +@@ -26,6 +26,8 @@ out = ruby_exe("puts $LOADED_FEATURES", options: '--disable-gems --disable-did-you-mean') features = out.lines.map { |line| File.basename(line.chomp, '.*') } + # Ignore ABRT + features -= %w[abrt] # Ignore CRuby internals - features -= %w[encdb transdb windows_1252] + features -= %w[encdb transdb windows_1252 windows_31j] features.reject! { |feature| feature.end_with?('-fake') } diff --git a/ruby-3.3.0-Disable-syntax-suggest-test-case.patch b/ruby-3.3.0-Disable-syntax-suggest-test-case.patch index 1119a59..09d11f9 100644 --- a/ruby-3.3.0-Disable-syntax-suggest-test-case.patch +++ b/ruby-3.3.0-Disable-syntax-suggest-test-case.patch @@ -1,4 +1,4 @@ -From 6365d1b79e10330fced83d00d4cb950380a3b0fe Mon Sep 17 00:00:00 2001 +From 9b7cb6a40d73bb86ee0de34360068e90e80f4e7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 7 Sep 2023 13:13:02 +0200 Subject: [PATCH] Disable syntax-suggest test case. @@ -9,12 +9,12 @@ This requires internet connection. 1 file changed, 2 deletions(-) diff --git a/common.mk b/common.mk -index d55d1788aa..73755f6ccd 100644 +index dae7d9dc00..111e859d1b 100644 --- a/common.mk +++ b/common.mk -@@ -1601,8 +1601,6 @@ yes-test-syntax-suggest: $(PREPARE_SYNTAX_SUGGEST) - $(ACTIONS_ENDGROUP) - no-test-syntax-suggest: +@@ -1619,8 +1619,6 @@ no-test-bundled-gems-spec: + + test-syntax-suggest: -check: $(DOT_WAIT) $(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest - diff --git a/ruby-3.4.0-Extract-hardening-CFLAGS-to-a-special-hardenflags-variable.patch b/ruby-3.4.0-Extract-hardening-CFLAGS-to-a-special-hardenflags-variable.patch deleted file mode 100644 index d0c10a0..0000000 --- a/ruby-3.4.0-Extract-hardening-CFLAGS-to-a-special-hardenflags-variable.patch +++ /dev/null @@ -1,302 +0,0 @@ -From 3d405634f43d39079ee93cdc59ed7fc0a5e8917a Mon Sep 17 00:00:00 2001 -From: KJ Tsanaktsidis -Date: Sun, 9 Jun 2024 21:15:39 +1000 -Subject: [PATCH] Extract hardening CFLAGS to a special $hardenflags variable - -This changes the automatic detection of -fstack-protector, --D_FORTIFY_SOURCE, and -mbranch-protection to write to $hardenflags -instead of $XCFLAGS. The definition of $cflags is changed to -"$hardenflags $orig_cflags $optflags $debugflags $warnflags" to match. - -Furthermore, these flags are _prepended_ to $hardenflags, rather than -appended. - -The implications of doing this are as follows: - -* If a CRuby builder specifies cflags="-mbranch-protection=foobar" at - the ./configure script, and the configure script detects that - -mbranch-protection=pac-ret is accepted, then GCC will be invoked as - "gcc -mbranch-protection=pac-ret -mbranch-protection=foobar". Since - the last flags take precedence, that means that user-supplied values - of these flags in $cflags will take priority. -* Likewise, if a CRuby builder explicitly specifies - "hardenflags=-mbranch-protection=foobar", because we _prepend_ to - $hardenflags in our autoconf script, we will still invoke GCC as - "gcc -mbranch-protection=pac-ret -mbranch-protection=foobar". -* If a CRuby builder specifies CFLAGS="..." at the configure line, - automatic detection of hardening flags is ignored as before. -* C extensions will _also_ be built with hardening flags now as well - (this was not the case by default before because the detected flags - went into $XCFLAGS). - -Additionally, as part of this work, I changed how the detection of -PAC/BTI in Context.S works. Rather than appending the autodetected -option to ASFLAGS, we simply compile a set of test programs with the -actual CFLAGS in use to determine what PAC/BTI settings were actually -chosen by the builder. Context.S is made aware of these choices through -some custom macros. - -The result of this work is that: - -* Ruby will continue to choose some sensible defaults for hardening - options for the C compiler -* Distributors are able to specify CFLAGS that are consistent with their - distribution and override these defaults -* Context.S will react to whatever -mbranch-protection is actually in - use, not what was autodetected -* Extensions get built with hardening flags too. - -[Bug #20154] -[Bug #20520] ---- - configure.ac | 81 ++++++++++++++++++++++++++++++----- - coroutine/arm64/Context.S | 14 +++--- - template/Makefile.in | 1 + - tool/m4/ruby_append_option.m4 | 4 ++ - tool/m4/ruby_try_cflags.m4 | 17 ++++++++ - 5 files changed, 100 insertions(+), 17 deletions(-) - -diff --git a/configure.ac b/configure.ac -index f35fad6a362611..0da15772d36671 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -354,7 +354,7 @@ test -z "$warnflags" || - AS_IF([test -z "${CFLAGS+set}"], [ - cflags=`echo " $cflags " | sed "$cflagspat;s/^ *//;s/ *$//"` - orig_cflags="$cflags" -- cflags="$cflags "'${optflags} ${debugflags} ${warnflags}' -+ cflags='${hardenflags} '"$cflags "'${optflags} ${debugflags} ${warnflags}' - ]) - dnl AS_IF([test -z "${CXXFLAGS+set}"], [ - dnl cxxflags=`echo " $cxxflags " | sed "$cflagspat;s/^ *//;s/ *$//"` -@@ -802,7 +802,7 @@ AS_IF([test "$GCC" = yes], [ - [fortify_source=$enableval]) - AS_IF([test "x$fortify_source" != xno], [ - RUBY_TRY_CFLAGS([$optflags -D_FORTIFY_SOURCE=2], -- [RUBY_APPEND_OPTION(XCFLAGS, -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2)], [], -+ [RUBY_PREPEND_OPTION(hardenflags, -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2)], [], - [@%:@include ]) - ]) - -@@ -823,20 +823,24 @@ AS_IF([test "$GCC" = yes], [ - AC_MSG_CHECKING([for -fstack-protector]) - AC_MSG_RESULT(["$stack_protector"]) - AS_CASE(["$stack_protector"], [-*], [ -- RUBY_APPEND_OPTION(XCFLAGS, $stack_protector) -- RUBY_APPEND_OPTION(XLDFLAGS, $stack_protector) -- RUBY_APPEND_OPTION(LDFLAGS, $stack_protector) -+ RUBY_PREPEND_OPTION(hardenflags, $stack_protector) -+ RUBY_APPEND_OPTION(XLDFLAGS, $stack_protector) -+ RUBY_APPEND_OPTION(LDFLAGS, $stack_protector) - ]) - - # aarch64 branch protection - AS_CASE(["$target_cpu"], [aarch64], [ - AS_FOR(option, opt, [-mbranch-protection=pac-ret -msign-return-address=all], [ -- RUBY_TRY_CFLAGS(option, [branch_protection=yes], [branch_protection=no]) -+ # Try these flags in the _prepended_ position - i.e. we want to try building a program -+ # with CFLAGS="-mbranch-protection=pac-ret $CFLAGS". If the builder has provided different -+ # branch protection flags in CFLAGS, we don't want to overwrite those. We just want to -+ # find some branch protection flags which work if none were provided. -+ RUBY_TRY_CFLAGS_PREPEND(option, [branch_protection=yes], [branch_protection=no]) - AS_IF([test "x$branch_protection" = xyes], [ -- # C compiler and assembler must be consistent for -mbranch-protection -- # since they both check `__ARM_FEATURE_PAC_DEFAULT` definition. -- RUBY_APPEND_OPTION(XCFLAGS, option) -- RUBY_APPEND_OPTION(ASFLAGS, option) -+ # _prepend_ the options to CFLAGS, so that user-provided flags will overwrite them. -+ # These CFLAGS are used during the configure script to compile further test programs; -+ # however, $harden_flags is prepended separately to CFLAGS at the end of the script. -+ RUBY_PREPEND_OPTION(hardenflags, $opt) - break - ]) - ]) -@@ -985,6 +989,59 @@ test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ - test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\"" - } - -+# The lines above expand out the $cflags/$optflags/$debugflags/$hardenflags variables into the -+# CFLAGS variable. So, at this point, we have a $CFLAGS var with the actual compiler flags we're -+# going to use. -+# That means this is the right time to check what branch protection flags are going to be in use -+# and define appropriate macros for use in Context.S based on this -+AS_CASE(["$target_cpu"], [aarch64], [ -+ AC_CACHE_CHECK([whether __ARM_FEATURE_BTI_DEFAULT is defined], -+ rb_cv_aarch64_bti_enabled, -+ AC_COMPILE_IFELSE( -+ [AC_LANG_PROGRAM([[ -+ @%:@ifndef __ARM_FEATURE_BTI_DEFAULT -+ @%:@error "__ARM_FEATURE_BTI_DEFAULT not defined" -+ @%:@endif -+ ]])], -+ [rb_cv_aarch64_bti_enabled=yes], -+ [rb_cv_aarch64_bti_enabled=no]) -+ ) -+ AS_IF([test "$rb_cv_aarch64_bti_enabled" = yes], -+ AC_DEFINE(RUBY_AARCH64_BTI_ENABLED, 1)) -+ AC_CACHE_CHECK([whether __ARM_FEATURE_PAC_DEFAULT is defined], -+ rb_cv_aarch64_pac_enabled, -+ AC_COMPILE_IFELSE( -+ [AC_LANG_PROGRAM([[ -+ @%:@ifndef __ARM_FEATURE_PAC_DEFAULT -+ @%:@error "__ARM_FEATURE_PAC_DEFAULT not defined" -+ @%:@endif -+ ]])], -+ [rb_cv_aarch64_pac_enabled=yes], -+ [rb_cv_aarch64_pac_enabled=no]) -+ ) -+ AS_IF([test "$rb_cv_aarch64_pac_enabled" = yes], -+ AC_DEFINE(RUBY_AARCH64_PAC_ENABLED, 1)) -+ # Context.S will only ever sign its return address with the A-key; it doesn't support -+ # the B-key at the moment. -+ AS_IF([test "$rb_cv_aarch64_pac_enabled" = yes], [ -+ AC_CACHE_CHECK([whether __ARM_FEATURE_PAC_DEFAULT specifies the b-key bit 0x02], -+ rb_cv_aarch64_pac_b_key, -+ AC_COMPILE_IFELSE( -+ [AC_LANG_PROGRAM([[ -+ @%:@ifdef __ARM_FEATURE_PAC_DEFAULT -+ @%:@if __ARM_FEATURE_PAC_DEFAULT & 0x02 -+ @%:@error "__ARM_FEATURE_PAC_DEFAULT specifies B key" -+ @%:@endif -+ @%:@endif -+ ]])], -+ [rb_cv_aarch64_pac_b_key=no], -+ [rb_cv_aarch64_pac_b_key=yes]) -+ ) -+ AS_IF([test "$rb_cv_aarch64_pac_b_key" = yes], -+ AC_MSG_ERROR(-mbranch-protection flag specified b-key but Ruby's Context.S does not support this yet.)) -+ ]) -+]) -+ - AC_CACHE_CHECK([whether compiler has statement and declarations in expressions], - rb_cv_have_stmt_and_decl_in_expr, - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[ __extension__ ({ int a = 0; a; }); ]])], -@@ -4215,12 +4272,13 @@ AS_IF([test "${ARCH_FLAG}"], [ - rb_cv_warnflags=`echo "$rb_cv_warnflags" | sed 's/^ *//;s/ *$//'` - warnflags="$rb_cv_warnflags" - AC_SUBST(cppflags)dnl --AC_SUBST(cflags, ["${orig_cflags:+$orig_cflags }"'${optflags} ${debugflags} ${warnflags}'])dnl -+AC_SUBST(cflags, ['${hardenflags} '"${orig_cflags:+$orig_cflags }"' ${optflags} ${debugflags} ${warnflags}'])dnl - AC_SUBST(cxxflags)dnl - AC_SUBST(optflags)dnl - AC_SUBST(debugflags)dnl - AC_SUBST(warnflags)dnl - AC_SUBST(strict_warnflags)dnl -+AC_SUBST(hardenflags)dnl - AC_SUBST(XCFLAGS)dnl - AC_SUBST(XLDFLAGS)dnl - AC_SUBST(EXTLDFLAGS)dnl -@@ -4688,6 +4746,7 @@ config_summary "DLDFLAGS" "$DLDFLAGS" - config_summary "optflags" "$optflags" - config_summary "debugflags" "$debugflags" - config_summary "warnflags" "$warnflags" -+config_summary "hardenflags" "$hardenflags" - config_summary "strip command" "$STRIP" - config_summary "install doc" "$DOCTARGETS" - config_summary "YJIT support" "$YJIT_SUPPORT" -diff --git a/coroutine/arm64/Context.S b/coroutine/arm64/Context.S -index 5251ab214df1f0..54611a247e2f66 100644 ---- a/coroutine/arm64/Context.S -+++ b/coroutine/arm64/Context.S -@@ -5,6 +5,8 @@ - ## Copyright, 2018, by Samuel Williams. - ## - -+#include "ruby/config.h" -+ - #define TOKEN_PASTE(x,y) x##y - #define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name) - -@@ -27,10 +29,10 @@ - .global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer) - PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer): - --#if defined(__ARM_FEATURE_PAC_DEFAULT) && (__ARM_FEATURE_PAC_DEFAULT != 0) -+#if defined(RUBY_AARCH64_PAC_ENABLED) - # paciasp (it also acts as BTI landing pad, so no need to insert BTI also) - hint #25 --#elif defined(__ARM_FEATURE_BTI_DEFAULT) && (__ARM_FEATURE_BTI_DEFAULT != 0) -+#elif defined(RUBY_AARCH64_BTI_ENABLED) - # For the the case PAC is not enabled but BTI is. - # bti c - hint #34 -@@ -73,7 +75,7 @@ PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer): - # Pop stack frame - add sp, sp, 0xa0 - --#if defined(__ARM_FEATURE_PAC_DEFAULT) && (__ARM_FEATURE_PAC_DEFAULT != 0) -+#if defined(RUBY_AARCH64_PAC_ENABLED) - # autiasp: Authenticate x30 (LR) with SP and key A - hint #29 - #endif -@@ -85,18 +87,18 @@ PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer): - .section .note.GNU-stack,"",%progbits - #endif - --#if __ARM_FEATURE_BTI_DEFAULT != 0 || __ARM_FEATURE_PAC_DEFAULT != 0 -+#if defined(RUBY_AARCH64_BTI_ENABLED) || defined(RUBY_AARCH64_PAC_ENABLED) - /* See "ELF for the Arm 64-bit Architecture (AArch64)" - https://github.com/ARM-software/abi-aa/blob/2023Q3/aaelf64/aaelf64.rst#program-property */ - # define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1<<0) - # define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1<<1) - --# if __ARM_FEATURE_BTI_DEFAULT != 0 -+# if defined(RUBY_AARCH64_BTI_ENABLED) - # define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI - # else - # define BTI_FLAG 0 - # endif --# if __ARM_FEATURE_PAC_DEFAULT != 0 -+# if defined(RUBY_AARCH64_PAC_ENABLED) - # define PAC_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_PAC - # else - # define PAC_FLAG 0 -diff --git a/template/Makefile.in b/template/Makefile.in -index 033ac56cb38886..abb4469777ce8a 100644 ---- a/template/Makefile.in -+++ b/template/Makefile.in -@@ -89,6 +89,7 @@ cflags = @cflags@ - optflags = @optflags@ - debugflags = @debugflags@ - warnflags = @warnflags@ @strict_warnflags@ -+hardenflags = @hardenflags@ - cppflags = @cppflags@ - incflags = @incflags@ - RUBY_DEVEL = @RUBY_DEVEL@ # "yes" or empty -diff --git a/tool/m4/ruby_append_option.m4 b/tool/m4/ruby_append_option.m4 -index ff828d2162c22f..98359fa1f95f52 100644 ---- a/tool/m4/ruby_append_option.m4 -+++ b/tool/m4/ruby_append_option.m4 -@@ -3,3 +3,7 @@ AC_DEFUN([RUBY_APPEND_OPTION], - [# RUBY_APPEND_OPTION($1) - AS_CASE([" [$]{$1-} "], - [*" $2 "*], [], [' '], [ $1="$2"], [ $1="[$]$1 $2"])])dnl -+AC_DEFUN([RUBY_PREPEND_OPTION], -+ [# RUBY_APPEND_OPTION($1) -+ AS_CASE([" [$]{$1-} "], -+ [*" $2 "*], [], [' '], [ $1="$2"], [ $1="$2 [$]$1"])])dnl -diff --git a/tool/m4/ruby_try_cflags.m4 b/tool/m4/ruby_try_cflags.m4 -index b74718fe5e1cef..b397642aad9ca2 100644 ---- a/tool/m4/ruby_try_cflags.m4 -+++ b/tool/m4/ruby_try_cflags.m4 -@@ -22,3 +22,20 @@ AC_DEFUN([RUBY_TRY_CFLAGS], [ - AC_MSG_RESULT(no)], - [$4], [$5]) - ])dnl -+ -+AC_DEFUN([_RUBY_TRY_CFLAGS_PREPEND], [ -+ RUBY_WERROR_FLAG([ -+ CFLAGS="$1 [$]CFLAGS" -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$4]], [[$5]])], -+ [$2], [$3]) -+ ])dnl -+])dnl -+AC_DEFUN([RUBY_TRY_CFLAGS_PREPEND], [ -+ AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])dnl -+ _RUBY_TRY_CFLAGS_PREPEND([$1], -+ [$2 -+ AC_MSG_RESULT(yes)], -+ [$3 -+ AC_MSG_RESULT(no)], -+ [$4], [$5]) -+])dnl diff --git a/ruby-3.4.0-openssl-respect-crypto-policies-tls-min.patch b/ruby-3.4.0-openssl-respect-crypto-policies-tls-min.patch deleted file mode 100644 index 6c7a4dd..0000000 --- a/ruby-3.4.0-openssl-respect-crypto-policies-tls-min.patch +++ /dev/null @@ -1,47 +0,0 @@ -From ae215a47ae1a6527bb7b8566e5bcc9430652462f Mon Sep 17 00:00:00 2001 -From: Ewoud Kohl van Wijngaarden -Date: Fri, 5 Jan 2024 15:58:59 +0100 -Subject: [PATCH] Only set min_version on OpenSSL < 1.1.0 - -Both Red Hat and Debian-like systems configure the minimum TLS version -to be 1.2 by default, but allow users to change this via configs. - -On Red Hat and derivatives this happens via crypto-policies[1], which in -writes settings in /etc/crypto-policies/back-ends/opensslcnf.config. -Most notably, it sets TLS.MinProtocol there. For Debian there's -MinProtocol in /etc/ssl/openssl.cnf. Both default to TLSv1.2, which is -considered a secure default. - -In constrast, the SSLContext has a hard coded OpenSSL::SSL::TLS1_VERSION -for min_version. TLS 1.0 and 1.1 are considered insecure. By always -setting this in the default parameters, the system wide default can't be -respected, even if a developer wants to. - -This takes the approach that's also done for ciphers: it's only set for -OpenSSL < 1.1.0. - -[1]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening ---- - lib/openssl/ssl.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ext/openssl/lib/openssl/ssl.rb b/ext/openssl/lib/openssl/ssl.rb -index e557b8b48..83ecacafb 100644 ---- a/ext/openssl/lib/openssl/ssl.rb -+++ b/ext/openssl/lib/openssl/ssl.rb -@@ -22,7 +22,6 @@ module OpenSSL - module SSL - class SSLContext - DEFAULT_PARAMS = { # :nodoc: -- :min_version => OpenSSL::SSL::TLS1_VERSION, - :verify_mode => OpenSSL::SSL::VERIFY_PEER, - :verify_hostname => true, - :options => -> { -@@ -55,6 +54,7 @@ class SSLContext - if !(OpenSSL::OPENSSL_VERSION.start_with?("OpenSSL") && - OpenSSL::OPENSSL_VERSION_NUMBER >= 0x10100000) - DEFAULT_PARAMS.merge!( -+ min_version: OpenSSL::SSL::TLS1_VERSION, - ciphers: %w{ - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 diff --git a/ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch b/ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch new file mode 100644 index 0000000..8238b58 --- /dev/null +++ b/ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch @@ -0,0 +1,117 @@ +From 1cfb11bc8d01e4fc1ff47807721e29b250f0f19f Mon Sep 17 00:00:00 2001 +From: Jarek Prokop +Date: Mon, 22 Dec 2025 10:13:34 +0100 +Subject: [PATCH] Support customizable rustc_flags for rustc builds. + +Add `rustc_flags` option for configure that appends to RUSTC_FLAGS +flags used when compiling with rustc for customizable build flags. +It appends to existing defaults in RUSTC_FLAGS. + +Co-authored-by: Alan Wu +--- + common.mk | 10 ++-------- + configure.ac | 8 ++++++++ + defs/jit.mk | 2 ++ + template/Makefile.in | 1 + + 4 files changed, 13 insertions(+), 8 deletions(-) + +diff --git a/common.mk b/common.mk +index 08fee9119a..9ac5ae919f 100644 +--- a/common.mk ++++ b/common.mk +@@ -270,21 +270,15 @@ MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \ + # For release builds + YJIT_RUSTC_ARGS = --crate-name=yjit \ + $(JIT_RUST_FLAGS) \ ++ $(RUSTC_FLAGS) \ + --edition=2021 \ +- -g \ +- -C lto=thin \ +- -C opt-level=3 \ +- -C overflow-checks=on \ + '--out-dir=$(CARGO_TARGET_DIR)/release/' \ + '$(top_srcdir)/yjit/src/lib.rs' + + ZJIT_RUSTC_ARGS = --crate-name=zjit \ + $(JIT_RUST_FLAGS) \ ++ $(RUSTC_FLAGS) \ + --edition=2024 \ +- -g \ +- -C lto=thin \ +- -C opt-level=3 \ +- -C overflow-checks=on \ + '--out-dir=$(CARGO_TARGET_DIR)/release/' \ + '$(top_srcdir)/zjit/src/lib.rs' + +diff --git a/configure.ac b/configure.ac +index 2bbce78fd0..a3aa6dc383 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -69,6 +69,7 @@ dnl 93(bright yellow) is copied from .github/workflows/mingw.yml + AC_ARG_VAR([cflags], [additional CFLAGS (ignored when CFLAGS is given)])dnl + AC_ARG_VAR([cppflags], [additional CPPFLAGS (ignored when CPPFLAGS is given)])dnl + AC_ARG_VAR([cxxflags], [additional CXXFLAGS (ignored when CXXFLAGS is given)])dnl ++AC_ARG_VAR([rustc_flags], [additional RUSTC_FLAGS])dnl + + [begin]_group "environment section" && { + HAVE_BASERUBY=yes +@@ -4054,6 +4055,11 @@ AS_CASE(["${ZJIT_SUPPORT}"], + AC_DEFINE(USE_ZJIT, 0) + ]) + ++RUSTC_FLAGS='-g -C lto=thin -C opt-level=3 -C overflow-checks=on' ++AS_IF([test -n "${rustc_flags}"], [ ++ RUSTC_FLAGS="${RUSTC_FLAGS} ${rustc_flags}" ++]) ++ + JIT_RUST_FLAGS='--crate-type=staticlib --cfg feature=\"stats_allocator\"' + RLIB_DIR= + AS_CASE(["$JIT_CARGO_SUPPORT:$YJIT_SUPPORT:$ZJIT_SUPPORT"], +@@ -4111,6 +4117,7 @@ AS_IF([test -n "$RUST_LIB"], [ + dnl These variables end up in ::RbConfig::CONFIG + AC_SUBST(RUSTC)dnl Rust compiler command + AC_SUBST(JIT_RUST_FLAGS)dnl the common rustc flags for JIT crates such as zjit ++AC_SUBST(RUSTC_FLAGS)dnl user-configurable rustc compiler flags + AC_SUBST(CARGO)dnl Cargo command for Rust builds + AC_SUBST(CARGO_BUILD_ARGS)dnl for selecting Rust build profiles + AC_SUBST(YJIT_SUPPORT)dnl what flavor of YJIT the Ruby build includes +@@ -4855,6 +4862,7 @@ config_summary "strip command" "$STRIP" + config_summary "install doc" "$DOCTARGETS" + config_summary "YJIT support" "$YJIT_SUPPORT" + config_summary "ZJIT support" "$ZJIT_SUPPORT" ++config_summary "RUSTC_FLAGS" "$RUSTC_FLAGS" + config_summary "man page type" "$MANTYPE" + config_summary "search path" "$search_path" + config_summary "static-linked-ext" ${EXTSTATIC:+"yes"} +diff --git a/defs/jit.mk b/defs/jit.mk +index 42b56c4cd9..27b14e7a07 100644 +--- a/defs/jit.mk ++++ b/defs/jit.mk +@@ -40,6 +40,7 @@ else ifneq ($(strip $(RLIB_DIR)),) # combo build + $(RUST_LIB): $(srcdir)/ruby.rs + $(ECHO) 'building $(@F)' + $(gnumake_recursive)$(Q) $(RUSTC) --edition=2024 \ ++ $(RUSTC_FLAGS) \ + '-L$(@D)' \ + --extern=yjit \ + --extern=zjit \ +@@ -58,6 +59,7 @@ $(JIT_RLIB): + $(gnumake_recursive)$(Q) $(RUSTC) --crate-name=jit \ + --edition=2024 \ + $(JIT_RUST_FLAGS) \ ++ $(RUSTC_FLAGS) \ + '--out-dir=$(@D)' \ + '$(top_srcdir)/jit/src/lib.rs' + endif # ifneq ($(JIT_CARGO_SUPPORT),no) +diff --git a/template/Makefile.in b/template/Makefile.in +index 443c394cb4..0b7b50e3aa 100644 +--- a/template/Makefile.in ++++ b/template/Makefile.in +@@ -115,6 +115,7 @@ CARGO_TARGET_DIR=@abs_top_builddir@/target + CARGO_BUILD_ARGS=@CARGO_BUILD_ARGS@ + ZJIT_TEST_FEATURES=@ZJIT_TEST_FEATURES@ + JIT_RUST_FLAGS=@JIT_RUST_FLAGS@ ++RUSTC_FLAGS=@RUSTC_FLAGS@ + RLIB_DIR=@RLIB_DIR@ + RUST_LIB=@RUST_LIB@ + RUST_LIBOBJ = $(RUST_LIB:.a=.@OBJEXT@) diff --git a/ruby.rpmlintrc b/ruby.rpmlintrc index 90e14d6..ec8ac11 100644 --- a/ruby.rpmlintrc +++ b/ruby.rpmlintrc @@ -13,15 +13,13 @@ addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan # The template files do not have to have executable bits. addFilter(r'^rubygem-bundler\.noarch: E: non-executable-script /usr/share/gems/gems/bundler-[\d\.]+/lib/bundler/templates/[\w/\.]+ 644 /usr/bin/env ') +# Samples don't really need executable bits. +addFilter(r'^rubygem-bigdecimal\.x86_64: E: non-executable-script /usr/share/gems/gems/bigdecimal-[\d\.]+/sample/\w+.rb 644 /usr/local/bin/ruby$') + # The bundled gem files permissions are overridden as 644 by `make install`. # https://bugs.ruby-lang.org/issues/17840 # https://github.com/rubygems/rubygems/issues/5255 -# https://github.com/ruby/debug/pull/481 -# https://github.com/ruby/net-ftp/pull/12 -# https://github.com/ruby/net-imap/pull/53 -# https://github.com/ruby/net-pop/pull/7 -# https://github.com/ruby/prime/pull/16 -addFilter(r'^.*: E: non-executable-script /usr/share/gems/gems/(debug|net-(ftp|imap|pop)|prime)-[\d\.]+/bin/\w+ 644 ') +addFilter(r'^.*: E: non-executable-script /usr/share/gems/gems/(abbrev|getoptlong|nkf|observer|resolv|resolv-replace|rinda|syslog)-[\d\.]+/bin/\w+ 644 ') # Ruby provides API to set the cipher list. addFilter(r'^ruby-libs\.\w+: W: crypto-policy-non-compliance-openssl /usr/lib(64)?/ruby/openssl.so SSL_CTX_set_cipher_list$') diff --git a/ruby.spec b/ruby.spec index 43e7fb0..a364fe6 100644 --- a/ruby.spec +++ b/ruby.spec @@ -1,24 +1,31 @@ -%global major_version 3 -%global minor_version 3 -%global teeny_version 8 +%global major_version 4 +%global minor_version 0 +%global teeny_version 1 %global major_minor_version %{major_version}.%{minor_version} %global ruby_version %{major_minor_version}.%{teeny_version} %global ruby_release %{ruby_version} # Specify the named version. It has precedense to revision. -#%%global milestone rc1 +%dnl %global milestone preview2 # Keep the revision enabled for pre-releases from GIT. -#%%global revision ef084cc8f4 +%dnl %global revision d428d086c2 %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}} +%if 0%{?milestone:1} != 0 +%global ruby_archive %{ruby_archive}-%{?milestone} +%endif + +%if 0%{?revision:1} != 0 +%global ruby_archive %{ruby_archive}-%{?revision} %define ruby_archive_timestamp %(stat --printf='@%Y' %{_sourcedir}/%{ruby_archive}.tar.xz | date -f - +"%Y%m%d") -%define development_release ~%{ruby_archive_timestamp}%{?milestone}%{?!milestone:%{?revision:git%{revision}}} +%endif + +%if 0%{?milestone:1}%{?revision:1} != 0 +%define development_release ~%{?ruby_archive_timestamp}%{?milestone}%{?!milestone:%{?revision:git%{revision}}} %endif @@ -26,119 +33,120 @@ # RubyGems should be share by all Ruby implementations. %global rubygems_dir %{_datadir}/rubygems +## BUNDLED_GEMS_VERSIONS + # Bundled libraries versions -%global rubygems_version 3.5.22 +%global rubygems_version 4.0.3 %global rubygems_molinillo_version 0.8.0 -%global rubygems_net_http_version 0.4.1 +%global rubygems_net_http_version 0.7.0 %global rubygems_net_protocol_version 0.2.2 -%global rubygems_optparse_version 0.4.0 -%global rubygems_resolv_version 0.4.0 -%global rubygems_securerandom_version 0.3.1 -%global rubygems_timeout_version 0.4.1 +%global rubygems_optparse_version 0.8.0 +%global rubygems_resolv_version 0.6.2 +%global rubygems_securerandom_version 0.4.1 +%global rubygems_timeout_version 0.4.4 %global rubygems_tsort_version 0.2.0 -%global rubygems_uri_version 0.13.1 +%global rubygems_uri_version 1.1.1 # Default gems. -%global bundler_version 2.5.22 -%global bundler_connection_pool_version 2.4.1 -%global bundler_fileutils_version 1.7.2 -%global bundler_net_http_persistent_version 4.0.4 +%global bundler_version 4.0.3 +%global bundler_connection_pool_version 2.5.4 +%global bundler_fileutils_version 1.8.0 +%global bundler_net_http_persistent_version 4.0.6 %global bundler_pub_grub_version 0.5.0 -%global bundler_securerandom_version 0.3.1 -%global bundler_thor_version 1.3.0 +%global bundler_securerandom_version 0.4.1 +%global bundler_thor_version 1.4.0 %global bundler_tsort_version 0.2.0 -%global bundler_uri_version 0.13.1 +%global bundler_uri_version 1.1.1 -%global abbrev_version 0.1.2 -%global base64_version 0.2.0 -%global benchmark_version 0.3.0 -%global cgi_version 0.4.2 -%global csv_version 3.2.8 -%global date_version 3.3.4 -%global delegate_version 0.3.1 -%global did_you_mean_version 1.6.3 -%global digest_version 3.1.1 -%global drb_version 2.2.0 -%global english_version 0.8.0 -%global erb_version 4.0.3 -%global error_highlight_version 0.6.0 -%global etc_version 1.4.3 -%global fcntl_version 1.1.0 -%global fiddle_version 1.1.2 -%global fileutils_version 1.7.2 +%global date_version 3.5.1 +%global delegate_version 0.6.1 +%global did_you_mean_version 2.0.0 +%global digest_version 3.2.1 +%global english_version 0.8.1 +%global erb_version 6.0.1 +%global error_highlight_version 0.7.1 +%global etc_version 1.4.6 +%global fcntl_version 1.3.0 +%global fileutils_version 1.8.0 %global find_version 0.2.0 -%global forwardable_version 1.3.3 -%global getoptlong_version 0.2.1 -%global io_nonblock_version 0.3.0 -%global io_wait_version 0.3.1 -%global ipaddr_version 1.2.6 -%global logger_version 1.6.0 -%global mutex_m_version 0.2.0 -%global net_http_version 0.4.1 +%global forwardable_version 1.4.0 +%global io_console_version 0.8.2 +%global io_nonblock_version 0.3.2 +%global io_wait_version 0.4.0 +%global ipaddr_version 1.2.8 +%global json_version 2.18.0 +%global net_http_version 0.9.1 %global net_protocol_version 0.2.2 -%global nkf_version 0.1.3 -%global observer_version 0.1.2 +%global open_uri_version 0.5.0 %global open3_version 0.2.1 -%global openssl_version 3.2.0 -%global open_uri_version 0.4.1 -%global optparse_version 0.4.0 -%global ostruct_version 0.6.0 -%global pathname_version 0.3.0 -%global pp_version 0.5.0 +%global openssl_version 4.0.0 +%global optparse_version 0.8.1 +%global pp_version 0.6.3 %global prettyprint_version 0.2.0 -%global pstore_version 0.1.3 -%global readline_version 0.0.4 -%global reline_version 0.5.10 -%global resolv_version 0.3.0 -%global resolv_replace_version 0.1.1 -%global rinda_version 0.2.0 +%global prism_version 1.8.0 +%global psych_version 5.3.1 +%global resolv_version 0.7.0 %global ruby2_keywords_version 0.0.5 -%global securerandom_version 0.3.1 -%global set_version 1.1.0 -%global shellwords_version 0.2.0 -%global singleton_version 0.2.0 -%global stringio_version 3.1.1 -%global strscan_version 3.0.9 -%global syntax_suggest_version 2.0.1 -%global syslog_version 0.1.2 -%global tempfile_version 0.2.1 -%global time_version 0.3.0 -%global timeout_version 0.4.1 -%global tmpdir_version 0.2.0 +%global securerandom_version 0.4.1 +%global shellwords_version 0.2.2 +%global singleton_version 0.3.0 +%global stringio_version 3.2.0 +%global strscan_version 3.1.6 +%global syntax_suggest_version 2.0.2 +%global tempfile_version 0.3.1 +%global time_version 0.4.2 +%global timeout_version 0.6.0 +%global tmpdir_version 0.3.1 %global tsort_version 0.2.0 %global un_version 0.3.0 -%global uri_version 0.13.2 -%global weakref_version 0.1.3 -%global win32ole_version 1.8.10 -%global yaml_version 0.3.0 -%global prism_version 0.19.0 -%global zlib_version 3.1.1 - -# Gemified default gems. -%global bigdecimal_version 3.1.5 -%global io_console_version 0.7.1 -%global irb_version 1.13.1 -%global json_version 2.7.2 -%global psych_version 5.1.2 -%global rdoc_version 6.6.3.1 +%global uri_version 1.1.1 +%global weakref_version 0.1.4 +%global win32_registry_version 0.1.2 +%global yaml_version 0.4.0 +%global zlib_version 3.2.2 # Bundled gems. -%global debug_version 1.9.2 -%global net_ftp_version 0.3.4 -%global net_imap_version 0.4.19 +%global abbrev_version 0.1.2 +%global base64_version 0.3.0 +%global benchmark_version 0.5.0 +%global bigdecimal_version 4.0.1 +%global csv_version 3.3.5 +%global debug_version 1.11.1 +%global drb_version 2.2.3 +%global fiddle_version 1.1.8 +%global getoptlong_version 0.2.1 +%global irb_version 1.16.0 +%global logger_version 1.7.0 +%global matrix_version 0.4.3 +%global minitest_version 6.0.0 +%global mutex_m_version 0.3.0 +%global net_ftp_version 0.3.9 +%global net_imap_version 0.6.2 %global net_pop_version 0.1.2 %global net_smtp_version 0.5.1 -%global matrix_version 0.4.2 -%global minitest_version 5.20.0 -%global power_assert_version 2.0.3 -%global prime_version 0.1.2 -%global racc_version 1.7.3 -%global rake_version 13.1.0 -%global rbs_version 3.4.0 -%global rexml_version 3.3.9 -%global rss_version 0.3.1 -%global test_unit_version 3.6.1 -%global typeprof_version 0.21.9 +%global nkf_version 0.2.0 +%global observer_version 0.1.2 +%global ostruct_version 0.6.3 +%global power_assert_version 3.0.1 +%global prime_version 0.1.4 +%global pstore_version 0.2.0 +%global racc_version 1.8.1 +%global rake_version 13.3.1 +%global rbs_version 3.10.0 +%global rdoc_version 7.0.3 +%global readline_version 0.0.4 +%global reline_version 0.6.3 +%global repl_type_completor_version 0.1.12 +%global resolv_replace_version 0.1.1 +%global rexml_version 3.4.4 +%global rinda_version 0.2.0 +%global rss_version 0.3.2 +%global syslog_version 0.3.0 +%global test_unit_version 3.7.5 +%global typeprof_version 0.31.1 +%global win32ole_version 1.9.2 + +## END_BUNDLED_GEMS_VERSIONS # Bundled nkf version %global bundled_nkf_version 2.1.5 @@ -154,13 +162,22 @@ %bcond_without gmp %bcond_without hostname %bcond_without systemtap -# YJIT is supported on x86_64 and aarch64. -# https://github.com/ruby/ruby/blob/master/doc/yjit/yjit.md +%bcond_without rust + +# Don't build rust parts if we are not building with rust bits. +%if 0%{?with_rust} +# YJIT and ZJIT is supported on x86_64 and aarch64. +# https://github.com/ruby/ruby/blob/master/doc/jit/yjit.md +# https://github.com/ruby/ruby/blob/master/doc/jit/zjit.md %ifarch x86_64 aarch64 %bcond_without yjit +%bcond_without zjit %endif +%endif + # Enable test when building on local. %bcond_with bundler_tests +%bcond_without parallel_tests %if 0%{?fedora} %bcond_without hardening_test @@ -173,7 +190,7 @@ Summary: An interpreter of object-oriented scripting language Name: ruby Version: %{ruby_version}%{?development_release} -Release: 19%{?dist} +Release: 31%{?dist} # Licenses, which are likely not included in binary RPMs: # Apache-2.0: # benchmark/gc/redblack.rb @@ -182,20 +199,10 @@ Release: 19%{?dist} # GPL-1.0-or-later: ext/win32/lib/win32/sspi.rb # GPL-1.0-or-later OR Artistic-1.0-Perl: win32/win32.c, include/ruby/win32.h, # ext/win32ole/win32ole.c -# -# !!! Problematic licenses: -# LicenseRef-scancode-unicode-mappings: ext/json/generator/generator.c -# https://bugs.ruby-lang.org/issues/11844#note-19 -# https://github.com/flori/json/issues/277 -# https://github.com/flori/json/pull/567 -# -# Licenses under review: -# .bundle/gems/net-imap-0.4.19/LICENSE.txt -# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/506 -# -# Approved license without SPDX identifier: -# ext/pty/pty.c -# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/503 +# IETF (this is not official SPDX identifier) +# .bundle/gems/net-imap-0.4.9/LICENSE.txt +# Licenses in this file covers fair use and don't need to be listed: +# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/506 # # BSD-3-Clause: missing/{crypt,mt19937,setproctitle}.c, addr2line.c:2652 # CC0: ccan/{build_assert/build_assert.h,check_type/check_type.h, @@ -211,11 +218,12 @@ Release: 19%{?dist} # https://gitlab.com/fedora/legal/fedora-license-data/-/merge_requests/145 # MIT: ccan/list/list.h # Ruby OR BSD-2-Clause OR GPL-1.0-or-later: lib/net/protocol.rb +# Ruby-pty: ext/pty/pty.c # Unicode-DFS-2015: some of enc/trans/**/*.src # There is also license review ticket here: # https://gitlab.com/fedora/legal/fedora-license-data/-/issues/500 # zlib: ext/digest/md5/md5.*, ext/nkf/nkf-utf8/nkf.c -License: (Ruby OR BSD-2-Clause) AND (Ruby OR BSD-2-Clause OR GPL-1.0-or-later) AND BSD-3-Clause AND (GPL-3.0-or-later WITH Bison-exception-2.2) AND ISC AND LicenseRef-Fedora-Public-Domain AND MIT AND CC0 AND zlib AND Unicode-DFS-2015 AND HPND-Markus-Kuhn +License: (Ruby OR BSD-2-Clause) AND (Ruby OR BSD-2-Clause OR GPL-1.0-or-later) AND BSD-3-Clause AND (GPL-3.0-or-later WITH Bison-exception-2.2) AND ISC AND LicenseRef-Fedora-Public-Domain AND MIT AND CC0-1.0 AND zlib AND Unicode-DFS-2015 AND HPND-Markus-Kuhn AND Ruby-pty URL: https://www.ruby-lang.org/ Source0: https://cache.ruby-lang.org/pub/%{name}/%{major_minor_version}/%{ruby_archive}.tar.xz Source1: operating_system.rb @@ -225,47 +233,53 @@ Source3: ruby-exercise.stp Source4: macros.ruby Source5: macros.rubygems # RPM dependency generators. -Source8: rubygems.attr -Source9: rubygems.req -Source10: rubygems.prov -Source11: rubygems.con +Source6: rubygems.attr +Source7: rubygems.req +Source8: rubygems.prov +Source9: rubygems.con # ABRT hoook test case. -Source13: test_abrt.rb +Source10: test_abrt.rb # SystemTap tests. -Source14: test_systemtap.rb +Source11: test_systemtap.rb # Ruby OpenSSL FIPS tests. -Source15: test_openssl_fips.rb +Source12: test_openssl_fips.rb # RPM gem Requires dependency generator tests. -Source16: rpm_test_helper.rb -Source17: test_rubygems_req.rb -Source18: test_rubygems_prov.rb -Source19: test_rubygems_con.rb +Source13: rpm_test_helper.rb +Source14: test_rubygems_req.rb +Source15: test_rubygems_prov.rb +Source16: test_rubygems_con.rb # The load directive is supported since RPM 4.12, i.e. F21+. The build process # fails on older Fedoras. %{load:%{SOURCE4}} %{load:%{SOURCE5}} -%define __local_generator_requires make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE9}" -%define __local_generator_provides make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE10}" -%define __local_generator_conflicts make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE11}" +%define _local_file_attrs local_generator +%define __local_generator_requires make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE7}" +%define __local_generator_provides make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE8}" +%define __local_generator_conflicts make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE9}" %define __local_generator_path ^%{gem_dir}/specifications/.*\.gemspec$ # Fix ruby_version abuse. # https://bugs.ruby-lang.org/issues/11002 Patch0: ruby-2.3.0-ruby_version.patch +# Fix ruby_version abuse for rdoc. +# Since rdoc is bundled gem, the patch is split from ruby-2.3.0-ruby_version.patch +# re-made in ruby/rdoc git source and will be applied in correct path in the +# specfile where we have the exact rdoc version that is part of the path. +Patch1: ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch # http://bugs.ruby-lang.org/issues/7807 -Patch1: ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +Patch2: ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch # Allows to override libruby.so placement. Hopefully we will be able to return # to plain --with-rubyarchprefix. # http://bugs.ruby-lang.org/issues/8973 -Patch2: ruby-2.1.0-Enable-configuration-of-archlibdir.patch +Patch3: ruby-2.1.0-Enable-configuration-of-archlibdir.patch # Force multiarch directories for i.86 to be always named i386. This solves # some differencies in build between Fedora and RHEL. -Patch3: ruby-2.1.0-always-use-i386.patch +Patch4: ruby-2.1.0-always-use-i386.patch # Allows to install RubyGems into custom directory, outside of Ruby's tree. # http://bugs.ruby-lang.org/issues/5617 -Patch4: ruby-2.1.0-custom-rubygems-location.patch +Patch5: ruby-2.1.0-custom-rubygems-location.patch # The ABRT hook used to be initialized by preludes via following patches: # https://bugs.ruby-lang.org/issues/8566 # https://bugs.ruby-lang.org/issues/15306 @@ -277,35 +291,44 @@ Patch4: ruby-2.1.0-custom-rubygems-location.patch Patch6: ruby-2.7.0-Initialize-ABRT-hook.patch # Disable syntax_suggest test suite, which tries to download its dependencies. # https://bugs.ruby-lang.org/issues/19297 -Patch9: ruby-3.3.0-Disable-syntax-suggest-test-case.patch -# Armv8.3+ capable CPUs might segfault with incorrect compilation options. -# See related upstream report: https://bugs.ruby-lang.org/issues/20085 -# https://bugs.ruby-lang.org/issues/20154 -# Make sure hardeding flags are correctly applied. -# https://bugs.ruby-lang.org/issues/20520 -Patch12: ruby-3.4.0-Extract-hardening-CFLAGS-to-a-special-hardenflags-variable.patch -# Fix Ruby OpenSSL to respect crypto-policies TLS minimal version. -# https://github.com/ruby/openssl/pull/710 -# https://github.com/ruby/ruby/commit/6213ab1a51387fd9cdcb5e87908722f3bbdf78cb -Patch13: ruby-3.4.0-openssl-respect-crypto-policies-tls-min.patch +Patch7: ruby-3.3.0-Disable-syntax-suggest-test-case.patch +# Add a way to provide %%build_rustflags to JIT's rustc. +# https://github.com/ruby/ruby/pull/15695 +Patch8: ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch +# https://github.com/ruby/rdoc/pull/1531 +# Fix error with `gem install --document=rdoc,ri` +Patch9: rdoc-pr1531-fix-mutilple-document-installation.patch Requires: %{name}-libs%{?_isa} = %{version}-%{release} %{?with_rubypick:Suggests: rubypick} Recommends: ruby(rubygems) >= %{rubygems_version} +Recommends: ruby-default-gems >= %{version}-%{release} +Recommends: ruby-bundled-gems >= %{version}-%{release} Recommends: rubygem(bigdecimal) >= %{bigdecimal_version} -BuildRequires: rpm-local-generator-support # Build dependencies BuildRequires: autoconf BuildRequires: gcc BuildRequires: make BuildRequires: libffi-devel +BuildRequires: libxcrypt-devel BuildRequires: libyaml-devel BuildRequires: openssl-devel BuildRequires: zlib-devel %{?with_gmp:BuildRequires: gmp-devel} %{?with_systemtap:BuildRequires: %{_bindir}/dtrace} -%{?with_yjit:BuildRequires: %{_bindir}/rustc} +%{?with_systemtap:BuildRequires: systemtap-sdt-devel} +%if 0%{?with_rust} +BuildRequires: %{_bindir}/rustc + +# We need the %%{build_rustflags}, EL needs different package than Fedora. +%if 0%{?fedora} +BuildRequires: rust-srpm-macros +%else +Buildrequires: rust-toolset +%endif + +%endif # Install section BuildRequires: multilib-rpm-config @@ -365,24 +388,10 @@ Provides: bundled(ccan-check_type) Provides: bundled(ccan-container_of) Provides: bundled(ccan-list) -# https://github.com/nurse/nkf -# Please note that nkf going to be promoted to bundled gem in Ruby 3.4: -# https://github.com/ruby/ruby/commit/2e3a7f70ae71650be6ea38a483f66ce17ca5eb1d -Provides: bundled(nkf) = %{bundled_nkf_version} - # StdLib default gems. Provides: bundled(rubygem-did_you_mean) = %{did_you_mean_version} Provides: bundled(rubygem-openssl) = %{openssl_version} -# 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. @@ -406,7 +415,7 @@ Requires: ruby(release) Recommends: rubygem(bundler) >= %{bundler_version} Recommends: rubygem(rdoc) >= %{rdoc_version} Recommends: rubygem(io-console) -Requires: rubygem(psych) >= %{psych_version} +Requires: rubygem(psych) >= %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} Provides: gem = %{version}-%{release} Provides: ruby(rubygems) = %{version}-%{release} Provides: bundled(rubygems) = %{rubygems_version} @@ -419,6 +428,7 @@ Provides: bundled(rubygem-resolv) = %{rubygems_resolv_version} Provides: bundled(rubygem-securerandom) = %{rubygems_securerandom_version} Provides: bundled(rubygem-timeout) = %{rubygems_timeout_version} Provides: bundled(rubygem-tsort) = %{rubygems_tsort_version} +Provides: bundled(rubygem-uri) = %{rubygems_uri_version} BuildArch: noarch @@ -449,8 +459,6 @@ Macros and development tools for packaging RubyGems. %package default-gems Summary: Default gems which are part of Ruby StdLib Supplements: ruby(rubygems) -# Obsoleted by Ruby 2.7 in F32 timeframe. -Obsoletes: rubygem-did_you_mean < 1.4.0-130 # Obsoleted by Ruby 3.0 in F34 timeframe. Obsoletes: rubygem-openssl < 2.2.0-145 BuildArch: noarch @@ -466,10 +474,6 @@ Version: %{irb_version} License: Ruby OR BSD-2-Clause Provides: irb = %{version}-%{release} Provides: bundled(rubygem-irb) = %{irb_version} -# Obsoleted by Ruby 2.6 in F30 timeframe. -Provides: ruby(irb) = %{ruby_version}%{?development_release}-%{release} -Provides: ruby-irb = %{ruby_version}%{?development_release}-%{release} -Obsoletes: ruby-irb < %{ruby_version}%{?development_release}-%{release} BuildArch: noarch %description -n rubygem-irb @@ -483,11 +487,13 @@ Version: %{rdoc_version} # BSD-3-Clause: lib/rdoc/generator/darkfish.rb # CC-BY-2.5: lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif # OFL-1.1-RFN: lib/rdoc/generator/template/darkfish/css/fonts.css +# MIT: lib/rdoc/generator/aliki.rb +# MIT: lib/rdoc/generator/template/aliki/* # Note that RDoc now embeds Racc parser: # https://github.com/ruby/rdoc/pull/1019 # Luckily, this should have no license impact: # https://github.com/ruby/racc/blob/5eb07b28bfb3e193a1cac07798fe7be7e1e246c4/lib/racc/parser.rb#L8-L10 -License: GPL-2.0-only AND Ruby AND BSD-3-Clause AND CC-BY-2.5 AND OFL-1.1-RFN +License: GPL-2.0-only AND Ruby AND BSD-3-Clause AND CC-BY-2.5 AND OFL-1.1-RFN AND MIT Requires: rubygem(io-console) Requires: rubygem(json) >= %{json_version} Provides: rdoc = %{version}-%{release} @@ -544,9 +550,18 @@ provide higher layer features, such like curses and readline. %package -n rubygem-json Summary: This is a JSON implementation as a Ruby extension in C Version: %{json_version} -# Unicode-DFS-2015: ext/json/ext/generator/generator.c -License: (Ruby OR BSD-2-Clause) AND Unicode-DFS-2015 +# Apache-2.0 OR BSL-1.0: ext/json/vendor/ryu.h +# MIT: ext/json/vendor/jeaiii-ltoa.h +# BSL-1.0: ext/json/vendor/fpconv.c +License: (Ruby OR BSD-2-Clause) AND (Apache-2.0 OR BSL-1.0) AND MIT AND BSL-1.0 Provides: bundled(rubygem-json) = %{json_version} +# https://github.com/ulfjack/ryu +Provides: bundled(ryu) +# jeaiii-ltoa.h +# https://github.com/jeaiii/itoa +Provides: bundled(itoa) +# https://github.com/night-shift/fpconv +Provides: bundled(fpconv) %description -n rubygem-json This is a implementation of the JSON specification according to RFC 4627. @@ -557,9 +572,9 @@ markup language. %package -n rubygem-psych Summary: A libyaml wrapper for Ruby -Version: %{psych_version} +Version: %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} License: MIT -Provides: bundled(rubygem-psych) = %{psych_version} +Provides: bundled(rubygem-psych) = %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} %description -n rubygem-psych Psych is a YAML parser and emitter. Psych leverages @@ -591,6 +606,7 @@ Provides: bundled(rubygem-net-http-persistent) = %{bundler_net_http_persistent Provides: bundled(rubygem-pub_grub) = %{bundler_pub_grub_version} Provides: bundled(rubygem-securerandom) = %{bundler_securerandom_version} Provides: bundled(rubygem-thor) = %{bundler_thor_version} +Provides: bundled(rubygem-tsort) = %{bundler_tsort_version} Provides: bundled(rubygem-uri) = %{bundler_uri_version} BuildArch: noarch @@ -606,13 +622,37 @@ many machines, systematically and repeatably. %package bundled-gems Summary: Bundled gems which are part of Ruby StdLib +Provides: bundled(rubygem-abbrev) = %{abbrev_version} +Provides: bundled(rubygem-base64) = %{base64_version} +Provides: bundled(rubygem-benchmark) = %{benchmark_version} +Provides: bundled(rubygem-csv) = %{csv_version} Provides: bundled(rubygem-debug) = %{debug_version} +Provides: bundled(rubygem-drb) = %{drb_version} +Provides: bundled(rubygem-getoptlong) = %{getoptlong_version} +Provides: bundled(rubygem-fiddle) = %{fiddle_version} +Provides: bundled(rubygem-logger) = %{logger_version} Provides: bundled(rubygem-matrix) = %{matrix_version} +Provides: bundled(rubygem-mutex_m) = %{mutex_m_version} Provides: bundled(rubygem-net-ftp) = %{net_ftp_version} Provides: bundled(rubygem-net-imap) = %{net_imap_version} Provides: bundled(rubygem-net-pop) = %{net_pop_version} Provides: bundled(rubygem-net-smtp) = %{net_smtp_version} +Provides: bundled(rubygem-nkf) = %{nkf_version} +Provides: bundled(rubygem-observer) = %{observer_version} +Provides: bundled(rubygem-ostruct) = %{ostruct_version} Provides: bundled(rubygem-prime) = %{prime_version} +Provides: bundled(rubygem-pstore) = %{pstore_version} +Provides: bundled(rubygem-readline) = %{readline_version} +Provides: bundled(rubygem-reline) = %{reline_version} +Provides: bundled(rubygem-repl_type_completor) = %{repl_type_completor_version} +Provides: bundled(rubygem-resolv-replace) = %{resolv_replace_version} +Provides: bundled(rubygem-rinda) = %{rinda_version} +Provides: bundled(rubygem-syslog) = %{syslog_version} +# https://github.com/nurse/nkf +# Please note that nkf going to be promoted to bundled gem in Ruby 3.4: +# https://github.com/ruby/ruby/commit/2e3a7f70ae71650be6ea38a483f66ce17ca5eb1d +Provides: bundled(nkf) = %{bundled_nkf_version} + %description bundled-gems Bundled gems which are part of Ruby StdLib. While being part of Ruby, these @@ -627,16 +667,13 @@ Provides: bundled(rubygem-minitest) = %{minitest_version} BuildArch: noarch %description -n rubygem-minitest -minitest/unit is a small and incredibly fast unit testing framework. +minitest/test is a small and incredibly fast unit testing framework. minitest/spec is a functionally complete spec engine. minitest/benchmark is an awesome way to assert the performance of your algorithms in a repeatable manner. -minitest/mock by Steven Baker, is a beautifully tiny mock object -framework. - minitest/pride shows pride in testing and adds coloring to your test output. @@ -760,14 +797,19 @@ analysis result in RBS format, a standard type description format for Ruby %setup -q -n %{ruby_archive} %patch 0 -p1 + +pushd .bundle/gems/rdoc-%{rdoc_version} %patch 1 -p1 +%patch 9 -p1 +popd + %patch 2 -p1 %patch 3 -p1 %patch 4 -p1 +%patch 5 -p1 %patch 6 -p1 -%patch 9 -p1 -%patch 12 -p1 -%patch 13 -p1 +%patch 7 -p1 +%patch 8 -p1 # Provide an example of usage of the tapset: cp -a %{SOURCE3} . @@ -801,6 +843,8 @@ pushd %{_vpath_builddir} --with-ruby-version='' \ --enable-multiarch \ %{?with_yjit: --enable-yjit} \ + %{?with_zjit: --enable-zjit} \ + %{?with_rust: rustc_flags='%{build_rustflags}'} \ popd @@ -819,6 +863,16 @@ rm -rf %{buildroot} # multilib systems and install config.h wrapper %multilib_fix_c_header --file %{_includedir}/%{name}/config.h +# `ruby` executable is placed in some strange directory for some unknow +# reasons. +# https://bugs.ruby-lang.org/issues/20800 +# https://github.com/ruby/ruby/pull/12043 +CONFIG_TARGET_DIR=%{buildroot}%{_exec_prefix}/$( \ + %{_vpath_builddir}/miniruby -I%{_vpath_builddir} -rrbconfig -e 'puts RbConfig::CONFIG["config_target"]' +) +mv ${CONFIG_TARGET_DIR}/bin/ruby %{buildroot}%{_bindir} +rm -rd ${CONFIG_TARGET_DIR} + # Rename the ruby executable. It is replaced by RubyPick. %{?with_rubypick:mv %{buildroot}%{_bindir}/%{name}{,-mri}} @@ -828,8 +882,7 @@ 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.org/GlobalSignRootCA.pem \ - rubygems.org/GlobalSignRootCA_R3.pem + rubygems.org/GlobalSign.pem do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert rm -d $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) || : @@ -847,10 +900,10 @@ sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmmacrodir}/macros.rubygems # Install dependency generators. mkdir -p %{buildroot}%{_fileattrsdir} -install -m 644 %{SOURCE8} %{buildroot}%{_fileattrsdir} +install -m 644 %{SOURCE6} %{buildroot}%{_fileattrsdir} +install -m 755 %{SOURCE7} %{buildroot}%{_rpmconfigdir} +install -m 755 %{SOURCE8} %{buildroot}%{_rpmconfigdir} install -m 755 %{SOURCE9} %{buildroot}%{_rpmconfigdir} -install -m 755 %{SOURCE10} %{buildroot}%{_rpmconfigdir} -install -m 755 %{SOURCE11} %{buildroot}%{_rpmconfigdir} # Install custom operating_system.rb. mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults @@ -866,32 +919,7 @@ mv %{buildroot}%{ruby_libdir}/gems %{buildroot}%{gem_dir} mkdir -p %{buildroot}%{_exec_prefix}/lib{,64}/gems/%{name} # Move bundled rubygems to %%gem_dir and %%gem_extdir_mri -# make symlinks for io-console and bigdecimal, which are considered to be part of stdlib by other Gems -mkdir -p %{buildroot}%{gem_libdir irb} -mv %{buildroot}%{ruby_libdir}/irb* %{buildroot}%{gem_libdir irb} -mv %{buildroot}%{gem_spec -d irb} %{buildroot}%{gem_spec irb} -ln -s %{gem_libdir irb}/irb.rb %{buildroot}%{ruby_libdir}/irb.rb -# TODO: This should be possible to replaced by simple directory symlink -# after ~ F31 EOL (rhbz#1691039). -mkdir -p %{buildroot}%{ruby_libdir}/irb -pushd %{buildroot}%{gem_dir}/gems/irb-%{irb_version}/lib -find irb -type d -mindepth 1 -exec mkdir %{buildroot}%{ruby_libdir}/'{}' \; -find irb -type f -exec ln -s %{gem_libdir irb}/'{}' %{buildroot}%{ruby_libdir}/'{}' \; -popd - -mkdir -p %{buildroot}%{gem_libdir rdoc} -mv %{buildroot}%{ruby_libdir}/rdoc* %{buildroot}%{gem_libdir rdoc} -mv %{buildroot}%{gem_spec -d rdoc} %{buildroot}%{gem_spec rdoc} - -mkdir -p %{buildroot}%{gem_libdir bigdecimal} -mkdir -p %{buildroot}%{gem_extdir_mri bigdecimal} -mv %{buildroot}%{ruby_libdir}/bigdecimal %{buildroot}%{gem_libdir bigdecimal} -mv %{buildroot}%{ruby_libarchdir}/bigdecimal.so %{buildroot}%{gem_extdir_mri bigdecimal} -touch %{buildroot}%{gem_extdir_mri bigdecimal}/gem.build_complete -mv %{buildroot}%{gem_spec -d bigdecimal} %{buildroot}%{gem_spec bigdecimal} -ln -s %{gem_libdir bigdecimal}/bigdecimal %{buildroot}%{ruby_libdir}/bigdecimal -ln -s %{gem_extdir_mri bigdecimal}/bigdecimal.so %{buildroot}%{ruby_libarchdir}/bigdecimal.so - +# make symlinks for io-console, which is considered to be part of stdlib by other Gems # TODO: Put help files into proper location. # https://bugs.ruby-lang.org/issues/15359 mkdir -p %{buildroot}%{gem_libdir bundler} @@ -941,7 +969,9 @@ find %{buildroot}%{gem_dir}/gems/*/lib -name \*.so -delete # Move man pages into proper location mkdir -p %{buildroot}%{_mandir}/man{1,5} +mv %{buildroot}%{gem_instdir irb}/man/irb.1 %{buildroot}%{_mandir}/man1 mv %{buildroot}%{gem_instdir rake}/doc/rake.1 %{buildroot}%{_mandir}/man1 +mv %{buildroot}%{gem_instdir rdoc}/man/ri.1 %{buildroot}%{_mandir}/man1 # https://bugs.ruby-lang.org/issues/17778 cp -a %{buildroot}%{gem_libdir bundler}/bundler/man/*.1 %{buildroot}%{_mandir}/man1 cp -a %{buildroot}%{gem_libdir bundler}/bundler/man/*.5 %{buildroot}%{_mandir}/man5 @@ -961,7 +991,6 @@ echo 'doc/images' >> .ruby-doc.en echo 'doc/syntax' >> .ruby-doc.en find doc -maxdepth 1 -type f -name '*.ja*' > .ruby-doc.ja -echo 'doc/irb' >> .ruby-doc.ja echo 'doc/pty' >> .ruby-doc.ja sed -i 's/^/%doc /' .ruby-doc.* @@ -970,8 +999,16 @@ sed -i 's/^/%lang(ja) /' .ruby-doc.ja %check %if 0%{?with_hardening_test} # Check Ruby hardening. -checksec --file=%{_vpath_builddir}/libruby.so.%{ruby_version} | \ - grep "Full RELRO.*Canary found.*NX enabled.*DSO.*No RPATH.*No RUNPATH.*Yes.*\d*.*\d*.*libruby.so.%{ruby_version}" +%define fortification_x86_64 fortified="10" fortify-able="26" +%define fortification_i686 fortified="10" fortify-able="26" +%define fortification_aarch64 fortified="11" fortify-able="28" +%define fortification_ppc64le fortified="7" fortify-able="24" +%define fortification_s390x fortified="10" fortify-able="24" +%define fortification_riscv64 fortified="10" fortify-able="26" +# https://unix.stackexchange.com/questions/366/convince-grep-to-output-all-lines-not-just-those-with-matches +checksec --format=xml --file=%{_vpath_builddir}/libruby.so.%{ruby_version} | \ + sed -r "s//\1/" | \ + sed -nr $'/relro="full" canary="yes" nx="yes" pie="dso" rpath="no" runpath="no" symbols="yes" fortify_source="partial" %{expand:%{fortification_%{_target_cpu}}} filename='\''redhat-linux-build\/libruby.so.%{ruby_version}'\''/h; ${p;x;/./Q0;Q1}' %endif # Check RubyGems version. @@ -991,6 +1028,7 @@ make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ # Net::HTTP. make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ module Gem; module Net; end; end; \ + require 'rbconfig'; \ require 'rubygems/vendor/net-http/lib/net/http'; \ puts '%%{rubygems_net_http_version}: %{rubygems_net_http_version}'; \ puts %Q[Gem::Net::HTTP::VERSION: #{Gem::Net::HTTP::VERSION}]; \ @@ -1018,6 +1056,7 @@ make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ # Resolv. make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ module Gem; end; \ + require 'rbconfig'; \ require 'rubygems/vendor/resolv/lib/resolv'; \ puts '%%{rubygems_resolv_version}: %{rubygems_resolv_version}'; \ puts %Q[Gem::Resolv::VERSION: #{Gem::Resolv::VERSION}]; \ @@ -1093,6 +1132,7 @@ make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ module Gem; end; \ module Bundler; end; \ + require 'rbconfig'; \ require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'; \ puts '%%{bundler_net_http_persistent_version}: %{bundler_net_http_persistent_version}'; \ puts %Q[Gem::Net::HTTP::Persistent::VERSION: #{Gem::Net::HTTP::Persistent::VERSION}]; \ @@ -1139,6 +1179,7 @@ make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ # Nkf. make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ + require 'rubygems'; \ require 'nkf'; \ puts '%%{bundled_nkf_version}: %{bundled_nkf_version}'; \ puts %Q[NKF::NKF_VERSION: #{NKF::NKF_VERSION}]; \ @@ -1153,27 +1194,27 @@ touch %{_vpath_builddir}/abrt.rb # Check if abrt hook is required (RubyGems are disabled by default when using # runruby, so re-enable them). -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE13}" +make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE10}" # Check if systemtap is supported. %if %{with systemtap} ln -sfr probes.d %{_vpath_builddir}/ -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=%{SOURCE14} +make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=%{SOURCE11} %endif # Test dependency generators for RPM +GENERATOR_SCRIPT="%{SOURCE7}" \ +make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ + -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ + %{SOURCE14} --verbose" +GENERATOR_SCRIPT="%{SOURCE8}" \ +make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ + -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ + %{SOURCE15} --verbose" GENERATOR_SCRIPT="%{SOURCE9}" \ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ - %{SOURCE17} --verbose" -GENERATOR_SCRIPT="%{SOURCE10}" \ -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ - %{SOURCE18} --verbose" -GENERATOR_SCRIPT="%{SOURCE11}" \ -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ - %{SOURCE19} --verbose" + %{SOURCE16} --verbose" DISABLE_TESTS="" @@ -1185,12 +1226,12 @@ MSPECOPTS="" # Give an option to increase the timeout in tests. # https://bugs.ruby-lang.org/issues/16921 %{?test_timeout_scale:RUBY_TEST_TIMEOUT_SCALE="%{test_timeout_scale}"} \ - make -C %{_vpath_builddir} check TESTS="-v --show-skip $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS" + make -C %{_vpath_builddir} %{?with_parallel_tests:%{?_smp_mflags}} check TESTS="-v --show-skip $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS" # Run Ruby OpenSSL tests in OpenSSL FIPS. make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ -I%{_builddir}/%{buildsubdir}/tool/lib --enable-gems \ - %{SOURCE15} %{_builddir}/%{buildsubdir} --verbose" + %{SOURCE12} %{_builddir}/%{buildsubdir} --verbose" %{?with_bundler_tests:make -C %{_vpath_builddir} test-bundler-parallel} @@ -1233,64 +1274,43 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ # List all these files explicitly to prevent surprises # Platform independent libraries. %dir %{ruby_libdir} -%exclude %{ruby_libdir}/bigdecimal* -%exclude %{ruby_libdir}/irb* %exclude %{ruby_libdir}/json* %exclude %{ruby_libdir}/psych* -%{ruby_libdir}/abbrev.rb -%{ruby_libdir}/base64.rb -%{ruby_libdir}/benchmark* %{ruby_libdir}/bundled_gems.rb %{ruby_libdir}/cgi* %{ruby_libdir}/coverage.rb -%{ruby_libdir}/csv* %{ruby_libdir}/date.rb %{ruby_libdir}/delegate* %{ruby_libdir}/digest* -%{ruby_libdir}/drb* %{ruby_libdir}/English.rb %{ruby_libdir}/erb* %{ruby_libdir}/error_highlight* %{ruby_libdir}/expect.rb -%{ruby_libdir}/fiddle* %{ruby_libdir}/fileutils.rb %{ruby_libdir}/find.rb %{ruby_libdir}/forwardable* -%{ruby_libdir}/getoptlong* %{ruby_libdir}/ipaddr.rb -%{ruby_libdir}/kconv.rb -%{ruby_libdir}/logger* %{ruby_libdir}/mkmf.rb %{ruby_libdir}/monitor.rb -%{ruby_libdir}/mutex_m.rb %{ruby_libdir}/net %{ruby_libdir}/objspace* -%{ruby_libdir}/observer* %{ruby_libdir}/open-uri.rb %{ruby_libdir}/open3* %{ruby_libdir}/optionparser.rb %{ruby_libdir}/optparse* -%{ruby_libdir}/ostruct* %{ruby_libdir}/pathname.rb %{ruby_libdir}/pp.rb %{ruby_libdir}/prettyprint.rb -%{ruby_libdir}/pstore* %{ruby_libdir}/random -%{ruby_libdir}/readline.rb -%{ruby_libdir}/reline* %{ruby_libdir}/resolv.rb -%{ruby_libdir}/resolv-replace.rb -%{ruby_libdir}/rinda %{ruby_libdir}/ripper* -%dir %{ruby_libdir}/ruby_vm -%{ruby_libdir}/ruby_vm/rjit %{ruby_libdir}/securerandom.rb -%{ruby_libdir}/set* +%{ruby_libdir}/set/subclass_compatible.rb %{ruby_libdir}/shellwords.rb %{ruby_libdir}/singleton* %{ruby_libdir}/socket.rb +%{ruby_libdir}/strscan %{ruby_libdir}/syntax_suggest* -%{ruby_libdir}/syslog %{ruby_libdir}/tempfile.rb %{ruby_libdir}/timeout* %{ruby_libdir}/time.rb @@ -1384,14 +1404,11 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{ruby_libarchdir}/erb/escape.so %{ruby_libarchdir}/etc.so %{ruby_libarchdir}/fcntl.so -%{ruby_libarchdir}/fiddle.so %dir %{ruby_libarchdir}/io %{ruby_libarchdir}/io/nonblock.so %{ruby_libarchdir}/io/wait.so %{ruby_libarchdir}/monitor.so -%{ruby_libarchdir}/nkf.so %{ruby_libarchdir}/objspace.so -%{ruby_libarchdir}/pathname.so %{ruby_libarchdir}/pty.so %dir %{ruby_libarchdir}/rbconfig %{ruby_libarchdir}/rbconfig.rb @@ -1400,7 +1417,6 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{ruby_libarchdir}/socket.so %{ruby_libarchdir}/stringio.so %{ruby_libarchdir}/strscan.so -%{ruby_libarchdir}/syslog.so %{ruby_libarchdir}/zlib.so # Default gems @@ -1440,16 +1456,10 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{_rpmconfigdir}/rubygems.con %files default-gems -%gem_spec -d abbrev -%gem_spec -d base64 -%gem_spec -d benchmark -%gem_spec -d cgi -%gem_spec -d csv %gem_spec -d date %gem_spec -d delegate %gem_spec -d did_you_mean %gem_spec -d digest -%gem_spec -d drb %gem_spec -d english %gem_spec -d erb %gem_instdir erb @@ -1458,37 +1468,23 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %gem_spec -d error_highlight %gem_spec -d etc %gem_spec -d fcntl -%gem_spec -d fiddle %gem_spec -d fileutils %gem_spec -d find %gem_spec -d forwardable -%gem_spec -d getoptlong %gem_spec -d io-nonblock %gem_spec -d io-wait %gem_spec -d ipaddr -%gem_spec -d logger -%gem_spec -d mutex_m %gem_spec -d net-http %gem_spec -d net-protocol -%gem_spec -d nkf -%gem_spec -d observer %gem_spec -d open3 %gem_spec -d open-uri %gem_spec -d optparse %gem_spec -d openssl -%gem_spec -d ostruct -%gem_spec -d pathname %gem_spec -d pp %gem_spec -d prettyprint -%gem_spec -d pstore -%gem_spec -d readline -%gem_spec -d reline %gem_spec -d resolv -%gem_spec -d resolv-replace -%gem_spec -d rinda %gem_spec -d ruby2_keywords %gem_spec -d securerandom -%gem_spec -d set %gem_spec -d shellwords %gem_spec -d singleton %gem_spec -d stringio @@ -1496,7 +1492,6 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %gem_spec -d syntax_suggest %{_bindir}/syntax_suggest %gem_instdir syntax_suggest -%gem_spec -d syslog %gem_spec -d tempfile %gem_spec -d time %gem_spec -d timeout @@ -1506,15 +1501,24 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %gem_spec -d uri %gem_spec -d weakref #%%gem_spec -d win32ole +#%%gem_spec -d win32-registry %gem_spec -d yaml %gem_spec -d prism %gem_spec -d zlib %files -n rubygem-irb %{_bindir}/irb -%{ruby_libdir}/irb* -%{gem_instdir irb} +%dir %{gem_instdir irb} +%{gem_libdir irb} %{gem_spec irb} +%{gem_instdir irb}/exe + +%{gem_instdir irb}/Gemfile +%license %{gem_instdir irb}/LICENSE.txt +%doc %{gem_instdir irb}/doc +%doc %{gem_instdir irb}/README.md +%doc %{gem_instdir irb}/CONTRIBUTING.md +%doc %{gem_instdir irb}/EXTEND_IRB.md %{_mandir}/man1/irb.1* %files -n rubygem-rdoc @@ -1522,6 +1526,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{_bindir}/ri %{gem_instdir rdoc} %{gem_spec rdoc} +%{gem_plugin rdoc} %{_mandir}/man1/ri* %files doc -f .ruby-doc.en -f .ruby-doc.ja @@ -1531,8 +1536,6 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{_datadir}/ri %files -n rubygem-bigdecimal -%{ruby_libdir}/bigdecimal* -%{ruby_libarchdir}/bigdecimal* %{gem_extdir_mri bigdecimal} %{gem_instdir bigdecimal} %{gem_spec bigdecimal} @@ -1569,27 +1572,105 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{_mandir}/man5/gemfile.5* %files bundled-gems -# rdbg -%{_bindir}/rdbg -%dir %{gem_extdir_mri debug} -%{gem_extdir_mri debug}/gem.build_complete -%dir %{gem_extdir_mri debug}/debug -%{gem_extdir_mri debug}/debug/debug.so -%dir %{gem_instdir debug} -%exclude %{gem_instdir debug}/.* -%doc %{gem_instdir debug}/CONTRIBUTING.md -%{gem_instdir debug}/Gemfile -%license %{gem_instdir debug}/LICENSE.txt -%doc %{gem_instdir debug}/README.md -%{gem_instdir debug}/Rakefile -%doc %{gem_instdir debug}/TODO.md -%{gem_instdir debug}/exe -%{gem_libdir debug} -%{gem_instdir debug}/misc -%{gem_spec debug} +# abbrev +%dir %{gem_instdir abbrev} +%license %{gem_instdir abbrev}/LICENSE.txt +%{gem_instdir abbrev}/bin +%{gem_libdir abbrev} +%{gem_spec abbrev} +%{gem_instdir abbrev}/Gemfile +%doc %{gem_instdir abbrev}/README.md +%{gem_instdir abbrev}/Rakefile + +# base64 +%dir %{gem_instdir base64} +%license %{gem_instdir base64}/BSDL +%license %{gem_instdir base64}/COPYING +%license %{gem_instdir base64}/LEGAL +%{gem_instdir base64}/sig +%{gem_libdir base64} +%{gem_spec base64} +%doc %{gem_instdir base64}/README.md + +# benchmark +%dir %{gem_instdir benchmark} +%license %{gem_instdir benchmark}/BSDL +%license %{gem_instdir benchmark}/COPYING +%doc %{gem_instdir benchmark}/README.md +%{gem_instdir benchmark}/Gemfile +%{gem_instdir benchmark}/Rakefile +%{gem_instdir benchmark}/bin +%{gem_libdir benchmark} +%{gem_spec benchmark} + +# csv +%dir %{gem_instdir csv} +%license %{gem_instdir csv}/LICENSE.txt +%doc %{gem_instdir csv}/NEWS.md +%{gem_libdir csv} +%{gem_spec csv} +%doc %{gem_instdir csv}/README.md +%doc %{gem_instdir csv}/doc + +# drb +%dir %{gem_instdir drb} +%license %{gem_instdir drb}/LICENSE.txt +%{gem_libdir drb} +%{gem_instdir drb}/drb.gemspec +%{gem_spec drb} + +# getoptlong +%dir %{gem_instdir getoptlong} +%license %{gem_instdir getoptlong}/LICENSE.txt +%{gem_instdir getoptlong}/bin +%{gem_libdir getoptlong} +%{gem_instdir getoptlong}/sample +%{gem_spec getoptlong} +%{gem_instdir getoptlong}/Gemfile +%doc %{gem_instdir getoptlong}/README.md +%{gem_instdir getoptlong}/Rakefile + +# fiddle +%dir %{gem_instdir fiddle} +%license %{gem_instdir fiddle}/LICENSE.txt +%doc %{gem_instdir fiddle}/README.md +%{gem_instdir fiddle}/Rakefile +%{gem_libdir fiddle} +%dir %{gem_extdir_mri fiddle} +%{gem_extdir_mri fiddle}/fiddle.so +%{gem_extdir_mri fiddle}/gem.build_complete +%{gem_instdir fiddle}/fiddle.gemspec +%{gem_spec fiddle} + +# logger +%dir %{gem_instdir logger} +%license %{gem_instdir logger}/BSDL +%license %{gem_instdir logger}/COPYING +%doc %{gem_instdir logger}/README.md +%{gem_libdir logger} +%{gem_spec logger} + +# matrix +%dir %{gem_instdir matrix} +%license %{gem_instdir matrix}/BSDL +%license %{gem_instdir matrix}/COPYING +%{gem_libdir matrix} +%{gem_instdir matrix}/matrix.gemspec +%{gem_spec matrix} + +# mutex_m +%dir %{gem_instdir mutex_m} +%license %{gem_instdir mutex_m}/BSDL +%license %{gem_instdir mutex_m}/COPYING +%{gem_libdir mutex_m} +%{gem_instdir mutex_m}/sig +%{gem_spec mutex_m} +%doc %{gem_instdir mutex_m}/README.md # net-ftp %dir %{gem_instdir net-ftp} +%license %{gem_instdir net-ftp}/BSDL +%license %{gem_instdir net-ftp}/COPYING %{gem_instdir net-ftp}/Gemfile %license %{gem_instdir net-ftp}/LICENSE.txt %doc %{gem_instdir net-ftp}/README.md @@ -1599,9 +1680,9 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ # net-imap %dir %{gem_instdir net-imap} -%{gem_instdir net-imap}/Gemfile %license %{gem_instdir net-imap}/BSDL %license %{gem_instdir net-imap}/COPYING +%{gem_instdir net-imap}/Gemfile %license %{gem_instdir net-imap}/LICENSE.txt %doc %{gem_instdir net-imap}/README.md %{gem_instdir net-imap}/Rakefile @@ -1628,27 +1709,149 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{gem_libdir net-smtp} %{gem_spec net-smtp} -# matrix -%dir %{gem_instdir matrix} -%license %{gem_instdir matrix}/LICENSE.txt -%{gem_libdir matrix} -%{gem_spec matrix} +# nkf +%dir %{gem_instdir nkf} +%{gem_extdir_mri nkf} +%license %{gem_instdir nkf}/LICENSE.txt +%{gem_instdir nkf}/bin +%{gem_libdir nkf} +%{gem_spec nkf} +%{gem_instdir nkf}/Gemfile +%doc %{gem_instdir nkf}/README.md +%{gem_instdir nkf}/Rakefile + +# observer +%dir %{gem_instdir observer} +%license %{gem_instdir observer}/LICENSE.txt +%{gem_instdir observer}/bin +%{gem_libdir observer} +%exclude %{gem_cache observer} +%{gem_spec observer} +%{gem_instdir observer}/Gemfile +%doc %{gem_instdir observer}/README.md +%{gem_instdir observer}/Rakefile + +# ostruct +%dir %{gem_instdir ostruct} +%license %{gem_instdir ostruct}/BSDL +%license %{gem_instdir ostruct}/COPYING +%doc %{gem_instdir ostruct}/README.md +%{gem_instdir ostruct}/Gemfile +%{gem_instdir ostruct}/Rakefile +%{gem_instdir ostruct}/bin +%{gem_libdir ostruct} +%{gem_instdir ostruct}/ostruct.gemspec +%{gem_spec ostruct} # prime %dir %{gem_instdir prime} -%{gem_instdir prime}/Gemfile -%license %{gem_instdir prime}/LICENSE.txt +%license %{gem_instdir prime}/BSDL +%license %{gem_instdir prime}/COPYING %doc %{gem_instdir prime}/README.md %{gem_instdir prime}/Rakefile -%{gem_instdir prime}/bin %{gem_libdir prime} +%{gem_instdir prime}/sig +%{gem_instdir prime}/prime.gemspec %{gem_spec prime} +# pstore +%dir %{gem_instdir pstore} +%license %{gem_instdir pstore}/BSDL +%license %{gem_instdir pstore}/COPYING +%doc %{gem_instdir pstore}/README.md +%{gem_instdir pstore}/Gemfile +%{gem_instdir pstore}/Rakefile +%{gem_instdir pstore}/bin +%{gem_libdir pstore} +%{gem_spec pstore} + +# rdbg +%{_bindir}/rdbg +%dir %{gem_extdir_mri debug} +%{gem_extdir_mri debug}/gem.build_complete +%dir %{gem_extdir_mri debug}/debug +%{gem_extdir_mri debug}/debug/debug.so +%dir %{gem_instdir debug} +%exclude %{gem_instdir debug}/.* +%doc %{gem_instdir debug}/CONTRIBUTING.md +%{gem_instdir debug}/Gemfile +%license %{gem_instdir debug}/LICENSE.txt +%doc %{gem_instdir debug}/README.md +%{gem_instdir debug}/Rakefile +%doc %{gem_instdir debug}/TODO.md +%{gem_instdir debug}/exe +%{gem_libdir debug} +%{gem_instdir debug}/misc +%{gem_spec debug} + +# readline +%dir %{gem_instdir readline} +%license %{gem_instdir readline}/BSDL +%license %{gem_instdir readline}/COPYING +%doc %{gem_instdir readline}/README.md +%{gem_libdir readline} +%{gem_spec readline} + +# reline +%dir %{gem_instdir reline} +%license %{gem_instdir reline}/BSDL +%license %{gem_instdir reline}/COPYING +%license %{gem_instdir reline}/license_of_rb-readline +%doc %{gem_instdir reline}/README.md +%{gem_libdir reline} +%{gem_spec reline} + +# repl_type_completor +%dir %{gem_instdir repl_type_completor} +%license %{gem_instdir repl_type_completor}/LICENSE.txt +%{gem_libdir repl_type_completor} +%{gem_instdir repl_type_completor}/sig +%exclude %{gem_cache repl_type_completor} +%{gem_spec repl_type_completor} +%{gem_instdir repl_type_completor}/Gemfile +%doc %{gem_instdir repl_type_completor}/README.md +%{gem_instdir repl_type_completor}/Rakefile + +# rinda +%dir %{gem_instdir rinda} +%license %{gem_instdir rinda}/LICENSE.txt +%{gem_instdir rinda}/bin +%{gem_libdir rinda} +%{gem_spec rinda} +%{gem_instdir rinda}/Gemfile +%doc %{gem_instdir rinda}/README.md +%{gem_instdir rinda}/Rakefile + +# resolv-replace +%dir %{gem_instdir resolv-replace} +%license %{gem_instdir resolv-replace}/LICENSE.txt +%{gem_instdir resolv-replace}/bin +%{gem_libdir resolv-replace} +%{gem_spec resolv-replace} +%{gem_instdir resolv-replace}/Gemfile +%doc %{gem_instdir resolv-replace}/README.md +%{gem_instdir resolv-replace}/Rakefile + +# syslog +%dir %{gem_instdir syslog} +%{gem_extdir_mri syslog} +%license %{gem_instdir syslog}/BSDL +%license %{gem_instdir syslog}/COPYING +%{gem_instdir syslog}/bin +%{gem_libdir syslog} +%exclude %{gem_cache syslog} +%{gem_spec syslog} +%{gem_instdir syslog}/Gemfile +%doc %{gem_instdir syslog}/README.md +%{gem_instdir syslog}/Rakefile + %files -n rubygem-minitest +%{_bindir}/minitest %dir %{gem_instdir minitest} %exclude %{gem_instdir minitest}/.* %{gem_instdir minitest}/Manifest.txt %{gem_instdir minitest}/design_rationale.rb +%{gem_instdir minitest}/bin %{gem_libdir minitest} %{gem_spec minitest} %doc %{gem_instdir minitest}/History.rdoc @@ -1680,31 +1883,34 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{gem_extdir_mri rbs}/gem.build_complete %{gem_extdir_mri rbs}/rbs_extension.so %dir %{gem_instdir rbs} -%exclude %{gem_instdir rbs}/.* %license %{gem_instdir rbs}/BSDL %doc %{gem_instdir rbs}/CHANGELOG.md %license %{gem_instdir rbs}/COPYING -%{gem_instdir rbs}/Gemfile* %doc %{gem_instdir rbs}/README.md %{gem_instdir rbs}/Rakefile %{gem_instdir rbs}/Steepfile +%{gem_instdir rbs}/config.yml %{gem_instdir rbs}/core %doc %{gem_instdir rbs}/docs %{gem_instdir rbs}/exe %{gem_instdir rbs}/goodcheck.yml +%{gem_instdir rbs}/include %{gem_libdir rbs} %{gem_instdir rbs}/schema %{gem_instdir rbs}/sig +%{gem_instdir rbs}/src %{gem_instdir rbs}/stdlib %{gem_spec rbs} %files -n rubygem-test-unit +%{_bindir}/test-unit %dir %{gem_instdir test-unit} %license %{gem_instdir test-unit}/BSDL %license %{gem_instdir test-unit}/COPYING %license %{gem_instdir test-unit}/PSFL %{gem_libdir test-unit} %{gem_instdir test-unit}/sample +%{gem_instdir test-unit}/bin %{gem_spec test-unit} %doc %{gem_instdir test-unit}/README.md %{gem_instdir test-unit}/Rakefile @@ -1714,6 +1920,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %dir %{gem_instdir racc} %{_bindir}/racc %{gem_extdir_mri racc} +%license %{gem_instdir racc}/BSDL %license %{gem_instdir racc}/COPYING %doc %{gem_instdir racc}/ChangeLog %lang(ja) %doc %{gem_instdir racc}/README.ja.rdoc @@ -1747,36 +1954,96 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{_bindir}/typeprof %exclude %{gem_instdir typeprof}/.* %license %{gem_instdir typeprof}/LICENSE -%{gem_instdir typeprof}/exe +%{gem_instdir typeprof}/bin +%{gem_instdir typeprof}/typeprof.conf.jsonc +%doc %{gem_instdir typeprof}/doc %{gem_libdir typeprof} -%doc %{gem_instdir typeprof}/tools -%exclude %{gem_instdir typeprof}/typeprof-lsp %{gem_spec typeprof} -%doc %{gem_instdir typeprof}/Gemfile* %doc %{gem_instdir typeprof}/README.md -%doc %{gem_instdir typeprof}/Rakefile %changelog -* Thu Apr 10 2025 Vít Ondruch - 3.3.8-19 -- Upgrade to Ruby 3.3.8. -- CVE-2025-25186: Fix Net::IMAP vulnerable to possible DoS by memory exhaustion - Resolves: rhbz#2345556 -- CVE-2025-27219: Denial of Service in CGI::Cookie.parse - Resolves: rhbz#2357516 -- CVE-2025-27221: userinfo leakage in URI#join, URI#merge and URI#+ +* Tue Jan 13 2026 Vít Ondruch - 4.0.1-31 +- Upgrade to Ruby 4.0.1. + Resolves: rhbz#2428861 -* Tue Jan 28 2025 Jun Aruga - 3.3.7-17 -- Upgrade to Ruby 3.3.7. +* Fri Jan 02 2026 Jarek Prokop - 4.0.0-30 +- Upgrade to Ruby 4.0.0. + Resolves: rhbz#2425358 + +* Wed Dec 17 2025 Vít Ondruch - 3.4.8-29 +- Update to Ruby 3.4.8. + Resolves: rhbz#2422963 + Resolves: rhbz#2412227 + +* Tue Oct 21 2025 Jun Aruga - 3.4.7-28 +- Upgrade to Ruby 3.4.7. + Resolves: rhbz#2402422 +- Fix URI Credential Leakage Bypass previous fixes. + Resolves: CVE-2025-61594 +- Fix REXML denial of service. + Resolves: CVE-2025-58767 + +* Mon Aug 18 2025 Jarek Prokop - 3.4.5-27 +- Upgrade to Ruby 3.4.5. + Resolves: rhbz#2380246 + +* Fri Jul 25 2025 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jun 11 2025 Jarek Prokop - 3.4.4-25 +- Upgrade to Ruby 3.4.4. + Resolves: rhbz#2359563 + +* Tue Apr 08 2025 Jun Aruga - 3.4.2-24 +- Fix the tests using SHA-1 Probabilistic Signature Scheme (PSS) parameters. + Resolves: rhbz#2358256 + +* Wed Feb 19 2025 Vít Ondruch - 3.4.2-23 +- Upgrade to Ruby 3.4.2. + Resolves: rhbz#2345875 + +* Sat Feb 01 2025 Björn Esser - 3.4.1-23 +- Add explicit BR: libxcrypt-devel + +* Fri Jan 24 2025 Jarek Prokop - 3.4.1-22 +- Stop including C++ header, it is deprecated since C++17. + Resolves: rhbz#2336567 + +* Sat Jan 18 2025 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jan 08 2025 Vít Ondruch - 3.4.1-20 +- Re-enable FIPS test cases. + +* Thu Jan 02 2025 Vít Ondruch - 3.4.1-19 +- Upgrade to Ruby 3.4.1. + Resolves: rhbz#2334047 + +* Mon Dec 16 2024 Jun Aruga - 3.3.6-18 - Fix Ruby OpenSSL to respect crypto-policies TLS minimal version. +* Wed Nov 20 2024 David Abdurachmanov - 3.3.6-17 +- Add riscv64 information for checksec + * Mon Nov 11 2024 Vít Ondruch - 3.3.6-16 - Upgrade to Ruby 3.3.6. +* Fri Sep 13 2024 Vít Ondruch - 3.3.5-15 +- Fix Bundler `--local` option + Resolves: rhbz#2311898 + * Tue Sep 03 2024 Vít Ondruch - 3.3.5-14 - Upgrade to Ruby 3.3.5. Resolves: rhbz#2309364 +* Mon Jul 29 2024 Jun Aruga - 3.3.4-13 +- Add systemtap-sdt-devel to build Ruby with systemtap sdt header files. + Co-authored-by: Lumír Balhar + +* Fri Jul 19 2024 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Wed Jul 10 2024 Vít Ondruch - 3.3.4-11 - Upgrade to Ruby 3.3.4. Resolves: rhbz#2292052 @@ -1789,6 +2056,8 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ Resolves: rhbz#2284020 * Tue May 28 2024 Vít Ondruch - 3.3.1-8 +- Adjust the test to updated `checksec` output. + Resolves: rhbz#2282953 - Make sure fortification flags are applied. * Tue Apr 23 2024 Vít Ondruch - 3.3.1-7 @@ -1799,6 +2068,9 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - Add `bundled` provide for NKF. - License review and fixes of SPDX syntax. +* Wed Mar 06 2024 Vít Ondruch - 3.3.0-5 +- Fix FTBFS caused by OpenSSL 3.2.1 update. + * Fri Jan 26 2024 Jarek Prokop - 3.3.0-4 - Do not set AI_ADDRCONFIG by default when calling getaddrinfo(3). diff --git a/sources b/sources index a0dfe11..f1f97eb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ruby-3.3.8.tar.xz) = 71c2f3ac9955e088fa885fd2ff695e67362a770a5d33e5160081eda3dd298ca2c692e299b03d757caecfbc94043fedc4ad093de84c505585d480cb36bbf978b9 +SHA512 (ruby-4.0.1.tar.xz) = b67d9d1f97ba30200d103f8454e39dc2d0450819d51d91eb5451d44b0bafc56d2fa48bb1be6c5081babe5828f679984bad02b9bcee7441f6bd34c0a95b8f200b