%define subver 1.9 %define rubyapi 1.9.1 %define rubyver 1.9.3 %define patchversion p194 %define rel 3 %define libname %mklibname ruby %{subver} %define ruby_libdir %{_datadir}/%{name} %define ruby_libarchdir %{_libdir}/%{name} # This is the local lib/arch and should not be used for packaging. %define ruby_sitelibdir %{_datadir}/ruby/site_ruby %define ruby_sitearchdir %{_libdir}/ruby/site_ruby # This is the general location for libs/archs compatible with all # or most of the Ruby versions available in the Fedora repositories. %define ruby_vendorlibdir %{_datadir}/ruby/vendor_ruby %define ruby_vendorarchdir %{_libdir}/ruby/vendor_ruby # The RubyGems library has to stay out of Ruby directory three, since the # RubyGems should be share by all Ruby implementations. %define rubygems_dir %{_datadir}/ruby/gems %define rubygems_version 1.8.23 Summary: Object Oriented Script Language Name: ruby Epoch: 1 Version: %{rubyver}.%{patchversion} Release: %mkrel %rel License: Ruby or GPLv2 Group: Development/Ruby BuildRequires: autoconf BuildRequires: byacc BuildRequires: ncurses-devel BuildRequires: readline-devel BuildRequires: tcl-devel tk-devel BuildRequires: db-devel BuildRequires: gdbm-devel >= 1.8.3 BuildRequires: openssl-devel BuildRequires: zlib-devel BuildRequires: libffi-devel BuildRequires: yaml-devel BuildRequires: rpm-mageia-setup >= 1.158 Obsoletes: ruby-rexml Provides: ruby-rexml # explicit file provides (since such requires are automatically added by find-requires) Provides: /usr/bin/ruby Provides: ruby(abi) = %subver Source0: http://ftp.ruby-lang.org/pub/ruby/%{subver}/ruby-%{rubyver}-%{patchversion}.tar.bz2 Source3: ruby.macros URL: http://www.ruby-lang.org/ # == FEDORA PATCHES BEGINS == # http://redmine.ruby-lang.org/issues/5231 Patch0: ruby-1.9.3-disable-versioned-paths.patch # TODO: Should be submitted upstream? Patch1: ruby-1.9.3-arch-specific-dir.patch # http://redmine.ruby-lang.org/issues/5281 Patch2: ruby-1.9.3-added-site-and-vendor-arch-flags.patch # http://redmine.ruby-lang.org/issues/5465 Patch4: ruby-1.9.3-fix-s390x-build.patch # Fix the uninstaller, so that it doesn't say that gem doesn't exist # when it exists outside of the GEM_HOME (already fixed in the upstream) Patch5: ruby-1.9.3-rubygems-1.8.11-uninstaller.patch # http://redmine.ruby-lang.org/issues/5135 - see comment 29 Patch6: ruby-1.9.3-webrick-test-fix.patch # Already fixed upstream: # https://github.com/ruby/ruby/commit/f212df564a4e1025f9fb019ce727022a97bfff53 Patch7: ruby-1.9.3-bignum-test-fix.patch # Allows to install RubyGems into custom directory, outside of Ruby's tree. # http://redmine.ruby-lang.org/issues/5617 Patch8: ruby-1.9.3-custom-rubygems-location.patch # Add support for installing binary extensions according to FHS. # https://github.com/rubygems/rubygems/issues/210 Patch9: rubygems-1.8.11-binary-extensions.patch # == FEDORA PATCHES ENDS == %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} = %{epoch}:%{version} Requires: %{libname} = %{epoch}:%{version} %package tk Summary: Tk extension for the powerful language Ruby Group: Development/Ruby Requires: %{name} = %{epoch}:%{version} %package RubyGems Summary: The Ruby standard for packaging ruby libraries Group: Development/Ruby Version: %{rubygems_version} Requires: ruby(abi) = %{subver} Provides: gem = %{rubygems_version} Provides: rubygems = %{rubygems_version} Provides: ruby(rubygems) = %{rubygems_version} BuildArch: noarch %package rake Summary: Simple ruby build program with capabilities similar to make Group: Development/Ruby Version: 0.9.2.2 Requires: ruby(abi) = %{subver} BuildArch: noarch %package minitest Summary: Minitest provides a complete suite of testing facilities. Group: Development/Ruby Version: 2.5.1 License: MIT Requires: ruby(abi) = %{subver} Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(minitest) = 2.5.1 BuildArch: noarch %package json Summary: This is a JSON implementation as a Ruby extension in C Group: Development/Ruby Version: 1.5.4 License: Ruby or GPLv2 Requires: ruby(abi) = %{subver} Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(json) = 1.5.4 %package rdoc Summary: A tool to generate HTML and command-line documentation for Ruby projects Group: Development/Ruby Version: 3.9.4 License: GPLv2 and Ruby and MIT Requires: ruby(abi) = %{subver} Requires: ruby(rubygems) >= %{rubygems_version} Requires: ruby(irb) = %{version} Provides: rdoc = 3.9.4 Provides: ri = 3.9.4 BuildArch: noarch %package irb Summary: The Interactive Ruby Group: Development/Ruby Provides: irb = %{version}-%{release} Provides: ruby(irb) = %{version}-%{release} BuildArch: noarch %package bigdecimal Summary: BigDecimal provides arbitrary-precision floating point decimal arithmetic Group: Development/Ruby Version: 1.1.0 License: GPL+ or Artistic Requires: ruby(abi) = %{subver} Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(bigdecimal) = 1.1.0 %package io-console Summary: IO/Console is a simple console utilizing library Group: Development/Ruby Version: 0.3 Requires: ruby(abi) = %{subver} Requires: ruby(rubygems) >= %{rubygems_version} Provides: rubygem(io-console) = 0.3 %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. %description tk 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 Tk extension for Ruby. %description RubyGems RubyGems is the Ruby standard for publishing and managing third party libraries. %description rake Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax. %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. %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. %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. %description irb The irb is acronym for Interactive Ruby. It evaluates ruby expression from the terminal. %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. %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. %prep %setup -q -n ruby-%{rubyver}-%{patchversion} %apply_patches %build autoconf CFLAGS=`echo %optflags | sed 's/-fomit-frame-pointer//'` %configure2_5x --enable-shared --disable-rpath --enable-pthread --disable-versioned-paths \ --with-rubylibprefix='%{ruby_libdir}' \ --with-archdir='%{ruby_libarchdir}' \ --with-sitedir='%{ruby_sitelibdir}' \ --with-sitearchdir='%{ruby_sitearchdir}' \ --with-vendordir='%{ruby_vendorlibdir}' \ --with-vendorarchdir='%{ruby_vendorarchdir}' \ --with-rubyhdrdir='%{_includedir}' \ --with-rubygemsdir='%{rubygems_dir}' %make %install %makeinstall_std install-doc install -d %buildroot%{_datadir}/emacs/site-lisp cp -a misc/ruby-mode.el %buildroot%{_datadir}/emacs/site-lisp install -d %buildroot%{_sysconfdir}/emacs/site-start.d cat <%buildroot%{_sysconfdir}/emacs/site-start.d/%{name}.el (autoload 'ruby-mode "ruby-mode" "Ruby editing mode." t) (add-to-list 'auto-mode-alist '("\\\\.rb$" . ruby-mode)) (add-to-list 'interpreter-mode-alist '("ruby" . ruby-mode)) EOF # Install the rpm macros mkdir -p %buildroot%{_sysconfdir}/rpm/macros.d cp %{SOURCE3} %buildroot%{_sysconfdir}/rpm/macros.d %check make test %files %{_bindir}/erb %{_bindir}/rake %{_bindir}/rdoc %{_bindir}/ri %{_bindir}/ruby %{_bindir}/testrb %dir %{ruby_libdir} %{ruby_libdir}/*.rb %exclude %{ruby_libdir}/irb.rb %exclude %{ruby_libdir}/multi-tk.rb %exclude %{ruby_libdir}/remote-tk.rb %exclude %{ruby_libdir}/tcltk.rb %exclude %{ruby_libdir}/tk.rb %exclude %{ruby_libdir}/tkafter.rb %exclude %{ruby_libdir}/tkbgerror.rb %exclude %{ruby_libdir}/tkcanvas.rb %exclude %{ruby_libdir}/tkclass.rb %exclude %{ruby_libdir}/tkconsole.rb %exclude %{ruby_libdir}/tkdialog.rb %exclude %{ruby_libdir}/tkentry.rb %exclude %{ruby_libdir}/tkfont.rb %exclude %{ruby_libdir}/tkmacpkg.rb %exclude %{ruby_libdir}/tkmenubar.rb %exclude %{ruby_libdir}/tkmngfocus.rb %exclude %{ruby_libdir}/tkpalette.rb %exclude %{ruby_libdir}/tkscrollbox.rb %exclude %{ruby_libdir}/tktext.rb %exclude %{ruby_libdir}/tkvirtevent.rb %exclude %{ruby_libdir}/tkwinpkg.rb %{ruby_libdir}/cgi %{ruby_libdir}/date %{ruby_libdir}/digest %{ruby_libdir}/dl %{ruby_libdir}/drb %{ruby_libdir}/fiddle %{ruby_libdir}/matrix %{ruby_libdir}/net %{ruby_libdir}/openssl %{ruby_libdir}/optparse %{ruby_libdir}/psych %{ruby_libdir}/racc %{ruby_libdir}/rbconfig %{ruby_libdir}/rexml %{ruby_libdir}/rinda %{ruby_libdir}/ripper %{ruby_libdir}/rss %{ruby_libdir}/shell %{ruby_libdir}/syck %{ruby_libdir}/test %{ruby_libdir}/uri %{ruby_libdir}/webrick %{ruby_libdir}/xmlrpc %{ruby_libdir}/yaml %dir %{ruby_libarchdir} %{ruby_libarchdir}/bigdecimal.so %{ruby_libarchdir}/continuation.so %{ruby_libarchdir}/coverage.so %{ruby_libarchdir}/curses.so %{ruby_libarchdir}/date_core.so %{ruby_libarchdir}/dbm.so %dir %{ruby_libarchdir}/digest %{ruby_libarchdir}/digest.so %{ruby_libarchdir}/digest/*.so %dir %{ruby_libarchdir}/dl %{ruby_libarchdir}/dl.so %{ruby_libarchdir}/dl/*.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}/fiber.so %{ruby_libarchdir}/fiddle.so %{ruby_libarchdir}/gdbm.so %{ruby_libarchdir}/iconv.so %dir %{ruby_libarchdir}/io %{ruby_libarchdir}/io/nonblock.so %{ruby_libarchdir}/io/wait.so %dir %{ruby_libarchdir}/mathn %{ruby_libarchdir}/mathn/*.so %{ruby_libarchdir}/nkf.so %{ruby_libarchdir}/objspace.so %{ruby_libarchdir}/openssl.so %{ruby_libarchdir}/pathname.so %{ruby_libarchdir}/psych.so %{ruby_libarchdir}/pty.so %dir %{ruby_libarchdir}/racc %{ruby_libarchdir}/racc/*.so %{ruby_libarchdir}/rbconfig.rb %{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}/syck.so %{ruby_libarchdir}/syslog.so %{ruby_libarchdir}/zlib.so %{_mandir}/man1/erb.1.* %{_mandir}/man1/ri.1.* %{_mandir}/man1/ruby.1.* %{_datadir}/emacs/site-lisp/* %config(noreplace) %{_sysconfdir}/emacs/site-start.d/* %{_sysconfdir}/rpm/macros.d/%{name}.macros %{_datadir}/ruby/site_ruby %{_libdir}/ruby/site_ruby %{_datadir}/ruby/vendor_ruby %{_libdir}/ruby/vendor_ruby %files doc %{_datadir}/ri %files -n %{libname} %{_libdir}/libruby.so.%{subver} %{_libdir}/libruby.so.%{rubyapi} %files devel %{_includedir}/* %{_libdir}/libruby-static.a %{_libdir}/libruby.so %{_libdir}/pkgconfig/*.pc %files tk %{ruby_libarchdir}/tcltklib.so %{ruby_libarchdir}/tkutil.so %{ruby_libdir}/multi-tk.rb %{ruby_libdir}/remote-tk.rb %{ruby_libdir}/tcltk.rb %{ruby_libdir}/tk.rb %{ruby_libdir}/tkafter.rb %{ruby_libdir}/tkbgerror.rb %{ruby_libdir}/tkcanvas.rb %{ruby_libdir}/tkclass.rb %{ruby_libdir}/tkconsole.rb %{ruby_libdir}/tkdialog.rb %{ruby_libdir}/tkentry.rb %{ruby_libdir}/tkfont.rb %{ruby_libdir}/tkmacpkg.rb %{ruby_libdir}/tkmenubar.rb %{ruby_libdir}/tkmngfocus.rb %{ruby_libdir}/tkpalette.rb %{ruby_libdir}/tkscrollbox.rb %{ruby_libdir}/tktext.rb %{ruby_libdir}/tkvirtevent.rb %{ruby_libdir}/tkwinpkg.rb %{ruby_libdir}/tk %{ruby_libdir}/tkextlib %files RubyGems %{_bindir}/gem %dir %{rubygems_dir} %{rubygems_dir}/rbconfig %{rubygems_dir}/rubygems %{rubygems_dir}/rubygems.rb %{rubygems_dir}/ubygems.rb %files minitest %{ruby_libdir}/minitest %{rubygems_dir}/%{rubyapi}/specifications/minitest-*.gemspec %files rake %{_bindir}/rake %{_mandir}/man1/rake.1.* %{ruby_libdir}/rake %{rubygems_dir}/%{rubyapi}/gems/rake-* %{rubygems_dir}/%{rubyapi}/specifications/rake-*.gemspec %files rdoc %{_bindir}/rdoc %{_bindir}/ri %{ruby_libdir}/rdoc %{rubygems_dir}/%{rubyapi}/gems/rdoc-* %{rubygems_dir}/%{rubyapi}/specifications/rdoc-*.gemspec %{_mandir}/man1/ri.1.* %files json %dir %{ruby_libarchdir}/json %dir %{ruby_libarchdir}/json/ext %{ruby_libarchdir}/json/ext/*.so %{ruby_libdir}/json %{rubygems_dir}/%{rubyapi}/specifications/json-*.gemspec %files irb %{_bindir}/irb %{ruby_libdir}/irb.rb %{ruby_libdir}/irb %{_mandir}/man1/irb.1* %files bigdecimal %{ruby_libdir}/bigdecimal %{ruby_libarchdir}/bigdecimal.so %{_libdir}/gems/exts/bigdecimal-* %files io-console %{ruby_libdir}/io %{ruby_libarchdir}/io/console.so %{_libdir}/gems/exts/io-console-* %{rubygems_dir}/%{rubyapi}/gems/io-console-* %{rubygems_dir}/%{rubyapi}/specifications/io-console-*.gemspec