#48 [WIP] Upgrade to Ruby 2.7
Closed 4 years ago by vondruch. Opened 4 years ago by vondruch.

file removed
-8
@@ -1,8 +0,0 @@ 

- if defined?(Gem)

-   require 'rubygems.rb'

- 

-   begin

-     require 'abrt'

-   rescue LoadError

-   end

- end

file modified
-10
@@ -32,16 +32,6 @@ 

  %{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.

  

@@ -11,7 +11,7 @@ 

  index 682eb46..e6b1445 100644

  --- a/lib/mkmf.rb

  +++ b/lib/mkmf.rb

- @@ -1911,7 +1911,7 @@ def configuration(srcdir)

+ @@ -1930,7 +1930,7 @@ def configuration(srcdir)

   SHELL = /bin/sh

   

   # V=0 quiet, V=1 verbose.  other values don't work.

@@ -1,58 +0,0 @@ 

- From 996012f6abe0ce4d68a2de9f249935c6d5b467bc Mon Sep 17 00:00:00 2001

- From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>

- 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

- @@ -154,6 +154,8 @@ BOOTSTRAPRUBY = @BOOTSTRAPRUBY@

-  COROUTINE_H = @X_FIBER_COROUTINE_H@

-  COROUTINE_OBJ = $(COROUTINE_H:.h=.@OBJEXT@)

-  

- +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

- @@ -156,7 +156,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

- @@ -3855,6 +3855,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

- 

@@ -8,10 +8,10 @@ 

   1 file changed, 5 insertions(+)

  

  diff --git a/configure.ac b/configure.ac

- index 11fc237552..b77e88fc37 100644

+ index d261ea57b5..3c13076b82 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -3085,6 +3085,11 @@ AS_IF([test ${multiarch+set}], [

+ @@ -3102,6 +3102,11 @@ AS_IF([test ${multiarch+set}], [

   ])

   

   archlibdir='${libdir}/${arch}'
@@ -24,5 +24,5 @@ 

   archincludedir='${includedir}/${arch}'

   sitearchincludedir='${includedir}/${sitearch}'

  -- 

- 1.8.3.1

+ 2.22.0

  

@@ -11,10 +11,10 @@ 

   3 files changed, 15 insertions(+), 2 deletions(-)

  

  diff --git a/configure.ac b/configure.ac

- index 999e2d6d5d..11fc237552 100644

+ index c42436c23d..d261ea57b5 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -3710,7 +3710,8 @@ AS_CASE(["$ruby_version_dir_name"],

+ @@ -3740,7 +3740,8 @@ AS_CASE(["$ruby_version_dir_name"],

   ruby_version_dir=/'${ruby_version_dir_name}'

   

   if test -z "${ruby_version_dir_name}"; then

@@ -8,10 +8,10 @@ 

   1 file changed, 2 insertions(+)

  

  diff --git a/configure.ac b/configure.ac

- index b77e88fc37..6bba453e3c 100644

+ index 3c13076b82..93af30321d 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -3774,6 +3774,8 @@ AC_SUBST(vendorarchdir)dnl

+ @@ -3804,6 +3804,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

   

@@ -12,10 +12,10 @@ 

   4 files changed, 22 insertions(+)

  

  diff --git a/configure.ac b/configure.ac

- index 6bba453e3c..028ef7ca3e 100644

+ index 93af30321d..bc13397e0e 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -3746,6 +3746,10 @@ AC_ARG_WITH(vendorarchdir,

+ @@ -3776,6 +3776,10 @@ AC_ARG_WITH(vendorarchdir,

               [vendorarchdir=$withval],

               [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])

   
@@ -26,7 +26,7 @@ 

   AS_IF([test "${LOAD_RELATIVE+set}"], [

       AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)

       RUBY_EXEC_PREFIX=''

- @@ -3770,6 +3774,7 @@ AC_SUBST(sitearchdir)dnl

+ @@ -3800,6 +3804,7 @@ AC_SUBST(sitearchdir)dnl

   AC_SUBST(vendordir)dnl

   AC_SUBST(vendorlibdir)dnl

   AC_SUBST(vendorarchdir)dnl
@@ -67,7 +67,7 @@ 

  index b47b6e1..0b99408 100755

  --- a/tool/rbinstall.rb

  +++ b/tool/rbinstall.rb

- @@ -334,6 +334,7 @@ def CONFIG.[](name, mandatory = false)

+ @@ -338,6 +338,7 @@ def CONFIG.[](name, mandatory = false)

   sitearchlibdir = CONFIG["sitearchdir"]

   vendorlibdir = CONFIG["vendorlibdir"]

   vendorarchlibdir = CONFIG["vendorarchdir"]
@@ -75,7 +75,7 @@ 

   mandir = CONFIG["mandir", true]

   docdir = CONFIG["docdir", true]

   enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'

- @@ -560,7 +561,16 @@ def stub

+ @@ -565,7 +566,16 @@ def stub

   install?(:local, :comm, :lib) do

     prepare "library scripts", rubylibdir

     noinst = %w[*.txt *.rdoc *.gemspec]

@@ -1,28 +0,0 @@ 

- From 07eb5f5e775dec01a92a8b13910eaced9e8ee0cd Mon Sep 17 00:00:00 2001

- From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>

- 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

- @@ -1052,9 +1052,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)

-  

-  $(GOLF_PRELUDE_C): $(COMPILE_PRELUDE) {$(srcdir)}golf_prelude.rb

- -- 

- 2.6.3

- 

file modified
+26 -34
@@ -17,10 +17,10 @@ 

   2 files changed, 35 insertions(+), 30 deletions(-)

  

  diff --git a/configure.ac b/configure.ac

- index 8ea969412f..a00f2b6776 100644

+ index 80b137e380..63cd3b4f8b 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -3661,9 +3661,6 @@ AS_CASE(["$target_os"],

+ @@ -3691,9 +3691,6 @@ AS_CASE(["$target_os"],

       rubyw_install_name='$(RUBYW_INSTALL_NAME)'

       ])

   
@@ -30,7 +30,7 @@ 

   rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}

   AC_ARG_WITH(rubyarchprefix,

   	    AS_HELP_STRING([--with-rubyarchprefix=DIR],

- @@ -3686,56 +3683,62 @@ AC_ARG_WITH(ridir,

+ @@ -3716,56 +3713,62 @@ AC_ARG_WITH(ridir,

   AC_SUBST(ridir)

   AC_SUBST(RI_BASE_NAME)

   
@@ -120,7 +120,7 @@ 

   

   AS_IF([test "${LOAD_RELATIVE+set}"], [

       AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)

- @@ -3752,6 +3755,7 @@ AC_SUBST(sitearchincludedir)dnl

+ @@ -3782,6 +3785,7 @@ AC_SUBST(sitearchincludedir)dnl

   AC_SUBST(arch)dnl

   AC_SUBST(sitearch)dnl

   AC_SUBST(ruby_version)dnl
@@ -171,7 +171,7 @@ 

  index d4c110e..d39c9a6 100755

  --- a/tool/rbinstall.rb

  +++ b/tool/rbinstall.rb

- @@ -424,7 +424,7 @@ def CONFIG.[](name, mandatory = false)

+ @@ -428,7 +428,7 @@ def CONFIG.[](name, mandatory = false)

   

   install?(:doc, :rdoc) do

     if $rdocdir
@@ -181,48 +181,40 @@ 

       install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode)

     end

  -- 

- 2.1.0

+ 2.23.0

  

  

- From f8d136f9a46d1fe87eba622ab9665935d05e981b Mon Sep 17 00:00:00 2001

+ From 9f0ec0233f618cbb862629816b22491c3df79578 Mon Sep 17 00:00:00 2001

  From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>

  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  | 11 ++++++-----

-  test/rubygems/test_gem.rb |  5 +++--

-  2 files changed, 9 insertions(+), 7 deletions(-)

+  lib/rubygems/defaults.rb  | 9 +++++----

+  test/rubygems/test_gem.rb | 5 +++--

+  2 files changed, 8 insertions(+), 6 deletions(-)

  

  diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb

- index 55ca080..75eea2b 100644

+ index d4ff4a262c..3f9a5bf590 100644

  --- a/lib/rubygems/defaults.rb

  +++ b/lib/rubygems/defaults.rb

- @@ -32,20 +32,20 @@ def self.default_dir

+ @@ -32,13 +32,13 @@ 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']

-               [

-                 RbConfig::CONFIG['rubylibprefix'],

-                 'gems',

- -               RbConfig::CONFIG['ruby_version']

- +               RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']

-               ]

              else

                [

-                 RbConfig::CONFIG['libdir'],

-                 ruby_engine,

+                 RbConfig::CONFIG['rubylibprefix'],

                  'gems',

  -               RbConfig::CONFIG['ruby_version']

  +               RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']

                ]

              end

   

- @@ -75,7 +75,8 @@ def self.default_rubygems_dirs

+ @@ -75,7 +75,8 @@ def self.default_specifications_dir

   

     def self.user_dir

       parts = [Gem.user_home, '.gem', ruby_engine]
@@ -232,7 +224,7 @@ 

       File.join parts

     end

   

- @@ -172,7 +173,7 @@ def self.vendor_dir # :nodoc:

+ @@ -158,7 +159,7 @@ def self.vendor_dir # :nodoc:

       return nil unless RbConfig::CONFIG.key? 'vendordir'

   

       File.join RbConfig::CONFIG['vendordir'], 'gems',
@@ -242,10 +234,10 @@ 

   

     ##

  diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb

- index 0428bea..b6e090e 100644

+ index b25068405d..e9fef4a311 100644

  --- a/test/rubygems/test_gem.rb

  +++ b/test/rubygems/test_gem.rb

- @@ -1288,7 +1288,8 @@ def test_self_use_paths

+ @@ -1353,7 +1353,8 @@ def test_self_use_paths

   

     def test_self_user_dir

       parts = [@userhome, '.gem', Gem.ruby_engine]
@@ -255,15 +247,15 @@ 

   

       assert_equal File.join(parts), Gem.user_dir

     end

- @@ -1365,7 +1366,7 @@ def test_self_gzip

-    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']

+ @@ -1429,7 +1430,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

  
@@ -282,7 +274,7 @@ 

  index a00f2b6776..999e2d6d5d 100644

  --- a/configure.ac

  +++ b/configure.ac

- @@ -101,7 +101,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`

+ @@ -98,7 +98,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)

@@ -8,14 +8,14 @@ 

  

  This workaround rhbz#1361037

  ---

-  test/fiddle/helper.rb | 89 -------------------------------------------

-  1 file changed, 89 deletions(-)

+  test/fiddle/helper.rb | 105 ------------------------------------------

+  1 file changed, 105 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 @@

+ @@ -6,111 +6,6 @@

   

   libc_so = libm_so = nil

   
@@ -23,12 +23,28 @@ 

  -when /cygwin/

  -  libc_so = "cygwin1.dll"

  -  libm_so = "cygwin1.dll"

+ -when /android/

+ -  libdir = '/system/lib'

+ -  if [0].pack('L!').size == 8

+ -    libdir = '/system/lib64'

+ -  end

+ -  libc_so = File.join(libdir, "libc.so")

+ -  libm_so = File.join(libdir, "libm.so")

  -when /linux/

  -  libdir = '/lib'

- -  case [0].pack('L!').size

+ -  case RbConfig::SIZEOF['void*']

  -  when 4

  -    # 32-bit ruby

- -    libdir = '/lib32' if File.directory? '/lib32'

+ -    case RUBY_PLATFORM

+ -    when /armv\w+-linux/

+ -      # In the ARM 32-bit libc package such as libc6:armhf libc6:armel,

+ -      # libc.so and libm.so are installed to /lib/arm-linux-gnu*.

+ -      # It's not installed to /lib32.

+ -      dirs = Dir.glob('/lib/arm-linux-gnu*')

+ -      libdir = dirs[0] if dirs && File.directory?(dirs[0])

+ -    else

+ -      libdir = '/lib32' if File.directory? '/lib32'

+ -    end

  -  when 8

  -    # 64-bit ruby

  -    libdir = '/lib64' if File.directory? '/lib64'
@@ -59,7 +75,7 @@ 

  -  libm_so = "/usr/lib/libm.so"

  -when /solaris/

  -  libdir = '/lib'

- -  case [0].pack('L!').size

+ -  case RbConfig::SIZEOF['void*']

  -  when 4

  -    # 32-bit ruby

  -    libdir = '/lib' if File.directory? '/lib'
@@ -110,7 +126,7 @@ 

  -

   if !libc_so || !libm_so

     ruby = EnvUtil.rubybin

-    ldd = `ldd #{ruby}`

+    # When the ruby binary is 32-bit and the host is 64-bit,

  -- 

  2.9.2

  

@@ -1,486 +0,0 @@ 

- From b0bcb19cb4f95d260c5993df0aaa3667522fb99d Mon Sep 17 00:00:00 2001

- From: Kazuki Yamaguchi <k@rhe.jp>

- 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 <k@rhe.jp>

- 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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

- +-----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-----

- +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

- +-----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

- @@ -712,7 +712,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

-  

- @@ -764,7 +764,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

- @@ -1144,7 +1144,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)

-  

- @@ -1386,20 +1386,21 @@ def test_fallback_scsv

-    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

-  

@@ -0,0 +1,77 @@ 

+ From eca084e4079c77c061045df9c21b219175b05228 Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>

+ 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 |  3 ++-

+  ruby.c    |  4 ++++

+  3 files changed, 18 insertions(+), 1 deletion(-)

+  create mode 100644 abrt.c

+ 

+ diff --git a/abrt.c b/abrt.c

+ new file mode 100644

+ index 0000000000..74b0bd5c0f

+ --- /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 b2e5b2b6d0..f39f81da5c 100644

+ --- a/common.mk

+ +++ b/common.mk

+ @@ -81,7 +81,8 @@ ENC_MK        = enc.mk

+  MAKE_ENC      = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \

+  		RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)

+  

+ -COMMONOBJS    = array.$(OBJEXT) \

+ +COMMONOBJS    = abrt.$(OBJEXT) \

+ +                array.$(OBJEXT) \

+  		ast.$(OBJEXT) \

+  		bignum.$(OBJEXT) \

+  		class.$(OBJEXT) \

+ diff --git a/ruby.c b/ruby.c

+ index 60c57d6259..1eec16f2c8 100644

+ --- a/ruby.c

+ +++ b/ruby.c

+ @@ -1439,10 +1439,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();

+      rb_const_remove(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX"));

+  }

+  

+ -- 

+ 2.24.1

+ 

@@ -0,0 +1,32 @@ 

+ From 6532dbecf36d1f24dab1f2143afd171e0b7699eb Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>

+ Date: Wed, 4 Sep 2019 15:07:07 +0200

+ Subject: [PATCH] Remove RubyGems dependency.

+ 

+ Since `Process::RLIMIT_NOFILE` is platform specific, better to use Ruby

+ introspection than detecting platform.

+ ---

+  .../vendor/net-http-persistent/lib/net/http/persistent.rb   | 6 +++---

+  1 file changed, 3 insertions(+), 3 deletions(-)

+ 

+ diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb

+ index a54be2a..06739f1 100644

+ --- a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb

+ +++ b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb

+ @@ -202,10 +202,10 @@ class Bundler::Persistent::Net::HTTP::Persistent

+    ##

+    # The default connection pool size is 1/4 the allowed open files.

+  

+ -  if Gem.win_platform? then

+ -    DEFAULT_POOL_SIZE = 256

+ -  else

+ +  if Process.const_defined? :RLIMIT_NOFILE

+      DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4

+ +  else

+ +    DEFAULT_POOL_SIZE = 256

+    end

+  

+    ##

+ -- 

+ 2.23.0

+ 

file modified
+153 -103
@@ -1,59 +1,59 @@ 

  %global major_version 2

- %global minor_version 6

- %global teeny_version 3

+ %global minor_version 7

+ %global teeny_version 0

  %global major_minor_version %{major_version}.%{minor_version}

  

  %global ruby_version %{major_minor_version}.%{teeny_version}

  %global ruby_release %{ruby_version}

  

  # Specify the named version. It has precedense to revision.

- #%%global milestone rc2

+ #%%global milestone rc1

  

  # Keep the revision enabled for pre-releases from SVN.

- #%%global revision 66252

+ #%%global revision af11efd377

  

  %global ruby_archive %{name}-%{ruby_version}

  

  # If revision and milestone are removed/commented out, the official release build is expected.

  %if 0%{?milestone:1}%{?revision:1} != 0

- %global development_release %{?milestone}%{?!milestone:%{?revision:r%{revision}}}

- %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}}

+ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision}}

+ %define ruby_archive_timestamp %(stat --printf='@%Y' %{ruby_archive}.tar.xz | date -f - +"%Y%m%d")

+ %define development_release %{?milestone}%{?!milestone:%{?revision:%{ruby_archive_timestamp}git%{revision}}}

  %endif

  

  

- %global release 121

- %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}

+ %global release 1

+ %{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}

  

  # The RubyGems library has to stay out of Ruby directory tree, since the

  # RubyGems should be share by all Ruby implementations.

  %global rubygems_dir %{_datadir}/rubygems

  

  # Bundled libraries versions

- %global rubygems_version 3.0.3

+ %global rubygems_version 3.1.2

  %global rubygems_molinillo_version 0.5.7

  

- %global bundler_version 1.17.2

- # FileUtils had not used to have separate versioning from Ruby :/ Lets use

- # date of bundling for now. The gemified version of FileUtils has already proper

- # version (if it's going to be bundled).

- %global bundler_fileutils_version 0.20170425

+ %global bundler_version 2.1.2

+ %global bundler_connection_pool_version 2.2.2

+ %global bundler_fileutils_version 1.3.0

  %global bundler_molinillo_version 0.6.6

- %global bundler_net_http_persistent_version 2.9.4

- %global bundler_thor_version 0.20.0

- 

- %global bigdecimal_version 1.4.1

- %global did_you_mean_version 1.3.0

- %global io_console_version 0.4.7

- %global irb_version 1.0.0

- %global json_version 2.1.0

- %global minitest_version 5.11.3

+ %global bundler_net_http_persistent_version 3.1.0

+ %global bundler_thor_version 1.0.0

+ 

+ %global bigdecimal_version 2.0.0

+ %global did_you_mean_version 1.4.0

+ %global io_console_version 0.5.3

+ %global irb_version 1.2.1

+ %global json_version 2.3.0

+ %global minitest_version 5.13.0

  %global net_telnet_version 0.2.0

  %global openssl_version 2.1.2

- %global power_assert_version 1.1.3

+ %global power_assert_version 1.1.5

  %global psych_version 3.1.0

- %global rake_version 12.3.2

- %global rdoc_version 6.1.0

- %global test_unit_version 3.2.9

+ %global racc_version 1.4.16

+ %global rake_version 13.0.1

+ %global rdoc_version 6.2.1

+ %global test_unit_version 3.3.4

  %global xmlrpc_version 0.3.0

  

  # Might not be needed in the future, if we are lucky enough.
@@ -95,7 +95,6 @@ 

  Source3: ruby-exercise.stp

  Source4: macros.ruby

  Source5: macros.rubygems

- Source6: abrt_prelude.rb

  # RPM dependency generators.

  Source8: rubygems.attr

  Source9: rubygems.req
@@ -128,31 +127,26 @@ 

  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.

+ # 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

- Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch

+ # 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

  # 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

- # `gem build ../foo.gemspec` changes directory, which does not play well with

- # gems unpacked by setup macro.

- # https://github.com/rubygems/rubygems/issues/2587

- Patch11: rubygems-3.0.3-Restore-gem-build-behavior-and-introdcue-the-C-flag-to-gem-build.patch

- # This allows to loosen the RDoc dependency again.

- # https://github.com/rubygems/rubygems/pull/2604

- Patch12: rubygems-3.0.3-Avoid-rdoc-hook-when-its-failed-to-load-rdoc-library.patch

+ # Revert commit which breaks bundled net-http-persistent version check.

+ # https://github.com/drbrain/net-http-persistent/pull/109

+ Patch10: ruby-2.7.0-Remove-RubyGems-dependency.patch

  

  # 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

  

  Requires: %{name}-libs%{?_isa} = %{version}-%{release}

  Suggests: rubypick
@@ -232,6 +226,7 @@ 

  Version:    %{rubygems_version}

  License:    Ruby or MIT

  Requires:   ruby(release)

+ Recommends: rubygem(bundler) >= %{bundler_version}

  Recommends: rubygem(rdoc) >= %{rdoc_version}

  Recommends: rubygem(io-console) >= %{io_console_version}

  Requires:   rubygem(openssl) >= %{openssl_version}
@@ -515,6 +510,7 @@ 

  Requires:   rubygem(io-console)

  Provides:   rubygem(bundler) = %{version}-%{release}

  # https://github.com/bundler/bundler/issues/3647

+ Provides:   bundled(connection_pool) = %{bundler_connection_pool_version}

  Provides:   bundled(rubygem-fileutils) = %{bundler_fileutils_version}

  Provides:   bundled(rubygem-molinillo) = %{bundler_molinillo_version}

  Provides:   bundled(rubygem-net-http-persisntent) = %{bundler_net_http_persistent_version}
@@ -526,6 +522,19 @@ 

  many machines, systematically and repeatably.

  

  

+ %package -n rubygem-racc

+ Summary:    Racc is a LALR(1) parser generator

+ Version:    %{racc_version}

+ License:    MIT

+ Requires:   ruby(release)

+ Requires:   ruby(rubygems) >= %{rubygems_version}

+ Provides:   rubygem(racc) = %{version}-%{release}

+ 

+ %description -n rubygem-racc

+ Racc is a LALR(1) parser generator. It is written in Ruby itself, and

+ generates Ruby program.

+ 

+ 

  %prep

  %setup -q -n %{ruby_archive}

  
@@ -540,21 +549,13 @@ 

  %patch4 -p1

  %patch5 -p1

  %patch6 -p1

- %patch7 -p1

  %patch9 -p1

- %patch11 -p1

- %patch12 -p1

+ %patch10 -p1

  %patch22 -p1

- %patch23 -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

  
@@ -577,7 +578,6 @@ 

          --enable-shared \

          --with-ruby-version='' \

          --enable-multiarch \

-         --with-prelude=./abrt_prelude.rb \

  

  # Q= makes the build output more verbose and allows to check Fedora

  # compiler options.
@@ -590,7 +590,7 @@ 

  # Rename ruby/config.h to ruby/config-<arch>.h to avoid file conflicts on

  # multilib systems and install config.h wrapper

  %multilib_fix_c_header --file %{_includedir}/%{name}/config.h

- # TODO: The correct patch should be %%{_includedir}/%%{name}/rb_mjit_min_header-%{ruby_version}.h

+ # TODO: The correct patch should be %%{_includedir}/%%{name}/rb_mjit_min_header-%%{ruby_version}.h

  # https://bugs.ruby-lang.org/issues/15425

  %multilib_fix_c_header --file %{_includedir}/rb_mjit_min_header-%{ruby_version}.h

  
@@ -609,13 +609,9 @@ 

  do

    rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert

    rm -r $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert)

-   rm %{buildroot}%{ruby_libdir}/bundler/ssl_certs/$cert

-   rm -r $(dirname %{buildroot}%{ruby_libdir}/bundler/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}%{ruby_libdir}/bundler/ssl_certs/ 2>/dev/null)" \

