Sophie

Sophie

distrib > Mageia > 9 > armv7hl > media > core-release-src > by-pkgid > 716ca082b346971de2bf4a5537483580 > files > 17

ruby-3.1.4-44.mga9.src.rpm

# Taken from the fedora ruby-2.2.3 .spec. Thanks!

%global major_version 3
%global minor_version 1
%global teeny_version 4
%global major_minor_version %{major_version}.%{minor_version}

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

# Specify the named version. It has precedense to revision.
#%%global milestone rc1

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

%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}}}
%endif

# We need to keep this increasing even with new versions of ruby unless all gems get new release :(
%define rel 44
%{!?release_string:%global release_string %mkrel %{?development_release:0.}%{rel}%{?development_release:.%{development_release}}}

# The RubyGems library has to stay out of Ruby directory three, since the
# RubyGems should be share by all Ruby implementations.
%global rubygems_dir %{_datadir}/rubygems

# Bundled libraries versions
%global rubygems_version 3.3.26
%global rubygems_molinillo_version 0.7.0
%global rubygems_optparse_version 0.2.0
%global rubygems_tsort_version 0.1.0

# Default gems.
%global bundler_version 2.3.26
%global bundler_connection_pool_version 2.3.0
%global bundler_fileutils_version 1.4.1
%global bundler_molinillo_version 0.8.0
%global bundler_net_http_persistent_version 4.0.0
%global bundler_thor_version 1.2.1
%global bundler_tmpdir_version 0.1.0
# TODO: Check the version if/when available in library.
%global bundler_tsort_version 0.1.1
%global bundler_uri_version 0.10.1

%global bigdecimal_version 3.1.1
%global did_you_mean_version 1.6.1
%global erb_version 2.2.3
%global io_console_version 0.5.11
%global irb_version 1.4.1
%global json_version 2.6.1
%global openssl_version 3.0.1
%global psych_version 4.0.4
%global racc_version 1.6.0
%global rdoc_version 6.4.0
%global stringio_version 3.0.1

# Bundled gems.
%global minitest_version 5.15.0
%global power_assert_version 2.0.1
%global rake_version 13.0.6
%global test_unit_version 3.5.3
%global rexml_version 3.2.5
%global rss_version 0.2.9
%global net_ftp_version 0.1.3
%global net_imap_version 0.2.3
%global net_pop_version 0.1.1
%global net_smtp_version 0.3.1
%global matrix_version 0.4.2
%global prime_version 0.1.2
%global rbs_version 2.7.0
%global typeprof_version 0.21.3
%global debug_version 1.6.3

# Allow updating them in separate packages
%global build_rubygems 1
%global build_bigdecimal 1
%global build_json 1
%global build_minitest 0
%global build_rake 1
%global build_rdoc 1

%if %build_bigdecimal
%global exclude_bigdecimal %nil
%else
%global exclude_bigdecimal %exclude
%endif
%if %build_json
%global exclude_json %nil
%else
%global exclude_json %exclude
%endif
%if %build_minitest
%global exclude_minitest %nil
%else
%global exclude_minitest %exclude
%endif
%if %build_rake
%global exclude_rake %nil
%else
%global exclude_rake %exclude
%endif
%if %build_rdoc
%global exclude_rdoc %nil
%else
%global exclude_rdoc %exclude
%endif

%global tapset_libdir %(echo %{_libdir} | sed 's/64//')*

%global with_rubypick 1

# Additional defines by Mageia.

%define subver %{major_minor_version}
%define rubyapi %{subver}.%{teeny_version}
%define rubyver %{ruby_version}

%define libname %mklibname ruby %{subver}

%global ruby_libdir %{_datadir}/%{name}
%global ruby_libarchdir %{_libdir}/%{name}

# This is the local lib/arch and should not be used for packaging.
%global ruby_sitedir site_ruby
%global ruby_sitelibdir %{_prefix}/local/share/%{name}/%{ruby_sitedir}
%global ruby_sitearchdir %{_prefix}/local/%{_lib}/%{name}/%{ruby_sitedir}

# This is the general location for libs/archs compatible with all
# or most of the Ruby versions available in the Fedora repositories.
%global ruby_vendordir vendor_ruby
%global ruby_vendorlibdir %{ruby_libdir}/%{ruby_vendordir}
%global ruby_vendorarchdir %{ruby_libarchdir}/%{ruby_vendordir}

# The RubyGems library has to stay out of Ruby directory tree, since the
# RubyGems should be shared by all Ruby implementations.
%define gem_dir %{_datadir}/gems

Summary:	Object Oriented Script Language
Name:		ruby
Version:	%{rubyver}
Release: 	%release_string
License:	Ruby or BSD
Group:		Development/Ruby
BuildRequires:	autoconf
BuildRequires:	byacc
BuildRequires:	bison
BuildRequires:	doxygen
BuildRequires:	pkgconfig(ncurses)
BuildRequires:  pkgconfig(openssl)
BuildRequires:	pkgconfig(zlib)
BuildRequires:	pkgconfig(libffi)
BuildRequires:	pkgconfig(yaml-0.1)
BuildRequires:	readline-devel
BuildRequires:	db-devel
BuildRequires:  gdbm-devel >= 1.8.3
BuildRequires:	rpm-mageia-setup >= 1.158
# Needed to pass test_set_program_name(TestRubyOptions)
BuildRequires:	procps
# This causes gems to be installed in the home directory and breaks build
BuildConflicts:	ruby-RubyGems
Conflicts:	ruby-devel < 2.0.0.p451-4.mga5
# StdLib default gems.
Provides:	bundled(rubygem-did_you_mean) = %{did_you_mean_version}
Provides:	bundled(rubygem-openssl) = %{openssl_version}
Provides:	bundled(rubygem-racc) = %{racc_version}
# Tcl/Tk support was removed from stdlib in Ruby 2.4
Obsoletes:	ruby-tk < 2.4.0
# explicit file provides (since such requires are automatically added by find-requires)
Provides:	/usr/bin/ruby
Provides:	ruby(abi) = %subver
Provides:	ruby(release) = %rubyver
Requires:	ruby-RubyGems >= %rubygems_version
Provides:	rubygem(did_you_mean) = %{did_you_mean_version}
Provides:	rubygem(openssl) = %{openssl_version}
Provides:	rubygem(racc) = %{racc_version}
Provides:	rubygem(stringio) = %{stringio_version}
Obsoletes:	ruby-did_you_mean < 1.4.0-36
Obsoletes:	ruby-racc < 1.5.0-2
Obsoletes:	ruby-openssl < 2.7.2-36
Source0:	https://ftp.ruby-lang.org/pub/ruby/%{subver}/ruby-%{rubyver}.tar.xz
Source1:	operating_system.rb
Source2:	libruby.stp
Source3:	ruby-exercise.stp
# Similar to FC:
Source4:	macros.ruby
Source5:	macros.rubygems
# From FC:
# RPM dependency generators.
Source8: rubygems.attr
Source9: rubygems.req
Source10: rubygems.prov
Source11: rubygems.con
URL:		https://ruby-lang.org/

# == FEDORA PATCHES BEGINS ==
# Fix ruby_version abuse.
# https://bugs.ruby-lang.org/issues/11002
Patch0: ruby-2.3.0-ruby_version.patch
# http://bugs.ruby-lang.org/issues/7807
Patch1: ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch
# Allows to override libruby.so placement. Hopefully we will be able to return
# to plain --with-rubyarchprefix.
# http://bugs.ruby-lang.org/issues/8973
Patch2: ruby-2.1.0-Enable-configuration-of-archlibdir.patch
# Force multiarch directories for i.86 to be always named i386. This solves
# some differencies in build between Fedora and RHEL.
Patch3: ruby-2.1.0-always-use-i386.patch
# Allows to install RubyGems into custom directory, outside of Ruby's tree.
# http://bugs.ruby-lang.org/issues/5617
Patch4: ruby-2.1.0-custom-rubygems-location.patch
# The ABRT hook used to be initialized by preludes via following patches:
# https://bugs.ruby-lang.org/issues/8566
# https://bugs.ruby-lang.org/issues/15306
# Unfortunately, due to https://bugs.ruby-lang.org/issues/16254
# and especially since https://github.com/ruby/ruby/pull/2735
# this would require boostrapping:
# https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/
# For now, load the ABRT hook via this simple patch:
Patch6: ruby-2.7.0-Initialize-ABRT-hook.patch
# Prevent segfaults running with SystemTap due to `RubyVM::FrozenCore` being
# corrupted by GC.
# https://bugzilla.redhat.com/show_bug.cgi?id=2015441
# https://bugzilla.redhat.com/show_bug.cgi?id=1986206
# https://bugs.ruby-lang.org/issues/18257
Patch7: ruby-3.1.0-Don-t-query-RubyVM-FrozenCore-for-class-path.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
# Drop hard dependency on RDoc in IRB.
# https://github.com/ruby/irb/pull/393
Patch27: ruby-irb-1.4.1-drop-rdoc-hard-dep.patch
# Set soft dependency on RDoc in input-method.rb in IRB.
# https://github.com/ruby/irb/pull/395
Patch28: ruby-irb-1.4.1-set-rdoc-soft-dep.patch
# == FEDORA PATCHES ENDS ==
# operating_system.rb sets default_dir to user_dir for non root, this causes the build
# to install gems into user dir
#Patch20: ruby-2.3.0-Do-not-install-to-user-dir.patch

