add packaging
authorAnas Nashif <anas.nashif@intel.com>
Wed, 7 Nov 2012 05:23:05 +0000 (21:23 -0800)
committerAnas Nashif <anas.nashif@intel.com>
Wed, 7 Nov 2012 05:23:05 +0000 (21:23 -0800)
packaging/0001-Ruby-replace-obsolete-STR2CSTR-macro-with-StringValu.patch [new file with mode: 0644]
packaging/0002-Ruby-use-RbConfig-instead-of-deprecated-Config-modul.patch [new file with mode: 0644]
packaging/0003-Ruby-Fix-include-pathes-for-Ruby-1.9.patch [new file with mode: 0644]
packaging/0004-Ruby-Add-local-dir-to-loadpath-for-Ruby-1.9.patch [new file with mode: 0644]
packaging/0007-Ruby-1.9-methods-returns-array-of-Symbols-now.patch [new file with mode: 0644]
packaging/0008-Ruby-Disable-broken-tests.patch [new file with mode: 0644]
packaging/0012-Python-Disable-broken-test-in-threads_exception.patch [new file with mode: 0644]
packaging/0013-Fix-call-to-Swig_name_decl-upstream-ID-3530078.patch [new file with mode: 0644]
packaging/swig-2.0.4-guile2.patch [new file with mode: 0644]
packaging/swig.spec [new file with mode: 0644]

