diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index d2399ca..3523d77 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ /*/ -/ruby-*.tar.xz -/rexml-*.gem +/ruby-2.*.tar.bz2 +/ruby-2.*.tar.xz /*.rpm - -!/plans/ diff --git a/abrt_prelude.rb b/abrt_prelude.rb new file mode 100644 index 0000000..587c6a6 --- /dev/null +++ b/abrt_prelude.rb @@ -0,0 +1,8 @@ +if defined?(Gem) + require 'rubygems.rb' + + begin + require 'abrt' + rescue LoadError + end +end diff --git a/macros.rubygems b/macros.rubygems index 7146c77..532ea6c 100644 --- a/macros.rubygems +++ b/macros.rubygems @@ -2,55 +2,13 @@ %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 version as provided by %gem_version macro. -# -%gem_name_version() %{?1}%{!?1:%{gem_name}}-%{gem_version %{?1}} - # Common gem locations and files. -# -# These macros leverages %gem_name_version macro and accepts custom gem_name. -# -# -d Use default gem install location. -# -%gem_instdir() %{gem_dir}/gems/%{gem_name_version %{?1}} -%gem_extdir_mri() %{gem_archdir}/%{name}/%{gem_name_version %{?1}} -%gem_libdir() %{gem_instdir %{?1}}/lib -%gem_cache() %{gem_dir}/cache/%{gem_name_version %{?1}}.gem -%gem_spec(d) %{gem_dir}/specifications%{?-d:/default}/%{gem_name_version %{?1}}.gemspec -%gem_docdir() %{gem_dir}/doc/%{gem_name_version %{?1}} -%gem_plugin() %{gem_dir}/plugins/%{?1}%{!?1:%{gem_name}}_plugin.rb +%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease} +%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version}%{?prerelease} +%gem_libdir %{gem_instdir}/lib +%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem +%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec +%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease} # %gem_install - Install gem into appropriate directory. @@ -63,7 +21,7 @@ %gem_install(d:n:) \ mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \ \ -CONFIGURE_ARGS="--with-cflags='%{optflags}' --with-cxxflags='%{optflags}' --with-ldflags='%{build_ldflags}' $CONFIGURE_ARGS" \\\ +CONFIGURE_ARGS="--with-cflags='%{optflags}' --with-cxxflags='%{optflags}' $CONFIGURE_ARGS" \\\ gem install \\\ -V \\\ --local \\\ @@ -74,6 +32,16 @@ gem install \\\ %{nil} +# For rubygems packages we want to filter out any provides caused by private +# libs in %%{gem_archdir}. +# +# Note that this must be invoked in the spec file, preferably as +# "%{?rubygems_default_filter}", before any %description block. +%rubygems_default_filter %{expand: \ +%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \ +} + + # The 'read' command in %%gemspec_* macros is not essential, but it is usefull # to make the sript appear in build log. @@ -92,7 +60,7 @@ gem install \\\ # %gemspec_add_dep(g:s:d) \ read -d '' gemspec_add_dep_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \ + gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \ \ name = '%{-g*}' \ requirements = %{*}%{!?1:nil} \ @@ -129,7 +97,7 @@ unset -v gemspec_add_dep_script \ # %gemspec_remove_dep(g:s:d) \ read -d '' gemspec_remove_dep_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \ + gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \ \ name = '%{-g*}' \ requirements = %{*}%{!?1:nil} \ @@ -176,7 +144,7 @@ unset -v gemspec_remove_dep_script \ # %gemspec_add_file(s:tr) \ read -d '' gemspec_add_file_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \ + gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \ \ abort("gemspec_add_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \ \ @@ -209,7 +177,7 @@ unset -v gemspec_add_file_script \ # %gemspec_remove_file(s:tr) \ read -d '' gemspec_remove_file_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \ + gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \ \ abort("gemspec_remove_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \ \ diff --git a/operating_system.rb b/operating_system.rb index fd56386..d95b303 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -87,51 +87,41 @@ module Gem # Remove methods we are going to override. This avoids "method redefined;" # warnings otherwise issued by Ruby. + remove_method :operating_system_defaults if method_defined? :operating_system_defaults remove_method :default_dir if method_defined? :default_dir - remove_method :default_specifications_dir if method_defined? :default_specifications_dir remove_method :default_path if method_defined? :default_path - remove_method :default_bindir if method_defined? :default_bindir remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for + ## + # Regular user installs into user directory, root manages /usr/local. + + def operating_system_defaults + unless opt_build_root? + options = if Process.uid == 0 + "--install-dir=#{Gem.default_dirs[:local][:gem_dir]} --bindir #{Gem.default_dirs[:local][:bin_dir]}" + else + "--user-install --bindir #{File.join [Dir.home, 'bin']}" + end + + {"gem" => options} + else + {} + end + end + ## # RubyGems default overrides. def default_dir - if opt_build_root? - Gem.default_dirs[:system][:gem_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:gem_dir] - else - Gem.user_dir - end + Gem.default_dirs[:system][:gem_dir] end - ## - # Path to specification files of default gems. - - def default_specifications_dir - @default_specifications_dir ||= File.join(Gem.default_dirs[:system][:gem_dir], "specifications", "default") - end - - ## - # Default gem load path - def default_path path = default_dirs.collect {|location, paths| paths[:gem_dir]} path.unshift Gem.user_dir if File.exist? Gem.user_home path end - def default_bindir - if opt_build_root? - Gem.default_dirs[:system][:bin_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:bin_dir] - else - File.join [Dir.home, 'bin'] - end - end - def default_ext_dir_for base_dir dir = if rpmbuild? build_dir = base_dir.chomp Gem.default_dirs[:system][:gem_dir] diff --git a/plans/all.fmf b/plans/all.fmf deleted file mode 100644 index 7b06cfb..0000000 --- a/plans/all.fmf +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 192863f..0000000 --- a/rdoc-pr1531-fix-mutilple-document-installation.patch +++ /dev/null @@ -1,28 +0,0 @@ -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/rpm_test_helper.rb b/rpm_test_helper.rb deleted file mode 100644 index 671ca55..0000000 --- a/rpm_test_helper.rb +++ /dev/null @@ -1,166 +0,0 @@ -require 'tmpdir' -require 'tempfile' -require 'fileutils' -# Available in Ruby upstream sources under tool/lib/envutil.rb -# Required for finding and setting up the built ruby binary. -require 'envutil' - -module RPMTestHelper - def setup - @tmpdir = Dir.mktmpdir - @tempfiles = [] - end - - def teardown - @tempfiles.each do |file| - file.close - file.unlink - end - - FileUtils.rmtree(@tmpdir) - end - - GENERATOR_SCRIPT = ENV['GENERATOR_SCRIPT'].clone.freeze - if GENERATOR_SCRIPT.nil? || GENERATOR_SCRIPT == '' - raise "GENERATOR_SCRIPT is not specified." \ - "Specify the ENV variable with absolute path to the generator." - end - - Dependency = Struct.new('Dependency', :name, :requirements) do - def to_rpm_str - "rubygem(#{self.name})" - end - end - - def make_gemspec(gem_info) - file = Tempfile.new('req_gemspec', @tmpdir) - # Fake gemspec with enough to pass most checks - # Rubygems uses to validate the format. - gemspec_contents = <<~EOF - # -*- encoding: utf-8 -*- - # stub: #{gem_info.name} #{gem_info.version} ruby lib - - Gem::Specification.new do |s| - s.name = "#{gem_info.name}".freeze - s.version = "#{gem_info.version}" - - s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib".freeze] - s.authors = ["John Doe".freeze] - s.bindir = "bin".freeze - s.date = "2023-12-15" - s.description = "Fake gemspec helper for testing Rubygem Generators".freeze - s.email = ["example@example.com".freeze] - s.files = ["LICENSE.txt".freeze, "lib/#{gem_info.name}.rb".freeze, "#{gem_info.name}.gemspec".freeze] - s.homepage = "https://pkgs.fedoraproject.org/rpms/ruby".freeze - s.licenses = ["MIT".freeze] - s.required_ruby_version = Gem::Requirement.new(">= 2.5.0".freeze) - s.rubygems_version = "3.3.5".freeze - s.summary = "Fake gemspec for testing Rubygem Generators".freeze - - if s.respond_to? :specification_version then - s.specification_version = 4 - end - - if s.respond_to? :add_runtime_dependency then - #{gem_info.gemspec_runtime_dep_str} - else - #{gem_info.gemspec_dep_str} - end - end - EOF - - file.write gemspec_contents - file.rewind - @tempfiles << file - file - end - - # Caller is expected to close subprocess stdin via #close_write - # in order to let subprocess proceed if the process is reading - # from STDIN in a loop. - def rb_subprocess(*args) - args = [GENERATOR_SCRIPT] if args.empty? - ruby = EnvUtil.rubybin - f = IO.popen([ruby] + args, 'r+') #, external_encoding: external_encoding) - yield(f) - ensure - f.close unless !f || f.closed? - end - - def run_generator_single_file(gem_info) - lines = [] - gemspec_f = make_gemspec(gem_info) - - rb_subprocess do |io| - io.write gemspec_f.path - io.close_write - lines = io.readlines - end - - lines - end - - def helper_rubygems_dependency - "ruby(rubygems)" - end - - class GemInfo - attr_accessor :name, :version, :dependencies - - def initialize(name: 'foo', version: '1.2.3', dependencies: []) - @name = name - @version = version - @dependencies = dependencies - end - - def dependencies=(other) - raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Expected array of `Dependency' elements" \ - unless other.is_a?(Array) && other.all? { |elem| elem.respond_to?(:name) && elem.respond_to?(:requirements) } - - @dependencies = other - end - - def to_rpm_str - "rubygem(#{self.name})" - end - - def gemspec_dep_str - return '' if self.dependencies.nil? || self.dependencies.empty? - @dependencies.inject("") do |memo, dep| - memo += if dep.requirements && !dep.requirements.empty? - %Q|s.add_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})| - else - %Q|s.add_dependency(%q<#{dep.name}>.freeze)| - end - - memo += "\n" - end - end - - def gemspec_runtime_dep_str - return '' if self.dependencies.nil? || self.dependencies.empty? - - @dependencies.inject("") do |memo, dep| - memo += if dep.requirements && !dep.requirements.empty? - %Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})| - else - %Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze)| - end - - memo += "\n" - end - end - - private - - def handle_dep_requirements(reqs) - raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must be an array." \ - unless reqs.is_a? Array - raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must not be empty for this method." \ - if reqs.empty? - - '[ "' + reqs.join('", "') + '" ]' - end - end -end diff --git a/ruby-1.9.3-mkmf-verbose.patch b/ruby-1.9.3-mkmf-verbose.patch new file mode 100644 index 0000000..b523657 --- /dev/null +++ b/ruby-1.9.3-mkmf-verbose.patch @@ -0,0 +1,25 @@ +From 28cc0749d6729aa2444661ee7b411e183fe220b0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Mon, 19 Nov 2012 15:14:51 +0100 +Subject: [PATCH] Verbose mkmf. + +--- + lib/mkmf.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/mkmf.rb b/lib/mkmf.rb +index 682eb46..e6b1445 100644 +--- a/lib/mkmf.rb ++++ b/lib/mkmf.rb +@@ -1900,7 +1900,7 @@ def configuration(srcdir) + SHELL = /bin/sh + + # V=0 quiet, V=1 verbose. other values don't work. +-V = 0 ++V = 1 + Q1 = $(V:1=) + Q = $(Q1:0=@) + ECHO1 = $(V:1=@ #{CONFIG['NULLCMD']}) +-- +1.8.3.1 + diff --git a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch new file mode 100644 index 0000000..68e4abc --- /dev/null +++ b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch @@ -0,0 +1,58 @@ +From 996012f6abe0ce4d68a2de9f249935c6d5b467bc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 4 Oct 2013 22:13:11 +0200 +Subject: [PATCH] Allow to specify addition preludes by configuration option. + +--- + Makefile.in | 2 ++ + common.mk | 2 +- + configure.ac | 7 +++++++ + 3 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 7e8ed82..7916993 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -119,6 +119,8 @@ XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@ + XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@ + BOOTSTRAPRUBY = @BOOTSTRAPRUBY@ + ++OPTIONAL_PRELUDES = @OPTIONAL_PRELUDES@ ++ + #### End of system configuration section. #### + + MAJOR= @MAJOR@ +diff --git a/common.mk b/common.mk +index 5cfbc3d..3f0a82e 100644 +--- a/common.mk ++++ b/common.mk +@@ -147,7 +147,7 @@ ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS) + GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT) + + DEFAULT_PRELUDES = $(GEM_PRELUDE) +-PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(DEFAULT_PRELUDES) ++PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(DEFAULT_PRELUDES) $(OPTIONAL_PRELUDES) + GEM_PRELUDE = $(srcdir)/gem_prelude.rb + PRELUDES = {$(srcdir)}prelude.c {$(srcdir)}miniprelude.c + GOLFPRELUDES = {$(srcdir)}golf_prelude.c +diff --git a/configure.ac b/configure.ac +index 028ef7ca3e..cdeff87871 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4397,6 +4397,13 @@ AC_SUBST(rubyarchhdrdir)dnl + AC_SUBST(sitearchhdrdir)dnl + AC_SUBST(vendorarchhdrdir)dnl + ++AC_ARG_WITH(prelude, ++ AS_HELP_STRING([--with-prelude=FILE-LIST], [specify additional preludes separated by space]), ++ [prelude=$withval]) ++if test "$prelude" != ""; then ++ AC_SUBST(OPTIONAL_PRELUDES, $prelude) ++fi ++ + AC_ARG_WITH(mantype, + AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]), + [ +-- +1.8.3.1 + diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index 8551d79..555b6b5 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 e1293f665128b0d9c5bfa0b5beeab4afebf07e6a Mon Sep 17 00:00:00 2001 +From 07c666ba5c3360dd6f43605a8ac7c85c99c1721f 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 a64358fada..b3bdfad1eb 100644 +index 11fc237552..b77e88fc37 100644 --- a/configure.ac +++ b/configure.ac -@@ -3556,6 +3556,11 @@ AS_IF([test ${multiarch+set}], [ +@@ -3642,6 +3642,11 @@ AS_IF([test ${multiarch+set}], [ ]) archlibdir='${libdir}/${arch}' @@ -23,3 +23,6 @@ index a64358fada..b3bdfad1eb 100644 sitearchlibdir='${libdir}/${sitearch}' archincludedir='${includedir}/${arch}' sitearchincludedir='${includedir}/${sitearch}' +-- +1.8.3.1 + 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 045d6ae..20539fd 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 6062f4976c5b51f8b952b9f6745175be7b1c5ff9 Mon Sep 17 00:00:00 2001 +From e24d97c938c481450ed80ec83e5399595946c1ae 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 2bc5153141..a64358fada 100644 +index 999e2d6d5d..11fc237552 100644 --- a/configure.ac +++ b/configure.ac -@@ -4472,7 +4472,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -4252,7 +4252,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 2bc5153141..a64358fada 100644 rubylibdir='${rubylibprefix}'${ruby_version_dir} diff --git a/loadpath.c b/loadpath.c -index b8969e6998..bbfd4daa78 100644 +index 9160031..0d4d953 100644 --- a/loadpath.c +++ b/loadpath.c @@ -65,21 +65,33 @@ const char ruby_initial_load_paths[] = @@ -63,10 +63,10 @@ index b8969e6998..bbfd4daa78 100644 RUBY_LIB "\0" diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb -index db74115730..2b01796abf 100755 +index 07076d4..35e6c3c 100755 --- a/tool/mkconfig.rb +++ b/tool/mkconfig.rb -@@ -114,7 +114,7 @@ +@@ -111,7 +111,7 @@ val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump case name when /^prefix$/ @@ -75,3 +75,6 @@ index db74115730..2b01796abf 100755 when /^ARCH_FLAG$/ val = "arch_flag || #{val}" if universal when /^UNIVERSAL_ARCHNAMES$/ +-- +1.9.0 + diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 6ecfb2e..5d45fac 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -1,4 +1,4 @@ -From 9e70f6e4b8771965a30ecfb6d1c6015df350ca55 Mon Sep 17 00:00:00 2001 +From 2089cab72b38d6d5e7ba2b596e41014209acad30 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 b3bdfad1eb..411322a27f 100644 +index b77e88fc37..6bba453e3c 100644 --- a/configure.ac +++ b/configure.ac -@@ -4536,6 +4536,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -4316,6 +4316,8 @@ AC_SUBST(vendorarchdir)dnl AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl @@ -20,3 +20,6 @@ index b3bdfad1eb..411322a27f 100644 AS_IF([test "${universal_binary-no}" = yes ], [ arch="universal-${target_os}" AS_IF([test "${rb_cv_architecture_available}" = yes], [ +-- +1.8.3.1 + diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index 969fefa..5ebe1ce 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -1,21 +1,21 @@ -From c7952996ac9738a14bea0a1a971fea13460a6c94 Mon Sep 17 00:00:00 2001 +From 94da59aafacc6a9efe829529eb51385588d6f149 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 Ruby tree. --- - configure.ac | 5 +++++ - loadpath.c | 4 ++++ - template/verconf.h.tmpl | 3 +++ - tool/rbinstall.rb | 10 ++++++++++ - 4 files changed, 22 insertions(+) + configure.ac | 5 +++++ + loadpath.c | 4 ++++ + template/verconf.h.tmpl | 3 +++ + tool/rbinstall.rb | 7 +++++++ + 4 files changed, 19 insertions(+) diff --git a/configure.ac b/configure.ac -index 411322a27f..b5f842a512 100644 +index 6bba453e3c..028ef7ca3e 100644 --- a/configure.ac +++ b/configure.ac -@@ -4508,6 +4508,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -4288,6 +4288,10 @@ AC_ARG_WITH(vendorarchdir, [vendorarchdir=$withval], [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) @@ -26,7 +26,7 @@ index 411322a27f..b5f842a512 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX='' -@@ -4532,6 +4536,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4312,6 +4316,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl @@ -35,7 +35,7 @@ index 411322a27f..b5f842a512 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 bbfd4daa78..69677a9297 100644 +index 623dc9d..74c5d9e 100644 --- a/loadpath.c +++ b/loadpath.c @@ -94,6 +94,10 @@ const char ruby_initial_load_paths[] = @@ -50,7 +50,7 @@ index bbfd4daa78..69677a9297 100644 #ifdef RUBY_THINARCH RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0" diff --git a/template/verconf.h.tmpl b/template/verconf.h.tmpl -index 9ba2bd6de5..4ec4ce9353 100644 +index 79c003e..34f2382 100644 --- a/template/verconf.h.tmpl +++ b/template/verconf.h.tmpl @@ -36,6 +36,9 @@ @@ -64,31 +64,31 @@ index 9ba2bd6de5..4ec4ce9353 100644 % R = {} % R["ruby_version"] = '"RUBY_LIB_VERSION"' diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb -index a9e6365b27..7117e65e82 100755 +index b47b6e1..0b99408 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -393,6 +393,7 @@ def CONFIG.[](name, mandatory = false) +@@ -335,6 +335,7 @@ def CONFIG.[](name, mandatory = false) vendorlibdir = CONFIG["vendorlibdir"] vendorarchlibdir = CONFIG["vendorarchdir"] end +rubygemsdir = CONFIG["rubygemsdir"] mandir = CONFIG["mandir", true] docdir = CONFIG["docdir", true] - enable_shared = CONFIG["ENABLE_SHARED"] == 'yes' -@@ -1082,7 +1083,16 @@ def (bins = []).add(name) + configure_args = Shellwords.shellwords(CONFIG["configure_args"]) +@@ -541,7 +542,13 @@ def install(src, cmd) install?(:local, :comm, :lib) do prepare "library scripts", rubylibdir noinst = %w[*.txt *.rdoc *.gemspec] -+ # Bundler carries "rubygems.rb" file, so it must be specialcased :/ -+ noinst += %w[rubygems.rb rubygems/ bundler.rb bundler/] if rubygemsdir ++ noinst += %w[rubygems.rb rubygems/ datadir.rb] if rubygemsdir install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode) + if rubygemsdir -+ noinst = %w[*.txt *.rdoc *.gemspec] -+ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :no_install => noinst, :mode => $data_mode) ++ noinst = %w[obsolete.rb] ++ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode) + install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode) -+ install_recursive(File.join(srcdir, "lib", "bundler"), File.join(rubylibdir, "bundler"), :no_install => noinst, :mode => $data_mode) -+ install(File.join(srcdir, "lib", "bundler.rb"), rubylibdir, :mode => $data_mode) + end end install?(:local, :comm, :hdr, :'comm-hdr') do +-- +1.8.3.1 + diff --git a/ruby-2.2.3-Generate-preludes-using-miniruby.patch b/ruby-2.2.3-Generate-preludes-using-miniruby.patch new file mode 100644 index 0000000..ca66d28 --- /dev/null +++ b/ruby-2.2.3-Generate-preludes-using-miniruby.patch @@ -0,0 +1,28 @@ +From 07eb5f5e775dec01a92a8b13910eaced9e8ee0cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 2 Dec 2014 10:56:58 +0100 +Subject: [PATCH] Generate preludes using miniruby. + +--- + common.mk | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/common.mk b/common.mk +index 168dc52..20c218a 100644 +--- a/common.mk ++++ b/common.mk +@@ -962,9 +962,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) + $(srcdir)/template/prelude.c.tmpl + + $(PRELUDE_C): $(COMPILE_PRELUDE) \ +- $(PRELUDE_SCRIPTS) ++ $(PRELUDE_SCRIPTS) $(PREP) + $(ECHO) generating $@ +- $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \ ++ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \ + $(srcdir)/template/prelude.c.tmpl $(PRELUDE_SCRIPTS) + + {$(VPATH)}golf_prelude.c: $(COMPILE_PRELUDE) {$(srcdir)}golf_prelude.rb +-- +2.6.3 + 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 deleted file mode 100644 index 82f5963..0000000 --- a/ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch +++ /dev/null @@ -1,22 +0,0 @@ -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 2eb5d00..7cc747f 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -1,4 +1,4 @@ -From 5406ea4b4b13db747e5c1f8341bb257b4da04435 Mon Sep 17 00:00:00 2001 +From 4fc1be3af3f58621bb751c9e63c208b15c0e8d16 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. @@ -12,15 +12,15 @@ ruby_version_dir_name now specifies custom version string for versioned directories, e.g. instead of default X.Y.Z, you can specify whatever string. --- - configure.ac | 66 ++++++++++++++++++++++++--------------------- + configure.ac | 64 ++++++++++++++++++++++++++++------------------------- template/ruby.pc.in | 1 + - 2 files changed, 36 insertions(+), 31 deletions(-) + 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/configure.ac b/configure.ac -index 2bbce78fd0..9d8662369c 100644 +index 8ea969412f..a00f2b6776 100644 --- a/configure.ac +++ b/configure.ac -@@ -4422,9 +4422,6 @@ AS_CASE(["$target_os"], +@@ -4203,9 +4203,6 @@ AS_CASE(["$target_os"], rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) @@ -30,7 +30,7 @@ index 2bbce78fd0..9d8662369c 100644 rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} AC_ARG_WITH(rubyarchprefix, AS_HELP_STRING([--with-rubyarchprefix=DIR], -@@ -4447,57 +4444,63 @@ AC_ARG_WITH(ridir, +@@ -4228,56 +4225,62 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -46,7 +46,6 @@ index 2bbce78fd0..9d8662369c 100644 -AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [ - { - echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" -- echo '@%:@include "confdefs.h"' - echo '#define STRINGIZE(x) x' - test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' - echo '#include "version.h"' @@ -62,7 +61,6 @@ index 2bbce78fd0..9d8662369c 100644 +RUBY_LIB_VERSION_STYLE='3 /* full */' +{ +echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" -+echo '@%:@include "confdefs.h"' +echo '#define STRINGIZE(x) x' +test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' +echo '#include "version.h"' @@ -122,7 +120,7 @@ index 2bbce78fd0..9d8662369c 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4514,6 +4517,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4294,6 +4297,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -131,108 +129,146 @@ index 2bbce78fd0..9d8662369c 100644 AC_SUBST(rubyarchdir)dnl AC_SUBST(sitedir)dnl diff --git a/template/ruby.pc.in b/template/ruby.pc.in -index 6901ec2320..9b7b787208 100644 +index 8a2c066..c81b211 100644 --- a/template/ruby.pc.in +++ b/template/ruby.pc.in -@@ -2,6 +2,7 @@ MAJOR=@MAJOR@ +@@ -9,6 +9,7 @@ MAJOR=@MAJOR@ MINOR=@MINOR@ TEENY=@TEENY@ ruby_version=@ruby_version@ +ruby_version_dir_name=@ruby_version_dir_name@ RUBY_API_VERSION=@RUBY_API_VERSION@ RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@ - arch=@arch@ + RUBY_BASE_NAME=@RUBY_BASE_NAME@ +-- +2.1.0 -From baff562149499973123d2187620201be641c6538 Mon Sep 17 00:00:00 2001 + +From 518850aba6eee76de7715aae8d37330e34b01983 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. --- - tool/rbinstall.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + lib/rdoc/ri/paths.rb | 2 +- + tool/rbinstall.rb | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) +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 = if RbConfig::CONFIG.key? 'ridir' then + File.join RbConfig::CONFIG['ridir'], version diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb -index 874c3ef1d9..a9e6365b27 100755 +index d4c110e..d39c9a6 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -1053,7 +1053,7 @@ def (bins = []).add(name) +@@ -421,7 +421,7 @@ def CONFIG.[](name, mandatory = false) install?(:doc, :rdoc) do if $rdocdir - ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system") + ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version_dir_name'] || CONFIG['ruby_version'], "system") prepare "rdoc", ridatadir - install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode) + install_recursive($rdocdir, ridatadir, :mode => $data_mode) end +-- +2.1.0 -From 7cf872a9a34f38d71cd2ca04ac114b4ea85cc56c Mon Sep 17 00:00:00 2001 + +From f8d136f9a46d1fe87eba622ab9665935d05e981b 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. --- - lib/rubygems/defaults.rb | 7 ++++--- - test/rubygems/test_gem.rb | 5 +++-- - 2 files changed, 7 insertions(+), 5 deletions(-) + lib/rubygems/defaults.rb | 11 ++++++----- + test/rubygems/test_gem.rb | 5 +++-- + 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb -index 90f09fc191..f6b8a03b95 100644 +index 55ca080..75eea2b 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb -@@ -35,7 +35,7 @@ def self.default_spec_cache_dir - # specified in the environment +@@ -32,20 +32,20 @@ def self.default_dir + [ + File.dirname(RbConfig::CONFIG['sitedir']), + 'Gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + elsif RbConfig::CONFIG['rubylibprefix'] then + [ + RbConfig::CONFIG['rubylibprefix'], + 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + else + [ + RbConfig::CONFIG['libdir'], + ruby_engine, + 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + end - def self.default_dir -- @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"]) -+ @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]) - end +@@ -75,7 +75,8 @@ def self.default_rubygems_dirs - ## -@@ -104,7 +104,8 @@ def self.user_dir - gem_dir = File.join(Gem.user_home, ".gem") - gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir) - parts = [gem_dir, ruby_engine] -- parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty? -+ ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] + def self.user_dir + parts = [Gem.user_home, '.gem', ruby_engine] +- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? ++ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + parts << ruby_version_dir_name unless ruby_version_dir_name.empty? File.join parts end -@@ -265,7 +266,7 @@ def self.vendor_dir # :nodoc: - return nil unless RbConfig::CONFIG.key? "vendordir" +@@ -172,7 +173,7 @@ def self.vendor_dir # :nodoc: + return nil unless RbConfig::CONFIG.key? 'vendordir' - File.join RbConfig::CONFIG["vendordir"], "gems", -- RbConfig::CONFIG["ruby_version"] -+ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] + File.join RbConfig::CONFIG['vendordir'], 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] end ## diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb -index 74c8953904..1f3bd91d51 100644 +index 0428bea..b6e090e 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1339,7 +1339,8 @@ def test_self_use_paths +@@ -1191,7 +1191,8 @@ def test_self_use_paths def test_self_user_dir - parts = [@userhome, ".gem", Gem.ruby_engine] -- parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty? -+ ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] + parts = [@userhome, '.gem', Gem.ruby_engine] +- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? ++ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + parts << ruby_version_dir_name unless ruby_version_dir_name.empty? - FileUtils.mkdir_p File.join(parts) + assert_equal File.join(parts), Gem.user_dir + end +@@ -1318,7 +1319,7 @@ def test_self_user_home_user_drive_and_path + def test_self_vendor_dir + expected = + File.join RbConfig::CONFIG['vendordir'], 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] -@@ -1415,7 +1416,7 @@ def test_self_vendor_dir - vendordir(File.join(@tempdir, "vendor")) do - expected = - File.join RbConfig::CONFIG["vendordir"], "gems", -- RbConfig::CONFIG["ruby_version"] -+ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] - - assert_equal expected, Gem.vendor_dir - end + assert_equal expected, Gem.vendor_dir + end +-- +2.1.0 -From 17cb98b7b78f8bfc511feffbe061747f676055b1 Mon Sep 17 00:00:00 2001 + +From 88c38a030c22dbf9422ece847bdfbf87d6659313 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 @@ -243,15 +279,18 @@ 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 9d8662369c..2bc5153141 100644 +index a00f2b6776..999e2d6d5d 100644 --- a/configure.ac +++ b/configure.ac -@@ -151,7 +151,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` +@@ -164,7 +164,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"` AC_SUBST(RUBY_BASE_NAME) AC_SUBST(RUBYW_BASE_NAME) -AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}') +AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version_dir_name}') - dnl checks for alternative programs - AC_CANONICAL_BUILD + AC_CANONICAL_TARGET + test x"$target_alias" = x && +-- +2.1.0 + diff --git a/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch new file mode 100644 index 0000000..2dc17e3 --- /dev/null +++ b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch @@ -0,0 +1,116 @@ +From 346e147ba6480839b87046e9a9efab0bf6ed3660 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Wed, 10 Aug 2016 17:35:48 +0200 +Subject: [PATCH] Rely on ldd to detect glibc. + +This is just workaround, since we know we are quite sure this will be successful +on Red Hat platforms. + +This workaround rhbz#1361037 +--- + test/fiddle/helper.rb | 92 --------------------------------------------------- + 1 file changed, 92 deletions(-) + +diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb +index 1da3d93..65148a1 100644 +--- a/test/fiddle/helper.rb ++++ b/test/fiddle/helper.rb +@@ -6,95 +6,6 @@ + + libc_so = libm_so = nil + +-case RUBY_PLATFORM +-when /cygwin/ +- libc_so = "cygwin1.dll" +- libm_so = "cygwin1.dll" +-when /linux/ +- libdir = '/lib' +- case [0].pack('L!').size +- when 4 +- # 32-bit ruby +- libdir = '/lib32' if File.directory? '/lib32' +- when 8 +- # 64-bit ruby +- libdir = '/lib64' if File.directory? '/lib64' +- end +- libc_so = File.join(libdir, "libc.so.6") +- libm_so = File.join(libdir, "libm.so.6") +-when /mingw/, /mswin/ +- require "rbconfig" +- crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase' +- libc_so = libm_so = "#{crtname}.dll" +-when /darwin/ +- libc_so = "/usr/lib/libc.dylib" +- libm_so = "/usr/lib/libm.dylib" +-when /kfreebsd/ +- libc_so = "/lib/libc.so.0.1" +- libm_so = "/lib/libm.so.1" +-when /gnu/ #GNU/Hurd +- libc_so = "/lib/libc.so.0.3" +- libm_so = "/lib/libm.so.6" +-when /mirbsd/ +- libc_so = "/usr/lib/libc.so.41.10" +- libm_so = "/usr/lib/libm.so.7.0" +-when /freebsd/ +- libc_so = "/lib/libc.so.7" +- libm_so = "/lib/libm.so.5" +-when /bsd|dragonfly/ +- libc_so = "/usr/lib/libc.so" +- libm_so = "/usr/lib/libm.so" +-when /solaris/ +- libdir = '/lib' +- case [0].pack('L!').size +- when 4 +- # 32-bit ruby +- libdir = '/lib' if File.directory? '/lib' +- when 8 +- # 64-bit ruby +- libdir = '/lib/64' if File.directory? '/lib/64' +- end +- libc_so = File.join(libdir, "libc.so") +- libm_so = File.join(libdir, "libm.so") +-when /aix/ +- pwd=Dir.pwd +- libc_so = libm_so = "#{pwd}/libaixdltest.so" +- unless File.exist? libc_so +- cobjs=%w!strcpy.o! +- mobjs=%w!floats.o sin.o! +- funcs=%w!sin sinf strcpy strncpy! +- expfile='dltest.exp' +- require 'tmpdir' +- Dir.mktmpdir do |dir| +- begin +- Dir.chdir dir +- %x!/usr/bin/ar x /usr/lib/libc.a #{cobjs.join(' ')}! +- %x!/usr/bin/ar x /usr/lib/libm.a #{mobjs.join(' ')}! +- %x!echo "#{funcs.join("\n")}\n" > #{expfile}! +- require 'rbconfig' +- if RbConfig::CONFIG["GCC"] = 'yes' +- lflag='-Wl,' +- else +- lflag='' +- end +- flags="#{lflag}-bE:#{expfile} #{lflag}-bnoentry -lm" +- %x!#{RbConfig::CONFIG["LDSHARED"]} -o #{libc_so} #{(cobjs+mobjs).join(' ')} #{flags}! +- ensure +- Dir.chdir pwd +- end +- end +- end +-else +- libc_so = ARGV[0] if ARGV[0] && ARGV[0][0] == ?/ +- libm_so = ARGV[1] if ARGV[1] && ARGV[1][0] == ?/ +- if( !(libc_so && libm_so) ) +- $stderr.puts("libc and libm not found: #{$0} ") +- end +-end +- +-libc_so = nil if !libc_so || (libc_so[0] == ?/ && !File.file?(libc_so)) +-libm_so = nil if !libm_so || (libm_so[0] == ?/ && !File.file?(libm_so)) +- + if !libc_so || !libm_so + ruby = EnvUtil.rubybin + ldd = `ldd #{ruby}` +-- +2.9.2 + diff --git a/ruby-2.5.0-Add-Gem.operating_system_defaults.patch b/ruby-2.5.0-Add-Gem.operating_system_defaults.patch new file mode 100644 index 0000000..7ac0e41 --- /dev/null +++ b/ruby-2.5.0-Add-Gem.operating_system_defaults.patch @@ -0,0 +1,80 @@ +From 60eb961c25f801ee43ca1be9393ab2f0a0546677 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 19 Dec 2017 14:00:20 +0100 +Subject: [PATCH] Add Gem.operating_system_defaults to allow packagers to + override defaults. + +This change allows Ruby packagers to override defaults and lazily query +them. + +This is very much the same change as #1644 to treat the +operating_system defaults the same way as platform defaults. +--- + lib/rubygems/config_file.rb | 2 +- + lib/rubygems/defaults.rb | 21 ++++++++++++++++++++- + test/rubygems/test_gem.rb | 7 +++++++ + 3 files changed, 28 insertions(+), 2 deletions(-) + +diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb +index a4efed0f5a..deee38e6d9 100644 +--- a/lib/rubygems/config_file.rb ++++ b/lib/rubygems/config_file.rb +@@ -48,7 +48,7 @@ class Gem::ConfigFile + # For Ruby packagers to set configuration defaults. Set in + # rubygems/defaults/operating_system.rb + +- OPERATING_SYSTEM_DEFAULTS = {} ++ OPERATING_SYSTEM_DEFAULTS = Gem.operating_system_defaults + + ## + # For Ruby implementers to set configuration defaults. Set in +diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb +index 43d57fc808..b8222877ae 100644 +--- a/lib/rubygems/defaults.rb ++++ b/lib/rubygems/defaults.rb +@@ -177,7 +177,26 @@ def self.vendor_dir # :nodoc: + end + + ## +- # Default options for gem commands. ++ # Default options for gem commands for Ruby packagers. ++ # ++ # The options here should be structured as an array of string "gem" ++ # command names as keys and a string of the default options as values. ++ # ++ # Example: ++ # ++ # def self.operating_system_defaults ++ # { ++ # 'install' => '--no-rdoc --no-ri --env-shebang', ++ # 'update' => '--no-rdoc --no-ri --env-shebang' ++ # } ++ # end ++ ++ def self.operating_system_defaults ++ {} ++ end ++ ++ ## ++ # Default options for gem commands for Ruby implementers. + # + # The options here should be structured as an array of string "gem" + # command names as keys and a string of the default options as values. +diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb +index 3225a05c6b..62b80c4945 100644 +--- a/test/rubygems/test_gem.rb ++++ b/test/rubygems/test_gem.rb +@@ -1837,6 +1837,13 @@ def test_use_gemdeps_specific + ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps + end + ++ def test_operating_system_defaults ++ operating_system_defaults = Gem.operating_system_defaults ++ ++ assert operating_system_defaults != nil ++ assert operating_system_defaults.is_a? Hash ++ end ++ + def test_platform_defaults + platform_defaults = Gem.platform_defaults + diff --git a/ruby-2.5.1-Avoid-need-of-C++-compiler-to-pass-the-test-suite.patch b/ruby-2.5.1-Avoid-need-of-C++-compiler-to-pass-the-test-suite.patch new file mode 100644 index 0000000..413a1da --- /dev/null +++ b/ruby-2.5.1-Avoid-need-of-C++-compiler-to-pass-the-test-suite.patch @@ -0,0 +1,35 @@ +From 51e2c91412a511196e58efea5b87c460b4fa6a20 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Thu, 26 Jul 2018 13:17:52 +0200 +Subject: [PATCH] Avoid need of C++ compiler to pass the test suite. + +The test suite fails when C++ compiler is not available on the system: + +~~~ +TestGemExtCmakeBuilder#test_self_build: +Gem::InstallError: cmake failed, exit code 1 + /builddir/build/BUILD/ruby-2.5.1/lib/rubygems/ext/builder.rb:92:in `run' + /builddir/build/BUILD/ruby-2.5.1/lib/rubygems/ext/cmake_builder.rb:10:in `build' + /builddir/build/BUILD/ruby-2.5.1/test/rubygems/test_gem_ext_cmake_builder.rb:37:in `block in test_self_build' + /builddir/build/BUILD/ruby-2.5.1/test/rubygems/test_gem_ext_cmake_builder.rb:36:in `chdir' + /builddir/build/BUILD/ruby-2.5.1/test/rubygems/test_gem_ext_cmake_builder.rb:36:in `test_self_build' +~~~ + +But there is nothing which would realy required C++. It is just CMake +default to check for C++. +--- + test/rubygems/test_gem_ext_cmake_builder.rb | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/test/rubygems/test_gem_ext_cmake_builder.rb b/test/rubygems/test_gem_ext_cmake_builder.rb +index 76d3cb2afe..2d449fc2fd 100644 +--- a/test/rubygems/test_gem_ext_cmake_builder.rb ++++ b/test/rubygems/test_gem_ext_cmake_builder.rb +@@ -25,6 +25,7 @@ def test_self_build + File.open File.join(@ext, 'CMakeLists.txt'), 'w' do |cmakelists| + cmakelists.write <<-eo_cmake + cmake_minimum_required(VERSION 2.6) ++project(self_build LANGUAGES NONE) + install (FILES test.txt DESTINATION bin) + eo_cmake + end diff --git a/ruby-2.6.0-config-support-include-directive.patch b/ruby-2.6.0-config-support-include-directive.patch new file mode 100644 index 0000000..31cc721 --- /dev/null +++ b/ruby-2.6.0-config-support-include-directive.patch @@ -0,0 +1,182 @@ +From f46bac1f3e8634e24c747d06b28e11b874f1e488 Mon Sep 17 00:00:00 2001 +From: Kazuki Yamaguchi +Date: Thu, 16 Aug 2018 19:40:48 +0900 +Subject: [PATCH] config: support .include directive + +OpenSSL 1.1.1 introduces a new '.include' directive. Update our config +parser to support that. + +As mentioned in the referenced GitHub issue, we should use the OpenSSL +API instead of implementing the parsing logic ourselves, but it will +need backwards-incompatible changes which we can't backport to stable +versions. So continue to use the Ruby implementation for now. + +Reference: https://github.com/ruby/openssl/issues/208 +--- + ext/openssl/lib/openssl/config.rb | 54 ++++++++++++++++++++++++++++--------------- + test/openssl/test_config.rb | 54 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 90 insertions(+), 18 deletions(-) + +diff --git a/ext/openssl/lib/openssl/config.rb b/ext/openssl/lib/openssl/config.rb +index 88225451..ba3a54c8 100644 +--- a/ext/openssl/lib/openssl/config.rb ++++ b/ext/openssl/lib/openssl/config.rb +@@ -77,29 +77,44 @@ def get_key_string(data, section, key) # :nodoc: + def parse_config_lines(io) + section = 'default' + data = {section => {}} +- while definition = get_definition(io) ++ io_stack = [io] ++ while definition = get_definition(io_stack) + definition = clear_comments(definition) + next if definition.empty? +- if definition[0] == ?[ ++ case definition ++ when /\A\[/ + if /\[([^\]]*)\]/ =~ definition + section = $1.strip + data[section] ||= {} + else + raise ConfigError, "missing close square bracket" + end +- else +- if /\A([^:\s]*)(?:::([^:\s]*))?\s*=(.*)\z/ =~ definition +- if $2 +- section = $1 +- key = $2 +- else +- key = $1 ++ when /\A\.include (\s*=\s*)?(.+)\z/ ++ path = $2 ++ if File.directory?(path) ++ files = Dir.glob(File.join(path, "*.{cnf,conf}"), File::FNM_EXTGLOB) ++ else ++ files = [path] ++ end ++ ++ files.each do |filename| ++ begin ++ io_stack << StringIO.new(File.read(filename)) ++ rescue ++ raise ConfigError, "could not include file '%s'" % filename + end +- value = unescape_value(data, section, $3) +- (data[section] ||= {})[key] = value.strip ++ end ++ when /\A([^:\s]*)(?:::([^:\s]*))?\s*=(.*)\z/ ++ if $2 ++ section = $1 ++ key = $2 + else +- raise ConfigError, "missing equal sign" ++ key = $1 + end ++ value = unescape_value(data, section, $3) ++ (data[section] ||= {})[key] = value.strip ++ else ++ raise ConfigError, "missing equal sign" + end + end + data +@@ -212,10 +227,10 @@ def clear_comments(line) + scanned.join + end + +- def get_definition(io) +- if line = get_line(io) ++ def get_definition(io_stack) ++ if line = get_line(io_stack) + while /[^\\]\\\z/ =~ line +- if extra = get_line(io) ++ if extra = get_line(io_stack) + line += extra + else + break +@@ -225,9 +240,12 @@ def get_definition(io) + end + end + +- def get_line(io) +- if line = io.gets +- line.gsub(/[\r\n]*/, '') ++ def get_line(io_stack) ++ while io = io_stack.last ++ if line = io.gets ++ return line.gsub(/[\r\n]*/, '') ++ end ++ io_stack.pop + end + end + end +diff --git a/test/openssl/test_config.rb b/test/openssl/test_config.rb +index 99dcc497..5653b5d0 100644 +--- a/test/openssl/test_config.rb ++++ b/test/openssl/test_config.rb +@@ -120,6 +120,49 @@ def test_s_parse_format + assert_equal("error in line 7: missing close square bracket", excn.message) + end + ++ def test_s_parse_include ++ in_tmpdir("ossl-config-include-test") do |dir| ++ Dir.mkdir("child") ++ File.write("child/a.conf", <<~__EOC__) ++ [default] ++ file-a = a.conf ++ [sec-a] ++ a = 123 ++ __EOC__ ++ File.write("child/b.cnf", <<~__EOC__) ++ [default] ++ file-b = b.cnf ++ [sec-b] ++ b = 123 ++ __EOC__ ++ File.write("include-child.conf", <<~__EOC__) ++ key_outside_section = value_a ++ .include child ++ __EOC__ ++ ++ include_file = <<~__EOC__ ++ [default] ++ file-main = unnamed ++ [sec-main] ++ main = 123 ++ .include = include-child.conf ++ __EOC__ ++ ++ # Include a file by relative path ++ c1 = OpenSSL::Config.parse(include_file) ++ assert_equal(["default", "sec-a", "sec-b", "sec-main"], c1.sections.sort) ++ assert_equal(["file-main", "file-a", "file-b"], c1["default"].keys) ++ assert_equal({"a" => "123"}, c1["sec-a"]) ++ assert_equal({"b" => "123"}, c1["sec-b"]) ++ assert_equal({"main" => "123", "key_outside_section" => "value_a"}, c1["sec-main"]) ++ ++ # Relative paths are from the working directory ++ assert_raise(OpenSSL::ConfigError) do ++ Dir.chdir("child") { OpenSSL::Config.parse(include_file) } ++ end ++ end ++ end ++ + def test_s_load + # alias of new + c = OpenSSL::Config.load +@@ -299,6 +342,17 @@ def test_clone + @it['newsection'] = {'a' => 'b'} + assert_not_equal(@it.sections.sort, c.sections.sort) + end ++ ++ private ++ ++ def in_tmpdir(*args) ++ Dir.mktmpdir(*args) do |dir| ++ dir = File.realpath(dir) ++ Dir.chdir(dir) do ++ yield dir ++ end ++ end ++ end + end + + end diff --git a/ruby-2.6.0-configure-fstack-protector-strong.patch b/ruby-2.6.0-configure-fstack-protector-strong.patch new file mode 100644 index 0000000..e44d9bb --- /dev/null +++ b/ruby-2.6.0-configure-fstack-protector-strong.patch @@ -0,0 +1,43 @@ +From c8ccdbfe1e45cb3b832109d644296c0a3b3e0b59 Mon Sep 17 00:00:00 2001 +From: nobu +Date: Sun, 2 Sep 2018 03:49:31 +0000 +Subject: [PATCH] configure.ac: -fstack-protector-strong + +* configure.ac: use -fstack-protector-strong if available instead of + -fstack-protector conditionally. [ruby-core:88788] [Misc #15053] + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64614 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + configure.ac | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9328fa532de0..b8ee57239215 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -837,15 +837,18 @@ AS_IF([test "$GCC" = yes], [ + stack_protector=no + ]) + AS_IF([test -z "${stack_protector+set}"], [ +- RUBY_TRY_CFLAGS(-fstack-protector, [stack_protector=yes], [stack_protector=no]) +- AS_IF([test "x$stack_protector" = xyes], [ +- RUBY_TRY_LDFLAGS(-fstack-protector, [], [stack_protector=broken]) ++ AS_FOR(option, opt, [-fstack-protector-strong -fstack-protector], [ ++ RUBY_TRY_CFLAGS(option, [stack_protector=yes]) ++ AS_IF([test "x$stack_protector" = xyes], [ ++ RUBY_TRY_LDFLAGS(option, [], [stack_protector=]) ++ ]) ++ AS_IF([test "x$stack_protector" = xyes], [stack_protector=option; break]) + ]) + ]) +- AS_IF([test "x$stack_protector" = xyes], [ +- RUBY_APPEND_OPTION(XCFLAGS, -fstack-protector) +- RUBY_APPEND_OPTION(XLDFLAGS, -fstack-protector) +- RUBY_APPEND_OPTION(LDFLAGS, -fstack-protector) ++ AS_CASE(["$stack_protector"], [-*], [ ++ RUBY_APPEND_OPTION(XCFLAGS, $stack_protector) ++ RUBY_APPEND_OPTION(XLDFLAGS, $stack_protector) ++ RUBY_APPEND_OPTION(LDFLAGS, $stack_protector) + ]) + + AS_CASE("${compress_debug_sections:-zlib}", diff --git a/ruby-2.6.0-library-options-to-MAINLIBS.patch b/ruby-2.6.0-library-options-to-MAINLIBS.patch new file mode 100644 index 0000000..dec4e5a --- /dev/null +++ b/ruby-2.6.0-library-options-to-MAINLIBS.patch @@ -0,0 +1,177 @@ +From bb3db69e2a0c210cc3a63940622db96a97eb7947 Mon Sep 17 00:00:00 2001 +From: nobu +Date: Fri, 2 Mar 2018 01:37:53 +0000 +Subject: [PATCH] configure.ac: library options to MAINLIBS + +* configure.ac (MAINLIBS): moved library options for main program + and static libruby, and append MAINLIBS to LIBRUBYARG_STATIC, as + these libraries are not needed for linking to shared libruby. + [ruby-core:85882] [Bug #14422] + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + configure.ac | 33 +++++++++++++++------------------ + template/ruby.pc.in | 1 + + win32/Makefile.sub | 6 ++++-- + 3 files changed, 20 insertions(+), 20 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 5f492585b3..976be1a835 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -10,6 +10,7 @@ AC_DISABLE_OPTION_CHECKING + AC_ARG_VAR([cflags], [additional CFLAGS]) + AC_ARG_VAR([cppflags], [additional CPPFLAGS]) + AC_ARG_VAR([cxxflags], [additional CXXFLAGS]) ++ORIG_LIBS=$LIBS + + AC_DEFUN([RUBY_RM_RECURSIVE], [ + m4_version_prereq([2.70], [-1], [ +@@ -2939,13 +2940,11 @@ AS_IF([test x"$enable_pthread" = xyes], [ + AC_DEFINE(_THREAD_SAFE) + AC_DEFINE(HAVE_LIBPTHREAD) + AC_CHECK_HEADERS(pthread_np.h, [], [], [@%:@include ]) +- AS_CASE([$pthread_lib], +- [c], [], +- [root], [], +- [c_r], [MAINLIBS="-pthread $MAINLIBS"], +- [AS_CASE(["$target_os"], +- [openbsd*|mirbsd*], [LIBS="-pthread $LIBS"], +- [LIBS="-l$pthread_lib $LIBS"])]) ++ AS_CASE(["$pthread_lib:$target_os"], ++ [c:*], [], ++ [root:*], [], ++ [c_r:*|*:openbsd*|*:mirbsd*], [LIBS="-pthread $LIBS"], ++ [LIBS="-l$pthread_lib $LIBS"]) + ], [ + AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled") + ]) +@@ -3624,7 +3623,7 @@ LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a' + LIBRUBY='$(LIBRUBY_A)' + LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static' + LIBRUBYARG='$(LIBRUBYARG_STATIC)' +-SOLIBS= ++SOLIBS='$(MAINLIBS)' + + AS_CASE(["$target_os"], + [cygwin*|mingw*|haiku*|darwin*], [ +@@ -3690,9 +3689,6 @@ AS_CASE("$enable_shared", [yes], [ + LIBRUBY_RELATIVE=no + test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS" + ENABLE_SHARED=yes +- AS_IF([test "$rb_cv_binary_elf" = yes], [ +- SOLIBS='$(LIBS)' +- ]) + + # libdir can be overridden in config.site file (on OpenSUSE at least). + libdir_basename=lib +@@ -3727,7 +3723,6 @@ AS_CASE("$enable_shared", [yes], [ + ]) + ], + [freebsd*|dragonfly*], [ +- SOLIBS='$(LIBS)' + LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)' + LIBRUBY_SONAME='$(LIBRUBY_SO)' + AS_IF([test "$rb_cv_binary_elf" != "yes" ], [ +@@ -3736,7 +3731,6 @@ AS_CASE("$enable_shared", [yes], [ + ]) + ], + [netbsd*], [ +- SOLIBS='$(LIBS)' + LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)' + LIBRUBY_SO="${LIBRUBY_SONAME}"'.$(TEENY)' + RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,$(LIBRUBY_SONAME)' "$LDFLAGS_OPTDIR"]) +@@ -3747,11 +3741,9 @@ AS_CASE("$enable_shared", [yes], [ + ]) + ], + [openbsd*|mirbsd*], [ +- SOLIBS='$(LIBS)' + LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}` + ], + [solaris*], [ +- SOLIBS='$(LIBS)' + LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)' + LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)' + LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)' +@@ -3769,7 +3761,7 @@ AS_CASE("$enable_shared", [yes], [ + [aix*], [ + RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-bnoentry" "$XLDFLAGS" "$LDFLAGS_OPTDIR"]) + LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}' +- SOLIBS='-lm -lc' ++ LIBS="$LIBS -lm -lc" + ], + [darwin*], [ + LIBRUBY_LDSHARED='$(CC) -dynamiclib' +@@ -3789,7 +3781,6 @@ AS_CASE("$enable_shared", [yes], [ + LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT)' + LIBRUBY_SONAME='lib$(RUBY_BASE_NAME).$(RUBY_API_VERSION).$(SOEXT)' + LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_INSTALL_NAME).$(SOEXT)' +- SOLIBS='$(LIBS)' + ], + [interix*], [ + LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)' +@@ -4032,7 +4023,6 @@ AS_CASE(["$target_os"], + ]) + LIBRUBY_ALIASES='' + FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in +- SOLIBS='$(LIBS)' + AS_IF([test x"$enable_shared" = xyes], [ + LIBRUBY='lib$(RUBY_SO_NAME).dll.a' + ], [ +@@ -4132,6 +4122,13 @@ AS_IF([test "${universal_binary-no}" = yes ], [ + [rb_cv_architecture_available=yes], [rb_cv_architecture_available=no])) + ]) + ++MAINLIBS="$LIBS" ++LIBS=$ORIG_LIBS ++AS_IF([test -n "${LIBS}"], [ ++ libspat=`echo "${LIBS}" | sed 's/[[][|.*$^]]/\\&/g;s/^ */ /;s/^ *$/ /'` ++ MAINFLAGS=`echo " $MAINLIBS " | sed "s|$libspat"'||;s/^ *//;s/ *$//'` ++]) ++LIBRUBYARG_STATIC="${LIBRUBYARG_STATIC} \$(MAINLIBS)" + CPPFLAGS="$CPPFLAGS "'$(DEFS)' + test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}' + AS_IF([test -n "${cflags+set}"], [ +diff --git a/template/ruby.pc.in b/template/ruby.pc.in +index 9f3e8847bb..c4d46f6a9c 100644 +--- a/template/ruby.pc.in ++++ b/template/ruby.pc.in +@@ -39,6 +39,7 @@ sitehdrdir=@sitehdrdir@ + rubyarchhdrdir=@rubyarchhdrdir@ + vendorarchhdrdir=@vendorarchhdrdir@ + sitearchhdrdir=@sitearchhdrdir@ ++MAINLIBS=@MAINLIBS@ + SOEXT=@SOEXT@ + LIBPATH=@LIBPATH@ + LIBRUBY_A=@LIBRUBY_A@ +diff --git a/win32/Makefile.sub b/win32/Makefile.sub +index 70440e1c9d..2f8cf74c3f 100644 +--- a/win32/Makefile.sub ++++ b/win32/Makefile.sub +@@ -279,6 +279,7 @@ LDSHARED_2 = @if exist $(@).manifest @$(RM) $(@:/=\).manifest + CPPFLAGS = $(DEFS) $(ARCHDEFS) $(CPPFLAGS) + + DLDFLAGS = $(LDFLAGS) -dll ++MAINLIBS = $(LIBS) + SOLIBS = + RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc + !ifndef RCFLAGS +@@ -821,7 +822,8 @@ s,@CPPFLAGS@,$(CPPFLAGS),;t t + s,@CXXFLAGS@,$(CXXFLAGS),;t t + s,@FFLAGS@,$(FFLAGS),;t t + s,@LDFLAGS@,$(LDFLAGS),;t t +-s,@LIBS@,$(LIBS),;t t ++s,@LIBS@,,;t t ++s,@MAINLIBS@,$(MAINLIBS),;t t + s,@exec_prefix@,$${prefix},;t t + s,@prefix@,$(prefix),;t t + s,@program_transform_name@,s,.*,$(PROGRAM_PREFIX)&$(PROGRAM_SUFFIX),,;t t +@@ -909,7 +911,7 @@ s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t + s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t + s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t + s,@LIBRUBYARG@,$$(LIBRUBYARG_SHARED),;t t +-s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A),;t t ++s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A) $$(MAINLIBS),;t t + s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t + s,@SOLIBS@,$(SOLIBS),;t t + s,@DLDLIBS@,$(DLDLIBS),;t t diff --git a/ruby-2.6.0-rdoc-6.0.1-fix-template-typo.patch b/ruby-2.6.0-rdoc-6.0.1-fix-template-typo.patch new file mode 100644 index 0000000..9bebebd --- /dev/null +++ b/ruby-2.6.0-rdoc-6.0.1-fix-template-typo.patch @@ -0,0 +1,25 @@ +From d05e6269d4a4dfd701f5ddb3ae34306cba891511 Mon Sep 17 00:00:00 2001 +From: Jun Aruga +Date: Fri, 3 Aug 2018 11:35:55 +0200 +Subject: [PATCH] Fix indent and typo from moveTimout to moveTimeout. + +--- + lib/rdoc/generator/template/json_index/js/navigation.js | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/lib/rdoc/generator/template/json_index/js/navigation.js b/lib/rdoc/generator/template/json_index/js/navigation.js +index e4126812..43c5118a 100644 +--- a/lib/rdoc/generator/template/json_index/js/navigation.js ++++ b/lib/rdoc/generator/template/json_index/js/navigation.js +@@ -41,9 +41,8 @@ Navigation = new function() { + } + break; + case 13: //Event.KEY_RETURN: +- if (this.current) +- e.preventDefault(); +- this.select(this.current); ++ if (this.current) e.preventDefault(); ++ this.select(this.current); + break; + } + if (e.ctrlKey && e.shiftKey) this.select(this.current); diff --git a/ruby-2.6.0-use-larger-keys-for-SSL-drb-tests.patch b/ruby-2.6.0-use-larger-keys-for-SSL-drb-tests.patch new file mode 100644 index 0000000..1df2234 --- /dev/null +++ b/ruby-2.6.0-use-larger-keys-for-SSL-drb-tests.patch @@ -0,0 +1,38 @@ +From 8af6b87023cbb1ba6cebea7daaafa275e0dc687e Mon Sep 17 00:00:00 2001 +From: normal +Date: Mon, 3 Dec 2018 04:51:13 +0000 +Subject: [PATCH] drb: fix tests on Debian sid/unstable with OpenSSL 1.1.1a + +OpenSSL complains abour our keys being small and weak :< +Make them big and strong with 2048-bit RSA keys and SHA256 digests + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + lib/drb/ssl.rb | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/drb/ssl.rb b/lib/drb/ssl.rb +index 45fe4f1f74..8c2c1cc65d 100644 +--- a/lib/drb/ssl.rb ++++ b/lib/drb/ssl.rb +@@ -162,7 +162,7 @@ def setup_certificate + return + end + +- rsa = OpenSSL::PKey::RSA.new(1024){|p, n| ++ rsa = OpenSSL::PKey::RSA.new(2048){|p, n| + next unless self[:verbose] + case p + when 0; $stderr.putc "." # BN_generate_prime +@@ -196,7 +196,7 @@ def setup_certificate + if comment = self[:SSLCertComment] + cert.add_extension(ef.create_extension("nsComment", comment)) + end +- cert.sign(rsa, OpenSSL::Digest::SHA1.new) ++ cert.sign(rsa, OpenSSL::Digest::SHA256.new) + + @cert = cert + @pkey = rsa +-- +2.26.2 + diff --git a/ruby-2.6.0-use-larger-keys-for-SSL-tests.patch b/ruby-2.6.0-use-larger-keys-for-SSL-tests.patch new file mode 100644 index 0000000..62f9488 --- /dev/null +++ b/ruby-2.6.0-use-larger-keys-for-SSL-tests.patch @@ -0,0 +1,486 @@ +From b0bcb19cb4f95d260c5993df0aaa3667522fb99d Mon Sep 17 00:00:00 2001 +From: Kazuki Yamaguchi +Date: Thu, 16 Aug 2018 20:54:47 +0900 +Subject: [PATCH 1/2] test/openssl/test_pair: fix deadlock in + test_connect_accept_nonblock + +Call IO.select with a timeout value and limit the number of retries to +prevent stacking forever. + +Reference: https://github.com/ruby/openssl/issues/214 +--- + test/openssl/test_pair.rb | 51 ++++++++++++++++++++--------------------------- + 1 file changed, 22 insertions(+), 29 deletions(-) + +diff --git a/test/openssl/test_pair.rb b/test/openssl/test_pair.rb +index ea5f0dcf..eac3655e 100644 +--- a/test/openssl/test_pair.rb ++++ b/test/openssl/test_pair.rb +@@ -442,7 +442,7 @@ def test_connect_accept_nonblock_no_exception + end + + def test_connect_accept_nonblock +- ctx = OpenSSL::SSL::SSLContext.new() ++ ctx = OpenSSL::SSL::SSLContext.new + ctx.cert = @svr_cert + ctx.key = @svr_key + ctx.tmp_dh_callback = proc { OpenSSL::TestUtils::Fixtures.pkey_dh("dh1024") } +@@ -451,45 +451,38 @@ def test_connect_accept_nonblock + + th = Thread.new { + s2 = OpenSSL::SSL::SSLSocket.new(sock2, ctx) +- s2.sync_close = true +- begin ++ 5.times { ++ begin ++ break s2.accept_nonblock ++ rescue IO::WaitReadable ++ IO.select([s2], nil, nil, 1) ++ rescue IO::WaitWritable ++ IO.select(nil, [s2], nil, 1) ++ end + sleep 0.2 +- s2.accept_nonblock ++ } ++ } ++ ++ s1 = OpenSSL::SSL::SSLSocket.new(sock1) ++ 5.times { ++ begin ++ break s1.connect_nonblock + rescue IO::WaitReadable +- IO.select([s2]) +- retry ++ IO.select([s1], nil, nil, 1) + rescue IO::WaitWritable +- IO.select(nil, [s2]) +- retry ++ IO.select(nil, [s1], nil, 1) + end +- s2 +- } +- +- sleep 0.1 +- ctx = OpenSSL::SSL::SSLContext.new() +- s1 = OpenSSL::SSL::SSLSocket.new(sock1, ctx) +- begin + sleep 0.2 +- s1.connect_nonblock +- rescue IO::WaitReadable +- IO.select([s1]) +- retry +- rescue IO::WaitWritable +- IO.select(nil, [s1]) +- retry +- end +- s1.sync_close = true ++ } + + s2 = th.value + + s1.print "a\ndef" + assert_equal("a\n", s2.gets) + ensure +- th.join if th +- s1.close if s1 && !s1.closed? +- s2.close if s2 && !s2.closed? +- sock1.close if sock1 && !sock1.closed? +- sock2.close if sock2 && !sock2.closed? ++ sock1&.close ++ sock2&.close ++ th&.join + end + end + + +From 5ba99ad7ae1267ed964f53906530579299f3fcc6 Mon Sep 17 00:00:00 2001 +From: Kazuki Yamaguchi +Date: Thu, 16 Aug 2018 20:04:13 +0900 +Subject: [PATCH 2/2] test: use larger keys for SSL tests + +Some systems enforce a system-wide policy to restrict key sizes used in +SSL/TLS. Use larger ones if possible so that the test suite runs +successfully. + +New PEM files test/openssl/fixtures/pkey/{dh-1,rsa-1,rsa-2,rsa-3}.pem are added +to the tree, and SSL tests now use them instead of the fixed-size keys. + +Reference: https://github.com/ruby/openssl/issues/215 +--- + test/openssl/fixtures/pkey/dh-1.pem | 13 +++++++++ + test/openssl/fixtures/pkey/rsa-1.pem | 51 ++++++++++++++++++++++++++++++++++++ + test/openssl/fixtures/pkey/rsa-2.pem | 51 ++++++++++++++++++++++++++++++++++++ + test/openssl/fixtures/pkey/rsa-3.pem | 51 ++++++++++++++++++++++++++++++++++++ + test/openssl/test_pair.rb | 8 +++--- + test/openssl/test_pkey_dh.rb | 8 +++--- + test/openssl/test_ssl.rb | 11 ++++---- + test/openssl/utils.rb | 14 +++++----- + 8 files changed, 186 insertions(+), 21 deletions(-) + create mode 100644 test/openssl/fixtures/pkey/dh-1.pem + create mode 100644 test/openssl/fixtures/pkey/rsa-1.pem + create mode 100644 test/openssl/fixtures/pkey/rsa-2.pem + create mode 100644 test/openssl/fixtures/pkey/rsa-3.pem + +diff --git a/test/openssl/fixtures/pkey/dh-1.pem b/test/openssl/fixtures/pkey/dh-1.pem +new file mode 100644 +index 00000000..3340a6a1 +--- /dev/null ++++ b/test/openssl/fixtures/pkey/dh-1.pem +@@ -0,0 +1,13 @@ ++-----BEGIN DH PARAMETERS----- ++MIICCAKCAgEAvRzXYxY6L2DjeYmm1eowtMDu1it3j+VwFr6s6PRWzc1apMtztr9G ++xZ2mYndUAJLgNLO3n2fUDCYVMB6ZkcekW8Siocof3xWiMA6wqZ6uw0dsE3q7ZX+6 ++TLjgSjaXeGvjutvuEwVrFeaUi83bMgfXN8ToxIQVprIF35sYFt6fpbFATKfW7qqi ++P1pQkjmCskU4tztaWvlLh0qg85wuQGnpJaQT3gS30378i0IGbA0EBvJcSpTHYbLa ++nsdI9bfN/ZVgeolVMNMU9/n8R8vRhNPcHuciFwaqS656q+HavCIyxw/LfjSwwFvR ++TngCn0wytRErkzFIXnRKckh8/BpI4S+0+l1NkOwG4WJ55KJ/9OOdZW5o/QCp2bDi ++E0JN1EP/gkSom/prq8JR/yEqtsy99uc5nUxPmzv0IgdcFHZEfiQU7iRggEbx7qfQ ++Ve55XksmmJInmpCy1bSabAEgIKp8Ckt5KLYZ0RgTXUhcEpsxEo6cuAwoSJT5o4Rp ++yG3xow2ozPcqZkvb+d2CHj1sc54w9BVFAjVANEKmRil/9WKz14bu3wxEhOPqC54n ++QojjLcoXSoT66ZUOQnYxTSiLtzoKGPy8cAVPbkBrXz2u2sj5gcvr1JjoGjdHm9/3 ++qnqC8fsTz8UndKNIQC337o4K0833bQMzRGl1/qjbAPit2B7E3b6xTZMCAQI= ++-----END DH PARAMETERS----- +diff --git a/test/openssl/fixtures/pkey/rsa-1.pem b/test/openssl/fixtures/pkey/rsa-1.pem +new file mode 100644 +index 00000000..bd5a624f +--- /dev/null ++++ b/test/openssl/fixtures/pkey/rsa-1.pem +@@ -0,0 +1,51 @@ ++-----BEGIN RSA PRIVATE KEY----- ++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 ++UxCXTuxFUdGfgvXo2XStOBMCtcGSYflM3fv27b4C13mUXhY0O2yTgn8m9LyZsknc ++xGalENpbWmwqrjYl8KOF2+gFZV68FZ67Bm6otkJ4ta80VJw6joT9/eIe6IA34KIw ++G+ktAoIBAFRuPxzvC4ZSaasyX21l25mQbC9pdWDKEkqxCmp3VOyy6R4xnlgBOhwS ++VeAacV2vQyvRfv4dSLIVkkNSRDHEqCWVlNk75TDXFCytIAyE54xAHbLqIVlY7yim ++qHVB07F/FC6PxdkPPziAAU2DA5XVedSHibslg6jbbD4jU6qiJ1+hNrAZEs+jQC+C ++n4Ri20y+Qbp0URb2+icemnARlwgr+3HjzQGL3gK4NQjYNmDBjEWOXl9aWWB90FNL ++KahGwfAhxcVW4W56opCzwR7nsujV4eDXGba83itidRuQfd5pyWOyc1E86TYGwD/b ++79OkEElv6Ea8uXTDVS075GmWATRapQECggEAd9ZAbyT+KouTfi2e6yLOosxSZfns ++eF06QAJi5n9GOtdfK5fqdmHJqJI7wbubCnd0oxPeL71lRjrOAMXufaQRdZtfXSMn ++B1TljteNrh1en5xF451rCPR/Y6tNKBvIKnhy1waO27/vA+ovXrm17iR9rRuGZ29i ++IurlKA6z/96UdrSdpqITTCyTjSOBYg34f49ueGjlpL4+8HJq2wor4Cb1Sbv8ErqA ++bsQ/Jz+KIGUiuFCfNa6d6McPRXIrGgzpprXgfimkV3nj49QyrnuCF/Pc4psGgIaN ++l3EiGXzRt/55K7DQVadtbcjo9zREac8QnDD6dS/gOfJ82L7frQfMpNWgQA== ++-----END RSA PRIVATE KEY----- +diff --git a/test/openssl/fixtures/pkey/rsa-2.pem b/test/openssl/fixtures/pkey/rsa-2.pem +new file mode 100644 +index 00000000..e4fd4f43 +--- /dev/null ++++ b/test/openssl/fixtures/pkey/rsa-2.pem +@@ -0,0 +1,51 @@ ++-----BEGIN RSA PRIVATE KEY----- ++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 ++-----END RSA PRIVATE KEY----- +diff --git a/test/openssl/fixtures/pkey/rsa-3.pem b/test/openssl/fixtures/pkey/rsa-3.pem +new file mode 100644 +index 00000000..6c9c9ced +--- /dev/null ++++ b/test/openssl/fixtures/pkey/rsa-3.pem +@@ -0,0 +1,51 @@ ++-----BEGIN RSA PRIVATE KEY----- ++MIIJKAIBAAKCAgEAzn+YCcOh7BIRzrb7TEuhQLD545+/Fx/zCYO3l+y/8ogUxMTg ++LG5HrcXlX3JP796ie90/GHIf8/lwczVhP1jk/keYjkwoTYDt477R7KRcJPyGqHRr ++qLp7AnZxtz3JLNboTgO3bAYzlvtsSKU/R3oehBbGHzEWCP2UEYj/Kky0zpcjkhZU ++jiErr9ARPq8+dOGqBf+CE2NLKYC1bu8hZe9AddvvN2SvfMN6uhJtEGZO1k8tScwf ++AyvPJ1Po/6z08pzMAgfBUCE95waAVeYJWIOlnNB4eEievzlXdPB9vEt8OOwtWfQX ++V8xyMsoKeAW05s413E0eTYx1aulFXdWwG2mWEBRtNzKF1iBudlg1a3x1zThWi1pY ++jW5vROvoWZMCbl9bYQ/LxOCVqDoUl86+NPEGeuESMzm5NvOQA2e0Ty5wphnt9M19 ++Wcc8neBhb6iCGqYzxWNvUYXZWUv1+/MrPHKyJuv7MSivwtctfp8SacUGxkd6T+u6 ++V6ntHf3qtN/5pAmni6nzUTgjC65MS0LEhi/RTzwafkIfifeJH7/LqFtjrursuwua +++p9lkACck/J5TpzaAfLroFQuepP8qgeq1cpD5Iii56IJ+FPSnkvesHuRUmZIkhtR ++VVsVqMaNPv/Uzc02bOaRXWP4auUY91mDKx/FDmORa9YCDQxMkKke05SWQ90CAwEA ++AQKCAgA0+B/c6VTgxGXS+7cMhB3yBTOkgva2jNh/6Uyv6Of345ZIPyQt4X/7gFbt ++G9qLcjWFxmQH9kZiA+snclrmr/vVijIE1l5EOz1KfUlGBYcpaal1DqALIQKqyA01 ++buDq4pmmYWesiw6yvP2yyMipohav1VOu7p1zYvCXaufhRtneYICcWaQI7VNSfvHd ++fYBs5PIDJd6M8Jx4Ie7obOjJSAzl7qu3LtmhDFev4Ugeu8+fQ6IfWv/dhWBW+zw6 ++UXhnv3bJUonw7wX8+/rxjdd54BMcXZF5cU9fR+s6MPJf2ZEc3OBpQaa3O9dTVeZH ++kVctGVpRj2qlg9EewoWro0PQVE5Mjah+mdFhPAHWoGl1xht6xJmg0uHYxMCzbUSz ++7NSS3knR0qieFvsp5ESY72i7DnQsbhbn6mTuYdVtm9bphxifAWCP3jFdft/bjtSF ++4yuPI7Qga+3m0B8QhtbWhEzPVon6NyiY7qfa6qllp0opEbw2hE22uGFFNJo2mpPa ++pe9VwARtD0IyfeklE7KrBEwV8NjTaAipZTZODw0w/dt4K3dOiePDl3pPWjmERpVg ++Lkw7XSCMtu5X87I1BbfOYbQhOXksPY+W9Asf6ETBeIZ8bD6Iypuk2ssool1lukqv ++yq1Y8gbR9B2x91ftYwXgzqBSvd8PFNsaXWLD3nrai2G1vb81lQKCAQEA6W02eZcN ++7wJfkqNokcuqhc5OKXH14gVIRV+KocG6f3vg88wrCg5J2GqNhBFuwVrafJjRenm6 ++C8zWdneeyrl6cztgbaySw7kXnqFdTBiuOT8bhiG5NTPjDQ109EucaTbZU9KUXk6k ++ChPlr4G6IPrONpvi/9BvDDZLZkwR6uIg1kFWBy9kZaxFUEIug02hrbkTpPtnEUrO ++r3nG0QL/D0vf+bm4YHIVRMH2O2ZTTWexMw9XlfCe1+WjbJ+PS35QRCRDcRdWHXDb ++HnIFIAajtH5LtaJLgWUYq3B25WkQYtbHmFkm94sp/G4trb8JIJGzVO8cj9t6KeAT ++LG+tk8OqplqsYwKCAQEA4ne81KXx8VNwsKVFqwmiDIoi1q3beNa2hoXdzAMrnYdj ++iLxbfCVgrKPav9hdfXPBncHaNlGsd2G5W1a1UsOr128lTdfBsgm1RVPhVMKvo3fl ++yUnWajtAR1q3tVEUhuFlbJ/RHEtxJaGrzudYCPWQiYhydpDgSckbxD8PuElEgFBX ++O91vnWZEjMsxrABWiZNBxmtBUEv+fjUU/9USYzO4sN79UeD1+ZuBxPFwscsRcjLr ++bPgZWOwiywH6UmQ+DJTzeu0wJ6jgPoy/pgEujsbPDz1wNos6NhA/RQv31QeX33/B ++7/F5XKNmbJ2AFb/B+xTaTQPg0pjT5Exm+HrNU5OivwKCAQEAsLLVi9FG4OiBBHXi ++UItFuChljoYPxVqOTMV4Id6OmLZjoOmqouASElsGaTTxDDkEL1FXMUk4Bnq21dLT ++R06EXPpTknISX0qbkJ9CCrqcGAWnhi+9DYMLmvPW1p7t9c9pUESVv5X0IxTQx7yB ++8zkoJLp4aYGUrj/jb7qhzZYDmWy3/JRpgXWYupp+rzJy8xiowDj22mYwczDRyaJl ++BWVAVL+7zHZPl07kYC6jXHLj9mzktkIBXBkfTriyNkmV5R82VkN+Eqc9l5xkOMwN ++3DHGieYjFf47YHuv5RVVLBy91puWHckgrU+SEHYOKLNidybSDivsHArdOMQJN1Pk ++uCznVQKCAQAYY7DQbfa6eLQAMixomSb8lrvdxueGAgmyPyR93jGKS5Rqm2521ket ++EBB07MZUxmyposDvbKhYSwv9TD9G5I/TKcMouP3BQM5m4vu3dygXQMhcfzk6Q5tO ++k/SI8Gx3gjq8EhIhK/bJiLnKFJwkit3AEhPRtRSSnbgB0JDO1gUslHpwlg55MxRa ++3V9CGN84/cTtq4tjLGwCB5F1Y+sRB/byBXHeqY2UDi1Rmnb6jtYYKGe2WpnQO84b ++cuEUknskO75lFLpE6ykLU3koVaQ/+CVAjOtS1He2btWBiCJurNysU0P9pVHeqjJT ++rDqpHPe1JK/F74783zyir5+/Tuph/9pdAoIBAANPdFRQkJVH8K6iuhxQk6vFqiYB ++MUxpIVeLonD0p9TgMdezVNESht/AIutc0+5wabM45XuDWFRTuonvcE8lckv2Ux3a ++AvSsamjuesxw2YmkEtzZouVqDU0+oxppQJiwBG3MiaHX9F5IfnK6YmQ6xPwZ6MXi ++9feq1jR4KOc1ZrHtRMNgjnBWEFWroGe3FHgV7O133hpMSshRFmwcbE0nAaDr82U9 ++sl8dclDjEKBxaqjAeNajOr+BU0w0AAwWXL7dt/ctG2QClcj9wqbEfsXnOR10h4AI ++rqkcvQrOLbTwcrOD/6R1rQfQXtEHKf1maThxosootAQZXdf6jxU3oonx3tU= ++-----END RSA PRIVATE KEY----- +diff --git a/test/openssl/test_pair.rb b/test/openssl/test_pair.rb +index eac3655e..8d6ca1e9 100644 +--- a/test/openssl/test_pair.rb ++++ b/test/openssl/test_pair.rb +@@ -10,7 +10,7 @@ def setup + ee_exts = [ + ["keyUsage", "keyEncipherment,digitalSignature", true], + ] +- @svr_key = OpenSSL::TestUtils::Fixtures.pkey("rsa1024") ++ @svr_key = OpenSSL::TestUtils::Fixtures.pkey("rsa-1") + @svr_cert = issue_cert(svr_dn, @svr_key, 1, ee_exts, nil, nil) + end + +@@ -23,7 +23,7 @@ def ssl_pair + sctx = OpenSSL::SSL::SSLContext.new + sctx.cert = @svr_cert + sctx.key = @svr_key +- sctx.tmp_dh_callback = proc { OpenSSL::TestUtils::Fixtures.pkey_dh("dh1024") } ++ sctx.tmp_dh_callback = proc { OpenSSL::TestUtils::Fixtures.pkey("dh-1") } + sctx.options |= OpenSSL::SSL::OP_NO_COMPRESSION + ssls = OpenSSL::SSL::SSLServer.new(tcps, sctx) + ns = ssls.accept +@@ -397,7 +397,7 @@ def test_connect_accept_nonblock_no_exception + ctx2 = OpenSSL::SSL::SSLContext.new + ctx2.cert = @svr_cert + ctx2.key = @svr_key +- ctx2.tmp_dh_callback = proc { OpenSSL::TestUtils::Fixtures.pkey_dh("dh1024") } ++ ctx2.tmp_dh_callback = proc { OpenSSL::TestUtils::Fixtures.pkey("dh-1") } + + sock1, sock2 = tcp_pair + +@@ -445,7 +445,7 @@ def test_connect_accept_nonblock + ctx = OpenSSL::SSL::SSLContext.new + ctx.cert = @svr_cert + ctx.key = @svr_key +- ctx.tmp_dh_callback = proc { OpenSSL::TestUtils::Fixtures.pkey_dh("dh1024") } ++ ctx.tmp_dh_callback = proc { OpenSSL::TestUtils::Fixtures.pkey("dh-1") } + + sock1, sock2 = tcp_pair + +diff --git a/test/openssl/test_pkey_dh.rb b/test/openssl/test_pkey_dh.rb +index fb713813..79bf9bb7 100644 +--- a/test/openssl/test_pkey_dh.rb ++++ b/test/openssl/test_pkey_dh.rb +@@ -19,7 +19,7 @@ def test_new_break + end + + def test_DHparams +- dh1024 = Fixtures.pkey_dh("dh1024") ++ dh1024 = Fixtures.pkey("dh1024") + asn1 = OpenSSL::ASN1::Sequence([ + OpenSSL::ASN1::Integer(dh1024.p), + OpenSSL::ASN1::Integer(dh1024.g) +@@ -42,7 +42,7 @@ def test_DHparams + end + + def test_public_key +- dh = Fixtures.pkey_dh("dh1024") ++ dh = Fixtures.pkey("dh1024") + public_key = dh.public_key + assert_no_key(public_key) #implies public_key.public? is false! + assert_equal(dh.to_der, public_key.to_der) +@@ -50,14 +50,14 @@ def test_public_key + end + + def test_generate_key +- dh = Fixtures.pkey_dh("dh1024").public_key # creates a copy ++ dh = Fixtures.pkey("dh1024").public_key # creates a copy + assert_no_key(dh) + dh.generate_key! + assert_key(dh) + end + + def test_key_exchange +- dh = Fixtures.pkey_dh("dh1024") ++ dh = Fixtures.pkey("dh1024") + dh2 = dh.public_key + dh.generate_key! + dh2.generate_key! +diff --git a/test/openssl/test_ssl.rb b/test/openssl/test_ssl.rb +index 408c7d82..2633f7c4 100644 +--- a/test/openssl/test_ssl.rb ++++ b/test/openssl/test_ssl.rb +@@ -708,7 +708,7 @@ def socketpair + + def test_tlsext_hostname + fooctx = OpenSSL::SSL::SSLContext.new +- fooctx.tmp_dh_callback = proc { Fixtures.pkey_dh("dh1024") } ++ fooctx.tmp_dh_callback = proc { Fixtures.pkey("dh-1") } + fooctx.cert = @cli_cert + fooctx.key = @cli_key + +@@ -760,7 +760,7 @@ def test_servername_cb_raises_an_exception_on_unknown_objects + ctx2 = OpenSSL::SSL::SSLContext.new + ctx2.cert = @svr_cert + ctx2.key = @svr_key +- ctx2.tmp_dh_callback = proc { Fixtures.pkey_dh("dh1024") } ++ ctx2.tmp_dh_callback = proc { Fixtures.pkey("dh-1") } + ctx2.servername_cb = lambda { |args| Object.new } + + sock1, sock2 = socketpair +@@ -1140,7 +1140,7 @@ def test_alpn_protocol_selection_cancel + ctx1 = OpenSSL::SSL::SSLContext.new + ctx1.cert = @svr_cert + ctx1.key = @svr_key +- ctx1.tmp_dh_callback = proc { Fixtures.pkey_dh("dh1024") } ++ ctx1.tmp_dh_callback = proc { Fixtures.pkey("dh-1") } + ctx1.alpn_select_cb = -> (protocols) { nil } + ssl1 = OpenSSL::SSL::SSLSocket.new(sock1, ctx1) + +@@ -1382,20 +1382,21 @@ def test_get_ephemeral_key + def test_dh_callback + pend "TLS 1.2 is not supported" unless tls12_supported? + ++ dh = Fixtures.pkey("dh-1") + called = false + ctx_proc = -> ctx { + ctx.ssl_version = :TLSv1_2 + ctx.ciphers = "DH:!NULL" + ctx.tmp_dh_callback = ->(*args) { + called = true +- Fixtures.pkey_dh("dh1024") ++ dh + } + } + start_server(ctx_proc: ctx_proc) do |port| + server_connect(port) { |ssl| + assert called, "dh callback should be called" + if ssl.respond_to?(:tmp_key) +- assert_equal Fixtures.pkey_dh("dh1024").to_der, ssl.tmp_key.to_der ++ assert_equal dh.to_der, ssl.tmp_key.to_der + end + } + end +diff --git a/test/openssl/utils.rb b/test/openssl/utils.rb +index b7ddd891..fe626ade 100644 +--- a/test/openssl/utils.rb ++++ b/test/openssl/utils.rb +@@ -42,10 +42,8 @@ module Fixtures + + def pkey(name) + OpenSSL::PKey.read(read_file("pkey", name)) +- end +- +- def pkey_dh(name) +- # DH parameters can be read by OpenSSL::PKey.read atm ++ rescue OpenSSL::PKey::PKeyError ++ # TODO: DH parameters can be read by OpenSSL::PKey.read atm + OpenSSL::PKey::DH.new(read_file("pkey", name)) + end + +@@ -157,9 +155,9 @@ class OpenSSL::SSLTestCase < OpenSSL::TestCase + + def setup + super +- @ca_key = Fixtures.pkey("rsa2048") +- @svr_key = Fixtures.pkey("rsa1024") +- @cli_key = Fixtures.pkey("rsa2048") ++ @ca_key = Fixtures.pkey("rsa-1") ++ @svr_key = Fixtures.pkey("rsa-2") ++ @cli_key = Fixtures.pkey("rsa-3") + @ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA") + @svr = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=localhost") + @cli = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=localhost") +@@ -200,7 +198,7 @@ def start_server(verify_mode: OpenSSL::SSL::VERIFY_NONE, start_immediately: true + ctx.cert_store = store + ctx.cert = @svr_cert + ctx.key = @svr_key +- ctx.tmp_dh_callback = proc { Fixtures.pkey_dh("dh1024") } ++ ctx.tmp_dh_callback = proc { Fixtures.pkey("dh-1") } + ctx.verify_mode = verify_mode + ctx_proc.call(ctx) if ctx_proc + diff --git a/ruby-2.6.0-use-larger-keys-for-SSL-tests2.patch b/ruby-2.6.0-use-larger-keys-for-SSL-tests2.patch new file mode 100644 index 0000000..78ccf1f --- /dev/null +++ b/ruby-2.6.0-use-larger-keys-for-SSL-tests2.patch @@ -0,0 +1,51 @@ +From 6872cefaf682c7e9d538ef9d87f94f7a77c21154 Mon Sep 17 00:00:00 2001 +From: nagachika +Date: Wed, 7 Aug 2019 12:38:15 +0000 +Subject: [PATCH] merge revision(s) 1e54903684aa3c9ea3fe54520157846a1b1f07be: + [Backport #16051] + + test/openssl: Support OpenSSL 1.1.1 + + OpenSSL 1.1.1 rejects some shorter keys, which caused some failures of + `make test-all TESTS=openssl`. + + https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian/ruby-master/log/20190606T003005Z.fail.html.gz + + This change merges 6bbc31ddd1 and 63fb3a36d1 in + https://github.com/ruby/openssl. + Reference: https://github.com/ruby/openssl/pull/217 + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67735 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + test/openssl/test_ssl.rb | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/test/openssl/test_ssl.rb b/test/openssl/test_ssl.rb +index 46570b8b95..51d63859c0 100644 +--- a/test/openssl/test_ssl.rb ++++ b/test/openssl/test_ssl.rb +@@ -81,7 +81,7 @@ def test_add_certificate_multiple_certs + add0_chain_supported = openssl?(1, 0, 2) + + if add0_chain_supported +- ca2_key = Fixtures.pkey("rsa1024") ++ ca2_key = Fixtures.pkey("rsa2048") + ca2_exts = [ + ["basicConstraints", "CA:TRUE", true], + ["keyUsage", "cRLSign, keyCertSign", true], +@@ -1357,7 +1357,12 @@ def test_fallback_scsv + # Server support better, so refuse the connection + sock1, sock2 = socketpair + begin ++ # This test is for the downgrade protection mechanism of TLS1.2. ++ # This is why ctx1 bounds max_version == TLS1.2. ++ # Otherwise, this test fails when using openssl 1.1.1 (or later) that supports TLS1.3. ++ # TODO: We may need another test for TLS1.3 because it seems to have a different mechanism. + ctx1 = OpenSSL::SSL::SSLContext.new ++ ctx1.max_version = OpenSSL::SSL::TLS1_2_VERSION + s1 = OpenSSL::SSL::SSLSocket.new(sock1, ctx1) + + ctx2 = OpenSSL::SSL::SSLContext.new +-- +2.26.2 + diff --git a/ruby-2.6.0-use-larger-keys-for-SSL-webrick-tests.patch b/ruby-2.6.0-use-larger-keys-for-SSL-webrick-tests.patch new file mode 100644 index 0000000..2c82134 --- /dev/null +++ b/ruby-2.6.0-use-larger-keys-for-SSL-webrick-tests.patch @@ -0,0 +1,52 @@ +From ef6153f727d118d4e7854c0f52d3d8b0e4ed7817 Mon Sep 17 00:00:00 2001 +From: normal +Date: Mon, 3 Dec 2018 04:51:08 +0000 +Subject: [PATCH] webrick: fix tests on Debian sid/unstable with OpenSSL 1.1.1a + +OpenSSL complains abour our keys being small and weak :< +Make them big and strong with 2048-bit RSA keys and SHA256 digests + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66152 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + lib/webrick/ssl.rb | 4 ++-- + test/webrick/test_httpproxy.rb | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/webrick/ssl.rb b/lib/webrick/ssl.rb +index 8a334eaff1..d125083528 100644 +--- a/lib/webrick/ssl.rb ++++ b/lib/webrick/ssl.rb +@@ -130,7 +130,7 @@ def create_self_signed_cert(bits, cn, comment) + aki = ef.create_extension("authorityKeyIdentifier", + "keyid:always,issuer:always") + cert.add_extension(aki) +- cert.sign(rsa, OpenSSL::Digest::SHA1.new) ++ cert.sign(rsa, OpenSSL::Digest::SHA256.new) + + return [ cert, rsa ] + end +@@ -181,7 +181,7 @@ def setup_ssl_context(config) # :nodoc: + unless config[:SSLCertificate] + cn = config[:SSLCertName] + comment = config[:SSLCertComment] +- cert, key = Utils::create_self_signed_cert(1024, cn, comment) ++ cert, key = Utils::create_self_signed_cert(2048, cn, comment) + config[:SSLCertificate] = cert + config[:SSLPrivateKey] = key + end +diff --git a/test/webrick/test_httpproxy.rb b/test/webrick/test_httpproxy.rb +index 452e7b94b7..780d95937a 100644 +--- a/test/webrick/test_httpproxy.rb ++++ b/test/webrick/test_httpproxy.rb +@@ -133,7 +133,7 @@ def make_certificate(key, cn) + cert.not_after = Time.now + 3600 + ef = OpenSSL::X509::ExtensionFactory.new(cert, cert) + exts.each {|args| cert.add_extension(ef.create_extension(*args)) } +- cert.sign(key, "sha1") ++ cert.sign(key, "sha256") + return cert + end if defined?(OpenSSL::SSL) + +-- +2.26.2 + diff --git a/ruby-2.6.4-open-uri-regenerate-server-certificates-for-tests.patch b/ruby-2.6.4-open-uri-regenerate-server-certificates-for-tests.patch new file mode 100644 index 0000000..32f22a9 --- /dev/null +++ b/ruby-2.6.4-open-uri-regenerate-server-certificates-for-tests.patch @@ -0,0 +1,447 @@ +From 57bf80dc7d6ef19baf2171a55b538ed56bebb6a7 Mon Sep 17 00:00:00 2001 +From: nagachika +Date: Wed, 7 Aug 2019 12:25:24 +0000 +Subject: [PATCH] merge revision(s) 43730256e800dd8e0c5cc482e9861868590ae037: + + open-uri: Regenerate server certificates for tests + + OpenSSL 1.1.1 requires 2048 bits or more. This change will fix: + https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian/ruby-master/log/20190527T003004Z.fail.html.gz#test%2Fopen-uri + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + test/open-uri/test_ssl.rb | 341 ++++++++++++++++++++++++-------------- + 1 file changed, 217 insertions(+), 124 deletions(-) + +diff --git a/test/open-uri/test_ssl.rb b/test/open-uri/test_ssl.rb +index 948cb6a959..337139604f 100644 +--- a/test/open-uri/test_ssl.rb ++++ b/test/open-uri/test_ssl.rb +@@ -175,18 +175,18 @@ def test_proxy_cacert_dir + end if defined?(OpenSSL::SSL) + + if defined?(OpenSSL::SSL) +-# cp /etc/ssl/openssl.cnf . # I copied from OpenSSL 1.0.2h source ++# cp /etc/ssl/openssl.cnf . # I copied from OpenSSL 1.1.1b source + + # mkdir demoCA demoCA/private demoCA/newcerts + # touch demoCA/index.txt + # echo 00 > demoCA/serial +-# openssl genrsa -des3 -out demoCA/private/cakey.pem 1024 ++# openssl genrsa -des3 -out demoCA/private/cakey.pem 2048 + # openssl req -new -key demoCA/private/cakey.pem -out demoCA/careq.pem -subj "/C=JP/ST=Tokyo/O=RubyTest/CN=Ruby Test CA" + # # basicConstraints=CA:TRUE is required; the default openssl.cnf has it in [v3_ca] + # openssl ca -config openssl.cnf -extensions v3_ca -out demoCA/cacert.pem -startdate 090101000000Z -enddate 491231235959Z -batch -keyfile demoCA/private/cakey.pem -selfsign -infiles demoCA/careq.pem + + # mkdir server +-# openssl genrsa -des3 -out server/server.key 1024 ++# openssl genrsa -des3 -out server/server.key 2048 + # openssl req -new -key server/server.key -out server/csr.pem -subj "/C=JP/ST=Tokyo/O=RubyTest/CN=127.0.0.1" + # openssl ca -config openssl.cnf -startdate 090101000000Z -enddate 491231235959Z -in server/csr.pem -keyfile demoCA/private/cakey.pem -cert demoCA/cacert.pem -out server/cert.pem + +@@ -199,7 +199,7 @@ def test_proxy_cacert_dir + Data: + Version: 3 (0x2) + Serial Number: 0 (0x0) +- Signature Algorithm: sha256WithRSAEncryption ++ Signature Algorithm: sha256WithRSAEncryption + Issuer: C=JP, ST=Tokyo, O=RubyTest, CN=Ruby Test CA + Validity + Not Before: Jan 1 00:00:00 2009 GMT +@@ -207,49 +207,70 @@ def test_proxy_cacert_dir + Subject: C=JP, ST=Tokyo, O=RubyTest, CN=Ruby Test CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption +- Public-Key: (1024 bit) ++ RSA Public-Key: (2048 bit) + Modulus: +- 00:be:74:41:33:c9:1b:e1:12:78:6b:b4:52:2e:ae: +- b6:e2:1e:58:65:57:2d:cb:07:3f:91:c9:53:7a:e7: +- 2e:68:2c:0c:5d:8b:16:a7:42:4a:5c:6f:c7:aa:44: +- ff:6d:c6:d7:49:0e:b1:5d:03:5b:51:ce:d5:cc:cd: +- ab:69:cc:c2:43:76:b1:b2:30:3b:e7:f6:1f:3e:35: +- 1d:21:75:41:96:eb:84:a0:34:6f:a4:5d:70:a2:b2: +- d5:fe:b9:45:47:a1:e8:ca:e3:b7:bb:4d:37:1c:f3: +- 96:d4:2d:80:85:cd:8e:31:96:53:92:a0:fe:e4:4c: +- 16:47:5e:c8:27:32:70:a8:6b ++ 00:ad:f3:4d:5b:0b:01:54:cc:86:36:d1:93:6b:33: ++ 56:25:90:61:d6:9a:a0:f4:24:20:ee:c8:14:ab:0f: ++ 4b:89:d8:7c:bb:c0:f8:7f:fb:e9:a2:d5:1c:6b:6f: ++ dc:5c:23:b1:49:aa:2c:e8:ca:43:48:64:69:4b:8a: ++ bd:44:57:9b:14:d9:7a:b2:49:00:d6:c2:74:67:62: ++ 52:1d:a9:32:df:fe:7a:22:20:49:83:e1:cb:3d:dc: ++ 1a:2a:f0:36:20:c1:e8:c8:89:d4:51:1a:68:91:20: ++ e0:ba:67:0a:b2:6b:f8:e3:8c:f5:ee:a1:36:b1:89: ++ ec:23:b6:f2:39:a9:b9:2e:ea:de:d9:86:e5:42:11: ++ 46:ed:10:9a:90:76:44:4e:4d:49:2d:49:e8:e3:cb: ++ ff:7a:7d:80:cb:bf:c4:c3:69:ba:9c:60:4a:de:af: ++ bf:26:78:b8:fb:46:d1:37:d0:89:ba:78:93:6a:37: ++ a5:e9:58:e7:e2:e3:7d:7c:95:20:79:41:56:15:cd: ++ b2:c6:3b:e1:b7:e7:ba:47:60:9a:05:b1:07:f3:26: ++ 72:9d:3b:1b:02:18:3d:d5:de:e6:e9:30:a9:b5:8f: ++ 15:1b:40:f9:64:61:54:d3:53:e8:c4:29:4a:89:f3: ++ e5:0d:fd:16:61:ee:f2:6d:8a:45:a8:34:7e:53:46: ++ 8e:87 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: +- 71:DB:DC:BA:F6:7F:75:31:7A:ED:AB:8B:48:93:86:94:1A:FF:30:58 ++ A0:7E:0B:AD:A3:AD:37:D7:21:0B:75:6F:8A:90:5F:8C:C9:69:DF:98 + X509v3 Authority Key Identifier: +- keyid:71:DB:DC:BA:F6:7F:75:31:7A:ED:AB:8B:48:93:86:94:1A:FF:30:58 ++ keyid:A0:7E:0B:AD:A3:AD:37:D7:21:0B:75:6F:8A:90:5F:8C:C9:69:DF:98 + +- X509v3 Basic Constraints: ++ X509v3 Basic Constraints: critical + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption +- 91:1c:45:a5:c0:4e:fc:54:39:62:33:80:7d:03:c1:b8:51:f7: +- 56:83:6c:a3:15:50:cf:92:a0:77:a3:34:16:b5:30:f0:33:5a: +- be:6a:ac:17:87:70:f8:4e:4d:49:ac:8b:84:fd:e5:0f:15:d7: +- 9a:29:cc:a9:f5:97:f5:13:2a:86:3b:2d:f4:b7:b4:a2:7c:e1: +- 0e:2a:ff:91:64:31:8f:12:cc:99:bf:e1:de:8f:6f:7c:1b:e4: +- cc:56:c8:bb:85:c9:ba:df:7f:07:7a:cd:03:22:2c:b6:f8:06: +- 35:72:72:b8:52:eb:62:15:85:2b:8f:8c:bc:27:3c:8b:de:32: +- db:95 ++ 06:ea:06:02:19:9a:cb:94:a2:7e:c0:86:71:66:e7:a5:71:46: ++ a2:25:55:f5:e5:58:df:d1:91:58:e6:8a:0e:91:b3:22:4c:88: ++ 4d:5f:02:af:0f:73:65:0d:af:9a:f2:e4:36:f3:1f:e8:28:1d: ++ 9c:74:72:5b:f7:12:e8:fa:45:d6:df:e5:f1:d3:91:f4:0e:db: ++ e2:56:63:ee:82:57:6f:12:ad:d7:0d:de:5a:8c:3d:76:d2:87: ++ c9:48:1c:c4:f3:89:63:3c:c2:25:e0:dd:63:a6:4c:6c:5a:07: ++ 7b:86:78:62:86:02:a1:ef:0e:41:75:c5:d4:61:ab:c3:3b:9b: ++ 51:0b:e6:34:6d:0b:14:5a:2d:aa:d3:58:26:43:8f:4c:d7:45: ++ 73:1e:67:66:5e:f3:0c:69:70:27:a1:d5:70:f3:5a:10:98:c8: ++ 4f:8a:3b:9f:ad:8e:8d:49:8f:fb:f6:36:5d:4f:70:f9:4f:54: ++ 33:cf:a2:a6:1d:8c:61:b9:30:42:f2:49:d1:3d:a1:f1:eb:1e: ++ 78:a6:30:f8:8a:48:89:c7:3e:bd:0d:d8:72:04:a6:00:e5:62: ++ a4:13:3f:9e:b6:86:25:dc:d1:ff:3a:fc:f5:0e:e4:0e:f7:b8: ++ 66:90:fe:4f:c2:54:2a:7f:61:6e:e7:4b:bf:40:7e:75:30:02: ++ 5b:bb:91:1b + -----BEGIN CERTIFICATE----- +-MIICVDCCAb2gAwIBAgIBADANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJKUDEO ++MIIDXDCCAkSgAwIBAgIBADANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJKUDEO + MAwGA1UECAwFVG9reW8xETAPBgNVBAoMCFJ1YnlUZXN0MRUwEwYDVQQDDAxSdWJ5 + IFRlc3QgQ0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBHMQswCQYD + VQQGEwJKUDEOMAwGA1UECAwFVG9reW8xETAPBgNVBAoMCFJ1YnlUZXN0MRUwEwYD +-VQQDDAxSdWJ5IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL50 +-QTPJG+ESeGu0Ui6utuIeWGVXLcsHP5HJU3rnLmgsDF2LFqdCSlxvx6pE/23G10kO +-sV0DW1HO1czNq2nMwkN2sbIwO+f2Hz41HSF1QZbrhKA0b6RdcKKy1f65RUeh6Mrj +-t7tNNxzzltQtgIXNjjGWU5Kg/uRMFkdeyCcycKhrAgMBAAGjUDBOMB0GA1UdDgQW +-BBRx29y69n91MXrtq4tIk4aUGv8wWDAfBgNVHSMEGDAWgBRx29y69n91MXrtq4tI +-k4aUGv8wWDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBAJEcRaXATvxU +-OWIzgH0DwbhR91aDbKMVUM+SoHejNBa1MPAzWr5qrBeHcPhOTUmsi4T95Q8V15op +-zKn1l/UTKoY7LfS3tKJ84Q4q/5FkMY8SzJm/4d6Pb3wb5MxWyLuFybrffwd6zQMi +-LLb4BjVycrhS62IVhSuPjLwnPIveMtuV ++VQQDDAxSdWJ5IFRlc3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB ++AQCt801bCwFUzIY20ZNrM1YlkGHWmqD0JCDuyBSrD0uJ2Hy7wPh/++mi1Rxrb9xc ++I7FJqizoykNIZGlLir1EV5sU2XqySQDWwnRnYlIdqTLf/noiIEmD4cs93Boq8DYg ++wejIidRRGmiRIOC6Zwqya/jjjPXuoTaxiewjtvI5qbku6t7ZhuVCEUbtEJqQdkRO ++TUktSejjy/96fYDLv8TDabqcYErer78meLj7RtE30Im6eJNqN6XpWOfi4318lSB5 ++QVYVzbLGO+G357pHYJoFsQfzJnKdOxsCGD3V3ubpMKm1jxUbQPlkYVTTU+jEKUqJ ++8+UN/RZh7vJtikWoNH5TRo6HAgMBAAGjUzBRMB0GA1UdDgQWBBSgfguto6031yEL ++dW+KkF+MyWnfmDAfBgNVHSMEGDAWgBSgfguto6031yELdW+KkF+MyWnfmDAPBgNV ++HRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAG6gYCGZrLlKJ+wIZxZuel ++cUaiJVX15Vjf0ZFY5ooOkbMiTIhNXwKvD3NlDa+a8uQ28x/oKB2cdHJb9xLo+kXW ++3+Xx05H0DtviVmPugldvEq3XDd5ajD120ofJSBzE84ljPMIl4N1jpkxsWgd7hnhi ++hgKh7w5BdcXUYavDO5tRC+Y0bQsUWi2q01gmQ49M10VzHmdmXvMMaXAnodVw81oQ ++mMhPijufrY6NSY/79jZdT3D5T1Qzz6KmHYxhuTBC8knRPaHx6x54pjD4ikiJxz69 ++DdhyBKYA5WKkEz+etoYl3NH/Ovz1DuQO97hmkP5PwlQqf2Fu50u/QH51MAJbu5Eb + -----END CERTIFICATE----- + End + +@@ -258,7 +279,7 @@ def test_proxy_cacert_dir + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) +- Signature Algorithm: sha256WithRSAEncryption ++ Signature Algorithm: sha256WithRSAEncryption + Issuer: C=JP, ST=Tokyo, O=RubyTest, CN=Ruby Test CA + Validity + Not Before: Jan 1 00:00:00 2009 GMT +@@ -266,17 +287,26 @@ def test_proxy_cacert_dir + Subject: C=JP, ST=Tokyo, O=RubyTest, CN=127.0.0.1 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption +- Public-Key: (1024 bit) ++ RSA Public-Key: (2048 bit) + Modulus: +- 00:bb:bd:74:69:53:58:50:24:79:f2:eb:db:8b:97: +- e4:69:a4:dd:48:0c:40:35:62:42:b3:35:8c:96:2a: +- 62:76:98:b5:2a:e0:f8:78:33:b6:ff:f8:55:bf:44: +- 69:21:d7:b5:0e:bd:8a:dd:31:1b:88:d5:b4:5e:7a: +- 82:e0:ba:99:6c:04:76:e9:ff:e6:f8:f5:06:8e:7e: +- a4:db:db:eb:43:44:12:a7:ca:ca:2b:aa:5f:83:10: +- e2:9e:35:55:e8:e8:af:be:c8:7d:bb:c2:d4:aa:c1: +- 1c:57:0b:c0:0c:3a:1d:6e:23:a9:03:26:7c:ea:8c: +- f0:86:61:ce:f1:ff:42:c7:23 ++ 00:cb:b3:71:95:12:70:fc:db:d4:a9:a7:66:d6:d3: ++ 09:dd:06:80:19:e1:f2:d6:1e:31:b6:6b:20:75:51: ++ dc:a7:37:a9:ac:5b:57:5d:69:36:b6:de:1d:2c:f6: ++ 44:64:f8:e8:d6:f0:da:38:6a:ba:c2:b1:9e:dc:bb: ++ 79:94:e0:25:0c:ce:76:87:17:5d:79:9e:14:9e:bd: ++ 4c:0d:aa:74:10:3a:96:ef:76:82:d5:72:16:b5:c1: ++ ac:17:2d:90:83:73:5c:d7:a6:f5:36:0f:4c:55:f3: ++ 30:5d:19:dc:01:0e:f8:e6:fe:a5:ad:52:88:59:dc: ++ 4a:07:ed:a2:eb:a1:01:63:c4:8a:92:ba:06:80:9b: ++ 0d:85:f2:9f:f9:70:ac:d7:ad:f0:7a:3f:b8:92:2a: ++ 33:ca:69:d0:01:65:5d:31:38:1d:f6:1f:b2:17:07: ++ 7e:ac:88:67:a6:c4:5f:3e:93:94:61:e6:e4:49:9d: ++ ba:d4:d2:e8:e3:93:d1:66:79:c5:e3:1d:f8:5a:50: ++ 54:58:3d:04:b0:fd:65:d1:b3:8a:b5:8a:30:5f:b2: ++ dc:34:1a:14:f7:74:4c:03:29:97:63:5a:d7:de:bb: ++ eb:7f:4a:2a:90:59:c0:2b:47:09:82:8f:75:de:14: ++ 3f:bc:78:9a:69:25:80:5b:6c:a0:65:12:0d:29:61: ++ ac:f9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: +@@ -284,104 +314,167 @@ def test_proxy_cacert_dir + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: +- 7F:17:5A:58:88:96:E1:1F:44:EA:FF:AD:C6:2E:90:E2:95:32:DD:F0 ++ EC:6B:7C:79:B8:3B:11:1D:42:F3:9A:2A:CF:9A:15:59:D7:F9:D8:C6 + X509v3 Authority Key Identifier: +- keyid:71:DB:DC:BA:F6:7F:75:31:7A:ED:AB:8B:48:93:86:94:1A:FF:30:58 ++ keyid:A0:7E:0B:AD:A3:AD:37:D7:21:0B:75:6F:8A:90:5F:8C:C9:69:DF:98 + + Signature Algorithm: sha256WithRSAEncryption +- 1c:80:02:67:f0:4e:a8:5a:6a:73:9c:de:75:ad:7d:2e:e9:ce: +- c3:2e:cd:70:b4:21:d9:42:0d:7c:0e:77:9e:97:91:13:02:77: +- 4a:cd:f6:fc:26:3d:42:2e:08:85:05:10:df:3a:5f:f0:77:85: +- 44:29:41:dd:03:6b:eb:e7:c8:89:8e:d1:57:a8:ac:43:c8:85: +- c3:95:64:9f:a5:6e:e9:2e:6e:06:45:21:36:ec:d5:79:f5:0e: +- a8:53:b5:f7:02:b0:59:12:e3:ae:73:25:fd:18:ab:23:b2:fc: +- a9:f9:60:e5:a7:d8:ba:0f:db:be:17:81:25:90:fd:7a:21:cb: +- fa:8b ++ 29:14:db:71:e9:a0:86:f8:cc:4d:e4:8a:76:78:a7:ff:4e:94: ++ b4:4d:92:dc:57:9a:52:64:46:27:15:8b:4f:2a:18:a7:0d:fc: ++ d2:75:ce:4e:49:97:0b:46:71:57:23:e3:a5:c0:c5:71:94:fc: ++ f2:1d:3b:06:93:82:03:59:56:d4:fb:09:06:08:b4:97:50:33: ++ cf:58:89:dd:91:31:07:26:9a:7e:7f:8d:71:de:09:dc:4f:e5: ++ 6b:a3:10:71:d4:50:24:43:a0:1c:f5:2a:d9:1a:fb:e3:d6:f1: ++ bc:6b:42:67:16:b4:3b:31:f4:ec:03:7d:78:e2:64:16:57:6d: ++ ba:7c:0c:e1:14:b2:7c:75:4e:2b:09:3e:86:e4:aa:cc:7e:5c: ++ 2b:bd:8d:26:4d:49:36:74:86:fe:c5:a6:15:4a:af:e8:b4:4e: ++ d5:f2:e1:59:c2:fb:7e:c3:c4:f1:63:d8:c2:b0:9a:ae:31:96: ++ 90:c3:09:d0:ce:2e:31:90:d7:83:dd:ac:31:cc:f7:87:41:08: ++ 92:33:28:52:fa:2d:9e:ad:ae:6a:9f:c3:be:ce:c1:a6:e4:16: ++ 2f:69:34:40:86:b6:10:21:0e:31:69:81:9e:fc:fd:c3:06:25: ++ 65:37:d3:d9:4a:20:84:aa:e7:0e:60:7c:bf:3f:88:67:ac:e5: ++ 8c:e0:61:d6 + -----BEGIN CERTIFICATE----- +-MIICfDCCAeWgAwIBAgIBATANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJKUDEO ++MIIDgTCCAmmgAwIBAgIBATANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJKUDEO + MAwGA1UECAwFVG9reW8xETAPBgNVBAoMCFJ1YnlUZXN0MRUwEwYDVQQDDAxSdWJ5 + IFRlc3QgQ0EwHhcNMDkwMTAxMDAwMDAwWhcNNDkxMjMxMjM1OTU5WjBEMQswCQYD + VQQGEwJKUDEOMAwGA1UECAwFVG9reW8xETAPBgNVBAoMCFJ1YnlUZXN0MRIwEAYD +-VQQDDAkxMjcuMC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALu9dGlT +-WFAkefLr24uX5Gmk3UgMQDViQrM1jJYqYnaYtSrg+Hgztv/4Vb9EaSHXtQ69it0x +-G4jVtF56guC6mWwEdun/5vj1Bo5+pNvb60NEEqfKyiuqX4MQ4p41Vejor77IfbvC +-1KrBHFcLwAw6HW4jqQMmfOqM8IZhzvH/QscjAgMBAAGjezB5MAkGA1UdEwQCMAAw +-LAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0G +-A1UdDgQWBBR/F1pYiJbhH0Tq/63GLpDilTLd8DAfBgNVHSMEGDAWgBRx29y69n91 +-MXrtq4tIk4aUGv8wWDANBgkqhkiG9w0BAQsFAAOBgQAcgAJn8E6oWmpznN51rX0u +-6c7DLs1wtCHZQg18Dneel5ETAndKzfb8Jj1CLgiFBRDfOl/wd4VEKUHdA2vr58iJ +-jtFXqKxDyIXDlWSfpW7pLm4GRSE27NV59Q6oU7X3ArBZEuOucyX9GKsjsvyp+WDl +-p9i6D9u+F4ElkP16Icv6iw== ++VQQDDAkxMjcuMC4wLjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDL ++s3GVEnD829Spp2bW0wndBoAZ4fLWHjG2ayB1UdynN6msW1ddaTa23h0s9kRk+OjW ++8No4arrCsZ7cu3mU4CUMznaHF115nhSevUwNqnQQOpbvdoLVcha1wawXLZCDc1zX ++pvU2D0xV8zBdGdwBDvjm/qWtUohZ3EoH7aLroQFjxIqSugaAmw2F8p/5cKzXrfB6 ++P7iSKjPKadABZV0xOB32H7IXB36siGemxF8+k5Rh5uRJnbrU0ujjk9FmecXjHfha ++UFRYPQSw/WXRs4q1ijBfstw0GhT3dEwDKZdjWtfeu+t/SiqQWcArRwmCj3XeFD+8 ++eJppJYBbbKBlEg0pYaz5AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgEN ++BB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTsa3x5 ++uDsRHULzmirPmhVZ1/nYxjAfBgNVHSMEGDAWgBSgfguto6031yELdW+KkF+MyWnf ++mDANBgkqhkiG9w0BAQsFAAOCAQEAKRTbcemghvjMTeSKdnin/06UtE2S3FeaUmRG ++JxWLTyoYpw380nXOTkmXC0ZxVyPjpcDFcZT88h07BpOCA1lW1PsJBgi0l1Azz1iJ ++3ZExByaafn+Ncd4J3E/la6MQcdRQJEOgHPUq2Rr749bxvGtCZxa0OzH07AN9eOJk ++FldtunwM4RSyfHVOKwk+huSqzH5cK72NJk1JNnSG/sWmFUqv6LRO1fLhWcL7fsPE ++8WPYwrCarjGWkMMJ0M4uMZDXg92sMcz3h0EIkjMoUvotnq2uap/Dvs7BpuQWL2k0 ++QIa2ECEOMWmBnvz9wwYlZTfT2UoghKrnDmB8vz+IZ6zljOBh1g== + -----END CERTIFICATE----- + End + + TestOpenURISSL::SERVER_KEY = <<'End' +-Private-Key: (1024 bit) ++RSA Private-Key: (2048 bit, 2 primes) + modulus: +- 00:bb:bd:74:69:53:58:50:24:79:f2:eb:db:8b:97: +- e4:69:a4:dd:48:0c:40:35:62:42:b3:35:8c:96:2a: +- 62:76:98:b5:2a:e0:f8:78:33:b6:ff:f8:55:bf:44: +- 69:21:d7:b5:0e:bd:8a:dd:31:1b:88:d5:b4:5e:7a: +- 82:e0:ba:99:6c:04:76:e9:ff:e6:f8:f5:06:8e:7e: +- a4:db:db:eb:43:44:12:a7:ca:ca:2b:aa:5f:83:10: +- e2:9e:35:55:e8:e8:af:be:c8:7d:bb:c2:d4:aa:c1: +- 1c:57:0b:c0:0c:3a:1d:6e:23:a9:03:26:7c:ea:8c: +- f0:86:61:ce:f1:ff:42:c7:23 ++ 00:cb:b3:71:95:12:70:fc:db:d4:a9:a7:66:d6:d3: ++ 09:dd:06:80:19:e1:f2:d6:1e:31:b6:6b:20:75:51: ++ dc:a7:37:a9:ac:5b:57:5d:69:36:b6:de:1d:2c:f6: ++ 44:64:f8:e8:d6:f0:da:38:6a:ba:c2:b1:9e:dc:bb: ++ 79:94:e0:25:0c:ce:76:87:17:5d:79:9e:14:9e:bd: ++ 4c:0d:aa:74:10:3a:96:ef:76:82:d5:72:16:b5:c1: ++ ac:17:2d:90:83:73:5c:d7:a6:f5:36:0f:4c:55:f3: ++ 30:5d:19:dc:01:0e:f8:e6:fe:a5:ad:52:88:59:dc: ++ 4a:07:ed:a2:eb:a1:01:63:c4:8a:92:ba:06:80:9b: ++ 0d:85:f2:9f:f9:70:ac:d7:ad:f0:7a:3f:b8:92:2a: ++ 33:ca:69:d0:01:65:5d:31:38:1d:f6:1f:b2:17:07: ++ 7e:ac:88:67:a6:c4:5f:3e:93:94:61:e6:e4:49:9d: ++ ba:d4:d2:e8:e3:93:d1:66:79:c5:e3:1d:f8:5a:50: ++ 54:58:3d:04:b0:fd:65:d1:b3:8a:b5:8a:30:5f:b2: ++ dc:34:1a:14:f7:74:4c:03:29:97:63:5a:d7:de:bb: ++ eb:7f:4a:2a:90:59:c0:2b:47:09:82:8f:75:de:14: ++ 3f:bc:78:9a:69:25:80:5b:6c:a0:65:12:0d:29:61: ++ ac:f9 + publicExponent: 65537 (0x10001) + privateExponent: +- 00:af:3a:ec:17:0a:f5:d9:07:d2:d3:4c:15:c5:3b: +- 66:b4:bc:6e:d5:ba:a9:8b:aa:45:3b:63:f5:ee:8b: +- 6d:0f:e9:04:e0:1a:cf:8f:d2:25:32:d1:a5:a7:3a: +- c1:2e:17:5a:25:82:00:c4:e7:fb:1d:42:ea:71:6c: +- c4:0f:e1:db:23:ff:1e:d6:c8:d6:60:ca:2d:06:fc: +- 54:3c:03:d4:09:96:bb:38:7a:22:a1:61:2c:f7:d0: +- d0:90:6c:9f:61:ba:61:30:5a:aa:64:ad:43:3a:53: +- 38:e8:ba:cc:8c:51:3e:68:3e:3a:6a:0f:5d:5d:e0: +- d6:df:f2:54:93:d3:14:22:a1 ++ 12:be:d5:b2:01:3b:72:99:8c:4d:7c:81:43:3d:b2: ++ 87:ab:84:78:5d:49:aa:98:a6:bc:81:c9:3f:e2:a3: ++ aa:a3:bd:b2:85:c9:59:68:48:47:b5:d2:fb:83:42: ++ 32:04:91:f0:cd:c3:57:33:c3:32:0d:84:70:0d:b4: ++ 97:95:b4:f3:23:c0:d6:97:b8:db:6b:47:bc:7f:f1: ++ 12:c4:df:df:6a:74:df:5e:89:95:b8:e5:0c:1e:e1: ++ 86:54:84:1b:04:af:c3:8c:b2:be:21:d4:45:88:96: ++ a7:ca:ac:6b:50:84:69:45:7f:db:9e:5f:bb:dd:40: ++ d6:cf:f0:91:3c:84:d3:38:65:c9:15:f7:9e:37:aa: ++ 1a:2e:bc:16:b6:95:be:bc:af:45:76:ba:ad:99:f6: ++ ef:6a:e8:fd:f0:31:89:19:c4:04:67:a1:ec:c4:79: ++ 59:08:77:ab:0b:65:88:88:02:b1:38:5c:80:4e:27: ++ 78:b2:a5:bd:b5:ad:d5:9c:4c:ea:ad:db:05:56:25: ++ 70:28:da:22:fb:d8:de:8c:3b:78:fe:3e:cf:ed:1b: ++ f9:97:c6:b6:4a:bf:60:08:8f:dc:85:5e:b1:49:ab: ++ 87:8b:68:72:f4:6a:3f:bc:db:a3:6c:f7:e8:b0:15: ++ bb:4b:ba:37:49:a2:d1:7c:f8:4f:1b:05:11:22:d9: ++ 81 + prime1: +- 00:e8:ec:11:fe:e6:2b:23:21:29:d5:40:a6:11:ec: +- 4c:ae:4d:08:2a:71:18:ac:d1:3e:40:2f:12:41:59: +- 12:09:e2:f7:c2:d7:6b:0a:96:0a:06:e3:90:6a:4e: +- b2:eb:25:b7:09:68:e9:13:ab:d0:5a:29:7a:e4:72: +- 1a:ee:46:a0:8b ++ 00:fb:d2:cb:14:61:00:c1:7a:83:ba:fe:79:97:a2: ++ 4d:5a:ea:40:78:96:6e:d2:be:71:5b:c6:2c:1f:c9: ++ 18:48:6b:ae:20:86:87:b5:08:0b:17:69:ca:93:cd: ++ 00:36:22:51:7b:d5:2d:8c:0c:0e:de:bc:86:a8:07: ++ 0e:c5:57:e4:df:be:ed:7d:cc:b1:a4:d6:a8:2b:00: ++ 65:2a:69:30:5e:dc:6d:6d:c4:c8:7e:20:34:eb:6f: ++ 5e:cf:b3:b8:2e:8d:56:31:44:a8:17:ea:be:65:19: ++ ff:da:14:e0:0c:73:56:14:08:47:4c:5b:79:51:74: ++ 5d:bc:e7:fe:01:2f:55:27:69 + prime2: +- 00:ce:57:5e:31:e9:c9:a8:5b:1f:55:af:67:e2:49: +- 2a:af:90:b6:02:c0:32:2f:ca:ae:1e:de:47:81:73: +- a8:f8:37:53:70:93:24:62:77:d4:b8:80:30:9f:65: +- 26:20:46:ae:5a:65:6e:6d:af:68:4c:8d:e8:3c:f3: +- d1:d1:d9:6e:c9 ++ 00:cf:14:54:47:bb:5f:5d:d6:2b:2d:ed:a6:8a:6f: ++ 36:fc:47:5e:9f:84:ae:aa:1f:f8:44:50:91:15:f5: ++ ed:9d:29:d9:2b:2a:19:66:56:2e:96:15:b5:8e:a9: ++ 7f:89:27:21:b5:57:55:7e:2a:c5:8c:93:fe:f6:0a: ++ a5:17:15:91:91:b3:7d:35:1a:d5:9a:2e:b8:0d:ad: ++ e6:97:6d:83:a3:27:29:ee:00:74:ef:57:34:f3:07: ++ ad:12:43:37:0c:5c:b7:26:34:bc:4e:3a:43:65:6b: ++ 0c:b8:23:ac:77:fd:b2:23:eb:7b:65:70:f6:96:c4: ++ 17:2c:aa:24:b8:a5:5e:b7:11 + exponent1: +- 03:f1:02:b8:f2:82:26:5d:08:4d:30:83:de:e7:c5: +- c0:69:53:4b:0c:90:e3:53:c3:1e:e8:ed:01:28:15: +- b3:0f:21:2c:2d:e3:04:d1:d7:27:98:b0:37:ec:4f: +- 00:c5:a9:9c:42:27:37:8a:ff:c2:96:d3:1a:8c:87: +- c2:22:75:d3 ++ 00:92:32:ae:f4:05:dd:0a:76:b6:43:b9:b9:9d:ee: ++ fc:39:ec:05:c1:fc:94:1a:85:b6:0a:31:e3:2c:10: ++ f3:a8:17:db:df:c6:3a:c3:3f:08:31:6f:99:cc:75: ++ 17:ca:55:e2:38:a2:6a:ef:03:91:1e:7f:15:2e:37: ++ ea:bb:67:6b:d8:fa:5f:a6:c9:4f:d9:03:46:5e:b0: ++ bc:0b:03:46:b1:cc:07:3b:d3:23:13:16:5f:a2:cf: ++ e5:9b:70:1b:5d:eb:70:3e:ea:3d:2c:a5:7c:23:f6: ++ 14:33:e8:2a:ab:0f:ca:c9:96:84:ce:2f:cd:1f:1d: ++ 0f:ce:bc:61:1b:0e:ff:c1:01 + exponent2: +- 6f:17:32:ab:84:c7:01:51:2d:e9:9f:ea:3a:36:52: +- 38:fb:9c:42:96:df:6e:43:9c:c3:19:c1:3d:bc:db: +- 77:e7:b1:90:a6:67:ac:6b:ff:a6:e5:bd:47:d3:d9: +- 56:ff:36:d7:8c:4c:8b:d9:28:3a:2f:1c:9d:d4:57: +- 5e:b7:c5:a1 ++ 00:9e:0b:f3:03:48:73:d1:e7:9a:cf:13:f9:ae:e0: ++ 91:03:dc:e8:d0:30:f1:2a:30:fa:48:11:81:9a:54: ++ 37:c5:62:e2:37:fa:8a:a6:3b:92:94:c3:fe:ec:e2: ++ 5a:cf:70:09:5f:21:47:c3:e2:9b:21:de:f6:92:0c: ++ af:d1:bd:89:7b:bd:95:0b:49:ee:cb:1d:6b:26:2d: ++ 9a:b7:ea:42:b4:ec:38:29:49:39:f6:4e:05:c0:93: ++ 14:39:c3:09:29:ab:3d:b1:b0:40:24:28:7d:b5:d3: ++ 0d:43:21:1f:09:f9:9b:d3:a4:6f:6a:8d:db:f6:57: ++ b5:24:46:bb:7e:1d:e0:fb:31 + coefficient: +- 45:50:47:66:56:e9:21:d9:40:0e:af:3f:f2:05:77: +- ab:e7:08:40:97:88:2a:51:b3:7e:86:b0:b2:03:2e: +- 6d:36:3f:46:42:97:7d:5a:a2:93:6c:05:c2:8b:8b: +- 2d:af:d5:7d:75:e9:70:f0:2d:21:e3:b9:cf:4d:9a: +- c4:97:e2:79 ++ 10:93:1d:c8:33:a5:c1:d3:84:6a:22:68:e5:60:cc: ++ 9c:27:0a:52:0b:58:a3:0c:83:f4:f4:46:09:0c:a1: ++ 41:a6:ea:bf:80:9d:0e:5d:d8:3d:25:00:c5:a1:35: ++ 7a:8c:ea:95:16:94:c3:7c:8f:2b:e0:53:ea:66:ae: ++ 19:be:55:04:3d:ee:e2:4b:a8:69:1b:7e:d8:09:7f: ++ ed:7c:ee:95:88:10:dc:4b:5b:bf:81:a4:e8:dc:7e: ++ 4f:e5:c3:90:c4:e5:5a:90:10:32:d6:08:b5:1f:5d: ++ 09:18:d8:44:28:e4:c4:c7:07:75:9b:9b:b3:80:86: ++ 68:9d:fe:68:f3:4d:db:66 ++writing RSA key + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- + End + +-- +2.26.2 + diff --git a/ruby-2.7.0-Initialize-ABRT-hook.patch b/ruby-2.7.0-Initialize-ABRT-hook.patch deleted file mode 100644 index 86d97fc..0000000 --- a/ruby-2.7.0-Initialize-ABRT-hook.patch +++ /dev/null @@ -1,86 +0,0 @@ -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. - -The ABRT hook used to be initialized by preludes via patches [[1], [2]]. -Unfortunately, due to [[3]] and especially since [[4]], this would -require boostrapping [[5]]. - -To keep the things simple for now, load the ABRT hook via C. - -[1]: https://bugs.ruby-lang.org/issues/8566 -[2]: https://bugs.ruby-lang.org/issues/15306 -[3]: https://bugs.ruby-lang.org/issues/16254 -[4]: https://github.com/ruby/ruby/pull/2735 -[5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/ ---- - abrt.c | 12 ++++++++++++ - common.mk | 1 + - ruby.c | 4 ++++ - spec/ruby/core/kernel/require_spec.rb | 2 ++ - 4 files changed, 19 insertions(+) - create mode 100644 abrt.c - -diff --git a/abrt.c b/abrt.c -new file mode 100644 -index 0000000000..e99cb432e6 ---- /dev/null -+++ b/abrt.c -@@ -0,0 +1,12 @@ -+#include "internal.h" -+ -+void -+Init_abrt(void) -+{ -+ rb_eval_string( -+ " begin\n" -+ " require 'abrt'\n" -+ " rescue LoadError\n" -+ " end\n" -+ ); -+} -diff --git a/common.mk b/common.mk -index 08fee9119a..dae7d9dc00 100644 ---- a/common.mk -+++ b/common.mk -@@ -116,6 +116,7 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \ - prism_init.$(OBJEXT) - - COMMONOBJS = \ -+ abrt.$(OBJEXT) \ - array.$(OBJEXT) \ - ast.$(OBJEXT) \ - bignum.$(OBJEXT) \ -diff --git a/ruby.c b/ruby.c -index b00fc1502d..32b88f7496 100644 ---- a/ruby.c -+++ b/ruby.c -@@ -1773,10 +1773,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) - - void Init_builtin_features(void); - -+/* abrt.c */ -+void Init_abrt(void); -+ - static void - ruby_init_prelude(void) - { - Init_builtin_features(); -+ Init_abrt(); - } - - 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 60d17242fe..a8f93b0db4 100644 ---- a/spec/ruby/core/kernel/require_spec.rb -+++ b/spec/ruby/core/kernel/require_spec.rb -@@ -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 windows_31j] - features.reject! { |feature| feature.end_with?('-fake') } diff --git a/ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch b/ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch new file mode 100644 index 0000000..b7ea046 --- /dev/null +++ b/ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch @@ -0,0 +1,34 @@ +From 9b42fce32bff25e0569581f76f532b9d57865aef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Mon, 27 Jul 2020 14:56:05 +0200 +Subject: [PATCH] Timeout the test_bug_reporter_add witout raising error. + +While timeouting the threads might be still good idea, it does not seems +the timeout impacts the TestBugReporter#test_bug_reporter_add result, +because the output of the child process has been already collected +earlier. + +It seems that when the system is under heavy load, the thread might not +be sheduled to finish its processing. Even finishing the child process +might take tens of seconds and therefore the test case finish might take +a while. +--- + test/-ext-/bug_reporter/test_bug_reporter.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/-ext-/bug_reporter/test_bug_reporter.rb b/test/-ext-/bug_reporter/test_bug_reporter.rb +index 628fcd0340..2c677cc8a7 100644 +--- a/test/-ext-/bug_reporter/test_bug_reporter.rb ++++ b/test/-ext-/bug_reporter/test_bug_reporter.rb +@@ -17,7 +17,7 @@ def test_bug_reporter_add + args = ["--disable-gems", "-r-test-/bug_reporter", + "-C", tmpdir] + stdin = "register_sample_bug_reporter(12345); Process.kill :SEGV, $$" +- assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT") ++ assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT", timeout_error: nil) + ensure + FileUtils.rm_rf(tmpdir) if tmpdir + end +-- +2.27.0 + diff --git a/ruby-2.7.2-psych-fix-yaml-tests.patch b/ruby-2.7.2-psych-fix-yaml-tests.patch new file mode 100644 index 0000000..e556f0a --- /dev/null +++ b/ruby-2.7.2-psych-fix-yaml-tests.patch @@ -0,0 +1,162 @@ +From 3c55d93cf68b1a969b90b306de4dd8b88d74a2f2 Mon Sep 17 00:00:00 2001 +From: nagachika +Date: Sat, 13 Jun 2020 11:29:51 +0900 +Subject: [PATCH] merge revision(s) 7e289cdf3fed588b2d5a6973e29f9ff95cb8d76c: + [Backport #16949] + + [ruby/psych] Fixing compatibility with libyaml 0.2.5 + + The main issue is that commas aren't allowed in local tags. libyaml + was updated to follow the spec, and our tests were out of date. + + See: https://github.com/yaml/libyaml/issues/196 + + https://github.com/ruby/psych/commit/3f5e520fd3 +--- + test/psych/test_nil.rb | 4 ++-- + test/psych/test_psych.rb | 17 +++++++---------- + test/psych/test_yaml.rb | 24 ++++++++++++------------ + version.h | 4 ++-- + 4 files changed, 23 insertions(+), 26 deletions(-) + +diff --git a/test/psych/test_nil.rb b/test/psych/test_nil.rb +index 910a2e697def..bcbbcb9c9397 100644 +--- a/test/psych/test_nil.rb ++++ b/test/psych/test_nil.rb +@@ -5,13 +5,13 @@ module Psych + class TestNil < TestCase + def test_nil + yml = Psych.dump nil +- assert_match(/--- \n(?:\.\.\.\n)?/, yml) ++ assert_match(/---[ ]?\n(?:\.\.\.\n)?/, yml) + assert_nil Psych.load(yml) + end + + def test_array_nil + yml = Psych.dump [nil] +- assert_equal "---\n- \n", yml ++ assert_match(/---\n-[ ]?\n/, yml) + assert_equal [nil], Psych.load(yml) + end + +diff --git a/test/psych/test_psych.rb b/test/psych/test_psych.rb +index eeadc864ef4e..e557feffb76a 100644 +--- a/test/psych/test_psych.rb ++++ b/test/psych/test_psych.rb +@@ -121,17 +121,17 @@ def test_add_builtin_type + + def test_domain_types + got = nil +- Psych.add_domain_type 'foo.bar,2002', 'foo' do |type, val| ++ Psych.add_domain_type 'foo.bar/2002', 'foo' do |type, val| + got = val + end + +- Psych.load('--- !foo.bar,2002/foo hello') ++ Psych.load('--- !foo.bar/2002:foo hello') + assert_equal 'hello', got + +- Psych.load("--- !foo.bar,2002/foo\n- hello\n- world") ++ Psych.load("--- !foo.bar/2002:foo\n- hello\n- world") + assert_equal %w{ hello world }, got + +- Psych.load("--- !foo.bar,2002/foo\nhello: world") ++ Psych.load("--- !foo.bar/2002:foo\nhello: world") + assert_equal({ 'hello' => 'world' }, got) + end + +@@ -170,16 +170,13 @@ def test_callbacks + types = [] + appender = lambda { |*args| types << args } + +- Psych.add_builtin_type('foo', &appender) +- Psych.add_domain_type('example.com,2002', 'foo', &appender) ++ Psych.add_domain_type('example.com:2002', 'foo', &appender) + Psych.load <<-eoyml +-- !tag:yaml.org,2002:foo bar +-- !tag:example.com,2002:foo bar ++- !tag:example.com:2002:foo bar + eoyml + + assert_equal [ +- ["tag:yaml.org,2002:foo", "bar"], +- ["tag:example.com,2002:foo", "bar"] ++ ["tag:example.com:2002:foo", "bar"] + ], types + end + +diff --git a/test/psych/test_yaml.rb b/test/psych/test_yaml.rb +index 5fa759c981b2..0dfd60f89434 100644 +--- a/test/psych/test_yaml.rb ++++ b/test/psych/test_yaml.rb +@@ -617,11 +617,11 @@ def test_spec_domain_prefix + raise ArgumentError, "Not a Hash in domain.tld,2002/invoice: " + val.inspect + end + } +- Psych.add_domain_type( "domain.tld,2002", 'invoice', &customer_proc ) +- Psych.add_domain_type( "domain.tld,2002", 'customer', &customer_proc ) ++ Psych.add_domain_type( "domain.tld/2002", 'invoice', &customer_proc ) ++ Psych.add_domain_type( "domain.tld/2002", 'customer', &customer_proc ) + assert_parse_only( { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } }, <7, "center"=>{"x"=>73, "y"=>129}, "TYPE"=>"Shape: graph/circle"}, {"finish"=>{"x"=>89, "y"=>102}, "TYPE"=>"Shape: graph/line", "start"=>{"x"=>73, "y"=>129}}, {"TYPE"=>"Shape: graph/text", "value"=>"Pretty vector drawing.", "start"=>{"x"=>73, "y"=>129}, "color"=>16772795}, "Shape Container"]], < +Date: Thu, 23 Jan 2020 15:33:42 +0900 +Subject: [PATCH 1/2] brace the fact that lchmod(2) can EOPNOTSUPP + +Musl libc has this function as a tiny wrapper of fchmodat(3posix). On +the other hand Linux kernel does not support changing modes of a symlink. +The operation always fails with EOPNOTSUPP. This fchmodat behaviour is +defined in POSIX. We have to take care of such exceptions. +--- + lib/fileutils.rb | 3 ++- + test/pathname/test_pathname.rb | 2 +- + test/ruby/test_notimp.rb | 19 ++++++++++++------- + 3 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/lib/fileutils.rb b/lib/fileutils.rb +index f56d7f9cb9..1a02d5435e 100644 +--- a/lib/fileutils.rb ++++ b/lib/fileutils.rb +@@ -1242,6 +1242,7 @@ def chmod(mode) + else + File.chmod mode, path() + end ++ rescue Errno::EOPNOTSUPP + end + + def chown(uid, gid) +@@ -1317,7 +1318,7 @@ def copy_metadata(path) + if st.symlink? + begin + File.lchmod mode, path +- rescue NotImplementedError ++ rescue NotImplementedError, Errno::EOPNOTSUPP + end + else + File.chmod mode, path +diff --git a/test/pathname/test_pathname.rb b/test/pathname/test_pathname.rb +index 8a72b8026d..e381d3fa58 100644 +--- a/test/pathname/test_pathname.rb ++++ b/test/pathname/test_pathname.rb +@@ -823,7 +823,7 @@ def test_lchmod + old = path.lstat.mode + begin + path.lchmod(0444) +- rescue NotImplementedError ++ rescue NotImplementedError, Errno::EOPNOTSUPP + next + end + assert_equal(0444, path.lstat.mode & 0777) +diff --git a/test/ruby/test_notimp.rb b/test/ruby/test_notimp.rb +index ddebb657bf..daa5a82d7b 100644 +--- a/test/ruby/test_notimp.rb ++++ b/test/ruby/test_notimp.rb +@@ -13,11 +13,11 @@ def test_respond_to_fork + + def test_respond_to_lchmod + assert_include(File.methods, :lchmod) +- if /linux/ =~ RUBY_PLATFORM +- assert_equal(false, File.respond_to?(:lchmod)) +- end +- if /freebsd/ =~ RUBY_PLATFORM ++ case RUBY_PLATFORM ++ when /freebsd/, /linux-musl/ + assert_equal(true, File.respond_to?(:lchmod)) ++ when /linux/ ++ assert_equal(false, File.respond_to?(:lchmod)) + end + end + +@@ -57,9 +57,14 @@ def test_call_lchmod + File.open(f, "w") {} + File.symlink f, g + newmode = 0444 +- File.lchmod newmode, "#{d}/g" +- snew = File.lstat(g) +- assert_equal(newmode, snew.mode & 0777) ++ begin ++ File.lchmod newmode, "#{d}/g" ++ rescue Errno::EOPNOTSUPP ++ skip $! ++ else ++ snew = File.lstat(g) ++ assert_equal(newmode, snew.mode & 0777) ++ end + } + end + end +-- +2.26.2 + diff --git a/ruby-2.8.0-Moved-not-implemented-method-tests.patch b/ruby-2.8.0-Moved-not-implemented-method-tests.patch new file mode 100644 index 0000000..72d09bc --- /dev/null +++ b/ruby-2.8.0-Moved-not-implemented-method-tests.patch @@ -0,0 +1,128 @@ +From 5400fc3c67446e2f7f35ea317c596e71f0cb1ca4 Mon Sep 17 00:00:00 2001 +From: Nobuyoshi Nakada +Date: Fri, 28 Feb 2020 21:15:37 +0900 +Subject: [PATCH 2/2] Moved not-implemented method tests [Bug #16662] + +Test not-implemented method with the dedicated methods, instead of +platform dependent features. +--- + test/-ext-/test_notimplement.rb | 7 +++ + test/ruby/test_notimp.rb | 90 --------------------------------- + 2 files changed, 7 insertions(+), 90 deletions(-) + delete mode 100644 test/ruby/test_notimp.rb + +diff --git a/test/-ext-/test_notimplement.rb b/test/-ext-/test_notimplement.rb +index 0eba7bdaf8..be8c3623cc 100644 +--- a/test/-ext-/test_notimplement.rb ++++ b/test/-ext-/test_notimplement.rb +@@ -10,6 +10,11 @@ def test_funcall_notimplement + end + + def test_respond_to ++ assert_include(Bug.methods(false), :notimplement) + assert_not_respond_to(Bug, :notimplement) + end ++ ++ def test_method_inspect_notimplement ++ assert_match(/not-implemented/, Bug.method(:notimplement).inspect) ++ end + end +diff --git a/test/ruby/test_notimp.rb b/test/ruby/test_notimp.rb +deleted file mode 100644 +index daa5a82d7b..0000000000 +--- a/test/ruby/test_notimp.rb ++++ /dev/null +@@ -1,90 +0,0 @@ +-# frozen_string_literal: false +-require 'test/unit' +-require 'timeout' +-require 'tmpdir' +- +-class TestNotImplement < Test::Unit::TestCase +- def test_respond_to_fork +- assert_include(Process.methods, :fork) +- if /linux/ =~ RUBY_PLATFORM +- assert_equal(true, Process.respond_to?(:fork)) +- end +- end +- +- def test_respond_to_lchmod +- assert_include(File.methods, :lchmod) +- case RUBY_PLATFORM +- when /freebsd/, /linux-musl/ +- assert_equal(true, File.respond_to?(:lchmod)) +- when /linux/ +- assert_equal(false, File.respond_to?(:lchmod)) +- end +- end +- +- def test_call_fork +- GC.start +- pid = nil +- ps = +- case RUBY_PLATFORM +- when /linux/ # assume Linux Distribution uses procps +- proc {`ps -eLf #{pid}`} +- when /freebsd/ +- proc {`ps -lH #{pid}`} +- when /darwin/ +- proc {`ps -lM #{pid}`} +- else +- proc {`ps -l #{pid}`} +- end +- assert_nothing_raised(Timeout::Error, ps) do +- Timeout.timeout(EnvUtil.apply_timeout_scale(5)) { +- pid = fork {} +- Process.wait pid +- pid = nil +- } +- end +- ensure +- if pid +- Process.kill(:KILL, pid) +- Process.wait pid +- end +- end if Process.respond_to?(:fork) +- +- def test_call_lchmod +- if File.respond_to?(:lchmod) +- Dir.mktmpdir {|d| +- f = "#{d}/f" +- g = "#{d}/g" +- File.open(f, "w") {} +- File.symlink f, g +- newmode = 0444 +- begin +- File.lchmod newmode, "#{d}/g" +- rescue Errno::EOPNOTSUPP +- skip $! +- else +- snew = File.lstat(g) +- assert_equal(newmode, snew.mode & 0777) +- end +- } +- end +- end +- +- def test_method_inspect_fork +- m = Process.method(:fork) +- if Process.respond_to?(:fork) +- assert_not_match(/not-implemented/, m.inspect) +- else +- assert_match(/not-implemented/, m.inspect) +- end +- end +- +- def test_method_inspect_lchmod +- m = File.method(:lchmod) +- if File.respond_to?(:lchmod) +- assert_not_match(/not-implemented/, m.inspect) +- else +- assert_match(/not-implemented/, m.inspect) +- end +- end +- +-end +-- +2.26.2 + diff --git a/ruby-3.3.0-Disable-syntax-suggest-test-case.patch b/ruby-3.3.0-Disable-syntax-suggest-test-case.patch deleted file mode 100644 index 09d11f9..0000000 --- a/ruby-3.3.0-Disable-syntax-suggest-test-case.patch +++ /dev/null @@ -1,23 +0,0 @@ -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. - -This requires internet connection. ---- - common.mk | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/common.mk b/common.mk -index dae7d9dc00..111e859d1b 100644 ---- a/common.mk -+++ b/common.mk -@@ -1619,8 +1619,6 @@ no-test-bundled-gems-spec: - - test-syntax-suggest: - --check: $(DOT_WAIT) $(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest -- - test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck - no-test-bundler-precheck: - yes-test-bundler-precheck: main $(arch)-fake.rb diff --git a/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 deleted file mode 100644 index 8238b58..0000000 --- a/ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch +++ /dev/null @@ -1,117 +0,0 @@ -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 deleted file mode 100644 index ec8ac11..0000000 --- a/ruby.rpmlintrc +++ /dev/null @@ -1,59 +0,0 @@ -# Keep matching patterns enough not to hide unintended errors and warnings. - -# There is no way to implement this with `%{SOURCE0}` without `%{_sourcedir}`. -# The order in the .spec file could be possibly different. -addFilter(r'ruby\.(spec|src):20: E: use-of-RPM_SOURCE_DIR$') - -# The used version is not obvious. -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-build_assert\)$') -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-check_type\)$') -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-container_of\)$') -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-list\)$') - -# 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 -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$') - -# `gethostbyname` is part of deprecated Ruby API. There is also request to drop the API altogether: -# https://bugs.ruby-lang.org/issues/13097 -# https://bugs.ruby-lang.org/issues/17944 -addFilter(r'^ruby-libs\.\w+: W: binary-or-shlib-calls-gethostbyname /usr/lib(64)?/ruby/socket.so$') - -# Rake ships some examples. -addFilter(r'^rubygem-rake.noarch: W: devel-file-in-non-devel-package /usr/share/gems/gems/rake-[\d\.]+/doc/example/\w+.c$') - -# Some executables don't have their manual pages. Is it worth of use help2man? -addFilter(r'^.+: W: no-manual-page-for-binary (bundler|gem|racc|rbs|rdbg|rdoc|ruby-mri|syntax_suggest|typeprof)$') - -# Default gems does not come with any documentation. -addFilter(r'^rubygem-(bigdecimal|io-console|json|psych)\.\w+: W: no-documentation$') - -# rubygems-devel ships only RPM macros and generators. Their placement is given -# by RPM and can't be modified. -addFilter(r'rubygems-devel.noarch: W: only-non-binary-in-usr-lib$') - -# Ignore some spelling false positives. -# Ignore spelling of technical terms -addFilter(r'^ruby-default-gems.noarch: E: spelling-error \(\'gemspec\'') -addFilter(r'^ruby-libs.x86_64: E: spelling-error \(\'libruby\'') -addFilter(r'^rubygem-test-unit.noarch: E: spelling-error \(\'xUnit\'') -addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'libyaml\'') -addFilter(r'^rubygem-io-console.x86_64: E: spelling-error \(\'readline\'') -# `pyaml` is part of URL -addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'pyyaml\'') -# `de-` is actually prefix -addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'de\'') - -# It does not seemt to be worth of changing rubygems to archful package due to -# single directory, unless it causes some real troubles. -addFilter(r'^rubygems.noarch: E: noarch-with-lib64$') diff --git a/ruby.spec b/ruby.spec index a364fe6..955a099 100644 --- a/ruby.spec +++ b/ruby.spec @@ -1,230 +1,91 @@ -%global major_version 4 -%global minor_version 0 -%global teeny_version 1 +%global major_version 2 +%global minor_version 5 +%global teeny_version 8 %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. -%dnl %global milestone preview2 +#%%global milestone rc1 -# Keep the revision enabled for pre-releases from GIT. -%dnl %global revision d428d086c2 +# Keep the revision enabled for pre-releases from SVN. +#%%global revision 61414 %global ruby_archive %{name}-%{ruby_version} # If revision and milestone are removed/commented out, the official release build is expected. -%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") -%endif - %if 0%{?milestone:1}%{?revision:1} != 0 -%define development_release ~%{?ruby_archive_timestamp}%{?milestone}%{?!milestone:%{?revision:git%{revision}}} +%global development_release %{?milestone}%{?!milestone:%{?revision:r%{revision}}} +%global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif +%global release 108 +%{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} + # The RubyGems library has to stay out of Ruby directory tree, since the # RubyGems should be share by all Ruby implementations. %global rubygems_dir %{_datadir}/rubygems -## BUNDLED_GEMS_VERSIONS - # Bundled libraries versions -%global rubygems_version 4.0.3 -%global rubygems_molinillo_version 0.8.0 -%global rubygems_net_http_version 0.7.0 -%global rubygems_net_protocol_version 0.2.2 -%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 1.1.1 +%global rubygems_version 2.7.6.2 +%global molinillo_version 0.5.7 -# Default gems. -%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.4.1 -%global bundler_thor_version 1.4.0 -%global bundler_tsort_version 0.2.0 -%global bundler_uri_version 1.1.1 +# TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM. +# http://redmine.ruby-lang.org/issues/5313 +%global irb_version %{ruby_version} -%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.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 open_uri_version 0.5.0 -%global open3_version 0.2.1 -%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 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.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 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 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 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 +%global bigdecimal_version 1.3.4 +%global did_you_mean_version 1.2.0 +%global io_console_version 0.4.6 +%global json_version 2.1.0 +%global minitest_version 5.10.3 +%global net_telnet_version 0.1.1 +%global openssl_version 2.1.2 +%global power_assert_version 1.1.1 +%global psych_version 3.0.2 +%global rake_version 12.3.3 +%global rdoc_version 6.0.1.1 +%global test_unit_version 3.2.7 +%global xmlrpc_version 0.3.0 +# Might not be needed in the future, if we are lucky enough. +# https://bugzilla.redhat.com/show_bug.cgi?id=888262 +%global tapset_root %{_datadir}/systemtap +%global tapset_dir %{tapset_root}/tapset %global tapset_libdir %(echo %{_libdir} | sed 's/64//')* +%global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/') + %if 0%{?fedora} >= 19 %bcond_without rubypick %endif -%bcond_without cmake -%bcond_without git -%bcond_without gmp -%bcond_without hostname %bcond_without systemtap -%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 +%bcond_without git +%bcond_without cmake +%bcond_without gmp %if 0%{?fedora} %bcond_without hardening_test %endif -# The additional linker flags break binary rubygem- packages. -# https://bugzilla.redhat.com/show_bug.cgi?id=2043092 -%undefine _package_note_flags +# LTO appears to cause some issue to SEGV handler. +# https://bugs.ruby-lang.org/issues/17052 +%define _lto_cflags %{nil} Summary: An interpreter of object-oriented scripting language Name: ruby -Version: %{ruby_version}%{?development_release} -Release: 31%{?dist} -# Licenses, which are likely not included in binary RPMs: -# Apache-2.0: -# benchmark/gc/redblack.rb -# But this file might be BSD-2-Clause licensed after all: -# https://bugs.ruby-lang.org/issues/20420 -# 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 -# 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, -# container_of/container_of.h,str/str.h} -# Allowed based on 'grandfather clause': -# https://gitlab.com/fedora/legal/fedora-license-data/-/blob/7d9720b2cfd8ccb98d1975312942d99588a0da7c/data/CC0-1.0.toml#L11-14 -# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/499 -# dtoa: missing/dtoa.c -# GPL-3.0-or-later WITH Bison-exception-2.2: parse.{c,h}, ext/ripper/ripper.c -# HPND-Markus-Kuhn: missing/langinfo.c -# ISC: missing/strl{cat,cpy}.c -# LicenseRef-Fedora-Public-Domain: include/ruby/st.h, strftime.c, missing/*, ... -# 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 +Version: %{ruby_version} +Release: %{release_string} +Group: Development/Languages +# Public Domain for example for: include/ruby/st.h, strftime.c, missing/*, ... +# MIT and CCO: ccan/* # 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-1.0 AND zlib AND Unicode-DFS-2015 AND HPND-Markus-Kuhn AND Ruby-pty -URL: https://www.ruby-lang.org/ +# UCD: some of enc/trans/**/*.src +License: (Ruby or BSD) and Public Domain and MIT and CC0 and zlib and UCD +URL: http://ruby-lang.org/ Source0: https://cache.ruby-lang.org/pub/%{name}/%{major_minor_version}/%{ruby_archive}.tar.xz Source1: operating_system.rb # TODO: Try to push SystemTap support upstream. @@ -232,125 +93,119 @@ Source2: libruby.stp Source3: ruby-exercise.stp Source4: macros.ruby Source5: macros.rubygems +Source6: abrt_prelude.rb # RPM dependency generators. -Source6: rubygems.attr -Source7: rubygems.req -Source8: rubygems.prov -Source9: rubygems.con +Source8: rubygems.attr +Source9: rubygems.req +Source10: rubygems.prov +Source11: rubygems.con # ABRT hoook test case. -Source10: test_abrt.rb +Source13: test_abrt.rb # SystemTap tests. -Source11: test_systemtap.rb -# Ruby OpenSSL FIPS tests. -Source12: test_openssl_fips.rb -# RPM gem Requires dependency generator tests. -Source13: rpm_test_helper.rb -Source14: test_rubygems_req.rb -Source15: test_rubygems_prov.rb -Source16: test_rubygems_con.rb +Source14: test_systemtap.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_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 -Patch2: ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +Patch1: ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch # Allows to override libruby.so placement. Hopefully we will be able to return # to plain --with-rubyarchprefix. # http://bugs.ruby-lang.org/issues/8973 -Patch3: ruby-2.1.0-Enable-configuration-of-archlibdir.patch +Patch2: ruby-2.1.0-Enable-configuration-of-archlibdir.patch # Force multiarch directories for i.86 to be always named i386. This solves # some differencies in build between Fedora and RHEL. -Patch4: ruby-2.1.0-always-use-i386.patch +Patch3: ruby-2.1.0-always-use-i386.patch # Allows to install RubyGems into custom directory, outside of Ruby's tree. # http://bugs.ruby-lang.org/issues/5617 -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 -# Unfortunately, due to https://bugs.ruby-lang.org/issues/16254 -# and especially since https://github.com/ruby/ruby/pull/2735 -# this would require boostrapping: -# https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/ -# For now, load the ABRT hook via this simple patch: -Patch6: ruby-2.7.0-Initialize-ABRT-hook.patch -# Disable syntax_suggest test suite, which tries to download its dependencies. -# https://bugs.ruby-lang.org/issues/19297 -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 +Patch4: ruby-2.1.0-custom-rubygems-location.patch +# Make mkmf verbose by default +Patch5: ruby-1.9.3-mkmf-verbose.patch +# Adds support for '--with-prelude' configuration option. This allows to built +# in support for ABRT. +# http://bugs.ruby-lang.org/issues/8566 +Patch6: ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch +# Use miniruby to regenerate prelude.c. +# https://bugs.ruby-lang.org/issues/10554 +Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch +# Workaround "an invalid stdio handle" error on PPC, due to recently introduced +# hardening features of glibc (rhbz#1361037). +# https://bugs.ruby-lang.org/issues/12666 +Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch +# Add Gem.operating_system_defaults to allow packagers to override defaults. +# https://github.com/rubygems/rubygems/pull/2116 +Patch10: ruby-2.5.0-Add-Gem.operating_system_defaults.patch +# Fix compatibility with libyaml 0.2.5 +# https://bugs.ruby-lang.org/issues/16949 +Patch14: ruby-2.7.2-psych-fix-yaml-tests.patch +# Don't force libraries used to build Ruby to its dependencies. +# https://bugs.ruby-lang.org/issues/14422 +Patch15: ruby-2.6.0-library-options-to-MAINLIBS.patch +# Do not require C++ compiler. +# https://github.com/rubygems/rubygems/pull/2367 +Patch16: ruby-2.5.1-Avoid-need-of-C++-compiler-to-pass-the-test-suite.patch +# https://github.com/ruby/rdoc/commit/d05e6269d4a4dfd701f5ddb3ae34306cba891511 +# Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add. +# https://bugs.ruby-lang.org/issues/16492 +Patch19: ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch +Patch20: ruby-2.6.0-rdoc-6.0.1-fix-template-typo.patch +# Properly harden package using -fstack-protector-strong. +# https://bugs.ruby-lang.org/issues/15053 +Patch24: ruby-2.6.0-configure-fstack-protector-strong.patch +# Add support for .include directive used by OpenSSL config files. +# https://github.com/ruby/openssl/pull/216 +Patch22: ruby-2.6.0-config-support-include-directive.patch +# Use larger keys to prevent test failures. +# https://github.com/ruby/openssl/pull/217 +Patch23: ruby-2.6.0-use-larger-keys-for-SSL-tests.patch +# Fix lchmod test failures. +# https://github.com/ruby/ruby/commit/a19228f878d955eaf2cce086bcf53f46fdf894b9 +Patch41: ruby-2.8.0-Brace-the-fact-that-lchmod-can-EOPNOTSUPP.patch +# https://github.com/ruby/ruby/commit/72c02aa4b79731c7f25c9267f74b347f1946c704 +Patch42: ruby-2.8.0-Moved-not-implemented-method-tests.patch +# Use larger keys for test_ssl test failures. +# https://github.com/ruby/ruby/commit/a3843824c455d0b0efcfc5af03cbcebaac090eda +Patch43: ruby-2.6.0-use-larger-keys-for-SSL-tests2.patch +# Regenerate server certificates with larger keys for open-uri tests. +# https://github.com/ruby/ruby/commit/eaddc972820d49212c495542816f9f7845e7828c +Patch44: ruby-2.6.4-open-uri-regenerate-server-certificates-for-tests.patch +# Use larger keys for webrick test failures. +# https://github.com/ruby/ruby/commit/a063f71a7ccc733d8ab4b997dfc3ffb1ab987afc +Patch45: ruby-2.6.0-use-larger-keys-for-SSL-webrick-tests.patch +# Use larger keys for drb test failures. +# https://github.com/ruby/ruby/commit/fb0009cfdc203247f808f4dcd72c7baf272172ce +Patch46: ruby-2.6.0-use-larger-keys-for-SSL-drb-tests.patch Requires: %{name}-libs%{?_isa} = %{version}-%{release} -%{?with_rubypick:Suggests: 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} +Recommends: rubygem(did_you_mean) >= %{did_you_mean_version} +Recommends: rubygem(openssl) >= %{openssl_version} -# Build dependencies BuildRequires: autoconf -BuildRequires: gcc -BuildRequires: make -BuildRequires: libffi-devel -BuildRequires: libxcrypt-devel -BuildRequires: libyaml-devel -BuildRequires: openssl-devel -BuildRequires: zlib-devel +BuildRequires: gdbm-devel %{?with_gmp:BuildRequires: gmp-devel} -%{?with_systemtap:BuildRequires: %{_bindir}/dtrace} -%{?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 - -# Check dependencies - -# Required to test hardening. -%{?with_hardening_test:BuildRequires: %{_bindir}/checksec} - +BuildRequires: libffi-devel +BuildRequires: openssl-devel +BuildRequires: libyaml-devel +BuildRequires: readline-devel # Needed to pass test_set_program_name(TestRubyOptions) BuildRequires: procps -# Neede by `Socket.gethostname returns the host name ERROR` -%{?with_hostname:BuildRequires: %{_bindir}/hostname} - +%{?with_systemtap:BuildRequires: %{_bindir}/dtrace} # RubyGems test suite optional dependencies. %{?with_git:BuildRequires: git} -# `cmake` is required for test/rubygems/test_gem_ext_cmake_builder.rb. %{?with_cmake:BuildRequires: %{_bindir}/cmake} - -# The bundler/spec/runtime/setup_spec.rb requires the command `man`. -%{?with_bundler_tests:BuildRequires: %{_bindir}/man} - +# Required to test hardening. +%{?with_hardening_test:BuildRequires: %{_bindir}/checksec} +BuildRequires: multilib-rpm-config +BuildRequires: gcc +BuildRequires: zlib-devel # This package provides %%{_bindir}/ruby-mri therefore it is marked by this # virtual provide. It can be installed as dependency of rubypick. @@ -365,13 +220,11 @@ straight-forward, and extensible. %package devel Summary: A Ruby development environment +Group: Development/Languages Requires: %{name}%{?_isa} = %{version}-%{release} # This would not be needed if ~50 packages depending on -devel used # --disable-gems Requires: rubygems -# Users need CFLAGS from /usr/lib/rpm/redhat/redhat-hardened-cc1 -# for building gems with binary extensions (rhbz#1905222). -Recommends: redhat-rpm-config %description devel Header files and libraries for building an extension library for the @@ -379,6 +232,8 @@ Ruby or an application embedding Ruby. %package libs Summary: Libraries necessary to run Ruby +Group: Development/Libraries +License: Ruby or BSD Provides: ruby(release) = %{ruby_release} # Virtual provides for CCAN copylibs. @@ -388,9 +243,11 @@ Provides: bundled(ccan-check_type) Provides: bundled(ccan-container_of) Provides: bundled(ccan-list) -# StdLib default gems. -Provides: bundled(rubygem-did_you_mean) = %{did_you_mean_version} -Provides: bundled(rubygem-openssl) = %{openssl_version} +# Tcl/Tk support was removed from stdlib in Ruby 2.4, i.e. F27 timeframe +# so lets obsolete it. This is not the best place, but we don't have +# better, unless https://fedorahosted.org/fpc/ticket/645 provides some +# generic solution. +Obsoletes: ruby-tcltk < 2.4.0 %description libs @@ -401,35 +258,17 @@ This package includes the libruby, necessary to run Ruby. %package -n rubygems Summary: The Ruby standard for packaging ruby libraries Version: %{rubygems_version} -# BSD-2-Clause OR Ruby: -# lib/rubygems/net-http/ -# lib/rubygems/net-protocol/ -# lib/rubygems/optparse/ -# lib/rubygems/resolv/ -# lib/rubygems/timeout/ -# lib/rubygems/tsort/ -# MIT: lib/rubygems/resolver/molinillo -# Ruby OR BSD-2-Clause OR GPL-1.0-or-later: lib/net/protocol.rb -License: (Ruby OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Ruby) AND (Ruby OR BSD-2-Clause OR GPL-1.0-or-later) AND MIT +Group: Development/Libraries +License: Ruby or MIT Requires: ruby(release) -Recommends: rubygem(bundler) >= %{bundler_version} Recommends: rubygem(rdoc) >= %{rdoc_version} -Recommends: rubygem(io-console) -Requires: rubygem(psych) >= %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} +Recommends: rubygem(io-console) >= %{io_console_version} +Requires: rubygem(openssl) >= %{openssl_version} +Requires: rubygem(psych) >= %{psych_version} Provides: gem = %{version}-%{release} Provides: ruby(rubygems) = %{version}-%{release} -Provides: bundled(rubygems) = %{rubygems_version} # https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 -Provides: bundled(rubygem-molinillo) = %{rubygems_molinillo_version} -Provides: bundled(rubygem-net-http) = %{rubygems_net_http_version} -Provides: bundled(rubygem-net-protocol) = %{rubygems_net_protocol_version} -Provides: bundled(rubygem-optparse) = %{rubygems_optparse_version} -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} - +Provides: bundled(rubygem-molinillo) = %{molinillo_version} BuildArch: noarch %description -n rubygems @@ -440,8 +279,9 @@ libraries. %package -n rubygems-devel Summary: Macros and development tools for packaging RubyGems Version: %{rubygems_version} -License: MIT -Requires: ruby(rubygems) >= %{version}-%{release} +Group: Development/Libraries +License: Ruby or MIT +Requires: ruby(rubygems) = %{version}-%{release} # Needed for RDoc documentation format generation. Requires: rubygem(json) >= %{json_version} Requires: rubygem(rdoc) >= %{rdoc_version} @@ -451,32 +291,32 @@ BuildArch: noarch Macros and development tools for packaging RubyGems. -# Default gems -# -# These packages are part of Ruby StdLib and are expected to be loadable even -# with disabled RubyGems. - -%package default-gems -Summary: Default gems which are part of Ruby StdLib -Supplements: ruby(rubygems) -# Obsoleted by Ruby 3.0 in F34 timeframe. -Obsoletes: rubygem-openssl < 2.2.0-145 +%package -n rubygem-rake +Summary: Ruby based make-like utility +Version: %{rake_version} +Group: Development/Libraries +License: MIT +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rake = %{version}-%{release} +Provides: rubygem(rake) = %{version}-%{release} BuildArch: noarch -%description default-gems -The .gemspec files and executables of default gems, which are part of Ruby -StdLib. +%description -n rubygem-rake +Rake is a Make-like program implemented in Ruby. Tasks and dependencies are +specified in standard Ruby syntax. -%package -n rubygem-irb +%package irb Summary: The Interactive Ruby Version: %{irb_version} -License: Ruby OR BSD-2-Clause +Group: Development/Libraries +Requires: %{name}-libs = %{ruby_version} Provides: irb = %{version}-%{release} -Provides: bundled(rubygem-irb) = %{irb_version} +Provides: ruby(irb) = %{version}-%{release} BuildArch: noarch -%description -n rubygem-irb +%description irb The irb is acronym for Interactive Ruby. It evaluates ruby expression from the terminal. @@ -484,21 +324,17 @@ from the terminal. %package -n rubygem-rdoc Summary: A tool to generate HTML and command-line documentation for Ruby projects Version: %{rdoc_version} -# BSD-3-Clause: lib/rdoc/generator/darkfish.rb -# CC-BY-2.5: lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif -# OFL-1.1-RFN: lib/rdoc/generator/template/darkfish/css/fonts.css -# 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 AND MIT -Requires: rubygem(io-console) +Group: Development/Libraries +# SIL: lib/rdoc/generator/template/darkfish/css/fonts.css +License: GPLv2 and Ruby and MIT and OFL +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Requires: ruby(irb) = %{irb_version} +Requires: rubygem(io-console) >= %{io_console_version} Requires: rubygem(json) >= %{json_version} Provides: rdoc = %{version}-%{release} Provides: ri = %{version}-%{release} -Provides: bundled(rubygem-rdoc) = %{rdoc_version} +Provides: rubygem(rdoc) = %{version}-%{release} BuildArch: noarch %description -n rubygem-rdoc @@ -509,6 +345,7 @@ documentation. %package doc Summary: Documentation for %{name} +Group: Documentation Requires: %{_bindir}/ri BuildArch: noarch @@ -519,9 +356,11 @@ This package contains documentation for %{name}. %package -n rubygem-bigdecimal Summary: BigDecimal provides arbitrary-precision floating point decimal arithmetic Version: %{bigdecimal_version} -# dtoa: missing/dtoa.c -License: (Ruby OR BSD-2-Clause) AND dtoa -Provides: bundled(rubygem-bigdecimal) = %{bigdecimal_version} +Group: Development/Libraries +License: Ruby or BSD +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(bigdecimal) = %{version}-%{release} %description -n rubygem-bigdecimal Ruby provides built-in support for arbitrary precision integer arithmetic. @@ -536,11 +375,28 @@ floating point arithmetic often introduces subtle errors because of the conversion between base 10 and base 2. +%package -n rubygem-did_you_mean +Summary: "Did you mean?" experience in Ruby +Version: %{did_you_mean_version} +Group: Development/Libraries +License: MIT +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(did_you_mean) = %{version}-%{release} +BuildArch: noarch + +%description -n rubygem-did_you_mean +"did you mean?" experience in Ruby: the error message will tell you the right +one when you misspelled something. + + %package -n rubygem-io-console Summary: IO/Console is a simple console utilizing library Version: %{io_console_version} -License: Ruby OR BSD-2-Clause -Provides: bundled(rubygem-io-console) = %{io_console_version} +Group: Development/Libraries +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(io-console) = %{version}-%{release} %description -n rubygem-io-console IO/Console provides very simple and portable access to console. It doesn't @@ -550,18 +406,12 @@ 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} -# 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) +Group: Development/Libraries +# UCD: ext/json/generator/generator.c +License: (Ruby or GPLv2) and UCD +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(json) = %{version}-%{release} %description -n rubygem-json This is a implementation of the JSON specification according to RFC 4627. @@ -570,119 +420,53 @@ data to disk or transmit it over a network rather than use a verbose markup language. -%package -n rubygem-psych -Summary: A libyaml wrapper for Ruby -Version: %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} -License: MIT -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 -libyaml[http://pyyaml.org/wiki/LibYAML] for its YAML parsing and emitting -capabilities. In addition to wrapping libyaml, Psych also knows how to -serialize and de-serialize most Ruby objects to and from the YAML format. - - -%package -n rubygem-bundler -Summary: Library and utilities to manage a Ruby application's gem dependencies -Version: %{bundler_version} -# BSD-2-Clause OR Ruby: -# lib/bundler/vendor/fileutils -# lib/bundler/vendor/tsort -# lib/bundler/vendor/uri -# MIT: -# lib/bundler/vendor/connection_pool -# lib/bundler/vendor/net-http-persistent -# lib/bundler/vendor/pub_brub -# lib/bundler/vendor/thor -# lib/rubygems/resolver/molinillo -License: MIT AND (Ruby OR BSD-2-Clause) -Requires: rubygem(io-console) -Provides: bundled(rubygem-bundler) = %{bundler_version} -# https://github.com/bundler/bundler/issues/3647 -Provides: bundled(rubygem-connection_pool) = %{bundler_connection_pool_version} -Provides: bundled(rubygem-fileutils) = %{bundler_fileutils_version} -Provides: bundled(rubygem-net-http-persistent) = %{bundler_net_http_persistent_version} -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 - -%description -n rubygem-bundler -Bundler manages an application's dependencies through its entire life, across -many machines, systematically and repeatably. - - -# Bundled gems -# -# These are regular packages, which might be installed just optionally. Users -# should list them among their dependencies (in Gemfile). - -%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 -needs to be listed in Gemfile to be used by Bundler. - - %package -n rubygem-minitest Summary: Minitest provides a complete suite of testing facilities Version: %{minitest_version} +Group: Development/Libraries License: MIT -Provides: bundled(rubygem-minitest) = %{minitest_version} +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(minitest) = %{version}-%{release} BuildArch: noarch %description -n rubygem-minitest -minitest/test is a small and incredibly fast unit testing framework. +minitest/unit 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. +%package -n rubygem-openssl +Summary: OpenSSL provides SSL, TLS and general purpose cryptography +Version: %{openssl_version} +Group: Development/Libraries +License: Ruby or BSD +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(openssl) = %{version}-%{release} + +%description -n rubygem-openssl +OpenSSL provides SSL, TLS and general purpose cryptography. It wraps the +OpenSSL library. + + %package -n rubygem-power_assert Summary: Power Assert for Ruby Version: %{power_assert_version} -License: Ruby OR BSD-2-Clause -Provides: bundled(rubygem-power_assert) = %{power_assert_version} +Group: Development/Libraries +License: Ruby or BSD +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(power_assert) = %{version}-%{release} BuildArch: noarch %description -n rubygem-power_assert @@ -691,36 +475,53 @@ It is useful for testing, providing which value wasn't correct when the condition is not satisfied. -%package -n rubygem-rake -Summary: Ruby based make-like utility -Version: %{rake_version} +%package -n rubygem-psych +Summary: A libyaml wrapper for Ruby +Version: %{psych_version} +Group: Development/Libraries License: MIT -Provides: rake = %{version}-%{release} -Provides: bundled(rubygem-rake) = %{rake_version} +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(psych) = %{version}-%{release} + +%description -n rubygem-psych +Psych is a YAML parser and emitter. Psych leverages +libyaml[http://pyyaml.org/wiki/LibYAML] for its YAML parsing and emitting +capabilities. In addition to wrapping libyaml, Psych also knows how to +serialize and de-serialize most Ruby objects to and from the YAML format. + + +%package -n rubygem-net-telnet +Summary: Provides telnet client functionality +Version: %{net_telnet_version} +Group: Development/Libraries +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(net-telnet) = %{version}-%{release} BuildArch: noarch -%description -n rubygem-rake -Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax. +%description -n rubygem-net-telnet +Provides telnet client functionality. - -%package -n rubygem-rbs -Summary: Type signature for Ruby -Version: %{rbs_version} -License: Ruby OR BSD-2-Clause -Provides: bundled(rubygem-rbs) = %{rbs_version} - -%description -n rubygem-rbs -RBS is the language for type signatures for Ruby and standard library -definitions. +This class also has, through delegation, all the methods of a socket object +(by default, a TCPSocket, but can be set by the Proxy option to new()). This +provides methods such as close() to end the session and sysread() to read data +directly from the host, instead of via the waitfor() mechanism. Note that if +you do use sysread() directly when in telnet mode, you should probably pass +the output through preprocess() to extract telnet command sequences. %package -n rubygem-test-unit Summary: An xUnit family unit testing framework for Ruby Version: %{test_unit_version} +Group: Development/Libraries # lib/test/unit/diff.rb is a double license of the Ruby license and PSF license. -License: (Ruby OR BSD-2-Clause) AND (Ruby OR BSD-2-Clause OR Python-2.0.1) -Provides: bundled(rubygem-test-unit) = %{test_unit_version} +# lib/test-unit.rb is a dual license of the Ruby license and LGPLv2.1 or later. +License: (Ruby or BSD) and (Ruby or BSD or Python) and (Ruby or BSD or LGPLv2+) +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Requires: rubygem(power_assert) +Provides: rubygem(test-unit) = %{version}-%{release} BuildArch: noarch %description -n rubygem-test-unit @@ -730,98 +531,64 @@ programming software development methodology, for Smalltalk's SUnit. It allows writing tests, checking results and automated testing in Ruby. -%package -n rubygem-racc -Version: %{racc_version} -Summary: Racc is a LALR(1) parser generator -License: Ruby OR BSD-2-Clause -URL: https://github.com/ruby/racc -Provides: bundled(rubygem-racc) = %{racc_version} - -%description -n rubygem-racc -Racc is a LALR(1) parser generator. -It is written in Ruby itself, and generates Ruby program. - - -%package -n rubygem-rexml -Summary: An XML toolkit for Ruby -Version: %{rexml_version} -License: BSD-2-Clause -URL: https://github.com/ruby/rexml -Provides: bundled(rubygem-rexml) = %{rexml_version} +%package -n rubygem-xmlrpc +Summary: XMLRPC is a lightweight protocol that enables remote procedure calls over HTTP +Version: %{xmlrpc_version} +Group: Development/Libraries +License: Ruby or BSD +Requires: ruby(release) +Requires: ruby(rubygems) >= %{rubygems_version} +Provides: rubygem(xmlrpc) = %{version}-%{release} BuildArch: noarch -%description -n rubygem-rexml -REXML was inspired by the Electric XML library for Java, which features an -easy-to-use API, small size, and speed. Hopefully, REXML, designed with the same -philosophy, has these same features. I've tried to keep the API as intuitive as -possible, and have followed the Ruby methodology for method naming and code -flow, rather than mirroring the Java API. - -REXML supports both tree and stream document parsing. Stream parsing is faster -(about 1.5 times as fast). However, with stream parsing, you don't get access to -features such as XPath. - - -%package -n rubygem-rss -Summary: Family of libraries that support various formats of XML "feeds" -Version: %{rss_version} -License: BSD-2-Clause -URL: https://github.com/ruby/rss -Provides: bundled(rubygem-rss) = %{rss_version} -BuildArch: noarch - -%description -n rubygem-rss -Really Simple Syndication (RSS) is a family of formats that describe 'feeds', -specially constructed XML documents that allow an interested person to subscribe -and receive updates from a particular web service. This library provides tooling -to read and create these feeds. - - -%package -n rubygem-typeprof -Summary: TypeProf is a type analysis tool for Ruby code based on abstract interpretation -Version: %{typeprof_version} -License: MIT -URL: https://github.com/ruby/typeprof -Provides: bundled(rubygem-typeprof) = %{typeprof_version} -BuildArch: noarch - -%description -n rubygem-typeprof -TypeProf performs a type analysis of non-annotated Ruby code. -It abstractly executes input Ruby code in a level of types instead of values, -gathers what types are passed to and returned by methods, and prints the -analysis result in RBS format, a standard type description format for Ruby -3.0. +%description -n rubygem-xmlrpc +XMLRPC is a lightweight protocol that enables remote procedure calls over +HTTP. %prep %setup -q -n %{ruby_archive} -%patch 0 -p1 +# Remove bundled libraries to be sure they are not used. +rm -rf ext/psych/yaml +rm -rf ext/fiddle/libffi* -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 7 -p1 -%patch 8 -p1 +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch9 -p1 +%patch10 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch19 -p1 +%patch20 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch41 -p1 +%patch42 -p1 +%patch43 -p1 +%patch44 -p1 +%patch45 -p1 +%patch46 -p1 # Provide an example of usage of the tapset: cp -a %{SOURCE3} . +# Make abrt_prelude.rb available for compilation process. The prelude must be +# available together with Ruby's source due to +# https://github.com/ruby/ruby/blob/trunk/tool/compile_prelude.rb#L26 +cp -a %{SOURCE6} . + %build autoconf -%global _configure %{_builddir}/%{buildsubdir}/configure - -mkdir -p %{_vpath_builddir} -pushd %{_vpath_builddir} - %configure \ --with-rubylibprefix='%{ruby_libdir}' \ --with-archlibdir='%{_libdir}' \ @@ -838,41 +605,23 @@ pushd %{_vpath_builddir} --with-ruby-pc='%{name}.pc' \ --with-compress-debug-sections=no \ --disable-rpath \ - --enable-mkmf-verbose \ --enable-shared \ --with-ruby-version='' \ --enable-multiarch \ - %{?with_yjit: --enable-yjit} \ - %{?with_zjit: --enable-zjit} \ - %{?with_rust: rustc_flags='%{build_rustflags}'} \ + --with-prelude=./abrt_prelude.rb \ -popd - -# V=1 in %%make_build outputs the compiler options more verbosely. -# https://bugs.ruby-lang.org/issues/18756 -%make_build COPY="cp -p" -C %{_vpath_builddir} +# Q= makes the build output more verbose and allows to check Fedora +# compiler options. +make %{?_smp_mflags} COPY="cp -p" Q= %install rm -rf %{buildroot} - -%make_install -C %{_vpath_builddir} - -# TODO: Regenerate RBS parser in lib/rbs/parser.rb +make install DESTDIR=%{buildroot} # Rename ruby/config.h to ruby/config-.h to avoid file conflicts on # 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}} @@ -882,28 +631,30 @@ 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/GlobalSign.pem + rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem \ + rubygems.org/AddTrustExternalCARoot.pem \ + index.rubygems.org/GlobalSignRootCA.pem do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert - rm -d $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) || : + rm -r $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) done # Ensure there is not forgotten any certificate. -test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" +test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" # Move macros file into proper place and replace the %%{name} macro, since it # would be wrongly evaluated during build of other packages. -mkdir -p %{buildroot}%{_rpmmacrodir} -install -m 644 %{SOURCE4} %{buildroot}%{_rpmmacrodir}/macros.ruby -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmmacrodir}/macros.ruby -install -m 644 %{SOURCE5} %{buildroot}%{_rpmmacrodir}/macros.rubygems -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmmacrodir}/macros.rubygems +mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d +install -m 644 %{SOURCE4} %{buildroot}%{_rpmconfigdir}/macros.d/macros.ruby +sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.ruby +install -m 644 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems +sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems # Install dependency generators. -mkdir -p %{buildroot}%{_fileattrsdir} -install -m 644 %{SOURCE6} %{buildroot}%{_fileattrsdir} -install -m 755 %{SOURCE7} %{buildroot}%{_rpmconfigdir} -install -m 755 %{SOURCE8} %{buildroot}%{_rpmconfigdir} +mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs +install -m 644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/fileattrs 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 @@ -919,71 +670,78 @@ 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, 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} -mv %{buildroot}%{ruby_libdir}/bundler.rb %{buildroot}%{gem_libdir bundler} -mv %{buildroot}%{ruby_libdir}/bundler %{buildroot}%{gem_libdir bundler} -mv %{buildroot}%{gem_spec -d bundler} %{buildroot}%{gem_spec bundler} +# make symlinks for io-console and bigdecimal, which are considered to be part of stdlib by other Gems +mkdir -p %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib +mv %{buildroot}%{ruby_libdir}/rdoc* %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib +mv %{buildroot}%{gem_dir}/specifications/default/rdoc-%{rdoc_version}.gemspec %{buildroot}%{gem_dir}/specifications -mkdir -p %{buildroot}%{gem_libdir io-console} -mkdir -p %{buildroot}%{gem_extdir_mri io-console}/io -mv %{buildroot}%{ruby_libdir}/io %{buildroot}%{gem_libdir io-console} -mv %{buildroot}%{ruby_libarchdir}/io/console.so %{buildroot}%{gem_extdir_mri io-console}/io -touch %{buildroot}%{gem_extdir_mri io-console}/gem.build_complete -mv %{buildroot}%{gem_spec -d io-console} %{buildroot}%{gem_spec io-console} -ln -s %{gem_libdir io-console}/io %{buildroot}%{ruby_libdir}/io -ln -s %{gem_extdir_mri io-console}/io/console.so %{buildroot}%{ruby_libarchdir}/io/console.so +mkdir -p %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version} +mv %{buildroot}%{ruby_libdir}/bigdecimal %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib +mv %{buildroot}%{ruby_libarchdir}/bigdecimal.so %{buildroot}%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version} +mv %{buildroot}%{gem_dir}/specifications/default/bigdecimal-%{bigdecimal_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib/bigdecimal %{buildroot}%{ruby_libdir}/bigdecimal +ln -s %{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}/bigdecimal.so %{buildroot}%{ruby_libarchdir}/bigdecimal.so -mkdir -p %{buildroot}%{gem_libdir json} -mkdir -p %{buildroot}%{gem_extdir_mri json} -mv %{buildroot}%{ruby_libdir}/json* %{buildroot}%{gem_libdir json} -mv %{buildroot}%{ruby_libarchdir}/json/ %{buildroot}%{gem_extdir_mri json} -touch %{buildroot}%{gem_extdir_mri json}/gem.build_complete -mv %{buildroot}%{gem_spec -d json} %{buildroot}%{gem_spec json} -ln -s %{gem_libdir json}/json.rb %{buildroot}%{ruby_libdir}/json.rb -ln -s %{gem_libdir json}/json %{buildroot}%{ruby_libdir}/json -ln -s %{gem_extdir_mri json}/json/ %{buildroot}%{ruby_libarchdir}/json +mkdir -p %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{name}/io-console-%{io_console_version}/io +mv %{buildroot}%{ruby_libdir}/io %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib +mv %{buildroot}%{ruby_libarchdir}/io/console.so %{buildroot}%{_libdir}/gems/%{name}/io-console-%{io_console_version}/io +mv %{buildroot}%{gem_dir}/specifications/default/io-console-%{io_console_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/io-console-%{io_console_version}/lib/io %{buildroot}%{ruby_libdir}/io +ln -s %{_libdir}/gems/%{name}/io-console-%{io_console_version}/io/console.so %{buildroot}%{ruby_libarchdir}/io/console.so -mkdir -p %{buildroot}%{gem_libdir psych} -mkdir -p %{buildroot}%{gem_extdir_mri psych} -mv %{buildroot}%{ruby_libdir}/psych* %{buildroot}%{gem_libdir psych} -mv %{buildroot}%{ruby_libarchdir}/psych.so %{buildroot}%{gem_extdir_mri psych} -touch %{buildroot}%{gem_extdir_mri psych}/gem.build_complete -mv %{buildroot}%{gem_spec -d psych} %{buildroot}%{gem_spec psych} -ln -s %{gem_libdir psych}/psych %{buildroot}%{ruby_libdir}/psych -ln -s %{gem_libdir psych}/psych.rb %{buildroot}%{ruby_libdir}/psych.rb -ln -s %{gem_extdir_mri psych}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so +mkdir -p %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{name}/json-%{json_version} +mv %{buildroot}%{ruby_libdir}/json* %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib +mv %{buildroot}%{ruby_libarchdir}/json/ %{buildroot}%{_libdir}/gems/%{name}/json-%{json_version}/ +mv %{buildroot}%{gem_dir}/specifications/default/json-%{json_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/json-%{json_version}/lib/json.rb %{buildroot}%{ruby_libdir}/json.rb +ln -s %{gem_dir}/gems/json-%{json_version}/lib/json %{buildroot}%{ruby_libdir}/json +ln -s %{_libdir}/gems/%{name}/json-%{json_version}/json/ %{buildroot}%{ruby_libarchdir}/json + +mkdir -p %{buildroot}%{gem_dir}/gems/openssl-%{openssl_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{name}/openssl-%{openssl_version} +mv %{buildroot}%{ruby_libdir}/openssl* %{buildroot}%{gem_dir}/gems/openssl-%{openssl_version}/lib +mv %{buildroot}%{ruby_libarchdir}/openssl.so %{buildroot}%{_libdir}/gems/%{name}/openssl-%{openssl_version}/ +mv %{buildroot}%{gem_dir}/specifications/default/openssl-%{openssl_version}.gemspec %{buildroot}%{gem_dir}/specifications +# This used to be directory when OpenSSL was integral part of StdLib => Keep +# it as directory and link everything in it to prevent directory => symlink +# conversion RPM issues. +mkdir -p %{buildroot}%{ruby_libdir}/openssl +find %{buildroot}%{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl -maxdepth 1 -type f -exec \ + sh -c 'ln -s %{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl/`basename {}` %{buildroot}%{ruby_libdir}/openssl' \; +ln -s %{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl.rb %{buildroot}%{ruby_libdir}/openssl.rb +ln -s %{_libdir}/gems/%{name}/openssl-%{openssl_version}/openssl.so %{buildroot}%{ruby_libarchdir}/openssl.so + +mkdir -p %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{name}/psych-%{psych_version} +mv %{buildroot}%{ruby_libdir}/psych* %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib +mv %{buildroot}%{ruby_libarchdir}/psych.so %{buildroot}%{_libdir}/gems/%{name}/psych-%{psych_version}/ +mv %{buildroot}%{gem_dir}/specifications/default/psych-%{psych_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych %{buildroot}%{ruby_libdir}/psych +ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych.rb %{buildroot}%{ruby_libdir}/psych.rb +ln -s %{_libdir}/gems/%{name}/psych-%{psych_version}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so # Move the binary extensions into proper place (if no gem has binary extension, # the extensions directory might be empty). -# TODO: Get information about extension form .gemspec files. -find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{major_minor_version}.*/* -maxdepth 0 \ +find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{ruby_version}/* -maxdepth 0 \ -exec mv '{}' %{buildroot}%{_libdir}/gems/%{name}/ \; \ || echo "No gem binary extensions to move." -# Remove the extension sources and library copies from `lib` dir. -find %{buildroot}%{gem_dir}/gems/*/ext -maxdepth 0 -exec rm -rf '{}' + -find %{buildroot}%{gem_dir}/gems/*/lib -name \*.so -delete +# Adjust the gemspec files so that the gems will load properly +sed -i '/^end$/ i\ + s.extensions = ["json/ext/parser.so", "json/ext/generator.so"]' %{buildroot}%{gem_dir}/specifications/json-%{json_version}.gemspec # 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 +mv %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/doc/rake.1 %{buildroot}%{_mandir}/man1 -%if %{with systemtap} # Install a tapset and fix up the path to the library. -mkdir -p %{buildroot}%{_systemtap_tapsetdir} +mkdir -p %{buildroot}%{tapset_dir} sed -e "s|@LIBRARY_PATH@|%{tapset_libdir}/libruby.so.%{major_minor_version}|" \ - %{SOURCE2} > %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp + %{SOURCE2} > %{buildroot}%{tapset_dir}/libruby.so.%{major_minor_version}.stp # Escape '*/' in comment. -sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp -%endif +sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{tapset_dir}/libruby.so.%{major_minor_version}.stp # Prepare -doc subpackage file lists. find doc -maxdepth 1 -type f ! -name '.*' ! -name '*.ja*' > .ruby-doc.en @@ -991,6 +749,7 @@ 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.* @@ -999,241 +758,61 @@ sed -i 's/^/%lang(ja) /' .ruby-doc.ja %check %if 0%{?with_hardening_test} # Check Ruby hardening. -%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}' +checksec --file=libruby.so.%{ruby_version} | \ + grep "Full RELRO.*Canary found.*NX enabled.*DSO.*No RPATH.*No RUNPATH.*Yes.*\d*.*\d*.*libruby.so.%{ruby_version}" %endif # Check RubyGems version. -[ "`make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT='%{_builddir}/%{buildsubdir}/bin/gem -v' | tail -1`" == '%{rubygems_version}' ] +[ "`make runruby TESTRUN_SCRIPT='bin/gem -v' | tail -1`" == '%{rubygems_version}' ] # Check Rubygems bundled dependencies versions. # Molinillo. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ +[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ module Gem; module Resolver; end; end; \ - require 'rubygems/vendor/molinillo/lib/molinillo/gem_metadata'; \ - puts '%%{rubygems_molinillo_version}: %{rubygems_molinillo_version}'; \ - puts %Q[Gem::Molinillo::VERSION: #{Gem::Molinillo::VERSION}]; \ - exit 1 if Gem::Molinillo::VERSION != '%{rubygems_molinillo_version}'; \ -\"" - -# 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}]; \ - exit 1 if Gem::Net::HTTP::VERSION != '%{rubygems_net_http_version}'; \ -\"" - -# Net::Protocol. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; module Net; end; end; \ - require 'rubygems/vendor/net-protocol/lib/net/protocol'; \ - puts '%%{rubygems_net_protocol_version}: %{rubygems_net_protocol_version}'; \ - puts %Q[Gem::Net::Protocol::VERSION: #{Gem::Net::Protocol::VERSION}]; \ - exit 1 if Gem::Net::Protocol::VERSION != '%{rubygems_net_protocol_version}'; \ -\"" - -# OptParse. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/optparse/lib/optparse'; \ - puts '%%{rubygems_optparse_version}: %{rubygems_optparse_version}'; \ - puts %Q[Gem::OptionParser::Version: #{Gem::OptionParser::Version}]; \ - exit 1 if Gem::OptionParser::Version != '%{rubygems_optparse_version}'; \ -\"" - -# 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}]; \ - exit 1 if Gem::Resolv::VERSION != '%{rubygems_resolv_version}'; \ -\"" - -# SecureRandom. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; module Random; end; end; \ - require 'rubygems/vendor/securerandom/lib/securerandom'; \ - puts '%%{rubygems_securerandom_version}: %{rubygems_securerandom_version}'; \ - puts %Q[Gem::SecureRandom::VERSION: #{Gem::SecureRandom::VERSION}]; \ - exit 1 if Gem::SecureRandom::VERSION != '%{rubygems_securerandom_version}'; \ -\"" - -# Timeout. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/timeout/lib/timeout'; \ - puts '%%{rubygems_timeout_version}: %{rubygems_timeout_version}'; \ - puts %Q[Gem::Timeout::VERSION: #{Gem::Timeout::VERSION}]; \ - exit 1 if Gem::Timeout::VERSION != '%{rubygems_timeout_version}'; \ -\"" - -# TSort -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/tsort/lib/tsort'; \ - puts '%%{rubygems_tsort_version}: %{rubygems_tsort_version}'; \ - puts %Q[Gem::TSort::VERSION: #{Gem::TSort::VERSION}]; \ - exit 1 if Gem::TSort::VERSION != '%{rubygems_tsort_version}'; \ -\"" - -# URI. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/uri/lib/uri/version'; \ - puts '%%{rubygems_uri_version}: %{rubygems_uri_version}'; \ - puts %Q[Gem::URI::VERSION: #{Gem::URI::VERSION}]; \ - exit 1 if Gem::URI::VERSION != '%{rubygems_uri_version}'; \ -\"" - -# Check Bundler bundled dependencies versions. - -# connection_pool. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/connection_pool/lib/connection_pool/version'; \ - puts '%%{bundler_connection_pool_version}; %{bundler_connection_pool_version}'; \ - puts %Q[Bundler::ConnectionPool::VERSION: #{Bundler::ConnectionPool::VERSION}]; \ - exit 1 if Bundler::ConnectionPool::VERSION != '%{bundler_connection_pool_version}'; \ -\"" - -# FileUtils. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/fileutils/lib/fileutils'; \ - puts '%%{bundler_fileutils_version}: %{bundler_fileutils_version}'; \ - puts %Q[Bundler::FileUtils::VERSION: #{Bundler::FileUtils::VERSION}]; \ - exit 1 if Bundler::FileUtils::VERSION != '%{bundler_fileutils_version}'; \ -\"" - -# PubGrub -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/pub_grub/lib/pub_grub/version'; \ - puts '%%{bundler_pub_grub_version}: %{bundler_pub_grub_version}'; \ - puts %Q[Bundler::PubGrub::VERSION: #{Bundler::PubGrub::VERSION}]; \ - exit 1 if Bundler::PubGrub::VERSION != '%{bundler_pub_grub_version}'; \ -\"" - -# Net::HTTP::Persistent. -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}]; \ - exit 1 if Gem::Net::HTTP::Persistent::VERSION != '%{bundler_net_http_persistent_version}'; \ -\"" - -# SecureRandom. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; module Random; end; end; \ - require 'bundler/vendor/securerandom/lib/securerandom'; \ - puts '%%{bundler_securerandom_version}: %{bundler_securerandom_version}'; \ - puts %Q[Bundler::SecureRandom::VERSION: #{Bundler::SecureRandom::VERSION}]; \ - exit 1 if Bundler::SecureRandom::VERSION != '%{bundler_securerandom_version}'; \ -\"" - -# Thor. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/thor/lib/thor/version'; \ - puts '%%{bundler_thor_version}: %{bundler_thor_version}'; \ - puts %Q[Bundler::Thor::VERSION: #{Bundler::Thor::VERSION}]; \ - exit 1 if Bundler::Thor::VERSION != '%{bundler_thor_version}'; \ -\"" - -# TSort -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/tsort/lib/tsort'; \ - puts '%%{bundler_tsort_version}: %{bundler_tsort_version}'; \ - puts %Q[Bundler::TSort::VERSION: #{Bundler::TSort::VERSION}]; \ - exit 1 if Bundler::TSort::VERSION != '%{bundler_tsort_version}'; \ -\"" - -# URI. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/uri/lib/uri/version'; \ - puts '%%{bundler_uri_version}: %{bundler_uri_version}'; \ - puts %Q[Bundler::URI::VERSION: #{Bundler::URI::VERSION}]; \ - exit 1 if Bundler::URI::VERSION != '%{bundler_uri_version}'; \ -\"" - -# Check bundled libraries versions. - -# 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}]; \ - exit 1 if NKF::NKF_VERSION != '%{bundled_nkf_version}'; \ -\"" + require 'rubygems/resolver/molinillo/lib/molinillo/gem_metadata'; \ + puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \ + == '%{molinillo_version}' ] # test_debug(TestRubyOptions) fails due to LoadError reported in debug mode, # when abrt.rb cannot be required (seems to be easier way then customizing # the test suite). -touch %{_vpath_builddir}/abrt.rb +touch 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 %{SOURCE10}" +make runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE13}" # Check if systemtap is supported. -%if %{with systemtap} -ln -sfr probes.d %{_vpath_builddir}/ -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 \ - %{SOURCE16} --verbose" - +%{?with_systemtap:make runruby TESTRUN_SCRIPT=%{SOURCE14}} DISABLE_TESTS="" -MSPECOPTS="" -# Avoid `hostname' dependency. -%{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"} +# SIGSEV handler does not provide correct output on AArch64. +# https://bugs.ruby-lang.org/issues/13758 +%ifarch aarch64 +DISABLE_TESTS="$DISABLE_TESTS -n !/test_segv_\(setproctitle\|test\|loaded_features\)/" +%endif + +# Disable failing TestResolvMDNS#test_mdns_each_address test, +# which fails on Koji. +# https://bugs.ruby-lang.org/issues/14175 +sed -i '/def test_mdns_each_address$/,/^ end$/ s/^/#/' test/resolv/test_mdns.rb + +# For now, disable test incompatible with OpenSSL 1.1.1: +# https://github.com/rubygems/rubygems/issues/2388 +DISABLE_TESTS="$DISABLE_TESTS -n !/test_do_not_allow_invalid_client_cert_auth_connection/" + +# Disable File.lchmod specs, which fails when building against glibc 2.31.9000. +# https://bugs.ruby-lang.org/issues/16749 +MSPECOPTS="$MSPECOPTS -P 'File.lchmod returns false from \#respond_to?'" +MSPECOPTS="$MSPECOPTS -P 'File.lchmod raises a NotImplementedError when called'" # 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} %{?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 \ - %{SOURCE12} %{_builddir}/%{buildsubdir} --verbose" - -%{?with_bundler_tests:make -C %{_vpath_builddir} test-bundler-parallel} + make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS" %files %license BSDL @@ -1241,7 +820,9 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %lang(ja) %license COPYING.ja %license GPL %license LEGAL +%{_bindir}/erb %{_bindir}/%{name}%{?with_rubypick:-mri} +%{_mandir}/man1/erb* %{_mandir}/man1/ruby* %files devel @@ -1251,7 +832,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %license GPL %license LEGAL -%{_rpmmacrodir}/macros.ruby +%{_rpmconfigdir}/macros.d/macros.ruby %{_includedir}/* %{_libdir}/libruby.so @@ -1263,7 +844,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %license GPL %license LEGAL %doc README.md -%doc NEWS.md +%doc NEWS # Exclude /usr/local directory since it is supposed to be managed by # local system administrator. %exclude %{ruby_sitelibdir} @@ -1274,63 +855,41 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ # List all these files explicitly to prevent surprises # Platform independent libraries. %dir %{ruby_libdir} -%exclude %{ruby_libdir}/json* -%exclude %{ruby_libdir}/psych* -%{ruby_libdir}/bundled_gems.rb -%{ruby_libdir}/cgi* -%{ruby_libdir}/coverage.rb -%{ruby_libdir}/date.rb -%{ruby_libdir}/delegate* -%{ruby_libdir}/digest* -%{ruby_libdir}/English.rb -%{ruby_libdir}/erb* -%{ruby_libdir}/error_highlight* -%{ruby_libdir}/expect.rb -%{ruby_libdir}/fileutils.rb -%{ruby_libdir}/find.rb -%{ruby_libdir}/forwardable* -%{ruby_libdir}/ipaddr.rb -%{ruby_libdir}/mkmf.rb -%{ruby_libdir}/monitor.rb +%{ruby_libdir}/*.rb +%exclude %{ruby_libdir}/irb.rb +%exclude %{ruby_libdir}/json.rb +%exclude %{ruby_libdir}/openssl.rb +%exclude %{ruby_libdir}/psych.rb +%{ruby_libdir}/cgi +%{ruby_libdir}/digest +%{ruby_libdir}/drb +%{ruby_libdir}/fiddle +%{ruby_libdir}/forwardable +%exclude %{ruby_libdir}/irb +%{ruby_libdir}/matrix %{ruby_libdir}/net -%{ruby_libdir}/objspace* -%{ruby_libdir}/open-uri.rb -%{ruby_libdir}/open3* -%{ruby_libdir}/optionparser.rb -%{ruby_libdir}/optparse* -%{ruby_libdir}/pathname.rb -%{ruby_libdir}/pp.rb -%{ruby_libdir}/prettyprint.rb -%{ruby_libdir}/random -%{ruby_libdir}/resolv.rb -%{ruby_libdir}/ripper* -%{ruby_libdir}/securerandom.rb -%{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}/tempfile.rb -%{ruby_libdir}/timeout* -%{ruby_libdir}/time.rb -%{ruby_libdir}/tmpdir.rb -%{ruby_libdir}/tsort.rb +%{ruby_libdir}/optparse +%{ruby_libdir}/racc +%{ruby_libdir}/rexml +%{ruby_libdir}/rinda +%{ruby_libdir}/ripper +%{ruby_libdir}/rss +%{ruby_libdir}/shell +%{ruby_libdir}/syslog %{ruby_libdir}/unicode_normalize -%{ruby_libdir}/un.rb -%{ruby_libdir}/uri* -%{ruby_libdir}/weakref* -%{ruby_libdir}/yaml* -%{ruby_libdir}/prism* +%{ruby_libdir}/uri +%{ruby_libdir}/webrick +%{ruby_libdir}/yaml # Platform specific libraries. -%{_libdir}/libruby.so.{%{major_minor_version},%{ruby_version}} +%{_libdir}/libruby.so.* %dir %{ruby_libarchdir} %dir %{ruby_libarchdir}/cgi %{ruby_libarchdir}/cgi/escape.so %{ruby_libarchdir}/continuation.so %{ruby_libarchdir}/coverage.so %{ruby_libarchdir}/date_core.so +%{ruby_libarchdir}/dbm.so %dir %{ruby_libarchdir}/digest %{ruby_libarchdir}/digest.so %{ruby_libarchdir}/digest/bubblebabble.so @@ -1340,7 +899,6 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{ruby_libarchdir}/digest/sha2.so %dir %{ruby_libarchdir}/enc %{ruby_libarchdir}/enc/big5.so -%{ruby_libarchdir}/enc/cesu_8.so %{ruby_libarchdir}/enc/cp949.so %{ruby_libarchdir}/enc/emacs_mule.so %{ruby_libarchdir}/enc/encdb.so @@ -1370,7 +928,6 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{ruby_libarchdir}/enc/shift_jis.so %dir %{ruby_libarchdir}/enc/trans %{ruby_libarchdir}/enc/trans/big5.so -%{ruby_libarchdir}/enc/trans/cesu_8.so %{ruby_libarchdir}/enc/trans/chinese.so %{ruby_libarchdir}/enc/trans/ebcdic.so %{ruby_libarchdir}/enc/trans/emoji.so @@ -1401,30 +958,33 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %{ruby_libarchdir}/enc/windows_1254.so %{ruby_libarchdir}/enc/windows_1257.so %{ruby_libarchdir}/enc/windows_31j.so -%{ruby_libarchdir}/erb/escape.so %{ruby_libarchdir}/etc.so %{ruby_libarchdir}/fcntl.so +%{ruby_libarchdir}/fiber.so +%{ruby_libarchdir}/fiddle.so +%{ruby_libarchdir}/gdbm.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}/racc +%{ruby_libarchdir}/racc/cparse.so %dir %{ruby_libarchdir}/rbconfig %{ruby_libarchdir}/rbconfig.rb %{ruby_libarchdir}/rbconfig/sizeof.so +%{ruby_libarchdir}/readline.so %{ruby_libarchdir}/ripper.so +%{ruby_libarchdir}/sdbm.so %{ruby_libarchdir}/socket.so %{ruby_libarchdir}/stringio.so %{ruby_libarchdir}/strscan.so +%{ruby_libarchdir}/syslog.so %{ruby_libarchdir}/zlib.so -# Default gems -%{ruby_libdir}/did_you_mean* -%{ruby_libdir}/openssl* -%{ruby_libarchdir}/openssl.so - -%{?with_systemtap:%{_systemtap_datadir}} +%{tapset_root} %files -n rubygems %{_bindir}/gem @@ -1440,7 +1000,6 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %dir %{gem_dir}/doc %dir %{gem_dir}/extensions %dir %{gem_dir}/gems -%dir %{gem_dir}/plugins %dir %{gem_dir}/specifications %dir %{gem_dir}/specifications/default %dir %{_exec_prefix}/lib*/gems @@ -1448,927 +1007,152 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ %exclude %{gem_dir}/cache/* +# TODO: Gemify these libraries +%{gem_dir}/specifications/default/cmath-1.0.0.gemspec +%{gem_dir}/specifications/default/csv-1.0.0.gemspec +%{gem_dir}/specifications/default/date-1.0.0.gemspec +%{gem_dir}/specifications/default/dbm-1.0.0.gemspec +%{gem_dir}/specifications/default/etc-1.0.0.gemspec +%{gem_dir}/specifications/default/fcntl-1.0.0.gemspec +%{gem_dir}/specifications/default/fiddle-1.0.0.gemspec +%{gem_dir}/specifications/default/fileutils-1.0.2.gemspec +%{gem_dir}/specifications/default/gdbm-2.0.0.gemspec +%{gem_dir}/specifications/default/ipaddr-1.2.0.gemspec +%{gem_dir}/specifications/default/scanf-1.0.0.gemspec +%{gem_dir}/specifications/default/sdbm-1.0.0.gemspec +%{gem_dir}/specifications/default/stringio-0.0.1.gemspec +%{gem_dir}/specifications/default/strscan-1.0.0.gemspec +%{gem_dir}/specifications/default/webrick-1.4.2.gemspec +%{gem_dir}/specifications/default/zlib-1.0.0.gemspec + %files -n rubygems-devel -%{_rpmmacrodir}/macros.rubygems -%{_fileattrsdir}/rubygems.attr +%{_rpmconfigdir}/macros.d/macros.rubygems +%{_rpmconfigdir}/fileattrs/rubygems.attr %{_rpmconfigdir}/rubygems.req %{_rpmconfigdir}/rubygems.prov %{_rpmconfigdir}/rubygems.con -%files default-gems -%gem_spec -d date -%gem_spec -d delegate -%gem_spec -d did_you_mean -%gem_spec -d digest -%gem_spec -d english -%gem_spec -d erb -%gem_instdir erb -%{_bindir}/erb -%{_mandir}/man1/erb* -%gem_spec -d error_highlight -%gem_spec -d etc -%gem_spec -d fcntl -%gem_spec -d fileutils -%gem_spec -d find -%gem_spec -d forwardable -%gem_spec -d io-nonblock -%gem_spec -d io-wait -%gem_spec -d ipaddr -%gem_spec -d net-http -%gem_spec -d net-protocol -%gem_spec -d open3 -%gem_spec -d open-uri -%gem_spec -d optparse -%gem_spec -d openssl -%gem_spec -d pp -%gem_spec -d prettyprint -%gem_spec -d resolv -%gem_spec -d ruby2_keywords -%gem_spec -d securerandom -%gem_spec -d shellwords -%gem_spec -d singleton -%gem_spec -d stringio -%gem_spec -d strscan -%gem_spec -d syntax_suggest -%{_bindir}/syntax_suggest -%gem_instdir syntax_suggest -%gem_spec -d tempfile -%gem_spec -d time -%gem_spec -d timeout -%gem_spec -d tmpdir -%gem_spec -d tsort -%gem_spec -d un -%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-rake +%{_bindir}/rake +%{gem_dir}/gems/rake-%{rake_version} +%{gem_dir}/specifications/rake-%{rake_version}.gemspec +%{_mandir}/man1/rake.1* -%files -n rubygem-irb +%files irb %{_bindir}/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 +%{ruby_libdir}/irb.rb +%{ruby_libdir}/irb %{_mandir}/man1/irb.1* %files -n rubygem-rdoc %{_bindir}/rdoc %{_bindir}/ri -%{gem_instdir rdoc} -%{gem_spec rdoc} -%{gem_plugin rdoc} +%{gem_dir}/gems/rdoc-%{rdoc_version} +%{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec %{_mandir}/man1/ri* %files doc -f .ruby-doc.en -f .ruby-doc.ja %doc README.md %doc ChangeLog -%{?with_systemtap:%doc ruby-exercise.stp} +%doc ruby-exercise.stp %{_datadir}/ri %files -n rubygem-bigdecimal -%{gem_extdir_mri bigdecimal} -%{gem_instdir bigdecimal} -%{gem_spec bigdecimal} +%{ruby_libdir}/bigdecimal +%{ruby_libarchdir}/bigdecimal.so +%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version} +%{gem_dir}/gems/bigdecimal-%{bigdecimal_version} +%{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec + +%files -n rubygem-did_you_mean +%{gem_dir}/gems/did_you_mean-%{did_you_mean_version} +%exclude %{gem_dir}/gems/did_you_mean-%{did_you_mean_version}/.* +%{gem_dir}/specifications/did_you_mean-%{did_you_mean_version}.gemspec %files -n rubygem-io-console %{ruby_libdir}/io %{ruby_libarchdir}/io/console.so -%{gem_extdir_mri io-console} -%{gem_instdir io-console} -%{gem_spec io-console} +%{_libdir}/gems/%{name}/io-console-%{io_console_version} +%{gem_dir}/gems/io-console-%{io_console_version} +%{gem_dir}/specifications/io-console-%{io_console_version}.gemspec %files -n rubygem-json %{ruby_libdir}/json* %{ruby_libarchdir}/json* -%{gem_extdir_mri json} -%{gem_instdir json} -%{gem_spec json} +%{_libdir}/gems/%{name}/json-%{json_version} +%{gem_dir}/gems/json-%{json_version} +%{gem_dir}/specifications/json-%{json_version}.gemspec + +%files -n rubygem-minitest +%{gem_dir}/gems/minitest-%{minitest_version} +%exclude %{gem_dir}/gems/minitest-%{minitest_version}/.* +%{gem_dir}/specifications/minitest-%{minitest_version}.gemspec + +%files -n rubygem-openssl +%{ruby_libdir}/openssl +%{ruby_libdir}/openssl.rb +%{ruby_libarchdir}/openssl.so +%{_libdir}/gems/%{name}/openssl-%{openssl_version} +%{gem_dir}/gems/openssl-%{openssl_version} +%{gem_dir}/specifications/openssl-%{openssl_version}.gemspec + +%files -n rubygem-power_assert +%{gem_dir}/gems/power_assert-%{power_assert_version} +%exclude %{gem_dir}/gems/power_assert-%{power_assert_version}/.* +%{gem_dir}/specifications/power_assert-%{power_assert_version}.gemspec %files -n rubygem-psych %{ruby_libdir}/psych %{ruby_libdir}/psych.rb %{ruby_libarchdir}/psych.so -%{gem_extdir_mri psych} -%dir %{gem_instdir psych} -%{gem_libdir psych} -%{gem_spec psych} +%{_libdir}/gems/%{name}/psych-%{psych_version} +%{gem_dir}/gems/psych-%{psych_version} +%{gem_dir}/specifications/psych-%{psych_version}.gemspec -%files -n rubygem-bundler -%{_bindir}/bundle -%{_bindir}/bundler -%{gem_instdir bundler} -%{gem_spec bundler} -%{_mandir}/man1/bundle*.1* -%{_mandir}/man5/gemfile.5* - -%files bundled-gems -# 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 -%{gem_instdir net-ftp}/Rakefile -%{gem_libdir net-ftp} -%{gem_spec net-ftp} - -# net-imap -%dir %{gem_instdir net-imap} -%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 -%{gem_instdir net-imap}/docs -%{gem_libdir net-imap} -%{gem_instdir net-imap}/rakelib -%{gem_instdir net-imap}/sample -%{gem_spec net-imap} - -# net-pop -%dir %{gem_instdir net-pop} -%{gem_instdir net-pop}/Gemfile -%license %{gem_instdir net-pop}/LICENSE.txt -%doc %{gem_instdir net-pop}/README.md -%{gem_instdir net-pop}/Rakefile -%{gem_libdir net-pop} -%{gem_spec net-pop} - -# net-smtp -%dir %{gem_instdir net-smtp} -%doc %{gem_instdir net-smtp}/NEWS.md -%doc %{gem_instdir net-smtp}/README.md -%license %{gem_instdir net-smtp}/LICENSE.txt -%{gem_libdir net-smtp} -%{gem_spec net-smtp} - -# 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} -%license %{gem_instdir prime}/BSDL -%license %{gem_instdir prime}/COPYING -%doc %{gem_instdir prime}/README.md -%{gem_instdir prime}/Rakefile -%{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 -%doc %{gem_instdir minitest}/README.rdoc -%{gem_instdir minitest}/Rakefile -%{gem_instdir minitest}/test - -%files -n rubygem-power_assert -%dir %{gem_instdir power_assert} -%exclude %{gem_instdir power_assert}/.* -%license %{gem_instdir power_assert}/BSDL -%license %{gem_instdir power_assert}/COPYING -%license %{gem_instdir power_assert}/LEGAL -%{gem_libdir power_assert} -%{gem_spec power_assert} -%{gem_instdir power_assert}/Gemfile -%doc %{gem_instdir power_assert}/README.md -%{gem_instdir power_assert}/Rakefile - -%files -n rubygem-rake -%{_bindir}/rake -%{gem_instdir rake} -%{gem_spec rake} -%{_mandir}/man1/rake.1* - -%files -n rubygem-rbs -%{_bindir}/rbs -%dir %{gem_extdir_mri rbs} -%{gem_extdir_mri rbs}/gem.build_complete -%{gem_extdir_mri rbs}/rbs_extension.so -%dir %{gem_instdir rbs} -%license %{gem_instdir rbs}/BSDL -%doc %{gem_instdir rbs}/CHANGELOG.md -%license %{gem_instdir rbs}/COPYING -%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-net-telnet +%{gem_dir}/gems/net-telnet-%{net_telnet_version} +%exclude %{gem_dir}/gems/net-telnet-%{net_telnet_version}/.* +%{gem_dir}/specifications/net-telnet-%{net_telnet_version}.gemspec %files -n rubygem-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 -%doc %{gem_instdir test-unit}/doc - -%files -n rubygem-racc -%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 -%doc %{gem_instdir racc}/README.rdoc -%doc %{gem_instdir racc}/TODO -%{gem_instdir racc}/bin -%doc %{gem_instdir racc}/doc -%{gem_libdir racc} -%{gem_spec racc} - -%files -n rubygem-rexml -%dir %{gem_instdir rexml} -%license %{gem_instdir rexml}/LICENSE.txt -%doc %{gem_instdir rexml}/NEWS.md -%doc %{gem_instdir rexml}/doc -%{gem_libdir rexml} -%{gem_spec rexml} -%doc %{gem_instdir rexml}/README.md - -%files -n rubygem-rss -%dir %{gem_instdir rss} -%exclude %{gem_instdir rss}/.* -%license %{gem_instdir rss}/LICENSE.txt -%doc %{gem_instdir rss}/NEWS.md -%{gem_libdir rss} -%{gem_spec rss} -%doc %{gem_instdir rss}/README.md - -%files -n rubygem-typeprof -%dir %{gem_instdir typeprof} -%{_bindir}/typeprof -%exclude %{gem_instdir typeprof}/.* -%license %{gem_instdir typeprof}/LICENSE -%{gem_instdir typeprof}/bin -%{gem_instdir typeprof}/typeprof.conf.jsonc -%doc %{gem_instdir typeprof}/doc -%{gem_libdir typeprof} -%{gem_spec typeprof} -%doc %{gem_instdir typeprof}/README.md +%{gem_dir}/gems/test-unit-%{test_unit_version} +%{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec +%files -n rubygem-xmlrpc +%license %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/LICENSE.txt +%dir %{gem_dir}/gems/xmlrpc-%{xmlrpc_version} +%exclude %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/.* +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Gemfile +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Rakefile +%doc %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/README.md +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/bin +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/lib +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/xmlrpc.gemspec +%{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog -* Tue Jan 13 2026 Vít Ondruch - 4.0.1-31 -- Upgrade to Ruby 4.0.1. - Resolves: rhbz#2428861 +* Wed Jul 07 2021 Jun Aruga - 2.5.8-108 +- Fix FTBFS due to incompatible load directive. -* Fri Jan 02 2026 Jarek Prokop - 4.0.0-30 -- Upgrade to Ruby 4.0.0. - Resolves: rhbz#2425358 +* Mon Oct 26 2020 Jun Aruga - 2.5.8-107 +- Update to Ruby 2.5.8. -* 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 - -* Tue Jun 18 2024 Vít Ondruch - 3.3.2-10 -- Make sure hardening configuration flags are correctly applied. - -* Thu Jun 06 2024 Vít Ondruch - 3.3.2-9 -- Upgrade to Ruby 3.3.2. - 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 -- Upgrade to Ruby 3.3.1. - Resolves: rhbz#2276680 - -* Fri Apr 12 2024 Vít Ondruch - 3.3.0-6 -- 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). - -* Mon Jan 22 2024 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 15 2024 Jarek Prokop - 3.3.0-2 -- Fix compiling coroutines with aarch64's branch protection. - -* Tue Jan 02 2024 Vít Ondruch - 3.3.0-1 -- Upgrade to Ruby 3.3.0. - Resolves: rhbz#2255918 - -* Thu Nov 09 2023 Jun Aruga - 3.2.2-183 -- ssl: use ffdhe2048 from RFC 7919 as the default DH group parameters - -* Thu Nov 02 2023 Jarek Prokop - 3.2.2-183 -- Fix typo in bundled provide of rubygem-bundler for rubygem-net-http-persistent. - -* Wed Sep 20 2023 Jun Aruga - 3.2.2-182 -- Fix OpenSSL.fips_mode and OpenSSL::PKey.read in OpenSSL 3 FIPS. - -* Fri Jul 21 2023 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Fri Mar 31 2023 Vít Ondruch - 3.2.2-180 -- Upgrade to Ruby 3.2.2. - Resolves: rhbz#2183284 - -* Thu Feb 09 2023 Vít Ondruch - 3.2.1-179 -- Upgrade to Ruby 3.2.1. - Resolves: rhbz#2168292 - -* Fri Jan 20 2023 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Jan 05 2023 Vít Ondruch - 3.2.0-177 -- Fix ELN FTBFS due to stronger crypto settings. - -* Mon Jan 02 2023 Vít Ondruch - 3.2.0-176 -- Upgrade to Ruby 3.2.0. - -* Thu Dec 22 2022 Yaakov Selkowitz - 3.1.3-175 -- Use SHA256 instead of SHA1 where needed in Openssl tests -- Let OpenSSL choose the digest if digest for Openssl::OCSP::BasicResponse#sign is nil - -* Wed Dec 21 2022 Vít Ondruch - 3.1.3-174 -- Fix for tzdata-2022g. - -* Thu Dec 08 2022 Vít Ondruch - 3.1.3-173 -- Disable MJIT test cases on i686 due to issues with PCH. -- Fix CGI causing issue with leading '.' in domain names. - -* Thu Nov 24 2022 Vít Ondruch - 3.1.3-172 -- Upgrade to Ruby 3.1.3. - -* Tue Nov 22 2022 Vít Ondruch - 3.1.2-171 -- Re-disable package notes. It causes additional issues with installing binary - gems. - -* Thu Sep 29 2022 Vít Ondruch - 3.1.2-170 -- Re-enable package notes. - -* Fri Sep 02 2022 Jarek Prokop - 3.1.2-169 -- Disable fiddle tests that use FFI closures. - Related: rhbz#2040380 - -* Mon Aug 29 2022 Jun Aruga - 3.1.2-168 -- Make RDoc soft dependnecy in IRB. - Resolves: rhbz#2119964 -- Add IRB to ruby-bundled-gems recommends. - Resolves: rhbz#2120562 - -* Wed Aug 24 2022 Jun Aruga - 3.1.2-168 -- Fix tests with Europe/Amsterdam pre-1970 time on tzdata version 2022b. - Resolves: rhbz#2120354 - -* Mon Jul 25 2022 Jarek Prokop - 3.1.2-167 -- Fix directory permissions in one of the rubygems tests. - -* Sat Jul 23 2022 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jun 16 2022 Jarek Prokop - 3.1.2-166 -- Detect compaction support during run time. - -* Tue Jun 07 2022 Jarek Prokop - 3.1.2-165 -- Define GC compaction methods as rb_f_notimplement on unsupported platforms. - -* Thu Apr 14 2022 Vít Ondruch - 3.1.2-164 -- Upgrade to Ruby 3.1.2. -- Use upstream patch for correct build of gem extensions. - -* Mon Apr 04 2022 Vít Ondruch - 3.1.1-163 -- Properly build binary gem extensions. - -* Mon Mar 14 2022 Vít Ondruch - 3.1.1-162 -- Upgrade to Ruby 3.1.1. - -* Thu Feb 10 2022 Vít Ondruch - 3.1.0-161 -- Prevent segfaults running with SystemTap. - -* Wed Jan 26 2022 Vít Ondruch - 3.1.0-160 -- Upgrade to Ruby 3.1.0. - -* Tue Jan 25 2022 Vít Ondruch - 3.0.3-159 -- Update OpenSSL 3 compatibility patches. - -* Thu Jan 20 2022 Vít Ondruch - 3.0.3-158 -- Disable package notes to prevent rubygem- build breakage. - -* Thu Jan 20 2022 Vít Ondruch - 3.0.3-157 -- Fix segfault in `TestArray#test_sample` on s390x. - -* Tue Jan 11 2022 Jun Aruga - 3.0.3-157 -- Remove the patch applied to pass the test/fiddle/test_import.rb on PPC. - -* Mon Jan 10 2022 Miro Hrončok - 3.0.3-156 -- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34 - -* Thu Dec 09 2021 Vít Ondruch - 3.0.3-155 -- Fix loading of default gems. - Resolves: rhbz#2027099 - -* Thu Nov 25 2021 Vít Ondruch - 3.0.3-154 -- Upgrade to Ruby 3.0.3. - -* Fri Nov 05 2021 Vít Ondruch - 3.0.2-153 -- Fix OpenSSL 3.0 compatibility. - Resolves: rhbz#2021922 - -* Tue Sep 14 2021 Sahana Prasad -- Rebuilt with OpenSSL 3.0.0 - -* Tue Aug 24 2021 Vít Ondruch - 3.0.2-152 -- Enable LTO. -- Load user installed RubyGems plugins. - -* Fri Jul 23 2021 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jul 13 2021 Jarek Prokop - 3.0.2-150 -- Upgrade to Ruby 3.0.2. -- Fix command injection vulnerability in RDoc. - Resolves: CVE-2021-31799 -- Fix FTP PASV command response can cause Net::FTP to connect to arbitrary host. - Resolves: CVE-2021-31810 -- Fix StartTLS stripping vulnerability in Net::IMAP. - Resolves: CVE-2021-32066 -- Fix dependencies of gems with explicit source installed from a different - source. - Resolves: CVE-2020-36327 - -* Mon May 17 2021 Timm Bäder - 3.0.1-149 -- Pass ldflags to gem install via CONFIGURE_ARGS - -* Tue Apr 06 2021 Vít Ondruch - 3.0.1-148 -- Upgrade to Ruby 3.0.1. - -* Thu Apr 01 2021 Vít Ondruch - 3.0.0-147 -- Remove IRB dependency from rubygem-rdoc. - -* Tue Mar 02 2021 Vít Ondruch - 3.0.0-146 -- Fix flaky excon test suite. -- Properly support DWARF5 debug information. - Resolves: rhbz#1920533 - -* Mon Jan 25 2021 Vít Ondruch - 3.0.0-145 -- Bundle OpenSSL into StdLib. -- Use proper path for plugin wrappers. - -* Sat Jan 16 2021 Vít Ondruch - 3.0.0-144 -- Fix SEGFAULT in rubygem-shoulda-matchers test suite. - -* Tue Jan 12 2021 Vít Ondruch - 3.0.0-143 -- Provide `gem.build_complete` file for binary gems. - -* Mon Jan 11 2021 Vít Ondruch - 3.0.0-142 -- Re-enable test suite. - -* Fri Jan 8 2021 Vít Ondruch - 3.0.0-141 -- ruby-default-gems have to depend on rubygem(io-console) due to reline. - -* Fri Jan 8 2021 Vít Ondruch - 3.0.0-140 -- Fix SEGFAULT preventing rubygem-unicode to build on armv7hl. - -* Wed Jan 6 2021 Vít Ondruch - 3.0.0-139 -- Add support for reworked RubyGems plugins. - -* Mon Jan 04 2021 Vít Ondruch - 3.0.0-138 -- Upgrade to Ruby 3.0.0. -- Extract RSS and REXML into separate subpackages, because they were moved from - default gems to bundled gems. -- Obsolete Net::Telnet and XMLRPC packages, because they were dropped from Ruby. - -* Tue Dec 15 16:26:46 CET 2020 Pavel Valena - 2.7.2-137 -- Add Recommends: redhat-rpm-config to devel subpackage. - Resolves: rhbz#1905222 - -* Tue Nov 24 18:16:02 CET 2020 Vít Ondruch - 2.7.2-136 -- Add explicit `BR: make`. - -* Tue Oct 13 2020 Vít Ondruch - 2.7.2-135 -- Upgrade to Ruby 2.7.2. - -* Wed Jul 29 2020 Fedora Release Engineering - 2.7.1-134 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Vít Ondruch - 2.7.1-133 +* Wed Oct 14 2020 Jun Aruga - 2.5.5-106 +- Fix checksec 2.0+ compatibility. +- Fix FTBFS due to glibc 2.31.9000 implementing lchmod(2). +- Fix FTBFS due to libyaml 0.2.5. - Disable LTO, which appear to cause issues with SIGSEV handler. - Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add. +- Use larger keys for test_ssl test failures. +- Regenerate server certificates with larger keys for open-uri tests. +- Use larger keys for webrick test failures. +- Use larger keys for drb test failures. +- Regenerate certificates with larger keys for rubygems tests. -* Tue Jul 14 2020 Tom Stellard - 2.7.1-133 -- Use make macros -- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro - -* Wed Jun 24 2020 Jun Aruga - 2.7.1-132 -- Add ruby-default-gems dependency on irb. - Resolves: rhbz#1850541 - -* Wed Jun 24 2020 Vít Ondruch - 2.7.1-132 -- Fix `require` behavior allowing to load libraries multiple times. - Resolves: rhbz#1835836 - -* Fri May 15 2020 Vít Ondruch - 2.7.1-131 -- Relax rubygems-devel dependency on rubygems. - -* Wed Apr 08 2020 Vít Ondruch - 2.7.1-130 -- Bundle did_you_mean into StdLib. - Resolves: rhbz#1817178 -- Prevent issues with openssl loading when RubyGems are disabled. - -* Thu Apr 02 2020 Vít Ondruch - 2.7.1-129 -- Add ruby-default-gems subpackage shipping all extra default gem content. -- Bundle Racc into StdLib. - -* Wed Apr 01 2020 Vít Ondruch - 2.7.1-128 -- Upgrade to Ruby 2.7.1. -- Fix FTBFS due to glibc 2.31.9000 implementing lchmod(2). - -* Tue Jan 28 2020 Vít Ondruch - 2.7.0-127 -- Provide StdLib links for Racc and install it by default. - -* Thu Jan 16 2020 Vít Ondruch - 2.7.0-126 -- Make rubygem(did_you_mean) hard dependency. - -* Tue Jan 07 2020 Vít Ondruch - 2.7.0-125 -- Upgrade to Ruby 2.7.0. -- Drop useless %%{rubygems_default_filter}. - -* Tue Oct 08 2019 Slava Kardakov - 2.6.5-124 -- Update to Ruby 2.6.5. - -* Fri Aug 30 2019 Pavel Valena - 2.6.4-123 -- Update to Ruby 2.6.4. -- Fix checksec 2.0+ compatibility. - -* Fri Jul 26 2019 Fedora Release Engineering - 2.6.3-122 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Tue Jun 25 2019 Vít Ondruch - 2.6.3-121 -- Properly support %%prerelease in %%gemspec_ macros. - -* Thu Apr 25 2019 Pavel Valena - 2.6.3-120 -- Update to Ruby 2.6.3. - -* Thu Mar 28 2019 Arjen Heidinga - 2.6.2-119 -- Add zlib-devel explicitly as BuildRequirement. - -* Thu Mar 21 2019 Vít Ondruch - 2.6.2-118 -- Link IRB files instead of directories, which RPM cannot handle - during updates (rhbz#1691039). - -* Tue Mar 19 2019 Vít Ondruch - 2.6.2-117 -- Link IRB back to StdLib. - -* Thu Mar 14 2019 Vít Ondruch - 2.6.2-116 -- Upgrade to Ruby 2.6.2. - -* Tue Mar 05 2019 Vít Ondruch - 2.6.1-115 +* Tue Apr 30 2019 Jun Aruga - 2.5.5-105 +- Update to Ruby 2.5.5. - Fix ".include =" support in openssl.cnf (rhbz#1668916). -* Sun Feb 17 2019 Igor Gnatenko - 2.6.1-114 -- Rebuild for readline 8.0 - -* Thu Feb 07 2019 Vít Ondruch - 2.6.1-113 -- Don't ship .stp files when SystemTap support is disabled. - -* Thu Jan 31 2019 Vít Ondruch - 2.6.1-112 -- Upgrade to Ruby 2.6.1. - -* Thu Jan 24 2019 Vít Ondruch - 2.6.0-111 -- Properly generate versioned ruby(rubygems) dependencies. -- Loosen RDoc dependency. - -* Thu Jan 17 2019 Vít Ondruch - 2.6.0-110 -- Upgrade to Ruby 2.6.0. - * Mon Jan 14 2019 Björn Esser - 2.5.3-104 - Rebuilt for libcrypt.so.2 (#1666033) @@ -3152,7 +1936,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - Disable the static library building. * Tue Dec 04 2007 Release Engineering - 1.8.6.111-2 -- Rebuild for openssl bump + - Rebuild for openssl bump * Wed Oct 31 2007 Akira TAGOH - Fix the dead link. diff --git a/rubygems.con b/rubygems.con index bcdeddc..1a99ed0 100644 --- a/rubygems.con +++ b/rubygems.con @@ -19,7 +19,7 @@ module RubyGemsReq end # Report conflicting gem dependencies including their version. - def self.gem_dependencies(specification) + def self.gem_depenencies(specification) specification.runtime_dependencies.each do |dependency| conflict_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement| requirement_string = "rubygem(#{dependency.name}) #{requirement}" @@ -39,7 +39,7 @@ module RubyGemsReq begin specification = Gem::Specification.load filename - gem_dependencies(specification) + gem_depenencies(specification) rescue => e # Ignore all errors. end diff --git a/rubygems.prov b/rubygems.prov index f23ec3f..b7c9777 100644 --- a/rubygems.prov +++ b/rubygems.prov @@ -9,9 +9,9 @@ module RubyGemsProv def self.normalize_prerelease(version) if version.prerelease? prerelease = version.version.sub /^#{version.release}\./, '' - "#{version.release}~#{prerelease}" + "#{version.release}-0.1.#{prerelease}" else - version.release + "#{version.release}-1" end end end diff --git a/rubygems.req b/rubygems.req index 70aebd4..d75247d 100644 --- a/rubygems.req +++ b/rubygems.req @@ -35,35 +35,31 @@ module RubyGemsReq # with RPM .spec file. def self.requirement_versions_to_rpm(requirement) self.expand_requirement(requirement.requirements).map do |op, version| - version == Gem::Version.new(0) ? "" : " #{op} #{version}" + version == Gem::Version.new(0) ? "" : "#{op} #{version}" end end - - # Compose dependency together with its requirements in RPM rich dependency - # string. - def self.compose_dependency_string(name, requirements) - dependency_strings = requirements.map { |requirement| name + requirement } - dependency_string = dependency_strings.join(' with ') - dependency_string.prepend('(').concat(')') if dependency_strings.length > 1 - dependency_string - end end # Report RubyGems dependency, versioned if required. def self.rubygems_dependency(specification) - dependency_name = "ruby(rubygems)" - requirements = Helpers::requirement_versions_to_rpm(specification.required_rubygems_version) - - puts Helpers::compose_dependency_string(dependency_name, requirements) + Helpers::requirement_versions_to_rpm(specification.required_rubygems_version).each do |requirement| + dependency_string = "ruby(rubygems)" + dependency_string += " #{specification.required_rubygems_version}" if requirement&.length > 0 + puts dependency_string + end end # Report all gem dependencies including their version. - def self.gem_dependencies(specification) + def self.gem_depenencies(specification) specification.runtime_dependencies.each do |dependency| - dependency_name = "rubygem(#{dependency.name})" - requirements = Helpers::requirement_versions_to_rpm(dependency.requirement) - - puts Helpers::compose_dependency_string(dependency_name, requirements) + dependency_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement| + requirement_string = "rubygem(#{dependency.name})" + requirement_string += " #{requirement}" if requirement&.length > 0 + requirement_string + end + dependency_string = dependency_strings.join(' with ') + dependency_string.prepend('(').concat(')') if dependency_strings.length > 1 + puts dependency_string end end @@ -75,7 +71,7 @@ module RubyGemsReq specification = Gem::Specification.load filename rubygems_dependency(specification) - gem_dependencies(specification) + gem_depenencies(specification) rescue => e # Ignore all errors. end diff --git a/sources b/sources index f1f97eb..7893c82 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ruby-4.0.1.tar.xz) = b67d9d1f97ba30200d103f8454e39dc2d0450819d51d91eb5451d44b0bafc56d2fa48bb1be6c5081babe5828f679984bad02b9bcee7441f6bd34c0a95b8f200b +SHA512 (ruby-2.5.8.tar.xz) = 2886be764a454425c5beef2777c64a70ee0d048b07896b327633d904f5077fea4299526689f9e2ac4dcd2fc4811cf9a6c8ce75367ed35d29dfe1a54222872e0d diff --git a/test_openssl_fips.rb b/test_openssl_fips.rb deleted file mode 100644 index ffc7883..0000000 --- a/test_openssl_fips.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'openssl' - -# Run openssl tests in OpenSSL FIPS. See the link below for how to test. -# https://github.com/ruby/openssl/blob/master/.github/workflows/test.yml -# - step name: test on fips module - -# Listing the testing files by an array explicitly rather than the `Dir.glob` -# to prevent the test files from not loading unintentionally. -TEST_FILES = %w[ - test/openssl/test_fips.rb - test/openssl/test_pkey.rb -].freeze - -if ARGV.empty? - puts 'ERROR: Argument base_dir required.' - puts "Usage: #{__FILE__} base_dir [options]" - exit false -end -BASE_DIR = ARGV[0] -abs_test_files = TEST_FILES.map { |file| File.join(BASE_DIR, file) } - -# Set Fedora/RHEL downstream OpenSSL downstream environment variable to enable -# FIPS module in non-FIPS OS environment. It is available in Fedora 38 or later -# versions. -# https://src.fedoraproject.org/rpms/openssl/blob/rawhide/f/0009-Add-Kernel-FIPS-mode-flag-support.patch -ENV['OPENSSL_FORCE_FIPS_MODE'] = '1' -# A flag to tell the tests the current environment is FIPS enabled. -# https://github.com/ruby/openssl/blob/master/test/openssl/test_fips.rb -ENV['TEST_RUBY_OPENSSL_FIPS_ENABLED'] = 'true' - -abs_test_files.each do |file| - puts "INFO: Loading #{file}." - require file -end diff --git a/test_rubygems_con.rb b/test_rubygems_con.rb deleted file mode 100644 index e124a49..0000000 --- a/test_rubygems_con.rb +++ /dev/null @@ -1,124 +0,0 @@ -# frozen_string_literal: true - -require 'test/unit' -require 'rpm_test_helper' - -class TestRubyGemsCon < Test::Unit::TestCase - include RPMTestHelper - - def test_filter_out_regular_requirements - gem_i = GemInfo.new - - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - - deps = [ Dependency.new('bar') ] - gem_i.dependencies = deps - - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - - deps = [ - Dependency.new('bar'), - Dependency.new('baq'), - Dependency.new('quz') - ] - - gem_i.dependencies = deps - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - - deps = [ - Dependency.new('bar', ['>= 4.1']), - Dependency.new('baz', ['~> 3.2']), - Dependency.new('quz', ['>= 5.6']) - ] - - gem_i.dependencies = deps - - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - end - - def test_single_gem_single_version_conflict - con = Dependency.new('bar', ['!= 0.4.4']) - - gem_i = GemInfo.new(dependencies: [ con ]) - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{con.to_rpm_str} = 0.4.4\n", lines.first) - end - - def test_multiple_gems_with_single_conflict - cons = [ - Dependency.new('bar', ['!= 1.1']), - Dependency.new('baq', ['!= 1.2.2']), - Dependency.new('quz', ['!= 1.3']) - ] - - gem_i = GemInfo.new(dependencies: cons) - - lines = run_generator_single_file(gem_i) - - assert_equal(3, lines.size) - - assert_equal("#{cons[0].to_rpm_str} = 1.1\n" , lines[0]) - assert_equal("#{cons[1].to_rpm_str} = 1.2.2\n", lines[1]) - assert_equal("#{cons[2].to_rpm_str} = 1.3\n" , lines[2]) - end - - def test_multiple_conflicts_on_single_gem - con = Dependency.new('bar', ['!= 2.3', '!= 2.4']) - - gem_i = GemInfo.new(dependencies: [con]) - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - rpm_name = con.to_rpm_str - left_rpm_constraint = "(#{rpm_name} = 2.3 with " - right_rpm_constraint = "#{rpm_name} = 2.4)\n" - assert_equal((left_rpm_constraint + right_rpm_constraint), lines[0]) - - con = Dependency.new('bar', ['!= 2.3', '!= 2.4', '!= 4.5']) - - gem_i = GemInfo.new(dependencies: [ con ]) - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - - rpm_name = con.to_rpm_str - left_rpm_constraint = "(#{rpm_name} = 2.3 with " - middle_rpm_constraint = "#{rpm_name} = 2.4 with " - right_rpm_constraint = "#{rpm_name} = 4.5)\n" - - assert_equal((left_rpm_constraint + middle_rpm_constraint + right_rpm_constraint), lines[0]) - end - - def test_generates_conflicts_while_ignoring_regular_requirements - deps = [ - Dependency.new('bar', ['>= 2.3', '!= 2.4.2']), - Dependency.new('quz', ['~> 3.0', '!= 3.2']) - ] - - gem_i = GemInfo.new(dependencies: deps) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - - rpm_name = deps[0].to_rpm_str - rpm_constraint = "#{rpm_name} = 2.4.2\n" - assert_equal(rpm_constraint, lines[0]) - - rpm_name = deps[1].to_rpm_str - rpm_constraint = "#{rpm_name} = 3.2\n" - assert_equal(rpm_constraint, lines[1]) - end -end diff --git a/test_rubygems_prov.rb b/test_rubygems_prov.rb deleted file mode 100644 index b660ff6..0000000 --- a/test_rubygems_prov.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -require 'test/unit' -require 'rpm_test_helper' - -class TestRubyGemsProv < Test::Unit::TestCase - include RPMTestHelper - - def test_provides_the_gem_version - gem_i = GemInfo.new(version: '1.2') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first) - - gem_i = GemInfo.new(name: 'somegem_foo', version: '4.5.6') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first) - - deps = [ - Dependency.new('bar'), - Dependency.new('baq', [">= 1.2"]), - Dependency.new('quz', ["!= 3.2"]) - ] - gem_i = GemInfo.new(dependencies: deps) - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first) - end - - def test_translates_prelease_version_provides_from_rubygems_to_rpm - gem_i = GemInfo.new(version: '1.2.3.dev') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev\n", lines.first) - - gem_i = GemInfo.new(name: 'foo2', version: '1.2.3.dev.2') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev.2\n", lines.first) - end -end diff --git a/test_rubygems_req.rb b/test_rubygems_req.rb deleted file mode 100644 index 490923e..0000000 --- a/test_rubygems_req.rb +++ /dev/null @@ -1,205 +0,0 @@ -# frozen_string_literal: true - -require 'test/unit' -require 'rpm_test_helper' - -class TestRubyGemsReq < Test::Unit::TestCase - include RPMTestHelper - - def test_depends_on_rubygems - gem_i = GemInfo.new - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{helper_rubygems_dependency}\n", lines.first) - end - - def test_requires_rubygems_and_dependency - dep = Dependency.new('bar') - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{helper_rubygems_dependency}\n", lines.first) - assert_equal("#{dep.to_rpm_str}\n", lines[1]) - end - - def test_requires_multiple_dependencies_with_constraint - constraints = [ - '>= 3.0', - '>= 3.0.0', - '>= 3', - '= 1.0.2', - '= 3.0', - '< 3.2', - '<= 3.4' - ] - - dependencies = [] - constraints.each_with_index do |constraint, idx| - dependencies << Dependency.new("bar#{idx}", [constraint]) - end - - gem_i = GemInfo.new(dependencies: dependencies) - - lines = run_generator_single_file(gem_i) - # + 1 for the rubygems dependency - assert_equal(constraints.size + 1, lines.size) - dependencies.each_with_index do |dep, idx| - rpm_dep_name = dep.to_rpm_str - # Start indexing lines at 1, to jump over rubygems dependency - assert_equal("#{rpm_dep_name} #{constraints[idx]}\n", lines[idx + 1]) - end - end - - def test_expands_pessimistic_constraint_for_rpm - dep = Dependency.new('bar', ['~> 1.2']) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - - rpm_dep_name = dep.to_rpm_str - left_constraint = "#{rpm_dep_name} >= 1.2" - right_constraint = "#{rpm_dep_name} < 2" - expected_constraint = "(#{left_constraint} with #{right_constraint})\n" - assert_equal(expected_constraint, lines[1]) - end - - def test_multiple_pessimistically_constrained_dependencies - dependencies = [] - dep_map = [ - { - constraint: '~> 1.2.3', - expanded_left: '>= 1.2.3', - expanded_rigth: '< 1.3', - gem_name: 'bar1' - }, - { - constraint: '~> 1.2', - expanded_left: '>= 1.2', - expanded_rigth: '< 2', - gem_name: 'bar2' - }, - { - constraint: '~> 3', - expanded_left: '>= 3', - expanded_rigth: '< 4', - gem_name: 'bar3' - } - ].each do |deps| - dependencies << Dependency.new(deps[:gem_name], [deps[:constraint]]) - end - - gem_i = GemInfo.new(dependencies: dependencies) - - lines = run_generator_single_file(gem_i) - - assert_equal(dep_map.size + 1, lines.size) - - dep_map.each_with_index do |hash, idx| - rpm_dep_name = dependencies[idx].to_rpm_str - left_constraint = rpm_dep_name + ' ' + hash[:expanded_left] - right_constraint = rpm_dep_name + ' ' + hash[:expanded_rigth] - expected_constraint = "(#{left_constraint} with #{right_constraint})\n" - assert_equal(expected_constraint, lines[idx + 1]) - end - end - - def test_multiple_constraints_on_one_dependency_composes_constraints_for_RPM - # The quoting here depends on how the constraint is expanded in the helpers. - # right now the form is `["#{constraint}"]`, therefore we have to not specify - # left and right quotes. - constraints = ['>= 0.2.3', '<= 0.2.5'] - dep = Dependency.new('baz', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - rpm_dep_name = dep.to_rpm_str - assert_equal("(#{rpm_dep_name} >= 0.2.3 with #{rpm_dep_name} <= 0.2.5)\n", lines[1]) - - # Not sure who would compose a dependency like this, but it's possible - # to do with the current generator - constraints = ['> 0.4.5', '< 0.6.4', '>= 2.3', '<= 2.5.3'] - dep = Dependency.new('qux', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - rpm_dep = dep.to_rpm_str - expected_str = "(#{rpm_dep} > 0.4.5 with #{rpm_dep} < 0.6.4 with " \ - "#{rpm_dep} >= 2.3 with #{rpm_dep} <= 2.5.3)\n" - - assert_equal(2, lines.size) - assert_equal(expected_str, lines[1]) - end - - # https://bugzilla.redhat.com/show_bug.cgi?id=1561487 - def test_depends_on_gem_with_version_conflict - dep = Dependency.new('baz', ['!= 0.4']) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str}\n", lines[1]) - end - - def test_filters_conflict_from_regular_version_constraints - constraint = ['> 1.2.4', '!= 1.2.7'] - dep = Dependency.new('baq', constraint) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1]) - end - - def test_filtering_conflicts_is_not_depending_on_contraint_ordering - constraints = ['!= 1.2.7', '> 1.2.4'] - dep = Dependency.new('baq', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1]) - end - - def test_filters_multiple_conflicts_from_dependency - omit "Case not yet supported." - constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '!= 4.8'] - dep = Dependency.new('baf', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str}\n", lines[1]) - end - - def test_filters_multiple_conflicts_from_dependency_but_keeps_regular_constraint - constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '<= 4.8'] - dep = Dependency.new('bam', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str} <= 4.8\n", lines[1]) - end -end