From 83bf4211067eab29284e1a4d2d405270abd5cd4209fd5bb4e37516e61fd814ce Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Mon, 6 Jan 2014 08:27:21 +0000 Subject: [PATCH 1/8] - move update-alternative usage to main package OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=67 --- ruby.changes | 5 +++++ ruby.spec | 38 +------------------------------------- 2 files changed, 6 insertions(+), 37 deletions(-) diff --git a/ruby.changes b/ruby.changes index 505e088..deaf62e 100644 --- a/ruby.changes +++ b/ruby.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Jan 6 08:25:55 UTC 2014 - coolo@suse.com + +- move update-alternative usage to main package + ------------------------------------------------------------------- Mon Aug 19 11:15:25 UTC 2013 - jmassaguerpla@suse.com diff --git a/ruby.spec b/ruby.spec index cb0cdc3..a30b449 100644 --- a/ruby.spec +++ b/ruby.spec @@ -1,7 +1,7 @@ # # spec file for package ruby # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# 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 @@ -35,7 +35,6 @@ BuildRequires: update-alternatives %requires_ge ruby20 Provides: rubygems = 1.8.15 Obsoletes: rubygems < 1.8.15 -Requires: update-alternatives %{expand:%(rpm -ql ruby20 | fgrep .gemspec | /usr/bin/ruby2.0 /usr/lib/rpm/rubygemsdeps.rb --provides | sed -e 's,^,Provides:,')} @@ -83,50 +82,15 @@ Development files to link against Ruby. %build %install -mkdir -p %{buildroot}%_bindir %{buildroot}%{_sysconfdir}/alternatives -for bin in erb gem irb rake rdoc ri ruby testrb; do - # dummy - touch %{buildroot}%{_sysconfdir}/alternatives/$bin - ln -s %{_sysconfdir}/alternatives/$bin %{buildroot}%_bindir/$bin -done mkdir -p %{buildroot}%_libdir ln -s %_libdir/libruby2.0.so %{buildroot}%_libdir/libruby.so install -D -m 0644 %{S:0} %{buildroot}/etc/rpm/macros.ruby install -D -m 0644 %{S:2} %{buildroot}/etc/gemrc -%post -for bin in erb gem irb rake rdoc ri ruby testrb; do - /usr/sbin/update-alternatives --install \ - %{_bindir}/$bin $bin %{_bindir}/$bin"2.0" 20 -done - -%preun -if [ "$1" = 0 ] ; then - for bin in erb gem irb rake rdoc ri ruby testrb; do - /usr/sbin/update-alternatives --remove $bin %{_bindir}/$bin"2.0" - done -fi - %files %defattr(-,root,root) %config /etc/gemrc %config /etc/rpm/macros.ruby -%ghost %_sysconfdir/alternatives/erb -%{_bindir}/erb -%ghost %_sysconfdir/alternatives/gem -%{_bindir}/gem -%ghost %_sysconfdir/alternatives/irb -%{_bindir}/irb -%ghost %_sysconfdir/alternatives/rake -%{_bindir}/rake -%ghost %_sysconfdir/alternatives/rdoc -%{_bindir}/rdoc -%ghost %_sysconfdir/alternatives/ri -%{_bindir}/ri -%ghost %_sysconfdir/alternatives/ruby -%{_bindir}/ruby -%ghost %_sysconfdir/alternatives/testrb -%{_bindir}/testrb %files devel %defattr(-,root,root) From 5a8cb02a022f41c61faf650a469c48fd3cba8aa108c6bfe3f95698c2f03bb6bc Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 10 Jan 2014 14:28:32 +0000 Subject: [PATCH 2/8] Accepting request 213475 from openSUSE:Factory:Staging:Ruby21 OBS-URL: https://build.opensuse.org/request/show/213475 OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=68 --- ruby.changes | 10 ++++++++++ ruby.macros | 41 +++++++++++++++++++++++------------------ ruby.spec | 12 ++++++------ 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/ruby.changes b/ruby.changes index deaf62e..aaf646a 100644 --- a/ruby.changes +++ b/ruby.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Wed Jan 8 20:06:35 UTC 2014 - kkaempf@suse.com + +- Add gem_* to ruby.macros + +------------------------------------------------------------------- +Mon Jan 6 16:39:40 UTC 2014 - coolo@suse.com + +- switch to ruby 2.1 + ------------------------------------------------------------------- Mon Jan 6 08:25:55 UTC 2014 - coolo@suse.com diff --git a/ruby.macros b/ruby.macros index 0505800..7892923 100644 --- a/ruby.macros +++ b/ruby.macros @@ -1,5 +1,5 @@ # -# Copyright (c) 2012 SUSE Linux +# Copyright (c) 2014 SUSE Linux # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -21,28 +21,33 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -%rb_binary %{rb20_binary} -%gem_binary /usr/bin/gem2.0 -%rb_arch %{rb20_arch} -%rb_ver %{rb20_ver} +%rb_binary %{rb21_binary} +%gem_binary /usr/bin/gem2.1 +%rb_arch %{rb21_arch} +%rb_ver %{rb21_ver} -%rb_dir %{rb20_dir} -%rb_libdir %{rb20_libdir} -%rb_archdir %{rb20_archdir} +%rb_dir %{rb21_dir} +%rb_libdir %{rb21_libdir} +%rb_archdir %{rb21_archdir} -%rb_sitedir %rb20_sitedir -%rb_sitelibdir %rb20_sitelibdir -%rb_sitearchdir %rb20_sitearchdir +%rb_sitedir %rb21_sitedir +%rb_sitelibdir %rb21_sitelibdir +%rb_sitearchdir %rb21_sitearchdir -%rb_vendordir %rb20_vendordir -%rb_vendorlibdir %rb20_vendorlibdir -%rb_vendorarchdir %rb20_vendorarchdir +%rb_vendordir %rb21_vendordir +%rb_vendorlibdir %rb21_vendorlibdir +%rb_vendorarchdir %rb21_vendorarchdir # old names -%rb_sitelib %rb20_sitelibdir -%rb_sitearch %rb20_sitearchdir +%rb_sitelib %rb21_sitelibdir +%rb_sitearch %rb21_sitearchdir # -%rb_vendorlib %rb20_vendorlibdir -%rb_vendorarch %rb20_vendorarchdir +%rb_vendorlib %rb21_vendorlibdir +%rb_vendorarch %rb21_vendorarchdir +# gem names +%gem_base %gem21_base +%gem_extensions %gem21_extensions +%gem_doc_ext %gem21_doc_ext +%gem_platform %gem21_platform diff --git a/ruby.spec b/ruby.spec index a30b449..2e08d8d 100644 --- a/ruby.spec +++ b/ruby.spec @@ -17,7 +17,7 @@ Name: ruby -Version: 2.0 +Version: 2.1 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: ruby.macros @@ -28,15 +28,15 @@ Summary: An Interpreted Object-Oriented Scripting Language License: MIT Group: Development/Languages/Ruby BuildRequires: ruby-common -BuildRequires: ruby20-devel +BuildRequires: ruby21-devel BuildRequires: update-alternatives #!BuildIgnore: ruby ruby-devel #!BuildIgnore: rubygems -%requires_ge ruby20 +%requires_ge ruby21 Provides: rubygems = 1.8.15 Obsoletes: rubygems < 1.8.15 -%{expand:%(rpm -ql ruby20 | fgrep .gemspec | /usr/bin/ruby2.0 /usr/lib/rpm/rubygemsdeps.rb --provides | sed -e 's,^,Provides:,')} +%{expand:%(rpm -ql ruby21 | fgrep .gemspec | /usr/bin/ruby2.1 /usr/lib/rpm/rubygemsdeps.rb --provides | sed -e 's,^,Provides:,')} %description Ruby is an interpreted scripting language for quick and easy @@ -71,7 +71,7 @@ BeOS, and more) Summary: Development files to link against Ruby Group: Development/Languages/Ruby Requires: %{name} -Requires: ruby20-devel +Requires: ruby21-devel Provides: rubygems_with_buildroot_patch %description devel @@ -83,7 +83,7 @@ Development files to link against Ruby. %install mkdir -p %{buildroot}%_libdir -ln -s %_libdir/libruby2.0.so %{buildroot}%_libdir/libruby.so +ln -s %_libdir/libruby2.1.so %{buildroot}%_libdir/libruby.so install -D -m 0644 %{S:0} %{buildroot}/etc/rpm/macros.ruby install -D -m 0644 %{S:2} %{buildroot}/etc/gemrc From 069bf7c3af24729a7d463785d6907e17bfb04d38f3b6805b981666a95ae85bd5 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Sun, 12 Jan 2014 19:03:10 +0000 Subject: [PATCH 3/8] - disable format-executable. we only support one ruby at a time (de facto) OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=69 --- gemrc | 4 ++-- ruby.changes | 6 ++++++ ruby.macros | 5 ----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gemrc b/gemrc index c9f23cd..3da527e 100644 --- a/gemrc +++ b/gemrc @@ -1,11 +1,11 @@ --- :benchmark: false -install: --format-executable --no-user-install +install: --no-format-executable --no-user-install :backtrace: true :update_sources: true format_executable: true :verbose: true -update: --format-executable --no-user-install +update: --no-format-executable --no-user-install :bulk_threshold: 1000 :sources: - https://rubygems.org diff --git a/ruby.changes b/ruby.changes index aaf646a..323a7be 100644 --- a/ruby.changes +++ b/ruby.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Sun Jan 12 19:02:38 UTC 2014 - coolo@suse.com + +- disable format-executable. we only support one ruby at a time + (de facto) + ------------------------------------------------------------------- Wed Jan 8 20:06:35 UTC 2014 - kkaempf@suse.com diff --git a/ruby.macros b/ruby.macros index 7892923..1c269b2 100644 --- a/ruby.macros +++ b/ruby.macros @@ -46,8 +46,3 @@ %rb_vendorlib %rb21_vendorlibdir %rb_vendorarch %rb21_vendorarchdir -# gem names -%gem_base %gem21_base -%gem_extensions %gem21_extensions -%gem_doc_ext %gem21_doc_ext -%gem_platform %gem21_platform From 9594841e44bb4adddfd42a7d51284028155da64e41112f9fad49c2db2d8c73a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= Date: Mon, 3 Feb 2014 20:16:17 +0000 Subject: [PATCH 4/8] Accepting request 220747 from openSUSE:Factory:Staging:H MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - readd old macros - for now at least - generate provides for embedded rubygems - merged ruby-common - new package split - only single Ruby version installable ruby - binary libruby2_1-2_0 - ruby runtime library ruby-stdlib - ruby standard library ruby-doc - ruby documentation ruby-devel - ruby development - revert the ruby split (ruby - ruby21) rename ruby21 to ruby, integrate 'ruby' and 'ruby-common' - remove part of rubygems1.5 patch that modify mkmf which is already fixed upstream - fix rb_arch in spec: append -gnu - fix native gem builds: create gem native extensions dir - initial version for ruby 2.1.0 - changes to Ruby 2.0: VM (method cache) RGenGC (See ko1’s RubyKaigi presentation and RubyConf 2013 presentation) refinements #8481 #8571 syntax changes Rational/Complex Literal #8430 def’s return value #3753 Bignum use GMP #8796 String#scrub #8414 Socket.getifaddrs #8368 RDoc 4.1.0 and RubyGems 2.2.0 “literal”.freeze is now optimized #9042 add Exception#cause #8257 update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc OBS-URL: https://build.opensuse.org/request/show/220747 OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=70 --- drop_content_size_check_in_xmlrpc.patch | 16 + gem_build_cleanup | 16 + gem_install.sh | 65 ++ gemrc | 11 - generate_buildrequires.sh | 208 +++++ generate_rubygemprovides.awk | 58 ++ ruby-1.9.2p290_tcl_no_stupid_rpaths.patch | 15 + ruby-2.1.0.tar.bz2 | 3 + ruby-rpmlintrc | 2 + ruby.changes | 968 +--------------------- ruby.macros | 75 +- ruby.rpm-macros | 54 ++ ruby.spec | 391 ++++++++- ruby19-export_init_prelude.patch | 25 + rubygems-1.5.0_buildroot.patch | 59 ++ rubygems.attr | 4 + rubygemsdeps.rb | 150 ++++ 17 files changed, 1114 insertions(+), 1006 deletions(-) create mode 100644 drop_content_size_check_in_xmlrpc.patch create mode 100644 gem_build_cleanup create mode 100644 gem_install.sh delete mode 100644 gemrc create mode 100644 generate_buildrequires.sh create mode 100644 generate_rubygemprovides.awk create mode 100644 ruby-1.9.2p290_tcl_no_stupid_rpaths.patch create mode 100644 ruby-2.1.0.tar.bz2 create mode 100644 ruby-rpmlintrc create mode 100644 ruby.rpm-macros create mode 100644 ruby19-export_init_prelude.patch create mode 100644 rubygems-1.5.0_buildroot.patch create mode 100644 rubygems.attr create mode 100644 rubygemsdeps.rb diff --git a/drop_content_size_check_in_xmlrpc.patch b/drop_content_size_check_in_xmlrpc.patch new file mode 100644 index 0000000..820e919 --- /dev/null +++ b/drop_content_size_check_in_xmlrpc.patch @@ -0,0 +1,16 @@ +xmlrpc is doing a wrong content size check in case the server is compressing the answer. drop the check for now. +http://bugs.ruby-lang.org/issues/8182 + +Index: lib/xmlrpc/client.rb +=================================================================== +--- lib/xmlrpc/client.rb.orig ++++ lib/xmlrpc/client.rb +@@ -509,8 +509,6 @@ module XMLRPC # :nodoc: + expected = resp["Content-Length"] || "" + if data.nil? or data.bytesize == 0 + raise "Wrong size. Was #{data.bytesize}, should be #{expected}" +- elsif expected != "" and expected.to_i != data.bytesize and resp["Transfer-Encoding"].nil? +- raise "Wrong size. Was #{data.bytesize}, should be #{expected}" + end + + parse_set_cookies(resp.get_fields("Set-Cookie")) diff --git a/gem_build_cleanup b/gem_build_cleanup new file mode 100644 index 0000000..a38cb50 --- /dev/null +++ b/gem_build_cleanup @@ -0,0 +1,16 @@ +#!/bin/sh +if [ ${#*} = 1 ] ; then + if [ -d "$1" ] ; then + find $1 \ + \( -name \*.o -o -name Makefile -o -name config.log -o -name config.status -o -name Makefile.html -o -name gem_make.out -o -name mkmf.log -o -name \*.bak -o -name .deps -o -name .libs -o -name CVS \) \ + -print0 | xargs -r0 rm -rv || : + # remove more strict in the docu + find $1/doc \( -name Makefile.ri -o -name ext \) -print0 | xargs -r0 rm -rv || : + else + echo "'$1' does not exists or is not a directory! Exiting." >&2 + exit 1 + fi +else + echo "Please pass exact one argument to this script! Exiting." >&2 + exit 1 +fi diff --git a/gem_install.sh b/gem_install.sh new file mode 100644 index 0000000..20b39a6 --- /dev/null +++ b/gem_install.sh @@ -0,0 +1,65 @@ +#! /bin/bash + +set -e + +# options may be followed by one colon to indicate they have a required argument +if ! options=$(getopt -o dEf -l ignore-dependencies,force,no-rdoc,rdoc,no-ri,ri,env-shebang,no-env-shebang,default-gem:,build-root:,gem-binary: -- "$@") +then + # something went wrong, getopt will put out an error message for us + exit 1 +fi + +eval set -- "$options" + +gem_binary=gem +defaultgem= +gemfile= +otheropts= +buildroot= + +while [ $# -gt 0 ] +do + case $1 in + --default-gem) defaultgem=$2 ; shift;; + --gem-binary) gem_binary="$2" ; shift;; + --build-root) otheropts="$otheropts $1=$2"; buildroot=$2; shift;; + (--) ;; + (-*) otheropts="$otheropts $1";; + (*) gemfile=$1; otheropts="$otheropts $1"; break;; + esac + shift +done + +if [ "x$gemfile" = "x" ] ; then + gemfile=$(find . -maxdepth 2 -type f -name "$defaultgem") + # if still empty, we pick the sources + if [ "x$gemfile" = "x" ] ; then + gemfile=$(find $RPM_SOURCE_DIR -name "$defaultgem") + fi + otheropts="$otheropts $gemfile" +fi +set -x +$gem_binary install --verbose --local $otheropts +if test -d $RPM_BUILD_ROOT/usr/bin; then + cd $RPM_BUILD_ROOT/usr/bin + # backward compat + bins=`ls -1 *1.9 *2.0 2> /dev/null` || true + if test -n "$bins"; then + for bin in $bins; do + mv -v $bin $(echo "$bin" | sed -e 's,2.0$,,; s,1.9$,,') + done + fi +fi + +if [ -d "$buildroot" ]; then + find $buildroot -type f -perm /u+x | while read file; do + # TODO: scripts in ruby/1.9.1 should call ruby1.9 for consistency + sed -i -e 's,^#!/usr/bin/env ruby,#!/usr/bin/ruby,; s,^#! *[^ ]*/ruby,#!/usr/bin/ruby,' "$file" + done + # some windows made gems are broken + find $buildroot -type d | xargs ls -ld || : + find $buildroot -type f | xargs ls -l || : + chmod -R u+w $buildroot + chmod -R o-w $buildroot +fi + diff --git a/gemrc b/gemrc deleted file mode 100644 index 3da527e..0000000 --- a/gemrc +++ /dev/null @@ -1,11 +0,0 @@ ---- -:benchmark: false -install: --no-format-executable --no-user-install -:backtrace: true -:update_sources: true -format_executable: true -:verbose: true -update: --no-format-executable --no-user-install -:bulk_threshold: 1000 -:sources: -- https://rubygems.org diff --git a/generate_buildrequires.sh b/generate_buildrequires.sh new file mode 100644 index 0000000..be93e2a --- /dev/null +++ b/generate_buildrequires.sh @@ -0,0 +1,208 @@ +#!/bin/sh +# +# In the current package's specfile, updates a block delimited +# by "# BEGIN" / "# END" lines to contain BuildRequires: lines +# for each rubygem rpm (or rpm matching a given pattern) which +# has been built by the project. +# +# This gives us project-build-time dependency checking without the +# performance impact that specifying BuildRequires lines within +# each gem would cause. For more information, see: +# +# http://en.opensuse.org/openSUSE:Packaging_Ruby#Compensating_for_lack_of_BuildRequires +# +# Usage: +# ------ +# +# 1. Ensure you have an "all-rubygems-good" package or similar +# in your project. If in doubt, copy the one from +# devel:languages:ruby:extensions. +# +# 2. cd to a working copy +# +# If you're feeling lazy, you are probably fine skipping the next two +# steps. +# +# 3. Run this script with the -l option and make sure you understand +# any differences between each repository/arch combination in the +# numbers of matching gems found. +# +# 4. If you don't, run with -l REPO ARCH to compare individual lists +# of matching gems. +# +# 5. If you want a BuildRequires: list of matching gems from *all* +# repo/arch combinations, run again with no arguments. +# +# OR +# +# If you want a BuildRequires: list of matching gems from a specific +# repo/arch combinations, run again with REPO ARCH as arguments. +# +# 6. osc diff to review the changes to the spec file, then osc commit. + +me=`basename $0` + +DEFAULT_PATTERN="rubygem-" + +main () { + parse_opts "$@" + + if [ -z "$project" ]; then + project=$( osc info | sed -ne '/^Project name: / { s///; p }' ) + if [ -z "$project" ]; then + echo "Couldn't establish build service project name." >&2 + echo "Are you inside a package working directory?" >&2 + exit 1 + fi + fi + echo "Project: $project" + + case "$project" in + home:*:branches:*) + cat <&2 + +WARNING: you are running this in a branch. + +You probably need to specify the parent project via -P, +otherwise you may not get the dependencies you want. + +EOF + ;; + esac + + specfile=$( ls -1 *.spec ) + if ! [ -f "$specfile" ]; then + echo "Couldn't find spec file." >&2 + echo "Are you inside a package working directory?" >&2 + exit 1 + fi + + if [ -n "$list" ]; then + if [ -n "$repo" ]; then + get_buildrequires_lines "$repo" "$arch" + else + list_matches + fi + else + if [ -n "$repo" ]; then + get_buildrequires_lines "$repo" "$arch" | update_spec + else + find_all_matches | update_spec + fi + fi +} + +usage () { + # Call as: usage [EXITCODE] [USAGE MESSAGE] + exit_code=1 + if [[ "$1" == [0-9] ]]; then + exit_code="$1" + shift + fi + if [ -n "$1" ]; then + echo "$*" >&2 + echo + fi + + cat <&2 +Usage: $me [options] [REPOSITORY ARCH] +Options: + -h, --help Show this help and exit + -l, --list List matching rpms for the given repository / arch. + If no repository specified, show counts of matching + rpms per repository / arch. + -P, --project=PROJ Retrieve rpm lists from PROJ, not the current project. + -p, --pattern=PAT Set the pattern to match rpms by [$DEFAULT_PATTERN] +EOF + exit "$exit_code" +} + +parse_opts () { + list= + project= + pattern="$DEFAULT_PATTERN" + + while [ $# != 0 ]; do + case "$1" in + -h|--help) + usage 0 + ;; + -l|--list) + list=y + shift + ;; + -p|--pattern) + pattern="$2" + shift 2 + ;; + -P|--project) + project="$2" + shift 2 + ;; + -*) + usage "Unrecognised option: $1" + ;; + *) + break + ;; + esac + done + + if [ $# = 1 ]; then + usage "Insufficient arguments." + fi + + if [ $# -gt 2 ]; then + usage "Too many arguments." + fi + + repo="$1" + arch="$2" +} + +get_buildrequires_lines () { + repo="$1" arch="$2" + osc api "/build/$project/$repo/$arch/_repository" | \ + grep "binary .*filename=\"$pattern" | \ + sed -e 's,.* &2 + get_buildrequires_lines "$repo" "$arch" + done | sort -u +} + +edit_spec () { + sed -n -e '1,/BEGIN/p' $specfile + echo "# Automatically generated by $0" + echo "# on `date`" + echo "# See http://en.opensuse.org/openSUSE:Packaging_Ruby#Compensating_for_lack_of_BuildRequires" + cat + sed -n -e '/END/,$p' $specfile +} + +update_spec () { + if edit_spec > $specfile.new; then + mv $specfile.new $specfile + echo "Updated spec: $specfile" + else + echo "Failed to generate new spec file contents; aborting." >&2 + exit 1 + fi +} + +main "$@" diff --git a/generate_rubygemprovides.awk b/generate_rubygemprovides.awk new file mode 100644 index 0000000..2e444c9 --- /dev/null +++ b/generate_rubygemprovides.awk @@ -0,0 +1,58 @@ +#!/usr/bin/awk -f +# +# Generate 'Provides' for embedded rubygems +# +# Call-seq: +# generate_rubygemprovides.awk [ ] +# +# Provides: rubygem(:) = +# Provides: rubygem(::) = +# Provides: rubygem(::.) = +# Provides: rubygem(::.. +# Provides: rubygem(::) = +# Provides: rubygem() = +# Provides: rubygem- = +# Provides: rubygem- = - +# Provides: rubygem-() = - +# Provides: rubygem-- = +# Provides: rubygem--_ = +# Provides: rubygem--__ = +# Provides: rubygem--___ = + +BEGIN { + rbver = ARGV[1] + arch = ARGV[2] + name = ARGV[3] + major = ARGV[4] + minor = ARGV[5] + micro = ARGV[6] + tiny = ARGV[7] + + if (tiny != "") { + version = major "." minor "." micro "." tiny + } + else { + version = major "." minor "." micro + } + print "Provides: rubygem(" rbver ":" name ") = " version + print "Provides: rubygem(" rbver ":" name ":" major ") = " version + print "Provides: rubygem(" rbver ":" name ":" major "." minor ") = " version + print "Provides: rubygem(" rbver ":" name ":" major "." minor "." micro ") = " version + if (tiny != "") { + print "Provides: rubygem(" rbver ":" name ":" major "." minor "." micro "." tiny ") = " version + } + print "Provides: rubygem(" rbver ":" name ":" version ") = " version + print "Provides: rubygem(" name ") = " version + print "Provides: rubygem-" name " = " version +# not needed currently +# if ( arch == "x86_64") { +# print "Provides: rubygem-" name "(" arch ") = " version +# } + print "Provides: rubygem-" name "-" major " = " version + print "Provides: rubygem-" name "-" major "_" minor " = " version + print "Provides: rubygem-" name "-" major "_" minor "_" micro " = " version + if (tiny != "") { + print "Provides: rubygem-" name "-" major "_" minor "_" micro "_" tiny " = " version + } +} + diff --git a/ruby-1.9.2p290_tcl_no_stupid_rpaths.patch b/ruby-1.9.2p290_tcl_no_stupid_rpaths.patch new file mode 100644 index 0000000..3d279c7 --- /dev/null +++ b/ruby-1.9.2p290_tcl_no_stupid_rpaths.patch @@ -0,0 +1,15 @@ +Index: ext/tk/extconf.rb +=================================================================== +--- ext/tk/extconf.rb.orig ++++ ext/tk/extconf.rb +@@ -224,9 +224,7 @@ def get_shlib_path_head + + else + [ +- '/opt', '/pkg', '/share', +- '/usr/local/opt', '/usr/local/pkg', '/usr/local/share', '/usr/local', +- '/usr/opt', '/usr/pkg', '/usr/share', '/usr/contrib', '/usr' ++ '/usr' + ].each{|dir| + next unless File.directory?(dir) + diff --git a/ruby-2.1.0.tar.bz2 b/ruby-2.1.0.tar.bz2 new file mode 100644 index 0000000..8d19731 --- /dev/null +++ b/ruby-2.1.0.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d3f4ad5f619ec15229206b6667586dcec7cc986672c8fbb8558161ecf07e277 +size 12007442 diff --git a/ruby-rpmlintrc b/ruby-rpmlintrc new file mode 100644 index 0000000..89bc9cf --- /dev/null +++ b/ruby-rpmlintrc @@ -0,0 +1,2 @@ +addFilter("files-duplicate /usr/share/ri/.*") +addFilter("unexpanded-macro /usr/share/ri/.*") diff --git a/ruby.changes b/ruby.changes index 323a7be..6c15a8d 100644 --- a/ruby.changes +++ b/ruby.changes @@ -1,949 +1,69 @@ ------------------------------------------------------------------- -Sun Jan 12 19:02:38 UTC 2014 - coolo@suse.com +Sat Feb 1 11:51:30 UTC 2014 - coolo@suse.com -- disable format-executable. we only support one ruby at a time - (de facto) +- readd old macros - for now at least ------------------------------------------------------------------- -Wed Jan 8 20:06:35 UTC 2014 - kkaempf@suse.com +Fri Jan 31 10:22:24 UTC 2014 - kkaempf@suse.com -- Add gem_* to ruby.macros +- generate provides for embedded rubygems ------------------------------------------------------------------- -Mon Jan 6 16:39:40 UTC 2014 - coolo@suse.com +Thu Jan 30 14:29:36 UTC 2014 - kkaempf@suse.com -- switch to ruby 2.1 +- merged ruby-common ------------------------------------------------------------------- -Mon Jan 6 08:25:55 UTC 2014 - coolo@suse.com +Sun Jan 19 12:54:46 UTC 2014 - kkaempf@suse.com -- move update-alternative usage to main package +- new package split - only single Ruby version installable + ruby - binary + libruby2_1-2_0 - ruby runtime library + ruby-stdlib - ruby standard library + ruby-doc - ruby documentation + ruby-devel - ruby development ------------------------------------------------------------------- -Mon Aug 19 11:15:25 UTC 2013 - jmassaguerpla@suse.com +Sun Jan 19 12:53:57 UTC 2014 - kkaempf@suse.com -- fix Bug 834785 - VUL-0: ruby*: default /etc/gemrc uses http source - of gems instead of https +- revert the ruby split (ruby - ruby21) + rename ruby21 to ruby, integrate 'ruby' and 'ruby-common' ------------------------------------------------------------------- -Sat Jun 29 12:38:12 UTC 2013 - coolo@suse.com +Thu Jan 9 10:37:57 UTC 2014 - jreidinger@suse.com -- change too strict ruby20 requires with _ge +- remove part of rubygems1.5 patch that modify mkmf which is + already fixed upstream ------------------------------------------------------------------- -Wed Jun 26 15:01:32 UTC 2013 - coolo@suse.com +Wed Jan 8 20:03:32 UTC 2014 - kkaempf@suse.com -- use update-alternatives the right way - which is portable too +- fix rb_arch in spec: append -gnu +- fix native gem builds: create gem native extensions dir ------------------------------------------------------------------- -Tue Jun 25 09:02:48 UTC 2013 - coolo@suse.com +Mon Jan 6 08:31:16 UTC 2014 - coolo@suse.com -- remove --force usage in favor of portable rm (SLE11) +- initial version for ruby 2.1.0 - changes to Ruby 2.0: + VM (method cache) + RGenGC (See ko1’s RubyKaigi presentation and RubyConf 2013 presentation) + refinements #8481 #8571 + syntax changes + Rational/Complex Literal #8430 + def’s return value #3753 + Bignum + use GMP #8796 + String#scrub #8414 + Socket.getifaddrs #8368 + RDoc 4.1.0 and RubyGems 2.2.0 + “literal”.freeze is now optimized #9042 + add Exception#cause #8257 + update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc + remove curses #8584 -------------------------------------------------------------------- -Tue Jun 4 17:04:50 UTC 2013 - coolo@suse.com - -- use --force for update-alternatives - -------------------------------------------------------------------- -Sat Apr 27 16:25:12 UTC 2013 - coolo@suse.com - -- switch to ruby 2.0 default - -------------------------------------------------------------------- -Mon Jan 21 15:42:54 UTC 2013 - adrian@suse.de - -- buildignore rubygems package to avoid bootstrap problem - -------------------------------------------------------------------- -Tue Nov 13 14:14:27 UTC 2012 - coolo@suse.com - -- ruby-common no longer provides anything that ruby requires, - so remove it - -------------------------------------------------------------------- -Sat Nov 3 15:31:49 UTC 2012 - coolo@suse.com - -- buildignore own subpackages to avoid bootstrap problem - -------------------------------------------------------------------- -Mon Aug 6 10:30:08 UTC 2012 - coolo@suse.com - -- reenable rdoc generation, no need to differ from upstream there - -------------------------------------------------------------------- -Wed Aug 1 13:29:19 UTC 2012 - coolo@suse.com - -- add update-alternatives for ruby provided binaries - -------------------------------------------------------------------- -Wed Aug 1 12:07:35 UTC 2012 - coolo@suse.com - -- expand ruby19 gemspecs as provides automatically - -------------------------------------------------------------------- -Thu Jul 26 09:53:19 UTC 2012 - coolo@suse.com - -- remove rubygem-requires - rpm does it correctly - -------------------------------------------------------------------- -Thu Jul 26 07:36:15 UTC 2012 - coolo@suse.com - -- split out ruby-common into a package on its own - -------------------------------------------------------------------- -Wed Jul 25 14:52:49 UTC 2012 - coolo@suse.com - -- map the != operator to > - which might be wrong in 50% of all cases - -------------------------------------------------------------------- -Wed Jul 25 14:39:43 UTC 2012 - coolo@suse.com - -- require a patched rpm in case rpm does not have magic hooks - -------------------------------------------------------------------- -Wed Jul 25 12:17:02 UTC 2012 - coolo@suse.com - -- move the option parsing to a shell script that is able to do it - rightly (rpm macros are just *BAD*) - -------------------------------------------------------------------- -Wed Jul 25 11:09:28 UTC 2012 - coolo@suse.com - -- make the rubygemdeps a ruby script much more clever about gemspecs - -------------------------------------------------------------------- -Wed Jul 25 08:27:38 UTC 2012 - saschpe@suse.de - -- Another take on %gem_install, the version w/o passing parameters - seemed to be wrong - -------------------------------------------------------------------- -Wed Jul 25 05:54:25 UTC 2012 - coolo@suse.com - -- avoid *.gemspec, we get problems if we there are two - -------------------------------------------------------------------- -Tue Jul 24 15:24:43 UTC 2012 - coolo@suse.com - -- remove too relaxing permissions from unpacked archive - -------------------------------------------------------------------- -Tue Jul 24 14:55:31 UTC 2012 - coolo@suse.com - -- add a provides for ruby-macros - -------------------------------------------------------------------- -Tue Jul 24 14:36:38 UTC 2012 - saschpe@suse.de - -- Fix %gem_unpack: - Fetch Gemspec from gem metadata for gems that don't package Gemspecs - but generate them programatically - -------------------------------------------------------------------- -Tue Jul 17 14:15:42 UTC 2012 - saschpe@suse.de - -- Fix ruby(abi) requires generation, the path glob was to broad - -------------------------------------------------------------------- -Mon Jul 9 05:17:40 UTC 2012 - coolo@suse.com - -- rename $bin19 binaries to $bin - -------------------------------------------------------------------- -Wed Jul 4 08:59:02 UTC 2012 - saschpe@suse.de - -- Fix old-style %gem_install macro (missing parameter) - -------------------------------------------------------------------- -Tue Jul 3 08:02:01 UTC 2012 - saschpe@suse.de - -- Provide the following new RPM macros: - + %gem_unpack - + %gem_build - + %gem_install (retaining the old behavior) - -------------------------------------------------------------------- -Mon Jul 2 14:06:43 UTC 2012 - coolo@suse.com - -- add automatic provides and requires for rubygems - -------------------------------------------------------------------- -Tue Jun 19 10:10:00 UTC 2012 - coolo@suse.com - -- also add the old macro names as wrapper - -------------------------------------------------------------------- -Tue May 8 09:46:38 UTC 2012 - coolo@suse.com - -- make this package a wrapper around the default ruby - ruby19 for now - -------------------------------------------------------------------- -Mon Feb 13 10:54:34 UTC 2012 - coolo@suse.com - -- patch license to follow spdx.org standard - -------------------------------------------------------------------- -Thu Dec 29 01:40:14 UTC 2011 - mrueckert@suse.de - -- update to 1.8.7.p357 - - randomize hash to avoid algorithmic complexity attacks. - CVE-2011-4815 - - initialization of hash_seed to be at the beginning of the - process. - - initialize random seed at first. - - call OpenSSL::Random.seed at the SecureRandom.random_bytes - call. insert separators for array join. patch by Masahiro - Tomita. [ruby-dev:44270] - - mkconfig.rb: fix for continued lines. based on a patch from - Marcus Rueckert at [ruby-core:20420]. - - Infinity is greater than any bignum number. [ruby-dev:38672] - - initialize store->ex_data.sk. [ruby-core:28907] - [ruby-core:23971] [ruby-core:18121] - -------------------------------------------------------------------- -Thu Dec 1 17:03:34 UTC 2011 - coolo@suse.com - -- add automake as buildrequire to avoid implicit dependency - -------------------------------------------------------------------- -Thu Jul 7 13:02:17 UTC 2011 - mrueckert@suse.de - -- update to 1.8.7.p352 - - support for openssl compiled without SSLv2 - - multilib support for tk build - - some IPv6 related fixes - - zlib fixes - - reinitialize PRNG when forking children - - uri route_to fixes - - fix race condition with variables and autoload -- drop 1887f60a8540f64f5c7bb14d57c0be70506941b8.patch - included upstream -- drop ruby-1.8.7.p22_tcltk-multilib.patch - solved differently upstream - -------------------------------------------------------------------- -Fri May 20 13:26:07 UTC 2011 - mrueckert@suse.de - -- drop ruby-1.8.7.p299_webrick_error_page_encoding.patch: - we will stick to the upstream charset - -------------------------------------------------------------------- -Fri Mar 18 13:46:36 UTC 2011 - mrueckert@suse.de - -- added ruby-1.8.x_rubylibdir.patch: - allows us to also change the path for the stdlib part of the ruby - directory tree - -------------------------------------------------------------------- -Tue Feb 22 16:38:09 UTC 2011 - mrueckert@suse.de - -- update to 1.8.7.p334 (bnc#673740, bnc#673750, bnc#600752) - - A symlink race condition vulnerability was found in - FileUtils.remove_entry_secure. The vulnerability allows local - users to delete arbitrary files and directories. CVE-2011-1004 - - Exception#to_s method can be used to trick $SAFE check, which - makes a untrusted codes to modify arbitrary strings. - CVE-2011-1005 - - Ruby WEBrick character set issue (XSS) CVE-2010-0541 - - for all non security changes see - /usr/share/doc/packages/ruby/ChangeLog - -- refreshed ruby-1.8.x_openssl_branch_update.patch -- buildrequires openssl to make the last openssl test work -- https://github.com/ruby/ruby/commit/1887f60a8540f64f5c7bb14d57c0be70506941b8.patch - * ext/zlib/zlib.c (zstream_append_input2): add RB_GC_GUARD. - This caused failure when test/csv is executed with GC.stress = - true. -- added ruby-1.8.7.p334_remove_zlib_test_params_test.patch: - remove the test_params patch from backport in r27917 - It doesnt pass atm. -- removed ruby-1.8.6.p36_socket_ipv6.patch: - included upstream - -------------------------------------------------------------------- -Tue Sep 7 14:38:54 UTC 2010 - mrueckert@suse.de - -- the testsuite and doc-html package should of course require the - main package - -------------------------------------------------------------------- -Fri Jul 2 09:50:00 UTC 2010 - mrueckert@suse.de - -- add ruby(abi) = 1.8 provides - -------------------------------------------------------------------- -Thu Jul 1 15:27:17 UTC 2010 - mrueckert@suse.de - -- update to 1.8.7.p299 (bnc#606056 and bnc#603914) - - OpenSSL 1.0.0 support - - Use OpenSSL engines which exist - - Fixed range and chunked support for Net::HTTP - - Iconv fixes - - Backported pack/unpack from the 1.9 branch (bnc#606056 bnc#603914) - - Multiple fixes in the resolver - - Fixed Unicode inspection bug. - - Escape characters properly for the accesslog (bnc#570616) -- cleaned up rpmlintrc -- refreshed patches: - old: ruby-1.8.7.p22_lib64.patch - new: ruby-1.8.7.p299_lib64.patch - old: ruby_1.8.6.p36_date_remove_privat.patch - new: ruby-1.8.7.p299_date_remove_privat.patch - old: ruby-pedantic-headers.diff - new: ruby-1.8.7.p299_pedantic-headers.patch -- replaced patches ruby-1.8.x_openssl-1.0.patch and - ruby-1.8.x_openssl-1.0-tests.patch with - ruby-1.8.x_openssl_branch_update.patch - -------------------------------------------------------------------- -Wed May 19 14:44:51 UTC 2010 - mrueckert@suse.de - -- fix build on ix86: - --target got removed from the %configure macro. add it back - locally for now. - -------------------------------------------------------------------- -Thu Apr 22 22:06:56 UTC 2010 - mrueckert@suse.de - -- added ruby-1.8.x_openssl-1.0.patch and - ruby-1.8.x_openssl-1.0-tests.patch: - fix building with openssl 1.0.0 (taken from svn) -- added ruby-1.8.x_yaml2byte.patch: - fix warning about sequence point -- remove requires on glibc-devel again - -------------------------------------------------------------------- -Sat Mar 13 21:25:30 UTC 2010 - crrodriguez@opensuse.org - -- ruby-devel requires glibc-devel - -------------------------------------------------------------------- -Tue Feb 23 12:02:11 UTC 2010 - mrueckert@suse.de - -- added ruby-1.8.x_digest_non_void_return.patch: - patch pulled from SVN to fix the warnings about no return in - non-void functions. - -------------------------------------------------------------------- -Sun Jan 31 21:56:19 CET 2010 - meissner@suse.de - -- ruby calls "ppc" "powerpc". - -------------------------------------------------------------------- -Fri Jan 29 19:12:11 UTC 2010 - mrueckert@suse.de - -- update to 1.8.7p249 - small big fix release in the 1.8.7 branch, this includes the fix - for: - - ruby webrick doesn't sanitize non-printable characters in log - (bnc#570616) CVE-2009-4492 -- drop ruby-1.8.6.p36_gc.patch: solution is upstream - -------------------------------------------------------------------- -Thu Dec 17 00:42:51 CET 2009 - jengelh@medozas.de - -- package documentation as noarch -- adjust ruby.macros to ask the ruby binary for the target plaform. - This is because %_host_cpu can expand to sparc64, while ruby is - built for the sparcv9 target, and %_target_cpu can expand to - noarch. -- in ruby.spec, %rb_arch is statically reset to %_target_cpu, as - we need the target name. Since it won't be noarch in this case, - that is good. - -------------------------------------------------------------------- -Thu Aug 20 19:19:52 UTC 2009 - jansimon.moeller@opensuse.org - -- remove s/armv5tel/armv4l/ in macros as it breaks build for armv5tel - -------------------------------------------------------------------- -Fri Nov 21 20:37:17 CET 2008 - mrueckert@suse.de - -- add ruby-1.8.7-p72_topdir.patch: - Config::TOPDIR was broken on lib64 systems as the code was - assuming $prefix/lib. - -------------------------------------------------------------------- -Fri Nov 21 17:03:25 CET 2008 - mrueckert@suse.de - -- added more ruby macros in /etc/rpm/macros.ruby - -------------------------------------------------------------------- -Sat Sep 6 06:56:56 CEST 2008 - mrueckert@suse.de - -- update to 1.8.7p72 - vendor_ruby support now officially included - for all the changes since 1.8.6 see - /usr/share/doc/packages/ruby/NEWS -- dropped ruby-1.8.6_openssl_verify_host.patch - included in update -- updated patch for new release: - old name: ruby-1.8.6.p36_lib64.patch - new name: ruby-1.8.7.p22_lib64.patch -- updated patch for new release: - old name: ruby-1.8.6.p36_tcltk-multilib.patch - new name: ruby-1.8.7.p22_tcltk-multilib.patch -- dropped ruby-1.8.6.p111_vendor_ruby.patch - only one chunk survived as ruby-1.8.7-p72_vendor_specific.patch - - -------------------------------------------------------------------- -Fri May 16 15:06:51 CEST 2008 - mrueckert@suse.de - -- update to 1.8.6.p114 - bugfix release - - Fixes File access vulnerability of WEBrick (CVE-2008-1145) - (bnc#368618) - - ensure that the rss module adds the xml namespace - -------------------------------------------------------------------- -Thu Dec 6 22:14:44 CET 2007 - mrueckert@suse.de - -- update to 1.8.6.p111 - bugfix release. important changes: - - ssl fixes (see notes on the ssl patch below) - - fixes for the threads support - - various overflow checks - - safe_level improvements - - printf fixes - - imap fixes - for all the details see /usr/share/doc/packages/ruby/ChangeLog -- added ruby-1.8.6.p111_openssl_verify_host.patch: (#329706) - validate the hostname against the CN from the presented SSL - certificicate. This has been enabled for telnets, ftptls, imaps - and https. (CVE-2007-5162,CVE-2007-5770) - - For telnets and https the verification is done if the verify mode - is set to anything else than OpenSSL::SSL::VERIFY_NONE. - For ftptls it is always enabled. - For imaps it is checked if you enable verification. -- added support to build with bleak_house to allow better memleak - debugging. (requires additional package ruby-bleakhouse) -- updated ruby-1.8.6.p36_vendor_ruby.patch - new name ruby-1.8.6.p111_vendor_ruby.patch -- dropped ruby-1.8.6.p36_thread_prototype_and_testsuite.patch: - included in update - -------------------------------------------------------------------- -Thu Oct 11 11:56:16 CEST 2007 - dmueller@suse.de - -- fix headers to be compileable with -pedantic - -------------------------------------------------------------------- -Sun Aug 12 04:35:09 CEST 2007 - mrueckert@suse.de - -- added ruby_1.8.6.p36_date_remove_privat.patch: - Time.to_date() and Time.to_datetime() shouldnt be private. - -------------------------------------------------------------------- -Mon Aug 6 03:11:29 CEST 2007 - mrueckert@suse.de - -- added ruby-1.8.6.p36_thread_prototype_and_testsuite.patch: - pulled two fixes from the 1.8.6 branch: - * avoid executing shell in the testsuite - * moved definition of rb_thread_status() to avoid errors in C++ - extensions. - -------------------------------------------------------------------- -Sun Aug 5 22:35:36 CEST 2007 - mrueckert@suse.de - -- update to 1.8.6.p36: - many bugfixes and library updates. hilights: - === Library updates (outstanding ones only) - * date - * Updated based on date2 4.0.3. - * digest - * New internal APIs for C and Ruby. - * Support for autoloading. - * See below for new features and compatibility issues. - * nkf - * Updated based on nkf as of 2007-01-28. - * tk - * Tk::X_Scrollable (Y_Scrollable) is renamed to Tk::XScrollable - (YScrollable). Tk::X_Scrollable (Y_Scrollable) is still - available, but it is an alias name. - * Updated Tile extension support based on Tile 0.7.8. - * Support --without-X11 configure option for non-X11 versions - of Tcl/Tk (e.g. Tcl/Tk Aqua). - * New sample script: irbtkw.rbw -- IRB on Ruby/Tk. It has no - trouble about STDIN blocking on Windows. - === New methods and features - * builtin classes - * New method: Kernel#instance_variable_defined? - * New method: Module#class_variable_defined? - * New feature: Dir::glob() can now take an array of glob - patterns. - * digest - * New digest class methods: file - * New digest instance methods: clone, reset, new, - inspect, digest_length (alias size or length), - block_length() - * New library: digest/bubblebabble - * New function: Digest(name) - * fileutils - * New option for FileUtils.cp_r(): :remove_destination - * thread - * Replaced with much faster mutex implementation in C. The - former implementation is available with a configure option - `--disable-fastthread'. - * webrick - * New method: WEBrick::Cookie.parse_set_cookies() - === Compatibility issues (excluding feature bug fixes) - * builtin classes - * String#intern now raises SecurityError when $SAFE level is - greater than zero. - * fileutils - * A minor implementation change breaks Rake <=0.7.1. - Updating Rake to 0.7.2 fixes the problem. - * digest - * The constructor does no longer take an initial string to - feed; digest() and hexdigest() now do, instead. - For all details see the NEWS or ChangeLog file. -- rediffed patch ruby-1.8.2-gc.diff - new name ruby-1.8.6.p36_gc.patch -- rediffed patch ruby-1.8.2-tcltk-multilib.patch - new name ruby-1.8.6.p36_tcltk-multilib.patch -- rediffed patch ruby-socket_ipv6.patch - new name ruby-1.8.6.p36_socket_ipv6.patch -- rediffed patch ruby-1.8.5-vendor_ruby.patch - new name ruby-1.8.6.p36_vendor_ruby.patch -- rediffed patch ruby-1.8.5.p12-lib64.diff - new name ruby-1.8.6.p36_lib64.patch - -------------------------------------------------------------------- -Fri Mar 30 10:10:10 CEST 2007 - rguenther@suse.de - -- add bison BuildRequires -- add emacs site-lisp directories - -------------------------------------------------------------------- -Fri Mar 23 15:12:51 CET 2007 - rguenther@suse.de - -- add gdbm-devel BuildRequires - -------------------------------------------------------------------- -Mon Feb 12 16:53:19 CET 2007 - mrueckert@suse.de - -- update to 1.8.5-p12: - * stable version 1.8.5-p12 released. - * ext/tk/tcltklib.c: shouldn't run the killed thread at callback. - [ruby-talk: 227408] - * lib/rdoc/ri/ri_options.rb: prevent NameError. [ruby-dev:29597] - * dir.c (glob_helper): get rid of possible memory leak. - * win32/win32.c (cmdglob, rb_w32_cmdvector, rb_w32_opendir, - rb_w32_get_environ): not to use GC before initialization. - * configure.in (SITE_DIR): fixed to emtpy RUBY_SITE_LIB in - config.h on NetBSD. fixed: [ruby-dev:29358] - * parse.y (dyna_init_gen): dvar initialization only if dvar is - assigned inner block. [ruby-talk:227402] - * stable version 1.8.5-p2 released. - * lib/cgi.rb (CGI::QueryExtension::read_multipart): should - quote boundary. JVN#84798830 (BNC #225983) (CVE-2006-6303) - * bignum.c (bignorm): avoid segmentation. a patch from Hiroyuki - Ito . [ruby-list:43012] - * parse.y (primary): should set NODE even when compstmt is NULL. - merge from trunk. fixed: [ruby-dev:29732] - * lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content - may be empty. a patch from Jamis Buck . - * ext/dbm/extconf.rb: create makefile according to the result of - check for dbm header. fixed: [ruby-dev:29445] - * hash.c (rb_hash_s_create): fixed memory leak, based on the - patch by Kent Sibilev . - fixed: [ruby-talk:211233] -- rediffed ruby-1.8.1-lib64.diff - new name ruby-1.8.5.p12-lib64.diff -- patches included in the update: - cgi_multipart_eof_fix.patch - ruby-1.8.4-fix-alias-safe-level.patch - ruby-1.8.4-fix-insecure-dir-operation.patch - ruby-1.8.4-fix-insecure-regexp-modification.patch - ruby-1.8.4-no-eaccess.diff - ruby-1.8.4-warnings.patch - ruby-fix-autoconf-magic-code.patch -- added ruby-1.8.x-autoconf_2.61a.patch: - config.status changed to awk in 2.61a. adapt mkconfig.rb to the - new syntax. - -------------------------------------------------------------------- -Mon Oct 30 18:37:50 CET 2006 - mrueckert@suse.de - -- added cgi_multipart_eof_fix.patch: - fix for a denial of service condition in cgi.rb CVE-2006-5467 - (#214916) - -------------------------------------------------------------------- -Fri Oct 20 03:30:01 CEST 2006 - mrueckert@suse.de - -- run ldconfig -- add site_ruby and vendor_ruby arch directories to the filelist - -------------------------------------------------------------------- -Wed Sep 27 17:15:12 CEST 2006 - mrueckert@suse.de - -- added ruby-1.8.5-vendor_ruby.patch, site-specific.rb, vendor-specific.rb: - add vendor_ruby support. This is a small change for packager. - you can now run 'ruby -rvendor-specific extconf.rb' (or setup.rb) - and it will be automatically installed in - %{_libdir}/ruby/vendor_ruby. - -------------------------------------------------------------------- -Sat Aug 26 04:23:28 CEST 2006 - mrueckert@suse.de - -- Update to version 1.8.5: - o Non-blocking IO - | - Several methods backported from HEAD have been added: - | - BasicSocket?#recv_nonblock - | - IO#read_nonblock - | - IO#write_nonblock - | - Socket#accept_nonblock - | - Socket#connect_nonblock - | - Socket#recvfrom_nonblock - | - TCPServer#accept_nonblock - | - UDPSocket#recvfrom_nonblock - | - UNIXServer#accept_nonblock - | (see ruby-core:7917, ruby-core:7925). - | - o Process.getrlimit/setrlimit See ruby-dev:28729. - | - o Changes in rdoc/ri - | - lots of documentation added - | - RubyGems support: ri will search gem installation dirs for - | additional documentation - | - new options to limit the search path - | - o RSS - | - added RSS::RootElementMixin?#to_xml (ruby-talk:197284), which - | can be used to convert feeds to a different RSS version as - | follows: - | [[[ - | rss10 = RSS::Parser.parse(File.read("1.0.rdf")) - | File.open("2.0.rss", "w") {|f| f.print(rss10.to_xml("2.0"))} - | ]]] - | - Support for taxonomies added to the RSS parser and generator. - | - A number of convenience methods added - | - New style API for RSS generation ruby-talk:197284 - | [[[ - | The recommended style is nowxxx.new_yyy do |yyy| - | yyy.zzz = zzz - | ... - | end - | - | - | This corresponds to the following in pre-1.8.5: - | yyy = xxx.new_yyy - | yyy.zzz = zzz - | ]]] - o Misc - | - added Kernel.Pathname(path) - | - added Kernel#pretty_inspect - | - changes in the GC subsystem that result in better performance - | in some cases - | - added OptionParser?#getopts - | - the per-object overhead went down to 20 bytes on win32 - | (from 24) ruby-core:7474 - o What breaks (!!!) - | - Binding.of_caller, and therefore breakpoint (including Rails') - | - several problems in ri reported: the documentation for some - | methods seems to have disappeared, and several methods that - | should not be documented appear in the indices; - | see ruby-core:08709 - -- removed patches, which are included in 1.8.5: - ruby-1.8.4-fix-insecure-dir-operation.patch - ruby-1.8.4-fix-insecure-regexp-modification.patch - ruby-1.8.4-fix-alias-safe-level.patch -- updated ruby-1.8.4_linkerflags.patch. - new name ruby-1.8.5_linkerflags.patch - -------------------------------------------------------------------- -Mon Jul 31 15:59:55 CEST 2006 - mrueckert@suse.de - -- added ruby-fix-autoconf-magic-code.patch: - Fix for the latest changes in the autoconf code. - -------------------------------------------------------------------- -Mon Jul 31 15:43:29 CEST 2006 - mrueckert@suse.de - -- security fixes [CVE-2006-3694] [#193661] - * added ruby-1.8.4-fix-insecure-dir-operation.patch & - ruby-1.8.4-fix-insecure-regexp-modification.patch: - fix the insecure operations in the certain safe-level - restrictions. - * ruby-1.8.4-fix-alias-safe-level.patch: preserve safe level - restrictions when aliasing a function. - -------------------------------------------------------------------- -Mon Apr 10 18:19:13 CEST 2006 - mrueckert@suse.de - -- build with -fno-strict-aliasing -- enable more tests on ppc -- disable drb tests - -------------------------------------------------------------------- -Mon Apr 3 16:53:27 CEST 2006 - mrueckert@suse.de - -- reworked the ruby-1.8.4-no-eaccess.diff patch - it broke when build on old distros - -------------------------------------------------------------------- -Thu Jan 26 14:23:55 CET 2006 - mrueckert@suse.de - -- added upstream patch for eaccess -- disabled openssl tests on pcc - -------------------------------------------------------------------- -Wed Jan 25 21:43:32 CET 2006 - mrueckert@suse.de - -- added ruby-1.8.4_linkerflags.patch - patch removes -L. from the linker flags. - it seems libtool otherwise expands it to -L$PWD. - this leads to trouble with our build system. - -------------------------------------------------------------------- -Wed Jan 25 21:41:14 CET 2006 - mls@suse.de - -- converted neededforbuild to BuildRequires - -------------------------------------------------------------------- -Sun Jan 15 23:07:15 CET 2006 - kukuk@suse.de - -- Use eaccess() from glibc [#143291] - -------------------------------------------------------------------- -Sun Jan 15 13:43:18 CET 2006 - mrueckert@suse.de - -- disabled the big test suite as we trigger - a weird bug in the openssl bindings on ppc64 - -------------------------------------------------------------------- -Sat Dec 24 19:56:48 CET 2005 - mrueckert@suse.de - -- Update to 1.8.4 -- dont run with --default-kcode=utf8 - triggers a bug in the test suite - -------------------------------------------------------------------- -Fri Sep 23 00:28:37 CEST 2005 - mrueckert@suse.de - -- update to 1.8.3 -- updated patches for 1.8.3 -- ruby-doc tarball now included as tar.bz2 - -------------------------------------------------------------------- -Mon Sep 12 14:26:36 CEST 2005 - mrueckert@suse.de - -- fix path of the RI documentation [Bug #116408] - -------------------------------------------------------------------- -Thu Sep 8 16:05:04 CEST 2005 - mrueckert@suse.de - -- dont make the irb man page executable. [Bug #114849] - -------------------------------------------------------------------- -Tue Aug 23 10:47:04 CEST 2005 - mrueckert@suse.de - -- added directory entries for the site ruby dirs - -------------------------------------------------------------------- -Mon Aug 22 13:20:53 CEST 2005 - mrueckert@suse.de - -- disabled mkmf patch for now. it breaks building the socket - extension. - -------------------------------------------------------------------- -Sun Aug 21 19:11:41 CEST 2005 - ro@suse.de - -- added directories to filelist -- fix typo in filelist - -------------------------------------------------------------------- -Fri Aug 19 17:52:56 CEST 2005 - mrueckert@suse.de - -- Build RI and html documentation. Added subpackages for them. -- moved samples into a sub packages. -- build tcl/tk bindings and move them into their own package. - (ruby-1.8.2-tcltk-multilib.patch) -- disabled optimization on ia64/x86_x64. needs investigation. -- fixed parameter swap in memset call - (ruby-1.8.2-strscan-memset.patch) -- let mkmf create shared libraries (ruby-mkmf-shared.patch) -- splitted of devel files - -------------------------------------------------------------------- -Tue Jul 19 15:49:46 CEST 2005 - mge@suse.de - -- make "make test" run also on x86_64 by disabling - code optimization (-O0), as it is for ia64 -- enable "make test" for ppc64 again - -------------------------------------------------------------------- -Tue Jul 19 07:42:02 CEST 2005 - mge@suse.de - -- Fixes #95366, CAN-2005-1992: - arbitrary command execution on XMLRPC server - -------------------------------------------------------------------- -Wed Jun 1 17:42:21 CEST 2005 - ro@suse.de - -- update to 1.8.2 - -------------------------------------------------------------------- -Mon Jan 3 11:42:28 CET 2005 - mge@suse.de - -- added fixes for lib/cgi.rb and lib/cgi/session.rb - from ruby-1.8.2, fixes: #47886 (CAN-2004-0983) - -------------------------------------------------------------------- -Thu Nov 18 02:01:24 CET 2004 - ro@suse.de - -- fixed file list - -------------------------------------------------------------------- -Sat Sep 25 11:38:02 CEST 2004 - ro@suse.de - -- added cgi_session.diff (from debian, CAN-2004-0755) - -------------------------------------------------------------------- -Mon Jul 26 01:29:37 CEST 2004 - ro@suse.de - -- fix typo in specfile - -------------------------------------------------------------------- -Sun Jun 20 20:18:15 CEST 2004 - ro@suse.de - -- fix find in specfile - -------------------------------------------------------------------- -Thu Apr 29 01:32:40 CEST 2004 - ro@suse.de - -- added missing return value (unreached code) - -------------------------------------------------------------------- -Tue Mar 23 14:59:25 CET 2004 - mge@suse.de - -- make ruby build on ia64 and ppc64 - -------------------------------------------------------------------- -Sat Feb 28 17:16:10 CET 2004 - ro@suse.de - -- fix makefile rule for regenerating lex.c - -------------------------------------------------------------------- -Sat Feb 28 12:05:46 CET 2004 - ro@suse.de - -- add gperf to neededforbuild - -------------------------------------------------------------------- -Sat Feb 28 01:07:47 CET 2004 - ro@suse.de - -- fix requirement for /usr/local/bin -- use no-strict-aliasing - -------------------------------------------------------------------- -Mon Feb 2 12:37:24 CET 2004 - mge@suse.de - -- update to 1.8.1 - also fixes Bug #34226: Readline support missing from ruby - -------------------------------------------------------------------- -Sat Jan 10 22:03:01 CET 2004 - adrian@suse.de - -- add %defattr - -------------------------------------------------------------------- -Mon Aug 4 11:53:49 CEST 2003 - mge@suse.de - -- update tp 1.8.0 - -------------------------------------------------------------------- -Mon Jan 6 04:07:50 CET 2003 - mge@suse.de - -- update to 1.6.8 - -------------------------------------------------------------------- -Tue May 21 14:03:25 CEST 2002 - meissner@suse.de - -- More %_lib fixes inside package. - -------------------------------------------------------------------- -Tue May 21 11:38:41 CEST 2002 - meissner@suse.de - -- %_lib fixes -- Added prototype for rb_node_newnode. - -------------------------------------------------------------------- -Fri May 17 12:32:52 CEST 2002 - mge@suse.de - -- update to 1.6.7 - -------------------------------------------------------------------- -Mon Apr 15 01:44:30 CEST 2002 - bk@suse.de - -- lib64 and new arch fixes: suse_update_config and use %_libdir - -------------------------------------------------------------------- -Fri Apr 5 13:29:02 CEST 2002 - schwab@suse.de - -- Remove ia64 workaround. - -------------------------------------------------------------------- -Tue Aug 21 03:14:46 MEST 2001 - mge@suse.de - -- update to 1.6.4 - -------------------------------------------------------------------- -Sun May 20 21:37:19 MEST 2001 - mge@suse.de - -- changes _only_ to spec-file: -- make ruby shared libs built -- cleanup ruby directory structure (drop /usr/share/lib/ruby/) - -------------------------------------------------------------------- -Wed May 9 21:53:32 CEST 2001 - mfabian@suse.de - -- bzip2 sources - -------------------------------------------------------------------- -Thu Mar 22 01:49:00 MET 2001 - mge@suse.de - -- update to 1.6.3, merge of rread's SPEC patches - -------------------------------------------------------------------- -Mon Mar 19 16:04:24 CET 2001 - schwab@suse.de - -- Don't use __builtin_frame_address(2) on ia64. -- Compile with -O0 on ia64 to work around compiler bug. - -------------------------------------------------------------------- -Mon Mar 05 00:00:00 CET 2001 - rread@mountainviewdata.com - -- introduced build-root - -------------------------------------------------------------------- -Fri Feb 23 00:10:25 CET 2001 - ro@suse.de - -- added readline/readline-devel to neededforbuild (split from bash) - -------------------------------------------------------------------- -Fri Jan 12 18:22:32 MET 2001 - mge@suse.de - -- update to 1.6.2 - -------------------------------------------------------------------- -Wed Dec 13 13:21:15 CET 2000 - schwab@suse.de - -- Add %suse_update_config. -- Fix computation of stack limit. - -------------------------------------------------------------------- -Mon Dec 4 23:28:15 MET 2000 - mge@suse.de - -- update to 1.6.1, manual 1.4.6 - -------------------------------------------------------------------- -Thu Jul 6 13:30:35 MEST 2000 - mge@suse.de - -- initial SuSE RPM +- initial patches: + drop_content_size_check_in_xmlrpc.patch + ruby-1.9.2p290_tcl_no_stupid_rpaths.patch + ruby19-export_init_prelude.patch + rubygems-1.5.0_buildroot.patch diff --git a/ruby.macros b/ruby.macros index 1c269b2..cc6e5b3 100644 --- a/ruby.macros +++ b/ruby.macros @@ -1,48 +1,43 @@ -# -# Copyright (c) 2014 SUSE Linux -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +%rb_binary /usr/bin/ruby +%rb_arch %(%{rb_binary} -e 'print RUBY_PLATFORM') +%rb_ver %(%{rb_binary} -r rbconfig -e 'print RbConfig::CONFIG["ruby_version"]') # -%rb_binary %{rb21_binary} -%gem_binary /usr/bin/gem2.1 -%rb_arch %{rb21_arch} -%rb_ver %{rb21_ver} +## Base +# "rubylibprefix"=>"/usr/lib64/ruby", +%rb_dir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["rubylibprefix"]' ) +# "rubylibdir" =>"/usr/lib64/ruby/2.1.0", +%rb_libdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["rubylibdir"]' ) +# "archdir" =>"/usr/lib64/ruby/2.1.0/x86_64-linux", +%rb_archdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["archdir"]' ) -%rb_dir %{rb21_dir} -%rb_libdir %{rb21_libdir} -%rb_archdir %{rb21_archdir} +## Site +# "sitedir" =>"/usr/lib64/ruby/site_ruby", +%rb_sitedir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["sitedir"]' ) +# "sitelibdir" =>"/usr/lib64/ruby/site_ruby/2.1.0", +%rb_sitelibdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["sitelibdir"]' ) +# "sitearchdir" =>"/usr/lib64/ruby/site_ruby/2.1.0/x86_64-linux", +%rb_sitearchdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["sitearchdir"]' ) -%rb_sitedir %rb21_sitedir -%rb_sitelibdir %rb21_sitelibdir -%rb_sitearchdir %rb21_sitearchdir +## Vendor +# "vendordir" =>"/usr/lib64/ruby/vendor_ruby", +%rb_vendordir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["vendordir"]' ) +# "vendorlibdir" =>"/usr/lib64/ruby/vendor_ruby/2.1.0", +%rb_vendorlibdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["vendorlibdir"]' ) +# "vendorarchdir" =>"/usr/lib64/ruby/vendor_ruby/2.1.0/x86_64-linux", +%rb_vendorarchdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["vendorarchdir"]' ) -%rb_vendordir %rb21_vendordir -%rb_vendorlibdir %rb21_vendorlibdir -%rb_vendorarchdir %rb21_vendorarchdir +# backward compat +%rb_sitearch %{rb_sitearchdir} +%rb_sitelib %{rb_sitelibdir} +%rb_vendorlib %{rb_vendorlibdir} +%rb_vendorarch %{rb_vendorarchdir} +%gem_install /usr/lib/rpm/gem_install_wrapper.sh +%gem_cleanup /usr/bin/gem_build_cleanup %{buildroot}%{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_name}-%{version}/ -# old names -%rb_sitelib %rb21_sitelibdir -%rb_sitearch %rb21_sitearchdir -# -%rb_vendorlib %rb21_vendorlibdir -%rb_vendorarch %rb21_vendorarchdir +%gem_base %(%{rb_binary} -rrubygems -e 'print Gem::BasicSpecification.new.base_dir' ) +%gem_extensions %(%{rb_binary} -rrubygems -e 'print Gem::BasicSpecification.new.extensions_dir' ) +%gem_doc_ext %(%{rb_binary} -rrubygems -e 'bs = Gem::BasicSpecification.new; rp = bs.extensions_dir.rpartition(bs.base_dir); print rp[1]+"/doc"+rp[2]' ) +%gem_platform %(%{rb_binary} -rrubygems -r rbconfig -e 'print Gem::Platform.new(RbConfig::CONFIG["arch"]).to_s' ) diff --git a/ruby.rpm-macros b/ruby.rpm-macros new file mode 100644 index 0000000..a260233 --- /dev/null +++ b/ruby.rpm-macros @@ -0,0 +1,54 @@ +# %%gem_unpack macro unpacks a gem file into %%{_builddir} +# +# example: +# %prep +# %gem_unpack %{SOURCE0} +# %patch1 -p1 +# +%gem_unpack(s:) \ + source=%{-s:%{-s*}}%{!-s:%{SOURCE0}} \ + %{?gem_binary}%{!?gem_binary:/usr/bin/gem} unpack --verbose $source \ + cd %{mod_name}-%{version} \ + chmod og-w -R . \ + %{?gem_binary}%{!?gem_binary:/usr/bin/gem} specification --ruby $source > %{mod_name}-%{version}.gemspec \ +%{nil} + +# %%gem_build macro ... +# +%gem_build() \ +GEMSPEC_SOURCE_DIR=`find . -maxdepth 2 -type f -name %{mod_name}-%{version}.gemspec | xargs dirname` \ +cd $GEMSPEC_SOURCE_DIR && %{?gem_binary}%{!?gem_binary:/usr/bin/gem} build --verbose %{mod_name}-%{version}.gemspec \ +%{nil} + +# %%gem_install macro ... +# +# When invoked with a single parameter, the macro retains the old macro behavior, i.e. +# building the upstream gem directly in $RPM_BUILD_ROOT without unpacking to %{_builddir} first. +# +%gem_install /usr/lib/rpm/gem_install.sh --default-gem %{mod_name}-%{version}.gem --build-root %{buildroot} %{?gem_binary:--gem-binary %{gem_binary}} + +# we need to copy parts of the %fdupes macro as rpm can't expand parameters in macro "calls" ;( +%gem_cleanup() \ +/usr/lib/rpm/gem_build_cleanup.sh %{buildroot}%{_libdir}/ruby/gems/%{rb_ver}/ \ +fdupes -q -p -n -r %{buildroot}%{gem_base} | \ + while read _file; do \ + if test -z "$_target" ; then \ + _target="$_file"; \ + else \ + if test -z "$_file" ; then \ + _target=""; \ + continue ; \ + fi ; \ + ln -sf "${_target#%{buildroot}}" "$_file"; \ + fi ; \ + done \ +%{nil} + +# this is used in older gems - but it's pointless with newer ruby/rpm versions +%rubygems_requires %{nil} + +%gem_base %(%{rb_binary} -rrubygems -e 'print Gem::Specification.new.base_dir' ) +%gem_extensions %(%{rb_binary} -rrubygems -e 'print Gem::Specification.new.extensions_dir' || echo %{_libdir}/ruby/gems/%{rb_ver}/gems ) +%gem_doc_ext %(%{rb_binary} -r rubygems -e 'bs = Gem::Specification.new; rp = bs.extensions_dir.rpartition(bs.base_dir); print rp[1]+"/doc"+rp[2]' ) +%gem_platform %(%{rb_binary} -r rubygems -r rbconfig -e 'print Gem::Platform.new(RbConfig::CONFIG["arch"]).to_s' ) + diff --git a/ruby.spec b/ruby.spec index 2e08d8d..335dd00 100644 --- a/ruby.spec +++ b/ruby.spec @@ -17,26 +17,104 @@ Name: ruby -Version: 2.1 -Release: 0 -BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source0: ruby.macros -Source2: gemrc -Provides: /usr/bin/ruby -Url: http://www.ruby-lang.org/ -Summary: An Interpreted Object-Oriented Scripting Language -License: MIT -Group: Development/Languages/Ruby -BuildRequires: ruby-common -BuildRequires: ruby21-devel -BuildRequires: update-alternatives -#!BuildIgnore: ruby ruby-devel -#!BuildIgnore: rubygems -%requires_ge ruby21 -Provides: rubygems = 1.8.15 -Obsoletes: rubygems < 1.8.15 -%{expand:%(rpm -ql ruby21 | fgrep .gemspec | /usr/bin/ruby2.1 /usr/lib/rpm/rubygemsdeps.rb --provides | sed -e 's,^,Provides:,')} +#### +#!!! +#!!! 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 @@ -67,33 +145,284 @@ simple, straight-forward, and extensible. - 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} -Requires: ruby21-devel +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 -mkdir -p %{buildroot}%_libdir -ln -s %_libdir/libruby2.1.so %{buildroot}%_libdir/libruby.so -install -D -m 0644 %{S:0} %{buildroot}/etc/rpm/macros.ruby -install -D -m 0644 %{S:2} %{buildroot}/etc/gemrc +%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 /etc/gemrc -%config /etc/rpm/macros.ruby +%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 devel -%defattr(-,root,root) -%_libdir/libruby.so +%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 diff --git a/ruby19-export_init_prelude.patch b/ruby19-export_init_prelude.patch new file mode 100644 index 0000000..7d128ae --- /dev/null +++ b/ruby19-export_init_prelude.patch @@ -0,0 +1,25 @@ +Index: ruby-1.9.3-p194/include/ruby/ruby.h +=================================================================== +--- ruby-1.9.3-p194.orig/include/ruby/ruby.h ++++ ruby-1.9.3-p194/include/ruby/ruby.h +@@ -1225,6 +1225,7 @@ void ruby_init_stack(volatile VALUE*); + VALUE variable_in_this_stack_frame; \ + ruby_init_stack(&variable_in_this_stack_frame); + void ruby_init(void); ++void ruby_init_prelude(void); + void *ruby_options(int, char**); + int ruby_run_node(void *); + int ruby_exec_node(void *); +Index: ruby-1.9.3-p194/ruby.c +=================================================================== +--- ruby-1.9.3-p194.orig/ruby.c ++++ ruby-1.9.3-p194/ruby.c +@@ -1091,7 +1091,7 @@ proc_options(long argc, char **argv, str + return argc0 - argc; + } + +-static void ++void + ruby_init_prelude(void) + { + Init_prelude(); diff --git a/rubygems-1.5.0_buildroot.patch b/rubygems-1.5.0_buildroot.patch new file mode 100644 index 0000000..26eec82 --- /dev/null +++ b/rubygems-1.5.0_buildroot.patch @@ -0,0 +1,59 @@ +Index: lib/rubygems/dependency_installer.rb +=================================================================== +--- lib/rubygems/dependency_installer.rb.orig ++++ lib/rubygems/dependency_installer.rb +@@ -72,6 +72,7 @@ class Gem::DependencyInstaller + def initialize options = {} + @only_install_dir = !!options[:install_dir] + @install_dir = options[:install_dir] || Gem.dir ++ @build_root = options[:build_root] + + options = DEFAULT_OPTIONS.merge options + +@@ -382,6 +383,7 @@ class Gem::DependencyInstaller + :security_policy => @security_policy, + :user_install => @user_install, + :wrappers => @wrappers, ++ :build_root => @build_root, + :install_as_default => @install_as_default + } + options[:install_dir] = @install_dir if @only_install_dir +Index: lib/rubygems/installer.rb +=================================================================== +--- lib/rubygems/installer.rb.orig ++++ lib/rubygems/installer.rb +@@ -590,8 +590,17 @@ class Gem::Installer + # (or use) a new bin dir under the gem_home. + @bin_dir = options[:bin_dir] || Gem.bindir(gem_home) + @development = options[:development] ++ @build_root = options[:build_root] + + @build_args = options[:build_args] || Gem::Command.build_args ++ ++ unless @build_root.nil? ++ require 'pathname' ++ @build_root = Pathname.new(@build_root).expand_path ++ @bin_dir = File.join(@build_root, options[:bin_dir] || Gem.bindir(@gem_home)) ++ @gem_home = File.join(@build_root,@gem_home) ++ alert_warning "You build with buildroot.\n Build root: #{@build_root}\n Bin dir: #{@bin_dir}\n Gem home: #{@gem_home}" ++ end + end + + # DOC: Missing docs or :nodoc:. +Index: lib/rubygems/install_update_options.rb +=================================================================== +--- lib/rubygems/install_update_options.rb.orig ++++ lib/rubygems/install_update_options.rb +@@ -59,6 +59,12 @@ module Gem::InstallUpdateOptions + end + end + ++ add_option(:"Install/Update", '--build-root DIR', ++ 'Temporary installation root. Useful for building', ++ 'packages. Do not use this when installing remote gems.') do |value, options| ++ options[:build_root] = File.expand_path(value) ++ end ++ + add_option(:"Install/Update", '-N', '--no-document', + 'Disable documentation generation') do |value, options| + options[:document] = [] diff --git a/rubygems.attr b/rubygems.attr new file mode 100644 index 0000000..6004aac --- /dev/null +++ b/rubygems.attr @@ -0,0 +1,4 @@ +%__rubygems_requires %{_rpmconfigdir}/rubygemsdeps.rb --requires +%__rubygems_provides %{_rpmconfigdir}/rubygemsdeps.rb --provides +%__rubygems_path ^%{_libdir}/ruby/gems/[^/]*/specifications + diff --git a/rubygemsdeps.rb b/rubygemsdeps.rb new file mode 100644 index 0000000..8ebc9ed --- /dev/null +++ b/rubygemsdeps.rb @@ -0,0 +1,150 @@ +#!/usr/bin/ruby + +# Copyright (c) 2012 Stephan Kulow +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +require 'optparse' +require 'rubygems' +#require 'rubygems/format' +require 'rubygems/specification' + +opts = OptionParser.new("Usage: #{$0}") + +provides=false +opts.on("-P", "--provides", "Output the provides of the package") do |val| + provides=true +end +requires=false +opts.on("-R", "--requires", "Output the requires of the package") do |val| + requires=true +end +file_match=".*/gems/[^/]*/specifications/.*\.gemspec$" +opts.on("-m", "--file-match REGEX", String, + "Override the regex against which the input file names", + "matched with the supplied regex") do |val| + file_match=val +end +in_file=nil +opts.on("-g", "--gemspec FILE", String, + "Take gemspec from FILE, not filename in STDIN", + "Can be a .gem file or a .gemspec file") do |file| + in_file=file +end +rest = opts.permute(ARGV) + +unless provides || requires + exit(0) +end + +def fatal(msg) + $stderr.puts msg + exit 1 +end + +def register_gemspec_from_file(gemspecs, rubyabi, file) + fatal "Couldn't read '#{file}'" unless File.readable? file + + case file + when /\.gem$/ + gem = Gem::Format.from_file_by_path(file) + fatal "Failed to load gem from '#{file}'" unless gem + spec = gem.spec + when /\.gemspec$/ + spec = Gem::Specification.load(file) + fatal "Failed to load gem spec from '#{file}'" unless spec + else + fatal "'#{file}' must be a .gem or .gemspec file" + end + + gemspecs << [ rubyabi, spec ] +end + +def rubyabi_from_path(path) + m = path.match(%r{.*/gems/([^/]*)/.*}) + return m ? m[1] : RbConfig::CONFIG["ruby_version"] +end + +gemspecs = Array.new + +if in_file + # This mode will not be used during actual rpm builds, but only by + # gem packagers for debugging / diagnostics, so that they can + # predict in advance what the dependencies will look like. + rubyabi = rubyabi_from_path(in_file) || '$RUBYABI' + register_gemspec_from_file(gemspecs, rubyabi, in_file) +else + $stdin.each_line do |line| + line.chomp! + m = line.match(%r{#{file_match}$}) + if m + register_gemspec_from_file(gemspecs, rubyabi_from_path(line), line) + end + end +end + +gemspecs.each do |rubyabi, spec| + if provides + # old forms + puts "rubygem-#{spec.name} = #{spec.version}" + versions = spec.version.to_s.split('.') + puts "rubygem-#{spec.name}-#{versions[0]} = #{spec.version}" if versions.length > 0 + puts "rubygem-#{spec.name}-#{versions[0]}_#{versions[1]} = #{spec.version}" if versions.length > 1 + puts "rubygem-#{spec.name}-#{versions[0]}_#{versions[1]}_#{versions[2]} = #{spec.version}" if versions.length > 2 + + # version without ruby version - asking for trouble + puts "rubygem(#{spec.name}) = #{spec.version}" + if rubyabi + puts "rubygem(#{rubyabi}:#{spec.name}) = #{spec.version}" + puts "rubygem(#{rubyabi}:#{spec.name}:#{versions[0]}) = #{spec.version}" if versions.length > 0 + puts "rubygem(#{rubyabi}:#{spec.name}:#{versions[0]}.#{versions[1]}) = #{spec.version}" if versions.length > 1 + puts "rubygem(#{rubyabi}:#{spec.name}:#{versions[0]}.#{versions[1]}.#{versions[2]}) = #{spec.version}" if versions.length > 2 + end + end + + if requires + puts "ruby(abi) = #{rubyabi}" if rubyabi + puts "rubygems" if rubyabi.to_f < 1.9 + spec.runtime_dependencies.each do |dep| + dep.requirement.requirements.each do |r| + if r.first == '~>' + minversion = r.last.to_s.split('.') + versions = minversion[0,minversion.length-1] + # ~> 2 is pretty nonsense, so avoid being tricked + if versions.length > 0 + if minversion[minversion.length-1] == '0' + # ~> 1.2.0 is the same as >= 1.2 for rpm and it avoids problems when 1.2 is followed by 1.2.1 + minversion = versions + end + puts "rubygem(#{rubyabi}:#{dep.name}:#{versions.join('.')}) >= #{minversion.join('.')}" + else + puts "rubygem(#{rubyabi}:#{dep.name}) >= #{minversion.join('.')}" + end + elsif r.first == '!=' + # this is purely guessing, but we can't generate conflicts here ;( + puts "rubygem(#{rubyabi}:#{dep.name}) > #{r.last}" + #puts "rubygem(#{rubyabi}:#{dep.name}) < #{r.last}" + else + puts "rubygem(#{rubyabi}:#{dep.name}) #{r.first} #{r.last}" + end + end + end + end +end From f95eca6813c17c98d4169215306f407757946e2d1bf98f770a6f1698caf7ff64 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Tue, 4 Feb 2014 06:45:36 +0000 Subject: [PATCH 5/8] don't use macros in comments OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=71 --- ruby.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby.spec b/ruby.spec index 335dd00..2f25746 100644 --- a/ruby.spec +++ b/ruby.spec @@ -20,7 +20,7 @@ Name: ruby #### #!!! -#!!! when updating, check versions of embedded rubygems in %package stdlib below +#!!! when updating, check versions of embedded rubygems in package stdlib below #!!! #### From b81ea6e4c8b7e642a6f1cc4fd9393949a9b6ead3a883632ca53122b1d7d545b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= Date: Tue, 4 Feb 2014 10:37:24 +0000 Subject: [PATCH 6/8] fix 12.2 build OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=72 --- ruby.spec | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ruby.spec b/ruby.spec index 2f25746..e75a8ac 100644 --- a/ruby.spec +++ b/ruby.spec @@ -397,6 +397,16 @@ make check V=1 ||: %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,-) From 2106091d7a2dd87ffdb0cbf990c8a861dceada38a5759ba74d7e5e5754c773e4 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 7 Feb 2014 19:53:23 +0000 Subject: [PATCH 7/8] Accepting request 221227 from OBS:Server:Unstable - reintroduce update-alternatives for rake,rdoc and ri as those can come from more uptodate gems OBS-URL: https://build.opensuse.org/request/show/221227 OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=73 --- ruby.changes | 6 ++++++ ruby.spec | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/ruby.changes b/ruby.changes index 6c15a8d..3c5d5a2 100644 --- a/ruby.changes +++ b/ruby.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Feb 7 12:05:32 UTC 2014 - coolo@suse.com + +- reintroduce update-alternatives for rake,rdoc and ri as those + can come from more uptodate gems + ------------------------------------------------------------------- Sat Feb 1 11:51:30 UTC 2014 - coolo@suse.com diff --git a/ruby.spec b/ruby.spec index e75a8ac..1389653 100644 --- a/ruby.spec +++ b/ruby.spec @@ -92,6 +92,8 @@ Conflicts: ruby18 Conflicts: ruby19 Conflicts: ruby20 Requires: ruby-stdlib +PreReq: update-alternatives +BuildRequires: update-alternatives Provides: ruby-macros = %{rpm_macros_version} @@ -336,6 +338,27 @@ 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 @@ -353,6 +376,9 @@ make check V=1 ||: %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 @@ -361,6 +387,9 @@ make check V=1 ||: %{_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 From 34e0aa104c50857475b9e8905e9dd30fcd502dc9f09b2d2e45ee3443dcb3bc1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= Date: Mon, 10 Feb 2014 11:21:50 +0000 Subject: [PATCH 8/8] - Don't require rpm-with-ruby-provide-hook on SLE11. It's not a runtime requirement but a build-time requirement for rubygems in SLE11. Buildservice will take care of that. - reintroduce update-alternatives for rake, rdoc and ri as those OBS-URL: https://build.opensuse.org/package/show/devel:languages:ruby/ruby?expand=0&rev=74 --- ruby.changes | 9 ++++++++- ruby.spec | 4 ---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ruby.changes b/ruby.changes index 3c5d5a2..27a319f 100644 --- a/ruby.changes +++ b/ruby.changes @@ -1,7 +1,14 @@ +------------------------------------------------------------------- +Mon Feb 10 11:20:16 UTC 2014 - kkaempf@suse.com + +- Don't require rpm-with-ruby-provide-hook on SLE11. + It's not a runtime requirement but a build-time requirement for + rubygems in SLE11. Buildservice will take care of that. + ------------------------------------------------------------------- Fri Feb 7 12:05:32 UTC 2014 - coolo@suse.com -- reintroduce update-alternatives for rake,rdoc and ri as those +- reintroduce update-alternatives for rake, rdoc and ri as those can come from more uptodate gems ------------------------------------------------------------------- diff --git a/ruby.spec b/ruby.spec index 1389653..95e8101 100644 --- a/ruby.spec +++ b/ruby.spec @@ -83,10 +83,6 @@ 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