packages: swig/swig-ruby1.9.patch (NEW) - fixes for ruby 1.9 from trunk
baggins
baggins at pld-linux.org
Tue Mar 2 17:01:04 CET 2010
Author: baggins Date: Tue Mar 2 16:01:04 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- fixes for ruby 1.9 from trunk
---- Files affected:
packages/swig:
swig-ruby1.9.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/swig/swig-ruby1.9.patch
diff -u /dev/null packages/swig/swig-ruby1.9.patch:1.1
--- /dev/null Tue Mar 2 17:01:04 2010
+++ packages/swig/swig-ruby1.9.patch Tue Mar 2 17:00:58 2010
@@ -0,0 +1,288 @@
+--- swig/configure.in
++++ swig/configure.in
+@@ -1264,6 +1264,10 @@ if test -n "$RUBY"; then
+ fi
+ done
+ if test "$RUBYINCLUDE" = none; then
++ RUBYINCLUDE=`($RUBY -rmkmf -e 'puts "-I#$hdrdir/#{CONFIG["arch"]} -I#$hdrdir/ruby/backward -I#$hdrdir"') 2>/dev/null`
++ AC_MSG_RESULT($RUBYINCLUDE)
++ fi
++ if test "$RUBYINCLUDE" = none; then
+ RUBYINCLUDE="-I$RUBYDIR"
+ AC_MSG_RESULT(could not locate ruby.h...using $RUBYINCLUDE)
+ fi
+@@ -1275,7 +1279,7 @@ if test -n "$RUBY"; then
+ rb_bindir=`($RUBY -rrbconfig -e 'print Config::CONFIG[["bindir"]]') 2>/dev/null`
+ dirs="$dirs $rb_libdir $rb_bindir"
+
+- rb_libruby=`($RUBY -rrbconfig -e 'print Config::CONFIG[["LIBRUBY_A"]]') 2>/dev/null`
++ rb_libruby=`($RUBY -rrbconfig -e 'print Config::CONFIG[["LIBRUBY_SO"]]') 2>/dev/null`
+ RUBYLINK=`($RUBY -rrbconfig -e '
+ c = Config::CONFIG
+ if c.has_key? "LIBRUBYARG_STATIC" # 1.8.x
+--- rel-1.3.40/Lib/ruby/director.swg 2010-03-02 15:51:00.312186877 +0100
++++ trunk/Lib/ruby/director.swg 2010-03-02 15:26:03.482124438 +0100
+@@ -1,7 +1,4 @@
+ /* -----------------------------------------------------------------------------
+- * See the LICENSE file for information on copyright, usage and redistribution
+- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
+- *
+ * director.swg
+ *
+ * This file contains support for director classes that proxy
+@@ -176,7 +173,7 @@
+ try {
+ throw;
+ } catch (DirectorException& e) {
+- std::cerr << "Swig Director exception caught:" << std::endl
++ std::cerr << "SWIG Director exception caught:" << std::endl
+ << e.getMessage() << std::endl;
+ } catch (std::exception& e) {
+ std::cerr << "std::exception caught: "<< e.what() << std::endl;
+@@ -212,12 +209,12 @@
+ class DirectorTypeMismatchException : public Swig::DirectorException {
+ public:
+ DirectorTypeMismatchException(VALUE error, const char *msg="")
+- : Swig::DirectorException(error, "Swig director type mismatch", msg)
++ : Swig::DirectorException(error, "SWIG director type mismatch", msg)
+ {
+ }
+
+ DirectorTypeMismatchException(const char *msg="")
+- : Swig::DirectorException(rb_eTypeError, "Swig director type mismatch", msg)
++ : Swig::DirectorException(rb_eTypeError, "SWIG director type mismatch", msg)
+ {
+ }
+
+@@ -238,7 +235,7 @@
+ }
+
+ DirectorMethodException(const char* msg = "")
+- : Swig::DirectorException(rb_eRuntimeError, "Swig director method error.", msg) {
++ : Swig::DirectorException(rb_eRuntimeError, "SWIG director method error.", msg) {
+ }
+
+ static void raise(VALUE error)
+@@ -252,7 +249,7 @@
+ {
+ public:
+ DirectorPureVirtualException(const char* msg = "")
+- : DirectorException(rb_eRuntimeError, "Swig director pure virtual method called", msg)
++ : DirectorException(rb_eRuntimeError, "SWIG director pure virtual method called", msg)
+ {
+ }
+
+--- rel-1.3.40/Lib/ruby/rubycontainer.swg 2010-03-02 15:51:00.224192289 +0100
++++ trunk/Lib/ruby/rubycontainer.swg 2010-03-02 15:26:03.464124391 +0100
+@@ -1,7 +1,4 @@
+ /* -----------------------------------------------------------------------------
+- * See the LICENSE file for information on copyright, usage and redistribution
+- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
+- *
+ * rubycontainer.swg
+ *
+ * Ruby sequence <-> C++ container wrapper
+@@ -446,11 +443,10 @@
+ %typemap(out,noblock=1,fragment="RubySequence_Cont")
+ std::pair<const_iterator, const_iterator> {
+ $result = rb_ary_new2(2);
+- RARRAY_PTR($result)[0] = SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).first),
+- swig::ConstIterator::descriptor(),SWIG_POINTER_OWN);
+- RARRAY_PTR($result)[1] = SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).second),
+- swig::ConstIterator::descriptor(),SWIG_POINTER_OWN);
+- RARRAY_LEN($result) = 2;
++ rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).first),
++ swig::ConstIterator::descriptor(),SWIG_POINTER_OWN));
++ rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).second),
++ swig::ConstIterator::descriptor(),SWIG_POINTER_OWN));
+ }
+
+ // std::map/multimap/set allow returning std::pair< iterator, iterator > from
+@@ -459,11 +455,10 @@
+ %typemap(out,noblock=1,fragment="RubySequence_Cont")
+ std::pair<iterator, iterator> {
+ $result = rb_ary_new2(2);
+- RARRAY_PTR($result)[0] = SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).first),
+- swig::ConstIterator::descriptor(),SWIG_POINTER_OWN);
+- RARRAY_PTR($result)[1] = SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).second),
+- swig::ConstIterator::descriptor(),SWIG_POINTER_OWN);
+- RARRAY_LEN($result) = 2;
++ rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).first),
++ swig::ConstIterator::descriptor(),SWIG_POINTER_OWN));
++ rb_ary_push($result, SWIG_NewPointerObj(swig::make_const_iterator(%static_cast($1,const $type &).second),
++ swig::ConstIterator::descriptor(),SWIG_POINTER_OWN));
+ }
+
+
+@@ -566,7 +561,8 @@
+ {
+ Sequence::const_iterator i = $self->begin();
+ Sequence::const_iterator e = $self->end();
+- VALUE str = rb_str_new2( swig::type_name< Sequence >() );
++ const char *type_name = swig::type_name< Sequence >();
++ VALUE str = rb_str_new2(type_name);
+ str = rb_str_cat2( str, " [" );
+ bool comma = false;
+ VALUE tmp;
+@@ -930,7 +926,7 @@
+ }
+ catch( std::invalid_argument )
+ {
+- rb_raise( rb_eArgError,
++ rb_raise( rb_eArgError, "%s",
+ Ruby_Format_TypeError( "",
+ swig::type_name<Sequence::value_type>(),
+ __FUNCTION__, idx+2, elem ));
+@@ -957,7 +953,7 @@
+ }
+ catch( std::invalid_argument )
+ {
+- rb_raise( rb_eArgError,
++ rb_raise( rb_eArgError, "%s",
+ Ruby_Format_TypeError( "",
+ swig::type_name<Sequence::value_type>(),
+ __FUNCTION__, idx+2, elem ));
+@@ -1012,7 +1008,7 @@
+ if (seq) {
+ VALUE lastErr = rb_gv_get("$!");
+ if (lastErr == Qnil) {
+- rb_raise(rb_eTypeError, e.what());
++ rb_raise(rb_eTypeError, "%s", e.what());
+ }
+ }
+ return SWIG_ERROR;
+@@ -1052,7 +1048,7 @@
+ if (seq) {
+ VALUE lastErr = rb_gv_get("$!");
+ if (lastErr == Qnil) {
+- rb_raise(rb_eTypeError, e.what());
++ rb_raise(rb_eTypeError, "%s", e.what());
+ }
+ }
+ return SWIG_ERROR;
+@@ -1089,9 +1085,8 @@
+ int i = 0;
+ for (const_iterator it = seq.begin();
+ it != seq.end(); ++it, ++i) {
+- RARRAY_PTR(obj)[i] = swig::from< value_type >(*it);
++ rb_ary_push(obj, swig::from< value_type >(*it));
+ }
+- RARRAY_LEN(obj) = size;
+ rb_obj_freeze(obj); // treat as immutable result
+ return obj;
+ } else {
+--- rel-1.3.40/Lib/ruby/rubyhead.swg 2010-03-02 15:51:00.314186593 +0100
++++ trunk/Lib/ruby/rubyhead.swg 2010-03-02 15:26:03.484124144 +0100
+@@ -1,5 +1,14 @@
+ #include <ruby.h>
+
++/* Ruby 1.9.1 has a "memoisation optimisation" when compiling with GCC which
++ * breaks using rb_intern as an lvalue, as SWIG does. We work around this
++ * issue for now by disabling this.
++ * https://sourceforge.net/tracker/?func=detail&aid=2859614&group_id=1645&atid=101645
++ */
++#ifdef rb_intern
++# undef rb_intern
++#endif
++
+ /* Remove global macros defined in Ruby's win32.h */
+ #ifdef write
+ # undef write
+--- rel-1.3.40/Lib/ruby/rubyrun.swg 2010-03-02 15:51:00.255312167 +0100
++++ trunk/Lib/ruby/rubyrun.swg 2010-03-02 15:26:03.468125042 +0100
+@@ -1,7 +1,4 @@
+ /* -----------------------------------------------------------------------------
+- * See the LICENSE file for information on copyright, usage and redistribution
+- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
+- *
+ * rubyrun.swg
+ *
+ * This file contains the runtime support for Ruby modules
+@@ -45,7 +42,7 @@
+ /* Error manipulation */
+
+ #define SWIG_ErrorType(code) SWIG_Ruby_ErrorType(code)
+-#define SWIG_Error(code, msg) rb_raise(SWIG_Ruby_ErrorType(code), msg)
++#define SWIG_Error(code, msg) rb_raise(SWIG_Ruby_ErrorType(code), "%s", msg)
+ #define SWIG_fail goto fail
+
+
+@@ -100,7 +97,7 @@
+ ++swig_virtual_calls;
+ # define SWIG_RELEASE_STACK --swig_virtual_calls;
+ # define Ruby_DirectorTypeMismatchException(x) \
+- rb_raise( rb_eTypeError, x ); return c_result;
++ rb_raise( rb_eTypeError, "%s", x ); return c_result;
+
+ static unsigned int swig_virtual_calls = 0;
+
+--- rel-1.3.40/Lib/ruby/std_map.i 2010-03-02 15:51:00.341311583 +0100
++++ trunk/Lib/ruby/std_map.i 2010-03-02 15:26:03.498124411 +0100
+@@ -345,7 +345,8 @@
+ {
+ Map::const_iterator i = $self->begin();
+ Map::const_iterator e = $self->end();
+- VALUE str = rb_str_new2( swig::type_name< Map >() );
++ const char *type_name = swig::type_name< Map >();
++ VALUE str = rb_str_new2( type_name );
+ str = rb_str_cat2( str, " {" );
+ bool comma = false;
+ VALUE tmp;
+--- rel-1.3.40/Lib/ruby/std_multimap.i 2010-03-02 15:51:00.271311542 +0100
++++ trunk/Lib/ruby/std_multimap.i 2010-03-02 15:26:03.475124457 +0100
+@@ -115,7 +115,8 @@
+ {
+ MultiMap::iterator i = $self->begin();
+ MultiMap::iterator e = $self->end();
+- VALUE str = rb_str_new2( swig::type_name< MultiMap >() );
++ const char *type_name = swig::type_name< MultiMap >();
++ VALUE str = rb_str_new2( type_name );
+ str = rb_str_cat2( str, " {" );
+ VALUE tmp;
+ while ( i != e )
+--- rel-1.3.40/Lib/ruby/std_pair.i 2010-03-02 15:51:00.272311577 +0100
++++ trunk/Lib/ruby/std_pair.i 2010-03-02 15:26:03.476124367 +0100
+@@ -118,13 +118,11 @@
+
+ static VALUE from(const std::pair<T,U>& val) {
+ VALUE obj = rb_ary_new2(2);
+- RARRAY_PTR(obj)[0] = swig::from<
+- typename swig::noconst_traits<T >::noconst_type>(val.first);
+- RARRAY_PTR(obj)[1] = swig::from(val.second);
+- RARRAY_LEN(obj) = 2;
+- rb_define_singleton_method(obj, "second",
++ rb_ary_push(obj, swig::from<typename swig::noconst_traits<T >::noconst_type>(val.first));
++ rb_ary_push(obj, swig::from(val.second));
++ rb_define_singleton_method(obj, "second",
+ VALUEFUNC(_wrap_pair_second), 0 );
+- rb_define_singleton_method(obj, "second=",
++ rb_define_singleton_method(obj, "second=",
+ VALUEFUNC(_wrap_pair_second_eq), 1 );
+ rb_obj_freeze(obj); // treat as immutable tuple
+ return obj;
+@@ -148,7 +146,8 @@
+ VALUE inspect() const
+ {
+ VALUE tmp;
+- VALUE str = rb_str_new2( swig::type_name< pair >() );
++ const char *type_name = swig::type_name< pair >();
++ VALUE str = rb_str_new2( type_name );
+ str = rb_str_cat2( str, " (" );
+ tmp = swig::from( $self->first );
+ tmp = rb_obj_as_string( tmp );
+--- rel-1.3.40/Lib/ruby/std_set.i 2010-03-02 15:51:00.226192283 +0100
++++ trunk/Lib/ruby/std_set.i 2010-03-02 15:26:03.466124065 +0100
+@@ -170,10 +170,9 @@
+ %typemap(out,noblock=1,fragment="RubyPairBoolOutputIterator")
+ std::pair<iterator, bool> {
+ $result = rb_ary_new2(2);
+- RARRAY_PTR($result)[0] = SWIG_NewPointerObj(swig::make_set_nonconst_iterator(%static_cast($1,$type &).first),
+- swig::Iterator::descriptor(),SWIG_POINTER_OWN);
+- RARRAY_PTR($result)[1] = SWIG_From(bool)(%static_cast($1,const $type &).second);
+- RARRAY_LEN($result) = 2;
++ rb_ary_push($result, SWIG_NewPointerObj(swig::make_set_nonconst_iterator(%static_cast($1,$type &).first),
++ swig::Iterator::descriptor(),SWIG_POINTER_OWN));
++ rb_ary_push($result, SWIG_From(bool)(%static_cast($1,const $type &).second));
+ }
+
+ %extend {
================================================================
More information about the pld-cvs-commit
mailing list