Browse Source

ruby-1.9.3.286-1
- update to 1.9.3-p286
- rebase with fedora package
- change filesystem structure compatible with Vine ruby package
- rename rubygems to ruby-rubygems
- modify ruby filesystem structure
- /usr{,/local}/share/ruby for arch-independent files
- /usr{,/local}/lib{,64}/ruby for arch-dependent files
- move gems to /usr/share/gems, /usr/lib{,64}/gems
- merge rubygems, rake to ruby sub-package
- add subpackages for ruby standard gems

git-svn-id: http://trac.vinelinux.org/repos/projects/specs@6986 ec354946-7b23-47d6-9f5a-488ba84defc7

daisuke 11 years ago
parent
commit
74addb1ac3
1 changed files with 786 additions and 474 deletions
  1. 786 474
      r/ruby/ruby-vl.spec

+ 786 - 474
r/ruby/ruby-vl.spec

@@ -1,83 +1,142 @@
-%define	rubyxver	1.8
-%define	rubyyver	7
-%define rubypl		370
-%define	rubyver		%{rubyxver}.%{rubyyver}-p%{rubypl}
-%define rpmver		%{rubyxver}.%{rubyyver}.%{rubypl}
-%define rpmrel		1%{?_dist_release}
-%define rubysrcdir	%{rubyxver}.%{rubyyver}-p%{rubypl}
-
-%define emacsen_pkg	1
-%{?without_emacsen: %define emacsen_pkg	0}
-
-%if %{emacsen_pkg}
-%undefine without_emacsen
-%else
-%define without_emacsen	1
-%endif
-%define rbmode		ruby-mode
-%define rbmode_el	ruby-mode
-%define rb_lib		%{_prefix}/lib/ruby/%{rubyxver}
-%ifarch ppc
-%define rb_arch		powerpc-%{_target_os}
-%else
-%define rb_arch		%{_target_cpu}-%{_target_os}
-%endif
-%define rb_prefix	%{_prefix}
-%define rb_mandir	%(echo %{_mandir} | sed -e 's!^%{_prefix}!${prefix}!')
-%define rb_locallib	local/%{_lib}
-%define rb_site		%{rb_locallib}/site_ruby
-%define rb_sitebase	%{rb_prefix}/%{rb_site}
-%define rb_sitedir	%{rb_sitebase}/%{rubyxver}
-%define rb_sitearch	%{rb_sitedir}/%{rb_arch}
+%global major_version 1
+%global minor_version 9
+%global teeny_version 3
+%global patch_level 286
+
+%global major_minor_version %{major_version}.%{minor_version}
+
+%global ruby_version %{major_minor_version}.%{teeny_version}
+%global ruby_version_patch_level %{major_minor_version}.%{teeny_version}.%{patch_level}
+%global ruby_abi %{major_minor_version}.1
+
+%global ruby_archive %{name}-%{ruby_version}-p%{patch_level}
+
+%global ruby_libdir %{_datadir}/%{name}/%{ruby_abi}
+%global ruby_libarchdir %{_libdir}/%{name}/%{ruby_abi}
+
+# This is the local lib/arch and should not be used for packaging.
+%global ruby_sitedir site_ruby
+%global ruby_sitelibdir %{_prefix}/local/share/ruby/%{ruby_sitedir}/%{ruby_abi}
+%global ruby_sitearchdir %{_prefix}/local/%{_lib}/ruby/%{ruby_sitedir}/%{ruby_abi}
+
+# This is the general location for libs/archs compatible with all
+# or most of the Ruby versions
+%global ruby_vendordir vendor_ruby
+%global ruby_vendorlibdir %{_prefix}/share/ruby/%{ruby_vendordir}/%{ruby_abi}
+%global ruby_vendorarchdir %{_libdir}/ruby/%{ruby_vendordir}/%{ruby_abi}
+
+%global rubygems_version 1.8.23
+
+# The RubyGems library has to stay out of Ruby directory tree, since the
+# RubyGems should be share by all Ruby implementations.
+%global rubygems_dir %{_datadir}/rubygems
+
+# Specify custom RubyGems root.
+%global gem_dir %{_datadir}/gems/%{ruby_abi}
+# TODO: Should we create arch specific rubygems-filesystem?
+%global gem_extdir %{_exec_prefix}/lib{,64}/gems/%{ruby_abi}
+
+%global rake_version 0.9.2.2
+# TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM.
+# http://redmine.ruby-lang.org/issues/5313
+%global irb_version %{ruby_version_patch_level}
+%global rdoc_version 3.9.4
+%global bigdecimal_version 1.1.0
+%global io_console_version 0.3
+%global json_version 1.5.4
+%global minitest_version 2.5.1
+
+%bcond_without emacsen
+%define rbmode          ruby-mode
+%define rbmode_el       ruby-mode
+
+%global	_normalized_cpu	%(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i686/;s/sparcv./sparc/')
 
 Summary: An interpreter of object-oriented scripting language
 Summary(ja): オブジェクト指向言語 Ruby インタプリタ
 Name: ruby
-Version: %{rpmver}
-Release: %{rpmrel}
-License: Ruby or GPLv2
+Version: %{ruby_version_patch_level}
+# Note:
+# As seen on perl srpm, as this (ruby) srpm contains several sub-components,
+# we cannot reset the release number to 1 even when the main (ruby) version
+# is updated - because it may be that the versions of sub-components don't
+# change.
+Release: 1%{?_dist_release}
 Group: Development/Languages
-Source0: ftp://ftp.ruby-lang.org/pub/%{name}/%{name}-%{rubyver}.tar.bz2
-Source2: http://elbereth-hp.hp.infoseek.co.jp/files/ruby/refm/ruby-refm-rdp-1.9.0-ja-html.tar.gz
-Source5: irb.1
-%if %{emacsen_pkg}
+# 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/%{name}/%{major_minor_version}/%{ruby_archive}.tar.bz2
+Source1: operating_system.rb
+
 Source6: %{rbmode_el}-install.sh
 Source7: %{rbmode_el}-remove.sh
 Source8: %{rbmode_el}-init.el
-%endif
-Patch803: ruby-1.8.6.111-soap-massmem.patch
-Patch808: ruby-1.8.6.287-rexml-document-transitive.patch
-Patch901: ruby-1.8.6.111-ri-pager.patch
-Patch903: ruby-1.8.6.111-rdoc-documents.patch
-Patch950: ruby-1.8.7-p358-multilib.patch
-Patch960: ruby-1.8.7-rubyprefix.patch
-# patches from debian package
-Patch1005: 090812_openssl_x509_warning.dpatch
-# to build with glibc-2.14
-Patch1100: ruby-1.8.7-p358-stdout-rouge-fix.patch
-
-URL: http://www.ruby-lang.org/
+
+# changelog of fedora package
+Source10: Changelog.fedora
+
+# 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
+# Force multiarch directories for i.86 to be always named i686.
+Patch3: ruby-1.9.3-always-use-i686.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
+# 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
+# Opening /dev/tty fails with ENXIO (ref: man 2 open) on vbuilder.
+# Let's rescue this
+Patch10: ruby-1.9.3.286-rescue-error-on-open-devtty.patch
+# Make mkmf verbose by default
+Patch12: ruby-1.9.3-mkmf-verbose.patch
+
+Requires: %{name}-libs = %{version}-%{release}
+Requires: 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: rubygem(bigdecimal) >= %{bigdecimal_version}
+
+
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
-BuildRequires: sed autoconf bison unzip
-BuildRequires: readline-devel
-BuildRequires: ncurses-devel 
-BuildRequires: db4-devel 
+BuildRequires: autoconf
 BuildRequires: gdbm-devel
-BuildRequires: glibc-devel
+BuildRequires: ncurses-devel
+BuildRequires: db4-devel
+BuildRequires: libffi-devel
+BuildRequires: openssl-devel
+BuildRequires: libyaml-devel
+BuildRequires: readline-devel
 BuildRequires: tcl tk
 BuildRequires: libX11-devel
-BuildRequires: openssl-devel
 BuildRequires: zlib-devel
-Requires: libruby = %{version}-%{release}
+# Needed to pass test_set_program_name(TestRubyOptions)
+BuildRequires: procps
 
-Vendor: Project Vine
 Distribution: Vine Linux
-Packager: daisuke, akira
+Vendor: Project Vine
+Packager: daisuke
+
 
 %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,
+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 -l ja
@@ -90,119 +149,255 @@ Rubyはテキスト処理関係の能力などに優れ,Perlと同じくらい
 にシンプルな文法と,例外処理やイテレータなどの機構によって,より分かり
 やすいプログラミングが出来ます.
 
-%package -n libruby
-Summary: Libraries necessary to run Ruby.
-Summary(ja): Ruby の動作に必要なライブラリ群
-Group: System Environment/Libraries
-URL: http://www.ruby-lang.org/
-Obsoletes: drb erb ruby-csv ruby-optparse ruby-rexml ruby-strscan rubyunit racc-runtime
+%package devel
+Summary:    A Ruby development environment
+Summary(ja): Ruby 開発環境
+Group:      Development/Languages
+# Requires:   %{name}-libs = %{version}-%{release}
+Requires:   %{name} = %{version}-%{release}
 
-%description -n libruby
-This package includes the libruby, necessary to run Ruby.
+%description devel
+Header files and libraries for building an extension library for the
+Ruby or an application embedding Ruby.
 
-%description -n libruby -l ja
-このパッケージには Ruby を利用するために必要となるライブラリが含まれ
-ています.
-
-%package -n ruby-devel
-Summary: A Ruby development environment.
-Group: Development/Languages
-Requires: libruby = %{version}-%{release}
-URL: http://www.ruby-lang.org/
-
-%description -n ruby-devel
-Header files and libraries for building a extension library for the
-Ruby or an application embedded Ruby.
-
-%description -n ruby-devel -l ja
+%description devel -l ja
 Rubyのための拡張ライブラリやRubyを組み込んだアプリケーションを作るため
 に必要となるへッダファイルやライブラリです.
 
-%package -n ruby-openssl
-Summary: OpenSSL interface for scripting language Ruby.
-Group: Development/Languages
-Requires: libruby = %{version}-%{release}
-URL: http://www.ruby-lang.org/
-
-%description -n ruby-openssl
-OpenSSL interface for the object-oriented scripting language Ruby.
-
-%description -n ruby-openssl -l ja
-RubyにOpenSSLライブラリへのインタフェースを提供する拡張ライブラリです.
 
-%package -n ruby-tcltk
-Summary: Tcl/Tk interface for scripting language Ruby.
-Group: Development/Languages
-Requires: libruby = %{version}-%{release}
-URL: http://www.ruby-lang.org/
+%package libs
+Summary:    Libraries necessary to run Ruby
+Group:      Development/Libraries
+License:    Ruby or BSD
+Provides:   ruby(abi) = %{ruby_abi}
+Provides:   libruby = %{version}-%{release}
+Obsoletes:  libruby < 1.9
+Obsoletes:  drb erb
+Obsoletes:  ruby-csv ruby-optparse ruby-rexml ruby-strscan rubyunit racc-runtime
+Obsoletes:  ruby-openssl < 1.9
 
-%description -n ruby-tcltk
-Tcl/Tk interface for the object-oriented scripting language Ruby.
+%description libs
+This package includes the libruby, necessary to run Ruby.
 
-%description -n ruby-tcltk -l ja
-RubyにTcl/Tkライブラリへのインタフェースを提供する拡張ライブラリです.
+%description libs -l ja
+このパッケージには Ruby を利用するために必要となるライブラリが含まれ
+ています.
 
-%package -n irb
-Summary: The Intaractive Ruby.
-Group: Development/Languages
-Requires: ruby = %{version}-%{release}
-URL: http://www.ruby-lang.org/
 
-%description -n irb
-The irb is acronym for Interactive RuBy.  It evaluates ruby expression
+%package rubygems
+Summary:    Packaging system for Ruby application or library
+Summary(ja): Ruby アプリケーションやライブラリのためのパッケージシステム
+Version:    %{rubygems_version}
+Group:      Development/Libraries
+License:    Ruby or MIT
+Requires:   ruby(abi) = %{ruby_abi}
+Requires:   rubygem(rdoc) >= %{rdoc_version}
+Requires:   rubygem(io-console) >= %{io_console_version}
+Provides:   gem = %{version}-%{release}
+Provides:   ruby(rubygems) = %{version}-%{release}
+Obsoletes:  rubygems <= 1.8.24-1vl7
+BuildArch:  noarch
+
+%description rubygems
+RubyGems is the Ruby standard for publishing and managing third party
+libraries.
+
+%description rubygems -l ja
+RubyGems は Ruby 標準のサードパーティ製ライブラリのパッケージ管理
+システムです。
+
+
+%package rubygems-devel
+Summary:    Macros and development tools for packaging RubyGems
+Version:    %{rubygems_version}
+Group:      Development/Libraries
+License:    Ruby or MIT
+Requires:   ruby(rubygems) = %{version}-%{release}
+BuildArch:  noarch
+
+%description rubygems-devel
+Macros and development tools for packaging RubyGems.
+
+
+%package -n rubygem-rake
+Summary:    Ruby based make-like utility
+Summary(ja): Ruby ベースの make のようなユーティリティ
+Version:    %{rake_version}
+Group:      Development/Libraries
+License:    Ruby or MIT
+Requires:   ruby(abi) = %{ruby_abi}
+Requires:   ruby(rubygems) >= %{rubygems_version}
+Provides:   rake = %{version}-%{release}
+Provides:   rubygem(rake) = %{version}-%{release}
+BuildArch:  noarch
+
+%description -n rubygem-rake
+Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
+specified in standard Ruby syntax.
+
+%description -n rubygem-rake -l ja
+Rake は Ruby ベースの make のようなユーティリティです。
+
+
+%package irb
+Summary:    The Interactive Ruby
+Summary(ja):  インタラクティブ Ruby
+Version:    %{irb_version}
+Group:      Development/Libraries
+Requires:   %{name}-libs = %{ruby_version_patch_level}
+Obsoletes:  irb < 1.9
+Provides:   irb = %{version}-%{release}
+Provides:   ruby(irb) = %{version}-%{release}
+BuildArch:  noarch
+
+%description irb
+The irb is acronym for Interactive Ruby.  It evaluates ruby expression
 from the terminal.
 
-%description -n irb -l ja
-irbとはInteractive RuByの略で,対話的にRubyの式を入力し,評価させるこ
-とが可能です.
-
-%package -n rdoc
-Summary: Generate documentation from ruby source files
-Group: Development/Languages
-Requires: ruby = %{version}-%{release}, irb = %{version}-%{release}
-URL: http://www.ruby-lang.org/
-
-%description -n rdoc
-RDoc - Documentation from Ruby Source Files
-
-  - Generates structured HTML and XML documentation from Ruby source and C
-    extensions.
-  - Automatically extracts class, module, method, and attribute definitions.
-    These can be annonated using inline comments.
-  - Analyzes method visibility.
-  - Handles aliasing.
-  - Uses non-intrusive and implicit markup in the comments. Readers
-    of the original source needn't know that it is marked up at all.
-
-%description -n rdoc -l ja
+%description irb -l ja
+irb は Interactive RuBy の略で、対話的にRubyの式を入力し、
+評価させることが可能です。
+
+
+%package -n rubygem-rdoc
+Summary:    A tool to generate HTML and command-line documentation for Ruby projects
+Summary(ja): Rubyのソースコードからドキュメントを生成するツール
+Version:    %{rdoc_version}
+Group:      Development/Libraries
+License:    GPLv2 and Ruby and MIT
+Requires:   ruby(abi) = %{ruby_abi}
+Requires:   ruby(rubygems) >= %{rubygems_version}
+Requires:   ruby(irb) = %{irb_version}
+Provides:   rdoc = %{version}-%{release}
+Provides:   ri = %{version}-%{release}
+Provides:   rubygem(rdoc) = %{version}-%{release}
+Obsoletes:  rdoc < 1.9
+Obsoletes:  ruby-rdoc < %{version}
+Obsoletes:  ruby-ri < %{version}
+BuildArch:  noarch
+
+%description -n 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.
+
+%description -n rubygem-rdoc -l ja
 RDocはRubyのソースコードからドキュメントを生成するツールです.
 
-  - RubyおよびC言語で書かれた拡張ライブラリのソースコードからHTML/XML形式の
-    ドキュメントを生成できます.
-  - クラス,モジュール,メソッド,アトリビュートを自動的に取り出します.それ
-    らの説明はコメントの形で記述できます.
-  - メソッドの可視性を判別できます.
-  - エイリアスを適切に処理できます.
 
-%package -n ruby-docs
-Summary: Manuals and FAQs for scripting language Ruby.
-Summary(ja): Ruby のマニュアルと FAQ
-Group: Applications/Documentation
-URL: http://www.ruby-lang.org/
+%package doc
+Summary:    Documentation for %{name}
+Summary(ja): %{name} のドキュメント
+Group:      Applications/Documentation
+Requires:   %{_bindir}/ri
+# TODO: It seems that ri documentation differs from platform to platform due to
+# some encoding bugs, therefore the documentation should be split out of this gem
+# or kept platform specific.
+# https://github.com/rdoc/rdoc/issues/71
+# BuildArch:  noarch
+
+%description doc
+This package contains documentation for %{name}.
+
+
+%package -n rubygem-bigdecimal
+Summary:    BigDecimal provides arbitrary-precision floating point decimal arithmetic
+Version:    %{bigdecimal_version}
+Group:      Development/Libraries
+License:    GPL+ or Artistic
+Requires:   ruby(abi) = %{ruby_abi}
+Requires:   ruby(rubygems) >= %{rubygems_version}
+Provides:   rubygem(bigdecimal) = %{version}-%{release}
+
+%description -n 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 rubygem-io-console
+Summary:    IO/Console is a simple console utilizing library
+Version:    %{io_console_version}
+Group:      Development/Libraries
+Requires:   ruby(abi) = %{ruby_abi}
+Requires:   ruby(rubygems) >= %{rubygems_version}
+Provides:   rubygem(io-console) = %{version}-%{release}
+
+%description -n 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 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:   ruby(abi) = %{ruby_abi}
+Requires:   ruby(rubygems) >= %{rubygems_version}
+Provides:   rubygem(json) = %{version}-%{release}
+
+%description -n 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 rubygem-minitest
+Summary:    Minitest provides a complete suite of testing facilities.
+Version:    %{minitest_version}
+Group:      Development/Libraries
+License:    MIT
+Requires:   ruby(abi) = %{ruby_abi}
+Requires:   ruby(rubygems) >= %{rubygems_version}
+Provides:   rubygem(minitest) = %{version}-%{release}
+BuildArch:  noarch
+
+%description -n 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 tcltk
+Summary:    Tcl/Tk interface for scripting language Ruby
+Summary(ja): RubyのTcl/Tkインタフェースライブラリ
+Group:      Development/Languages
+Requires:   %{name}-libs = %{ruby_version_patch_level}
+Provides:   ruby(tcltk) = %{ruby_version_patch_level}-%{release}
+
+%description tcltk
+Tcl/Tk interface for the object-oriented scripting language Ruby.
 
-%description -n ruby-docs
-Manuals and FAQs for the object-oriented scripting language Ruby.
+%description -n ruby-tcltk -l ja
+RubyにTcl/Tkライブラリへのインタフェースを提供する拡張ライブラリです.
 
-%description -n ruby-docs -l ja
-オブジェクト指向スクリプト言語Rubyについてのマ二ュアルとFAQです.
 
-%if %{emacsen_pkg}
-%package -n %{rbmode_el}
+%if %{with emacsen}
+%package mode
 Summary: Emacs-lisp ruby-mode for the scripting language Ruby
+Summary(ja): Emacs上でRubyスクリプトを書くためのモード
 Group: Applications/Editors/Emacs
 Requires(post): emacsen, emacsen-common >= 0.1
 Requires(preun): emacsen, emacsen-common >= 0.1
-URL: http://www.ruby-lang.org/
+BuildArch: noarch
 
 %description -n %{rbmode_el}
 Emacs-lisp ruby-mode for the object-oriented scripting language Ruby.
@@ -211,367 +406,484 @@ Emacs-lisp ruby-mode for the object-oriented scripting language Ruby.
 Emacs上でRubyスクリプトを書くのに便利なモードです.
 %endif
 
-%prep
-%setup -q -c
-
-mkdir %{name}-refm-ja
-cd %{name}-refm-ja
-tar xzf %{SOURCE2}
-cd ..
-
-cd %{name}-%{rubysrcdir}
-%patch803 -p1
-%patch808 -p1
-%patch901 -p1
-%patch903 -p1
-%ifarch x86_64 ppc64
-%patch950 -p1
-%endif
-%patch960 -p1
-%patch1005 -p1
-
-%patch1100 -p1
-
-cd ../../..
 
+%prep
+%setup -q -n %{ruby_archive}
+
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch12 -p1
 
 %build
-
-cd %{name}-%{rubysrcdir}
 autoconf
-CFLAGS="${CFLAGS:-%{optflags}}" ./configure \
-%ifarch i386 i486
-  --enable-frame-address \
-%endif
-  --prefix='%{rb_prefix}' \
-  --mandir='%{rb_mandir}' \
-  --sysconfdir='/etc' \
-  --libdir='%{_libdir}' \
-  --localstatedir='/var' \
-  --with-sitedir='${prefix}/%{rb_site}' \
-  --with-ruby-prefix='%{_prefix}/lib' \
-%ifarch x86_64 ppc64
-  --with-search-path='%{_libdir}/ruby/%{rubyxver}' \
-%endif
-  --with-default-kcode=none \
-  --with-dbm-type=db \
-  --with-bundled-sha1 \
-  --with-bundled-md5 \
-  --with-bundled-rmd160 \
-  --enable-shared \
-  --enable-pthread \
-  --enable-ipv6 \
-  --with-lookup-order-hack=INET \
-  --target='%{rb_arch}'
 
-make %{?_smp_mflags}
-make test
+%configure \
+        --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}' \
+        --disable-rpath \
+        --enable-shared \
+        --disable-versioned-paths
 
