]> git.pld-linux.org Git - packages/subversion.git/commitdiff
add patch from fedora to build ruby bindings on ruby19
authorElan Ruusamäe <glen@delfi.ee>
Thu, 25 Apr 2013 22:04:20 +0000 (01:04 +0300)
committerElan Ruusamäe <glen@delfi.ee>
Thu, 25 Apr 2013 22:04:20 +0000 (01:04 +0300)
subversion-1.7.2-ruby19.patch [new file with mode: 0644]
subversion.spec

diff --git a/subversion-1.7.2-ruby19.patch b/subversion-1.7.2-ruby19.patch
new file mode 100644 (file)
index 0000000..794c663
--- /dev/null
@@ -0,0 +1,365 @@
+Date: Tue, 20 Dec 2011 21:08:00 -0800
+From: Vincent Batts <vbatts@slackware.com>
+Subject: Re: [PATCH] enabling ruby in the subversion build
+Message-ID: <20111221050800.GA17350@slackware.com>
+
+--- subversion-1.7.2/configure.ac.ruby19
++++ subversion-1.7.2/configure.ac
+@@ -1130,13 +1130,6 @@ if test "$RUBY" != "none"; then
+     AC_SUBST(RUBY_MAJOR)
+     AC_SUBST(RUBY_MINOR)
+-    if test ! \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -eq "8" \); then
+-      # Disallow Ruby 1.9 or later until the binding tests get fixed
+-      # to run with those versions.
+-      RUBY="none"
+-      AC_MSG_WARN([The detected Ruby is too new for Subversion to use])
+-      AC_MSG_WARN([Only 1.8.x releases are supported at this time])
+-    fi
+   else
+     AC_MSG_RESULT([no])
+     RUBY="none"
+--- subversion-1.7.2/Makefile.in.ruby19
++++ subversion-1.7.2/Makefile.in
+@@ -318,7 +318,7 @@ INSTALL_EXTRA_SWIG_RB=\
+     $(INSTALL_DATA) "$$i" $(DESTDIR)$(SWIG_RB_SITE_LIB_DIR)/svn; \
+   done
+-APXS = @APXS@ 
++APXS = @APXS@
+ PYTHON = @PYTHON@
+ PERL = @PERL@
+@@ -818,9 +818,14 @@ swig-rb: autogen-swig-rb
+ check-swig-rb: swig-rb svnserve
+       cd $(SWIG_RB_DIR); \
+-        $(RUBY) -I $(SWIG_RB_SRC_DIR) \
+-          $(SWIG_RB_SRC_DIR)/test/run-test.rb \
+-          --verbose=$(SWIG_RB_TEST_VERBOSE)
++        if [ "$(RUBY_MAJOR)" -eq 1 -a "$(RUBY_MINOR)" -lt 9 ] ; then \
++          $(RUBY) -I $(SWIG_RB_SRC_DIR) \
++            $(SWIG_RB_SRC_DIR)/test/run-test.rb \
++            --verbose=$(SWIG_RB_TEST_VERBOSE); \
++        else \
++          $(RUBY) -I $(SWIG_RB_SRC_DIR) \
++            $(SWIG_RB_SRC_DIR)/test/run-test.rb; \
++        fi
+ EXTRACLEAN_SWIG_RB=rm -f $(SWIG_RB_SRC_DIR)/svn_*.c $(SWIG_RB_SRC_DIR)/core.c
+--- subversion-1.7.2/subversion/bindings/swig/ruby/svn/info.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/svn/info.rb
+@@ -229,7 +229,9 @@ module Svn
+     def parse_diff_unified(entry)
+       in_content = false
+-      entry.body.each do |line|
++      # accomodation for ruby 1.9 and 1.8
++      each_meth = entry.body.respond_to?(:each_line) ? :each_line : :each
++      entry.body.send(each_meth) do |line|
+         case line
+         when /^@@/
+           in_content = true
+--- subversion-1.7.2/subversion/bindings/swig/ruby/svn/util.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/svn/util.rb
+@@ -36,7 +36,7 @@ module Svn
+   module Util #:nodoc:
+     module_function
+     def to_ruby_class_name(name)
+-      name.split("_").collect do |x|
++      name.to_s.split("_").collect do |x|
+         "#{x[0,1].upcase}#{x[1..-1].downcase}"
+       end.join("")
+     end
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/my-assertions.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/my-assertions.rb
+@@ -24,20 +24,33 @@ module Test
+   module Unit
+     module Assertions
++      # make an intermediary assertion block handler
++      def _my_assert_block(&block)
++      if RUBY_VERSION > '1.9'
++        assert_block do
++          yield
++        end
++      else
++        _wrap_assertion do
++          yield
++        end
++      end
++      end
++
+       def assert_true(boolean, message=nil)
+-        _wrap_assertion do
++        _my_assert_block do
+           assert_equal(true, boolean, message)
+         end
+       end
+       def assert_false(boolean, message=nil)
+-        _wrap_assertion do
++        _my_assert_block do
+           assert_equal(false, boolean, message)
+         end
+       end
+       def assert_nested_sorted_array(expected, actual, message=nil)
+-        _wrap_assertion do
++        _my_assert_block do
+           assert_equal(expected.collect {|elem| elem.sort},
+                        actual.collect {|elem| elem.sort},
+                        message)
+@@ -45,7 +58,7 @@ module Test
+       end
+       def assert_equal_log_entries(expected, actual, message=nil)
+-        _wrap_assertion do
++        _my_assert_block do
+           actual = actual.collect do |entry|
+             changed_paths = entry.changed_paths
+             changed_paths.each_key do |path|
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test_client.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test_client.rb
+@@ -2203,7 +2203,11 @@ class SvnClientTest < Test::Unit::TestCa
+     make_context(log) do |ctx|
+       items = nil
+-      ctx.set_log_msg_func do |items|
++      ctx.set_log_msg_func do |l_items|
++      # ruby 1.8 magically carried the assignment of 'items' back from this Proc block, 
++        # but in 1.9, we need to have names that don't conflict, and set the outside 'items'.
++        # This works in 1.8 as well
++        items = l_items
+         [true, log]
+       end
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test_core.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test_core.rb
+@@ -1,3 +1,4 @@
++# encoding: UTF-8
+ # ====================================================================
+ #    Licensed to the Apache Software Foundation (ASF) under one
+ #    or more contributor license agreements.  See the NOTICE file
+@@ -52,7 +53,13 @@ class SvnCoreTest < Test::Unit::TestCase
+     now = Time.now.gmtime
+     str = now.strftime("%Y-%m-%dT%H:%M:%S.") + "#{now.usec}Z"
+-    assert_equal(now, Time.from_svn_format(str))
++    if RUBY_VERSION > '1.9'
++      # ruby 1.9 Time comparison gets into the nano-seconds, that strftime
++      # shaves off. So we can compare epoch time instead
++      assert_equal(now.to_i, Time.from_svn_format(str).gmtime.to_i)
++    else
++      assert_equal(now, Time.from_svn_format(str).gmtime)
++    end
+     apr_time = now.to_i * 1000000 + now.usec
+     assert_equal(apr_time, now.to_apr_time)
+@@ -244,7 +251,11 @@ class SvnCoreTest < Test::Unit::TestCase
+       config_infos << [section, name, value]
+     end
+     assert_equal(infos.sort, config_infos.sort)
+-    assert_equal(infos.sort, config.collect {|args| args}.sort)
++    if RUBY_VERSION > '1.9'
++      assert_equal(infos.sort, config.collect {|sect,name,val| [sect,name,val]}.sort)
++    else
++      assert_equal(infos.sort, config.collect {|args| args}.sort)
++    end
+   end
+   def test_config_find_group
+@@ -532,7 +543,13 @@ EOD
+     date_str = now.strftime("%Y-%m-%dT%H:%M:%S")
+     date_str << ".#{now.usec}Z"
+     info.date = date_str
+-    assert_equal(now, info.date)
++    if RUBY_VERSION > '1.9'
++      # ruby 1.9 Time comparison gets into the nano-seconds, that strftime
++      # shaves off. So we can compare epoch time instead
++      assert_equal(now.to_i, info.date.gmtime.to_i)
++    else
++      assert_equal(now, info.date.gmtime)
++    end
+   end
+   def test_svn_prop
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test_delta.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test_delta.rb
+@@ -17,9 +17,10 @@
+ #    under the License.
+ # ====================================================================
++require "my-assertions"
+ require "util"
+ require "stringio"
+-require 'md5'
++require 'digest/md5'
+ require 'tempfile'
+ require "svn/info"
+@@ -46,8 +47,8 @@ class SvnDeltaTest < Test::Unit::TestCas
+     target = StringIO.new(t)
+     stream = Svn::Delta::TextDeltaStream.new(source, target)
+     assert_nil(stream.md5_digest)
+-    _wrap_assertion do
+-      stream.each do |window|
++    _my_assert_block do
++      ret = stream.each do |window|
+         window.ops.each do |op|
+           op_size = op.offset + op.length
+           case op.action_code
+@@ -62,8 +63,9 @@ class SvnDeltaTest < Test::Unit::TestCas
+           end
+         end
+       end
++      true if RUBY_VERSION > '1.9' # this block returns nil in > ruby '1.9'
+     end
+-    assert_equal(MD5.new(t).hexdigest, stream.md5_digest)
++    assert_equal(Digest::MD5.hexdigest(t), stream.md5_digest)
+   end
+   def test_txdelta_window_compose
+@@ -81,7 +83,7 @@ class SvnDeltaTest < Test::Unit::TestCas
+       end
+     end
+-    _wrap_assertion do
++    assert_block do
+       composed_window.ops.each do |op|
+         op_size = op.offset + op.length
+         case op.action_code
+@@ -169,6 +171,7 @@
+     stream = Svn::Delta::TextDeltaStream.new(source, target)
+     output = StringIO.new("")
++    output.set_encoding Encoding::ASCII_8BIT if output.respond_to? :set_encoding
+     handler = Svn::Delta.svndiff_handler(output)
+     Svn::Delta.send(target_text, handler)
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test_fs.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test_fs.rb
+@@ -20,7 +20,7 @@
+ require "my-assertions"
+ require "util"
+ require "time"
+-require "md5"
++require "digest/md5"
+ require "svn/core"
+ require "svn/fs"
+@@ -49,14 +49,15 @@ class SvnFsTest < Test::Unit::TestCase
+     assert(!File.exist?(path))
+     fs = nil
+-    callback = Proc.new do |fs|
++    callback = Proc.new do |t_fs|
+       assert(File.exist?(path))
+       assert_equal(fs_type, Svn::Fs.type(path))
+-      fs.set_warning_func do |err|
++      t_fs.set_warning_func do |err|
+         p err
+         abort
+       end
+-      assert_equal(path, fs.path)
++      assert_equal(path, t_fs.path)
++      fs = t_fs
+     end
+     yield(:create, [path, config], callback)
+@@ -162,7 +163,7 @@ class SvnFsTest < Test::Unit::TestCase
+       assert_equal(src, @fs.root.file_contents(path_in_repos){|f| f.read})
+       assert_equal(src.length, @fs.root.file_length(path_in_repos))
+-      assert_equal(MD5.new(src).hexdigest,
++      assert_equal(Digest::MD5.hexdigest(src),
+                    @fs.root.file_md5_checksum(path_in_repos))
+       assert_equal([path_in_repos], @fs.root.paths_changed.keys)
+@@ -364,7 +365,7 @@ class SvnFsTest < Test::Unit::TestCase
+       File.open(path, "w") {|f| f.print(modified)}
+       @fs.transaction do |txn|
+-        checksum = MD5.new(normalize_line_break(result)).hexdigest
++        checksum = Digest::MD5.hexdigest(normalize_line_break(result))
+         stream = txn.root.apply_text(path_in_repos, checksum)
+         stream.write(normalize_line_break(result))
+         stream.close
+@@ -392,8 +393,8 @@ class SvnFsTest < Test::Unit::TestCase
+       File.open(path, "w") {|f| f.print(modified)}
+       @fs.transaction do |txn|
+-        base_checksum = MD5.new(normalize_line_break(src)).hexdigest
+-        checksum = MD5.new(normalize_line_break(result)).hexdigest
++        base_checksum = Digest::MD5.hexdigest(normalize_line_break(src))
++        checksum = Digest::MD5.hexdigest(normalize_line_break(result))
+         handler = txn.root.apply_textdelta(path_in_repos,
+                                            base_checksum, checksum)
+         assert_raises(Svn::Error::ChecksumMismatch) do
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test_repos.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test_repos.rb
+@@ -98,11 +98,12 @@ class SvnReposTest < Test::Unit::TestCas
+     fs_type = Svn::Fs::TYPE_FSFS
+     fs_config = {Svn::Fs::CONFIG_FS_TYPE => fs_type}
+     repos = nil
+-    Svn::Repos.create(tmp_repos_path, {}, fs_config) do |repos|
++    Svn::Repos.create(tmp_repos_path, {}, fs_config) do |t_repos|
+       assert(File.exist?(tmp_repos_path))
+-      fs_type_path = File.join(repos.fs.path, Svn::Fs::CONFIG_FS_TYPE)
++      fs_type_path = File.join(t_repos.fs.path, Svn::Fs::CONFIG_FS_TYPE)
+       assert_equal(fs_type, File.open(fs_type_path) {|f| f.read.chop})
+-      repos.fs.set_warning_func(&warning_func)
++      t_repos.fs.set_warning_func(&warning_func)
++      repos = t_repos
+     end
+     assert(repos.closed?)
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test-unit-ext/priority.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test-unit-ext/priority.rb
+@@ -179,7 +179,7 @@ module Test
+         apply_priority
+         !@tests.empty?
+       end
+-    end
++    end if RUBY_VERSION < '1.9.3'
+     class AutoRunner
+       alias_method :original_options, :options
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test-unit-ext.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test-unit-ext.rb
+@@ -17,7 +17,7 @@
+ #    under the License.
+ # ====================================================================
+-require "test-unit-ext/always-show-result"
++require "test-unit-ext/always-show-result" if RUBY_VERSION < '1.9.3'
+ require "test-unit-ext/priority"
+-require "test-unit-ext/backtrace-filter"
+-require "test-unit-ext/long-display-for-emacs"
++require "test-unit-ext/backtrace-filter" if RUBY_VERSION < '1.9.3'
++require "test-unit-ext/long-display-for-emacs" if RUBY_VERSION < '1.9.3'
+--- subversion-1.7.2/subversion/bindings/swig/ruby/test/test_wc.rb.ruby19
++++ subversion-1.7.2/subversion/bindings/swig/ruby/test/test_wc.rb
+@@ -530,7 +530,7 @@ EOE
+       ctx.ci(lf_path)
+       Svn::Wc::AdmAccess.open(nil, @wc_path, true, 5) do |access|
+-        _wrap_assertion do
++        _my_assert_block do
+           File.open(src_path, "wb") {|f| f.print(source)}
+           args = [method_name, src_path, crlf_path, Svn::Wc::TRANSLATE_FROM_NF]
+           result = yield(access.send(*args), source)
+@@ -1084,7 +1084,11 @@ EOE
+         assert_not_nil context
+         assert_kind_of Svn::Wc::Context, context
+       end
+-      assert_nil result;
++      if RUBY_VERSION > '1.9'
++        assert_equal(result,true)
++      else
++        assert_nil result
++      end
+     end
+   end
index 4f2601149e2faf514899ec71789940e017e06152..cdc10ba5d850e79032e2ce4ebb20759fe34ac6e8 100644 (file)
@@ -8,7 +8,7 @@
 %bcond_without python                  # build without Python bindings (broken)
 %bcond_without csvn                    # build Python csvn bindings
 %bcond_without perl                    # build without Perl bindings
-%bcond_with    ruby                    # build with Ruby bindings (only 1.8.x is supported)
+%bcond_without ruby                    # build without Ruby bindings
 %bcond_without apache                  # build without Apache support (webdav, etc)
 %bcond_without javahl                  # build without javahl support (Java high-level bindings)
 %bcond_without tests                   # don't perform "make check"
@@ -72,6 +72,7 @@ Patch0:               %{name}-home_etc.patch
 Patch1:                %{name}-DESTDIR.patch
 Patch2:                %{name}-ruby-datadir-path.patch
 Patch3:                %{name}-tests.patch
+Patch4:                subversion-1.7.2-ruby19.patch
 URL:           http://subversion.apache.org/
 %{?with_apache:BuildRequires:  apache-devel >= 2.2.0-8}
 BuildRequires: apr-devel >= 1:1.0.0
@@ -117,7 +118,6 @@ BuildRequires:      python-devel >= 1:2.4
 BuildRequires: swig-python >= 1.3.24
 %endif
 %if %{with ruby}
-BuildRequires: ruby-devel < 1:1.9
 BuildRequires: ruby-devel >= 1:1.8.2
 BuildRequires: ruby-rubygems
 BuildRequires: swig-ruby >= 1.3.24
@@ -446,6 +446,7 @@ uwierzytelniać się przy użyciu Portfela KDE.
 %patch1 -p1
 %patch2 -p0
 %patch3 -p1
+%patch4 -p1
 
 sed -i -e 's#serf_prefix/lib#serf_prefix/%{_lib}#g' build/ac-macros/serf.m4
 
@@ -586,10 +587,8 @@ install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig,bash_completion.d} \
        install-swig-rb install-swig-rb-doc \
 
 # not our package
-%{__rm} -r $RPM_BUILD_ROOT%{ruby_ridir}/Kernel
 %{__rm} -r $RPM_BUILD_ROOT%{ruby_ridir}/OptionParser
 %{__rm} -r $RPM_BUILD_ROOT%{ruby_ridir}/Time
-%{__rm} -r $RPM_BUILD_ROOT%{ruby_ridir}/Uconv
 %{__rm} $RPM_BUILD_ROOT%{ruby_ridir}/cache.ri
 %{__rm} $RPM_BUILD_ROOT%{ruby_ridir}/created.rid
 %endif
This page took 0.100426 seconds and 4 git commands to generate.