%package	-n %{libname}
Summary:	Libraries necessary to run Ruby
Group:		Development/Ruby

%package	doc
Summary:	Documentation for the powerful language Ruby
Group:		Development/Ruby
BuildArch:	noarch

%package	devel
Summary:	Development file for the powerful language Ruby
Group:		Development/Ruby
Requires:	%{name} = %{version}
Requires:	%{libname} = %{version}

%if %build_rubygems
%package	RubyGems
Summary:	The Ruby standard for packaging ruby libraries
Group:		Development/Ruby
Version:	%{rubygems_version}
Requires:	ruby(abi) = %{subver}
Requires:	rubygem(json) >= %{json_version}
Requires:	rubygem(openssl) >= %{openssl_version}
Requires:	rubygem(psych) >= %{psych_version}
# This should probably not be a strict require but --rdoc/--ri fail badly without it
Requires:	rubygem(rdoc) >= %{rdoc_version}
Provides:	gem = %{rubygems_version}
Provides:	rubygems = %{rubygems_version}
Provides:	ruby(rubygems) = %{rubygems_version}
Conflicts:	rpm-mageia-setup-build < 1.159
Conflicts:	ruby < 2.4.1-10
BuildArch:	noarch
%endif

%if %build_rake
%package	rake
Summary:	Simple ruby build program with capabilities similar to make
Group:		Development/Ruby
Version:	%{rake_version}
Requires:	ruby(abi) = %{subver}
Provides:	rubygem(rake) = %{version}
BuildArch:	noarch
%endif

%package	rbs
Summary:	Type signature for Ruby
Version:	%{rbs_version}
License:	Ruby or BSD
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(rbs) = %{version}-%{release}

%description	rbs
RBS is the language for type signatures for Ruby and standard library
definitions.


%if %build_minitest
%package	minitest
Summary:	Minitest provides a complete suite of testing facilities
Group:		Development/Ruby
Version:	%{minitest_version}
License:	MIT
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(minitest) = %{version}
BuildArch:	noarch
%endif

%package	power_assert
Summary:	Power Assert for Ruby
Group:		Development/Ruby
Version:	%{power_assert_version}
License:	BSD
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(power_assert) = %{version}
BuildArch:	noarch

%if %build_json
%package	json
Summary:	This is a JSON implementation as a Ruby extension in C
Group:		Development/Ruby
Version:	%{json_version}
License:	Ruby or GPLv2
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(json) = %{version}
Conflicts:	ruby < 2.4.1
%endif

%if %build_rdoc
%package	rdoc
Summary:	A tool to generate HTML and command-line documentation for Ruby projects
Group:		Development/Ruby
Version:	%{rdoc_version}
License:	GPLv2 and Ruby and MIT
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Requires:	rubygem(irb) = %{irb_version}
Requires:	rubygem(io-console) >= %{io_console_version}
Requires:	rubygem(json) >= %{json_version}
Provides:	rubygem(rdoc) = %{version}
Provides:	rdoc = %{rdoc_version}
Provides:	ri = %{rdoc_version}
BuildArch:	noarch
%endif

%package	irb
Summary:	The Interactive Ruby
Group:		Development/Ruby
Provides:	irb = %{irb_version}-%{release}
Provides:	rubygem(irb) = %{irb_version}-%{release}
Conflicts:	ruby < 1.9
BuildArch:	noarch

%if %build_bigdecimal
%package	bigdecimal
Summary:	BigDecimal provides arbitrary-precision floating point decimal arithmetic
Group:		Development/Ruby
Version:	%{bigdecimal_version}
License:	GPL+ or Artistic
Requires:	ruby(abi) = %{subver}
Provides:	rubygem(bigdecimal) = %{version}
Requires:	ruby(rubygems) >= %{rubygems_version}
%endif

%package	io-console
Summary:	IO/Console is a simple console utilizing library
Group:		Development/Ruby
Version:	%{io_console_version}
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(io-console) = %{version}

%package	psych
Summary:	A libyaml wrapper for Ruby
Version:	%{psych_version}
Group:		Development/Ruby
License:	MIT
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(psych) = %{version}
Conflicts:	ruby < 2.4.1-11

%package	test-unit
Summary:	test/unit compatible API testing framework
Version:	%{test_unit_version}
Group:		Development/Ruby
License:	MIT
Provides:	rubygem(test-unit) = %{test_unit_version}
Requires:	ruby(abi) = %{subver}
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(test-unit) = %{version}
Conflicts:	ruby < 2.0.0
BuildArch:	noarch

%package	bundler
Summary:	Library and utilities to manage a Ruby application's gem dependencies
Version:	%{bundler_version}
License:	MIT
Requires:	ruby(rubygems) >= %{rubygems_version}
Requires:	rubygem(io-console)
Provides:	rubygem(bundler) = %{version}-%{release}
BuildArch:	noarch

%package	bundled-gems
Summary:	Bundled gems which are part of Ruby StdLib
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(net-ftp) = %{net_ftp_version}
Provides:	rubygem(net-imap) = %{net_imap_version}
Provides:	rubygem(net-pop) = %{net_pop_version}
Provides:	rubygem(net-smtp) = %{net_smtp_version}
Provides:	rubygem(matrix) = %{matrix_version}
Provides:	rubygem(prime) = %{prime_version}
Provides:	rubygem(debug) = %{debug_version}

%package	rexml
Summary:	An XML toolkit for Ruby
Version:	%{rexml_version}
License:	BSD
URL:		https://github.com/ruby/rexml
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(rexml) = %{version}-%{release}
BuildArch:	noarch

%description rexml
REXML was inspired by the Electric XML library for Java, which features an
easy-to-use API, small size, and speed. Hopefully, REXML, designed with the same
philosophy, has these same features. I've tried to keep the API as intuitive as
possible, and have followed the Ruby methodology for method naming and code
flow, rather than mirroring the Java API.

REXML supports both tree and stream document parsing. Stream parsing is faster
(about 1.5 times as fast). However, with stream parsing, you don't get access to
features such as XPath.

%package	rss
Summary:	Family of libraries that support various formats of XML "feeds"
Version:	%{rss_version}
License:	BSD
URL:		https://github.com/ruby/rss
Requires:	ruby(rubygems) >= %{rubygems_version}
Provides:	rubygem(rss) = %{version}-%{release}
BuildArch:	noarch

%package typeprof
Summary:	TypeProf is a type analysis tool for Ruby code based on abstract interpretation
Version:	%{typeprof_version}
License:	MIT
URL:		https://github.com/ruby/typeprof
Requires:	ruby(rubygems) >= %{rubygems_version}
Requires:	rubygem(rbs) >= %{rbs_version}
Provides:	rubygem(typeprof) = %{version}-%{release}
BuildArch:	noarch

%description
Ruby is the interpreted scripting language for quick and
easy object-oriented programming.  It has many features to
process text files and to do system management tasks (as in
Perl).  It is simple, straight-forward, and extensible.

%description	doc
Ruby is the interpreted scripting language for quick and
easy object-oriented programming.  It has many features to
process text files and to do system management tasks (as in
Perl). It is simple, straight-forward, and extensible.

This package contains the Ruby's documentation

%description	-n %{libname}
This package includes the libruby, necessary to run Ruby.

%description	devel
Ruby is the interpreted scripting language for quick and
easy object-oriented programming.  It has many features to
process text files and to do system management tasks (as in
Perl). It is simple, straight-forward, and extensible.

This package contains the Ruby's devel files.