-   = "certificate_manager.rb"

  

  # Move macros file into proper place and replace the %%{name} macro, since it

  # would be wrongly evaluated during build of other packages.
@@ -667,11 +663,9 @@ 

  mkdir -p %{buildroot}%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}/bigdecimal

  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}%{ruby_libarchdir}/bigdecimal/util.so %{buildroot}%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}/bigdecimal

  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

- ln -s %{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}/bigdecimal/util.so %{buildroot}%{ruby_libarchdir}/bigdecimal/util.so

  

  # TODO: Put help files into proper location.

  # https://bugs.ruby-lang.org/issues/15359
@@ -680,6 +674,11 @@ 

  mv %{buildroot}%{ruby_libdir}/bundler %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version}/lib

  mv %{buildroot}%{gem_dir}/specifications/default/bundler-%{bundler_version}.gemspec %{buildroot}%{gem_dir}/specifications

  

+ mkdir -p %{buildroot}%{gem_dir}/gems/did_you_mean-%{did_you_mean_version}/lib

+ mv %{buildroot}%{ruby_libdir}/did_you_mean.rb %{buildroot}%{gem_dir}/gems/did_you_mean-%{did_you_mean_version}/lib

+ mv %{buildroot}%{ruby_libdir}/did_you_mean %{buildroot}%{gem_dir}/gems/did_you_mean-%{did_you_mean_version}/lib

