3 # - include ext/ in docs
4 # - replace ri with fastri
5 # - patch ri to search multiple indexes (one per package), so RPMs can
9 %bcond_without doc # skip (time-consuming) docs generating; intended for speed up test builds
10 %bcond_without emacs # skip building package with ruby-mode for emacs
11 %bcond_without tk # skip building package with Tk bindings
12 %bcond_without batteries # Don't include rubygems, json or rake
13 %bcond_without verpath # LOAD_PATH with version number
14 %bcond_with bootstrap # build bootstrap version
18 %define patchlevel 392
19 %define doc_version 1_9_3
20 %define json_ver 1.5.5
21 %define rake_ver 0.9.2.2
22 %define rubygems_ver 1.8.11
23 %define minitest_ver 2.5.1
24 %define rdoc_ver 3.9.5
25 Summary: Ruby - interpreted scripting language
26 Summary(ja.UTF-8): オブジェクト指向言語Rubyインタプリタ
27 Summary(pl.UTF-8): Ruby - interpretowany język skryptowy
28 Summary(pt_BR.UTF-8): Linguagem de script orientada a objeto
29 Summary(zh_CN.UTF-8): ruby - 一种快速高效的面向对象脚本编程语言
31 Version: %{basever}.%{patchlevel}
34 License: The Ruby License
35 Group: Development/Languages
36 Source0: ftp://ftp.ruby-lang.org/pub/ruby/%{ruby_ver}/%{name}-%{basever}-p%{patchlevel}.tar.bz2
37 # Source0-md5: a810d64e2255179d2f334eb61fb8519c
38 Source1: http://www.ruby-doc.org/download/%{name}-doc-bundle.tar.gz
39 # Source1-md5: ad1af0043be98ba1a4f6d0185df63876
40 Source2: http://www.ruby-doc.org/downloads/%{name}_%{doc_version}_stdlib_rdocs.tgz
41 # Source2-md5: ec622612428672c432b6f65dd31a84b5
42 Source3: http://www.ruby-doc.org/downloads/%{name}_%{doc_version}_core_rdocs.tgz
43 # Source3-md5: 1892aadde51d36106c513bced2193dff
44 Source100: ftp://ftp.ruby-lang.org/pub/ruby/1.8/%{name}-1.8.7-p330.tar.gz
45 # Source100-md5: 50a49edb787211598d08e756e733e42e
48 Source6: %{name}-mode-init.el
49 Patch0: %{name}-lib64.patch
50 Patch1: %{name}-ffs.patch
51 Patch2: fix-bison-invocation.patch
52 # http://redmine.ruby-lang.org/issues/5231
53 Patch3: disable-versioned-paths.patch
54 # TODO: Should be submitted upstream?
55 Patch4: arch-specific-dir.patch
56 # http://redmine.ruby-lang.org/issues/5281
57 Patch5: site-and-vendor-arch-flags.patch
58 URL: http://www.ruby-lang.org/
59 BuildRequires: autoconf >= 2.60
60 BuildRequires: automake
62 BuildRequires: db-devel
63 %{?with_emacs:BuildRequires: emacs}
64 BuildRequires: gdbm-devel >= 1.8.3
65 BuildRequires: libffi-devel
66 BuildRequires: ncurses-devel
67 BuildRequires: openssl-devel
68 BuildRequires: pkgconfig
69 BuildRequires: readline-devel >= 4.2
70 %{!?with_bootstrap:BuildRequires: ruby-modules}
71 BuildRequires: sed >= 4.0
72 BuildRequires: yaml-devel
74 BuildRequires: tk-devel
76 Requires(post,postun): /sbin/ldconfig
77 Provides: ruby(ver) = %{ruby_ver}
80 Obsoletes: ruby-doc < 1.8.4
81 Obsoletes: ruby-fastthread
83 Provides: json = %{json_ver}
84 Provides: rake = %{rake_ver}
85 Provides: ruby-json = %{json_ver}
86 Provides: ruby-rake = %{rake_ver}
87 Provides: ruby-rubygems = %{rubygems_ver}
88 Provides: rubygems = %{rubygems_ver}
91 Obsoletes: ruby-rubygems
93 Conflicts: ruby-activesupport < 2.3.11-2
94 Conflicts: ruby-activesupport2 < 2.3.11-2
95 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
97 %define gemdir %{_datadir}/%{name}/gems
98 %define gem_dir %{_datadir}/%{name}/gems/%{ruby_version}
99 %define gems2dir %{_datadir}/%{name}/gems/%{ruby_version}/gems
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
104 # legacy: /usr/lib64/ruby/gems/1.9/
106 %define ruby_libdir %{_datadir}/%{name}
107 %define ruby_libarchdir %{_libdir}/%{name}
109 # This is the local lib/arch and should not be used for packaging.
110 %define ruby_sitedir site_ruby
111 %define ruby_sitelibdir %{_prefix}/local/share/%{name}/%{ruby_sitedir}
112 %define ruby_sitearchdir %{_prefix}/local/%{_lib}/%{name}/%{ruby_sitedir}
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 ruby_vendordir vendor_ruby
117 %define ruby_vendorlibdir %{_datadir}/%{name}/%{ruby_vendordir}
118 %define ruby_vendorarchdir %{_libdir}/%{name}/%{ruby_vendordir}
120 # TODO: drop legacy loadpaths after all ruby modules rebuilt in Th
121 %define legacy_libdir %{_libdir}/%{name}/%{ruby_version}
122 %define legacy_archdir %{_libdir}/%{name}/%{ruby_version}/%{_arch}-linux
123 %define legacy_sitedir %{_libdir}/%{name}/%{ruby_sitedir}
124 %define legacy_sitelibdir %{_libdir}/%{name}/%{ruby_sitedir}/%{ruby_version}
125 %define legacy_sitearchdir %{_libdir}/%{name}/%{ruby_sitedir}/%{ruby_version}/%{_arch}-linux
126 %define legacy_vendordir %{_libdir}/%{name}/%{ruby_vendordir}
127 %define legacy_vendorlibdir %{_libdir}/%{name}/%{ruby_vendordir}/%{ruby_version}
128 %define legacy_vendorarchdir %{_libdir}/%{name}/%{ruby_vendordir}/%{ruby_version}/%{_arch}-linux
130 %define legacy_siteloadpath %{legacy_sitelibdir}:%{legacy_sitearchdir}:%{legacy_sitedir}
131 %define legacy_vendorloadpath %{legacy_vendorlibdir}:%{legacy_vendorarchdir}:%{legacy_vendordir}
132 %define legacy_loadpath %{legacy_libdir}:%{legacy_archdir}
133 %define legacy_loadpaths %{legacy_siteloadpath}:%{legacy_vendorloadpath}:%{legacy_loadpath}
135 # bleh, some nasty (gcc or ruby) bug still not fixed
136 # (SEGV or "unexpected break" on miniruby run during build)
137 %define specflags_ia64 -O0
139 # ruby needs frame pointers for correct exception handling
140 %define specflags_ia32 -fno-omit-frame-pointer
143 Ruby is the interpreted scripting language for quick and easy
144 object-oriented programming. It has many features to process text
145 files and to do system management tasks (as in Perl). It is simple,
146 straight-forward, extensible, and portable.
148 This package contains only shared library and ruby interpreter. To get
149 full-functional ruby environment install ruby-modules package.
151 %description -l ja.UTF-8
152 Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です.Rubyは最初
153 から純粋なオブジェクト指向言語として設計されていますから,オブジェクト
154 指向プログラミングを手軽に行う事が出来ます.もちろん通常の手続き型のプ ログラミングも可能です.
156 %description -l pl.UTF-8
157 Ruby to interpretowany język skryptowy, w sam raz dla łatwego i
158 szybkiego pisania zorientowanych obiektowo programów. Ma wiele funkcji
159 ułatwiających przetwarzanie plików tekstowych i wykonywanie prac
160 związanych z zarządzaniem systemu (podobnie jak Perl). Jest prosty,
161 rozszerzalny i przenośny.
163 Ten pakiet zawiera tylko bibliotekę dzieloną i interpreter ruby.
164 Zainstaluj pakiet ruby-modules, jeżeli potrzebujesz w pełni
165 funkcjonalnego środowiska ruby.
167 %description -l pt_BR.UTF-8
168 Ruby é uma linguagem de script interpretada de programação orientada a
169 objeto. Possui diversas características para processamento de texto. É
170 simples, extensível e direta.
173 Summary: Ruby standard modules and utilities
174 Summary(pl.UTF-8): Standardowe moduły i narzędzia dla języka Ruby
175 Group: Development/Languages
176 Requires: %{name} = %{epoch}:%{version}-%{release}
177 # workaround for autodep generator net getting version properly
178 Provides: ruby(abi) = %{ruby_ver}
179 Provides: ruby-modules(ver) = %{ruby_ver}
180 Obsoletes: ruby-minitest
183 Ruby standard modules and utilities:
185 - rdoc - documentation tool for source code
186 - irb - interactive Ruby
187 - ri - Ruby interactive reference
188 - testrb - automatic runner for Test::Unit of Ruby
190 %description modules -l pl.UTF-8
191 Standardowe moduły i narzędzia Ruby:
193 - rdoc - narzędzie do dokumentowania kodu źródłowego
194 - irb - interaktywny Ruby
195 - ri - interaktywna dokumentacja Ruby
196 - testrb - automatyczny runner dla Ruby Test::Unit
199 Summary: Ruby/Tk bindings
200 Summary(pl.UTF-8): Wiązania Ruby/Tk
201 Group: Development/Languages
202 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
205 This pachage contains Ruby/Tk bindings.
207 %description tk -l pl.UTF-8
208 Ten pakiet zawiera wiązania Ruby/Tk.
211 Summary: Ruby development libraries
212 Summary(pl.UTF-8): Biblioteki programistyczne interpretera języka Ruby
213 Group: Development/Languages
214 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.
270 Summary: Ruby mode and debugger for Emacs
271 Summary(pl.UTF-8): Tryb Ruby i debugger dla Emacsa
272 Group: Development/Tools
273 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
274 Requires: emacs-common
276 %description emacs-mode
277 Ruby mode and debugger for Emacs.
279 %description emacs-mode -l pl.UTF-8
280 Tryb Ruby i debugger dla Emacsa.
283 %if %{with bootstrap}
284 %setup -q -n %{name}-%{basever}-p%{patchlevel} -a1 -a2 -a3 -a100
286 %setup -q -n %{name}-%{basever}-p%{patchlevel} -a1 -a2 -a3
295 # must be regenerated with new bison
298 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
300 find -type f '(' -name '*.rb' -o -name '*.cgi' -o -name '*.test' \
301 -o -name 'ruby.1' -o -name '*.html' -o -name '*.tcl' ')' \
302 | xargs %{__sed} -i 's,/usr/local/bin/,%{_bindir}/,'
305 cp -f /usr/share/automake/config.sub .
307 # build ruby-1.8.7 first
308 %if %{with bootstrap}
309 cd %{name}-1.8.7-p330
317 %{?with_bootstrap:--with-baseruby=%{name}-1.8.7-p330/miniruby} \
318 --with-rubylibprefix=%{ruby_libdir} \
319 --with-archdir=%{ruby_libarchdir} \
320 --with-sitedir=%{ruby_sitelibdir} \
321 --with-sitearchdir=%{ruby_sitearchdir} \
322 --with-vendordir=%{ruby_vendorlibdir} \
323 --with-vendorarchdir=%{ruby_vendorarchdir} \
324 --with-rubygemsdir=%{rubygems_dir} \
325 --with-search-path=%{legacy_loadpaths} \
328 %{!?with_verpath:--disable-versioned-paths} \
329 --with-ruby-version=minor
333 %{?with_bootstrap:BASERUBY="ruby-1.8.7-p330/miniruby -I./ruby-1.8.7-p330/lib"}
340 rm -rf $RPM_BUILD_ROOT
341 install -d $RPM_BUILD_ROOT{%{ruby_rdocdir},%{_examplesdir}/%{name}-%{version}} \
342 $RPM_BUILD_ROOT%{ruby_libdir}/tasks
345 DESTDIR=$RPM_BUILD_ROOT
347 cp -Rf sample/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
348 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_mandir}/man1
349 cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_mandir}/man1
351 %if %{without batteries}
352 # packaged separately
353 %{__rm} -r $RPM_BUILD_ROOT%{ruby_libdir}/{rubygems,rake,json,tasks}
354 %{__rm} -r $RPM_BUILD_ROOT%{ruby_libarchdir}/json
355 %{__rm} $RPM_BUILD_ROOT%{ruby_libdir}/{rake,rubygems,json}.rb
356 %{__rm} $RPM_BUILD_ROOT%{_bindir}/{gem,rake}
357 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/rake*
358 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/ri/%{ruby_ver}/system/JSON
361 # ruby emacs mode - borrowed from FC-4
363 install -d $RPM_BUILD_ROOT%{_emacs_lispdir}/{%{name}-mode,site-start.d}
364 cp -a misc/*.el $RPM_BUILD_ROOT%{_emacs_lispdir}/%{name}-mode
365 %{__rm} $RPM_BUILD_ROOT%{_emacs_lispdir}/%{name}-mode/rubydb2x.el*
366 install -p %{SOURCE6} $RPM_BUILD_ROOT%{_emacs_lispdir}/site-start.d
367 cat << 'EOF' > path.el
368 (setq load-path (cons "." load-path) byte-compile-warnings nil)
370 emacs --no-site-file -q -batch -l path.el -f batch-byte-compile $RPM_BUILD_ROOT%{_emacs_lispdir}/%{name}-mode/*.el
375 rm -rf $RPM_BUILD_ROOT%{_datadir}/ri
376 rm -rf $RPM_BUILD_ROOT%{_docdir}/ruby/html
379 rm -rf $RPM_BUILD_ROOT
381 %post -p /sbin/ldconfig
382 %postun -p /sbin/ldconfig
385 %defattr(644,root,root,755)
386 %doc NEWS LEGAL README README.EXT ChangeLog ToDo
387 %attr(755,root,root) %{_bindir}/ruby
388 %if %{with batteries}
389 %attr(755,root,root) %{_bindir}/gem
390 %attr(755,root,root) %{_bindir}/rake
392 %attr(755,root,root) %{_libdir}/libruby.so.*.*.*
393 %attr(755,root,root) %ghost %{_libdir}/libruby.so.1.9
394 %{_mandir}/man1/ruby.1*
395 %if %{with batteries}
396 %{_mandir}/man1/rake.1*
398 #%dir %{_libdir}/%{name}
399 #%dir %{_libdir}/%{name}/%{ruby_ver}
400 #%dir %{ruby_libarchdir}
401 #%dir %{_libdir}/%{name}/site_ruby
402 #%dir %{_libdir}/%{name}/site_ruby/%{ruby_ver}
403 #%dir %{_libdir}/%{name}/site_ruby/%{ruby_ver}/*-linux*
404 #%dir %{_libdir}/%{name}/vendor_ruby
405 #%dir %{_libdir}/%{name}/vendor_ruby/%{ruby_ver}
406 #%dir %{_libdir}/%{name}/vendor_ruby/%{ruby_ver}/*-linux*
408 #%dir %{_datadir}/ri/%{ruby_ver}
409 #%dir %{_datadir}/ri/%{ruby_ver}/system
413 %defattr(644,root,root,755)
414 %attr(755,root,root) %{_libdir}/libruby.so
415 %{_includedir}/%{name}-%{ruby_ver}
416 %{_pkgconfigdir}/ruby-%{ruby_ver}.pc
419 %defattr(644,root,root,755)
420 %{_libdir}/libruby-static.a
424 %defattr(644,root,root,755)
425 %{ruby_libdir}/tcltk.rb
426 %{ruby_libdir}/tk*.rb
428 %{ruby_libdir}/tkextlib
429 %attr(755,root,root) %{ruby_libarchdir}/t*.so
433 %defattr(644,root,root,755)
434 %attr(755,root,root) %{_bindir}/erb
435 %attr(755,root,root) %{_bindir}/irb
436 %attr(755,root,root) %{_bindir}/rdoc
437 %attr(755,root,root) %{_bindir}/ri
438 %attr(755,root,root) %{_bindir}/testrb
439 %{ruby_libdir}/bigdecimal
442 %{ruby_libdir}/digest
445 %{ruby_libdir}/fiddle
448 %{ruby_libdir}/matrix
449 %{ruby_libdir}/minitest
451 %{ruby_libdir}/openssl
452 %{ruby_libdir}/optparse
453 %if %{with batteries}
456 %{ruby_libdir}/rubygems
457 %dir %{ruby_libarchdir}/%{ruby_version}/tasks
461 %{ruby_libdir}/rbconfig
465 %{ruby_libdir}/ripper
471 %{ruby_libdir}/webrick
472 %{ruby_libdir}/xmlrpc
474 %{ruby_libdir}/[A-Za-s]*.rb
475 %{ruby_libdir}/tempfile.rb
476 %{ruby_libdir}/thread.rb
477 %{ruby_libdir}/thwait.rb
478 %{ruby_libdir}/time.rb
479 %{ruby_libdir}/timeout.rb
480 %{ruby_libdir}/tmpdir.rb
481 %{ruby_libdir}/tracer.rb
482 %{ruby_libdir}/tsort.rb
483 %{ruby_libdir}/[u-z]*.rb
484 %attr(755,root,root) %{ruby_libarchdir}/[a-s]*.so
485 %attr(755,root,root) %{ruby_libarchdir}/[u-z]*.so
486 %dir %{ruby_libarchdir}/digest
487 %attr(755,root,root) %{ruby_libarchdir}/digest/*.so
488 %dir %{ruby_libarchdir}/dl
489 %attr(755,root,root) %{ruby_libarchdir}/dl/callback.so
490 %dir %{ruby_libarchdir}/enc
491 %attr(755,root,root) %{ruby_libarchdir}/enc/*.so
492 %dir %{ruby_libarchdir}/enc/trans
493 %attr(755,root,root) %{ruby_libarchdir}/enc/trans/*.so
494 %dir %{ruby_libarchdir}/io
495 %attr(755,root,root) %{ruby_libarchdir}/io/*.so
496 %if %{with batteries}
497 %dir %{ruby_libarchdir}/json
498 %dir %{ruby_libarchdir}/json/ext
499 %attr(755,root,root) %{ruby_libarchdir}/json/ext/*.so
501 %dir %{ruby_libarchdir}/mathn
502 %attr(755,root,root) %{ruby_libarchdir}/mathn/*.so
503 %dir %{ruby_libarchdir}/racc
504 %attr(755,root,root) %{ruby_libarchdir}/racc/*.so
505 %{ruby_libarchdir}/rbconfig.rb
506 #%dir %{ruby_libdir}/gems
509 %dir %{gem_dir}/specifications
510 %{gem_dir}/specifications/io-console-*.gemspec
511 %{gem_dir}/specifications/bigdecimal-*.gemspec
512 %if %{with batteries}
513 %dir %{gems2dir}/rake-%{rake_ver}
514 %dir %{gems2dir}/rake-%{rake_ver}/bin
515 %attr(755,root,root) %{gems2dir}/rake-%{rake_ver}/bin/rake
516 %dir %{gems2dir}/rdoc-%{rdoc_ver}
517 %dir %{gems2dir}/rdoc-%{rdoc_ver}/bin
518 %attr(755,root,root) %{gems2dir}/rdoc-%{rdoc_ver}/bin/rdoc
519 %attr(755,root,root) %{gems2dir}/rdoc-%{rdoc_ver}/bin/ri
520 %{gem_dir}/specifications/minitest-%{minitest_ver}.gemspec
521 %{gem_dir}/specifications/rake-%{rake_ver}.gemspec
522 %{gem_dir}/specifications/rdoc-%{rdoc_ver}.gemspec
523 %{gem_dir}/specifications/json-%{json_ver}.gemspec
525 %{_mandir}/man1/erb.1*
526 %{_mandir}/man1/irb.1*
527 %{_mandir}/man1/rdoc.1*
528 %{_mandir}/man1/ri.1*
529 %{_mandir}/man1/testrb.1*
532 %defattr(644,root,root,755)
533 %doc ruby-doc-bundle/*
534 %{?with_doc:%doc ruby_%{doc_version}_stdlib}
535 %{?with_doc:%doc ruby_%{doc_version}_core}
539 %defattr(644,root,root,755)
540 %{_datadir}/ri/%{ruby_ver}/system/*
544 %defattr(644,root,root,755)
545 %{_examplesdir}/%{name}-%{version}
549 %defattr(644,root,root,755)
551 %dir %{_emacs_lispdir}/%{name}-mode
552 %{_emacs_lispdir}/%{name}-mode/*.elc
553 %{_emacs_lispdir}/site-start.d/*.el