%{?scl:%scl_package ruby} %{!?scl:%global pkg_name %{name}} %global scl_gdbm 0 %global scl_libyaml 0 %global major_version 2 %global minor_version 1 %global teeny_version 2 %global patch_level 95 %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 preview2 # Keep the revision enabled for pre-releases from SVN. #%%global revision 44362 %global ruby_archive %{pkg_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}}} %else # Ruby will be using semver versioning scheme since Ruby 2.1.0. However, it is # unclear ATM what name will be used when next bugfix version is released. # http://bugs.ruby-lang.org/issues/8835 #%%global ruby_archive %{ruby_archive}-p%{patch_level} %endif %global release 23 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} %global rubygems_version 2.2.2 # 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 # TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM. # http://redmine.ruby-lang.org/issues/5313 %global irb_version %{ruby_version} %global bigdecimal_version 1.2.4 %global io_console_version 0.4.2 %global json_version 1.8.1 %global minitest_version 4.7.5 %global psych_version 2.0.5 %global rake_version 10.1.0 %global rdoc_version 4.1.0 # Might not be needed in the future, if we are lucky enough. # https://bugzilla.redhat.com/show_bug.cgi?id=888262 %global tapset_root %{_datadir}/systemtap %global tapset_dir %{tapset_root}/tapset %global tapset_libdir %(echo %{_libdir} | sed 's/64//')* %global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/') %if 0%{?fedora} >= 19 %global with_rubypick 1 %endif Summary: An interpreter of object-oriented scripting language Name: %{?scl_prefix}ruby Version: %{ruby_version} Release: %{release_string} Group: Development/Languages # Public Domain for example for: include/ruby/st.h, strftime.c, ... License: (Ruby or BSD) and Public Domain URL: http://ruby-lang.org/ Source0: ftp://ftp.ruby-lang.org/pub/%{pkg_name}/%{major_minor_version}/%{ruby_archive}.tar.bz2 Source1: operating_system.rb # TODO: Try to push SystemTap support upstream. Source2: libruby.stp Source3: ruby-exercise.stp Source4: macros.ruby Source5: macros.rubygems Source6: abrt_prelude.rb # This wrapper fixes https://bugzilla.redhat.com/show_bug.cgi?id=977941 # Hopefully, it will get removed soon: # https://fedorahosted.org/fpc/ticket/312 # https://bugzilla.redhat.com/show_bug.cgi?id=977941 Source7: config.h # RPM dependency generators. Source8: rubygems.attr Source9: rubygems.req Source10: rubygems.prov # %%load function should be supported in RPM 4.12+. # http://lists.rpm.org/pipermail/rpm-maint/2014-February/003659.html Source100: load.inc %include %{SOURCE100} %{load %{SOURCE4}} %{load %{SOURCE5}} # http://bugs.ruby-lang.org/issues/7807 Patch0: 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 Patch1: 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. Patch2: ruby-2.1.0-always-use-i386.patch # Fixes random WEBRick test failures. # https://bugs.ruby-lang.org/issues/6573. Patch3: ruby-1.9.3.p195-fix-webrick-tests.patch # Allows to install RubyGems into custom directory, outside of Ruby's tree. # http://redmine.ruby-lang.org/issues/5617 Patch4: ruby-2.1.0-custom-rubygems-location.patch # Make mkmf verbose by default Patch5: ruby-1.9.3-mkmf-verbose.patch # Adds support for '--with-prelude' configuration option. This allows to built # in support for ABRT. # http://bugs.ruby-lang.org/issues/8566 Patch6: ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch # Fix build with libffi 3.1 # https://bugs.ruby-lang.org/issues/9897 Patch7: ruby-r46485-libffi31.patch # make sure we always use scl gdbm %if 0%{?scl_gdbm} Requires: %{?scl_prefix}gdbm %endif Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} # Make the bigdecimal gem a runtime dependency of Ruby to avoid problems # with user-installed gems, that don't require it in gemspec/Gemfile # See https://bugzilla.redhat.com/show_bug.cgi?id=829209 # and http://bugs.ruby-lang.org/issues/6123 Requires: %{?scl_prefix}rubygem(bigdecimal) >= %{bigdecimal_version} BuildRequires: autoconf %if 0%{?scl_gdbm} BuildRequires: %{?scl_prefix}gdbm-devel %else BuildRequires: gdbm-devel %endif BuildRequires: db4-devel BuildRequires: libffi-devel BuildRequires: openssl-devel %if 0%{?scl_libyaml} BuildRequires: %{?scl_prefix}libyaml-devel %else BuildRequires: libyaml-devel %endif BuildRequires: readline-devel BuildRequires: tk-devel # Needed to pass test_set_program_name(TestRubyOptions) BuildRequires: procps BuildRequires: %{_bindir}/dtrace # RubyGems test suite optional dependencies. BuildRequires: %{_bindir}/git BuildRequires: %{_bindir}/cmake # This package provides %%{_bindir}/ruby-mri therefore it is marked by this # virtual provide. It can be installed as dependency of rubypick. Provides: %{?scl_prefix}ruby(runtime_executable) = %{ruby_release} %global __provides_exclude_from ^(%{ruby_libarchdir}|%{gem_archdir})/.*\\.so$ %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. %package devel Summary: A Ruby development environment Group: Development/Languages Requires: %{?scl_prefix}%{pkg_name}%{?_isa} = %{version}-%{release} %description devel Header files and libraries for building an extension library for the Ruby or an application embedding Ruby. %package libs Summary: Libraries necessary to run Ruby Group: Development/Libraries License: Ruby or BSD Provides: %{?scl_prefix}ruby(release) = %{ruby_release} %description libs This package includes the libruby, necessary to run Ruby. # TODO: Rename or not rename to ruby-rubygems? %package -n %{?scl_prefix}rubygems Summary: The Ruby standard for packaging ruby libraries Version: %{rubygems_version} Group: Development/Libraries License: Ruby or MIT Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}rubygem(rdoc) >= %{rdoc_version} Requires: %{?scl_prefix}rubygem(io-console) >= %{io_console_version} Requires: %{?scl_prefix}rubygem(psych) >= %{psych_version} Provides: %{?scl_prefix}gem = %{version}-%{release} Provides: %{?scl_prefix}ruby(rubygems) = %{version}-%{release} BuildArch: noarch %description -n %{?scl_prefix}rubygems RubyGems is the Ruby standard for publishing and managing third party libraries. %package -n %{?scl_prefix}rubygems-devel Summary: Macros and development tools for packaging RubyGems Version: %{rubygems_version} Group: Development/Libraries License: Ruby or MIT Requires: %{?scl_prefix}ruby(rubygems) = %{version}-%{release} BuildArch: noarch %description -n %{?scl_prefix}rubygems-devel Macros and development tools for packaging RubyGems. %package -n %{?scl_prefix}rubygem-rake Summary: Ruby based make-like utility Version: %{rake_version} Group: Development/Libraries License: Ruby or MIT Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rake = %{version}-%{release} Provides: %{?scl_prefix}rubygem(rake) = %{version}-%{release} BuildArch: noarch %description -n %{?scl_prefix}rubygem-rake Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax. %package irb Summary: The Interactive Ruby Version: %{irb_version} Group: Development/Libraries Requires: %{?scl_prefix}%{pkg_name}-libs = %{ruby_version} Provides: %{?scl_prefix}irb = %{version}-%{release} Provides: %{?scl_prefix}ruby(irb) = %{version}-%{release} BuildArch: noarch %description irb The irb is acronym for Interactive Ruby. It evaluates ruby expression from the terminal. %package -n %{?scl_prefix}rubygem-rdoc Summary: A tool to generate HTML and command-line documentation for Ruby projects Version: %{rdoc_version} Group: Development/Libraries License: GPLv2 and Ruby and MIT Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Requires: %{?scl_prefix}ruby(irb) = %{irb_version} Requires: %{?scl_prefix}rubygem(json) >= %{json_version} Provides: %{?scl_prefix}rdoc = %{version}-%{release} Provides: %{?scl_prefix}ri = %{version}-%{release} Provides: %{?scl_prefix}rubygem(rdoc) = %{version}-%{release} BuildArch: noarch %description -n %{?scl_prefix}rubygem-rdoc RDoc produces HTML and command-line documentation for Ruby projects. RDoc includes the 'rdoc' and 'ri' tools for generating and displaying online documentation. %package doc Summary: Documentation for %{pkg_name} Group: Documentation Requires: %{?scl_prefix}%{_bindir}/ri BuildArch: noarch %description doc This package contains documentation for %{pkg_name}. %package -n %{?scl_prefix}rubygem-bigdecimal Summary: BigDecimal provides arbitrary-precision floating point decimal arithmetic Version: %{bigdecimal_version} Group: Development/Libraries License: GPL+ or Artistic Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rubygem(bigdecimal) = %{version}-%{release} %description -n %{?scl_prefix}rubygem-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. %package -n %{?scl_prefix}rubygem-io-console Summary: IO/Console is a simple console utilizing library Version: %{io_console_version} Group: Development/Libraries Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rubygem(io-console) = %{version}-%{release} %description -n %{?scl_prefix}rubygem-io-console IO/Console provides very simple and portable access to console. It doesn't provide higher layer features, such like curses and readline. %package -n %{?scl_prefix}rubygem-json Summary: This is a JSON implementation as a Ruby extension in C Version: %{json_version} Group: Development/Libraries License: Ruby or GPLv2 Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rubygem(json) = %{version}-%{release} %description -n %{?scl_prefix}rubygem-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. %package -n %{?scl_prefix}rubygem-minitest Summary: Minitest provides a complete suite of testing facilities Version: %{minitest_version} Group: Development/Libraries License: MIT Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rubygem(minitest) = %{version}-%{release} BuildArch: noarch %description -n %{?scl_prefix}rubygem-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. %package -n %{?scl_prefix}rubygem-psych Summary: A libyaml wrapper for Ruby Version: %{psych_version} Group: Development/Libraries License: MIT Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rubygem(psych) = %{version}-%{release} %description -n %{?scl_prefix}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. # TODO: # %%pacakge -n rubygem-test-unit %package tcltk Summary: Tcl/Tk interface for scripting language Ruby Group: Development/Languages Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{ruby_version} Provides: %{?scl_prefix}ruby(tcltk) = %{ruby_version}-%{release} %description tcltk Tcl/Tk interface for the object-oriented scripting language Ruby. %prep %setup -q -n %{ruby_archive} %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p0 # Provide an example of usage of the tapset: cp -a %{SOURCE3} . # Make abrt_prelude.rb available for compilation process. The prelude must be # available together with Ruby's source due to # https://github.com/ruby/ruby/blob/trunk/tool/compile_prelude.rb#L26 cp -a %{SOURCE6} . %build autoconf %if 0%{?scl_gdbm} sed -i -e 's|dir_config("gdbm")|dir_config("gdbm", "%{_includedir}", "%{_libdir}")|' ./ext/gdbm/extconf.rb %endif %if 0%{?scl_libyaml} sed -i -e "s|'yaml.h'|'yaml.h', '%{_includedir}'|" \ -e "s|'yaml', 'yaml_get_version'|'yaml', 'yaml_get_version', '%{_libdir}'|" ./ext/psych/extconf.rb %endif %{?scl:scl enable %{scl} - << \EOF} %configure \ --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='%{pkg_name}.pc' \ --with-tcltkversion=8.6 \ --disable-rpath \ --enable-shared \ --with-ruby-version='' \ --enable-multiarch \ --with-prelude=./abrt_prelude.rb \ %{?scl:EOF} # Q= makes the build output more verbose and allows to check Fedora # compiler options. %{?scl:scl enable %{scl} - << \EOF} make %{?_smp_mflags} COPY="cp -p" Q= %{?scl:EOF} %install rm -rf %{buildroot} %{?scl:scl enable %{scl} - << \EOF} make install DESTDIR=%{buildroot} %{?scl:EOF} # Rename ruby/config.h to ruby/config-.h to avoid file conflicts on # multilib systems and install config.h wrapper mv %{buildroot}%{_includedir}/%{pkg_name}/config.h %{buildroot}%{_includedir}/%{pkg_name}/config-%{_arch}.h install -m644 %{SOURCE7} %{buildroot}%{_includedir}/%{pkg_name}/config.h # Rename the ruby executable. It is replaced by RubyPick. %{?with_rubypick:mv %{buildroot}%{_bindir}/%{pkg_name}{,-mri}} # 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/%{pkg_name}.pc # Kill bundled certificates, as they should be part of ca-certificates. for cert in \ Class3PublicPrimaryCertificationAuthority.pem \ DigiCertHighAssuranceEVRootCA.pem \ EntrustnetSecureServerCertificationAuthority.pem \ GeoTrustGlobalCA.pem do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert done # Move macros file insto proper place and replace the %%{pkg_name} macro, since it # would be wrongly evaluated during build of other packages. mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d install -m 644 %{SOURCE4} %{buildroot}%{_rpmconfigdir}/macros.d/macros.ruby sed -i "s/%%{pkg_name}/%{pkg_name}/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.ruby install -m 644 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems sed -i "s/%%{pkg_name}/%{pkg_name}/" %{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 custom operating_system.rb. mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults cp %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults # 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. # TODO: These folders should go into rubygem-filesystem but how to achieve it, # since noarch package cannot provide arch dependent subpackages? # http://rpm.org/ticket/78 mkdir -p %{buildroot}%{_exec_prefix}/lib{,64}/gems/%{pkg_name} # Move bundled rubygems to %%gem_dir and %%gem_extdir_mri # make symlinks for io-console and bigdecimal, which are considered to be part of stdlib by other Gems mkdir -p %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/lib mv %{buildroot}%{ruby_libdir}/rake* %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/lib mv %{buildroot}%{gem_dir}/specifications/default/rake-%{rake_version}.gemspec %{buildroot}%{gem_dir}/specifications 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/%{pkg_name}/bigdecimal-%{bigdecimal_version} mv %{buildroot}%{ruby_libdir}/bigdecimal %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib mv %{buildroot}%{ruby_libarchdir}/bigdecimal.so %{buildroot}%{_libdir}/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version} mv %{buildroot}%{gem_dir}/specifications/default/bigdecimal-%{bigdecimal_version}.gemspec %{buildroot}%{gem_dir}/specifications ln -s %{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib/bigdecimal %{buildroot}%{ruby_libdir}/bigdecimal ln -s %{_libdir}/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version}/bigdecimal.so %{buildroot}%{ruby_libarchdir}/bigdecimal.so mkdir -p %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version}/io mv %{buildroot}%{ruby_libdir}/io %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib mv %{buildroot}%{ruby_libarchdir}/io/console.so %{buildroot}%{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version}/io mv %{buildroot}%{gem_dir}/specifications/default/io-console-%{io_console_version}.gemspec %{buildroot}%{gem_dir}/specifications ln -s %{gem_dir}/gems/io-console-%{io_console_version}/lib/io %{buildroot}%{ruby_libdir}/io ln -s %{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version}/io/console.so %{buildroot}%{ruby_libarchdir}/io/console.so mkdir -p %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_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/%{pkg_name}/json-%{json_version}/ mv %{buildroot}%{gem_dir}/specifications/default/json-%{json_version}.gemspec %{buildroot}%{gem_dir}/specifications mkdir -p %{buildroot}%{gem_dir}/gems/minitest-%{minitest_version}/lib mv %{buildroot}%{ruby_libdir}/minitest %{buildroot}%{gem_dir}/gems/minitest-%{minitest_version}/lib mv %{buildroot}%{gem_dir}/specifications/default/minitest-%{minitest_version}.gemspec %{buildroot}%{gem_dir}/specifications mkdir -p %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/psych-%{psych_version} mv %{buildroot}%{ruby_libdir}/psych* %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib mv %{buildroot}%{ruby_libarchdir}/psych.so %{buildroot}%{_libdir}/gems/%{pkg_name}/psych-%{psych_version}/ mv %{buildroot}%{gem_dir}/specifications/default/psych-%{psych_version}.gemspec %{buildroot}%{gem_dir}/specifications # The links should replace directory, which RPM cannot handle and it is causing # issues during upgrade from F18 to F19. As a workaround the links are placed # into vendor direcories. This could be changed back as soon as F18 is EOLed. # https://bugzilla.redhat.com/show_bug.cgi?id=988490 ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych %{buildroot}%{ruby_vendorlibdir}/psych ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych.rb %{buildroot}%{ruby_vendorlibdir}/psych.rb ln -s %{_libdir}/gems/%{pkg_name}/psych-%{psych_version}/psych.so %{buildroot}%{ruby_vendorarchdir}/psych.so # Adjust the gemspec files so that the gems will load properly sed -i '/^end$/ i\ s.require_paths = ["lib"]' %{buildroot}%{gem_dir}/specifications/rake-%{rake_version}.gemspec sed -i '/^end$/ i\ s.require_paths = ["lib"]' %{buildroot}%{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec sed -i '/^end$/ i\ s.require_paths = ["lib"]\ s.extensions = ["bigdecimal.so"]' %{buildroot}%{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec sed -i '/^end$/ i\ s.require_paths = ["lib"]\ s.extensions = ["io/console.so"]' %{buildroot}%{gem_dir}/specifications/io-console-%{io_console_version}.gemspec sed -i '/^end$/ i\ s.require_paths = ["lib"]\ s.extensions = ["json/ext/parser.so", "json/ext/generator.so"]' %{buildroot}%{gem_dir}/specifications/json-%{json_version}.gemspec sed -i '/^end$/ i\ s.require_paths = ["lib"]' %{buildroot}%{gem_dir}/specifications/minitest-%{minitest_version}.gemspec # Install a tapset and fix up the path to the library. mkdir -p %{buildroot}%{tapset_dir} sed -e "s|@LIBRARY_PATH@|%{tapset_libdir}/libruby.so.%{ruby_version}|" \ %{SOURCE2} > %{buildroot}%{tapset_dir}/libruby.so.%{ruby_version}.stp # Escape '*/' in comment. sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{tapset_dir}/libruby.so.%{ruby_version}.stp %check DISABLE_TESTS="" %ifarch armv7l armv7hl armv7hnl # test_call_double(DL::TestDL) fails on ARM HardFP # http://bugs.ruby-lang.org/issues/6592 DISABLE_TESTS="-x test_dl2.rb $DISABLE_TESTS" # Workaround OpenSSL::TestPKeyRSA#test_sign_verify_memory_leak timeouts on ARM. # https://bugs.ruby-lang.org/issues/9984 sed -i -e 's|20_000|10_000|g' test/openssl/test_pkey_rsa.rb %endif # 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 # TestSignal#test_hup_me hangs up the test suite. # http://bugs.ruby-lang.org/issues/8997 sed -i '/def test_hup_me/,/end if Process.respond_to/ s/^/#/' test/ruby/test_signal.rb # Fix "Could not find 'minitest'" error. # http://bugs.ruby-lang.org/issues/9259 sed -i "/^ gem 'minitest', '~> 4.0'/ s/^/#/" lib/rubygems/test_case.rb # Segmentation fault. # https://bugs.ruby-lang.org/issues/9198 sed -i '/^ def test_machine_stackoverflow/,/^ end/ s/^/#/' test/ruby/test_exception.rb # Allow MD5 in OpenSSL. # https://bugs.ruby-lang.org/issues/9154 OPENSSL_ENABLE_MD5_VERIFY=1 make check TESTS="-v $DISABLE_TESTS" %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig %files %doc COPYING %lang(ja) %doc COPYING.ja %doc GPL %doc LEGAL %{_bindir}/erb %{_bindir}/%{pkg_name}%{?with_rubypick:-mri} %{_bindir}/testrb %{_mandir}/man1/erb* %{_mandir}/man1/ruby* # http://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries %exclude %{_libdir}/libruby-static.a %files devel %doc COPYING* %doc GPL %doc LEGAL %doc README.EXT %lang(ja) %doc README.EXT.ja %{_rpmconfigdir}/macros.d/macros.ruby %{_includedir}/* %{_libdir}/libruby.so %{_libdir}/pkgconfig/%{pkg_name}.pc %files libs %doc COPYING %lang(ja) %doc COPYING.ja %doc GPL %doc LEGAL %doc README %lang(ja) %doc README.ja %doc NEWS %doc doc/NEWS-* # Exclude /usr/local directory since it is supposed to be managed by # local system administrator. %exclude %{ruby_sitelibdir} %exclude %{ruby_sitearchdir} %{ruby_vendorlibdir} %{ruby_vendorarchdir} # List all these files explicitly to prevent surprises # Platform independent libraries. %dir %{ruby_libdir} %{ruby_libdir}/*.rb %exclude %{ruby_libdir}/*-tk.rb %exclude %{ruby_libdir}/irb.rb %exclude %{ruby_libdir}/tcltk.rb %exclude %{ruby_libdir}/tk*.rb %{ruby_libdir}/cgi %{ruby_libdir}/date %{ruby_libdir}/digest %{ruby_libdir}/dl %{ruby_libdir}/drb %{ruby_libdir}/fiddle %exclude %{ruby_libdir}/irb %{ruby_libdir}/matrix %{ruby_libdir}/net %{ruby_libdir}/openssl %{ruby_libdir}/optparse %{ruby_libdir}/racc %{ruby_libdir}/rbconfig %{ruby_libdir}/rexml %{ruby_libdir}/rinda %{ruby_libdir}/ripper %{ruby_libdir}/rss %{ruby_libdir}/shell %{ruby_libdir}/syslog %{ruby_libdir}/test %exclude %{ruby_libdir}/tk %exclude %{ruby_libdir}/tkextlib %{ruby_libdir}/uri %{ruby_libdir}/webrick %{ruby_libdir}/xmlrpc %{ruby_libdir}/yaml # Platform specific libraries. %{_libdir}/libruby.so.* %dir %{ruby_libarchdir} %{ruby_libarchdir}/continuation.so %{ruby_libarchdir}/coverage.so %{ruby_libarchdir}/date_core.so %{ruby_libarchdir}/dbm.so %dir %{ruby_libarchdir}/digest %{ruby_libarchdir}/digest.so %{ruby_libarchdir}/digest/bubblebabble.so %{ruby_libarchdir}/digest/md5.so %{ruby_libarchdir}/digest/rmd160.so %{ruby_libarchdir}/digest/sha1.so %{ruby_libarchdir}/digest/sha2.so %dir %{ruby_libarchdir}/dl %{ruby_libarchdir}/dl.so %{ruby_libarchdir}/dl/callback.so %dir %{ruby_libarchdir}/enc %{ruby_libarchdir}/enc/big5.so %{ruby_libarchdir}/enc/cp949.so %{ruby_libarchdir}/enc/emacs_mule.so %{ruby_libarchdir}/enc/encdb.so %{ruby_libarchdir}/enc/euc_jp.so %{ruby_libarchdir}/enc/euc_kr.so %{ruby_libarchdir}/enc/euc_tw.so %{ruby_libarchdir}/enc/gb18030.so %{ruby_libarchdir}/enc/gb2312.so %{ruby_libarchdir}/enc/gbk.so %{ruby_libarchdir}/enc/iso_8859_1.so %{ruby_libarchdir}/enc/iso_8859_10.so %{ruby_libarchdir}/enc/iso_8859_11.so %{ruby_libarchdir}/enc/iso_8859_13.so %{ruby_libarchdir}/enc/iso_8859_14.so %{ruby_libarchdir}/enc/iso_8859_15.so %{ruby_libarchdir}/enc/iso_8859_16.so %{ruby_libarchdir}/enc/iso_8859_2.so %{ruby_libarchdir}/enc/iso_8859_3.so %{ruby_libarchdir}/enc/iso_8859_4.so %{ruby_libarchdir}/enc/iso_8859_5.so %{ruby_libarchdir}/enc/iso_8859_6.so %{ruby_libarchdir}/enc/iso_8859_7.so %{ruby_libarchdir}/enc/iso_8859_8.so %{ruby_libarchdir}/enc/iso_8859_9.so %{ruby_libarchdir}/enc/koi8_r.so %{ruby_libarchdir}/enc/koi8_u.so %{ruby_libarchdir}/enc/shift_jis.so %dir %{ruby_libarchdir}/enc/trans %{ruby_libarchdir}/enc/trans/big5.so %{ruby_libarchdir}/enc/trans/chinese.so %{ruby_libarchdir}/enc/trans/emoji.so %{ruby_libarchdir}/enc/trans/emoji_iso2022_kddi.so %{ruby_libarchdir}/enc/trans/emoji_sjis_docomo.so %{ruby_libarchdir}/enc/trans/emoji_sjis_kddi.so %{ruby_libarchdir}/enc/trans/emoji_sjis_softbank.so %{ruby_libarchdir}/enc/trans/escape.so %{ruby_libarchdir}/enc/trans/gb18030.so %{ruby_libarchdir}/enc/trans/gbk.so %{ruby_libarchdir}/enc/trans/iso2022.so %{ruby_libarchdir}/enc/trans/japanese.so %{ruby_libarchdir}/enc/trans/japanese_euc.so %{ruby_libarchdir}/enc/trans/japanese_sjis.so %{ruby_libarchdir}/enc/trans/korean.so %{ruby_libarchdir}/enc/trans/single_byte.so %{ruby_libarchdir}/enc/trans/transdb.so %{ruby_libarchdir}/enc/trans/utf8_mac.so %{ruby_libarchdir}/enc/trans/utf_16_32.so %{ruby_libarchdir}/enc/utf_16be.so %{ruby_libarchdir}/enc/utf_16le.so %{ruby_libarchdir}/enc/utf_32be.so %{ruby_libarchdir}/enc/utf_32le.so %{ruby_libarchdir}/enc/windows_1251.so %{ruby_libarchdir}/enc/windows_31j.so %{ruby_libarchdir}/etc.so %{ruby_libarchdir}/fcntl.so %{ruby_libarchdir}/fiber.so %{ruby_libarchdir}/fiddle.so %{ruby_libarchdir}/gdbm.so %dir %{ruby_libarchdir}/io %{ruby_libarchdir}/io/nonblock.so %{ruby_libarchdir}/io/wait.so %dir %{ruby_libarchdir}/mathn %{ruby_libarchdir}/mathn/complex.so %{ruby_libarchdir}/mathn/rational.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 %{ruby_libarchdir}/rbconfig/sizeof.so %{ruby_libarchdir}/readline.so %{ruby_libarchdir}/ripper.so %{ruby_libarchdir}/sdbm.so %{ruby_libarchdir}/socket.so %{ruby_libarchdir}/stringio.so %{ruby_libarchdir}/strscan.so %{ruby_libarchdir}/syslog.so %exclude %{ruby_libarchdir}/tcltklib.so %{ruby_libarchdir}/thread.so %exclude %{ruby_libarchdir}/tkutil.so %{ruby_libarchdir}/zlib.so %{tapset_root} # TODO rubygems 2.0.0 does not create test-unit gemspec # TODO for now put this in ruby-libs rpm # TODO check if the following can be removed after # TODO test-unit rebuild %dir %{gem_dir} %dir %{gem_dir}/specifications %dir %{gem_dir}/specifications/default %{gem_dir}/specifications/default/test-unit-*.gemspec %files -n %{?scl_prefix}rubygems %{_bindir}/gem %{rubygems_dir} %{gem_dir} %exclude %{gem_dir}/gems/* %{_exec_prefix}/lib*/gems %exclude %{_exec_prefix}/lib*/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version} %exclude %{_exec_prefix}/lib*/gems/%{pkg_name}/io-console-%{io_console_version} %exclude %{_exec_prefix}/lib*/gems/%{pkg_name}/json-%{json_version} %exclude %{_exec_prefix}/lib*/gems/%{pkg_name}/psych-%{psych_version} %exclude %{gem_dir}/gems/rake-%{rake_version} %exclude %{gem_dir}/gems/rdoc-%{rdoc_version} %exclude %{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec %exclude %{gem_dir}/specifications/io-console-%{io_console_version}.gemspec %exclude %{gem_dir}/specifications/json-%{json_version}.gemspec %exclude %{gem_dir}/specifications/minitest-%{minitest_version}.gemspec %exclude %{gem_dir}/specifications/rake-%{rake_version}.gemspec %exclude %{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec %exclude %{gem_dir}/specifications/psych-%{psych_version}.gemspec # TODO rubygems 2.0.0 does not create test-unit gemspec # TODO where to put test-unit-*.gemspec?? %exclude %{gem_dir}/specifications/default/test-unit-*.gemspec %files -n %{?scl_prefix}rubygems-devel %{_rpmconfigdir}/macros.d/macros.rubygems %{_rpmconfigdir}/fileattrs/rubygems.attr %{_rpmconfigdir}/rubygems.req %{_rpmconfigdir}/rubygems.prov %files -n %{?scl_prefix}rubygem-rake %{_bindir}/rake %{gem_dir}/gems/rake-%{rake_version} %{gem_dir}/specifications/rake-%{rake_version}.gemspec %{_mandir}/man1/rake.1* %files irb %{_bindir}/irb %{ruby_libdir}/irb.rb %{ruby_libdir}/irb %{_mandir}/man1/irb.1* %files -n %{?scl_prefix}rubygem-rdoc %{_bindir}/rdoc %{_bindir}/ri %{gem_dir}/gems/rdoc-%{rdoc_version} %{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec %{_mandir}/man1/ri* %files doc %doc README %lang(ja) %doc README.ja %doc ChangeLog %doc doc/ChangeLog-* %doc ruby-exercise.stp %{_datadir}/ri %files -n %{?scl_prefix}rubygem-bigdecimal %{ruby_libdir}/bigdecimal %{ruby_libarchdir}/bigdecimal.so %{_libdir}/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version} %{gem_dir}/gems/bigdecimal-%{bigdecimal_version} %{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec %files -n %{?scl_prefix}rubygem-io-console %{ruby_libdir}/io %{ruby_libarchdir}/io/console.so %{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version} %{gem_dir}/gems/io-console-%{io_console_version} %{gem_dir}/specifications/io-console-%{io_console_version}.gemspec %files -n %{?scl_prefix}rubygem-json %{_libdir}/gems/%{pkg_name}/json-%{json_version} %{gem_dir}/gems/json-%{json_version} %{gem_dir}/specifications/json-%{json_version}.gemspec %files -n %{?scl_prefix}rubygem-minitest %{gem_dir}/gems/minitest-%{minitest_version} %{gem_dir}/specifications/minitest-%{minitest_version}.gemspec %files -n %{?scl_prefix}rubygem-psych %{ruby_vendorlibdir}/psych %{ruby_vendorlibdir}/psych.rb %{ruby_vendorarchdir}/psych.so %{_libdir}/gems/%{pkg_name}/psych-%{psych_version} %{gem_dir}/gems/psych-%{psych_version} %{gem_dir}/specifications/psych-%{psych_version}.gemspec %files tcltk %{ruby_libdir}/*-tk.rb %{ruby_libdir}/tcltk.rb %{ruby_libdir}/tk*.rb %{ruby_libarchdir}/tcltklib.so %{ruby_libarchdir}/tkutil.so %{ruby_libdir}/tk %{ruby_libdir}/tkextlib %changelog * Thu Jul 03 2014 Adam Miller - 2.1.2-23 - First build for ruby21 Software Collection - Package based on 2.1.2-23 from Fedora 21 (currently rawhide)