+ mv %{buildroot}%{gem_dir}/specifications/default/did_you_mean-%{did_you_mean_version}.gemspec %{buildroot}%{gem_dir}/specifications

+ 

  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
@@ -720,6 +719,18 @@ 

  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

  

+ # These has wrong shebangs. Exclude them for now and let's see what upstream

+ # thinks about them.

+ # https://bugs.ruby-lang.org/issues/15982

+ rm %{buildroot}%{_bindir}/{racc2y,y2racc}

+ rm %{buildroot}%{gem_dir}/gems/racc-%{racc_version}/bin/{racc2y,y2racc}

+ mkdir -p %{buildroot}%{gem_dir}/gems/racc-%{racc_version}/lib

+ mkdir -p %{buildroot}%{_libdir}/gems/%{name}/racc-%{racc_version}

+ mv %{buildroot}%{ruby_libdir}/racc* %{buildroot}%{gem_dir}/gems/racc-%{racc_version}/lib

+ mv %{buildroot}%{ruby_libarchdir}/racc/ %{buildroot}%{_libdir}/gems/%{name}/racc-%{racc_version}/

+ touch %{buildroot}%{_libdir}/gems/%{name}/racc-%{racc_version}/gem.build_complete

+ mv %{buildroot}%{gem_dir}/specifications/default/racc-%{racc_version}.gemspec %{buildroot}%{gem_dir}/specifications