%if %build_rubygems
%description	RubyGems
RubyGems is the Ruby standard for publishing and managing third party
libraries.
%endif

%if %build_rake
%description	rake
Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
specified in standard Ruby syntax.
%endif

%if %build_rdoc
%description 	rdoc
RDoc produces HTML and command-line documentation for Ruby projects.  RDoc
includes the 'rdoc' and 'ri' tools for generating and displaying online
documentation.
%endif

%if %build_json
%description	json
This is a implementation of the JSON specification according to RFC 4627.
You can think of it as a low fat alternative to XML, if you want to store
data to disk or transmit it over a network rather than use a verbose
markup language.
%endif

%if %build_minitest
%description	minitest
minitest/unit is a small and incredibly fast unit testing framework.

minitest/spec is a functionally complete spec engine.

minitest/benchmark is an awesome way to assert the performance of your
algorithms in a repeatable manner.

minitest/mock by Steven Baker, is a beautifully tiny mock object
framework.

minitest/pride shows pride in testing and adds coloring to your test
output.
%endif
  
%description	power_assert
Power Assert shows each value of variables and method calls in the expression.
It is useful for testing, providing which value wasn't correct when the
condition is not satisfied.

%description	irb
The irb is acronym for Interactive Ruby.  It evaluates ruby expression
from the terminal.

%if %build_bigdecimal
%description	bigdecimal
Ruby provides built-in support for arbitrary precision integer arithmetic.
For example:

42**13 -> 1265437718438866624512

BigDecimal provides similar support for very large or very accurate floating
point numbers. Decimal arithmetic is also useful for general calculation,
because it provides the correct answers people expect–whereas normal binary
floating point arithmetic often introduces subtle errors because of the
conversion between base 10 and base 2.
%endif

%description	io-console
IO/Console provides very simple and portable access to console. It doesn't
provide higher layer features, such like curses and readline.

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

%description	test-unit
This library implements test/unit compatible API on minitest.
The test/unit means that test/unit which was bundled with Ruby 1.8.

%description	bundler
Bundler manages an application's dependencies through its entire life, across
many machines, systematically and repeatably.

%description	bundled-gems
Bundled gems which are part of Ruby StdLib. While being part of Ruby, these
needs to be listed in Gemfile to be used by Bundler.

%description	typeprof
TypeProf performs a type analysis of non-annotated Ruby code.
It abstractly executes input Ruby code in a level of types instead of values,
gathers what types are passed to and returned by methods, and prints the
analysis result in RBS format, a standard type description format for Ruby
3.0.

%description	rss
Really Simple Syndication (RSS) is a family of formats that describe 'feeds',
specially constructed XML documents that allow an interested person to subscribe
and receive updates from a particular web service. This library provides tooling
to read and create these feeds.

%prep
%setup -q -n ruby-%{rubyver}
%autopatch -p1

# Remove bundled libraries to be sure they are not used.
rm -rf ext/psych/yaml
rm -rf ext/fiddle/libffi*

%build
autoreconf -vfi
CFLAGS=`echo %optflags | sed 's/-fomit-frame-pointer//'`
%configure --enable-shared --disable-rpath --enable-pthread \
        --enable-multiarch \
        --with-rubylibprefix='%{ruby_libdir}' \
        --with-archlibdir='%{_libdir}' \
        --with-rubyarchprefix='%{ruby_libarchdir}' \
        --with-sitedir='%{ruby_sitelibdir}' \
        --with-sitearchdir='%{ruby_sitearchdir}' \
        --with-vendordir='%{ruby_vendorlibdir}' \
        --with-vendorarchdir='%{ruby_vendorarchdir}' \
        --with-rubyhdrdir='%{_includedir}' \
        --with-rubyarchhdrdir='%{_includedir}' \
        --with-sitearchhdrdir='$(sitehdrdir)/$(arch)' \
        --with-vendorarchhdrdir='$(vendorhdrdir)/$(arch)' \
        --with-rubygemsdir='%{rubygems_dir}' \
        --with-ruby-pc='%{name}.pc' \
        --with-compress-debug-sections=no \
        --disable-rpath \
        --enable-mkmf-verbose \
        --enable-multiarch \
        --with-compress-debug-sections=no \
        --with-ruby-version='' \
%ifarch aarch64
	--with-setjmp-type=setjmp \
%endif

%make_build Q=

%install
%make_install install-doc

# Version is empty if --with-ruby-version is specified.
# http://bugs.ruby-lang.org/issues/7807
sed -i 's/Version: \${ruby_version}/Version: %{ruby_version}/' %{buildroot}%{_libdir}/pkgconfig/%{name}.pc

# Kill bundled certificates, as they should be part of ca-certificates.
for cert in \
  rubygems.org/GlobalSignRootCA.pem \
  rubygems.org/GlobalSignRootCA_R3.pem
do
  rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert
  rm -d $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) || :
done

# Ensure there is not forgotten any certificate.
test ! "$(ls -A  %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)"

# Move macros file into proper place
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
install -m 644 %{SOURCE4} %{buildroot}%{_rpmconfigdir}/macros.d/macros.ruby

%if %build_rubygems
install -m 644 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems

# Install dependency generators.
mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs
install -m 644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/fileattrs
install -m 755 %{SOURCE9} %{buildroot}%{_rpmconfigdir}
install -m 755 %{SOURCE10} %{buildroot}%{_rpmconfigdir}
install -m 755 %{SOURCE11} %{buildroot}%{_rpmconfigdir}

# Install custom operating_system.rb.
mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults
cp %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults
%else
rm -f %{buildroot}%{_bindir}/gem
rm -f %{buildroot}%{rubygems_dir}/{ubygems.rb,rubygems.rb}
rm -rf %{buildroot}%{rubygems_dir}/rubygems
%endif

# Move gems root into common direcotry, out of Ruby directory structure.
mv %{buildroot}%{ruby_libdir}/gems %{buildroot}%{gem_dir}

# Create folders for gem binary extensions.
mkdir -p %{buildroot}%{_exec_prefix}/lib{,64}/gems/%{name}

# Version is empty if --with-ruby-version is specified.
# http://bugs.ruby-lang.org/issues/7807
sed -i 's/Version: .*/Version: %{rubyver}/' %{buildroot}%{_libdir}/pkgconfig/%{name}.pc

# Move bundled rubygems to %%gem_dir and %%gem_extdir_mri
# make symlinks for io-console and bigdecimal, which are considered to be part of stdlib by other Gems
mkdir -p %{buildroot}%{gem_dir}/gems/irb-%{irb_version}/lib
mv %{buildroot}%{ruby_libdir}/irb* %{buildroot}%{gem_dir}/gems/irb-%{irb_version}/lib
mv %{buildroot}%{gem_dir}/specifications/default/irb-%{irb_version}.gemspec %{buildroot}%{gem_dir}/specifications
ln -s %{gem_dir}/gems/irb-%{irb_version}/lib/irb.rb %{buildroot}%{ruby_libdir}/irb.rb
# TODO: This should be possible to replaced by simple directory symlink
# after ~ F31 EOL (rhbz#1691039).
mkdir -p %{buildroot}%{ruby_libdir}/irb
pushd %{buildroot}%{gem_dir}/gems/irb-%{irb_version}/lib
find irb -type d -mindepth 1 -exec mkdir %{buildroot}%{ruby_libdir}/'{}' \;
find irb -type f -exec ln -s %{gem_dir}/gems/irb-%{irb_version}/lib/'{}' %{buildroot}%{ruby_libdir}/'{}' \;
popd

mkdir -p %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib
mv %{buildroot}%{ruby_libdir}/rdoc* %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib
mv %{buildroot}%{gem_dir}/specifications/default/rdoc-%{rdoc_version}.gemspec %{buildroot}%{gem_dir}/specifications

