%define subver 1.9 %define rubyapi 1.9.1 %define rubyver 1.9.3 %define patchversion p194 %define rel 3 %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 Summary: Object Oriented Script Language Name: ruby 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 # Make mkmf verbose by default Patch12: ruby-1.9.3-mkmf-verbose.patch # == FEDORA PATCHES ENDS == %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} %package tk Summary: Tk extension for the powerful language Ruby Group: Development/Ruby Requires: %{name} = %{version} %package RubyGems Summary: The Ruby standard for packaging ruby libraries Group: Development/Ruby Requires: ruby(abi) = %{subver} Provides: gem = %{version}-%{release} Provides: ruby(rubygems) = %{version}-%{release} BuildArch: noarch %package rake Summary: Simple ruby build program with capabilities similar to make Group: Development/Ruby Requires: ruby(abi) = %{subver} BuildArch: noarch %package minitest Summary: Minitest provides a complete suite of testing facilities. Group: Development/Ruby License: MIT Requires: ruby(abi) = %{ruby_abi} Requires: ruby(rubygems) >= %{version} Provides: rubygem(minitest) = %{version}-%{release} BuildArch: noarch %package json Summary: This is a JSON implementation as a Ruby extension in C Group: Development/Ruby License: Ruby or GPLv2 Requires: ruby(abi) = %{ruby_abi} Requires: ruby(rubygems) >= %{version} Provides: rubygem(json) = %{version}-%{release} %package rdoc Summary: A tool to generate HTML and command-line documentation for Ruby projects Group: Development/Ruby License: GPLv2 and Ruby and MIT Requires: ruby(abi) = %{ruby_abi} Requires: ruby(rubygems) >= %{version} Provides: rdoc = %{version}-%{release} Provides: ri = %{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 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. %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}/irb %{_bindir}/rake %{_bindir}/rdoc %{_bindir}/ri %{_bindir}/ruby %{_bindir}/testrb %{_libdir}/libruby.so.%{subver} %{_libdir}/libruby.so.%{rubyapi} %dir %{ruby_libdir} %{ruby_libdir}/*.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/irb.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 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/rdoc-*.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