From ab45950ef318a901362c5683362fd583bdb6156e Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Tue, 6 Nov 2012 21:23:05 -0800 Subject: [PATCH] add packaging --- ...e-obsolete-STR2CSTR-macro-with-StringValu.patch | 201 +++++++++++++++++++++ ...Config-instead-of-deprecated-Config-modul.patch | 48 +++++ ...0003-Ruby-Fix-include-pathes-for-Ruby-1.9.patch | 27 +++ ...by-Add-local-dir-to-loadpath-for-Ruby-1.9.patch | 25 +++ ...-1.9-methods-returns-array-of-Symbols-now.patch | 54 ++++++ packaging/0008-Ruby-Disable-broken-tests.patch | 39 ++++ ...-Disable-broken-test-in-threads_exception.patch | 27 +++ ...all-to-Swig_name_decl-upstream-ID-3530078.patch | 34 ++++ packaging/swig-2.0.4-guile2.patch | 25 +++ packaging/swig.spec | 166 +++++++++++++++++ 10 files changed, 646 insertions(+) create mode 100644 packaging/0001-Ruby-replace-obsolete-STR2CSTR-macro-with-StringValu.patch create mode 100644 packaging/0002-Ruby-use-RbConfig-instead-of-deprecated-Config-modul.patch create mode 100644 packaging/0003-Ruby-Fix-include-pathes-for-Ruby-1.9.patch create mode 100644 packaging/0004-Ruby-Add-local-dir-to-loadpath-for-Ruby-1.9.patch create mode 100644 packaging/0007-Ruby-1.9-methods-returns-array-of-Symbols-now.patch create mode 100644 packaging/0008-Ruby-Disable-broken-tests.patch create mode 100644 packaging/0012-Python-Disable-broken-test-in-threads_exception.patch create mode 100644 packaging/0013-Fix-call-to-Swig_name_decl-upstream-ID-3530078.patch create mode 100644 packaging/swig-2.0.4-guile2.patch create mode 100644 packaging/swig.spec 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 index 0000000..e31e04d --- /dev/null +++ b/packaging/0001-Ruby-replace-obsolete-STR2CSTR-macro-with-StringValu.patch @@ -0,0 +1,201 @@ +From 9ef1a68a4428fbbba900a1c8ab162fe6fd6ce299 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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:

+ + +
+-
%typemap(in) (char *str, int len) {
$1 = STR2CSTR($input);
$2 = (int) RSTRING($input)->len;
};

int count(char c, char *str, int len);
++
%typemap(in) (char *str, int len) {
$1 = StringValuePtr($input);
$2 = (int) RSTRING($input)->len;
};