-cd ..
+# Q= makes the build output more verbose and allows to check compiler options.
+make %{?_smp_mflags} COPY="cp -p" Q=
 
 
 %install
+rm -rf %{buildroot}
+make install DESTDIR=%{buildroot}
 
-rm -rf ${RPM_BUILD_ROOT}
-%if %{emacsen_pkg}
+# install ruby-mode
+%if %{with emacsen}
 mkdir -p $RPM_BUILD_ROOT/%{_datadir}/emacs/site-lisp/%{rbmode}
 mkdir -p $RPM_BUILD_ROOT/%{_prefix}/lib/emacsen-common/packages/install
 mkdir -p $RPM_BUILD_ROOT/%{_prefix}/lib/emacsen-common/packages/remove
-%endif
-
-#
-# installing documents and exapmles...
-#
-mkdir tmp-ruby-docs
-cd tmp-ruby-docs
-mkdir ruby libruby ruby-devel ruby-openssl ruby-tcltk ruby-docs irb
-
-# for ruby.rpm
-cd ruby
-%if !%{emacsen_pkg}
-(cd ../../%{name}-%{rubysrcdir} && tar cf - misc) | tar xvf -
-%endif
-(cd ../../%{name}-%{rubysrcdir} && tar cf - sample) | tar xvf -
-cd ..
-
-# for libruby.rpm
-cd libruby
-(cd ../../%{name}-%{rubysrcdir} && tar cf - lib/README*) | tar xvf -
-(cd ../../%{name}-%{rubysrcdir}/doc && tar cf - .) | tar xvf -
-(cd ../../%{name}-%{rubysrcdir} && 
- tar cf - `find ext \
-  -mindepth 1 \
-  \( -path '*/sample/*' -o -path '*/demo/*' \) -o \
-  \( -name '*.rb' -not -path '*/lib/*' -not -name extconf.rb \) -o \
-  \( -name 'README*' -o -name '*.txt*' -o -name 'MANUAL*' \)`) | tar xvf -
-rm -rf ext/openssl
-cd ..
-
-# for irb.rpm
-cd irb
-mv ../libruby/irb/* .
-rmdir ../libruby/irb
-cd ..
-
-# for ruby-devel.rpm
-cd ruby-devel
-
-cd ..
-
-# for ruby-openssl.rpm
-cd ruby-openssl
-mv ../ruby/sample/openssl sample
-cd ..
-
-# for ruby-tcltk.rpm
-cd ruby-tcltk
-
-mv ../libruby/ext/tk/MANUAL* .
-mv ../libruby/ext/tk/README.* .
-mv ../libruby/ext/tk/lib/README README.lib
-mv ../libruby/ext/tk/lib/tkextlib .
-mv ../libruby/ext/tk/sample .
-mv ../libruby/ext/tk/old-extconf.rb .
-
-rmdir ../libruby/ext/tk/lib
-rmdir ../libruby/ext/tk
-
-cd ..
-
-# for ruby-docs.rpm
-cd ruby-docs
-mkdir refm-ja
-
-(cd ../../%{name}-refm-ja && tar cf - .) | (cd refm-ja && tar xvf -)
-
-cd ..
-
-# fixing `#!' paths
-for f in `find . -type f`
-do
-  sed -e 's,^#![ 	]*\([^ 	]*\)/\(ruby\|with\|perl\|env\),#!/usr/bin/\2,' < $f > $f.n
-  if ! cmp $f $f.n
-  then
-    mv -f $f.n $f
-  else
-    rm -f $f.n
-  fi
-done
-
-# done
-cd ..
-
-#
-# installing files ...
-#
-cd %{name}-%{rubysrcdir}
-make DESTDIR=${RPM_BUILD_ROOT} install install-doc
-make test
-cd ..
-
-# installing irb.1
-install %{SOURCE5} $RPM_BUILD_ROOT%{_mandir}/man1/
-
-# installing ruby-mode
-%if %{emacsen_pkg}
-cd %{name}-%{rubysrcdir}
 cp misc/*.el %{SOURCE8} $RPM_BUILD_ROOT/%{_datadir}/emacs/site-lisp/%{rbmode}
-cd ..
 
-%{?emacsen_pkg: %_installemacsenscript %{rbmode} %{SOURCE6}}
+%_installemacsenscript %{rbmode} %{SOURCE6}
 
-%{?emacsen_pkg: %_removeemacsenscript  %{rbmode} %{SOURCE7}}
+%_removeemacsenscript  %{rbmode} %{SOURCE7}
 
 %endif
 
-# listing all files in ruby.files
-(find $RPM_BUILD_ROOT%{_bindir} \
-      $RPM_BUILD_ROOT%{_datadir} \
-      $RPM_BUILD_ROOT%{_libdir} \
-%ifarch x86_64 ppc64
-      $RPM_BUILD_ROOT%{_prefix}/lib \
-%endif
-      $RPM_BUILD_ROOT%{_mandir} \
-      -type f -o -type l) | 
- sort | uniq | sed -e "s,^$RPM_BUILD_ROOT,," \
-                   -e "s,\(/man/man./.*\)$,\1*," > ruby.files
-egrep '(\.[ah]|libruby\.so)$' ruby.files > ruby-devel.files
-
-sort ruby.files ruby-devel.files | uniq -u > tmp.files
-mv -f tmp.files ruby.files
-
-# for ruby-openssl.rpm
-cp /dev/null ruby-openssl.files
-for f in `cd %{name}-%{rubysrcdir}/ext/openssl && find lib -type f -name '*.rb'`
-do
-  grep "`echo $f | sed -e 's,^lib/,/%{rubyxver}/,'`$" ruby.files >> ruby-openssl.files
-done
-fgrep %{rb_arch}/openssl.so ruby.files >> ruby-openssl.files
-fgrep %{rb_lib}/net/https.rb ruby.files >> ruby-openssl.files
-fgrep %{rb_lib}/drb/ssl.rb ruby.files >> ruby-openssl.files
-fgrep %{rb_lib}/webrick/ssl.rb ruby.files >> ruby-openssl.files
-
-sort ruby.files ruby-openssl.files | uniq -u > tmp.files
-mv -f tmp.files ruby.files
-
-# for ruby-tcltk.rpm
-cp /dev/null ruby-tcltk.files
-for f in `cd %{name}-%{rubysrcdir}/ext/tk && find lib -type f -name '*.rb'`
-do
-  grep "`echo $f | sed -e 's,^lib/,/%{rubyxver}/,'`$" ruby.files >> ruby-tcltk.files
-done
-fgrep tkextlib/SUPPORT_STATUS ruby.files >> ruby-tcltk.files
-fgrep %{rb_arch}/tcltklib.so ruby.files >> ruby-tcltk.files
-fgrep %{rb_arch}/tkutil.so ruby.files >> ruby-tcltk.files
-
-sort ruby.files ruby-tcltk.files | uniq -u > tmp.files
-mv -f tmp.files ruby.files
-
-# for rdoc.rpm
-cp /dev/null rdoc.files
-fgrep 'rdoc' ruby.files >> rdoc.files
-fgrep %{_bindir}/ri ruby.files >> rdoc.files
-
-ridatadir=`%{name}-%{rubysrcdir}/miniruby \
-  -I %{name}-%{rubysrcdir} -I %{name}-%{rubysrcdir}/lib \
-  -r rdoc/ri/ri_paths.rb \
-  -e 'puts RI::Paths::SYSDIR'`
-fgrep "${ridatadir}" ruby.files >> rdoc.files
-
-sort ruby.files rdoc.files | uniq -u > tmp.files
-mv -f tmp.files ruby.files
-
-# for irb.rpm
-cp /dev/null irb.files
-fgrep 'irb' ruby.files >> irb.files
-
-sort ruby.files irb.files | uniq -u > tmp.files
-mv -f tmp.files ruby.files
-
-# for libruby
-cp /dev/null libruby.files
-fgrep '%{_prefix}/lib' ruby.files | fgrep -v 'emacsen-common' | \
- sort | uniq -u >> libruby.files
-
-sort ruby.files libruby.files | uniq -u > tmp.files
-mv -f tmp.files ruby.files
-
-# for ruby-mode-el
-cp /dev/null %{rbmode_el}.files
-%if %{emacsen_pkg}
-fgrep '.el' ruby.files >> %{rbmode_el}.files
-fgrep 'emacsen-common' ruby.files >> %{rbmode_el}.files
-
-sort ruby.files %{rbmode_el}.files | uniq -u > tmp.files
-mv -f tmp.files ruby.files
+# Dump the macros into macro.ruby to use them to build other Ruby libraries.
+mkdir -p %{buildroot}%{_sysconfdir}/rpm
+cat >> %{buildroot}%{_sysconfdir}/rpm/macros.ruby << \EOF
+%%ruby_libdir %%{_datadir}/%{name}
+%%ruby_libarchdir %%{_libdir}/%{name}
+
+# This is the local lib/arch and should not be used for packaging.
+%%ruby_sitedir site_ruby
+%%ruby_sitelibdir %%{_prefix}/local/share/%{name}/%%{ruby_sitedir}
+%%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
+%%ruby_vendordir vendor_ruby
+%%ruby_vendorlibdir %%{ruby_libdir}/%%{ruby_vendordir}
+%%ruby_vendorarchdir %%{ruby_libarchdir}/%%{ruby_vendordir}
+EOF
+
+cat >> %{buildroot}%{_sysconfdir}/rpm/macros.rubygems << \EOF
+# The RubyGems root folder.
+%%gem_dir %{gem_dir}
+
+# Common gem locations and files.
+%%gem_instdir %%{gem_dir}/gems/%%{gem_name}-%%{version}
+%%gem_extdir %%{_libdir}/gems/exts/%%{gem_name}-%%{version}
+%%gem_libdir %%{gem_instdir}/lib
+%%gem_cache %%{gem_dir}/cache/%%{gem_name}-%%{version}.gem
+%%gem_spec %%{gem_dir}/specifications/%%{gem_name}-%%{version}.gemspec
+%%gem_docdir %%{gem_dir}/doc/%%{gem_name}-%%{version}
+EOF
+
+# 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.
+mkdir -p %{buildroot}%{gem_dir}
+mv %{buildroot}%{ruby_libdir}/gems/%{ruby_abi}/* %{buildroot}%{gem_dir}/
+
+# Create folders for gem binary extensions.
+mkdir -p %{buildroot}%{gem_extdir}/exts
+
+# Move bundled rubygems to %%gem_dir and %%gem_extdir
+# 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
+
+mkdir -p %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib
+mv %{buildroot}%{ruby_libdir}/rdoc* %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib
+
+mkdir -p %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib
+mkdir -p %{buildroot}%{_libdir}/gems/exts/bigdecimal-%{bigdecimal_version}/lib
+mv %{buildroot}%{ruby_libdir}/bigdecimal %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib
+ln -s %{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib/bigdecimal %{buildroot}%{ruby_libdir}/bigdecimal
+mv %{buildroot}%{ruby_libarchdir}/bigdecimal.so %{buildroot}%{_libdir}/gems/exts/bigdecimal-%{bigdecimal_version}/lib
+ln -s %{_libdir}/gems/exts/bigdecimal-%{bigdecimal_version}/lib/bigdecimal.so %{buildroot}%{ruby_libarchdir}/bigdecimal.so
+
+mkdir -p %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib
+mkdir -p %{buildroot}%{_libdir}/gems/exts/io-console-%{io_console_version}/lib/io
+mv %{buildroot}%{ruby_libdir}/io %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib
+ln -s %{gem_dir}/gems/io-console-%{io_console_version}/lib/io %{buildroot}%{ruby_libdir}/io
+mv %{buildroot}%{ruby_libarchdir}/io/console.so %{buildroot}%{_libdir}/gems/exts/io-console-%{io_console_version}/lib/io
+ln -s %{_libdir}/gems/exts/io-console-%{io_console_version}/lib/io/console.so %{buildroot}%{ruby_libarchdir}/io/console.so
+
+mkdir -p %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib
+mkdir -p %{buildroot}%{_libdir}/gems/exts/json-%{json_version}/lib
+mv %{buildroot}%{ruby_libdir}/json* %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib
+mv %{buildroot}%{ruby_libarchdir}/json/ %{buildroot}%{_libdir}/gems/exts/json-%{json_version}/lib/
+
+mkdir -p %{buildroot}%{gem_dir}/gems/minitest-%{minitest_version}/lib
+mv %{buildroot}%{ruby_libdir}/minitest %{buildroot}%{gem_dir}/gems/minitest-%{minitest_version}/lib
+
+# Adjust the gemspec files so that the gems will load properly
+sed -i '2 a\
+  s.require_paths = ["lib"]' %{buildroot}%{gem_dir}/specifications/rake-%{rake_version}.gemspec
+
+sed -i '2 a\
+  s.require_paths = ["lib"]' %{buildroot}%{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec
+
+sed -i '2 a\
+  s.require_paths = ["lib"]\
+  s.extensions = ["bigdecimal.so"]' %{buildroot}%{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec
+
+sed -i '2 a\
+  s.require_paths = ["lib"]\
+  s.extensions = ["io/console.so"]' %{buildroot}%{gem_dir}/specifications/io-console-%{io_console_version}.gemspec
+
+sed -i '2 a\
+  s.require_paths = ["lib"]\
+  s.extensions = ["json/ext/parser.so", "json/ext/generator.so"]' %{buildroot}%{gem_dir}/specifications/json-%{json_version}.gemspec
+
+sed -i '2 a\
+  s.require_paths = ["lib"]' %{buildroot}%{gem_dir}/specifications/minitest-%{minitest_version}.gemspec
+
+%check
+DISABLE_TESTS=""
+
+# OpenSSL 1.0.1 is breaking the drb test suite.
+# https://bugs.ruby-lang.org/issues/6221
+DISABLE_TESTS="-x test_drbssl.rb $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"
 %endif
 
-strip ${RPM_BUILD_ROOT}%{_bindir}/%{name}
-
-%clean
-rm -rf ${RPM_BUILD_ROOT}
-rm -f *.files
-rm -rf tmp-ruby-docs
-
-%post -n libruby
-/sbin/ldconfig
-if [ -w %{rb_prefix}/%{rb_locallib} -a ! -e %{rb_sitedir} ]; then
-  mkdir -p        %{rb_sitedir} %{rb_sitearch}
-  chown root:root %{rb_sitedir} %{rb_sitearch}
-  chmod 775       %{rb_sitedir} %{rb_sitearch}
-fi
+%ifnarch ppc ppc64
+make check TESTS="-v $DISABLE_TESTS"
+%endif
 
-%preun -n libruby
-if [ "$1" = 0 ]; then
-  if [ -w %{rb_sitedir} -a -e %{rb_sitearch} ]; then
-    rmdir %{rb_sitearch} 2>/dev/null || true
-  fi
-  if [ -w %{rb_prefix}/%{rb_locallib} -a -e %{rb_sitedir} ]; then
-    rmdir %{rb_sitedir} 2>/dev/null || true
-  fi
-fi
+%post libs -p /sbin/ldconfig
 
-%postun -n libruby
-/sbin/ldconfig
+%postun libs -p /sbin/ldconfig
 
-%if %{emacsen_pkg}
+%if %{with emacsen}
 %post -n %{rbmode_el}
 if [ "$1" = 2 ]; then
-  %{?emacsen_pkg: %_emacsenPackageRemove %{rbmode}}
 
-fi
-
-%{?emacsen_pkg: %_addemacsenlist %{rbmode}}
+  %_emacsenPackageRemove %{rbmode}
 
-%{?emacsen_pkg: %_emacsenPackageInstall %{rbmode}}
+fi
 
+%_addemacsenlist %{rbmode}
 
+%_emacsenPackageInstall %{rbmode}
+  
 %preun -n %{rbmode_el}
 if [ "$1" = 0 ]; then
-  %{?emacsen_pkg: %_emacsenPackageRemove %{rbmode}}
 
-  %{?emacsen_pkg: %_removeemacsenlist %{rbmode}}
+  %_emacsenPackageRemove %{rbmode}
+
+  %_removeemacsenlist %{rbmode}
 
 fi
 %endif
-
-%files -f ruby.files -n ruby
-%defattr(-, root, root)
-%doc %{name}-%{rubysrcdir}/README
-%lang(ja) %doc %{name}-%{rubysrcdir}/README.ja
-%doc %{name}-%{rubysrcdir}/COPYING
-%lang(ja) %doc %{name}-%{rubysrcdir}/COPYING.ja
-%doc %{name}-%{rubysrcdir}/ChangeLog
-%doc %{name}-%{rubysrcdir}/LEGAL
-%doc %{name}-%{rubysrcdir}/ToDo 
-%doc %{name}-%{rubysrcdir}/doc/ChangeLog-1.8.0
-%doc %{name}-%{rubysrcdir}/doc/NEWS-1.8.0
-%doc tmp-ruby-docs/ruby/*
-
-%files -f ruby-devel.files -n ruby-devel
-%defattr(-, root, root)
-%doc %{name}-%{rubysrcdir}/README.EXT
-%lang(ja) %doc %{name}-%{rubysrcdir}/README.EXT.ja
-
-%files -f libruby.files -n libruby
-%defattr(-, root, root)
-%doc %{name}-%{rubysrcdir}/README
-%lang(ja) %doc %{name}-%{rubysrcdir}/README.ja
-%doc %{name}-%{rubysrcdir}/COPYING
-%lang(ja) %doc %{name}-%{rubysrcdir}/COPYING.ja
-%doc %{name}-%{rubysrcdir}/ChangeLog
-%doc %{name}-%{rubysrcdir}/LEGAL
-%doc tmp-ruby-docs/libruby/*
-
-%files -f ruby-openssl.files -n ruby-openssl
-%defattr(-, root, root)
-%doc tmp-ruby-docs/ruby-openssl/*
-
-%files -f ruby-tcltk.files -n ruby-tcltk
-%defattr(-, root, root)
-%doc tmp-ruby-docs/ruby-tcltk/*
-%doc %{name}-%{rubysrcdir}/ext/tk/lib/tkextlib/SUPPORT_STATUS
-
-%files -f rdoc.files -n rdoc
+      
+
+%files
+%doc COPYING
+%lang(ja) %doc COPYING.ja
+%doc GPL
+%doc LEGAL
+%{_bindir}/erb
+%{_bindir}/ruby
+%{_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
+
+%config(noreplace) %{_sysconfdir}/rpm/macros.ruby
+
+%{_includedir}/*
+%{_libdir}/libruby.so
+%{_libdir}/pkgconfig/ruby-%{major_minor_version}.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}/gems
+%exclude %{ruby_libdir}/irb
+%{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
+%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}/curses.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}/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/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}/psych.so
+%{ruby_libarchdir}/pty.so
+%dir %{ruby_libarchdir}/racc
+%{ruby_libarchdir}/racc/cparse.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
+%exclude %{ruby_libarchdir}/tcltklib.so
+%exclude %{ruby_libarchdir}/tkutil.so
+%{ruby_libarchdir}/zlib.so
+
+%files rubygems
+%{_bindir}/gem
+%{rubygems_dir}
+%{gem_dir}
+%exclude %{gem_dir}/gems/*
+%{_exec_prefix}/lib*/gems
+%exclude %{_exec_prefix}/lib*/gems/exts/bigdecimal-%{bigdecimal_version}
+%exclude %{_exec_prefix}/lib*/gems/exts/io-console-%{io_console_version}
+%exclude %{_exec_prefix}/lib*/gems/exts/json-%{json_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
+
+%files rubygems-devel
+%config(noreplace) %{_sysconfdir}/rpm/macros.rubygems
+
+%files -n 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 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-*
+%{_datadir}/ri
+%{_docdir}/ruby
+
+%files -n rubygem-bigdecimal
+%{ruby_libdir}/bigdecimal
+%{ruby_libarchdir}/bigdecimal.so
+%{_libdir}/gems/exts/bigdecimal-%{bigdecimal_version}
+%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}
+%{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec
+
+%files -n rubygem-io-console
+%{ruby_libdir}/io
+%{ruby_libarchdir}/io/console.so
+%{_libdir}/gems/exts/io-console-%{io_console_version}
+%{gem_dir}/gems/io-console-%{io_console_version}
+%{gem_dir}/specifications/io-console-%{io_console_version}.gemspec
+
+%files -n rubygem-json
+%{_libdir}/gems/exts/json-%{json_version}
+%{gem_dir}/gems/json-%{json_version}
+%{gem_dir}/specifications/json-%{json_version}.gemspec
+
+%files -n rubygem-minitest
+%{gem_dir}/gems/minitest-%{minitest_version}
+%{gem_dir}/specifications/minitest-%{minitest_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
+
+%if %{with emacsen}
+%files mode
 %defattr(-, root, root)
-%doc %{name}-%{rubysrcdir}/lib/rdoc/README
-
-%files -f irb.files -n irb
-%defattr(-, root, root)
-%doc tmp-ruby-docs/irb/*
-
-%files -n ruby-docs
-%defattr(-, root, root)
-%doc tmp-ruby-docs/ruby-docs/*
-
-%if %{emacsen_pkg}
-%files -f %{rbmode_el}.files -n %{rbmode_el}
-%defattr(-, root, root)
-%doc %{name}-%{rubysrcdir}/misc/README
+%doc misc/README
+%{_datadir}/emacs/site-lisp/%{rbmode}
+%{_prefix}/lib/emacsen-common/packages/install/*
+%{_prefix}/lib/emacsen-common/packages/remove/*
 %endif
 
-
 %changelog
+* Tue Oct 23 2012 Daisuke SUZUKI <daisuke@linux.or.jp> 1.9.3.286-1
+- update to 1.9.3-p286
+- rebase with fedora package
+  - change filesystem structure compatible with Vine ruby package
+  - rename rubygems to ruby-rubygems
+  - modify ruby filesystem structure
+    - /usr{,/local}/share/ruby for arch-independent files
+    - /usr{,/local}/lib{,64}/ruby for arch-dependent files
+    - move gems to /usr/share/gems, /usr/lib{,64}/gems
+  - merge rubygems, rake to ruby sub-package
+  - add subpackages for ruby standard gems
+
 * Sat Jun 30 2012 Daisuke SUZUKI <daisuke@linux.or.jp> 3.1-1
 - update to 1.8.7-p370