mkdir -p %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib
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}%{gem_dir}/specifications/default/bigdecimal-%{bigdecimal_version}.gemspec %{buildroot}%{gem_dir}/specifications
mkdir -p %{buildroot}%{ruby_libdir}/bigdecimal
pushd %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib
find bigdecimal -type d -mindepth 1 -exec mkdir %{buildroot}%{ruby_libdir}/'{}' \;
find bigdecimal -type f -exec ln -s %{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib/'{}' %{buildroot}%{ruby_libdir}/'{}' \;
popd
ln -s %{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}/bigdecimal.so %{buildroot}%{ruby_libarchdir}/bigdecimal.so

# TODO: Put help files into proper location.
# https://bugs.ruby-lang.org/issues/15359
mkdir -p %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version}/lib
mv %{buildroot}%{ruby_libdir}/bundler.rb %{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

mkdir -p %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib
mkdir -p %{buildroot}%{_libdir}/gems/%{name}/json-%{json_version}
mv %{buildroot}%{ruby_libdir}/json* %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib
mv %{buildroot}%{ruby_libarchdir}/json/ %{buildroot}%{_libdir}/gems/%{name}/json-%{json_version}/
touch %{buildroot}%{_libdir}/gems/%{name}/json-%{json_version}/gem.build_complete
mv %{buildroot}%{gem_dir}/specifications/default/json-%{json_version}.gemspec %{buildroot}%{gem_dir}/specifications
ln -s %{gem_dir}/gems/json-%{json_version}/lib/json.rb %{buildroot}%{ruby_libdir}/json.rb
ln -s %{gem_dir}/gems/json-%{json_version}/lib/json %{buildroot}%{ruby_libdir}/json

# Move the binary extensions into proper place (if no gem has binary extension,
# the extensions directory might be empty).
# TODO: Get information about extension form .gemspec files.
find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}*/%{major_minor_version}.*/* -maxdepth 0 \
  -exec mv '{}' %{buildroot}%{_libdir}/gems/%{name}/ \; \
  || echo "No gem binary extensions to move."

# Remove the extension sources and library copies from `lib` dir.
find %{buildroot}%{gem_dir}/gems/*/ext -maxdepth 0 -exec rm -rf '{}' +
find %{buildroot}%{gem_dir}/gems/*/lib -name \*.so -delete

# Move man pages into proper location
mkdir -p %{buildroot}%{_mandir}/man{1,5}
mv %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/doc/rake.1 %{buildroot}%{_mandir}/man1
# https://bugs.ruby-lang.org/issues/17778
cp -a %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version}/lib/bundler/man/*.1 %{buildroot}%{_mandir}/man1
cp -a %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version}/lib/bundler/man/*.5 %{buildroot}%{_mandir}/man5

# Exclude is not enough for native extensions as they get debuginfo generated
%if !%build_json
rm -rf %{buildroot}%{ruby_libarchdir}/json
rm -rf %{buildroot}%{_libdir}/gems/%{name}/json-%{json_version}
%endif
%if !%build_bigdecimal
rm -f %{buildroot}%{ruby_libarchdir}/bigdecimal.so
rm -rf %{buildroot}%{_libdir}/gems/%{name}/bigdecimal-%{bigdecimal_version}
%endif

# https://github.com/yuki24/did_you_mean/issues/122
rm -rf %{buildroot}%{gem_dir}/gems/did_you_mean-%{did_you_mean_version}/tmp/

# https://github.com/ruby/rake/issues/316
rm -f %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/.gitignore

%check
# test_debug(TestRubyOptions) fails due to LoadError reported in debug mode,
# when abrt.rb cannot be required (seems to be easier way then customizing
# the test suite).
touch abrt.rb

DISABLE_TESTS=""
MSPECOPTS=""

# Avoid `hostname' dependency.
%{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"}

%ifarch armv7hl
# TestReadline#test_interrupt_in_other_thread fails on 32 bit arches according
# to upstream, but the test is disabled just on Travis, not in test suite.
# https://bugs.ruby-lang.org/issues/18393
DISABLE_TESTS="$DISABLE_TESTS -n !/TestReadline#test_interrupt_in_other_thread/"
%endif

# Several test broken by libffi-3.4.2. There should be fix in libffi, once
# other components are fixed.
# https://bugzilla.redhat.com/show_bug.cgi?id=2040380
mv test/fiddle/test_import.rb{,.disable}
mv test/fiddle/test_closure.rb{,.disable}
DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunc#test_qsort1/"
DISABLE_TESTS="$DISABLE_TESTS -n !/Fiddle::TestFunction#test_argument_count/"

# 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'"

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

%files
%{_bindir}/erb
%{_bindir}/ruby
%dir %{ruby_libdir}
# Use standalone ruby-racc if Racc binary is required. Shipping this
# executable in both packages might possibly cause conflicts. The situation
# could be better if Ruby generated these files:
# https://github.com/ruby/ruby/pull/2545
%exclude %{_bindir}/racc
%exclude %{gem_dir}/gems/racc-%{racc_version}/bin
%{ruby_libdir}/*.rb
%exclude %{ruby_libdir}/psych.rb
%{ruby_libdir}/benchmark
%{ruby_libdir}/cgi
%{ruby_libdir}/csv
%{ruby_libdir}/did_you_mean
%{ruby_libdir}/digest
%{ruby_libdir}/drb
%{ruby_libdir}/erb
%{ruby_libdir}/error_highlight
%{ruby_libdir}/fiddle
%{ruby_libdir}/forwardable
%{ruby_libdir}/io
%{ruby_libdir}/logger
%{ruby_libdir}/net
%{ruby_libdir}/objspace
%{ruby_libdir}/open3
%{ruby_libdir}/openssl
%{ruby_libdir}/optparse
%{ruby_libdir}/racc
%{ruby_libdir}/random
%{ruby_libdir}/reline
%{ruby_libdir}/rinda
%{ruby_libdir}/ripper
%{ruby_libdir}/set
%{ruby_libdir}/syslog
%{ruby_libdir}/unicode_normalize
%{ruby_libdir}/uri
%{ruby_libdir}/yaml
%dir %{ruby_libarchdir}
%{ruby_libarchdir}/cgi/escape.so
%{ruby_libarchdir}/continuation.so
%{ruby_libarchdir}/coverage.so
%{ruby_libarchdir}/date_core.so
%dir %{ruby_libarchdir}/digest
%{ruby_libarchdir}/digest.so
%{ruby_libarchdir}/digest/*.so
%dir %{ruby_libarchdir}/enc
%{ruby_libarchdir}/enc/*.so
%dir %{ruby_libarchdir}/enc/trans
%{ruby_libarchdir}/enc/trans/*.so
%{ruby_libarchdir}/etc.so
%{ruby_libarchdir}/fcntl.so
%{ruby_libarchdir}/fiddle.so
%dir %{ruby_libarchdir}/io
%{ruby_libarchdir}/io/nonblock.so
%{ruby_libarchdir}/io/wait.so
%{ruby_libarchdir}/monitor.so
%{ruby_libarchdir}/nkf.so
%{ruby_libarchdir}/objspace.so
%{ruby_libarchdir}/openssl.so
%{ruby_libarchdir}/pathname.so
%{ruby_libarchdir}/pty.so
%dir %{ruby_libarchdir}/racc
%{ruby_libarchdir}/racc/cparse.so
%{ruby_libarchdir}/rbconfig.rb
%dir %{ruby_libarchdir}/rbconfig
%{ruby_libarchdir}/rbconfig/*.so
%{ruby_libarchdir}/readline.so
%{ruby_libarchdir}/ripper.so
%{ruby_libarchdir}/socket.so
%{ruby_libarchdir}/stringio.so
%{ruby_libarchdir}/strscan.so
%{ruby_libarchdir}/syslog.so
%{ruby_libarchdir}/zlib.so
%{_mandir}/man1/erb.1.*
%{_mandir}/man1/ruby.1.*
%{_rpmconfigdir}/macros.d/macros.ruby
%{_datadir}/ruby/vendor_ruby
%{_libdir}/ruby/vendor_ruby

%dir %{gem_dir}/specifications/default
%{gem_dir}/specifications/default/abbrev-0.1.0.gemspec
%{gem_dir}/specifications/default/base64-0.1.1.gemspec
%{gem_dir}/specifications/default/benchmark-0.2.0.gemspec
%{gem_dir}/specifications/default/cgi-0.3.6.gemspec
%{gem_dir}/specifications/default/csv-3.2.5.gemspec
%{gem_dir}/specifications/default/date-3.2.2.gemspec
%{gem_dir}/specifications/default/delegate-0.2.0.gemspec
%{gem_dir}/specifications/default/did_you_mean-%{did_you_mean_version}.gemspec
%{gem_dir}/specifications/default/digest-3.1.0.gemspec
%{gem_dir}/specifications/default/drb-2.1.0.gemspec
%{gem_dir}/specifications/default/english-0.7.1.gemspec
%{gem_dir}/specifications/default/erb-%{erb_version}.gemspec
%{gem_dir}/specifications/default/error_highlight-0.3.0.gemspec
%{gem_dir}/specifications/default/etc-1.3.0.gemspec
%{gem_dir}/specifications/default/fcntl-1.0.1.gemspec
%{gem_dir}/specifications/default/fiddle-1.1.0.gemspec
%{gem_dir}/specifications/default/fileutils-1.6.0.gemspec
%{gem_dir}/specifications/default/find-0.1.1.gemspec
%{gem_dir}/specifications/default/forwardable-1.3.2.gemspec
%{gem_dir}/specifications/default/getoptlong-0.1.1.gemspec
%{gem_dir}/specifications/default/io-nonblock-0.1.0.gemspec
%{gem_dir}/specifications/default/io-wait-0.2.1.gemspec
%{gem_dir}/specifications/default/ipaddr-1.2.4.gemspec
%{gem_dir}/specifications/default/logger-1.5.0.gemspec
%{gem_dir}/specifications/default/mutex_m-0.1.1.gemspec
%{gem_dir}/specifications/default/net-http-0.3.0.gemspec
%{gem_dir}/specifications/default/net-protocol-0.1.2.gemspec
%{gem_dir}/specifications/default/nkf-0.1.1.gemspec
%{gem_dir}/specifications/default/observer-0.1.1.gemspec
%{gem_dir}/specifications/default/open3-0.1.1.gemspec
%{gem_dir}/specifications/default/openssl-%{openssl_version}.gemspec
%{gem_dir}/specifications/default/open-uri-0.2.0.gemspec
%{gem_dir}/specifications/default/optparse-0.2.0.gemspec
%{gem_dir}/specifications/default/ostruct-0.5.2.gemspec
%{gem_dir}/specifications/default/pathname-0.2.0.gemspec
%{gem_dir}/specifications/default/pp-0.3.0.gemspec
%{gem_dir}/specifications/default/prettyprint-0.1.1.gemspec
%{gem_dir}/specifications/default/pstore-0.1.1.gemspec
%{gem_dir}/specifications/default/racc-%{racc_version}.gemspec
%{gem_dir}/specifications/default/readline-0.0.3.gemspec
%{gem_dir}/specifications/default/readline-ext-0.1.4.gemspec
%{gem_dir}/specifications/default/reline-0.3.1.gemspec
%{gem_dir}/specifications/default/resolv-0.2.1.gemspec
%{gem_dir}/specifications/default/resolv-replace-0.1.0.gemspec
%{gem_dir}/specifications/default/rinda-0.1.1.gemspec
%{gem_dir}/specifications/default/ruby2_keywords-0.0.5.gemspec
%{gem_dir}/specifications/default/securerandom-0.2.0.gemspec
%{gem_dir}/specifications/default/set-1.0.2.gemspec
%{gem_dir}/specifications/default/shellwords-0.1.0.gemspec
%{gem_dir}/specifications/default/singleton-0.1.1.gemspec
%{gem_dir}/specifications/default/stringio-3.0.1.gemspec
%{gem_dir}/specifications/default/strscan-3.0.1.gemspec
%{gem_dir}/specifications/default/syslog-0.1.0.gemspec
%{gem_dir}/specifications/default/tempfile-0.1.2.gemspec
%{gem_dir}/specifications/default/time-0.2.2.gemspec
%{gem_dir}/specifications/default/timeout-0.2.0.gemspec
%{gem_dir}/specifications/default/tmpdir-0.1.2.gemspec
%{gem_dir}/specifications/default/tsort-0.1.0.gemspec
%{gem_dir}/specifications/default/un-0.2.0.gemspec
%{gem_dir}/specifications/default/uri-0.12.1.gemspec
%{gem_dir}/specifications/default/weakref-0.1.1.gemspec
%{gem_dir}/specifications/default/yaml-0.2.0.gemspec
%{gem_dir}/specifications/default/zlib-2.1.1.gemspec

%{gem_dir}/gems/erb-%{erb_version}

%files doc
%{_datadir}/ri
%{_datadir}/doc/ruby

%files -n %{libname}
%{_libdir}/libruby.so.%{subver}
%{_libdir}/libruby.so.%{rubyapi}

%files devel
%{_includedir}/*
%{_libdir}/libruby.so
%{_libdir}/pkgconfig/*.pc

%files irb
%{_bindir}/irb
%{ruby_libdir}/irb
%{_mandir}/man1/irb.1*
%{gem_dir}/specifications/irb-%{irb_version}.gemspec
%{gem_dir}/gems/irb-%{irb_version}

%files io-console
%{ruby_libdir}/io
%{ruby_libarchdir}/io/console.so
%{gem_dir}/specifications/default/io-console-%{io_console_version}.gemspec

%files test-unit
%{gem_dir}/gems/test-unit-*
%{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec

%if %build_rubygems
%files RubyGems
%{_bindir}/gem
%{_rpmconfigdir}/macros.d/macros.rubygems
%dir %{rubygems_dir}
%{rubygems_dir}/rubygems
%{rubygems_dir}/rubygems.rb
%{_rpmconfigdir}/fileattrs/rubygems.attr
%{_rpmconfigdir}/rubygems.req
%{_rpmconfigdir}/rubygems.prov
%{_rpmconfigdir}/rubygems.con
%dir %{gem_dir}
%dir %{gem_dir}/build_info
%dir %{gem_dir}/cache
%dir %{gem_dir}/doc
%dir %{gem_dir}/extensions
%dir %{gem_dir}/gems
%dir %{gem_dir}/specifications
%{_mandir}/man5/gemfile.5*
%endif
%exclude %{gem_dir}/cache/*

%if %build_rdoc
%files rdoc
%endif
%exclude_rdoc %{_bindir}/rdoc
%exclude_rdoc %{_bindir}/ri
%exclude_rdoc %{_mandir}/man1/ri.1.*
%exclude_rdoc %{gem_dir}/gems/rdoc-%{rdoc_version}
%exclude_rdoc %{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec

%if %build_json
%files json
%{_libdir}/gems/%{name}/json-%{json_version}
%endif
%exclude_json %{ruby_libdir}/json*
%exclude_json %{gem_dir}/gems/json-%{json_version}
%exclude_json %{gem_dir}/specifications/json-%{json_version}.gemspec

%if %build_bigdecimal
%files bigdecimal
%{ruby_libarchdir}/bigdecimal.so
%{_libdir}/gems/ruby/bigdecimal-%{bigdecimal_version}
%endif
%exclude_bigdecimal %{ruby_libdir}/bigdecimal
%exclude_bigdecimal %{gem_dir}/gems/bigdecimal-%{bigdecimal_version}
%exclude_bigdecimal %{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec

%files psych
%{ruby_libdir}/psych
%{ruby_libdir}/psych.rb
%{ruby_libarchdir}/psych.so
%{gem_dir}/specifications/default/psych-%{psych_version}.gemspec

%files bundler
%{_bindir}/bundle
%{_bindir}/bundler
%{gem_dir}/gems/bundler-%{bundler_version}
%{gem_dir}/specifications/bundler-%{bundler_version}.gemspec
%{_mandir}/man1/bundle*

%files bundled-gems
%{_bindir}/rdbg
%dir %{_libdir}/gems/%{name}/debug-%{debug_version}
%{_libdir}/gems/%{name}/debug-%{debug_version}/gem.build_complete
%dir %{_libdir}/gems/%{name}/debug-%{debug_version}/debug
%{_libdir}/gems/%{name}/debug-%{debug_version}/debug/debug.so
%dir %{gem_dir}/gems/debug-%{debug_version}
%exclude %{gem_dir}/gems/debug-%{debug_version}/.*
%doc %{gem_dir}/gems/debug-%{debug_version}/CONTRIBUTING.md
%{gem_dir}/gems/debug-%{debug_version}/Gemfile
%license %{gem_dir}/gems/debug-%{debug_version}/LICENSE.txt
%doc %{gem_dir}/gems/debug-%{debug_version}/README.md
%{gem_dir}/gems/debug-%{debug_version}/Rakefile
%doc %{gem_dir}/gems/debug-%{debug_version}/TODO.md
%{gem_dir}/gems/debug-%{debug_version}/exe
%{gem_dir}/gems/debug-%{debug_version}/lib
%{gem_dir}/gems/debug-%{debug_version}/misc
%{gem_dir}/specifications/debug-%{debug_version}.gemspec

%dir %{gem_dir}/gems/net-ftp-%{net_ftp_version}
%{gem_dir}/gems/net-ftp-%{net_ftp_version}/Gemfile
%license %{gem_dir}/gems/net-ftp-%{net_ftp_version}/LICENSE.txt
%doc %{gem_dir}/gems/net-ftp-%{net_ftp_version}/README.md
%{gem_dir}/gems/net-ftp-%{net_ftp_version}/Rakefile
%{gem_dir}/gems/net-ftp-%{net_ftp_version}/bin
%{gem_dir}/gems/net-ftp-%{net_ftp_version}/lib
%{gem_dir}/specifications/net-ftp-%{net_ftp_version}.gemspec

%dir %{gem_dir}/gems/net-imap-%{net_imap_version}
%{gem_dir}/gems/net-imap-%{net_imap_version}/Gemfile
%license %{gem_dir}/gems/net-imap-%{net_imap_version}/LICENSE.txt
%doc %{gem_dir}/gems/net-imap-%{net_imap_version}/README.md
%{gem_dir}/gems/net-imap-%{net_imap_version}/Rakefile
%{gem_dir}/gems/net-imap-%{net_imap_version}/lib
%{gem_dir}/specifications/net-imap-%{net_imap_version}.gemspec

%dir %{gem_dir}/gems/net-pop-%{net_pop_version}
%{gem_dir}/gems/net-pop-%{net_pop_version}/Gemfile
%license %{gem_dir}/gems/net-pop-%{net_pop_version}/LICENSE.txt
%doc %{gem_dir}/gems/net-pop-%{net_pop_version}/README.md
%{gem_dir}/gems/net-pop-%{net_pop_version}/Rakefile
%{gem_dir}/gems/net-pop-%{net_pop_version}/bin
%{gem_dir}/gems/net-pop-%{net_pop_version}/lib
%{gem_dir}/specifications/net-pop-%{net_pop_version}.gemspec

%dir %{gem_dir}/gems/net-smtp-%{net_smtp_version}
%license %{gem_dir}/gems/net-smtp-%{net_smtp_version}/LICENSE.txt
%{gem_dir}/gems/net-smtp-%{net_smtp_version}/lib
%{gem_dir}/specifications/net-smtp-%{net_smtp_version}.gemspec

%dir %{gem_dir}/gems/matrix-%{matrix_version}
%license %{gem_dir}/gems/matrix-%{matrix_version}/LICENSE.txt
%{gem_dir}/gems/matrix-%{matrix_version}/lib
%{gem_dir}/specifications/matrix-%{matrix_version}.gemspec

%dir %{gem_dir}/gems/prime-%{prime_version}
%{gem_dir}/gems/prime-%{prime_version}/Gemfile
%license %{gem_dir}/gems/prime-%{prime_version}/LICENSE.txt
%doc %{gem_dir}/gems/prime-%{prime_version}/README.md
%{gem_dir}/gems/prime-%{prime_version}/Rakefile
%{gem_dir}/gems/prime-%{prime_version}/bin
%{gem_dir}/gems/prime-%{prime_version}/lib
%{gem_dir}/specifications/prime-%{prime_version}.gemspec

%if %build_minitest
%files minitest
%endif
%exclude_minitest %{gem_dir}/gems/minitest-%{minitest_version}
%exclude %{gem_dir}/gems/minitest-%{minitest_version}/.*
%exclude_minitest %{gem_dir}/specifications/minitest-%{minitest_version}.gemspec

%files power_assert
%dir %{gem_dir}/gems/power_assert-%{power_assert_version}
%exclude %{gem_dir}/gems/power_assert-%{power_assert_version}/.*
%license %{gem_dir}/gems/power_assert-%{power_assert_version}/BSDL
%license %{gem_dir}/gems/power_assert-%{power_assert_version}/COPYING
%license %{gem_dir}/gems/power_assert-%{power_assert_version}/LEGAL
%{gem_dir}/gems/power_assert-%{power_assert_version}/lib
%{gem_dir}/specifications/power_assert-%{power_assert_version}.gemspec
%{gem_dir}/gems/power_assert-%{power_assert_version}/Gemfile
%doc %{gem_dir}/gems/power_assert-%{power_assert_version}/README.md
%{gem_dir}/gems/power_assert-%{power_assert_version}/Rakefile

%if %build_rake
%files rake
%endif
%exclude_rake %{_bindir}/rake
%exclude_rake %{_mandir}/man1/rake.1.*
%exclude_rake %{gem_dir}/gems/rake-%{rake_version}
%exclude_rake %{gem_dir}/specifications/rake-%{rake_version}.gemspec

%files rbs
%{_bindir}/rbs
%dir %{_libdir}/gems/%{name}/rbs-%{rbs_version}
%{_libdir}/gems/%{name}/rbs-%{rbs_version}/gem.build_complete
%{_libdir}/gems/%{name}/rbs-%{rbs_version}/rbs_extension.so
%dir %{gem_dir}/gems/rbs-%{rbs_version}
%exclude %{gem_dir}/gems/rbs-%{rbs_version}/.*
%license %{gem_dir}/gems/rbs-%{rbs_version}/BSDL
%doc %{gem_dir}/gems/rbs-%{rbs_version}/CHANGELOG.md
%license %{gem_dir}/gems/rbs-%{rbs_version}/COPYING
%{gem_dir}/gems/rbs-%{rbs_version}/Gemfile*
%doc %{gem_dir}/gems/rbs-%{rbs_version}/README.md
%{gem_dir}/gems/rbs-%{rbs_version}/Rakefile
%{gem_dir}/gems/rbs-%{rbs_version}/Steepfile
%{gem_dir}/gems/rbs-%{rbs_version}/core
%doc %{gem_dir}/gems/rbs-%{rbs_version}/docs
%{gem_dir}/gems/rbs-%{rbs_version}/exe
%{gem_dir}/gems/rbs-%{rbs_version}/goodcheck.yml
%{gem_dir}/gems/rbs-%{rbs_version}/lib
%{gem_dir}/gems/rbs-%{rbs_version}/schema
%{gem_dir}/gems/rbs-%{rbs_version}/sig
%{gem_dir}/gems/rbs-%{rbs_version}/stdlib
%{gem_dir}/gems/rbs-%{rbs_version}/steep
%{gem_dir}/specifications/rbs-%{rbs_version}.gemspec

%files rexml
%dir %{gem_dir}/gems/rexml-%{rexml_version}
%license %{gem_dir}/gems/rexml-%{rexml_version}/LICENSE.txt
%doc %{gem_dir}/gems/rexml-%{rexml_version}/NEWS.md
%doc %{gem_dir}/gems/rexml-%{rexml_version}/doc
%{gem_dir}/gems/rexml-%{rexml_version}/lib
%{gem_dir}/specifications/rexml-%{rexml_version}.gemspec
%doc %{gem_dir}/gems/rexml-%{rexml_version}/README.md

%files rss
%dir %{gem_dir}/gems/rss-%{rss_version}
%exclude %{gem_dir}/gems/rss-%{rss_version}/.*
%license %{gem_dir}/gems/rss-%{rss_version}/LICENSE.txt
%doc %{gem_dir}/gems/rss-%{rss_version}/NEWS.md
%{gem_dir}/gems/rss-%{rss_version}/lib
%{gem_dir}/specifications/rss-%{rss_version}.gemspec
%doc %{gem_dir}/gems/rss-%{rss_version}/Gemfile
%doc %{gem_dir}/gems/rss-%{rss_version}/README.md
%doc %{gem_dir}/gems/rss-%{rss_version}/Rakefile
%doc %{gem_dir}/gems/rss-%{rss_version}/test

%files typeprof
%dir %{gem_dir}/gems/typeprof-%{typeprof_version}
%{_bindir}/typeprof
%exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/.*
%license %{gem_dir}/gems/typeprof-%{typeprof_version}/LICENSE
%{gem_dir}/gems/typeprof-%{typeprof_version}/exe
%{gem_dir}/gems/typeprof-%{typeprof_version}/lib
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/tools
%exclude %{gem_dir}/gems/typeprof-%{typeprof_version}/typeprof-lsp
%{gem_dir}/specifications/typeprof-%{typeprof_version}.gemspec
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Gemfile*
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/README.md
%doc %{gem_dir}/gems/typeprof-%{typeprof_version}/Rakefile



%changelog
* Thu Apr 13 2023 pterjan <pterjan> 3.1.4-44.mga9
+ Revision: 1952870
- Bump release to get back all subpakages

* Wed Apr 05 2023 pterjan <pterjan> 3.1.4-43.mga9
+ Revision: 1951512
- Update to 3.1.4 (CVE-2023-28755, CVE-2023-28756)

* Fri Dec 09 2022 pterjan <pterjan> 3.1.3-43.mga9
+ Revision: 1920101
- Disable minitest, we currently have a newer gem
- Update to 3.1.3 and sync some patches with Fedora

* Thu Apr 14 2022 pterjan <pterjan> 3.1.2-42.mga9
+ Revision: 1849372
- Fix build on armv7hl

* Thu Apr 14 2022 pterjan <pterjan> 3.1.2-41.mga9
+ Revision: 1849345
- Update to 3.1.2 and sync with Fedora on extension installation

* Fri Mar 25 2022 umeabot <umeabot> 3.1.0-40.mga9
+ Revision: 1825697
- Mageia 9 Mass Rebuild

* Sat Feb 26 2022 pterjan <pterjan> 3.1.0-39.mga9
+ Revision: 1785710
- Do not emit rich dependencies for ~>

* Fri Feb 25 2022 pterjan <pterjan> 3.1.0-38.mga9
+ Revision: 1784868
- Add missing provides of rubygem(racc)

* Fri Feb 25 2022 pterjan <pterjan> 3.1.0-37.mga9
+ Revision: 1784549
- Fix move of binary extensions on armv7hl

* Thu Feb 24 2022 pterjan <pterjan> 3.1.0-36.mga9
+ Revision: 1784231
- Commit again ruby 3.1.0, resolving an old minor conflict on ruby.spec reverted all my recent changes
- Install rubygems.con
- Update to 3.1.0 and get much closer to Fedora packaging to ease future updates
+ wally <wally>
- rebuild for openssl 3.0.0

* Thu Aug 05 2021 luigiwalser <luigiwalser> 2.7.2-35.mga9
+ Revision: 1739668
- rebuild for libffi
+ tv <tv>
- move macros into /usr/lib/rpm/macros.d/, /etc/rpm/macros.d is unofficial and
  we wan't to drop the patch for it
- Fix passing ldflags to gems

* Tue Apr 27 2021 pterjan <pterjan> 2.7.2-34.mga9
+ Revision: 1720163
- Rebuild to hopefully help with gcc commands name change

* Tue Nov 10 2020 pterjan <pterjan> 2.7.2-33.mga8
+ Revision: 1644398
- Dependency generator now wants ruby(release) which is the package with ruby libs

* Sat Oct 17 2020 pterjan <pterjan> 2.7.2-32.mga8
+ Revision: 1636656
- Update to 2.7.2

* Mon Jun 22 2020 joequant <joequant> 2.7.1-31.mga8
+ Revision: 1598468
- rebuild

* Sun Jun 21 2020 wally <wally> 2.7.1-30.mga8
+ Revision: 1598349
- add patch to fix build with autoconf git
+ martinw <martinw>
- rebuild for new libffi major

* Sun Apr 05 2020 pterjan <pterjan> 2.7.1-29.mga8
+ Revision: 1564990
- Revert accidental changes to uby-2.1.0-custom-rubygems-location.patch
- Update to 2.7.1

* Sat Mar 28 2020 pterjan <pterjan> 2.7.0-28.mga8
+ Revision: 1561998
- Disable minitest, the gem was updated to a new version
- Fix racc accidentally also being in bundler
- Stop building racc, gem has been updated to a newer version

* Wed Mar 04 2020 pterjan <pterjan> 2.7.0-27.mga8
+ Revision: 1553852
- Set cflags/cxxflags/ldflags when building gems

* Mon Mar 02 2020 pterjan <pterjan> 2.7.0-26.mga8
+ Revision: 1553058
- Require did_you_mean which is unfortunately mandatory

* Mon Mar 02 2020 pterjan <pterjan> 2.7.0-25.mga8
+ Revision: 1553045
- Update gem_build to use --document=ri,rdoc instead of --rdoc --ri

* Mon Mar 02 2020 pterjan <pterjan> 2.7.0-24.mga8
+ Revision: 1553038
- Fix some directories replaced with symlinks

* Mon Mar 02 2020 pterjan <pterjan> 2.7.0-23.mga8
+ Revision: 1552752
- Sync a bit more with fedora, in particular moving some files to a better place
- Update file lists and various other fixes
- Add some test workarounds from Fedora
- Update to 2.7.0 and sync patches from Fedora

* Wed Feb 19 2020 umeabot <umeabot> 2.5.7-22.mga8
+ Revision: 1542336
- Mageia 8 Mass Rebuild
+ wally <wally>
- replace deprecated %%configure2_5x

* Sat Jan 04 2020 luigiwalser <luigiwalser> 2.5.7-21.mga8
+ Revision: 1476009
- rebuild for readline
+ wally <wally>
- replace deprecated %%makeinstall_std

* Sun Dec 22 2019 pterjan <pterjan> 2.5.7-20.mga8
+ Revision: 1469562
- Add upstream patch fixing tests with recent openssl
- Update to 2.5.7 (my work on 2.6.5 is still not finished and 2.7 is arriving this month...)

* Sun Oct 21 2018 pterjan <pterjan> 2.5.3-20.mga7
+ Revision: 1323468
- Update to 2.5.3

* Sun Sep 23 2018 umeabot <umeabot> 2.5.1-19.mga7
+ Revision: 1300870
- Mageia 7 Mass Rebuild

* Sun Jun 17 2018 luigiwalser <luigiwalser> 2.5.1-18.mga7
+ Revision: 1237492
- rebuild for gdbm

* Sun Apr 29 2018 pterjan <pterjan> 2.5.1-17.mga7
+ Revision: 1223656
- Drop rdoc, we have a newer gem
- Update to 2.5.1
+ wally <wally>
- sync .spec a bit with Fedora for aarch64
- add patch from upstream to increase timeout for test_clear_unreachable_keyword_args to fix aarch64 build error

* Sat Jan 06 2018 pterjan <pterjan> 2.5.0-16.mga7
+ Revision: 1190623
- Sync patches with Fedora

* Mon Jan 01 2018 pterjan <pterjan> 2.5.0-8.mga7
+ Revision: 1188892
- Adapt upstream patch to fix a segfault

* Mon Jan 01 2018 pterjan <pterjan> 2.5.0-7.mga7
+ Revision: 1188465
- Rebuild for Ruby 2.5

* Sun Dec 31 2017 pterjan <pterjan> 2.5.0-6.mga7
+ Revision: 1188444
- Fix my workaround...

* Sun Dec 31 2017 pterjan <pterjan> 2.5.0-5.mga7
+ Revision: 1188438
- Workaround loadpath issue

* Sun Dec 31 2017 pterjan <pterjan> 2.5.0-4.mga7
+ Revision: 1188425
- Increase release as net-telnet didn't change version
- Update to 2.5.0

* Sat Dec 30 2017 luigiwalser <luigiwalser> 2.4.3-3.mga7
+ Revision: 1188060
- 2.4.3

* Sun Dec 03 2017 josh <josh> 2.4.2-2.mga7
+ Revision: 1180909
- Bump version to rebuild against libreadline.so.7
- Replace devel BuildRequires with pkgconfig

* Thu Oct 05 2017 pterjan <pterjan> 2.4.2-1.mga7
+ Revision: 1169199
- Fix file lists
- Update openssl version
- fix lib version
- Update to 2.4.2

* Sun Sep 17 2017 pterjan <pterjan> 2.4.1-15.mga7
+ Revision: 1155105
- Fix tests failing on the build system
- Fix build with some disabled extensions and restore tests
- json is now in a separate package

* Thu Sep 14 2017 pterjan <pterjan> 2.4.1-14.mga7
+ Revision: 1153712
- Add missing openssl.rb

* Sat Sep 02 2017 pterjan <pterjan> 2.4.1-13.mga7
+ Revision: 1150973
- Require rubygems, ruby is very upset without it

* Fri Sep 01 2017 pterjan <pterjan> 2.4.1-12.mga7
+ Revision: 1150389
- I failed to disable the building of unwanted extensions/gems so exclude the files
- Disable more updated subpackages
- Fix doubly packages psych files
- Disable rubygems package to update it separately
- Few more moves
- Move more things to rubygems package
- Move back rubygems.macros to rubygems package

* Tue Aug 15 2017 pterjan <pterjan> 2.4.1-9.mga7
+ Revision: 1141087
- Add macros from fedora to add/remove gem dependencies

* Tue Aug 15 2017 pterjan <pterjan> 2.4.1-8.mga7
+ Revision: 1140696
- Add one more dependency

* Tue Aug 15 2017 pterjan <pterjan> 2.4.1-7.mga7
+ Revision: 1140659
- gem install into BUILD dir, build in the build section, and manually copy files. That fixes finding sources for debuginfo

* Tue Aug 15 2017 pterjan <pterjan> 2.4.1-6.mga7
+ Revision: 1140636
- Add another missing dependency
- Make gem install verbose and use --build-root
- Add another missing dependency

* Mon Aug 14 2017 pterjan <pterjan> 2.4.1-5.mga7
+ Revision: 1140361
- Manually add dependencies, they generators are in this package which is not installed during build

* Mon Aug 14 2017 pterjan <pterjan> 2.4.1-4.mga7
+ Revision: 1140339
- Fix json conflict
- Fix file list
- Add back rubygems.macros

* Mon Aug 14 2017 pterjan <pterjan> 2.4.1-2.mga7
+ Revision: 1140286
- Fix group

* Mon Aug 14 2017 pterjan <pterjan> 2.4.1-1.mga7
+ Revision: 1140278
- Fix file list
- Move json.rb to the right subpackage
- Fix some missed renames
- Simplify package, always bootstrap (fixes gem tests), and add new packages
- tk is gone
- Disable one more gem test, I still haven't found why they fail
- Use gem_dir instead of gems_dir, to be closer to fedora, and use global in more places
- Revert some local tests
- Update to 2.4.1 and pull in a bunch a Fedora changes
- Backport fix for CVE-2016-2339
- Update to latest bugfix release of 2.2 branch
- Run all tests during build (except the gem ones that need to be checked/fixed)
- Fix test_empty_data with CVE-2016-7798 patch

* Sun Oct 09 2016 pterjan <pterjan> 2.2.5-15.mga6
+ Revision: 1059716
- Add patch for CVE-2016-7798

* Thu Sep 08 2016 luigiwalser <luigiwalser> 2.2.5-14.mga6
+ Revision: 1050451
- 2.2.5 (sync with f22)

* Thu Mar 03 2016 umeabot <umeabot> 2.2.4-13.mga6
+ Revision: 984820
- Rebuild for openssl
+ pterjan <pterjan>
- Please perl-Youri-Package-RPM-Updater

* Tue Dec 29 2015 pterjan <pterjan> 2.2.4-12.mga6
+ Revision: 916704
- Bump release for subpackages which did not change version :(
- Update to 2.2.4
- Rever the io-console change, separate gem is older
- Don't ship io-console, we have a separate package

* Sat Dec 19 2015 pterjan <pterjan> 2.2.3-11.mga6
+ Revision: 912333
- Do not ship rake.rb, rdoc.rb and psych.rb in main package

* Sun Nov 01 2015 pterjan <pterjan> 2.2.3-10.mga6
+ Revision: 897270
- Ship all subpackages that are not packages separately

* Sat Oct 24 2015 pterjan <pterjan> 2.2.3-9.mga6
+ Revision: 895045
- Fix dependencies and disable gem subpackages

* Fri Oct 23 2015 pterjan <pterjan> 2.2.3-8.mga6
+ Revision: 894524
- Avoid file conflicts

* Fri Oct 23 2015 pterjan <pterjan> 2.2.3-7.mga6
+ Revision: 894486
- Force provides
- Provide the same ruby(abi) that we require

* Fri Oct 23 2015 pterjan <pterjan> 2.2.3-6.mga6
+ Revision: 894469
- Rebuild 2/2 to get proper dependencies

* Fri Oct 23 2015 pterjan <pterjan> 2.2.3-5.mga6
+ Revision: 894465
- Rebuild 1/2 to get proper dependencies
- Update gems path in the dependency extractor

* Fri Oct 23 2015 pterjan <pterjan> 2.2.3-4.mga6
+ Revision: 894460
- re enable bootstrap
- use the defined release_string macro (and fix it)
- build gems to allow bootstrap
- various fixes and cleanups, not yet tested if more are needed
+ blino <blino>
- rebuild with bootstrap since RubyGems should be installable again

* Fri Oct 23 2015 blino <blino> 2.2.3-2.mga6
+ Revision: 894369
- remove gems cache (build was failing only in bootstrap mode before, now fails everytime since we do not install bundles in removed home dir anymore)
- stop removing gem dir in home now that all install paths should be ok
- update do-not-install-to-user-dir to handle bundle gems as well
- rebuild in bootstrap mode to be able to rebuild ruby-json which is required by ruby-RubyGems and thus ruby
+ pterjan <pterjan>
- Fix file list
- Fix regex

* Wed Oct 21 2015 shlomif <shlomif> 2.2.3-1.mga6
+ Revision: 893775
- New version 2.2.3 - synced in part from Fedora.
+ pterjan <pterjan>
- Fix dependency extraction
- Better patch fix for bootstrap

* Sat Oct 17 2015 pterjan <pterjan> 2.0.0.p645-5.mga6
+ Revision: 892281
- Define gems_dir in ruby package as it is used in rubygems.attr and we don't require Rubygems in bootstrap mode

* Fri Oct 16 2015 pterjan <pterjan> 2.0.0.p645-4.mga6
+ Revision: 892256
- fix user-dir patch to work in bootstrap

* Sun Oct 11 2015 pterjan <pterjan> 2.0.0.p645-3.mga6
+ Revision: 889596
- Add upstream patch to support Tk 8.6
+ tv <tv>
- rebuild for tk 8.6
+ daviddavid <daviddavid>
- rebuild for new tcl/tk 8.6.4

* Thu Apr 30 2015 pterjan <pterjan> 2.0.0.p645-1.mga5
+ Revision: 820881
- Drop applied patch
- Update to p645 (CVE-2015-1855)

* Fri Nov 14 2014 pterjan <pterjan> 2.0.0.p598-1.mga5
+ Revision: 796908
- Update to 2.0.0-p598 (CVE-2014-8090)
+ luigiwalser <luigiwalser>
- add upstream patch to fix CVE-2014-4975

* Mon Oct 27 2014 pterjan <pterjan> 2.0.0.p594-1.mga5
+ Revision: 793866
- 2.0.0-p594 (CVE-2014-8080 + Insecure SSL/TLS options are now turn off by default + many bug fixes)

* Wed Oct 15 2014 umeabot <umeabot> 2.0.0.p451-6.mga5
+ Revision: 748136
- Second Mageia 5 Mass Rebuild

* Tue Sep 16 2014 umeabot <umeabot> 2.0.0.p451-5.mga5
+ Revision: 688736
- Mageia 5 Mass Rebuild

* Thu Sep 11 2014 tv <tv> 2.0.0.p451-4.mga5
+ Revision: 674762
- move rubygem req/prov generator in ruby instead of -devel subpackage
  (this one is actually required by gems but not always -devel)

* Mon Sep 08 2014 tv <tv> 2.0.0.p451-3.mga5
+ Revision: 673709
- add RPM dependency generators for RubyGems

* Mon Apr 21 2014 pterjan <pterjan> 2.0.0.p451-2.mga5
+ Revision: 617250
- Fix version in pkg-config file (mga#13240)

* Mon Mar 10 2014 pterjan <pterjan> 2.0.0.p451-1.mga5
+ Revision: 601635
- Add upstream patch to fix build with new readline
- Patch to force installing bundled gems to system directory even if build is running as user
- Drop patch already applied
- Add fedora patch preventing potential multilib conflict
- Update to p451

* Fri Dec 27 2013 pterjan <pterjan> 2.0.0.p247-8.mga4
+ Revision: 560987
- Fix use of wrong macro now that they are different
- Move rubygems out of gems dir as this brakes bundler

* Sat Nov 23 2013 fwang <fwang> 2.0.0.p247-7.mga4
+ Revision: 552441
- add upstream patch to fix CVE-2013-4164

* Mon Oct 21 2013 umeabot <umeabot> 2.0.0.p247-6.mga4
+ Revision: 538717
- Mageia 4 Mass Rebuild

* Wed Oct 02 2013 fwang <fwang> 2.0.0.p247-5.mga4
+ Revision: 490240
- fix issues with DESTDIR (patch from fedora)
+ pterjan <pterjan>
- Switch to Ruby 2
- Grrr failed again

* Wed Aug 21 2013 fwang <fwang> 2.0.0.p247-4.mga4
+ Revision: 468908
- do not build bootstrap
- rebuild to drop temporary obsoletes
- temporarily obsolete newly built packages
- move into current