3 # - include ext/ in docs
4 # - replace ri with fastri
5 # - patch ri to search multiple indexes (one per package), so RPMs can install ri docs
6 # - fix inconsistencies with versioned vs not-versioned dirs (see dirname hacks in configure)
7 # - custom-rubygems-location.patch
10 %bcond_without doc # skip (time-consuming) docs generating; intended for speed up test builds
11 %bcond_without tk # skip building package with Tk bindings
12 %bcond_without batteries # Don't include rubygems, json or rake
13 %bcond_with bootstrap # build bootstrap version
15 %define ruby_version 1.9
17 %define patchlevel 392
18 %define doc_version 1_9_3
19 %define json_ver 1.5.5
20 %define rake_ver 0.9.2.2
21 %define rubygems_ver 1.8.11
22 %define minitest_ver 2.5.1
23 %define rdoc_ver 3.9.5
24 Summary: Ruby - interpreted scripting language
25 Summary(ja.UTF-8): オブジェクト指向言語Rubyインタプリタ
26 Summary(pl.UTF-8): Ruby - interpretowany język skryptowy
27 Summary(pt_BR.UTF-8): Linguagem de script orientada a objeto
28 Summary(zh_CN.UTF-8): ruby - 一种快速高效的面向对象脚本编程语言
30 Version: %{basever}.%{patchlevel}
31 # NOTE: do not decrease Release, when updating Version,
32 # unless rdoc_ver, rubygems_ver *both* are increased as well
35 # Public Domain for example for: include/ruby/st.h, strftime.c, ...
36 License: (Ruby or BSD) and Public Domain
37 Group: Development/Languages
38 Source0: ftp://ftp.ruby-lang.org/pub/ruby/%{ruby_version}/%{name}-%{basever}-p%{patchlevel}.tar.bz2
39 # Source0-md5: a810d64e2255179d2f334eb61fb8519c
40 Source1: http://www.ruby-doc.org/download/%{name}-doc-bundle.tar.gz
41 # Source1-md5: ad1af0043be98ba1a4f6d0185df63876
42 Source2: http://www.ruby-doc.org/downloads/%{name}_%{doc_version}_stdlib_rdocs.tgz
43 # Source2-md5: ec622612428672c432b6f65dd31a84b5
44 Source3: http://www.ruby-doc.org/downloads/%{name}_%{doc_version}_core_rdocs.tgz
45 # Source3-md5: 1892aadde51d36106c513bced2193dff
46 Source100: ftp://ftp.ruby-lang.org/pub/ruby/1.8/%{name}-1.8.7-p330.tar.gz
47 # Source100-md5: 50a49edb787211598d08e756e733e42e
50 Patch0: %{name}-lib64.patch
51 Patch1: %{name}-ffs.patch
52 Patch2: fix-bison-invocation.patch
53 # http://redmine.ruby-lang.org/issues/5231
54 Patch3: disable-versioned-paths.patch
55 # TODO: Should be submitted upstream?
56 Patch4: arch-specific-dir.patch
57 # http://redmine.ruby-lang.org/issues/5281
58 Patch5: site-and-vendor-arch-flags.patch
59 # Make mkmf verbose by default
60 Patch6: mkmf-verbose.patch
61 URL: http://www.ruby-lang.org/
62 BuildRequires: autoconf >= 2.60
63 BuildRequires: automake
65 BuildRequires: db-devel
66 BuildRequires: gdbm-devel >= 1.8.3
67 BuildRequires: libffi-devel
68 BuildRequires: ncurses-devel
69 BuildRequires: openssl-devel
70 BuildRequires: pkgconfig
71 BuildRequires: readline-devel >= 4.2
72 # boostrap needs ruby binary, erb module
73 %{!?with_bootstrap:BuildRequires: ruby-modules}
74 %{!?with_bootstrap:BuildRequires: ruby}
75 BuildRequires: sed >= 4.0
76 BuildRequires: yaml-devel
78 BuildRequires: tk-devel
80 Requires(post,postun): /sbin/ldconfig
81 Provides: ruby(ver) = %{ruby_version}
84 Obsoletes: ruby-doc < 1.8.4
85 Obsoletes: ruby-fastthread
87 Provides: json = %{json_ver}
88 Provides: rake = %{rake_ver}
89 Provides: ruby-json = %{json_ver}
90 Provides: ruby-rake = %{rake_ver}
94 Conflicts: ruby-activesupport < 2.3.11-2
95 Conflicts: ruby-activesupport2 < 2.3.11-2
96 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
98 %define ruby_ridir %{_datadir}/ri/%{ruby_version}/system
99 %define gem_dir %{_datadir}/%{name}/gems/%{ruby_version}
101 # The RubyGems library has to stay out of Ruby directory three, since the
102 # RubyGems should be share by all Ruby implementations.
103 %define rubygems_dir %{_datadir}/rubygems
105 %define ruby_archdir %{_libdir}/%{name}/%{ruby_version}
106 %define ruby_libdir %{_datadir}/%{name}/%{ruby_version}
108 # This is the local lib/arch and should not be used for packaging.
109 %define sitedir site_ruby
110 %define ruby_sitedir %{_prefix}/local/share/%{name}/%{sitedir}
111 %define ruby_sitearchdir %{_prefix}/local/%{_lib}/%{name}/%{sitedir}/%{ruby_version}
112 %define ruby_sitelibdir %{_prefix}/local/share/%{name}/%{sitedir}/%{ruby_version}
114 # This is the general location for libs/archs compatible with all
115 # or most of the Ruby versions available in the PLD repositories.
116 %define vendordir vendor_ruby
117 %define ruby_vendordir %{_datadir}/%{name}/%{vendordir}
118 %define ruby_vendorarchdir %{_libdir}/%{name}/%{vendordir}/%{ruby_version}
119 %define ruby_vendorlibdir %{_datadir}/%{name}/%{vendordir}/%{ruby_version}
121 # TODO: drop legacy loadpaths after all ruby modules rebuilt in Th
122 %define legacy_libdir %{_libdir}/%{name}/%{ruby_version}
123 %define legacy_archdir %{_libdir}/%{name}/%{ruby_version}/%{_target_cpu}-linux
124 %define legacy_sitedir %{_libdir}/%{name}/%{sitedir}
125 %define legacy_sitelibdir %{_libdir}/%{name}/%{sitedir}/%{ruby_version}
126 %define legacy_sitearchdir %{_libdir}/%{name}/%{sitedir}/%{ruby_version}/%{_target_cpu}-linux
127 %define legacy_vendordir %{_libdir}/%{name}/%{vendordir}
128 %define legacy_vendorlibdir %{_libdir}/%{name}/%{vendordir}/%{ruby_version}
129 %define legacy_vendorarchdir %{_libdir}/%{name}/%{vendordir}/%{ruby_version}/%{_target_cpu}-linux
131 %define legacy_siteloadpath %{legacy_sitelibdir}\\0%{legacy_sitearchdir}\\0%{legacy_sitedir}
132 %define legacy_vendorloadpath %{legacy_vendorarchdir}
133 %define legacy_loadpath %{legacy_archdir}
134 %define legacy_loadpaths %{legacy_siteloadpath}\\0%{legacy_vendorloadpath}\\0%{legacy_loadpath}
136 # bleh, some nasty (gcc or ruby) bug still not fixed
137 # (SEGV or "unexpected break" on miniruby run during build)
138 %define specflags_ia64 -O0
140 # ruby needs frame pointers for correct exception handling
141 %define specflags_ia32 -fno-omit-frame-pointer
144 Ruby is the interpreted scripting language for quick and easy
145 object-oriented programming. It has many features to process text
146 files and to do system management tasks (as in Perl). It is simple,
147 straight-forward, extensible, and portable.
149 This package contains only shared library and ruby interpreter. To get
150 full-functional ruby environment install ruby-modules package.
152 %description -l ja.UTF-8
153 Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です.Rubyは最初
154 から純粋なオブジェクト指向言語として設計されていますから,オブジェクト
155 指向プログラミングを手軽に行う事が出来ます.もちろん通常の手続き型のプ ログラミングも可能です.
157 %description -l pl.UTF-8
158 Ruby to interpretowany język skryptowy, w sam raz dla łatwego i
159 szybkiego pisania zorientowanych obiektowo programów. Ma wiele funkcji
160 ułatwiających przetwarzanie plików tekstowych i wykonywanie prac
161 związanych z zarządzaniem systemu (podobnie jak Perl). Jest prosty,
162 rozszerzalny i przenośny.
164 Ten pakiet zawiera tylko bibliotekę dzieloną i interpreter ruby.
165 Zainstaluj pakiet ruby-modules, jeżeli potrzebujesz w pełni
166 funkcjonalnego środowiska ruby.
168 %description -l pt_BR.UTF-8
169 Ruby é uma linguagem de script interpretada de programação orientada a
170 objeto. Possui diversas características para processamento de texto. É
171 simples, extensível e direta.
174 Summary: Ruby standard modules and utilities
175 Summary(pl.UTF-8): Standardowe moduły i narzędzia dla języka Ruby
176 Group: Development/Languages
177 Requires: %{name} = %{epoch}:%{version}-%{release}
178 Suggests: ruby-rubygems
179 # workaround for autodep generator not getting version properly
180 Provides: ruby(abi) = %{ruby_version}
181 # ruby-modules deprecated, rpm5 generates ruby(abi) itself
182 Provides: ruby-modules(ver) = %{ruby_version}
183 Obsoletes: ruby-minitest
186 Ruby standard modules and utilities:
188 - irb - interactive Ruby
189 - testrb - automatic runner for Test::Unit of Ruby
191 %description modules -l pl.UTF-8
192 Standardowe moduły i narzędzia Ruby:
194 - irb - interaktywny Ruby
195 - testrb - automatyczny runner dla Ruby Test::Unit
198 Summary: Ruby/Tk bindings
199 Summary(pl.UTF-8): Wiązania Ruby/Tk
200 Group: Development/Languages
201 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
204 This pachage contains Ruby/Tk bindings.
206 %description tk -l pl.UTF-8
207 Ten pakiet zawiera wiązania Ruby/Tk.
210 Summary: Ruby development libraries
211 Summary(pl.UTF-8): Biblioteki programistyczne interpretera języka Ruby
212 Group: Development/Languages
213 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
217 Ruby development libraries.
219 %description devel -l pl.UTF-8
220 Biblioteki programistyczne interpretera języka Ruby.
223 Summary: Ruby static libraries
224 Summary(pl.UTF-8): Biblioteki statyczne Ruby
225 Group: Development/Languages
226 Requires: %{name}-devel = %{epoch}:%{version}-%{release}
229 Ruby static libraries.
231 %description static -l pl.UTF-8
232 Biblioteki statyczne Ruby.
235 Summary: Ruby HTML documentation
236 Summary(pl.UTF-8): Dokumentacja HTML do Ruby
240 Ruby HTML documentation: FAQ, guide, core and standard library.
242 %description doc -l pl.UTF-8
243 Dokumentacja HTML do Ruby: FAQ, przewodnik, dokumentacja dla core i
247 Summary: Ruby ri documentation
248 Summary(pl.UTF-8): Dokumentacja Ruby w formacie ri
250 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
253 Ruby ri documentation.
255 %description doc-ri -l pl.UTF-8
256 Dokumentacja Ruby w formacie ri.
259 Summary: Ruby examples
260 Summary(pl.UTF-8): Przykłady dla języka Ruby
261 Group: Development/Languages
263 %description examples
266 %description examples -l pl.UTF-8
267 Przykłady programów w języku Ruby.
269 # IMPORTANT: keep this as last package, as we reset Epoch
271 Summary: A tool to generate HTML and command-line documentation for Ruby projects
272 Summary(pl.UTF-8): Narzędzie do generowania dokumentacji HTML i linii poleceń dla projektów w Rubym
275 License: GPL v2 and Ruby and MIT
276 Group: Development/Libraries
277 Requires: %{name}-modules = 1:%{basever}.%{patchlevel}-%{release}
280 RDoc produces HTML and command-line documentation for Ruby projects.
281 RDoc includes the 'rdoc' and 'ri' tools for generating and displaying
282 online documentation.
284 %description rdoc -l pl.UTF-8
285 RDoc tworzy dokumentację HTML i linii poleceń dla projektów w języku
286 Ruby. RDoc zawiera narzędzia 'rdoc' i 'ri' do generowania i
287 wyświetlania dokumentacji online.
290 Summary: RubyGems - the Ruby standard for packaging Ruby libraries
291 Summary(pl.UTF-8): RubyGems - standard Ruby'ego pakietowania bibliotek
292 Version: %{rubygems_ver}
295 Group: Development/Libraries
296 Requires: %{name}-modules = 1:%{basever}.%{patchlevel}-%{release}
297 Requires: %{name}-rdoc >= %{rdoc_ver}
298 Provides: rubygems = %{rubygems_ver}
299 %if "%{_rpmversion}" >= "5"
303 %description rubygems
304 RubyGems is the Ruby standard for publishing and managing third party
307 %description rubygems -l pl.UTF-8
308 RubyGems to standardowe narzędzie języka Ruby do publikowania i
309 zarządzania zewnętrznymi bibliotekami.
312 %if %{with bootstrap}
313 %setup -q -n %{name}-%{basever}-p%{patchlevel} -a1 -a2 -a3 -a100
315 %setup -q -n %{name}-%{basever}-p%{patchlevel} -a1 -a2 -a3
324 # must be regenerated with new bison
327 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
329 find -type f '(' -name '*.rb' -o -name '*.cgi' -o -name '*.test' \
330 -o -name 'ruby.1' -o -name '*.html' -o -name '*.tcl' ')' \
331 | xargs %{__sed} -i 's,/usr/local/bin/,%{_bindir}/,'
334 cp -f /usr/share/automake/config.sub .
336 # build ruby-1.8.7 first
337 %if %{with bootstrap}
338 cd %{name}-1.8.7-p330
346 %{?with_bootstrap:--with-baseruby=%{name}-1.8.7-p330/miniruby} \
347 --with-rubylibprefix=%(dirname %{ruby_libdir}) \
348 --with-archdir=%{ruby_archdir} \
349 --with-sitedir=%(dirname %{ruby_sitelibdir}) \
350 --with-sitearchdir=%{ruby_sitearchdir} \
351 --with-vendordir=%(dirname %{ruby_vendorlibdir}) \
352 --with-vendorarchdir=%{ruby_vendorarchdir} \
353 --with-rubygemsdir=%{rubygems_dir} \
354 --with-search-path="%{legacy_loadpaths}" \
358 --disable-install-doc \
359 --with-ruby-version=minor
363 %{?with_bootstrap:BASERUBY="ruby-1.8.7-p330/miniruby -I./ruby-1.8.7-p330/lib"}
370 rm -rf $RPM_BUILD_ROOT
371 install -d $RPM_BUILD_ROOT{%{ruby_rdocdir},%{_examplesdir}/%{name}-%{version}} \
372 $RPM_BUILD_ROOT{%{ruby_vendorarchdir},%{ruby_ridir}} \
373 $RPM_BUILD_ROOT%{ruby_vendorlibdir}/net \
374 $RPM_BUILD_ROOT{%{legacy_archdir}/racc,%{legacy_sitelibdir},%{legacy_sitearchdir},%{legacy_vendorarchdir},%{legacy_libdir}/tasks} \
376 %{__make} install %{?with_doc:install-doc} \
377 DESTDIR=$RPM_BUILD_ROOT
379 cp -Rf sample/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
380 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_mandir}/man1
381 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_mandir}/man1
383 %{__rm} -rf $RPM_BUILD_ROOT%{_docdir}/%{name}/html
385 %if %{without batteries}
386 # packaged separately
387 %{__rm} -r $RPM_BUILD_ROOT%{ruby_libdir}/{rubygems,rake,json}
388 %{__rm} -r $RPM_BUILD_ROOT%{ruby_archdir}/json
389 %{__rm} $RPM_BUILD_ROOT%{ruby_libdir}/{rake,rubygems,json}.rb
390 %{__rm} $RPM_BUILD_ROOT%{_bindir}/{gem,rake}
391 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/rake*
392 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/ri/%{ruby_version}/system/JSON
397 %{__rm} $RPM_BUILD_ROOT%{ruby_ridir}/cache.ri
398 %{__rm} $RPM_BUILD_ROOT%{ruby_ridir}/created.rid
402 rm -rf $RPM_BUILD_ROOT
404 %post -p /sbin/ldconfig
405 %postun -p /sbin/ldconfig
408 %defattr(644,root,root,755)
409 %doc NEWS LEGAL README README.EXT ChangeLog ToDo
410 %attr(755,root,root) %{_bindir}/ruby
411 %if %{with batteries}
412 %attr(755,root,root) %{_bindir}/rake
414 %attr(755,root,root) %{_libdir}/libruby.so.*.*.*
415 %attr(755,root,root) %ghost %{_libdir}/libruby.so.1.9
416 %{_mandir}/man1/ruby.1*
417 %if %{with batteries}
418 %{_mandir}/man1/rake.1*
421 %dir %{_libdir}/%{name}
422 %dir %{_libdir}/%{name}/%{vendordir}
423 %dir %{_datadir}/%{name}
424 %dir %{_datadir}/%{name}/%{vendordir}
428 %dir %{ruby_vendorlibdir}
429 %dir %{ruby_vendorarchdir}
432 %dir %{_datadir}/ri/%{ruby_version}
437 # common dirs for ruby vendor modules
438 %dir %{ruby_vendorlibdir}/net
440 # legacy dirs. when everything rebuilt in Th not using these dirs. drop them
441 %dir %{legacy_archdir}
442 %dir %{legacy_sitedir}
443 %dir %{legacy_sitelibdir}
444 %dir %{legacy_sitearchdir}
445 %dir %{legacy_vendorarchdir}
446 %dir %{legacy_libdir}/tasks
447 %dir %{legacy_archdir}/racc
450 %defattr(644,root,root,755)
451 %attr(755,root,root) %{_libdir}/libruby.so
452 %{_includedir}/%{name}-%{ruby_version}
453 %{_pkgconfigdir}/ruby-%{ruby_version}.pc
454 %{ruby_libdir}/mkmf.rb
457 %defattr(644,root,root,755)
458 %{_libdir}/libruby-static.a
462 %defattr(644,root,root,755)
463 %{ruby_libdir}/tcltk.rb
464 %{ruby_libdir}/tk*.rb
466 %{ruby_libdir}/tkextlib
467 %attr(755,root,root) %{ruby_archdir}/t*.so
471 %defattr(644,root,root,755)
472 %attr(755,root,root) %{_bindir}/rdoc
473 %attr(755,root,root) %{_bindir}/ri
474 %{_mandir}/man1/rdoc.1*
476 %dir %{gem_dir}/gems/rdoc-%{rdoc_ver}
477 %dir %{gem_dir}/gems/rdoc-%{rdoc_ver}/bin
478 %attr(755,root,root) %{gem_dir}/gems/rdoc-%{rdoc_ver}/bin/rdoc
479 %{gem_dir}/specifications/rdoc-%{rdoc_ver}.gemspec
480 %attr(755,root,root) %{gem_dir}/gems/rdoc-%{rdoc_ver}/bin/ri
482 %if %{with batteries}
484 %defattr(644,root,root,755)
485 %attr(755,root,root) %{_bindir}/gem
486 %{ruby_libdir}/rubygems
487 %{ruby_libdir}/rubygems.rb
488 %{ruby_libdir}/ubygems.rb
490 %{gem_dir}/specifications/io-console-*.gemspec
491 %{gem_dir}/specifications/bigdecimal-*.gemspec
492 %if %{with batteries}
493 %dir %{gem_dir}/gems/rake-%{rake_ver}
494 %dir %{gem_dir}/gems/rake-%{rake_ver}/bin
495 %attr(755,root,root) %{gem_dir}/gems/rake-%{rake_ver}/bin/rake
496 %{gem_dir}/specifications/minitest-%{minitest_ver}.gemspec
497 %{gem_dir}/specifications/rake-%{rake_ver}.gemspec
498 %{gem_dir}/specifications/json-%{json_ver}.gemspec
503 %defattr(644,root,root,755)
504 %attr(755,root,root) %{_bindir}/erb
505 %attr(755,root,root) %{_bindir}/irb
506 %attr(755,root,root) %{_bindir}/testrb
507 %{ruby_libdir}/bigdecimal
510 %{ruby_libdir}/digest
513 %{ruby_libdir}/fiddle
516 %{ruby_libdir}/matrix
517 %{ruby_libdir}/minitest
519 %{ruby_libdir}/openssl
520 %{ruby_libdir}/optparse
521 %if %{with batteries}
527 %{ruby_libdir}/rbconfig
530 %{ruby_libdir}/ripper
536 %{ruby_libdir}/webrick
537 %{ruby_libdir}/xmlrpc
539 %{ruby_libdir}/[A-Za-s]*.rb
540 %{ruby_libdir}/tempfile.rb
541 %{ruby_libdir}/thread.rb
542 %{ruby_libdir}/thwait.rb
543 %{ruby_libdir}/time.rb
544 %{ruby_libdir}/timeout.rb
545 %{ruby_libdir}/tmpdir.rb
546 %{ruby_libdir}/tracer.rb
547 %{ruby_libdir}/tsort.rb
548 %{ruby_libdir}/[u-z]*.rb
549 %exclude %{ruby_libdir}/rubygems.rb
550 %exclude %{ruby_libdir}/ubygems.rb
551 %exclude %{ruby_libdir}/mkmf.rb
552 %attr(755,root,root) %{ruby_archdir}/[a-s]*.so
553 %attr(755,root,root) %{ruby_archdir}/[u-z]*.so
554 %dir %{ruby_archdir}/digest
555 %attr(755,root,root) %{ruby_archdir}/digest/*.so
556 %dir %{ruby_archdir}/dl
557 %attr(755,root,root) %{ruby_archdir}/dl/callback.so
558 %dir %{ruby_archdir}/enc
559 %attr(755,root,root) %{ruby_archdir}/enc/*.so
560 %dir %{ruby_archdir}/enc/trans
561 %attr(755,root,root) %{ruby_archdir}/enc/trans/*.so
562 %dir %{ruby_archdir}/io
563 %attr(755,root,root) %{ruby_archdir}/io/*.so
564 %if %{with batteries}
565 %dir %{ruby_archdir}/json
566 %dir %{ruby_archdir}/json/ext
567 %attr(755,root,root) %{ruby_archdir}/json/ext/*.so
569 %dir %{ruby_archdir}/mathn
570 %attr(755,root,root) %{ruby_archdir}/mathn/*.so
571 %dir %{ruby_archdir}/racc
572 %attr(755,root,root) %{ruby_archdir}/racc/*.so
573 %{ruby_archdir}/rbconfig.rb
576 %dir %{_datadir}/%{name}/gems
577 #%dir %{_datadir}/%{name}/gems/%{ruby_version}
578 %dir %{_datadir}/%{name}/gems/%{ruby_version}/gems
581 %dir %{gem_dir}/specifications
582 %{_mandir}/man1/erb.1*
583 %{_mandir}/man1/irb.1*
584 %{_mandir}/man1/ri.1*
585 %{_mandir}/man1/testrb.1*
588 %defattr(644,root,root,755)
589 %doc ruby-doc-bundle/*
590 %{?with_doc:%doc ruby_%{doc_version}_stdlib}
591 %{?with_doc:%doc ruby_%{doc_version}_core}
595 %defattr(644,root,root,755)
600 %defattr(644,root,root,755)
601 %{_examplesdir}/%{name}-%{version}