# # spec file for package ruby # # Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: ruby #### #!!! #!!! when updating, check versions of embedded rubygems in package stdlib below #!!! #### %define patch_level p0 Version: 2.1.0 Release: 0 # ruby-macros and ruby-common version %define rpm_macros_version 3 # %define pkg_version 2.1.0 %define libname lib%{name}2_1 # keep in sync with macro file! %define rb_ver 2.1.0 %define rb_arch %(echo %{_target_cpu}-linux-gnu | sed -e "s/ppc/powerpc/") %define rb_libdir %{_libdir}/ruby/%{rb_ver}/ %define rb_archdir %{_libdir}/ruby/%{rb_ver}/%{rb_arch} # keep in sync with macro file! # # from valgrind.spec %ifarch %ix86 x86_64 ppc ppc64 %define use_valgrind 1 %endif # see https://bugs.ruby-lang.org/issues/8000 - might come back %if %suse_version < 1230 %define tk_version_supported 1 %endif # the tests are unfortunately rather fishy %define run_tests 0 # BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: awk BuildRequires: gdbm-devel BuildRequires: libffi-devel BuildRequires: libyaml-devel BuildRequires: ncurses-devel BuildRequires: openssl-devel BuildRequires: pkg-config BuildRequires: readline-devel BuildRequires: tk-devel BuildRequires: zlib-devel # this requires is needed as distros older than 11.3 have a buildignore on freetype2, without this the detection of the tk extension fails BuildRequires: freetype2-devel %if 0%{?suse_version} > 1010 BuildRequires: xorg-x11-libX11-devel %else BuildRequires: xorg-x11-devel %endif %if 0%{?use_valgrind} %if 0%{?suse_version} > 1021 BuildRequires: valgrind-devel %else BuildRequires: valgrind %endif %endif Provides: rubygem-rake = 10.1.0 Provides: ruby(abi) = %{rb_ver} Provides: ruby-common = %{rpm_macros_version} Obsoletes: ruby-common < %{rpm_macros_version} %if 0%{?suse_version} < 1140 # we need a patched rpm Requires: rpm-with-ruby-provide-hook %endif Provides: ruby21 Conflicts: ruby18 Conflicts: ruby19 Conflicts: ruby20 Requires: ruby-stdlib Provides: ruby-macros = %{rpm_macros_version} # Url: http://www.ruby-lang.org/ Source: http://cache.ruby-lang.org/pub/ruby/2.1/ruby-%{pkg_version}.tar.bz2 # sources from former ruby-common Source1: gem_build_cleanup Source2: ruby.macros Source3: ruby.rpm-macros Source4: rubygems.attr Source5: rubygemsdeps.rb Source6: gem_install.sh Source7: generate_buildrequires.sh Source8: generate_rubygemprovides.awk Patch0: rubygems-1.5.0_buildroot.patch Patch1: ruby-1.9.2p290_tcl_no_stupid_rpaths.patch Patch2: drop_content_size_check_in_xmlrpc.patch # Summary: An Interpreted Object-Oriented Scripting Language License: BSD-2-Clause or Ruby Group: Development/Languages/Ruby %description Ruby is an interpreted scripting language for quick and easy object-oriented programming. It has many features for processing text files and performing system management tasks (as in Perl). It is simple, straight-forward, and extensible. * Ruby features: - Simple Syntax - *Normal* Object-Oriented features (class, method calls, for example) - *Advanced* Object-Oriented features(Mix-in, Singleton-method, for example) - Operator Overloading - Exception Handling - Iterators and Closures - Garbage Collection - Dynamic Loading of Object Files (on some architectures) - Highly Portable (works on many UNIX machines; DOS, Windows, Mac, BeOS, and more) %package -n %{libname} Summary: Dynamic runtime library for Ruby Group: System/Libraries %description -n %{libname} Dynamic runtime library libruby2.1.so.2.0.0 for Ruby %package doc Summary: Documentation and samples for Ruby Group: Development/Languages/Ruby %description doc Documentation and samples for Ruby %package stdlib Summary: The Ruby standard library Group: Development/Languages/Ruby ################################ # generate provides for embedded rubygems # must be 'manually' generated since # - the final .gemspec files are created during %build and %install # - the usual means to generate provides for rubygems is using ruby # and ruby is not available while building ruby :-/ %define gen_embedded_provides4() %(awk -f %{S:8} -- %version %arch %1 %2 %3 %4) %define gen_embedded_provides5() %(awk -f %{S:8} -- %version %arch %1 %2 %3 %4 %5) %gen_embedded_provides4 io-console 0 4 2 %gen_embedded_provides4 json 1 8 1 %gen_embedded_provides4 minitest 4 7 5 %gen_embedded_provides4 psych 2 0 2 %gen_embedded_provides4 rake 10 1 0 %gen_embedded_provides4 rdoc 4 1 0 %gen_embedded_provides5 test-unit 2 1 0 0 ################################ %description stdlib The Ruby standard library %package devel Summary: Development files to link against Ruby Group: Development/Languages/Ruby Requires: %{name} = %{version} Provides: rubygems = 1.3.7 Provides: rubygems_with_buildroot_patch Requires: ruby-common %description devel Development files to link against Ruby. %package devel-extra Summary: Special development files of ruby, normally not installed Group: Development/Languages/Ruby Requires: %{name}-devel = %{version} %description devel-extra Development files to link against Ruby. %if 0%{?tk_version_supported} > 0 %package tk Summary: TCL/TK bindings for Ruby Group: Development/Languages/Ruby Requires: %{name} = %{version} %description tk TCL/TK bindings for Ruby %endif %package doc-ri Summary: Ruby Interactive Documentation Group: Development/Languages/Ruby Requires: %{name} = %{version} %if 0%{?suse_version} >= 1121 BuildArch: noarch %endif %description doc-ri This package contains the RI docs for ruby %package doc-html Summary: This package contains the HTML docs for ruby Group: Development/Languages/Ruby Requires: %{name} = %{version} %if 0%{?suse_version} >= 1121 BuildArch: noarch %endif %description doc-html This package contains the HTML docs for ruby %package examples Summary: Example scripts for ruby Group: Development/Languages/Ruby Requires: %{name} = %{version} %if 0%{?suse_version} >= 1121 BuildArch: noarch %endif %description examples Example scripts for ruby %package test-suite Requires: %{name} = %{version} Summary: An Interpreted Object-Oriented Scripting Language Group: Development/Languages/Ruby %if 0%{?suse_version} >= 1121 BuildArch: noarch %endif %description test-suite Ruby is an interpreted scripting language for quick and easy object-oriented programming. It has many features for processing text files and performing system management tasks (as in Perl). It is simple, straight-forward, and extensible. * Ruby features: - Simple Syntax - *Normal* Object-Oriented features (class, method calls, for example) - *Advanced* Object-Oriented features(Mix-in, Singleton-method, for example) - Operator Overloading - Exception Handling - Iterators and Closures - Garbage Collection - Dynamic Loading of Object Files (on some architectures) - Highly Portable (works on many UNIX machines; DOS, Windows, Mac, BeOS, and more) %prep %setup -q -n ruby-%{pkg_version} %patch0 %patch1 %patch2 find sample -type f -print0 | xargs -r0 chmod a-x grep -Erl '^#! */' benchmark bootstraptest ext lib sample test \ | xargs -r perl -p -i -e 's|^#!\s*\S+(\s+.*)?$|#!/usr/bin/ruby2.1$1|' %build %configure \ --with-soname=ruby \ --target=%{_target_platform} \ %if 0%{?use_valgrind} --with-valgrind \ %endif --with-mantype=man \ --enable-shared \ --disable-static \ --disable-rpath %{__make} all V=1 %install %makeinstall V=1 %{__install} -D -m 0644 %{S:2} %{buildroot}/etc/rpm/macros.ruby echo "%defattr(-,root,root,-)" > devel-extra-excludes echo "%defattr(-,root,root,-)" > devel-extra-list for i in iseq.h insns.inc insns_info.inc revision.h version.h thread_pthread.h \ ruby_atomic.h method.h id.h vm_core.h vm_opts.h node.h eval_intern.h vm_debug.h; do install -m 644 $i %{buildroot}%{_includedir}/ruby-%{rb_ver}/ echo "%exclude %{_includedir}/ruby-%{rb_ver}/$i" >> devel-extra-excludes echo "%{_includedir}/ruby-%{rb_ver}/$i" >> devel-extra-list done # Create gem native extensions dir # use shell scripting here as we're executing the just installed binary %define rb_binary %{buildroot}/usr/bin/ruby -I %{buildroot}%{rb_libdir} -I %{buildroot}%{rb_archdir} export LD_LIBRARY_PATH=%{buildroot}%{_libdir} export GEM_EXTENSIONS=`%{rb_binary} -rrubygems -e 'print Gem::BasicSpecification.new.extensions_dir'` export GEM_PLATFORM=`%{rb_binary} -r rubygems -r rbconfig -e 'print Gem::Platform.new(RbConfig::CONFIG["arch"]).to_s'` # mkdir -p %{buildroot}$GEM_EXTENSIONS/$GEM_PLATFORM/%{rb_ver} mkdir -p %{buildroot}$GEM_EXTENSIONS # formerly ruby-common # we need to make sure it overwrites older macro versions and rpm sorts alphabetically install -D -m 0644 %{S:3} $RPM_BUILD_ROOT/etc/rpm/macros.suse-ruby install -D -m 0644 %{S:4} $RPM_BUILD_ROOT/usr/lib/rpm/fileattrs/rubygems.attr install -D -m 0755 %{S:5} $RPM_BUILD_ROOT/usr/lib/rpm/rubygemsdeps.rb install -D -m 0755 %{S:6} $RPM_BUILD_ROOT/usr/lib/rpm/gem_install.sh install -D -m 0755 %{S:1} $RPM_BUILD_ROOT/usr/lib/rpm/gem_build_cleanup.sh install -D -m 0755 %{S:7} $RPM_BUILD_ROOT/usr/lib/rpm/generate_buildrequires.sh %if 0%{?run_tests} %check export LD_LIBRARY_PATH="$PWD" # we know some tests will fail when they do not find a /usr/bin/ruby make check V=1 ||: %endif %post -n %{libname} /sbin/ldconfig %postun -n %{libname} /sbin/ldconfig %files %defattr(-,root,root,-) %config(noreplace) /etc/rpm/macros.ruby %{_bindir}/erb %{_bindir}/gem %{_bindir}/irb %{_bindir}/rake %{_bindir}/rdoc %{_bindir}/ri %{_bindir}/ruby %{_bindir}/testrb %if 0%{?tk_version_supported} > 0 %exclude %{rb_libdir}/multi-tk.rb %exclude %{rb_libdir}/remote-tk.rb %exclude %{rb_libdir}/tcltk.rb %exclude %{rb_libdir}/tk*.rb %exclude %{rb_libdir}/tk/ %exclude %{rb_libdir}/tkextlib/ %exclude %{rb_archdir}/tcltklib.so %exclude %{rb_archdir}/tkutil.so %endif %{_mandir}/man1/ri.1* %{_mandir}/man1/irb.1* %{_mandir}/man1/erb.1* %{_mandir}/man1/rake.1* %{_mandir}/man1/ruby.1* %doc ChangeLog COPYING COPYING.ja GPL KNOWNBUGS.rb LEGAL NEWS README README.EXT README.EXT.ja README.ja # former ruby-common files /etc/rpm/macros.suse-ruby %dir /usr/lib/rpm/fileattrs /usr/lib/rpm/fileattrs/rubygems.attr /usr/lib/rpm/rubygemsdeps.rb /usr/lib/rpm/gem_install.sh /usr/lib/rpm/gem_build_cleanup.sh /usr/lib/rpm/generate_buildrequires.sh %files -n %{libname} %defattr(-,root,root,-) %{_libdir}/libruby.so.2.1* %files doc %defattr(-,root,root,-) %doc doc/* sample/ %files stdlib %defattr(-,root,root,-) %{_libdir}/ruby/ %files devel -f devel-extra-excludes %defattr(-,root,root,-) %{_includedir}/ruby-%{rb_ver} %{_libdir}/libruby.so %{_libdir}/libruby-static.a %{_libdir}/pkgconfig/ruby-2.1.pc %files devel-extra -f devel-extra-list %if 0%{?tk_version_supported} > 0 %files tk %defattr(-,root,root,-) %{rb_libdir}/multi-tk.rb %{rb_libdir}/remote-tk.rb %{rb_libdir}/tcltk.rb %{rb_libdir}/tk*.rb %{rb_libdir}/tk/ %{rb_libdir}/tkextlib/ %{rb_archdir}/tcltklib.so %{rb_archdir}/tkutil.so %endif %files doc-ri %defattr(-,root,root,-) %dir %{_datadir}/ri/ %{_datadir}/ri/%{rb_ver}/ %changelog