diff --git a/packaging/0001-Ruby-replace-obsolete-STR2CSTR-macro-with-StringValu.patch b/packaging/0001-Ruby-replace-obsolete-STR2CSTR-macro-with-StringValu.patch
new file mode 100644 (file)
index 0000000..e31e04d
--- /dev/null
@@ -0,0 +1,201 @@
+From 9ef1a68a4428fbbba900a1c8ab162fe6fd6ce299 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sat, 26 May 2012 18:21:22 +0200
+Subject: [PATCH 01/10] Ruby: replace obsolete STR2CSTR macro with
+ StringValuePtr
+
+---
+ Doc/Manual/Ruby.html                    |    8 ++++----
+ Doc/Manual/SWIGDocumentation.html       |    8 ++++----
+ Examples/ruby/hashargs/example.i        |    2 +-
+ Examples/ruby/multimap/example.i        |    6 +++---
+ Examples/test-suite/memberin1.i         |    2 +-
+ Examples/test-suite/namespace_typemap.i |    2 +-
+ Lib/ruby/argcargv.i                     |    2 +-
+ Lib/ruby/rubystrings.swg                |    6 +++---
+ 8 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/Doc/Manual/Ruby.html b/Doc/Manual/Ruby.html
+index 69005c7..775caaa 100644
+--- a/Doc/Manual/Ruby.html
++++ b/Doc/Manual/Ruby.html
+@@ -4925,7 +4925,7 @@ arguments. For example: </p>
+ <div class="code">
+-<pre>%typemap(in) (char *str, int len) {<br> $1 = STR2CSTR($input);<br> $2 = (int) RSTRING($input)-&gt;len;<br>};<br><br>int count(char c, char *str, int len);<br></pre>
++<pre>%typemap(in) (char *str, int len) {<br> $1 = StringValuePtr($input);<br> $2 = (int) RSTRING($input)-&gt;len;<br>};<br><br>int count(char c, char *str, int len);<br></pre>
+@@ -7134,7 +7134,7 @@ Ruby_Format_TypeError( "$1_name", "$1_type","$symname", $argnum, $input
+     </tr>
+     <tr>
+-      <td style="font-family: monospace;">char * STR2CSTR(String)</td>
++      <td style="font-family: monospace;">char * StringValuePtr(String)</td>
+       <td style="font-family: monospace;">SWIG_AsCharPtrAndSize(VALUE, char*, size_t, int* alloc)</td>
+     </tr>
+@@ -7517,7 +7517,7 @@ Array instance to be used as a <tt>char **</tt> object. </p>
+ <div class="code">
+-<pre>%module argv<br><br>// This tells SWIG to treat char ** as a special case<br>%typemap(in) char ** {<br> /* Get the length of the array */<br> int size = RARRAY($input)-&gt;len; <br> int i;<br> $1 = (char **) malloc((size+1)*sizeof(char *));<br> /* Get the first element in memory */<br> VALUE *ptr = RARRAY($input)-&gt;ptr; <br> for (i=0; i &lt; size; i++, ptr++)<br> /* Convert Ruby Object String to char* */<br> $1[i]= STR2CSTR(*ptr); <br> $1[i]=NULL; /* End of list */<br>}<br><br>// This cleans up the char ** array created before <br>// the function call<br><br>%typemap(freearg) char ** {<br> free((char *) $1);<br>}<br><br>// Now a test function<br>%inline %{<br>int print_args(char **argv) {<br> int i = 0;<br> while (argv[i]) {<br> printf("argv[%d] = %s\n", i,argv[i]);<br> i++;<br> }<br> return i;<br>}<br>%}<br><br></pre>
++<pre>%module argv<br><br>// This tells SWIG to treat char ** as a special case<br>%typemap(in) char ** {<br> /* Get the length of the array */<br> int size = RARRAY($input)-&gt;len; <br> int i;<br> $1 = (char **) malloc((size+1)*sizeof(char *));<br> /* Get the first element in memory */<br> VALUE *ptr = RARRAY($input)-&gt;ptr; <br> for (i=0; i &lt; size; i++, ptr++)<br> /* Convert Ruby Object String to char* */<br> $1[i]= StringValuePtr(*ptr); <br> $1[i]=NULL; /* End of list */<br>}<br><br>// This cleans up the char ** array created before <br>// the function call<br><br>%typemap(freearg) char ** {<br> free((char *) $1);<br>}<br><br>// Now a test function<br>%inline %{<br>int print_args(char **argv) {<br> int i = 0;<br> while (argv[i]) {<br> printf("argv[%d] = %s\n", i,argv[i]);<br> i++;<br> }<br> return i;<br>}<br>%}<br><br></pre>
+@@ -7795,7 +7795,7 @@ equivalents and store them in our local C arrays: </p>
+ <div class="code">
+-<pre>%typemap(in) (int nattributes, const char **names, const int *values)<br> (VALUE keys_arr, int i, VALUE key, VALUE val) {<br> Check_Type($input, T_HASH);<br> $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));<br> $2 = NULL;<br> $3 = NULL;<br> if ($1 &gt; 0) {<br> $2 = (char **) malloc($1*sizeof(char *));<br> $3 = (int *) malloc($1*sizeof(int));<br> keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);<br> for (i = 0; i &lt; $1; i++) {<br> key = rb_ary_entry(keys_arr, i);<br> val = rb_hash_aref($input, key);<br> Check_Type(key, T_STRING);<br> Check_Type(val, T_FIXNUM);<br> <b>$2[i] = STR2CSTR(key);<br> $3[i] = NUM2INT(val);</b><br>}<br>}<br>}<br></pre>
++<pre>%typemap(in) (int nattributes, const char **names, const int *values)<br> (VALUE keys_arr, int i, VALUE key, VALUE val) {<br> Check_Type($input, T_HASH);<br> $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));<br> $2 = NULL;<br> $3 = NULL;<br> if ($1 &gt; 0) {<br> $2 = (char **) malloc($1*sizeof(char *));<br> $3 = (int *) malloc($1*sizeof(int));<br> keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);<br> for (i = 0; i &lt; $1; i++) {<br> key = rb_ary_entry(keys_arr, i);<br> val = rb_hash_aref($input, key);<br> Check_Type(key, T_STRING);<br> Check_Type(val, T_FIXNUM);<br> <b>$2[i] = StringValuePtr(key);<br> $3[i] = NUM2INT(val);</b><br>}<br>}<br>}<br></pre>
+diff --git a/Doc/Manual/SWIGDocumentation.html b/Doc/Manual/SWIGDocumentation.html
+index 85100fa..42f84c5 100644
+--- a/Doc/Manual/SWIGDocumentation.html
++++ b/Doc/Manual/SWIGDocumentation.html
+@@ -46771,7 +46771,7 @@ const int</TT>. In addition, the typemap system follows <TT>typedef</TT>
+  example:</P>
+ <DIV class="code">
+ <PRE>%typemap(in) (char *str, int len) {
+-<BR> $1 = STR2CSTR($input);
++<BR> $1 = StringValuePtr($input);
+ <BR> $2 = (int) RSTRING($input)-&gt;len;
+ <BR>};
+ <BR>
+@@ -47405,7 +47405,7 @@ style="font-family: monospace;">SWIG_AsVal_unsigned_SS_long(VALUE,
+  unsigned long*)</TD></TR>
+ <TR><TD style="font-family: monospace;">char NUM2CHR(Numeric or String)</TD><TD
+ style="font-family: monospace;">SWIG_AsVal_char(VALUE, int*)</TD></TR>
+-<TR><TD style="font-family: monospace;">char * STR2CSTR(String)</TD><TD style="font-family: monospace;">
++<TR><TD style="font-family: monospace;">char * StringValuePtr(String)</TD><TD style="font-family: monospace;">
+ SWIG_AsCharPtrAndSize(VALUE, char*, size_t, int* alloc)</TD></TR>
+ <TR><TD style="font-family: monospace;">char * rb_str2cstr(String,
+  int*length)</TD><TD style="font-family: monospace;"></TD></TR>
+@@ -47518,7 +47518,7 @@ printf()</TT>.</DIV>
+ <BR> VALUE *ptr = RARRAY($input)-&gt;ptr; 
+ <BR> for (i=0; i &lt; size; i++, ptr++)
+ <BR> /* Convert Ruby Object String to char* */
+-<BR> $1[i]= STR2CSTR(*ptr); 
++<BR> $1[i]= StringValuePtr(*ptr); 
+ <BR> $1[i]=NULL; /* End of list */
+ <BR>}
+ <BR>
+@@ -47732,7 +47732,7 @@ NULL</TT> and set the stage for extracting the keys and values from the
+ <BR> val = rb_hash_aref($input, key);
+ <BR> Check_Type(key, T_STRING);
+ <BR> Check_Type(val, T_FIXNUM);
+-<BR> <B>$2[i] = STR2CSTR(key);
++<BR> <B>$2[i] = StringValuePtr(key);
+ <BR> $3[i] = NUM2INT(val);</B>
+ <BR>}
+ <BR>}
+diff --git a/Examples/ruby/hashargs/example.i b/Examples/ruby/hashargs/example.i
+index 159bbd3..10e209e 100644
+--- a/Examples/ruby/hashargs/example.i
++++ b/Examples/ruby/hashargs/example.i
+@@ -14,7 +14,7 @@
+       val = rb_hash_aref($input, key);
+       Check_Type(key, T_STRING);
+       Check_Type(val, T_FIXNUM);
+-      $2[i] = STR2CSTR(key);
++      $2[i] = StringValuePtr(key);
+       $3[i] = NUM2INT(val);
+     }
+   }
+diff --git a/Examples/ruby/multimap/example.i b/Examples/ruby/multimap/example.i
+index f68422a..34f0b89 100644
+--- a/Examples/ruby/multimap/example.i
++++ b/Examples/ruby/multimap/example.i
+@@ -31,7 +31,7 @@ extern int    gcd(int x, int y);
+       free($2);
+       SWIG_exception(SWIG_ValueError, "List items must be strings");
+     }
+-    $2[i] = STR2CSTR(s);
++    $2[i] = StringValuePtr(s);
+   }
+   $2[i] = 0;
+ }
+@@ -46,7 +46,7 @@ extern int gcdmain(int argc, char *argv[]);
+   if (TYPE($input) != T_STRING) {
+     SWIG_exception(SWIG_ValueError, "Expected a string");
+   }
+-  $1 = STR2CSTR($input);
++  $1 = StringValuePtr($input);
+   $2 = RSTRING_LEN($input);
+ }
+@@ -60,7 +60,7 @@ extern int count(char *bytes, int len, char c);
+   if (TYPE($input) != T_STRING) {
+     SWIG_exception(SWIG_ValueError,"Expected a string");
+   }
+-  temp = STR2CSTR($input);
++  temp = StringValuePtr($input);
+   $2 = RSTRING_LEN($input);
+   $1 = (char *) malloc($2+1);
+   memmove($1,temp,$2);
+diff --git a/Examples/test-suite/memberin1.i b/Examples/test-suite/memberin1.i
+index 9203230..ece489e 100644
+--- a/Examples/test-suite/memberin1.i
++++ b/Examples/test-suite/memberin1.i
+@@ -47,7 +47,7 @@ public:
+ #ifdef SWIGRUBY
+ %typemap(in) String {
+   Check_Type($input, T_STRING);
+-  $1 = String(STR2CSTR($input));
++  $1 = String(StringValuePtr($input));
+ }
+ #endif
+diff --git a/Examples/test-suite/namespace_typemap.i b/Examples/test-suite/namespace_typemap.i
+index f25f885..8ead78c 100644
+--- a/Examples/test-suite/namespace_typemap.i
++++ b/Examples/test-suite/namespace_typemap.i
+@@ -100,7 +100,7 @@ namespace test {
+ #endif
+ #ifdef SWIGRUBY
+       %typemap(in) string_class * {
+-          $1 = new string_class(STR2CSTR($input));
++          $1 = new string_class(StringValuePtr($input));
+       }
+       %typemap(freearg) string_class * {
+           delete $1;
+diff --git a/Lib/ruby/argcargv.i b/Lib/ruby/argcargv.i
+index ae1f6bb..fc0bc40 100644
+--- a/Lib/ruby/argcargv.i
++++ b/Lib/ruby/argcargv.i
+@@ -30,7 +30,7 @@
+     $2 = (char **) malloc((size+1)*sizeof(char *));
+     VALUE *ptr = RARRAY_PTR($input);
+     for (i=0; i < size; i++, ptr++) {
+-      $2[i]= STR2CSTR(*ptr);
++      $2[i]= StringValuePtr(*ptr);
+     }    
+     $2[i]=NULL;
+   } else {
+diff --git a/Lib/ruby/rubystrings.swg b/Lib/ruby/rubystrings.swg
+index e6b92ef..8600949 100644
+--- a/Lib/ruby/rubystrings.swg
++++ b/Lib/ruby/rubystrings.swg
+@@ -7,10 +7,10 @@ SWIGINTERN int
+ SWIG_AsCharPtrAndSize(VALUE obj, char** cptr, size_t* psize, int *alloc)
+ {
+   if (TYPE(obj) == T_STRING) {
+-    %#if defined(StringValuePtr)
+-    char *cstr = StringValuePtr(obj); 
+-    %#else
++    %#if defined(STR2CSTR)
+     char *cstr = STR2CSTR(obj);
++    %#else
++    char *cstr = StringValuePtr(obj); 
+     %#endif
+     size_t size = RSTRING_LEN(obj) + 1;
+     if (cptr)  {
+-- 
+1.7.9.2
+
diff --git a/packaging/0002-Ruby-use-RbConfig-instead-of-deprecated-Config-modul.patch b/packaging/0002-Ruby-use-RbConfig-instead-of-deprecated-Config-modul.patch
new file mode 100644 (file)
index 0000000..5000591
--- /dev/null
@@ -0,0 +1,48 @@
+From 33b61c4033a21710eaaf210f7c69e261c1dbe084 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sat, 26 May 2012 18:24:47 +0200
+Subject: [PATCH 02/10] Ruby: use RbConfig instead of deprecated Config module
+ prefix
+
+---
+ configure.in |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index eedc5b1..8903d28 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1348,13 +1348,13 @@ if test -n "$RUBY"; then
+               # Find library and path for linking.
+               AC_MSG_CHECKING(for Ruby library)
+               RUBYLIB=""
+-              rb_libdir=`($RUBY -rrbconfig -e 'print Config::CONFIG[["libdir"]]') 2>/dev/null`
+-              rb_bindir=`($RUBY -rrbconfig -e 'print Config::CONFIG[["bindir"]]') 2>/dev/null`
++              rb_libdir=`($RUBY -rrbconfig -e 'print RbConfig::CONFIG[["libdir"]]') 2>/dev/null`
++              rb_bindir=`($RUBY -rrbconfig -e 'print RbConfig::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 RbConfig::CONFIG[["LIBRUBY_A"]]') 2>/dev/null`
+         RUBYLINK=`($RUBY -rrbconfig -e '
+-            c = Config::CONFIG
++            c = RbConfig::CONFIG
+             if c.has_key? "LIBRUBYARG_STATIC" # 1.8.x
+                 if c[["LIBRUBY"]] == c[["LIBRUBY_A"]]
+                     link = c[["LIBRUBYARG_STATIC"]]
+@@ -1402,10 +1402,10 @@ if test -n "$RUBY"; then
+       case $host in
+               *-*-mingw*) ;; # do nothing, the default windows libraries are already included
+-              *) RUBYLINK="$RUBYLINK `($RUBY -rrbconfig -e 'print Config::CONFIG[["LIBS"]]') 2>/dev/null`";;
++              *) RUBYLINK="$RUBYLINK `($RUBY -rrbconfig -e 'print RbConfig::CONFIG[["LIBS"]]') 2>/dev/null`";;
+       esac
+-      RUBYCCDLFLAGS=`($RUBY -rrbconfig -e 'print Config::CONFIG[["CCDLFLAGS"]]') 2>/dev/null`
++      RUBYCCDLFLAGS=`($RUBY -rrbconfig -e 'print RbConfig::CONFIG[["CCDLFLAGS"]]') 2>/dev/null`
+ else
+       AC_MSG_RESULT(could not figure out how to run ruby)
+       RUBYINCLUDE="-I/usr/local/lib/ruby/1.4/arch"
+-- 
+1.7.9.2
+
diff --git a/packaging/0003-Ruby-Fix-include-pathes-for-Ruby-1.9.patch b/packaging/0003-Ruby-Fix-include-pathes-for-Ruby-1.9.patch
new file mode 100644 (file)
index 0000000..c131fbe
--- /dev/null
@@ -0,0 +1,27 @@
+From 21f5bad365aa27b6c9bcb32be5a5e217d437c15d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sat, 26 May 2012 18:26:26 +0200
+Subject: [PATCH 03/10] Ruby: Fix include pathes for Ruby 1.9
+
+---
+ configure.in |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index 8903d28..9d050fc 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1341,7 +1341,9 @@ if test -n "$RUBY"; then
+                       fi
+               done
+               if test "$RUBYINCLUDE" = none; then
+-                      RUBYINCLUDE="-I$RUBYDIR"
++                        RUBYINCLUDE=`($RUBY -rrbconfig -e 'print RbConfig::CONFIG[["rubyhdrdir"]] || $rubyhdrdir') 2>/dev/null`
++                        RUBYARCH=`($RUBY -rrbconfig -e 'print RbConfig::CONFIG[["arch"]] || $arch') 2>/dev/null`
++                      RUBYINCLUDE="-I$RUBYINCLUDE -I$RUBYINCLUDE/$RUBYARCH"
+                       AC_MSG_RESULT(could not locate ruby.h...using $RUBYINCLUDE)
+               fi
+-- 
+1.7.9.2
+
diff --git a/packaging/0004-Ruby-Add-local-dir-to-loadpath-for-Ruby-1.9.patch b/packaging/0004-Ruby-Add-local-dir-to-loadpath-for-Ruby-1.9.patch
new file mode 100644 (file)
index 0000000..59b27df
--- /dev/null
@@ -0,0 +1,25 @@
+From 2d3dee536c869b2c5aff71a29d406353039b5007 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sat, 26 May 2012 18:27:30 +0200
+Subject: [PATCH 04/10] Ruby: Add local dir to loadpath for Ruby 1.9
+
+---
+ Examples/test-suite/ruby/Makefile.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Examples/test-suite/ruby/Makefile.in b/Examples/test-suite/ruby/Makefile.in
+index e157e72..e11e581 100644
+--- a/Examples/test-suite/ruby/Makefile.in
++++ b/Examples/test-suite/ruby/Makefile.in
+@@ -61,7 +61,7 @@ ruby_naming.cpptest: SWIGOPT += -autorename
+ # a file is found which has _runme.rb appended after the testcase name.
+ run_testcase = \
+       if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \
+-        env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(RUBY) $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \
++        env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(RUBY) -I. -I$(srcdir) $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \
+       fi
+ # Clean
+-- 
+1.7.9.2
+
diff --git a/packaging/0007-Ruby-1.9-methods-returns-array-of-Symbols-now.patch b/packaging/0007-Ruby-1.9-methods-returns-array-of-Symbols-now.patch
new file mode 100644 (file)
index 0000000..0544907
--- /dev/null
@@ -0,0 +1,54 @@
+From b395eb4f56557bd70840de073d999234922acd00 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sat, 26 May 2012 21:41:07 +0200
+Subject: [PATCH 07/10] Ruby 1.9: #methods returns array of Symbols now
+
+---
+ Examples/test-suite/ruby/ruby_naming_runme.rb |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/Examples/test-suite/ruby/ruby_naming_runme.rb b/Examples/test-suite/ruby/ruby_naming_runme.rb
+index 8ea5f13..d5525bc 100644
+--- a/Examples/test-suite/ruby/ruby_naming_runme.rb
++++ b/Examples/test-suite/ruby/ruby_naming_runme.rb
+@@ -35,23 +35,23 @@ if Ruby_naming::CONSTANT3 != 3
+   raise RuntimeError, "Incorrect value for CONSTANT3" 
+ end
+-if not Ruby_naming::methods.include?("constant4")
++if not (Ruby_naming::methods.include?("constant4") || Ruby_naming::methods.include?(:constant4))
+   raise RuntimeError, "Incorrect mapping for constant4" 
+ end
+-if not Ruby_naming::methods.include?("constant5")
++if not (Ruby_naming::methods.include?("constant5") || Ruby_naming::methods.include?(:constant5))
+   raise RuntimeError, "Incorrect mapping for constant5" 
+ end
+-if not Ruby_naming::methods.include?("constant6")
++if not (Ruby_naming::methods.include?("constant6") || Ruby_naming::methods.include?(:constant6))
+   raise RuntimeError, "Incorrect mapping for constant6" 
+ end
+-if not Ruby_naming::TestConstants.instance_methods.include?("constant7")
++if not (Ruby_naming::TestConstants.instance_methods.include?("constant7") || Ruby_naming::TestConstants.instance_methods.include?(:constant7))
+   raise RuntimeError, "Incorrect mapping for constant7" 
+ end
+-if not Ruby_naming::TestConstants.methods.include?("constant8")
++if not (Ruby_naming::TestConstants.methods.include?("constant8") || Ruby_naming::TestConstants.methods.include?(:constant8))
+   raise RuntimeError, "Incorrect mapping for constant8" 
+ end
+@@ -64,7 +64,7 @@ if Ruby_naming::TestConstants::CONSTANT10 != 10
+   raise RuntimeError, "Incorrect value for CONSTANT10" 
+ end
+-if not Ruby_naming::methods.include?("constant11")
++if not (Ruby_naming::methods.include?("constant11") || Ruby_naming::methods.include?(:constant11))
+   raise RuntimeError, "Incorrect mapping for constant11" 
+ end
+-- 
+1.7.9.2
+
diff --git a/packaging/0008-Ruby-Disable-broken-tests.patch b/packaging/0008-Ruby-Disable-broken-tests.patch
new file mode 100644 (file)
index 0000000..53115e8
--- /dev/null
@@ -0,0 +1,39 @@
+From 7fa5330f2610e8b4574bf7ba4670f8ed1a446b6e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sat, 26 May 2012 21:42:08 +0200
+Subject: [PATCH 08/10] Ruby: Disable broken tests
+
+---
+ Examples/test-suite/ruby/Makefile.in |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/Examples/test-suite/ruby/Makefile.in b/Examples/test-suite/ruby/Makefile.in
+index e11e581..3a8af5c 100644
+--- a/Examples/test-suite/ruby/Makefile.in
++++ b/Examples/test-suite/ruby/Makefile.in
+@@ -14,18 +14,18 @@ CPP_TEST_CASES = \
+       li_cdata \
+       li_cstring \
+       li_factory \
+-      li_std_functors \
+       li_std_multimap \
+       li_std_pair_lang_object \
+       li_std_queue \
+-      li_std_set \
+       li_std_stack \
+       primitive_types \
+       ruby_keywords \
+       ruby_naming \
+       ruby_track_objects \
+-      ruby_track_objects_directors \
+-      std_containers
++      ruby_track_objects_directors
++#     std_containers
++#     li_std_set
++#     li_std_functors
+ #     ruby_li_std_speed
+ #     stl_new
+-- 
+1.7.9.2
+
diff --git a/packaging/0012-Python-Disable-broken-test-in-threads_exception.patch b/packaging/0012-Python-Disable-broken-test-in-threads_exception.patch
new file mode 100644 (file)
index 0000000..51bc8d0
--- /dev/null
@@ -0,0 +1,27 @@
+From a413c263f0a84a19ff1090db9c74928fe3835214 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sat, 26 May 2012 22:39:40 +0200
+Subject: [PATCH 12/12] Python: Disable broken test in threads_exception
+
+---
+ .../test-suite/python/threads_exception_runme.py   |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Examples/test-suite/python/threads_exception_runme.py b/Examples/test-suite/python/threads_exception_runme.py
+index 12202e3..f8fb46e 100644
+--- a/Examples/test-suite/python/threads_exception_runme.py
++++ b/Examples/test-suite/python/threads_exception_runme.py
+@@ -25,8 +25,8 @@ try:
+ except threads_exception.Exc,e:
+   if e.code != 42:
+     raise RuntimeError
+-  if e.msg != "Hosed":
+-    raise RuntimeError, "bad... msg: %s" % e.msg
++#  if e.msg != "Hosed":
++#    raise RuntimeError, "bad... msg: %s" % e.msg
+ for i in range(1,4):
+   try:
+-- 
+1.7.9.2
+
diff --git a/packaging/0013-Fix-call-to-Swig_name_decl-upstream-ID-3530078.patch b/packaging/0013-Fix-call-to-Swig_name_decl-upstream-ID-3530078.patch
new file mode 100644 (file)
index 0000000..9810c3a
--- /dev/null
@@ -0,0 +1,34 @@
+From aa7b4489f8336647edb08a30f7ab95b7e675806d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf@suse.de>
+Date: Sun, 27 May 2012 15:28:45 +0200
+Subject: [PATCH] Fix call to Swig_name_decl (upstream ID 3530078)
+
+---
+ Source/Modules/lang.cxx |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Source/Modules/lang.cxx b/Source/Modules/lang.cxx
+index 8fb5069..b7ce502 100644
+--- a/Source/Modules/lang.cxx
++++ b/Source/Modules/lang.cxx
+@@ -2623,7 +2623,7 @@ int Language::constructorDeclaration(Node *n) {
+         Delete(expected_name_resolved);
+       }
+       if (illegal_name) {
+-        Swig_warning(WARN_LANG_RETURN_TYPE, input_file, line_number, "Function %s must have a return type. Ignored.\n", Swig_name_decl(name));
++        Swig_warning(WARN_LANG_RETURN_TYPE, input_file, line_number, "Function %s must have a return type. Ignored.\n", Swig_name_decl(n));
+         Swig_restore(n);
+         return SWIG_NOWRAP;
+       }
+@@ -2760,7 +2760,7 @@ int Language::destructorDeclaration(Node *n) {
+     }
+     if (illegal_name) {
+-      Swig_warning(WARN_LANG_ILLEGAL_DESTRUCTOR, input_file, line_number, "Illegal destructor name %s. Ignored.\n", Swig_name_decl(name));
++      Swig_warning(WARN_LANG_ILLEGAL_DESTRUCTOR, input_file, line_number, "Illegal destructor name %s. Ignored.\n", Swig_name_decl(n));
+       Swig_restore(n);
+       Delete(expected_name);
+       return SWIG_NOWRAP;
+-- 
+1.7.9.2
+
diff --git a/packaging/swig-2.0.4-guile2.patch b/packaging/swig-2.0.4-guile2.patch
new file mode 100644 (file)
index 0000000..5c36e8c
--- /dev/null
@@ -0,0 +1,25 @@
+Index: swig-2.0.4/Lib/guile/guile_scm_run.swg
+===================================================================
+--- swig-2.0.4.orig/Lib/guile/guile_scm_run.swg
++++ swig-2.0.4/Lib/guile/guile_scm_run.swg
+@@ -60,16 +60,17 @@ static swig_module_info *SWIG_Guile_GetM
+ SWIGINTERN char *
+ SWIG_Guile_scm2newstr(SCM str, size_t *len) {
+ #define FUNC_NAME "SWIG_Guile_scm2newstr"
+-  char *ret;
++  char *ret, *tmp;
+   size_t l;
+   SCM_ASSERT (SCM_STRINGP(str), str, 1, FUNC_NAME);
+   
+-  l = SCM_STRING_LENGTH(str);
++  tmp = scm_to_utf8_string(str);
++  memcpy(ret, tmp, l);
++  free(tmp);
+   ret = (char *) SWIG_malloc( (l + 1) * sizeof(char));
+   if (!ret) return NULL;
+-  memcpy(ret, SCM_STRING_CHARS(str), l);
+   ret[l] = '\0';
+   if (len) *len = l;
+   return ret;
diff --git a/packaging/swig.spec b/packaging/swig.spec
new file mode 100644 (file)
index 0000000..2480830
--- /dev/null
@@ -0,0 +1,166 @@
+#
+# spec file for package swig
+#
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+Name:           swig
+Version:        2.0.7
+Release:        0
+License:        GPL-3.0+ and BSD-3-Clause
+Summary:        Simplified Wrapper and Interface Generator
+Url:            http://www.swig.org/
+Group:          Development/Languages/C and C++
+Source:         http://sourceforge.net/projects/swig/files/swig/%{name}-%{version}/%{name}-%{version}.tar.gz
+Source1:        %{name}.rpmlintrc
+# PATCH-FIX-UPSTREAM swig-2.0.4-guile2.patch pgajdos@suse.com -- generate guile 2 friendly code
+Patch0:         swig-2.0.4-guile2.patch
+# PATCH-PENDING-UPSTREAM - Ruby 1.9 - kkaempf@suse.de
+Patch1:         0001-Ruby-replace-obsolete-STR2CSTR-macro-with-StringValu.patch
+Patch2:         0002-Ruby-use-RbConfig-instead-of-deprecated-Config-modul.patch
+Patch3:         0003-Ruby-Fix-include-pathes-for-Ruby-1.9.patch
+Patch4:         0004-Ruby-Add-local-dir-to-loadpath-for-Ruby-1.9.patch
+Patch5:         0007-Ruby-1.9-methods-returns-array-of-Symbols-now.patch
+Patch6:         0008-Ruby-Disable-broken-tests.patch
+Patch7:         0012-Python-Disable-broken-test-in-threads_exception.patch
+# Upstream ID 3530078
+Patch8:         0013-Fix-call-to-Swig_name_decl-upstream-ID-3530078.patch
+BuildRequires:  autoconf
+BuildRequires:  automake
+BuildRequires:  boost-devel
+%define docpath %{_docdir}/%{name}
+BuildRequires:  fdupes
+BuildRequires:  gcc-c++
+BuildRequires:  libtool
+BuildRequires:  pcre-devel
+BuildRequires:  perl
+BuildRequires:  pkg-config
+BuildRequires:  python-devel
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+
+%description
+SWIG is a compiler that attempts to make it easy to integrate C, C++,
+or Objective-C code with scripting languages including Perl, Tcl, and
+Python.  In a nutshell, you give it a bunch of ANSI C/C++ declarations
+and it generates an interface between C and your favorite scripting
+language.  However, this is only scratching the surface of what SWIG
+can do--some of its more advanced features include automatic
+documentation generation, module and library management, extensive
+customization options, and more.
+
+%package doc
+License:        BSD-3-Clause
+Summary:        SWIG Manual
+Group:          Documentation/Man
+Requires:       swig
+BuildArch:      noarch
+
+%description doc
+SWIG is a compiler that attempts to make it easy to integrate C, C++,
+or Objective-C code with scripting languages including Perl, Tcl, and
+Python.  In a nutshell, you give it a bunch of ANSI C/C++ declarations
+and it generates an interface between C and your favorite scripting
+language.  However, this is only scratching the surface of what SWIG
+can do--some of its more advanced features include automatic
+documentation generation, module and library management, extensive
+customization options, and more.
+
+This package contains the SWIG manual.
+
+%package examples
+License:        BSD-3-Clause
+Summary:        SWIG example files
+Group:          Documentation/Howto
+Requires:       swig
+
+%description examples
+SWIG is a compiler that attempts to make it easy to integrate C, C++,
+or Objective-C code with scripting languages including Perl, Tcl, and
+Python.  In a nutshell, you give it a bunch of ANSI C/C++ declarations
+and it generates an interface between C and your favorite scripting
+language.  However, this is only scratching the surface of what SWIG
+can do--some of its more advanced features include automatic
+documentation generation, module and library management, extensive
+customization options, and more.
+
+This package contains SWIG examples, useful both for testing and
+understandig SWIG usage.
+
+%prep
+%setup -q
+# guile 2 from 12.1
+%patch0 -p1
+# Ruby 1.9 from 12.1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+
+%build
+sh autogen.sh
+%configure --disable-ccache
+make %{?_smp_mflags}
+
+%check
+# Segfaults
+rm -f Examples/test-suite/python/li_std_containers_int_runme.py
+rm -f Examples/test-suite/python/li_boost_shared_ptr_runme.py
+make check
+
+%install
+%make_install
+
+install -d %{buildroot}%{docpath}
+cp -a TODO ANNOUNCE CHANGES* LICENSE README Doc/{Devel,Manual} \
+       %{buildroot}%{docpath}
+install -d %{buildroot}%{_libdir}/swig
+cp -a Examples %{buildroot}%{_libdir}/swig/examples
+rm -rf %{buildroot}%{_libdir}/swig/examples/test-suite
+
+# rm files that are not needed for running or rebuilding the examples
+find %{buildroot}%{_libdir}/swig \
+       -name '*.dsp' -o -name '*.vcproj' -o -name '*.sln' -o \
+       -name '*.o' -o -name '*_wrap.c' | xargs rm
+
+# fix perms
+chmod -x %{buildroot}%{docpath}/Manual/*
+find %{buildroot}%{_libdir}/swig -name '*.h' -perm +111 | \
+       xargs --no-run-if-empty chmod -x
+ln -s %{_libdir}/swig/examples %{buildroot}%{docpath}/Examples
+
+%fdupes %{buildroot}
+
+%files
+%defattr(644,root,root,755)
+%dir %{docpath}
+%{docpath}/[A-Z][A-Z]*
+%{_datadir}/swig
+%attr(755,root,root) %{_bindir}/swig
+
+%files doc
+%defattr(-,root,root)
+%{docpath}/Devel
+%{docpath}/Manual
+
+%files examples
+%defattr(-,root,root)
+%{docpath}/Examples
+%{_libdir}/swig
+
+%changelog