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
8 %bcond_without doc # skip (time-consuming) docs generating; intended for speed up test builds
9 %bcond_without tk # skip building package with Tk bindings
10 %bcond_without batteries # Don't include rubygems, json or rake
11 %bcond_without verpath # LOAD_PATH with version number
12 %bcond_with bootstrap # build bootstrap version
14 %define ruby_version 1.9
16 %define patchlevel 392
17 %define doc_version 1_9_3
18 %define json_ver 1.5.5
19 %define rake_ver 0.9.2.2
20 %define rubygems_ver 1.8.11
21 %define minitest_ver 2.5.1
22 %define rdoc_ver 3.9.5
23 Summary: Ruby - interpreted scripting language
24 Summary(ja.UTF-8): オブジェクト指向言語Rubyインタプリタ
25 Summary(pl.UTF-8): Ruby - interpretowany język skryptowy
26 Summary(pt_BR.UTF-8): Linguagem de script orientada a objeto
27 Summary(zh_CN.UTF-8): ruby - 一种快速高效的面向对象脚本编程语言
29 Version: %{basever}.%{patchlevel}
32 License: The Ruby License
33 Group: Development/Languages
34 Source0: ftp://ftp.ruby-lang.org/pub/ruby/%{ruby_version}/%{name}-%{basever}-p%{patchlevel}.tar.bz2
35 # Source0-md5: a810d64e2255179d2f334eb61fb8519c
36 Source1: http://www.ruby-doc.org/download/%{name}-doc-bundle.tar.gz
37 # Source1-md5: ad1af0043be98ba1a4f6d0185df63876
38 Source2: http://www.ruby-doc.org/downloads/%{name}_%{doc_version}_stdlib_rdocs.tgz
39 # Source2-md5: ec622612428672c432b6f65dd31a84b5
40 Source3: http://www.ruby-doc.org/downloads/%{name}_%{doc_version}_core_rdocs.tgz
41 # Source3-md5: 1892aadde51d36106c513bced2193dff
42 Source100: ftp://ftp.ruby-lang.org/pub/ruby/1.8/%{name}-1.8.7-p330.tar.gz
43 # Source100-md5: 50a49edb787211598d08e756e733e42e
46 Source6: %{name}-mode-init.el
47 Patch0: %{name}-lib64.patch
48 Patch1: %{name}-ffs.patch
49 Patch2: fix-bison-invocation.patch
50 # http://redmine.ruby-lang.org/issues/5231
51 Patch3: disable-versioned-paths.patch
52 # TODO: Should be submitted upstream?
53 Patch4: arch-specific-dir.patch
54 # http://redmine.ruby-lang.org/issues/5281
55 Patch5: site-and-vendor-arch-flags.patch
56 URL: http://www.ruby-lang.org/
57 BuildRequires: autoconf >= 2.60
58 BuildRequires: automake
60 BuildRequires: db-devel
61 BuildRequires: gdbm-devel >= 1.8.3
62 BuildRequires: libffi-devel
63 BuildRequires: ncurses-devel
64 BuildRequires: openssl-devel
65 BuildRequires: pkgconfig
66 BuildRequires: readline-devel >= 4.2
67 %{!?with_bootstrap:BuildRequires: ruby-modules}
68 BuildRequires: sed >= 4.0
69 BuildRequires: yaml-devel
71 BuildRequires: tk-devel
73 Requires(post,postun): /sbin/ldconfig
74 Provides: ruby(ver) = %{ruby_version}
77 Obsoletes: ruby-doc < 1.8.4
78 Obsoletes: ruby-fastthread
80 Provides: json = %{json_ver}
81 Provides: rake = %{rake_ver}
82 Provides: ruby-json = %{json_ver}
83 Provides: ruby-rake = %{rake_ver}
84 Provides: ruby-rubygems = %{rubygems_ver}
85 Provides: rubygems = %{rubygems_ver}
88 Obsoletes: ruby-rubygems
90 Conflicts: ruby-activesupport < 2.3.11-2
91 Conflicts: ruby-activesupport2 < 2.3.11-2
92 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
94 %define gem_dir %{_datadir}/%{name}/gems/%{ruby_version}
96 # The RubyGems library has to stay out of Ruby directory three, since the
97 # RubyGems should be share by all Ruby implementations.
98 %define rubygems_dir %{_datadir}/rubygems
100 %define ruby_libdir %{_datadir}/%{name}
101 %define ruby_libarchdir %{_libdir}/%{name}
103 # This is the local lib/arch and should not be used for packaging.
104 %define ruby_sitedir site_ruby
105 %define ruby_sitelibdir %{_prefix}/local/share/%{name}/%{ruby_sitedir}
106 %define ruby_sitearchdir %{_prefix}/local/%{_lib}/%{name}/%{ruby_sitedir}
108 # This is the general location for libs/archs compatible with all
109 # or most of the Ruby versions available in the PLD repositories.
110 %define ruby_vendordir vendor_ruby
111 %define ruby_vendorlibdir %{_datadir}/%{name}/%{ruby_vendordir}
112 %define ruby_vendorarchdir %{_libdir}/%{name}/%{ruby_vendordir}
114 # TODO: drop legacy loadpaths after all ruby modules rebuilt in Th
115 %define legacy_libdir %{_libdir}/%{name}/%{ruby_version}
116 %define legacy_archdir %{_libdir}/%{name}/%{ruby_version}/%{_arch}-linux
117 %define legacy_sitedir %{_libdir}/%{name}/%{ruby_sitedir}
118 %define legacy_sitelibdir %{_libdir}/%{name}/%{ruby_sitedir}/%{ruby_version}
119 %define legacy_sitearchdir %{_libdir}/%{name}/%{ruby_sitedir}/%{ruby_version}/%{_arch}-linux
120 %define legacy_vendordir %{_libdir}/%{name}/%{ruby_vendordir}
121 %define legacy_vendorlibdir %{_libdir}/%{name}/%{ruby_vendordir}/%{ruby_version}
122 %define legacy_vendorarchdir %{_libdir}/%{name}/%{ruby_vendordir}/%{ruby_version}/%{_arch}-linux
124 %define legacy_siteloadpath %{legacy_sitelibdir}\\0%{legacy_sitearchdir}\\0%{legacy_sitedir}
125 %define legacy_vendorloadpath %{legacy_vendorlibdir}\\0%{legacy_vendorarchdir}
126 %define legacy_loadpath %{legacy_archdir}
127 %define legacy_loadpaths %{legacy_siteloadpath}\\0%{legacy_vendorloadpath}\\0%{legacy_loadpath}
129 # bleh, some nasty (gcc or ruby) bug still not fixed
130 # (SEGV or "unexpected break" on miniruby run during build)
131 %define specflags_ia64 -O0
133 # ruby needs frame pointers for correct exception handling
134 %define specflags_ia32 -fno-omit-frame-pointer
137 Ruby is the interpreted scripting language for quick and easy
138 object-oriented programming. It has many features to process text
139 files and to do system management tasks (as in Perl). It is simple,
140 straight-forward, extensible, and portable.
142 This package contains only shared library and ruby interpreter. To get
143 full-functional ruby environment install ruby-modules package.
145 %description -l ja.UTF-8
146 Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です.Rubyは最初
147 から純粋なオブジェクト指向言語として設計されていますから,オブジェクト
148 指向プログラミングを手軽に行う事が出来ます.もちろん通常の手続き型のプ ログラミングも可能です.
150 %description -l pl.UTF-8
151 Ruby to interpretowany język skryptowy, w sam raz dla łatwego i
152 szybkiego pisania zorientowanych obiektowo programów. Ma wiele funkcji
153 ułatwiających przetwarzanie plików tekstowych i wykonywanie prac
154 związanych z zarządzaniem systemu (podobnie jak Perl). Jest prosty,
155 rozszerzalny i przenośny.
157 Ten pakiet zawiera tylko bibliotekę dzieloną i interpreter ruby.
158 Zainstaluj pakiet ruby-modules, jeżeli potrzebujesz w pełni
159 funkcjonalnego środowiska ruby.
161 %description -l pt_BR.UTF-8
162 Ruby é uma linguagem de script interpretada de programação orientada a
163 objeto. Possui diversas características para processamento de texto. É
164 simples, extensível e direta.
167 Summary: Ruby standard modules and utilities
168 Summary(pl.UTF-8): Standardowe moduły i narzędzia dla języka Ruby
169 Group: Development/Languages
170 Requires: %{name} = %{epoch}:%{version}-%{release}
171 # workaround for autodep generator net getting version properly
172 Provides: ruby(abi) = %{ruby_version}
173 Provides: ruby-modules(ver) = %{ruby_version}
174 Obsoletes: ruby-minitest
177 Ruby standard modules and utilities:
179 - rdoc - documentation tool for source code
180 - irb - interactive Ruby
181 - ri - Ruby interactive reference
182 - testrb - automatic runner for Test::Unit of Ruby
184 %description modules -l pl.UTF-8
185 Standardowe moduły i narzędzia Ruby:
187 - rdoc - narzędzie do dokumentowania kodu źródłowego
188 - irb - interaktywny Ruby
189 - ri - interaktywna dokumentacja Ruby
190 - testrb - automatyczny runner dla Ruby Test::Unit
193 Summary: Ruby/Tk bindings
194 Summary(pl.UTF-8): Wiązania Ruby/Tk
195 Group: Development/Languages
196 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
199 This pachage contains Ruby/Tk bindings.
201 %description tk -l pl.UTF-8
202 Ten pakiet zawiera wiązania Ruby/Tk.
205 Summary: Ruby development libraries
206 Summary(pl.UTF-8): Biblioteki programistyczne interpretera języka Ruby
207 Group: Development/Languages
208 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
211 Ruby development libraries.
213 %description devel -l pl.UTF-8
214 Biblioteki programistyczne interpretera języka Ruby.
217 Summary: Ruby static libraries
218 Summary(pl.UTF-8): Biblioteki statyczne Ruby
219 Group: Development/Languages
220 Requires: %{name}-devel = %{epoch}:%{version}-%{release}
223 Ruby static libraries.
225 %description static -l pl.UTF-8
226 Biblioteki statyczne Ruby.
229 Summary: Ruby HTML documentation
230 Summary(pl.UTF-8): Dokumentacja HTML do Ruby
234 Ruby HTML documentation: FAQ, guide, core and standard library.
236 %description doc -l pl.UTF-8
237 Dokumentacja HTML do Ruby: FAQ, przewodnik, dokumentacja dla core i
241 Summary: Ruby ri documentation
242 Summary(pl.UTF-8): Dokumentacja Ruby w formacie ri
244 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
247 Ruby ri documentation.
249 %description doc-ri -l pl.UTF-8
250 Dokumentacja Ruby w formacie ri.
253 Summary: Ruby examples
254 Summary(pl.UTF-8): Przykłady dla języka Ruby
255 Group: Development/Languages
257 %description examples
260 %description examples -l pl.UTF-8
261 Przykłady programów w języku Ruby.
264 %if %{with bootstrap}
265 %setup -q -n %{name}-%{basever}-p%{patchlevel} -a1 -a2 -a3 -a100
267 %setup -q -n %{name}-%{basever}-p%{patchlevel} -a1 -a2 -a3
276 # must be regenerated with new bison
279 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
281 find -type f '(' -name '*.rb' -o -name '*.cgi' -o -name '*.test' \
282 -o -name 'ruby.1' -o -name '*.html' -o -name '*.tcl' ')' \
283 | xargs %{__sed} -i 's,/usr/local/bin/,%{_bindir}/,'
286 cp -f /usr/share/automake/config.sub .
288 # build ruby-1.8.7 first
289 %if %{with bootstrap}
290 cd %{name}-1.8.7-p330
298 %{?with_bootstrap:--with-baseruby=%{name}-1.8.7-p330/miniruby} \
299 --with-rubylibprefix=%{ruby_libdir} \
300 --with-archdir=%{ruby_libarchdir}/%{ruby_version} \
301 --with-sitedir=%{ruby_sitelibdir} \
302 --with-sitearchdir=%{ruby_sitearchdir} \
303 --with-vendordir=%{ruby_vendorlibdir} \
304 --with-vendorarchdir=%{ruby_vendorarchdir} \
305 --with-rubygemsdir=%{rubygems_dir} \
306 --with-search-path="%{legacy_loadpaths}" \
309 --disable-install-doc \
310 %{!?with_verpath:--disable-versioned-paths} \
311 --with-ruby-version=minor
315 %{?with_bootstrap:BASERUBY="ruby-1.8.7-p330/miniruby -I./ruby-1.8.7-p330/lib"}
322 rm -rf $RPM_BUILD_ROOT
323 install -d $RPM_BUILD_ROOT{%{ruby_rdocdir},%{_examplesdir}/%{name}-%{version}} \
324 $RPM_BUILD_ROOT%{ruby_libdir}/%{ruby_version}/tasks \
325 $RPM_BUILD_ROOT%{ruby_vendorarchdir}/%{ruby_version} \
326 $RPM_BUILD_ROOT{%{legacy_archdir},%{legacy_sitelibdir},%{legacy_sitearchdir},%{legacy_vendorarchdir}} \
328 %{__make} install %{?with_doc:install-doc} \
329 DESTDIR=$RPM_BUILD_ROOT
331 cp -Rf sample/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
332 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_mandir}/man1
333 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_mandir}/man1
335 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}/html
337 %if %{without batteries}
338 # packaged separately
339 %{__rm} -r $RPM_BUILD_ROOT%{ruby_libdir}/%{ruby_version}/{rubygems,rake,json,tasks}
340 %{__rm} -r $RPM_BUILD_ROOT%{ruby_libarchdir}/%{ruby_version}/json
341 %{__rm} $RPM_BUILD_ROOT%{ruby_libdir}/%{ruby_version}/{rake,rubygems,json}.rb
342 %{__rm} $RPM_BUILD_ROOT%{_bindir}/{gem,rake}
343 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/rake*
344 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/ri/%{ruby_version}/system/JSON
348 rm -rf $RPM_BUILD_ROOT%{_datadir}/ri
351 rm -rf $RPM_BUILD_ROOT
353 %post -p /sbin/ldconfig
354 %postun -p /sbin/ldconfig
357 %defattr(644,root,root,755)
358 %doc NEWS LEGAL README README.EXT ChangeLog ToDo
359 %attr(755,root,root) %{_bindir}/ruby
360 %if %{with batteries}
361 %attr(755,root,root) %{_bindir}/gem
362 %attr(755,root,root) %{_bindir}/rake
364 %attr(755,root,root) %{_libdir}/libruby.so.*.*.*
365 %attr(755,root,root) %ghost %{_libdir}/libruby.so.1.9
366 %{_mandir}/man1/ruby.1*
367 %if %{with batteries}
368 %{_mandir}/man1/rake.1*
372 %dir %{ruby_libdir}/%{ruby_version}
373 %dir %{ruby_libarchdir}
374 %dir %{ruby_libarchdir}/%{ruby_version}
375 %dir %{ruby_vendorlibdir}
376 %dir %{ruby_vendorlibdir}/%{ruby_version}
377 %dir %{ruby_vendorarchdir}
378 %dir %{ruby_vendorarchdir}/%{ruby_version}
381 #%dir %{_datadir}/ri/%{ruby_version}
382 #%dir %{_datadir}/ri/%{ruby_version}/system
385 # legacy dirs. when everything rebuilt in Th not using these dirs. drop them
386 %dir %{legacy_archdir}
387 %dir %{legacy_sitedir}
388 %dir %{legacy_sitelibdir}
389 %dir %{legacy_sitearchdir}
390 %dir %{legacy_vendorarchdir}
393 %defattr(644,root,root,755)
394 %attr(755,root,root) %{_libdir}/libruby.so
395 %{_includedir}/%{name}-%{ruby_version}
396 %{_pkgconfigdir}/ruby-%{ruby_version}.pc
399 %defattr(644,root,root,755)
400 %{_libdir}/libruby-static.a
404 %defattr(644,root,root,755)
405 %{ruby_libdir}/%{ruby_version}/tcltk.rb
406 %{ruby_libdir}/%{ruby_version}/tk*.rb
407 %{ruby_libdir}/%{ruby_version}/tk
408 %{ruby_libdir}/%{ruby_version}/tkextlib
409 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/t*.so
413 %defattr(644,root,root,755)
414 %attr(755,root,root) %{_bindir}/erb
415 %attr(755,root,root) %{_bindir}/irb
416 %attr(755,root,root) %{_bindir}/rdoc
417 %attr(755,root,root) %{_bindir}/ri
418 %attr(755,root,root) %{_bindir}/testrb
419 %{ruby_libdir}/%{ruby_version}/bigdecimal
420 %{ruby_libdir}/%{ruby_version}/cgi
421 %{ruby_libdir}/%{ruby_version}/date
422 %{ruby_libdir}/%{ruby_version}/digest
423 %{ruby_libdir}/%{ruby_version}/dl
424 %{ruby_libdir}/%{ruby_version}/drb
425 %{ruby_libdir}/%{ruby_version}/fiddle
426 %{ruby_libdir}/%{ruby_version}/io
427 %{ruby_libdir}/%{ruby_version}/irb
428 %{ruby_libdir}/%{ruby_version}/matrix
429 %{ruby_libdir}/%{ruby_version}/minitest
430 %{ruby_libdir}/%{ruby_version}/net
431 %{ruby_libdir}/%{ruby_version}/openssl
432 %{ruby_libdir}/%{ruby_version}/optparse
433 %if %{with batteries}
434 %{ruby_libdir}/%{ruby_version}/json
435 %{ruby_libdir}/%{ruby_version}/rake
436 %{ruby_libdir}/%{ruby_version}/rubygems
437 %dir %{ruby_libdir}/%{ruby_version}/tasks
439 %{ruby_libdir}/%{ruby_version}/psych
440 %{ruby_libdir}/%{ruby_version}/racc
441 %{ruby_libdir}/%{ruby_version}/rbconfig
442 %{ruby_libdir}/%{ruby_version}/rdoc
443 %{ruby_libdir}/%{ruby_version}/rexml
444 %{ruby_libdir}/%{ruby_version}/rinda
445 %{ruby_libdir}/%{ruby_version}/ripper
446 %{ruby_libdir}/%{ruby_version}/rss
447 %{ruby_libdir}/%{ruby_version}/shell
448 %{ruby_libdir}/%{ruby_version}/syck
449 %{ruby_libdir}/%{ruby_version}/test
450 %{ruby_libdir}/%{ruby_version}/uri
451 %{ruby_libdir}/%{ruby_version}/webrick
452 %{ruby_libdir}/%{ruby_version}/xmlrpc
453 %{ruby_libdir}/%{ruby_version}/yaml
454 %{ruby_libdir}/%{ruby_version}/[A-Za-s]*.rb
455 %{ruby_libdir}/%{ruby_version}/tempfile.rb
456 %{ruby_libdir}/%{ruby_version}/thread.rb
457 %{ruby_libdir}/%{ruby_version}/thwait.rb
458 %{ruby_libdir}/%{ruby_version}/time.rb
459 %{ruby_libdir}/%{ruby_version}/timeout.rb
460 %{ruby_libdir}/%{ruby_version}/tmpdir.rb
461 %{ruby_libdir}/%{ruby_version}/tracer.rb
462 %{ruby_libdir}/%{ruby_version}/tsort.rb
463 %{ruby_libdir}/%{ruby_version}/[u-z]*.rb
464 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/[a-s]*.so
465 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/[u-z]*.so
466 %dir %{ruby_libarchdir}/%{ruby_version}/digest
467 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/digest/*.so
468 %dir %{ruby_libarchdir}/%{ruby_version}/dl
469 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/dl/callback.so
470 %dir %{ruby_libarchdir}/%{ruby_version}/enc
471 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/enc/*.so
472 %dir %{ruby_libarchdir}/%{ruby_version}/enc/trans
473 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/enc/trans/*.so
474 %dir %{ruby_libarchdir}/%{ruby_version}/io
475 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/io/*.so
476 %if %{with batteries}
477 %dir %{ruby_libarchdir}/%{ruby_version}/json
478 %dir %{ruby_libarchdir}/%{ruby_version}/json/ext
479 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/json/ext/*.so
481 %dir %{ruby_libarchdir}/%{ruby_version}/mathn
482 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/mathn/*.so
483 %dir %{ruby_libarchdir}/%{ruby_version}/racc
484 %attr(755,root,root) %{ruby_libarchdir}/%{ruby_version}/racc/*.so
485 %{ruby_libarchdir}/%{ruby_version}/rbconfig.rb
488 %dir %{_datadir}/%{name}/gems
489 #%dir %{_datadir}/%{name}/gems/%{ruby_version}
490 %dir %{_datadir}/%{name}/gems/%{ruby_version}/gems
493 %dir %{gem_dir}/specifications
494 %{gem_dir}/specifications/io-console-*.gemspec
495 %{gem_dir}/specifications/bigdecimal-*.gemspec
496 %if %{with batteries}
497 %dir %{gem_dir}/gems/rake-%{rake_ver}
498 %dir %{gem_dir}/gems/rake-%{rake_ver}/bin
499 %attr(755,root,root) %{gem_dir}/gems/rake-%{rake_ver}/bin/rake
500 %dir %{gem_dir}/gems/rdoc-%{rdoc_ver}
501 %dir %{gem_dir}/gems/rdoc-%{rdoc_ver}/bin
502 %attr(755,root,root) %{gem_dir}/gems/rdoc-%{rdoc_ver}/bin/rdoc
503 %attr(755,root,root) %{gem_dir}/gems/rdoc-%{rdoc_ver}/bin/ri
504 %{gem_dir}/specifications/minitest-%{minitest_ver}.gemspec
505 %{gem_dir}/specifications/rake-%{rake_ver}.gemspec
506 %{gem_dir}/specifications/rdoc-%{rdoc_ver}.gemspec
507 %{gem_dir}/specifications/json-%{json_ver}.gemspec
509 %{_mandir}/man1/erb.1*
510 %{_mandir}/man1/irb.1*
511 %{_mandir}/man1/rdoc.1*
512 %{_mandir}/man1/ri.1*
513 %{_mandir}/man1/testrb.1*
516 %defattr(644,root,root,755)
517 %doc ruby-doc-bundle/*
518 %{?with_doc:%doc ruby_%{doc_version}_stdlib}
519 %{?with_doc:%doc ruby_%{doc_version}_core}
523 %defattr(644,root,root,755)
524 %{_datadir}/ri/%{ruby_version}/system/*
528 %defattr(644,root,root,755)
529 %{_examplesdir}/%{name}-%{version}