@ -1,6 +1,6 @@
%global major_version 2
%global major_version 2
%global minor_version 7
%global minor_version 7
%global teeny_version 0
%global teeny_version 2
%global major_minor_version %{major_version}.%{minor_version}
%global major_minor_version %{major_version}.%{minor_version}
%global ruby_version %{major_minor_version}.%{teeny_version}
%global ruby_version %{major_minor_version}.%{teeny_version}
@ -22,18 +22,19 @@
%endif
%endif
%global release 127
%global release 137
%define release_string %{release}%{?dist}
%{!?release_string:%define release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
# The RubyGems library has to stay out of Ruby directory tree, since the
# The RubyGems library has to stay out of Ruby directory tree, since the
# RubyGems should be share by all Ruby implementations.
# RubyGems should be share by all Ruby implementations.
%global rubygems_dir %{_datadir}/rubygems
%global rubygems_dir %{_datadir}/rubygems
# Bundled libraries versions
# Bundled libraries versions
%global rubygems_version 3.1.2
%global rubygems_version 3.1.4
%global rubygems_molinillo_version 0.5.7
%global rubygems_molinillo_version 0.5.7
%global bundler_version 2.1.2
# Default gems.
%global bundler_version 2.1.4
%global bundler_connection_pool_version 2.2.2
%global bundler_connection_pool_version 2.2.2
%global bundler_fileutils_version 1.3.0
%global bundler_fileutils_version 1.3.0
%global bundler_molinillo_version 0.6.6
%global bundler_molinillo_version 0.6.6
@ -42,20 +43,22 @@
%global bigdecimal_version 2.0.0
%global bigdecimal_version 2.0.0
%global did_you_mean_version 1.4.0
%global did_you_mean_version 1.4.0
%global io_console_version 0.5.3
%global io_console_version 0.5.6
%global irb_version 1.2.1
%global irb_version 1.2.6
%global json_version 2.3.0
%global json_version 2.3.0
%global minitest_version 5.13.0
%global net_telnet_version 0.2.0
%global net_telnet_version 0.2.0
%global openssl_version 2.1.2
%global openssl_version 2.1.2
%global power_assert_version 1.1.5
%global psych_version 3.1.0
%global psych_version 3.1.0
%global racc_version 1.4.16
%global racc_version 1.4.16
%global rake_version 13.0.1
%global rdoc_version 6.2.1
%global rdoc_version 6.2.1
%global test_unit_version 3.3.4
%global xmlrpc_version 0.3.0
%global xmlrpc_version 0.3.0
# Bundled gems.
%global minitest_version 5.13.0
%global power_assert_version 1.1.7
%global rake_version 13.0.1
%global test_unit_version 3.3.4
# Might not be needed in the future, if we are lucky enough.
# Might not be needed in the future, if we are lucky enough.
# https://bugzilla.redhat.com/show_bug.cgi?id=888262
# https://bugzilla.redhat.com/show_bug.cgi?id=888262
%global tapset_root %{_datadir}/systemtap
%global tapset_root %{_datadir}/systemtap
@ -78,6 +81,10 @@
%bcond_without hardening_test
%bcond_without hardening_test
%endif
%endif
# 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
Summary: An interpreter of object-oriented scripting language
Name: ruby
Name: ruby
Version: %{ruby_version}
Version: %{ruby_version}
@ -143,20 +150,36 @@ Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch
# Revert commit which breaks bundled net-http-persistent version check.
# Revert commit which breaks bundled net-http-persistent version check.
# https://github.com/drbrain/net-http-persistent/pull/109
# https://github.com/drbrain/net-http-persistent/pull/109
Patch10: ruby-2.7.0-Remove-RubyGems-dependency.patch
Patch10: ruby-2.7.0-Remove-RubyGems-dependency.patch
# Prevent issues with openssl loading when RubyGems are disabled.
# Add support for .include directive used by OpenSSL config files.
# https://github.com/ruby/openssl/pull/242
# https://github.com/ruby/openssl/pull/216
Patch13: ruby-2.8.0-remove-unneeded-gem-require-for-ipaddr.patch
Patch22: ruby-2.6.0-config-support-include-directive.patch
# Fix `require` behavior allowing to load libraries multiple times.
# https://github.com/rubygems/rubygems/issues/3647
# Because there were multiple fixes in `Kernel.require` in recent months,
# pickup all the changes one by one instead of squashing them.
# https://github.com/rubygems/rubygems/pull/3124
Patch15: rubygems-3.1.3-Fix-I-require-priority.patch
# https://github.com/rubygems/rubygems/pull/3133
Patch16: rubygems-3.1.3-Improve-require.patch
# https://github.com/rubygems/rubygems/pull/3153
Patch17: rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch
# https://github.com/rubygems/rubygems/pull/3639
Patch18: rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch
# Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add.
# https://bugs.ruby-lang.org/issues/16492
Patch19: ruby-2.7.1-Timeout-the-test_bug_reporter_add-witout-raising-err.patch
# Enable arm64 optimizations.
# https://bugzilla.redhat.com/show_bug.cgi?id=1884728
# https://github.com/ruby/ruby/pull/3393
Patch20: ruby-3.0.0-preview1-Enable-arm64-optimizations-that-exist-for-power-x86.patch
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
#Suggests: rubypick
Requires: rubypick
#Recommends: ruby(rubygems) >= %{rubygems_version}
Requires: ruby(rubygems) >= %{rubygems_version}
#Recommends: rubygem(bigdecimal) >= %{bigdecimal_version}
Requires: rubygem(bigdecimal) >= %{bigdecimal_version}
# Change this to requires, hopefully just as temporary measure.
# Change this to requires, hopefully just as temporary measure.
# https://bugs.ruby-lang.org/issues/16431
# https://bugs.ruby-lang.org/issues/16431
Requires: rubygem(did_you_mean) >= %{did_you_mean_version}
Requires: rubygem(openssl) >= %{openssl_version}
#Recommends: rubygem(openssl) >= %{openssl_version}
#Recommends: rubygem(racc) >= %{racc_version}
BuildRequires: autoconf
BuildRequires: autoconf
BuildRequires: gdbm-devel
BuildRequires: gdbm-devel
@ -176,6 +199,7 @@ BuildRequires: procps
%{?with_hostname:BuildRequires: %{_bindir}/hostname}
%{?with_hostname:BuildRequires: %{_bindir}/hostname}
BuildRequires: multilib-rpm-config
BuildRequires: multilib-rpm-config
BuildRequires: gcc
BuildRequires: gcc
BuildRequires: make
BuildRequires: zlib-devel
BuildRequires: zlib-devel
# This package provides %%{_bindir}/ruby-mri therefore it is marked by this
# This package provides %%{_bindir}/ruby-mri therefore it is marked by this
@ -195,6 +219,9 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
# This would not be needed if ~50 packages depending on -devel used
# This would not be needed if ~50 packages depending on -devel used
# --disable-gems
# --disable-gems
Requires: rubygems
Requires: rubygems
# Users need CFLAGS from /usr/lib/rpm/redhat/redhat-hardened-cc1
# for building gems with binary extensions (rhbz#1905222).
Requires: powerel-rpm-config
%description devel
%description devel
Header files and libraries for building an extension library for the
Header files and libraries for building an extension library for the
@ -212,6 +239,10 @@ Provides: bundled(ccan-check_type)
Provides: bundled(ccan-container_of)
Provides: bundled(ccan-container_of)
Provides: bundled(ccan-list)
Provides: bundled(ccan-list)
# StdLib default gems.
Provides: bundled(rubygem-did_you_mean) = %{did_you_mean_version}
Provides: bundled(rubygem-racc) = %{racc_version}
# Tcl/Tk support was removed from stdlib in Ruby 2.4, i.e. F27 timeframe
# 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
# 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
# better, unless https://fedorahosted.org/fpc/ticket/645 provides some
@ -229,9 +260,9 @@ Summary: The Ruby standard for packaging ruby libraries
Version: %{rubygems_version}
Version: %{rubygems_version}
License: Ruby or MIT
License: Ruby or MIT
Requires: ruby(release)
Requires: ruby(release)
#Recommends: rubygem(bundler) >= %{bundler_version}
Requires: rubygem(bundler) >= %{bundler_version}
#Recommends: rubygem(rdoc) >= %{rdoc_version}
Requires: rubygem(rdoc) >= %{rdoc_version}
#Recommends: rubygem(io-console) >= %{io_console_version}
Requires: rubygem(io-console) >= %{io_console_version}
Requires: rubygem(openssl) >= %{openssl_version}
Requires: rubygem(openssl) >= %{openssl_version}
Requires: rubygem(psych) >= %{psych_version}
Requires: rubygem(psych) >= %{psych_version}
Provides: gem = %{version}-%{release}
Provides: gem = %{version}-%{release}
@ -249,7 +280,7 @@ libraries.
Summary: Macros and development tools for packaging RubyGems
Summary: Macros and development tools for packaging RubyGems
Version: %{rubygems_version}
Version: %{rubygems_version}
License: Ruby or MIT
License: Ruby or MIT
Requires: ruby(rubygems) = %{version}-%{release}
Requires: ruby(rubygems) >= %{version}-%{release}
# Needed for RDoc documentation format generation.
# Needed for RDoc documentation format generation.
Requires: rubygem(json) >= %{json_version}
Requires: rubygem(json) >= %{json_version}
Requires: rubygem(rdoc) >= %{rdoc_version}
Requires: rubygem(rdoc) >= %{rdoc_version}
@ -259,19 +290,23 @@ BuildArch: noarch
Macros and development tools for packaging RubyGems.
Macros and development tools for packaging RubyGems.
%package -n rubygem-rake
# Default gems
Summary: Ruby based make-like utility
#
Version: %{rake_version}
# These packages are part of Ruby StdLib and are expected to be loadable even
License: MIT
# with disabled RubyGems.
Requires: ruby(release)
%package default-gems
Summary: Default gems which are part of Ruby StdLib.
Requires: ruby(rubygems) >= %{rubygems_version}
Requires: ruby(rubygems) >= %{rubygems_version}
Provides: rake = %{version}-%{release}
#Supplements: ruby(rubygems)
Provides: rubygem(rake) = %{version}-%{release}
# Obsoleted by Ruby 2.7 in F32 timeframe.
Obsoletes: rubygem-did_you_mean < 1.4.0-130
Obsoletes: rubygem-racc < 1.4.16-130
BuildArch: noarch
BuildArch: noarch
%description -n rubygem-rake
%description default-gems
Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
The .gemspec files and executables of default gems, which are part of Ruby
specified in standard Ruby syntax.
StdLib.
%package -n rubygem-irb
%package -n rubygem-irb
@ -279,6 +314,9 @@ Summary: The Interactive Ruby
Version: %{irb_version}
Version: %{irb_version}
Requires: ruby(release)
Requires: ruby(release)
Requires: ruby(rubygems) >= %{rubygems_version}
Requires: ruby(rubygems) >= %{rubygems_version}
# ruby-default-gems is required to run irb.
# https://bugs.ruby-lang.org/issues/16951
Requires: ruby-default-gems >= %{ruby_version}
Provides: irb = %{version}-%{release}
Provides: irb = %{version}-%{release}
Provides: rubygem(irb) = %{version}-%{release}
Provides: rubygem(irb) = %{version}-%{release}
# Obsoleted by Ruby 2.6 in F30 timeframe.
# Obsoleted by Ruby 2.6 in F30 timeframe.
@ -343,20 +381,6 @@ floating point arithmetic often introduces subtle errors because of the
conversion between base 10 and base 2.
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}
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
%package -n rubygem-io-console
Summary: IO/Console is a simple console utilizing library
Summary: IO/Console is a simple console utilizing library
Version: %{io_console_version}
Version: %{io_console_version}
@ -385,6 +409,60 @@ data to disk or transmit it over a network rather than use a verbose
markup language.
markup language.
%package -n rubygem-openssl
Summary: OpenSSL provides SSL, TLS and general purpose cryptography
Version: %{openssl_version}
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-psych
Summary: A libyaml wrapper for Ruby
Version: %{psych_version}
License: MIT
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-bundler
Summary: Library and utilities to manage a Ruby application's gem dependencies
Version: %{bundler_version}
License: MIT
Requires: ruby(release)
Requires: ruby(rubygems) >= %{rubygems_version}
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}
Provides: bundled(rubygem-thor) = %{bundler_thor_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 -n rubygem-minitest
%package -n rubygem-minitest
Summary: Minitest provides a complete suite of testing facilities
Summary: Minitest provides a complete suite of testing facilities
Version: %{minitest_version}
Version: %{minitest_version}
@ -409,19 +487,6 @@ minitest/pride shows pride in testing and adds coloring to your test
output.
output.
%package -n rubygem-openssl
Summary: OpenSSL provides SSL, TLS and general purpose cryptography
Version: %{openssl_version}
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
%package -n rubygem-power_assert
Summary: Power Assert for Ruby
Summary: Power Assert for Ruby
Version: %{power_assert_version}
Version: %{power_assert_version}
@ -437,19 +502,19 @@ It is useful for testing, providing which value wasn't correct when the
condition is not satisfied.
condition is not satisfied.
%package -n rubygem-psych
%package -n rubygem-rake
Summary: A libyaml wrapper for Ruby
Summary: Ruby based make-like utility
Version: %{psych_version}
Version: %{rake_version}
License: MIT
License: MIT
Requires: ruby(release)
Requires: ruby(release)
Requires: ruby(rubygems) >= %{rubygems_version}
Requires: ruby(rubygems) >= %{rubygems_version}
Provides: rubygem(psych) = %{version}-%{release}
Provides: rake = %{version}-%{release}
Provides: rubygem(rake) = %{version}-%{release}
BuildArch: noarch
%description -n rubygem-psych
%description -n rubygem-rake
Psych is a YAML parser and emitter. Psych leverages
Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
libyaml[http://pyyaml.org/wiki/LibYAML] for its YAML parsing and emitting
specified in standard Ruby syntax.
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
%package -n rubygem-net-telnet
@ -504,40 +569,6 @@ XMLRPC is a lightweight protocol that enables remote procedure calls over
HTTP.
HTTP.
%package -n rubygem-bundler
Summary: Library and utilities to manage a Ruby application's gem dependencies
Version: %{bundler_version}
License: MIT
Requires: ruby(release)
Requires: ruby(rubygems) >= %{rubygems_version}
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}
Provides: bundled(rubygem-thor) = %{bundler_thor_version}
BuildArch: noarch
%description -n rubygem-bundler
Bundler manages an application's dependencies through its entire life, across
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
%prep
%setup -q -n %{ruby_archive}
%setup -q -n %{ruby_archive}
@ -554,7 +585,13 @@ rm -rf ext/fiddle/libffi*
%patch6 -p1
%patch6 -p1
%patch9 -p1
%patch9 -p1
%patch10 -p1
%patch10 -p1
%patch22 -p1
%patch13 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
# Provide an example of usage of the tapset:
# Provide an example of usage of the tapset:
cp -a %{SOURCE3} .
cp -a %{SOURCE3} .
@ -636,7 +673,7 @@ mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults
cp %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults
cp %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults
# Move gems root into common direcotry, out of Ruby directory structure.
# Move gems root into common direcotry, out of Ruby directory structure.
#mv %{buildroot}%{ruby_libdir}/gems %{buildroot}%{gem_dir}
mv %{buildroot}%{ruby_libdir}/gems %{buildroot}%{gem_dir}
# Create folders for gem binary extensions.
# Create folders for gem binary extensions.
# TODO: These folders should go into rubygem-filesystem but how to achieve it,
# TODO: These folders should go into rubygem-filesystem but how to achieve it,
@ -677,11 +714,6 @@ mv %{buildroot}%{ruby_libdir}/bundler.rb %{buildroot}%{gem_dir}/gems/bundler-%{b
mv %{buildroot}%{ruby_libdir}/bundler %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version}/lib
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
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}%{gem_dir}/gems/io-console-%{io_console_version}/lib
mkdir -p %{buildroot}%{_libdir}/gems/%{name}/io-console-%{io_console_version}/io
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_libdir}/io %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib
@ -722,30 +754,6 @@ ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych %{buildroot}%{ruby_libdir
ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych.rb %{buildroot}%{ruby_libdir}/psych.rb
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
ln -s %{_libdir}/gems/%{name}/psych-%{psych_version}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so
# These have 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}
# The 'rdoc' directory is empty and useless ATM.
# https://bugs.ruby-lang.org/issues/16596
rm -r %{buildroot}%{ruby_libdir}/racc/rdoc
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
# This used to be directories when racc was integral part of StdLib => Keep
# them as directories and link everything in them to prevent directory =>
# symlink conversion RPM issues.
mkdir -p %{buildroot}%{ruby_libdir}/racc
mkdir -p %{buildroot}%{ruby_libarchdir}/racc
find %{buildroot}%{gem_dir}/gems/racc-%{racc_version}/lib/racc -maxdepth 1 -type f -exec \
sh -c 'ln -s %{gem_dir}/gems/racc-%{racc_version}/lib/racc/`basename {}` %{buildroot}%{ruby_libdir}/racc' \;
ln -s %{gem_dir}/gems/racc-%{racc_version}/lib/racc.rb %{buildroot}%{ruby_libdir}/racc.rb
ln -s %{_libdir}/gems/%{name}/racc-%{racc_version}/racc/cparse.so %{buildroot}%{ruby_libarchdir}/racc/cparse.so
# Move the binary extensions into proper place (if no gem has binary extension,
# Move the binary extensions into proper place (if no gem has binary extension,
# the extensions directory might be empty).
# the extensions directory might be empty).
find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{ruby_version}/* -maxdepth 0 \
find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{ruby_version}/* -maxdepth 0 \
@ -861,14 +869,14 @@ MSPECOPTS=""
# https://bugs.ruby-lang.org/issues/16410
# https://bugs.ruby-lang.org/issues/16410
MSPECOPTS="$MSPECOPTS -P 'File.utime allows Time instances in the far future to set mtime and atime'"
MSPECOPTS="$MSPECOPTS -P 'File.utime allows Time instances in the far future to set mtime and atime'"
# Increase timeout for TestBugReporter#test_bug_reporter_add test, which fails
# Disable File.lchmod specs, which fails when building against glibc 2.31.9000.
# quite often.
# https://bugs.ruby-lang.org/issues/16749
# https://bugs.ruby-lang.org/issues/16492
MSPECOPTS="$MSPECOPTS -P 'File.lchmod changes the file mode of the link and not of the file'"
%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"
# 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 check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%files
%files
%license BSDL
%license BSDL
@ -911,42 +919,76 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
# List all these files explicitly to prevent surprises
# List all these files explicitly to prevent surprises
# Platform independent libraries.
# Platform independent libraries.
%dir %{ruby_libdir}
%dir %{ruby_libdir}
%{ruby_libdir}/*.rb
%exclude %{ruby_libdir}/bigdecimal*
%exclude %{ruby_libdir}/irb.rb
%exclude %{ruby_libdir}/irb*
%exclude %{ruby_libdir}/json.rb
%exclude %{ruby_libdir}/json*
%exclude %{ruby_libdir}/openssl.rb
%exclude %{ruby_libdir}/openssl*
%exclude %{ruby_libdir}/psych.rb
%exclude %{ruby_libdir}/psych*
%exclude %{ruby_libdir}/racc.rb
%{ruby_libdir}/abbrev.rb
%{ruby_libdir}/benchmark
%{ruby_libdir}/base64.rb
%{ruby_libdir}/cgi
%{ruby_libdir}/benchmark*
%{ruby_libdir}/csv
%{ruby_libdir}/cgi*
%{ruby_libdir}/delegate
%{ruby_libdir}/coverage.rb
%{ruby_libdir}/digest
%{ruby_libdir}/csv*
%{ruby_libdir}/drb
%{ruby_libdir}/date.rb
%{ruby_libdir}/fiddle
%{ruby_libdir}/debug.rb
%{ruby_libdir}/forwardable
%{ruby_libdir}/delegate*
%{ruby_libdir}/getoptlong
%{ruby_libdir}/digest*
%{ruby_libdir}/logger
%{ruby_libdir}/drb*
%{ruby_libdir}/matrix
%{ruby_libdir}/English.rb
%{ruby_libdir}/erb.rb
%{ruby_libdir}/expect.rb
%{ruby_libdir}/fiddle*
%{ruby_libdir}/fileutils.rb
%{ruby_libdir}/find.rb
%{ruby_libdir}/forwardable*
%{ruby_libdir}/getoptlong*
%{ruby_libdir}/io
%{ruby_libdir}/ipaddr.rb
%{ruby_libdir}/kconv.rb
%{ruby_libdir}/logger*
%{ruby_libdir}/matrix*
%{ruby_libdir}/mkmf.rb
%{ruby_libdir}/monitor.rb
%{ruby_libdir}/mutex_m.rb
%{ruby_libdir}/net
%{ruby_libdir}/net
%{ruby_libdir}/observer
%{ruby_libdir}/observer*
%{ruby_libdir}/open3
%{ruby_libdir}/open-uri.rb
%{ruby_libdir}/optparse
%{ruby_libdir}/open3*
%{ruby_libdir}/ostruct
%{ruby_libdir}/optionparser.rb
%{ruby_libdir}/pstore
%{ruby_libdir}/optparse*
%{ruby_libdir}/reline
%{ruby_libdir}/ostruct*
%{ruby_libdir}/pathname.rb
%{ruby_libdir}/pp.rb
%{ruby_libdir}/prettyprint.rb
%{ruby_libdir}/prime.rb
%{ruby_libdir}/pstore*
%{ruby_libdir}/readline.rb
%{ruby_libdir}/reline*
%{ruby_libdir}/resolv.rb
%{ruby_libdir}/resolv-replace.rb
%{ruby_libdir}/rexml
%{ruby_libdir}/rexml
%{ruby_libdir}/rinda
%{ruby_libdir}/rinda
%{ruby_libdir}/ripper
%{ruby_libdir}/ripper*
%{ruby_libdir}/rss
%{ruby_libdir}/rss*
%{ruby_libdir}/singleton
%{ruby_libdir}/securerandom.rb
%{ruby_libdir}/set.rb
%{ruby_libdir}/shellwords.rb
%{ruby_libdir}/singleton*
%{ruby_libdir}/socket.rb
%{ruby_libdir}/syslog
%{ruby_libdir}/syslog
%{ruby_libdir}/timeout
%{ruby_libdir}/tempfile.rb
%{ruby_libdir}/tracer
%{ruby_libdir}/timeout*
%{ruby_libdir}/time.rb
%{ruby_libdir}/tmpdir.rb
%{ruby_libdir}/tracer*
%{ruby_libdir}/tsort.rb
%{ruby_libdir}/unicode_normalize
%{ruby_libdir}/unicode_normalize
%{ruby_libdir}/uri
%{ruby_libdir}/un.rb
%{ruby_libdir}/webrick
%{ruby_libdir}/uri*
%{ruby_libdir}/yaml
%{ruby_libdir}/weakref*
%{ruby_libdir}/webrick*
%{ruby_libdir}/yaml*
# Platform specific libraries.
# Platform specific libraries.
%{_libdir}/libruby.so.*
%{_libdir}/libruby.so.*
@ -1052,6 +1094,12 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{ruby_libarchdir}/syslog.so
%{ruby_libarchdir}/syslog.so
%{ruby_libarchdir}/zlib.so
%{ruby_libarchdir}/zlib.so
# Default gems
%{ruby_libdir}/did_you_mean*
%{ruby_libdir}/racc*
%dir %{ruby_libarchdir}/racc
%{ruby_libarchdir}/racc/cparse.so
%{?with_systemtap:%{tapset_root}}
%{?with_systemtap:%{tapset_root}}
%files -n rubygems
%files -n rubygems
@ -1075,13 +1123,21 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%exclude %{gem_dir}/cache/*
%exclude %{gem_dir}/cache/*
# TODO: Gemify these libraries
%files -n rubygems-devel
%{_rpmconfigdir}/macros.d/macros.rubygems
%{_rpmconfigdir}/fileattrs/rubygems.attr
%{_rpmconfigdir}/rubygems.req
%{_rpmconfigdir}/rubygems.prov
%{_rpmconfigdir}/rubygems.con
%files default-gems
%{gem_dir}/specifications/default/benchmark-0.1.0.gemspec
%{gem_dir}/specifications/default/benchmark-0.1.0.gemspec
%{gem_dir}/specifications/default/cgi-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/csv-3.1.2.gemspec
%{gem_dir}/specifications/default/date-3.0.0.gemspec
%{gem_dir}/specifications/default/date-3.0.0.gemspec
%{gem_dir}/specifications/default/dbm-1.1.0.gemspec
%{gem_dir}/specifications/default/dbm-1.1.0.gemspec
%{gem_dir}/specifications/default/delegate-0.1.0.gemspec
%{gem_dir}/specifications/default/delegate-0.1.0.gemspec
%{gem_dir}/specifications/default/did_you_mean-%{did_you_mean_version}.gemspec
%{gem_dir}/specifications/default/etc-1.1.0.gemspec
%{gem_dir}/specifications/default/etc-1.1.0.gemspec
%{gem_dir}/specifications/default/fcntl-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/fiddle-1.0.0.gemspec
@ -1100,9 +1156,10 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{gem_dir}/specifications/default/ostruct-0.2.0.gemspec
%{gem_dir}/specifications/default/ostruct-0.2.0.gemspec
%{gem_dir}/specifications/default/prime-0.1.1.gemspec
%{gem_dir}/specifications/default/prime-0.1.1.gemspec
%{gem_dir}/specifications/default/pstore-0.1.0.gemspec
%{gem_dir}/specifications/default/pstore-0.1.0.gemspec
%{gem_dir}/specifications/default/racc-%{racc_version}.gemspec
%{gem_dir}/specifications/default/readline-0.0.2.gemspec
%{gem_dir}/specifications/default/readline-0.0.2.gemspec
%{gem_dir}/specifications/default/readline-ext-0.1.0.gemspec
%{gem_dir}/specifications/default/readline-ext-0.1.0.gemspec
%{gem_dir}/specifications/default/reline-0.1.2.gemspec
%{gem_dir}/specifications/default/reline-0.1.5.gemspec
%{gem_dir}/specifications/default/rexml-3.2.3.gemspec
%{gem_dir}/specifications/default/rexml-3.2.3.gemspec
%{gem_dir}/specifications/default/rss-0.2.8.gemspec
%{gem_dir}/specifications/default/rss-0.2.8.gemspec
%{gem_dir}/specifications/default/sdbm-1.0.0.gemspec
%{gem_dir}/specifications/default/sdbm-1.0.0.gemspec
@ -1116,18 +1173,17 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{gem_dir}/specifications/default/yaml-0.1.0.gemspec
%{gem_dir}/specifications/default/yaml-0.1.0.gemspec
%{gem_dir}/specifications/default/zlib-1.1.0.gemspec
%{gem_dir}/specifications/default/zlib-1.1.0.gemspec
%files -n rubygems-devel
# Use standalone rubygem-racc if Racc binary is required. Shipping this
%{_rpmconfigdir}/macros.d/macros.rubygems
# executable in both packages might possibly cause conflicts. The situation
%{_rpmconfigdir}/fileattrs/rubygems.attr
# could be better if Ruby generated these files:
%{_rpmconfigdir}/rubygems.req
# https://github.com/ruby/ruby/pull/2545
%{_rpmconfigdir}/rubygems.prov
%exclude %{_bindir}/racc
%{_rpmconfigdir}/rubygems.con
# These have wrong shebangs. Exclude them for now and let's see what upstream
# thinks about them.
%files -n rubygem-rake
# https://bugs.ruby-lang.org/issues/15982
%{_bindir}/rake
%exclude %{_bindir}/{racc2y,y2racc}
%{gem_dir}/gems/rake-%{rake_version}
%exclude %{gem_dir}/gems/racc-%{racc_version}/bin/{racc2y,y2racc}
%{gem_dir}/specifications/rake-%{rake_version}.gemspec
%{gem_dir}/gems/racc-%{racc_version}
%{_mandir}/man1/rake.1*
%files -n rubygem-irb
%files -n rubygem-irb
%{_bindir}/irb
%{_bindir}/irb
@ -1150,17 +1206,12 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{_datadir}/ri
%{_datadir}/ri
%files -n rubygem-bigdecimal
%files -n rubygem-bigdecimal
%{ruby_libdir}/bigdecimal
%{ruby_libdir}/bigdecimal*
%{ruby_libarchdir}/bigdecimal*
%{ruby_libarchdir}/bigdecimal*
%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}
%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}
%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}
%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}
%{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec
%{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
%files -n rubygem-io-console
%{ruby_libdir}/io
%{ruby_libdir}/io
%{ruby_libarchdir}/io/console.so
%{ruby_libarchdir}/io/console.so
@ -1175,11 +1226,6 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{gem_dir}/gems/json-%{json_version}
%{gem_dir}/gems/json-%{json_version}
%{gem_dir}/specifications/json-%{json_version}.gemspec
%{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
%files -n rubygem-openssl
%{ruby_libdir}/openssl
%{ruby_libdir}/openssl
%{ruby_libdir}/openssl.rb
%{ruby_libdir}/openssl.rb
@ -1188,11 +1234,6 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{gem_dir}/gems/openssl-%{openssl_version}
%{gem_dir}/gems/openssl-%{openssl_version}
%{gem_dir}/specifications/openssl-%{openssl_version}.gemspec
%{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
%files -n rubygem-psych
%{ruby_libdir}/psych
%{ruby_libdir}/psych
%{ruby_libdir}/psych.rb
%{ruby_libdir}/psych.rb
@ -1201,11 +1242,35 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{gem_dir}/gems/psych-%{psych_version}
%{gem_dir}/gems/psych-%{psych_version}
%{gem_dir}/specifications/psych-%{psych_version}.gemspec
%{gem_dir}/specifications/psych-%{psych_version}.gemspec
%files -n rubygem-bundler
%{_bindir}/bundle
%{_bindir}/bundler
%{gem_dir}/gems/bundler-%{bundler_version}
%{gem_dir}/specifications/bundler-%{bundler_version}.gemspec
%{_mandir}/man1/bundle*.1*
%{_mandir}/man5/gemfile.5*
%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-net-telnet
%files -n rubygem-net-telnet
%{gem_dir}/gems/net-telnet-%{net_telnet_version}
%{gem_dir}/gems/net-telnet-%{net_telnet_version}
%exclude %{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
%{gem_dir}/specifications/net-telnet-%{net_telnet_version}.gemspec
%files -n rubygem-power_assert
%{gem_dir}/gems/power_assert-%{power_assert_version}
%exclude %{gem_dir}/gems/power_assert-%{power_assert_version}/.*
%{gem_dir}/specifications/power_assert-%{power_assert_version}.gemspec
%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-test-unit
%files -n rubygem-test-unit
%{gem_dir}/gems/test-unit-%{test_unit_version}
%{gem_dir}/gems/test-unit-%{test_unit_version}
%{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec
%{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec
@ -1222,23 +1287,49 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/xmlrpc.gemspec
%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/xmlrpc.gemspec
%{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec
%{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec
%files -n rubygem-bundler
%{_bindir}/bundle
%{_bindir}/bundler
%{gem_dir}/gems/bundler-%{bundler_version}
%{gem_dir}/specifications/bundler-%{bundler_version}.gemspec
%{_mandir}/man1/bundle*.1*
%{_mandir}/man5/gemfile.5*
%files -n rubygem-racc
%{ruby_libdir}/racc*
%{ruby_libarchdir}/racc
%{_bindir}/racc
%{_libdir}/gems/%{name}/racc-%{racc_version}
%{gem_dir}/gems/racc-%{racc_version}
%{gem_dir}/specifications/racc-%{racc_version}.gemspec
%changelog
%changelog
* Tue Dec 15 2020 Pavel Valena <pvalena@redhat.com> - 2.7.2-137
- Add Recommends: redhat-rpm-config to devel subpackage.
Resolves: rhbz#1905222
* Tue Nov 24 2020 Vít Ondruch <vondruch@redhat.com> - 2.7.2-136
- Add explicit `BR: make`.
* Tue Oct 13 2020 Vít Ondruch <vondruch@redhat.com> - 2.7.2-135
- Upgrade to Ruby 2.7.2.
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.1-134
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 27 2020 Vít Ondruch <vondruch@redhat.com> - 2.7.1-133
- Disable LTO, which appear to cause issues with SIGSEV handler.
- Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add.
* Wed Jun 24 2020 Jun Aruga <jaruga@redhat.com> - 2.7.1-132
- Add ruby-default-gems dependency on irb.
Resolves: rhbz#1850541
* Wed Jun 24 2020 Vít Ondruch <vondruch@redhat.com> - 2.7.1-132
- Fix `require` behavior allowing to load libraries multiple times.
Resolves: rhbz#1835836
* Fri May 15 2020 Vít Ondruch <vondruch@redhat.com> - 2.7.1-131
- Relax rubygems-devel dependency on rubygems.
* Wed Apr 08 2020 Vít Ondruch <vondruch@redhat.com> - 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 <vondruch@redhat.com> - 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 <vondruch@redhat.com> - 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 <vondruch@redhat.com> - 2.7.0-127
* Tue Jan 28 2020 Vít Ondruch <vondruch@redhat.com> - 2.7.0-127
- Provide StdLib links for Racc and install it by default.
- Provide StdLib links for Racc and install it by default.
@ -2080,7 +2171,7 @@ make check TESTS="-v $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS"
- Disable the static library building.
- Disable the static library building.
* Tue Dec 04 2007 Release Engineering <rel-eng at fedoraproject dot org> - 1.8.6.111-2
* Tue Dec 04 2007 Release Engineering <rel-eng at fedoraproject dot org> - 1.8.6.111-2
- Rebuild for openssl bump
- Rebuild for openssl bump
* Wed Oct 31 2007 Akira TAGOH <tagoh@redhat.com>
* Wed Oct 31 2007 Akira TAGOH <tagoh@redhat.com>
- Fix the dead link.
- Fix the dead link.