741642da4a
fix dependency errors by using api version 2.1.0 for minitest and friends OBS-URL: https://build.opensuse.org/request/show/224240 OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=79
464 lines
13 KiB
RPMSpec
464 lines
13 KiB
RPMSpec
#
|
|
# 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.1
|
|
Release: 0
|
|
|
|
# ruby-macros and ruby-common version
|
|
%define rpm_macros_version 3
|
|
|
|
#
|
|
%define pkg_version %{version}
|
|
%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}
|
|
Provides: ruby21
|
|
Conflicts: ruby18
|
|
Conflicts: ruby19
|
|
Conflicts: ruby20
|
|
Requires: ruby-stdlib
|
|
PreReq: update-alternatives
|
|
BuildRequires: update-alternatives
|
|
|
|
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} -- 2.1.0 %arch %1 %2 %3 %4)
|
|
%define gen_embedded_provides5() %(awk -f %{S:8} -- 2.1.0 %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 internal.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
|
|
|
|
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
|
|
for bin in rake rdoc ri; do
|
|
# dummy
|
|
touch %{buildroot}%{_sysconfdir}/alternatives/$bin
|
|
mv %{buildroot}%_bindir/$bin %{buildroot}%_bindir/$bin.ruby
|
|
ln -s %{_sysconfdir}/alternatives/$bin %{buildroot}%_bindir/$bin
|
|
done
|
|
|
|
%post
|
|
for bin in rake rdoc ri; do
|
|
/usr/sbin/update-alternatives --install \
|
|
%{_bindir}/$bin $bin %{_bindir}/$bin.ruby 2
|
|
done
|
|
|
|
%preun
|
|
if [ "$1" = 0 ] ; then
|
|
for bin in rake rdoc ri; do
|
|
/usr/sbin/update-alternatives --remove $bin %{_bindir}/$bin.ruby
|
|
done
|
|
fi
|
|
|
|
%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
|
|
%ghost %{_sysconfdir}/alternatives/rake
|
|
%ghost %{_sysconfdir}/alternatives/rdoc
|
|
%ghost %{_sysconfdir}/alternatives/ri
|
|
%{_bindir}/erb
|
|
%{_bindir}/gem
|
|
%{_bindir}/irb
|
|
%{_bindir}/rake
|
|
%{_bindir}/rdoc
|
|
%{_bindir}/ri
|
|
%{_bindir}/ruby
|
|
%{_bindir}/testrb
|
|
%{_bindir}/rake.ruby
|
|
%{_bindir}/rdoc.ruby
|
|
%{_bindir}/ri.ruby
|
|
%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/
|
|
%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
|
|
|
|
%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
|