+ 

  # Move the binary extensions into proper place (if no gem has binary extension,

  # the extensions directory might be empty).

  find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{ruby_version}/* -maxdepth 0 \
@@ -763,7 +774,7 @@ 

  %check

  %if 0%{?with_hardening_test}

  # Check Ruby hardening.

- checksec -f libruby.so.%{ruby_version} | \

+ 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

  
@@ -781,9 +792,19 @@ 

  

  # Check Bundler bundled dependencies versions.

  

+ # connection_pool.

+ [ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \

+   module Bundler; end; \

+   require 'bundler/vendor/connection_pool/lib/connection_pool/version'; \

+   puts Bundler::ConnectionPool::VERSION\\\"\" | tail -1`" \

+   == '%{bundler_connection_pool_version}' ]

+ 

  # FileUtils.

- # TODO: There is no version in bundled FileUtils yet.

- #%%{global bundler_fileutils_version}

+ [ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \

+   module Bundler; end; \

+   require 'bundler/vendor/fileutils/lib/fileutils/version'; \

+   puts Bundler::FileUtils::VERSION\\\"\" | tail -1`" \

+   == '%{bundler_fileutils_version}' ]

  

  # Molinillo.

  [ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \
@@ -826,16 +847,17 @@ 

  # 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 "File.utime allows Time instances in the far future to set

+ # mtime and atime".

+ # https://bugs.ruby-lang.org/issues/16410

+ MSPECOPTS="$MSPECOPTS -P 'File.utime allows Time instances in the far future to set mtime and atime'"

  

- # Disable 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

+ # Increase timeout for TestBugReporter#test_bug_reporter_add test, which fails

+ # quite often.

+ # https://bugs.ruby-lang.org/issues/16492

+ %ifarch s390x

+ sed -i '/assert_in_out_err/ s/)/, timeout: 30)/' test/-ext-/bug_reporter/test_bug_reporter.rb

+ %endif

  

  make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"

  
@@ -885,25 +907,31 @@ 

  %exclude %{ruby_libdir}/json.rb

  %exclude %{ruby_libdir}/openssl.rb

  %exclude %{ruby_libdir}/psych.rb

+ %{ruby_libdir}/benchmark

  %{ruby_libdir}/cgi

  %{ruby_libdir}/csv

+ %{ruby_libdir}/delegate

  %{ruby_libdir}/digest

  %{ruby_libdir}/drb

- %{ruby_libdir}/e2mmap

  %{ruby_libdir}/fiddle

- %{ruby_libdir}/fileutils

  %{ruby_libdir}/forwardable

+ %{ruby_libdir}/getoptlong

+ %{ruby_libdir}/logger

  %{ruby_libdir}/matrix

  %{ruby_libdir}/net

+ %{ruby_libdir}/observer

+ %{ruby_libdir}/open3

  %{ruby_libdir}/optparse

- %{ruby_libdir}/racc

+ %{ruby_libdir}/ostruct

+ %{ruby_libdir}/pstore

+ %{ruby_libdir}/reline

  %{ruby_libdir}/rexml

  %{ruby_libdir}/rinda

  %{ruby_libdir}/ripper

  %{ruby_libdir}/rss

- %{ruby_libdir}/shell

+ %{ruby_libdir}/singleton

  %{ruby_libdir}/syslog

- %{ruby_libdir}/thwait

+ %{ruby_libdir}/timeout

  %{ruby_libdir}/tracer

  %{ruby_libdir}/unicode_normalize

  %{ruby_libdir}/uri
@@ -928,6 +956,7 @@ 

  %{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
@@ -957,6 +986,7 @@ 

  %{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
@@ -995,12 +1025,11 @@ 

  %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
@@ -1037,35 +1066,45 @@ 

  %exclude %{gem_dir}/cache/*

  

  # TODO: Gemify these libraries

- %{gem_dir}/specifications/default/cmath-1.0.0.gemspec

- %{gem_dir}/specifications/default/csv-3.0.9.gemspec

- %{gem_dir}/specifications/default/date-2.0.0.gemspec

- %{gem_dir}/specifications/default/dbm-1.0.0.gemspec

- %{gem_dir}/specifications/default/e2mmap-0.1.0.gemspec

- %{gem_dir}/specifications/default/etc-1.0.1.gemspec

+ %{gem_dir}/specifications/default/benchmark-0.1.0.gemspec

+ %{gem_dir}/specifications/default/cgi-0.1.0.gemspec

+ %{gem_dir}/specifications/default/csv-3.1.2.gemspec

+ %{gem_dir}/specifications/default/date-3.0.0.gemspec

+ %{gem_dir}/specifications/default/dbm-1.1.0.gemspec

+ %{gem_dir}/specifications/default/delegate-0.1.0.gemspec

+ %{gem_dir}/specifications/default/etc-1.1.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.1.0.gemspec

- %{gem_dir}/specifications/default/forwardable-1.2.0.gemspec

- %{gem_dir}/specifications/default/gdbm-2.0.0.gemspec

+ %{gem_dir}/specifications/default/fileutils-1.4.1.gemspec

+ %{gem_dir}/specifications/default/forwardable-1.3.1.gemspec

+ %{gem_dir}/specifications/default/gdbm-2.1.0.gemspec

+ %{gem_dir}/specifications/default/getoptlong-0.1.0.gemspec

  %{gem_dir}/specifications/default/ipaddr-1.2.2.gemspec

- %{gem_dir}/specifications/default/logger-1.3.0.gemspec

- %{gem_dir}/specifications/default/matrix-0.1.0.gemspec

+ %{gem_dir}/specifications/default/logger-1.4.2.gemspec

+ %{gem_dir}/specifications/default/matrix-0.2.0.gemspec

  %{gem_dir}/specifications/default/mutex_m-0.1.0.gemspec

- %{gem_dir}/specifications/default/ostruct-0.1.0.gemspec

- %{gem_dir}/specifications/default/prime-0.1.0.gemspec

- %{gem_dir}/specifications/default/rexml-3.1.9.gemspec

- %{gem_dir}/specifications/default/rss-0.2.7.gemspec

- %{gem_dir}/specifications/default/scanf-1.0.0.gemspec

+ %{gem_dir}/specifications/default/net-pop-0.1.0.gemspec

+ %{gem_dir}/specifications/default/net-smtp-0.1.0.gemspec

+ %{gem_dir}/specifications/default/observer-0.1.0.gemspec

+ %{gem_dir}/specifications/default/open3-0.1.0.gemspec

+ %{gem_dir}/specifications/default/ostruct-0.2.0.gemspec

+ %{gem_dir}/specifications/default/prime-0.1.1.gemspec

+ %{gem_dir}/specifications/default/pstore-0.1.0.gemspec

+ %{gem_dir}/specifications/default/readline-0.0.2.gemspec

+ %{gem_dir}/specifications/default/readline-ext-0.1.0.gemspec

+ %{gem_dir}/specifications/default/reline-0.1.2.gemspec

+ %{gem_dir}/specifications/default/rexml-3.2.3.gemspec

+ %{gem_dir}/specifications/default/rss-0.2.8.gemspec

  %{gem_dir}/specifications/default/sdbm-1.0.0.gemspec

- %{gem_dir}/specifications/default/shell-0.7.gemspec

- %{gem_dir}/specifications/default/stringio-0.0.2.gemspec

- %{gem_dir}/specifications/default/strscan-1.0.0.gemspec

- %{gem_dir}/specifications/default/sync-0.5.0.gemspec

- %{gem_dir}/specifications/default/thwait-0.1.0.gemspec

+ %{gem_dir}/specifications/default/singleton-0.1.0.gemspec

+ %{gem_dir}/specifications/default/stringio-0.1.0.gemspec

+ %{gem_dir}/specifications/default/strscan-1.0.3.gemspec

+ %{gem_dir}/specifications/default/timeout-0.1.0.gemspec

  %{gem_dir}/specifications/default/tracer-0.1.0.gemspec

- %{gem_dir}/specifications/default/webrick-1.4.2.gemspec

- %{gem_dir}/specifications/default/zlib-1.0.0.gemspec

+ %{gem_dir}/specifications/default/uri-0.10.0.gemspec

+ %{gem_dir}/specifications/default/webrick-1.6.0.gemspec

+ %{gem_dir}/specifications/default/yaml-0.1.0.gemspec

+ %{gem_dir}/specifications/default/zlib-1.1.0.gemspec

  

  %files -n rubygems-devel

  %{_rpmconfigdir}/macros.d/macros.rubygems
@@ -1181,7 +1220,18 @@ 

  %{_mandir}/man1/bundle*.1*

  %{_mandir}/man5/gemfile.5*

  

+ %files -n rubygem-racc

+ %{_bindir}/racc

+ %{_libdir}/gems/%{name}/racc-%{racc_version}

+ %{gem_dir}/gems/racc-%{racc_version}

+ %{gem_dir}/specifications/racc-%{racc_version}.gemspec

+ 

  %changelog

+ * Tue Jan 07 2020 Vít Ondruch <vondruch@redhat.com> - 2.7.0-1

+ - Upgrade to Ruby 2.7.0.

+ - Drop useless %%{rubygems_default_filter}.

+ - Fix checksec 2.0+ compatibility.

+ 

  * Tue Jun 25 2019 Vít Ondruch <vondruch@redhat.com> - 2.6.3-121

  - Properly support %%prerelease in %%gemspec_ macros.

  

@@ -1,24 +0,0 @@ 

- From c16675582a68800ef17b6056110e0a8bcdb38b55 Mon Sep 17 00:00:00 2001

- From: SHIBATA Hiroshi <hsbt@ruby-lang.org>

- Date: Tue, 22 Jan 2019 09:37:23 +0900

- Subject: [PATCH] Avoid rdoc hook when it's failed to load rdoc library.

- 

-   Fixed #2483

- ---

-  lib/rubygems/rdoc.rb | 4 ++--

-  1 file changed, 2 insertions(+), 2 deletions(-)

- 

- diff --git a/lib/rubygems/rdoc.rb b/lib/rubygems/rdoc.rb

- index dfaf7c55bf..4e16fbb86f 100644

- --- a/lib/rubygems/rdoc.rb

- +++ b/lib/rubygems/rdoc.rb

- @@ -18,7 +18,7 @@

-    module Gem

-      RDoc = ::RDoc::RubygemsHook

-    end

- +

- +  Gem.done_installing(&Gem::RDoc.method(:generation_hook))

-  rescue LoadError

-  end

- -

- -Gem.done_installing(&Gem::RDoc.method(:generation_hook))

@@ -1,88 +0,0 @@ 

- From f4061357d812e9033f07ae3f8f44c4e26839f1e5 Mon Sep 17 00:00:00 2001

- From: bronzdoc <lsagastume1990@gmail.com>

- Date: Mon, 14 Jan 2019 09:46:29 -0600

- Subject: [PATCH] Restore gem build behavior and introdcue the "-C" flag to gem

-  build

- 

- ---

-  lib/rubygems/commands/build_command.rb        | 41 +++++++++++++------

-  .../test_gem_commands_build_command.rb        |  1 +

-  2 files changed, 29 insertions(+), 13 deletions(-)

- 

- diff --git a/lib/rubygems/commands/build_command.rb b/lib/rubygems/commands/build_command.rb

- index e59471e976..761b80ee94 100644

- --- a/lib/rubygems/commands/build_command.rb

- +++ b/lib/rubygems/commands/build_command.rb

- @@ -18,6 +18,10 @@ def initialize

-      add_option '-o', '--output FILE', 'output gem with the given filename' do |value, options|

-        options[:output] = value

-      end

- +

- +    add_option '-C PATH', '', 'Run as if gem build was started in <PATH> instead of the current working directory.' do |value, options|

- +      options[:build_path] = value

- +    end

-    end

-  

-    def arguments # :nodoc:

- @@ -60,25 +64,36 @@ def execute

-      end

-  

-      if File.exist? gemspec

- -      Dir.chdir(File.dirname(gemspec)) do

- -        spec = Gem::Specification.load File.basename(gemspec)

- -

- -        if spec

- -          Gem::Package.build(

- -            spec,

- -            options[:force],

- -            options[:strict],

- -            options[:output]

- -          )

- -        else

- -          alert_error "Error loading gemspec. Aborting."

- -          terminate_interaction 1

- +      spec = Gem::Specification.load(gemspec)

- +

- +      if options[:build_path]

- +        Dir.chdir(File.dirname(gemspec)) do

- +          spec = Gem::Specification.load File.basename(gemspec)

- +          build_package(spec)

-          end

- +      else

- +        build_package(spec)

-        end

- +

-      else

-        alert_error "Gemspec file not found: #{gemspec}"

-        terminate_interaction 1

-      end

-    end

-  

- +  private

- +

- +  def build_package(spec)

- +    if spec

- +      Gem::Package.build(

- +        spec,

- +        options[:force],

- +        options[:strict],

- +        options[:output]

- +      )

- +    else

- +      alert_error "Error loading gemspec. Aborting."

- +      terminate_interaction 1

- +    end

- +  end

-  end

- diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb

- index ac82a408c7..02d1b98e8f 100644

- --- a/test/rubygems/test_gem_commands_build_command.rb

- +++ b/test/rubygems/test_gem_commands_build_command.rb

- @@ -207,6 +207,7 @@ def test_execute_outside_dir

-        gs.write @gem.to_ruby

-      end

-  

- +    @cmd.options[:build_path] = gemspec_dir

-      @cmd.options[:args] = [gemspec_file]

-  

-      use_ui @ui do

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (ruby-2.6.3.tar.xz) = 959a613f5cf5b3185a1d7a7ba0e1921166b3930f30461b391b1c9fcfe396f56dc3c736123dfc7b4e72c32a97dc5a1eb1fd7f09bcc3793a3c5526f6644ba421c8

+ SHA512 (ruby-2.7.0.tar.xz) = dd5690c631bf3a2b76cdc06902bcd76a89713a045e136debab9b8a81ff8c433bbb254aa09e4014ca1cf85a69ff4bcb13de11da5e40c224e7268be43ef2194af7

This is a branch of what will eventually become the official package of Ruby 2.7.

  • No upgrade path is ensured yet.
  • Use it at your own risk.

WIP, DO NOT MERGE

1 new commit added

  • Upgrade to Ruby 2.7.0 (e44c9b1147).
4 years ago

1 new commit added

  • Extract Racc into sub-package.
4 years ago

1 new commit added

  • Add missing rubygem(racc) provide.
4 years ago

4 new commits added

  • Drop useless %{rubygems_default_filter}.
  • Upgrade to Ruby 2.7.0 (0c6c937904).
  • Avoid TestJIT#test_block_handler_with_possible_frame_omitted_inlining filure
  • Upgrade to Ruby 2.7.0 (d9f8b88b47).
4 years ago

4 new commits added

  • Add bundled(connection_pool) provide and check version check.
  • Remove obsolete comment about FileUtils version.
  • Upgrade to Ruby 2.7.0 (36a0c668b6).
  • Fix checksec 2.0+ compatibility.
4 years ago

1 new commit added

  • Upgrade to Ruby 2.7.0 (4a403e3f98).
4 years ago

1 new commit added

  • Upgrade to Ruby 2.7.0 (053f78e139).
4 years ago

2 new commits added

  • Upgrade to Ruby 2.7.0 (af11efd377).
  • Upgrade to Ruby 2.7.0 (c2dc27d643).
4 years ago

I have 2 points about the Recommends or Requires in ruby.spec.

First, according to rubygems upstream situation requiring "bundler" optionally,
https://github.com/rubygems/rubygems/blob/v3.1.0.pre3/lib/rubygems.rb#L1214

It looks better to add bundler to Recommends.

%package -n rubygems
...
 Requires:   ruby(release)
+Recommends: rubygem(bundler) >= %{bundler_version}
 Recommends: rubygem(rdoc) >= %{rdoc_version}
...

Second, following is the main package's Requires/Suggests/Recommends.
I want to see our intent or policy to add sub packages in the part, as a commit message or comment considering the case that we add a sub package in the future.

Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Suggests: rubypick
Recommends: ruby(rubygems) >= %{rubygems_version}
Recommends: rubygem(bigdecimal) >= %{bigdecimal_version}
Recommends: rubygem(did_you_mean) >= %{did_you_mean_version}
Recommends: rubygem(openssl) >= %{openssl_version}

What's the reason you replaced %global with %define?

I am seeing a weird error when building rubygem-mysql2 with ruby based on this ruby's code.
%{release_string} is printed instead of the actual value.
The (HTTP) Status code: 400 in the output message is Bad Request.
I am not 100% sure that the reason comes from the %define.

$ mock ...
...
Installing:
...
 rh-ruby27-ruby-devel
                  x86_64 2.7.0-%{release_string}
...
 rh-ruby27-ruby-libs
                  x86_64 2.7.0-%{release_string}
...
 rh-ruby27-rubygems-devel
                  noarch 3.1.0.pre3-%{release_string}
...
[MIRROR] rh-ruby27-ruby-2.7.0-%{release_string}.x86_64.rpm: Status code: 400 for http://.../results/jaruga/rh-ruby27/rhel-7-x86_64/00046630-ruby/rh-ruby27-ruby-2.7.0-%{release_string}.x86_64.rpm (IP: 10.8.0.243)
...

What's the reason you replaced %global with %define?

After replacing the %define with %global of %{release_string}, building rubygem-mysql2 with the built ruby works. And the outputted version is the actual version instead of %{release_string}.

Installing:
...
 rh-ruby27-ruby-devel
                  x86_64 2.7.0-0.125.gitaf11efd377.el7_6
...
 rh-ruby27-ruby-libs
                  x86_64 2.7.0-0.125.gitaf11efd377.el7_6
...
 rh-ruby27-rubygems-devel
                  noarch 3.1.0.pre3-0.125.gitaf11efd377.el7_6
...

But on Fedora ruby private-ruby-2.7 branch, after replacing %define with %global like this,

-%{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
+%{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}

fedpkg --release master srpm outputs following error message. And the src.rpm is created.
I suppose this is related to %define's lazy evaluation of the value.

Ideally I want to see using only the %global without %define and without below kind of error message for ruby.spec.

$ fedpkg --release master srpm
stat: cannot stat '%{name}-2.7.0-af11efd377.tar.xz': No such file or directory



stat: cannot stat '%{name}-2.7.0-af11efd377.tar.xz': No such file or directory
Wrote: /home/jaruga/git/fedora-packages/ruby/ruby-2.7.0-0.1.gitaf11efd377.fc32.src.rpm

Here is a possible suggestion to fix above issue.

$ git diff
diff --git a/ruby.spec b/ruby.spec
index 8b31ba2..ef0bc9f 100644
--- a/ruby.spec
+++ b/ruby.spec
@@ -12,18 +12,20 @@
 # Keep the revision enabled for pre-releases from SVN.
 %global revision af11efd377

+Name: ruby
+
 %global ruby_archive %{name}-%{ruby_version}

 # If revision and milestone are removed/commented out, the official release build is expected.
 %if 0%{?milestone:1}%{?revision:1} != 0
 %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision}}
-%define ruby_archive_timestamp %%(stat --printf='@%Y' %%{ruby_archive}.tar.xz | date -f - +"%Y%m%d")
+%global ruby_archive_timestamp %%(stat --printf='@%Y' %%{ruby_archive}.tar.xz | date -f - +"%Y%m%d")
 %global development_release %{?milestone}%{?!milestone:%{?revision:%{ruby_archive_timestamp}git%{revision}}}
 %endif


 %global release 1
-%{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
+%{!?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.
@@ -79,7 +81,6 @@
 %endif

 Summary: An interpreter of object-oriented scripting language
-Name: ruby
 Version: %{ruby_version}
 Release: %{release_string}
 # Public Domain for example for: include/ruby/st.h, strftime.c, missing/*, ...

And there is no error message for stat when running fedpkg --release master srpm.

$ fedpkg --release master srpm


Wrote: /home/jaruga/git/fedora-packages/ruby/ruby-2.7.0-0.1.20191210gitaf11efd377.fc32.src.rpm

2 new commits added

  • Upgrade to Ruby 2.7.0.
  • Upgrade to Ruby 2.7.0-rc1.
4 years ago

For the issue,

$ fedpkg --release master srpm
stat: cannot stat '%{name}-2.7.0-af11efd377.tar.xz': No such file or directory

Change to the commit: Upgrade to Ruby 2.7.0 (af11efd377).

$ git checkout fe89ec49cc6e09f8f308b1e8dfaf38c492c06836

Modify following 1 line.

$ git diff
diff --git a/ruby.spec b/ruby.spec
index 8b31ba2..365d7cb 100644
--- a/ruby.spec
+++ b/ruby.spec
@@ -23,7 +23,7 @@


 %global release 1
-%{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
+%{!?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.

Then the ruby SRPM is created with errors.

$ fedpkg --release master srpm
stat: cannot stat '%{name}-2.7.0-af11efd377.tar.xz': No such file or directory



stat: cannot stat '%{name}-2.7.0-af11efd377.tar.xz': No such file or directory
Wrote: /home/jaruga/git/fedora-packages/ruby/ruby-2.7.0-0.1.gitaf11efd377.fc32.src.rpm

My environment where i happened is like this. Fedora 30 native environment. No container.

$ cat /etc/fedora-release 
Fedora release 30 (Thirty)

$ rpm -q rpm
rpm-4.14.2.1-5.fc30.x86_64

$ rpm -q fedpkg
fedpkg-1.37-7.fc30.noarch

$ rpm -q rpkg
package rpkg is not installed

Following patch shared by Vit works! As a note.

$ git diff
diff --git a/ruby.spec b/ruby.spec
index 8b31ba2..67e3036 100644
--- a/ruby.spec
+++ b/ruby.spec
@@ -17,8 +17,8 @@
 # If revision and milestone are removed/commented out, the official release build is expected.
 %if 0%{?milestone:1}%{?revision:1} != 0
 %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision}}
-%define ruby_archive_timestamp %%(stat --printf='@%Y' %%{ruby_archive}.tar.xz | date -f - +"%Y%m%d")
-%global development_release %{?milestone}%{?!milestone:%{?revision:%{ruby_archive_timestamp}git%{revision}}}
+%define ruby_archive_timestamp %(stat --printf='@%Y' %{ruby_archive}.tar.xz | date -f - +"%Y%m%d")
+%define development_release %{?milestone}%{?!milestone:%{?revision:%{ruby_archive_timestamp}git%{revision}}}
 %endif


$ fedpkg --release master srpm


Wrote: /home/jaruga/git/fedora-packages/ruby/ruby-2.7.0-0.1.20191210gitaf11efd377.fc32.src.rpm

1 new commit added

  • Fix wrong evaluation of pre-release timestamps.
4 years ago

Following patch shared by Vit works!

Yes, it seems that %global development_release was evaluated on some versions of RPM earlier then %{name} was available. The patch appears to work for me as well as @jaruga using different versions of RPM.

Perhaps, we may be able to wait the new release Ruby 2.7.1 to release Ruby 2.7 on Fedora, seeing following note. Ruby 2.7.1 can have a better user experience.
https://bugs.ruby-lang.org/issues/16454#note-12

Perhaps, we may be able to wait the new release Ruby 2.7.1 to release Ruby 2.7 on Fedora, seeing following note. Ruby 2.7.1 can have a better user experience.

I don't disagree, but since this is more about policy then the content of the PR, the Ruby-SIG ML would be probably better audience to discuss this decision.

5 new commits added

  • Enable SIGSEV handler tests on AArch64.
  • Increase timeout for TestBugReporter#test_bug_reporter_add
  • Enable TestResolvMDNS#test_mdns_each_address test fixed upstream.
  • Enable 'TestEnv#test_fetch' test fixed upstream.
  • Install Bundler by default.
4 years ago

1 new commit added

  • Upload sources.
4 years ago

I found following warning on the latest private-ruby-2.7 branch.

$ fedpkg --release master lint
...
ruby.src:593: W: macro-in-comment %{ruby_version}
...

Please someone, double-check if those are false positive.

$ rpmlint -i ./*.spec /var/lib/mock/fedora-rawhide-x86_64/result/*.rpm
...
32 packages and 1 specfiles checked; 107 errors, 48 warnings.

Have you tried the scratch build for latest private-ruby-2.7 branch?

$ fedpkg --release master scratch-build --srpm --nowait

https://koji.fedoraproject.org/koji/taskinfo?taskID=40483670

Following error might happen for all the CPU architectures.

[20979/20987] YAMLStoreTest#test_yaml_store_files_are_accessed_as_binary_files = 0.27 s
  1) Failure:
OpenSSL::TestConfig#test_constants [/builddir/build/BUILD/ruby-2.7.0/test/openssl/test_config.rb:32]:
Exception raised:
<#<OpenSSL::ConfigError: error in line 39: could not include file '/etc/crypto-policies/back-ends/opensslcnf.config'>>.
Finished tests in 540.973216s, 38.7801 tests/s, 5024.3541 assertions/s.
20979 tests, 2718041 assertions, 1 failures, 0 errors, 68 skips

Have you tried the scratch build for latest private-ruby-2.7 branch?

Yes, of course. I did like lot of scratch builds. You can see one scratch build linked from my latest ruby-sig thread and the other is linked here in the ticket done by simple-koji-ci. So this must be something new. I would blame OpenSSL.

I found following warning on the latest private-ruby-2.7 branch.
$ fedpkg --release master lint
...
ruby.src:593: W: macro-in-comment %{ruby_version}
...

This is not dangerous in any way, but thx for pointing this out.

Please someone, double-check if those are false positive.
$ rpmlint -i ./.spec /var/lib/mock/fedora-rawhide-x86_64/result/.rpm
...
32 packages and 1 specfiles checked; 107 errors, 48 warnings.

Yep, I should run the rpmlint, good point. Haven't done it in some while ...

There does not appear to be anything really serious, but:

1) rubygem-rake.noarch: W: hidden-file-or-dir /usr/share/gems/gems/rake-13.0.1/.github

I opened PR https://github.com/ruby/rake/pull/333 to fix this

2) ruby-libs.x86_64: E: library-not-linked-against-libc /usr/lib64/ruby/continuation.so

There is a lot of similar issues to this. I am not really sure, but since these are always loaded from Ruby, glibc must be already loaded, so it should not be problematic (actually this is not new for Ruby 2.7 AFAIR).

3) ruby-libs.x86_64: E: library-not-linked-against-libc /usr/lib64/ruby/continuation.so

This is one exception from the issues above, there is nothing, even libruby is not mentioned there. Again, I don't see it problematic, but it is strange that this is one off.

Thanks for checking!

3) ruby-libs.x86_64: E: library-not-linked-against-libc /usr/lib64/ruby/continuation.so

The 3) line is same with 2) one.
Did you mistake the line for 3) line?

Sorry C/P error :see_no_evil: This is the right one:

ruby-libs.x86_64: E: shared-lib-without-dependency-information /usr/lib64/ruby/enc/gb2312.so

1 new commit added

  • Properly escape macro in comment.
4 years ago

Have you tried the scratch build for latest private-ruby-2.7 branch?

It works again:

https://koji.fedoraproject.org/koji/taskinfo?taskID=40565390

https://koji.fedoraproject.org/koji/taskinfo?taskID=40483670
Following error might happen for all the CPU architectures.
[20979/20987] YAMLStoreTest#test_yaml_store_files_are_accessed_as_binary_files = 0.27 s
1) Failure:
OpenSSL::TestConfig#test_constants [/builddir/build/BUILD/ruby-2.7.0/test/openssl/test_config.rb:32]:
Exception raised:
<#<OpenSSL::ConfigError: error in line 39: could not include file '/etc/crypto-policies/back-ends/opensslcnf.config'>>.
Finished tests in 540.973216s, 38.7801 tests/s, 5024.3541 assertions/s.
20979 tests, 2718041 assertions, 1 failures, 0 errors, 68 skips

It seems the issues were caused by crypto-policies, this is very likely the fix:

https://src.fedoraproject.org/rpms/crypto-policies/c/db8cb681347c0726b5e22e579cf6760869c3a052

I see. Thanks for checking about OpenSSL issue.

By the way, as you might now, I commented for the rpmlint error issue ticket you created.
https://github.com/rpm-software-management/rpmlint/issues/361

This was imported into master, closing.

Pull-Request has been closed by vondruch

4 years ago