int count(char c, char *str, int len);
+ + + +@@ -7134,7 +7134,7 @@ Ruby_Format_TypeError( "$1_name", "$1_type","$symname", $argnum, $input + + + +- char * STR2CSTR(String) ++ char * StringValuePtr(String) + SWIG_AsCharPtrAndSize(VALUE, char*, size_t, int* alloc) + + +@@ -7517,7 +7517,7 @@ Array instance to be used as a char ** object.

+ + +
+-
%module argv

// This tells SWIG to treat char ** as a special case
%typemap(in) char ** {
/* Get the length of the array */
int size = RARRAY($input)->len;
int i;
$1 = (char **) malloc((size+1)*sizeof(char *));
/* Get the first element in memory */
VALUE *ptr = RARRAY($input)->ptr;
for (i=0; i < size; i++, ptr++)
/* Convert Ruby Object String to char* */
$1[i]= STR2CSTR(*ptr);
$1[i]=NULL; /* End of list */
}

// This cleans up the char ** array created before
// the function call

%typemap(freearg) char ** {
free((char *) $1);
}

// Now a test function
%inline %{
int print_args(char **argv) {
int i = 0;
while (argv[i]) {
printf("argv[%d] = %s\n", i,argv[i]);
i++;
}
return i;
}
%}

++
%module argv

// This tells SWIG to treat char ** as a special case
%typemap(in) char ** {
/* Get the length of the array */
int size = RARRAY($input)->len;
int i;
$1 = (char **) malloc((size+1)*sizeof(char *));
/* Get the first element in memory */
VALUE *ptr = RARRAY($input)->ptr;
for (i=0; i < size; i++, ptr++)
/* Convert Ruby Object String to char* */
$1[i]= StringValuePtr(*ptr);
$1[i]=NULL; /* End of list */
}

// This cleans up the char ** array created before
// the function call

%typemap(freearg) char ** {
free((char *) $1);
}

// Now a test function
%inline %{
int print_args(char **argv) {
int i = 0;
while (argv[i]) {
printf("argv[%d] = %s\n", i,argv[i]);
i++;
}
return i;
}
%}

+ + + +@@ -7795,7 +7795,7 @@ equivalents and store them in our local C arrays:

+ + +
+-
%typemap(in) (int nattributes, const char **names, const int *values)
(VALUE keys_arr, int i, VALUE key, VALUE val) {
Check_Type($input, T_HASH);
$1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
$2 = NULL;
$3 = NULL;
if ($1 > 0) {
$2 = (char **) malloc($1*sizeof(char *));
$3 = (int *) malloc($1*sizeof(int));
keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
for (i = 0; i < $1; i++) {
key = rb_ary_entry(keys_arr, i);
val = rb_hash_aref($input, key);
Check_Type(key, T_STRING);
Check_Type(val, T_FIXNUM);
$2[i] = STR2CSTR(key);
$3[i] = NUM2INT(val);

}
}
}
++
%typemap(in) (int nattributes, const char **names, const int *values)
(VALUE keys_arr, int i, VALUE key, VALUE val) {
Check_Type($input, T_HASH);
$1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
$2 = NULL;
$3 = NULL;
if ($1 > 0) {
$2 = (char **) malloc($1*sizeof(char *));
$3 = (int *) malloc($1*sizeof(int));
keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
for (i = 0; i < $1; i++) {
key = rb_ary_entry(keys_arr, i);
val = rb_hash_aref($input, key);
Check_Type(key, T_STRING);
Check_Type(val, T_FIXNUM);
$2[i] = StringValuePtr(key);
$3[i] = NUM2INT(val);

}
}
}
+ + + +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. In addition, the typemap system follows typedef + example:

+
+
%typemap(in) (char *str, int len) {
+-
$1 = STR2CSTR($input); ++
$1 = StringValuePtr($input); +
$2 = (int) RSTRING($input)->len; +
}; +
+@@ -47405,7 +47405,7 @@ style="font-family: monospace;">SWIG_AsVal_unsigned_SS_long(VALUE, + unsigned long*) + char NUM2CHR(Numeric or String)SWIG_AsVal_char(VALUE, int*) +-char * STR2CSTR(String) ++char * StringValuePtr(String) + SWIG_AsCharPtrAndSize(VALUE, char*, size_t, int* alloc) + char * rb_str2cstr(String, + int*length) +@@ -47518,7 +47518,7 @@ printf().
+
VALUE *ptr = RARRAY($input)->ptr; +
for (i=0; i < size; i++, ptr++) +
/* Convert Ruby Object String to char* */ +-
$1[i]= STR2CSTR(*ptr); ++
$1[i]= StringValuePtr(*ptr); +
$1[i]=NULL; /* End of list */ +
} +
+@@ -47732,7 +47732,7 @@ NULL and set the stage for extracting the keys and values from the +
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/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 index 0000000..5000591 --- /dev/null +++ b/packaging/0002-Ruby-use-RbConfig-instead-of-deprecated-Config-modul.patch @@ -0,0 +1,48 @@ +From 33b61c4033a21710eaaf210f7c69e261c1dbe084 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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 index 0000000..c131fbe --- /dev/null +++ b/packaging/0003-Ruby-Fix-include-pathes-for-Ruby-1.9.patch @@ -0,0 +1,27 @@ +From 21f5bad365aa27b6c9bcb32be5a5e217d437c15d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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 index 0000000..59b27df --- /dev/null +++ b/packaging/0004-Ruby-Add-local-dir-to-loadpath-for-Ruby-1.9.patch @@ -0,0 +1,25 @@ +From 2d3dee536c869b2c5aff71a29d406353039b5007 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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 index 0000000..0544907 --- /dev/null +++ b/packaging/0007-Ruby-1.9-methods-returns-array-of-Symbols-now.patch @@ -0,0 +1,54 @@ +From b395eb4f56557bd70840de073d999234922acd00 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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 index 0000000..53115e8 --- /dev/null +++ b/packaging/0008-Ruby-Disable-broken-tests.patch @@ -0,0 +1,39 @@ +From 7fa5330f2610e8b4574bf7ba4670f8ed1a446b6e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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 index 0000000..51bc8d0 --- /dev/null +++ b/packaging/0012-Python-Disable-broken-test-in-threads_exception.patch @@ -0,0 +1,27 @@ +From a413c263f0a84a19ff1090db9c74928fe3835214 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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 index 0000000..9810c3a --- /dev/null +++ b/packaging/0013-Fix-call-to-Swig_name_decl-upstream-ID-3530078.patch @@ -0,0 +1,34 @@ +From aa7b4489f8336647edb08a30f7ab95b7e675806d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= +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 index 0000000..5c36e8c --- /dev/null +++ b/packaging/swig-2.0.4-guile2.patch @@ -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 index 0000000..2480830 --- /dev/null +++ b/packaging/swig.spec @@ -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 -- 2.7.4