summaryrefslogtreecommitdiffstats
path: root/redhat/kdebindings
diff options
context:
space:
mode:
authorFrancois Andriot <francois.andriot@free.fr>2012-10-21 19:27:55 +0200
committerFrancois Andriot <francois.andriot@free.fr>2012-10-21 19:27:55 +0200
commiteebed6b614c52895321754908c05b5082f531b85 (patch)
tree56bf0c5f54512c2fd8ed02cbe16d1da83b723461 /redhat/kdebindings
parent59daf455b483742c6c47099652117074df37889a (diff)
downloadtde-packaging-eebed6b614c52895321754908c05b5082f531b85.tar.gz
tde-packaging-eebed6b614c52895321754908c05b5082f531b85.zip
RHEL/Fedora/MGA/MDV/Suse: update main and libraries for TDE 3.5.13.1
Diffstat (limited to 'redhat/kdebindings')
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-detect_ruby_pkg.patch86
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-fallback_to_ruby19_pc_file.patch34
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-fix_dcopjava_ldflags.patch11
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_on_x86.patch82
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby18.patch56
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby19.patch683
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-fix_rhel5_ftbfs.patch31
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-fix_ruby_detect_when_pc_file_is_19.patch55
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-set_have_ruby19.patch30
-rw-r--r--redhat/kdebindings/kdebindings-3.5.13.1-use_cflags_from_pc_file.patch78
-rw-r--r--redhat/kdebindings/trinity-kdebindings-3.5.13.1.spec1100
11 files changed, 2246 insertions, 0 deletions
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-detect_ruby_pkg.patch b/redhat/kdebindings/kdebindings-3.5.13.1-detect_ruby_pkg.patch
new file mode 100644
index 000000000..47dcc16b5
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-detect_ruby_pkg.patch
@@ -0,0 +1,86 @@
+commit de49c7480893e7d52f64ec1166a55cdf97b2541e
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1347381606 -0500
+
+ Detect presence of Ruby pkg-config file and adjust directory search accordingly
+
+diff --git a/korundum/rubylib/korundum/configure.in.in b/korundum/rubylib/korundum/configure.in.in
+index 81ad0bc..5782123 100644
+--- a/korundum/rubylib/korundum/configure.in.in
++++ b/korundum/rubylib/korundum/configure.in.in
+@@ -1,13 +1,28 @@
++KDE_FIND_PATH(pkg-config, PKGCONFIG, [${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin], [
++ AC_MSG_WARN([Could not find pkg-config])
++])
++
+ AC_CHECK_PROG(RUBY, ruby, ruby)
+
+ if test -z "$RUBY"; then
+ DO_NOT_COMPILE="$DO_NOT_COMPILE korundum"
+ else
+ AC_MSG_CHECKING(for ruby dirs)
+- RUBY_ARCHDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
+- RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
+- RUBY_SITEDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
+- RUBY_RUBYLIBDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"rubylibdir"@:>@)'`
++ if test -n "$PKGCONFIG"; then
++ RUBY_VERSION=`$PKGCONFIG ruby --modversion 2>/dev/null`
++ if test -n "$RUBY_VERSION"; then
++ RUBY_ARCHDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"archdir"@:>@)'`
++ RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitearchdir"@:>@)'`
++ RUBY_SITEDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitelibdir"@:>@)'`
++ RUBY_RUBYLIBDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"rubylibdir"@:>@)'`
++ fi
++ fi
++ if test -z "$RUBY_VERSION"; then
++ RUBY_ARCHDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
++ RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
++ RUBY_SITEDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
++ RUBY_RUBYLIBDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"rubylibdir"@:>@)'`
++ fi
+ AC_MSG_RESULT([archdir $RUBY_ARCHDIR, sitearchdir $RUBY_SITEARCHDIR, sitedir $RUBY_SITEDIR])
+ AC_SUBST(RUBY_ARCHDIR)
+ AC_SUBST(RUBY_SITEARCHDIR)
+diff --git a/qtruby/rubylib/qtruby/configure.in.in b/qtruby/rubylib/qtruby/configure.in.in
+index 453bb68..3cfa630 100644
+--- a/qtruby/rubylib/qtruby/configure.in.in
++++ b/qtruby/rubylib/qtruby/configure.in.in
+@@ -1,15 +1,32 @@
++KDE_FIND_PATH(pkg-config, PKGCONFIG, [${prefix}/bin ${exec_prefix}/bin /usr/bin /usr/local/bin /opt/local/bin], [
++ AC_MSG_WARN([Could not find pkg-config])
++])
++
+ AC_CHECK_PROG(RUBY, ruby, ruby)
+
+ if test -z "$RUBY"; then
+ DO_NOT_COMPILE="$DO_NOT_COMPILE qtruby"
+ else
+ AC_MSG_CHECKING(for ruby dirs)
+- RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
+- RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
+- RUBY_SITEDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
+- RUBY_RUBYLIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"rubylibdir"@:>@)'`
+- RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'`
+- RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
++ if test -n "$PKGCONFIG"; then
++ RUBY_VERSION=`$PKGCONFIG ruby --modversion 2>/dev/null`
++ if test -n "$RUBY_VERSION"; then
++ RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"archdir"@:>@)'`
++ RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitearchdir"@:>@)'`
++ RUBY_SITEDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitelibdir"@:>@)'`
++ RUBY_RUBYLIBDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"rubylibdir"@:>@)'`
++ RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"libdir"@:>@)'`
++ RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
++ fi
++ fi
++ if test -z "$RUBY_VERSION"; then
++ RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
++ RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
++ RUBY_SITEDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
++ RUBY_RUBYLIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"rubylibdir"@:>@)'`
++ RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'`
++ RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
++ fi
+ AC_MSG_RESULT([archdir $RUBY_ARCHDIR, sitearchdir $RUBY_SITEARCHDIR, sitedir $RUBY_SITEDIR, libdir $RUBY_LIBDIR, librubyarg $RUBY_LIBRUBYARG])
+ AC_SUBST(RUBY_ARCHDIR)
+ AC_SUBST(RUBY_SITEARCHDIR)
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-fallback_to_ruby19_pc_file.patch b/redhat/kdebindings/kdebindings-3.5.13.1-fallback_to_ruby19_pc_file.patch
new file mode 100644
index 000000000..85c496d10
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-fallback_to_ruby19_pc_file.patch
@@ -0,0 +1,34 @@
+commit 2f6e9c735fe8486ee3484c47c0e8ff999b699abc
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1347987185 -0500
+
+ Fall back to ruby-1.9 pkgconfig file if needed
+
+diff --git a/korundum/rubylib/korundum/configure.in.in b/korundum/rubylib/korundum/configure.in.in
+index e4ab2fd..924f42f 100644
+--- a/korundum/rubylib/korundum/configure.in.in
++++ b/korundum/rubylib/korundum/configure.in.in
+@@ -10,6 +10,9 @@ else
+ AC_MSG_CHECKING(for ruby dirs)
+ if test -n "$PKGCONFIG"; then
+ RUBY_VERSION=`$PKGCONFIG ruby --modversion 2>/dev/null`
++ if test -z "$RUBY_VERSION"; then
++ RUBY_VERSION=`$PKGCONFIG ruby-1.9 --modversion 2>/dev/null`
++ fi
+ if test -n "$RUBY_VERSION"; then
+ RUBY_ARCHDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"archdir"@:>@)'`
+ RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitearchdir"@:>@)'`
+diff --git a/qtruby/rubylib/qtruby/configure.in.in b/qtruby/rubylib/qtruby/configure.in.in
+index 7ad0e4d..e7f4f2c 100644
+--- a/qtruby/rubylib/qtruby/configure.in.in
++++ b/qtruby/rubylib/qtruby/configure.in.in
+@@ -10,6 +10,9 @@ else
+ AC_MSG_CHECKING(for ruby dirs)
+ if test -n "$PKGCONFIG"; then
+ RUBY_VERSION=`$PKGCONFIG ruby --modversion 2>/dev/null`
++ if test -z "$RUBY_VERSION"; then
++ RUBY_VERSION=`$PKGCONFIG ruby-1.9 --modversion 2>/dev/null`
++ fi
+ if test -n "$RUBY_VERSION"; then
+ RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"archdir"@:>@)'`
+ RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitearchdir"@:>@)'`
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-fix_dcopjava_ldflags.patch b/redhat/kdebindings/kdebindings-3.5.13.1-fix_dcopjava_ldflags.patch
new file mode 100644
index 000000000..99fceae54
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-fix_dcopjava_ldflags.patch
@@ -0,0 +1,11 @@
+--- kdebindings-3.5.13.1/dcopjava/binding/Makefile.am.ORI 2012-09-29 19:17:32.829295550 +0200
++++ kdebindings-3.5.13.1/dcopjava/binding/Makefile.am 2012-09-29 19:17:07.309943594 +0200
+@@ -1,7 +1,7 @@
+ lib_LTLIBRARIES = libjavadcop.la
+
+ libjavadcop_la_SOURCES = client.cpp
+-libjavadcop_la_LDFLAGS = $(KDE_LDFLAGS) $(KDE_PLUGIN) -lDCOP -lkdecore -lkdeui $(LIB_QT) -lkjs -lkdefx
++libjavadcop_la_LDFLAGS = $(KDE_LDFLAGS) $(KDE_PLUGIN) -lDCOP -lkdecore -lkdeui $(LIB_QT) -lkjs -lkdefx $(QT_LDFLAGS)
+ libjavadcop_la_LIBADD = $(LIB_KDECORE)
+
+ INCLUDES = $(jni_includes) $(all_includes)
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_on_x86.patch b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_on_x86.patch
new file mode 100644
index 000000000..9190c9940
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_on_x86.patch
@@ -0,0 +1,82 @@
+commit a901a1232ab8f8432c63dc97e0efd9fed051d2c7
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1348264715 -0500
+
+ Fix FTBFS on x86 systems
+
+diff --git a/korundum/bin/krubyinit.cpp b/korundum/bin/krubyinit.cpp
+index 12b0f6e..2a7f6c5 100644
+--- a/korundum/bin/krubyinit.cpp
++++ b/korundum/bin/krubyinit.cpp
+@@ -1,5 +1,7 @@
+ #include <ruby.h>
+
++#define HAVE_STRLCAT_PROTO 1
++#define HAVE_STRLCPY_PROTO 1
+ #include "config.h"
+
+ #ifndef HAVE_RUBY_1_9
+diff --git a/korundum/rubylib/korundum/Korundum.cpp b/korundum/rubylib/korundum/Korundum.cpp
+index 124e2a1..da9f099 100644
+--- a/korundum/rubylib/korundum/Korundum.cpp
++++ b/korundum/rubylib/korundum/Korundum.cpp
+@@ -40,6 +40,8 @@
+ #include <smokeruby.h>
+ #include <smoke.h>
+
++#define HAVE_STRLCAT_PROTO 1
++#define HAVE_STRLCPY_PROTO 1
+ #include "config.h"
+
+ #ifndef HAVE_RUBY_1_9
+diff --git a/korundum/rubylib/korundum/kdehandlers.cpp b/korundum/rubylib/korundum/kdehandlers.cpp
+index 6961301..11b97b5 100644
+--- a/korundum/rubylib/korundum/kdehandlers.cpp
++++ b/korundum/rubylib/korundum/kdehandlers.cpp
+@@ -52,6 +52,8 @@
+ #include <dom/dom_string.h>
+ #include <dom/html_element.h>
+
++#define HAVE_STRLCAT_PROTO 1
++#define HAVE_STRLCPY_PROTO 1
+ #include "config.h"
+
+ #ifndef HAVE_RUBY_1_9
+diff --git a/qtruby/bin/qtrubyinit.cpp b/qtruby/bin/qtrubyinit.cpp
+index c9569d9..dd732b1 100644
+--- a/qtruby/bin/qtrubyinit.cpp
++++ b/qtruby/bin/qtrubyinit.cpp
+@@ -1,5 +1,7 @@
+ #include <ruby.h>
+
++#define HAVE_STRLCAT_PROTO 1
++#define HAVE_STRLCPY_PROTO 1
+ #include "config.h"
+
+ #ifndef HAVE_RUBY_1_9
+diff --git a/qtruby/rubylib/qtruby/Qt.cpp b/qtruby/rubylib/qtruby/Qt.cpp
+index 370ad6d..b264d44 100644
+--- a/qtruby/rubylib/qtruby/Qt.cpp
++++ b/qtruby/rubylib/qtruby/Qt.cpp
+@@ -60,6 +60,8 @@
+ #include "smokeruby.h"
+ #include "smoke.h"
+
++#define HAVE_STRLCAT_PROTO 1
++#define HAVE_STRLCPY_PROTO 1
+ #include "config.h"
+
+ #ifndef HAVE_RUBY_1_9
+diff --git a/qtruby/rubylib/qtruby/handlers.cpp b/qtruby/rubylib/qtruby/handlers.cpp
+index f3d0dda..2f6b5e7 100644
+--- a/qtruby/rubylib/qtruby/handlers.cpp
++++ b/qtruby/rubylib/qtruby/handlers.cpp
+@@ -47,6 +47,8 @@
+ #define HINT_BYTES HINT_BYTE
+ #endif
+
++#define HAVE_STRLCAT_PROTO 1
++#define HAVE_STRLCPY_PROTO 1
+ #include "config.h"
+
+ #ifndef HAVE_RUBY_1_9
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby18.patch b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby18.patch
new file mode 100644
index 000000000..2798aa904
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby18.patch
@@ -0,0 +1,56 @@
+commit 14594d81891b0bdf9aa03f72b88d6939eee59f02
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1347389903 -0500
+
+ Fix FTBFS on ruby 1.8.x
+
+diff --git a/korundum/bin/krubyinit.cpp b/korundum/bin/krubyinit.cpp
+index f53f830..12b0f6e 100644
+--- a/korundum/bin/krubyinit.cpp
++++ b/korundum/bin/krubyinit.cpp
+@@ -25,13 +25,18 @@
+ * *
+ ***************************************************************************/
+
+-// this name can be used to allow apps
++// this name can be used to allow apps
+ // to detect what they were started with
+ static const char* script_name = "krubyinit_app";
+
+ int main(int argc, char **argv) {
+ ruby_init();
+ ruby_script((char*)script_name);
+- void* node = ruby_options(argc, argv);
++#ifdef HAVE_RUBY_1_9
++ void* node = ruby_options(argc, argv);
+ ruby_run_node(node);
++#else // HAVE_RUBY_1_9
++ ruby_options(argc, argv);
++ ruby_run();
++#endif // HAVE_RUBY_1_9
+ }
+diff --git a/qtruby/bin/qtrubyinit.cpp b/qtruby/bin/qtrubyinit.cpp
+index 65c00c4..c9569d9 100644
+--- a/qtruby/bin/qtrubyinit.cpp
++++ b/qtruby/bin/qtrubyinit.cpp
+@@ -25,13 +25,18 @@ qrubyinit - makes use of tdeinit_wrapper possible for ruby programs
+ * *
+ ***************************************************************************/
+
+-// this name can be used to allow apps
++// this name can be used to allow apps
+ // to detect what they were started with
+ static const char* script_name = "qrubyinit_app";
+
+ int main(int argc, char **argv) {
+ ruby_init();
+ ruby_script((char*)script_name);
+- void* node = ruby_options(argc, argv);
++#ifdef HAVE_RUBY_1_9
++ void* node = ruby_options(argc, argv);
+ ruby_run_node(node);
++#else // HAVE_RUBY_1_9
++ ruby_options(argc, argv);
++ ruby_run();
++#endif // HAVE_RUBY_1_9
+ }
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby19.patch b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby19.patch
new file mode 100644
index 000000000..aefdb6019
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ftbfs_ruby19.patch
@@ -0,0 +1,683 @@
+commit ef7a60860d18e9be343b6fa5fe8d76fd080cead0
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1347385969 -0500
+
+ Fix FTBS on ruby 1.9.x
+ Thanks to Darrell Anderson for the majority of the patch!
+
+diff --git a/korundum/bin/Makefile.am b/korundum/bin/Makefile.am
+index f8c0942..4c3e637 100644
+--- a/korundum/bin/Makefile.am
++++ b/korundum/bin/Makefile.am
+@@ -1,4 +1,4 @@
+-INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR)
++INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
+
+ bin_PROGRAMS = krubyinit
+ krubyinit_LDFLAGS = -module $(all_libraries) -version-info 0:0:0 -L$(top_srcdir)/smoke/kde/ -L$(RUBY_LIBDIR) -lkmdi -lknewstuff
+diff --git a/korundum/bin/krubyinit.cpp b/korundum/bin/krubyinit.cpp
+index 7ed0b0a..f53f830 100644
+--- a/korundum/bin/krubyinit.cpp
++++ b/korundum/bin/krubyinit.cpp
+@@ -1,5 +1,13 @@
+ #include <ruby.h>
+
++#include "config.h"
++
++#ifndef HAVE_RUBY_1_9
++#define RARRAY_LEN(x) (RARRAY(x)->len)
++#define RSTRING_LEN(x) (RSTRING(x)->len)
++#define rb_str_catf_1 rb_str_catf
++#endif
++
+ /***************************************************************************
+ krubyinit - makes use of kdeinit_wrapper possible for ruby programs
+ -------------------
+@@ -24,6 +32,6 @@ static const char* script_name = "krubyinit_app";
+ int main(int argc, char **argv) {
+ ruby_init();
+ ruby_script((char*)script_name);
+- ruby_options(argc, argv);
+- ruby_run();
++ void* node = ruby_options(argc, argv);
++ ruby_run_node(node);
+ }
+diff --git a/korundum/rubylib/korundum/Korundum.cpp b/korundum/rubylib/korundum/Korundum.cpp
+index cc3ce2a..124e2a1 100644
+--- a/korundum/rubylib/korundum/Korundum.cpp
++++ b/korundum/rubylib/korundum/Korundum.cpp
+@@ -40,6 +40,14 @@
+ #include <smokeruby.h>
+ #include <smoke.h>
+
++#include "config.h"
++
++#ifndef HAVE_RUBY_1_9
++#define RARRAY_LEN(x) (RARRAY(x)->len)
++#define RSTRING_LEN(x) (RSTRING(x)->len)
++#define rb_str_catf_1 rb_str_catf
++#endif
++
+ extern "C" {
+ extern VALUE qt_internal_module;
+ extern VALUE kconfigskeleton_class;
+@@ -805,7 +813,7 @@ public:
+ // isn't in the Smoke runtime
+ TQValueList<DCOPRef> windowList;
+
+- for (long i = 0; i < RARRAY(result)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(result); i++) {
+ VALUE item = rb_ary_entry(result, i);
+ smokeruby_object *o = value_obj_info(item);
+ if( !o || !o->ptr)
+@@ -822,7 +830,7 @@ public:
+ // And special case this type too
+ TQValueList<TQCString> propertyList;
+
+- for (long i = 0; i < RARRAY(result)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(result); i++) {
+ VALUE item = rb_ary_entry(result, i);
+ propertyList.append(TQCString(StringValuePtr(item)));
+ }
+@@ -836,7 +844,7 @@ public:
+ // Convert the ruby hash to an array of key/value arrays
+ VALUE temp = rb_funcall(result, rb_intern("to_a"), 0);
+
+- for (long i = 0; i < RARRAY(temp)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(temp); i++) {
+ VALUE action = rb_ary_entry(rb_ary_entry(temp, i), 0);
+ VALUE item = rb_ary_entry(rb_ary_entry(temp, i), 1);
+
+@@ -926,7 +934,7 @@ k_dcop_signal(int argc, VALUE * argv, VALUE self)
+ {
+ VALUE dcopObject = rb_funcall(kde_module, rb_intern("createDCOPObject"), 1, self);
+
+- TQString signalname(rb_id2name(rb_frame_last_func()));
++ TQString signalname(rb_id2name(rb_frame_this_func()));
+ VALUE args = getdcopinfo(self, signalname);
+
+ if(args == Qnil) return Qfalse;
+@@ -1020,7 +1028,7 @@ new_kde(int argc, VALUE * argv, VALUE klass)
+
+ if (rb_funcall(kde_module, rb_intern("hasDCOPSignals"), 1, klass) == Qtrue) {
+ VALUE signalNames = rb_funcall(kde_module, rb_intern("getDCOPSignalNames"), 1, klass);
+- for (long index = 0; index < RARRAY(signalNames)->len; index++) {
++ for (long index = 0; index < RARRAY_LEN(signalNames); index++) {
+ VALUE signal = rb_ary_entry(signalNames, index);
+ rb_define_method(klass, StringValuePtr(signal), (VALUE (*) (...)) k_dcop_signal, -1);
+ }
+@@ -1088,9 +1096,9 @@ konsole_part_startprogram(VALUE self, VALUE value_program, VALUE value_args)
+ TQStrList *args = new TQStrList;
+
+ if (value_args != Qnil) {
+- for (long i = 0; i < RARRAY(value_args)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(value_args); i++) {
+ VALUE item = rb_ary_entry(value_args, i);
+- args->append(TQString::fromLatin1(StringValuePtr(item), RSTRING(item)->len));
++ args->append(TQString::fromLatin1(StringValuePtr(item), RSTRING_LEN(item)));
+ }
+ }
+
+diff --git a/korundum/rubylib/korundum/kdehandlers.cpp b/korundum/rubylib/korundum/kdehandlers.cpp
+index 70932d5..6961301 100644
+--- a/korundum/rubylib/korundum/kdehandlers.cpp
++++ b/korundum/rubylib/korundum/kdehandlers.cpp
+@@ -52,6 +52,14 @@
+ #include <dom/dom_string.h>
+ #include <dom/html_element.h>
+
++#include "config.h"
++
++#ifndef HAVE_RUBY_1_9
++#define RARRAY_LEN(x) (RARRAY(x)->len)
++#define RSTRING_LEN(x) (RSTRING(x)->len)
++#define rb_str_catf_1 rb_str_catf
++#endif
++
+ extern "C" {
+ extern VALUE set_obj_info(const char * className, smokeruby_object * o);
+ };
+@@ -122,7 +130,7 @@ void marshall_TQCStringList(Marshall *m) {
+ break;
+ }
+
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ QCStringList *stringlist = new QCStringList;
+
+ for(long i = 0; i < count; i++) {
+@@ -131,7 +139,7 @@ void marshall_TQCStringList(Marshall *m) {
+ stringlist->append(TQCString());
+ continue;
+ }
+- stringlist->append(TQCString(StringValuePtr(item), RSTRING(item)->len + 1));
++ stringlist->append(TQCString(StringValuePtr(item), RSTRING_LEN(item) + 1));
+ }
+
+ m->item().s_voidp = stringlist;
+@@ -184,19 +192,19 @@ void marshall_KCmdLineOptions(Marshall *m) {
+ VALUE optionslist = *(m->var());
+ if (optionslist == Qnil
+ || TYPE(optionslist) != T_ARRAY
+- || RARRAY(optionslist)->len == 0 )
++ || RARRAY_LEN(optionslist) == 0 )
+ {
+ m->item().s_voidp = 0;
+ break;
+ }
+
+ // Allocate 'length + 1' entries, to include an all NULLs last entry
+- KCmdLineOptions *cmdLineOptions = (KCmdLineOptions *) calloc( RARRAY(optionslist)->len + 1,
++ KCmdLineOptions *cmdLineOptions = (KCmdLineOptions *) calloc( RARRAY_LEN(optionslist) + 1,
+ sizeof(struct KCmdLineOptions) );
+
+ VALUE options;
+ long i;
+- for(i = 0; i < RARRAY(optionslist)->len; i++) {
++ for(i = 0; i < RARRAY_LEN(optionslist); i++) {
+ options = rb_ary_entry(optionslist, i);
+ VALUE temp = rb_ary_entry(options, 0);
+ cmdLineOptions[i].name = StringValuePtr(temp);
+@@ -244,7 +252,7 @@ void marshall_WIdList(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ TQValueList<WId> *valuelist = new TQValueList<WId>;
+ long i;
+ for(i = 0; i < count; i++) {
+@@ -815,7 +823,7 @@ void marshall_KURLList(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ KURL::List *kurllist = new KURL::List;
+ long i;
+ for(i = 0; i < count; i++) {
+@@ -916,11 +924,11 @@ void marshall_UDSEntryList(Marshall *m) {
+
+ KIO::UDSEntryList *cpplist = new KIO::UDSEntryList;
+
+- for(long i = 0; i < RARRAY(list)->len; i++) {
++ for(long i = 0; i < RARRAY_LEN(list); i++) {
+ VALUE item = rb_ary_entry(list, i);
+ KIO::UDSEntry *cppsublist = new KIO::UDSEntry;
+
+- for (int j = 0; j < RARRAY(item)->len; j++) {
++ for (int j = 0; j < RARRAY_LEN(item); j++) {
+ VALUE subitem = rb_ary_entry(item, j);
+ smokeruby_object *o = value_obj_info(subitem);
+ if(!o || !o->ptr)
+@@ -998,7 +1006,7 @@ void marshall_ItemList(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ ItemList *cpplist = new ItemList;
+ long i;
+ for(i = 0; i < count; i++) {
+@@ -1103,7 +1111,7 @@ void marshall_ValueItemList(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ ItemList *cpplist = new ItemList;
+ long i;
+ for(i = 0; i < count; i++) {
+@@ -1211,7 +1219,7 @@ void marshall_Map(Marshall *m) {
+ // Convert the ruby hash to an array of key/value arrays
+ VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
+
+- for (long i = 0; i < RARRAY(temp)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(temp); i++) {
+ VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
+ VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);
+
+@@ -1316,7 +1324,7 @@ void marshall_TQMapTQCStringDCOPRef(Marshall *m) {
+ // Convert the ruby hash to an array of key/value arrays
+ VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
+
+- for (long i = 0; i < RARRAY(temp)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(temp); i++) {
+ VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
+ VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);
+
+diff --git a/qtruby/bin/Makefile.am b/qtruby/bin/Makefile.am
+index e53bd0f..0e1dbdb 100644
+--- a/qtruby/bin/Makefile.am
++++ b/qtruby/bin/Makefile.am
+@@ -1,4 +1,4 @@
+-INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR)
++INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
+
+ bin_PROGRAMS = qtrubyinit
+ qtrubyinit_LDFLAGS = -module $(all_libraries) -version-info 0:0:0 -L$(top_srcdir)/smoke/qt/ -L$(RUBY_LIBDIR)
+diff --git a/qtruby/bin/qtrubyinit.cpp b/qtruby/bin/qtrubyinit.cpp
+index c4e8024..65c00c4 100644
+--- a/qtruby/bin/qtrubyinit.cpp
++++ b/qtruby/bin/qtrubyinit.cpp
+@@ -1,5 +1,13 @@
+ #include <ruby.h>
+
++#include "config.h"
++
++#ifndef HAVE_RUBY_1_9
++#define RARRAY_LEN(x) (RARRAY(x)->len)
++#define RSTRING_LEN(x) (RSTRING(x)->len)
++#define rb_str_catf_1 rb_str_catf
++#endif
++
+ /***************************************************************************
+ qrubyinit - makes use of kdeinit_wrapper possible for ruby programs
+ -------------------
+@@ -24,6 +32,6 @@ static const char* script_name = "qrubyinit_app";
+ int main(int argc, char **argv) {
+ ruby_init();
+ ruby_script((char*)script_name);
+- ruby_options(argc, argv);
+- ruby_run();
++ void* node = ruby_options(argc, argv);
++ ruby_run_node(node);
+ }
+diff --git a/qtruby/rubylib/designer/uilib/Makefile.am b/qtruby/rubylib/designer/uilib/Makefile.am
+index 04ce1c8..9900635 100644
+--- a/qtruby/rubylib/designer/uilib/Makefile.am
++++ b/qtruby/rubylib/designer/uilib/Makefile.am
+@@ -1,7 +1,7 @@
+-INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR)
++INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
+
+ rubylibdir = $(RUBY_ARCHDIR)
+ rubylib_LTLIBRARIES = qui.la
+ qui_la_SOURCES = qui.cpp
+ qui_la_LDFLAGS = -module -export-dynamic $(all_libraries) -version-info 0:0:0
+-qui_la_LIBADD = -lqui
+\ No newline at end of file
++qui_la_LIBADD = -lqui
+diff --git a/qtruby/rubylib/qtruby/Qt.cpp b/qtruby/rubylib/qtruby/Qt.cpp
+index 3d71cfc..370ad6d 100644
+--- a/qtruby/rubylib/qtruby/Qt.cpp
++++ b/qtruby/rubylib/qtruby/Qt.cpp
+@@ -60,6 +60,14 @@
+ #include "smokeruby.h"
+ #include "smoke.h"
+
++#include "config.h"
++
++#ifndef HAVE_RUBY_1_9
++#define RARRAY_LEN(x) (RARRAY(x)->len)
++#define RSTRING_LEN(x) (RSTRING(x)->len)
++#define rb_str_catf_1 rb_str_catf
++#endif
++
+ // #define DEBUG
+
+ #define QTRUBY_VERSION "1.0.13"
+@@ -110,7 +118,7 @@ bool application_terminated = false;
+ };
+
+ #define logger logger_backend
+-void rb_str_catf(VALUE self, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
++void rb_str_catf_1(VALUE self, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
+
+ static VALUE (*_new_kde)(int, VALUE *, VALUE) = 0;
+ static VALUE (*_kconfigskeletonitem_immutable)(VALUE) = 0;
+@@ -820,7 +828,7 @@ public:
+ }
+ };
+
+-void rb_str_catf(VALUE self, const char *format, ...)
++void rb_str_catf_1(VALUE self, const char *format, ...)
+ {
+ va_list ap;
+ va_start(ap, format);
+@@ -985,16 +993,16 @@ VALUE prettyPrintMethod(Smoke::Index id)
+ VALUE r = rb_str_new2("");
+ Smoke::Method &meth = qt_Smoke->methods[id];
+ const char *tname = qt_Smoke->types[meth.ret].name;
+- if(meth.flags & Smoke::mf_static) rb_str_catf(r, "static ");
+- rb_str_catf(r, "%s ", (tname ? tname:"void"));
+- rb_str_catf(r, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
++ if(meth.flags & Smoke::mf_static) rb_str_catf_1(r, "static ");
++ rb_str_catf_1(r, "%s ", (tname ? tname:"void"));
++ rb_str_catf_1(r, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
+ for(int i = 0; i < meth.numArgs; i++) {
+- if(i) rb_str_catf(r, ", ");
++ if(i) rb_str_catf_1(r, ", ");
+ tname = qt_Smoke->types[qt_Smoke->argumentList[meth.args+i]].name;
+- rb_str_catf(r, "%s", (tname ? tname:"void"));
++ rb_str_catf_1(r, "%s", (tname ? tname:"void"));
+ }
+- rb_str_catf(r, ")");
+- if(meth.flags & Smoke::mf_const) rb_str_catf(r, " const");
++ rb_str_catf_1(r, ")");
++ if(meth.flags & Smoke::mf_const) rb_str_catf_1(r, " const");
+ return r;
+ }
+
+@@ -1177,7 +1185,7 @@ inspect_qobject(VALUE self)
+ // Start with #<Qt::HBoxLayout:0x30139030> from the original inspect() call
+ // Drop the closing '>'
+ VALUE inspect_str = rb_call_super(0, 0);
+- rb_str_resize(inspect_str, RSTRING(inspect_str)->len - 1);
++ rb_str_resize(inspect_str, RSTRING_LEN(inspect_str) - 1);
+
+ smokeruby_object * o = 0;
+ Data_Get_Struct(self, smokeruby_object, o);
+@@ -1220,7 +1228,7 @@ pretty_print_qobject(VALUE self, VALUE pp)
+ // Start with #<Qt::HBoxLayout:0x30139030>
+ // Drop the closing '>'
+ VALUE inspect_str = rb_funcall(self, rb_intern("to_s"), 0, 0);
+- rb_str_resize(inspect_str, RSTRING(inspect_str)->len - 1);
++ rb_str_resize(inspect_str, RSTRING_LEN(inspect_str) - 1);
+ rb_funcall(pp, rb_intern("text"), 1, inspect_str);
+ rb_funcall(pp, rb_intern("breakable"), 0);
+
+@@ -1236,7 +1244,7 @@ pretty_print_qobject(VALUE self, VALUE pp)
+ VALUE obj = getPointerObject(qobject->parent());
+ if (obj != Qnil) {
+ VALUE parent_inspect_str = rb_funcall(obj, rb_intern("to_s"), 0, 0);
+- rb_str_resize(parent_inspect_str, RSTRING(parent_inspect_str)->len - 1);
++ rb_str_resize(parent_inspect_str, RSTRING_LEN(parent_inspect_str) - 1);
+ parentInspectString = StringValuePtr(parent_inspect_str);
+ } else {
+ parentInspectString.sprintf("#<%s:0x0", qobject->parent()->className());
+@@ -1382,7 +1390,7 @@ static Smoke::Index new_qvariant_qmap = 0;
+ return *(c.var());
+ } else if ( argc == 1
+ && TYPE(argv[0]) == T_ARRAY
+- && RARRAY(argv[0])->len > 0
++ && RARRAY_LEN(argv[0]) > 0
+ && TYPE(rb_ary_entry(argv[0], 0)) != T_STRING )
+ {
+ _current_method = new_qvariant_qlist;
+@@ -1741,7 +1749,7 @@ new_qapplication(int argc, VALUE * argv, VALUE klass)
+ VALUE * local_argv = (VALUE *) calloc(argc + 1, sizeof(VALUE));
+ VALUE temp = rb_ary_dup(argv[0]);
+ rb_ary_unshift(temp, rb_gv_get("$0"));
+- local_argv[0] = INT2NUM(RARRAY(temp)->len);
++ local_argv[0] = INT2NUM(RARRAY_LEN(temp));
+ local_argv[1] = temp;
+ result = new_qt(2, local_argv, klass);
+ free(local_argv);
+@@ -1772,7 +1780,7 @@ qapplication_argv(VALUE /*self*/)
+ VALUE
+ getmetainfo(VALUE self, int &offset, int &index)
+ {
+- const char * signalname = rb_id2name(rb_frame_last_func());
++ const char * signalname = rb_id2name(rb_frame_this_func());
+ VALUE metaObject_value = rb_funcall(qt_internal_module, rb_intern("getMetaObject"), 1, self);
+
+ smokeruby_object *ometa = value_obj_info(metaObject_value);
+@@ -1862,7 +1870,7 @@ tqt_invoke(int /*argc*/, VALUE * argv, VALUE self)
+ // Now, I need to find out if this means me
+ int index;
+ char *slotname;
+- bool isSignal = qstrcmp(rb_id2name(rb_frame_last_func()), "qt_emit") == 0;
++ bool isSignal = qstrcmp(rb_id2name(rb_frame_this_func()), "qt_emit") == 0;
+ VALUE mocArgs = getslotinfo(self, id, slotname, index, isSignal);
+ if(mocArgs == Qnil) {
+ // No ruby slot/signal found, assume the target is a C++ one
+@@ -2009,7 +2017,7 @@ qbytearray_setRawData(VALUE self, VALUE data)
+ return Qnil;
+ }
+ TQByteArray * dataArray = (TQByteArray*) o->ptr;
+- dataArray->setRawData(StringValuePtr(data), RSTRING(data)->len);
++ dataArray->setRawData(StringValuePtr(data), RSTRING_LEN(data));
+ return self;
+ }
+
+@@ -2195,7 +2203,7 @@ make_QUMethod(VALUE /*self*/, VALUE name_value, VALUE params)
+ m->name = new char[strlen(name) + 1]; // this too
+ strcpy((char*)m->name, name);
+ m->parameters = 0;
+- m->count = RARRAY(params)->len;
++ m->count = RARRAY_LEN(params);
+
+ if (m->count > 0) {
+ m->parameters = new QUParameter[m->count];
+@@ -2213,7 +2221,7 @@ make_QUMethod(VALUE /*self*/, VALUE name_value, VALUE params)
+ static VALUE
+ make_QMetaData_tbl(VALUE /*self*/, VALUE list)
+ {
+- long count = RARRAY(list)->len;
++ long count = RARRAY_LEN(list);
+ QMetaData *m = new QMetaData[count];
+
+ for (long i = 0; i < count; i++) {
+@@ -2281,7 +2289,7 @@ add_metaobject_methods(VALUE self, VALUE klass)
+ static VALUE
+ add_signal_methods(VALUE self, VALUE klass, VALUE signalNames)
+ {
+- for (long index = 0; index < RARRAY(signalNames)->len; index++) {
++ for (long index = 0; index < RARRAY_LEN(signalNames); index++) {
+ VALUE signal = rb_ary_entry(signalNames, index);
+ rb_define_method(klass, StringValuePtr(signal), (VALUE (*) (...)) qt_signal, -1);
+ }
+@@ -2597,28 +2605,28 @@ dumpCandidates(VALUE /*self*/, VALUE rmeths)
+ {
+ VALUE errmsg = rb_str_new2("");
+ if(rmeths != Qnil) {
+- int count = RARRAY(rmeths)->len;
++ int count = RARRAY_LEN(rmeths);
+ for(int i = 0; i < count; i++) {
+- rb_str_catf(errmsg, "\t");
++ rb_str_catf_1(errmsg, "\t");
+ int id = NUM2INT(rb_ary_entry(rmeths, i));
+ Smoke::Method &meth = qt_Smoke->methods[id];
+ const char *tname = qt_Smoke->types[meth.ret].name;
+ if(meth.flags & Smoke::mf_enum) {
+- rb_str_catf(errmsg, "enum ");
+- rb_str_catf(errmsg, "%s::%s", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
+- rb_str_catf(errmsg, "\n");
++ rb_str_catf_1(errmsg, "enum ");
++ rb_str_catf_1(errmsg, "%s::%s", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
++ rb_str_catf_1(errmsg, "\n");
+ } else {
+ if(meth.flags & Smoke::mf_static) rb_str_catf(errmsg, "static ");
+- rb_str_catf(errmsg, "%s ", (tname ? tname:"void"));
+- rb_str_catf(errmsg, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
++ rb_str_catf_1(errmsg, "%s ", (tname ? tname:"void"));
++ rb_str_catf_1(errmsg, "%s::%s(", qt_Smoke->classes[meth.classId].className, qt_Smoke->methodNames[meth.name]);
+ for(int i = 0; i < meth.numArgs; i++) {
+- if(i) rb_str_catf(errmsg, ", ");
++ if(i) rb_str_catf_1(errmsg, ", ");
+ tname = qt_Smoke->types[qt_Smoke->argumentList[meth.args+i]].name;
+- rb_str_catf(errmsg, "%s", (tname ? tname:"void"));
++ rb_str_catf_1(errmsg, "%s", (tname ? tname:"void"));
+ }
+- rb_str_catf(errmsg, ")");
+- if(meth.flags & Smoke::mf_const) rb_str_catf(errmsg, " const");
+- rb_str_catf(errmsg, "\n");
++ rb_str_catf_1(errmsg, ")");
++ if(meth.flags & Smoke::mf_const) rb_str_catf_1(errmsg, " const");
++ rb_str_catf_1(errmsg, "\n");
+ }
+ }
+ }
+diff --git a/qtruby/rubylib/qtruby/handlers.cpp b/qtruby/rubylib/qtruby/handlers.cpp
+index 703c9d0..f3d0dda 100644
+--- a/qtruby/rubylib/qtruby/handlers.cpp
++++ b/qtruby/rubylib/qtruby/handlers.cpp
+@@ -47,6 +47,14 @@
+ #define HINT_BYTES HINT_BYTE
+ #endif
+
++#include "config.h"
++
++#ifndef HAVE_RUBY_1_9
++#define RARRAY_LEN(x) (RARRAY(x)->len)
++#define RSTRING_LEN(x) (RSTRING(x)->len)
++#define rb_str_catf_1 rb_str_catf
++#endif
++
+ extern "C" {
+ extern VALUE set_obj_info(const char * className, smokeruby_object * o);
+ extern VALUE qt_internal_module;
+@@ -755,7 +763,7 @@ static void marshall_charP(Marshall *m) {
+ break;
+ }
+
+- int len = RSTRING(rv)->len;
++ int len = RSTRING_LEN(rv);
+ char* mem = (char*) malloc(len+1);
+ memcpy(mem, StringValuePtr(rv), len);
+ mem[len] ='\0';
+@@ -788,7 +796,7 @@ void marshall_ucharP(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int len = RSTRING(rv)->len;
++ int len = RSTRING_LEN(rv);
+ char* mem = (char*) malloc(len+1);
+ memcpy(mem, StringValuePtr(rv), len);
+ mem[len] ='\0';
+@@ -824,7 +832,7 @@ qstringFromRString(VALUE rstring) {
+
+ TQString * s;
+ if (qstrcmp(KCODE, "UTF8") == 0)
+- s = new TQString(TQString::fromUtf8(StringValuePtr(rstring), RSTRING(rstring)->len));
++ s = new TQString(TQString::fromUtf8(StringValuePtr(rstring), RSTRING_LEN(rstring)));
+ else if (qstrcmp(KCODE, "EUC") == 0)
+ s = new TQString(codec->toUnicode(StringValuePtr(rstring)));
+ else if (qstrcmp(KCODE, "SJIS") == 0)
+@@ -832,7 +840,7 @@ qstringFromRString(VALUE rstring) {
+ else if(qstrcmp(KCODE, "NONE") == 0)
+ s = new TQString(TQString::fromLatin1(StringValuePtr(rstring)));
+ else
+- s = new TQString(TQString::fromLocal8Bit(StringValuePtr(rstring), RSTRING(rstring)->len));
++ s = new TQString(TQString::fromLocal8Bit(StringValuePtr(rstring), RSTRING_LEN(rstring)));
+ return s;
+ }
+
+@@ -944,7 +952,7 @@ static void marshall_TQCString(Marshall *m) {
+ s = new TQCString();
+ } else {
+ // Add 1 to the ruby string length to allow for a TQCString '\0' terminator
+- s = new TQCString(StringValuePtr(*(m->var())), RSTRING(*(m->var()))->len + 1);
++ s = new TQCString(StringValuePtr(*(m->var())), RSTRING_LEN(*(m->var())) + 1);
+ }
+ m->item().s_voidp = s;
+
+@@ -1007,7 +1015,7 @@ static void marshall_TQCOORD_array(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(av)->len;
++ int count = RARRAY_LEN(av);
+ QCOORD *coord = new QCOORD[count + 2];
+ for(long i = 0; i < count; i++) {
+ VALUE svp = rb_ary_entry(av, i);
+@@ -1167,15 +1175,15 @@ static void marshall_charP_array(Marshall *m) {
+ VALUE arglist = *(m->var());
+ if (arglist == Qnil
+ || TYPE(arglist) != T_ARRAY
+- || RARRAY(arglist)->len == 0 )
++ || RARRAY_LEN(arglist) == 0 )
+ {
+ m->item().s_voidp = 0;
+ break;
+ }
+
+- char **argv = new char *[RARRAY(arglist)->len + 1];
++ char **argv = new char *[RARRAY_LEN(arglist) + 1];
+ long i;
+- for(i = 0; i < RARRAY(arglist)->len; i++) {
++ for(i = 0; i < RARRAY_LEN(arglist); i++) {
+ VALUE item = rb_ary_entry(arglist, i);
+ char *s = StringValuePtr(item);
+ argv[i] = new char[strlen(s) + 1];
+@@ -1207,7 +1215,7 @@ void marshall_TQStringList(Marshall *m) {
+ break;
+ }
+
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ TQStringList *stringlist = new QStringList;
+
+ for(long i = 0; i < count; i++) {
+@@ -1269,7 +1277,7 @@ void marshall_TQStrList(Marshall *m) {
+ break;
+ }
+
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ TQStrList *stringlist = new QStrList;
+
+ for(long i = 0; i < count; i++) {
+@@ -1278,7 +1286,7 @@ void marshall_TQStrList(Marshall *m) {
+ stringlist->append(TQString());
+ continue;
+ }
+- stringlist->append(TQString::fromUtf8(StringValuePtr(item), RSTRING(item)->len));
++ stringlist->append(TQString::fromUtf8(StringValuePtr(item), RSTRING_LEN(item)));
+ }
+
+ m->item().s_voidp = stringlist;
+@@ -1331,7 +1339,7 @@ void marshall_ItemList(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ ItemList *cpplist = new ItemList;
+ long i;
+ for(i = 0; i < count; i++) {
+@@ -1421,7 +1429,7 @@ void marshall_TQValueListInt(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ TQValueList<int> *valuelist = new TQValueList<int>;
+ long i;
+ for(i = 0; i < count; i++) {
+@@ -1513,7 +1521,7 @@ void marshall_TQMapTQStringTQString(Marshall *m) {
+ // Convert the ruby hash to an array of key/value arrays
+ VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
+
+- for (long i = 0; i < RARRAY(temp)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(temp); i++) {
+ VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
+ VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);
+ (*map)[TQString(StringValuePtr(key))] = TQString(StringValuePtr(value));
+@@ -1569,7 +1577,7 @@ void marshall_TQMapTQStringTQVariant(Marshall *m) {
+ // Convert the ruby hash to an array of key/value arrays
+ VALUE temp = rb_funcall(hash, rb_intern("to_a"), 0);
+
+- for (long i = 0; i < RARRAY(temp)->len; i++) {
++ for (long i = 0; i < RARRAY_LEN(temp); i++) {
+ VALUE key = rb_ary_entry(rb_ary_entry(temp, i), 0);
+ VALUE value = rb_ary_entry(rb_ary_entry(temp, i), 1);
+
+@@ -1673,7 +1681,7 @@ void marshall_TQRgb_array(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ QRgb *rgb = new QRgb[count + 2];
+ long i;
+ for(i = 0; i < count; i++) {
+@@ -1702,7 +1710,7 @@ void marshall_TQPairintint(Marshall *m) {
+ case Marshall::FromVALUE:
+ {
+ VALUE list = *(m->var());
+- if (TYPE(list) != T_ARRAY || RARRAY(list)->len != 2) {
++ if (TYPE(list) != T_ARRAY || RARRAY_LEN(list) != 2) {
+ m->item().s_voidp = 0;
+ break;
+ }
+@@ -1770,7 +1778,7 @@ void marshall_ValueItemList(Marshall *m) {
+ m->item().s_voidp = 0;
+ break;
+ }
+- int count = RARRAY(list)->len;
++ int count = RARRAY_LEN(list);
+ ItemList *cpplist = new ItemList;
+ long i;
+ for(i = 0; i < count; i++) {
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-fix_rhel5_ftbfs.patch b/redhat/kdebindings/kdebindings-3.5.13.1-fix_rhel5_ftbfs.patch
new file mode 100644
index 000000000..326e7c72e
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-fix_rhel5_ftbfs.patch
@@ -0,0 +1,31 @@
+--- kdebindings-3.5.13.1/qtruby/rubylib/qtruby/Qt.cpp.OLD 2012-09-29 20:08:00.156164195 +0200
++++ kdebindings-3.5.13.1/qtruby/rubylib/qtruby/Qt.cpp 2012-09-29 20:08:43.936538689 +0200
+@@ -1782,7 +1782,7 @@
+ VALUE
+ getmetainfo(VALUE self, int &offset, int &index)
+ {
+- const char * signalname = rb_id2name(rb_frame_this_func());
++ const char * signalname = rb_id2name(rb_frame_last_func());
+ VALUE metaObject_value = rb_funcall(qt_internal_module, rb_intern("getMetaObject"), 1, self);
+
+ smokeruby_object *ometa = value_obj_info(metaObject_value);
+@@ -1872,7 +1872,7 @@
+ // Now, I need to find out if this means me
+ int index;
+ char *slotname;
+- bool isSignal = qstrcmp(rb_id2name(rb_frame_this_func()), "qt_emit") == 0;
++ bool isSignal = qstrcmp(rb_id2name(rb_frame_last_func()), "qt_emit") == 0;
+ VALUE mocArgs = getslotinfo(self, id, slotname, index, isSignal);
+ if(mocArgs == Qnil) {
+ // No ruby slot/signal found, assume the target is a C++ one
+--- kdebindings-3.5.13.1/korundum/rubylib/korundum/Korundum.cpp.OLD 2012-09-29 20:11:43.597168589 +0200
++++ kdebindings-3.5.13.1/korundum/rubylib/korundum/Korundum.cpp 2012-09-29 20:11:56.908163792 +0200
+@@ -936,7 +936,7 @@
+ {
+ VALUE dcopObject = rb_funcall(kde_module, rb_intern("createDCOPObject"), 1, self);
+
+- TQString signalname(rb_id2name(rb_frame_this_func()));
++ TQString signalname(rb_id2name(rb_frame_last_func()));
+ VALUE args = getdcopinfo(self, signalname);
+
+ if(args == Qnil) return Qfalse;
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-fix_ruby_detect_when_pc_file_is_19.patch b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ruby_detect_when_pc_file_is_19.patch
new file mode 100644
index 000000000..f9fc1aec8
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-fix_ruby_detect_when_pc_file_is_19.patch
@@ -0,0 +1,55 @@
+commit 10fc891a7e282d2cbab27ab53d9b980147fadb9a
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1348248800 -0500
+
+ Fix Ruby detection when .pc file is ruby-1.9
+
+diff --git a/korundum/rubylib/korundum/configure.in.in b/korundum/rubylib/korundum/configure.in.in
+index 924f42f..e19d5b4 100644
+--- a/korundum/rubylib/korundum/configure.in.in
++++ b/korundum/rubylib/korundum/configure.in.in
+@@ -10,15 +10,17 @@ else
+ AC_MSG_CHECKING(for ruby dirs)
+ if test -n "$PKGCONFIG"; then
+ RUBY_VERSION=`$PKGCONFIG ruby --modversion 2>/dev/null`
+- if test -z "$RUBY_VERSION"; then
++ if test -n "$RUBY_VERSION"; then
++ RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
++ else
+ RUBY_VERSION=`$PKGCONFIG ruby-1.9 --modversion 2>/dev/null`
++ RUBY_CFLAGS=`$PKGCONFIG ruby-1.9 --cflags`
+ fi
+ if test -n "$RUBY_VERSION"; then
+ RUBY_ARCHDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"archdir"@:>@)'`
+ RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitearchdir"@:>@)'`
+ RUBY_SITEDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitelibdir"@:>@)'`
+ RUBY_RUBYLIBDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"rubylibdir"@:>@)'`
+- RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
+ AC_DEFINE_UNQUOTED(HAVE_RUBY_1_9, 1, [Defines if your system has Ruby 1.9.x])
+ fi
+ fi
+diff --git a/qtruby/rubylib/qtruby/configure.in.in b/qtruby/rubylib/qtruby/configure.in.in
+index e7f4f2c..f0594c6 100644
+--- a/qtruby/rubylib/qtruby/configure.in.in
++++ b/qtruby/rubylib/qtruby/configure.in.in
+@@ -10,8 +10,11 @@ else
+ AC_MSG_CHECKING(for ruby dirs)
+ if test -n "$PKGCONFIG"; then
+ RUBY_VERSION=`$PKGCONFIG ruby --modversion 2>/dev/null`
+- if test -z "$RUBY_VERSION"; then
++ if test -n "$RUBY_VERSION"; then
++ RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
++ else
+ RUBY_VERSION=`$PKGCONFIG ruby-1.9 --modversion 2>/dev/null`
++ RUBY_CFLAGS=`$PKGCONFIG ruby-1.9 --cflags`
+ fi
+ if test -n "$RUBY_VERSION"; then
+ RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"archdir"@:>@)'`
+@@ -20,7 +23,6 @@ else
+ RUBY_RUBYLIBDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"rubylibdir"@:>@)'`
+ RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"libdir"@:>@)'`
+ RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
+- RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
+ AC_DEFINE_UNQUOTED(HAVE_RUBY_1_9, 1, [Defines if your system has Ruby 1.9.x])
+ fi
+ fi
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-set_have_ruby19.patch b/redhat/kdebindings/kdebindings-3.5.13.1-set_have_ruby19.patch
new file mode 100644
index 000000000..9c41fd9eb
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-set_have_ruby19.patch
@@ -0,0 +1,30 @@
+commit 46659f992d49f86347c43528a8705657b6896cb7
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1347384077 -0500
+
+ Set HAVE_RUBY_1_9 if ruby 1.9.x installed
+
+diff --git a/korundum/rubylib/korundum/configure.in.in b/korundum/rubylib/korundum/configure.in.in
+index e0d581b..e4ab2fd 100644
+--- a/korundum/rubylib/korundum/configure.in.in
++++ b/korundum/rubylib/korundum/configure.in.in
+@@ -16,6 +16,7 @@ else
+ RUBY_SITEDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitelibdir"@:>@)'`
+ RUBY_RUBYLIBDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"rubylibdir"@:>@)'`
+ RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
++ AC_DEFINE_UNQUOTED(HAVE_RUBY_1_9, 1, [Defines if your system has Ruby 1.9.x])
+ fi
+ fi
+ if test -z "$RUBY_VERSION"; then
+diff --git a/qtruby/rubylib/qtruby/configure.in.in b/qtruby/rubylib/qtruby/configure.in.in
+index a875b2f..7ad0e4d 100644
+--- a/qtruby/rubylib/qtruby/configure.in.in
++++ b/qtruby/rubylib/qtruby/configure.in.in
+@@ -18,6 +18,7 @@ else
+ RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"libdir"@:>@)'`
+ RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
+ RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
++ AC_DEFINE_UNQUOTED(HAVE_RUBY_1_9, 1, [Defines if your system has Ruby 1.9.x])
+ fi
+ fi
+ if test -z "$RUBY_VERSION"; then
diff --git a/redhat/kdebindings/kdebindings-3.5.13.1-use_cflags_from_pc_file.patch b/redhat/kdebindings/kdebindings-3.5.13.1-use_cflags_from_pc_file.patch
new file mode 100644
index 000000000..ba6a6175f
--- /dev/null
+++ b/redhat/kdebindings/kdebindings-3.5.13.1-use_cflags_from_pc_file.patch
@@ -0,0 +1,78 @@
+commit c1faffb8ed0ebae85f21eb3e3ca81a2692a81ae9
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1347382645 -0500
+
+ Use cflags from ruby pc file
+
+diff --git a/korundum/rubylib/korundum/Makefile.am b/korundum/rubylib/korundum/Makefile.am
+index 5642728..541e3f5 100644
+--- a/korundum/rubylib/korundum/Makefile.am
++++ b/korundum/rubylib/korundum/Makefile.am
+@@ -1,4 +1,4 @@
+-INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR)
++INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
+
+ rubylibdir = $(RUBY_ARCHDIR)
+ rubylib_LTLIBRARIES = korundum.la
+diff --git a/korundum/rubylib/korundum/configure.in.in b/korundum/rubylib/korundum/configure.in.in
+index 5782123..e0d581b 100644
+--- a/korundum/rubylib/korundum/configure.in.in
++++ b/korundum/rubylib/korundum/configure.in.in
+@@ -15,6 +15,7 @@ else
+ RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitearchdir"@:>@)'`
+ RUBY_SITEDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"sitelibdir"@:>@)'`
+ RUBY_RUBYLIBDIR=`ruby -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"rubylibdir"@:>@)'`
++ RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
+ fi
+ fi
+ if test -z "$RUBY_VERSION"; then
+@@ -23,10 +24,11 @@ else
+ RUBY_SITEDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
+ RUBY_RUBYLIBDIR=`ruby -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"rubylibdir"@:>@)'`
+ fi
+- AC_MSG_RESULT([archdir $RUBY_ARCHDIR, sitearchdir $RUBY_SITEARCHDIR, sitedir $RUBY_SITEDIR])
++ AC_MSG_RESULT([archdir $RUBY_ARCHDIR, sitearchdir $RUBY_SITEARCHDIR, sitedir $RUBY_SITEDIR, cflags $RUBY_CFLAGS])
+ AC_SUBST(RUBY_ARCHDIR)
+ AC_SUBST(RUBY_SITEARCHDIR)
+ AC_SUBST(RUBY_RUBYLIBDIR)
+ AC_SUBST(RUBY_SITEDIR)
++ AC_SUBST(RUBY_CFLAGS)
+ fi
+
+diff --git a/qtruby/rubylib/qtruby/Makefile.am b/qtruby/rubylib/qtruby/Makefile.am
+index 156f80a..56b320f 100644
+--- a/qtruby/rubylib/qtruby/Makefile.am
++++ b/qtruby/rubylib/qtruby/Makefile.am
+@@ -1,4 +1,4 @@
+-INCLUDES = -I$(top_srcdir)/smoke $(all_includes) -I$(RUBY_ARCHDIR)
++INCLUDES = -I$(top_srcdir)/smoke $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS)
+
+ noinst_HEADERS = qtruby.h marshall.h smokeruby.h extconf.rb
+
+diff --git a/qtruby/rubylib/qtruby/configure.in.in b/qtruby/rubylib/qtruby/configure.in.in
+index 3cfa630..a875b2f 100644
+--- a/qtruby/rubylib/qtruby/configure.in.in
++++ b/qtruby/rubylib/qtruby/configure.in.in
+@@ -17,6 +17,7 @@ else
+ RUBY_RUBYLIBDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"rubylibdir"@:>@)'`
+ RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"libdir"@:>@)'`
+ RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
++ RUBY_CFLAGS=`$PKGCONFIG ruby --cflags`
+ fi
+ fi
+ if test -z "$RUBY_VERSION"; then
+@@ -27,12 +28,13 @@ else
+ RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'`
+ RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
+ fi
+- AC_MSG_RESULT([archdir $RUBY_ARCHDIR, sitearchdir $RUBY_SITEARCHDIR, sitedir $RUBY_SITEDIR, libdir $RUBY_LIBDIR, librubyarg $RUBY_LIBRUBYARG])
++ AC_MSG_RESULT([archdir $RUBY_ARCHDIR, sitearchdir $RUBY_SITEARCHDIR, sitedir $RUBY_SITEDIR, libdir $RUBY_LIBDIR, librubyarg $RUBY_LIBRUBYARG, cflags $RUBY_CFLAGS])
+ AC_SUBST(RUBY_ARCHDIR)
+ AC_SUBST(RUBY_SITEARCHDIR)
+ AC_SUBST(RUBY_SITEDIR)
+ AC_SUBST(RUBY_RUBYLIBDIR)
+ AC_SUBST(RUBY_LIBDIR)
+ AC_SUBST(RUBY_LIBRUBYARG)
++ AC_SUBST(RUBY_CFLAGS)
+ fi
+
diff --git a/redhat/kdebindings/trinity-kdebindings-3.5.13.1.spec b/redhat/kdebindings/trinity-kdebindings-3.5.13.1.spec
new file mode 100644
index 000000000..3f0a6abf5
--- /dev/null
+++ b/redhat/kdebindings/trinity-kdebindings-3.5.13.1.spec
@@ -0,0 +1,1100 @@
+# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
+%if "%{?tde_prefix}" != "/usr"
+%define _variant .opt
+%endif
+
+# TDE 3.5.13 specific building variables
+%define tde_bindir %{tde_prefix}/bin
+%define tde_datadir %{tde_prefix}/share
+%define tde_docdir %{tde_datadir}/doc
+%define tde_includedir %{tde_prefix}/include
+%define tde_libdir %{tde_prefix}/%{_lib}
+%define tde_mandir %{tde_datadir}/man
+
+%define tde_tdeappdir %{tde_datadir}/applications/kde
+%define tde_tdedocdir %{tde_docdir}/tde
+%define tde_tdeincludedir %{tde_includedir}/tde
+%define tde_tdelibdir %{tde_libdir}/trinity
+
+%define _docdir %{tde_docdir}
+
+Name: trinity-tdebindings
+Summary: TDE bindings to non-C++ languages
+Version: 3.5.13.1
+Release: 1%{?dist}%{_variant}
+
+License: GPLv2
+Group: User Interface/Desktops
+
+Vendor: Trinity Project
+Packager: Francois Andriot <francois.andriot@free.fr>
+URL: http://www.trinitydesktop.org/
+
+Prefix: %{tde_prefix}
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Source0: kdebindings-3.5.13.1.tar.gz
+
+# RedHat Legacy patches (from Fedora)
+Patch1: kdebindings-3.5.6-libgcj.patch
+
+# [kdebindings] Removes 'hpi' support in openjdk (obsolete in openjdk 1.7.0) [Bug #978]
+Patch2: kdebindings-3.5.13-openjdk_remove_hpi_support.patch
+# [kdebindings] Fix directory for dcopc include
+Patch6: kdebindings-3.5.13-fix_dcopc_header_location.patch
+# [kdebindings] Fix FTBFS in dcopjava/bindings
+Patch7: kdebindings-3.5.13.1-fix_dcopjava_ldflags.patch
+
+# [tdebindings] Detect presence of Ruby pkg-config file and adjust directory search accordingly [Commit #de49c748]
+Patch10: kdebindings-3.5.13.1-detect_ruby_pkg.patch
+# [tdebindings] Use cflags from ruby pc file [Commit #c1faffb8]
+Patch11: kdebindings-3.5.13.1-use_cflags_from_pc_file.patch
+# [tdebindings] Set HAVE_RUBY_1_9 if ruby 1.9.x installed [Commit #46659f99]
+Patch12: kdebindings-3.5.13.1-set_have_ruby19.patch
+# [tdebindings] Fix FTBS on ruby 1.9.x [Commit #ef7a6086]
+Patch13: kdebindings-3.5.13.1-fix_ftbfs_ruby19.patch
+# [tdebindings] Fix FTBFS on ruby 1.8.x [Commit #14594d81]
+Patch14: kdebindings-3.5.13.1-fix_ftbfs_ruby18.patch
+# [tdebindings] Fall back to ruby-1.9 pkgconfig file if needed [Commit #2f6e9c73]
+Patch15: kdebindings-3.5.13.1-fallback_to_ruby19_pc_file.patch
+# [tdebindings] Fix Ruby detection when .pc file is ruby-1.9 [Commit #10fc891a]
+Patch16: kdebindings-3.5.13.1-fix_ruby_detect_when_pc_file_is_19.patch
+# [tdebindings] Fix FTBFS on x86 systems [Commit #a901a123]
+Patch17: kdebindings-3.5.13.1-fix_ftbfs_on_x86.patch
+# [tdebindings] Function 'rb_frame_this_func' does not exist in RHEL5
+Patch18: kdebindings-3.5.13.1-fix_rhel5_ftbfs.patch
+
+BuildRequires: autoconf automake libtool m4
+BuildRequires: trinity-tqtinterface-devel >= %{version}
+BuildRequires: trinity-arts-devel >= %{version}
+BuildRequires: trinity-tdelibs-devel >= %{version}
+
+BuildRequires: desktop-file-utils
+BuildRequires: zlib-devel
+BuildRequires: perl(ExtUtils::MakeMaker)
+
+%if 0%{?rhel} == 4
+BuildRequires: evolution28-gtk2-devel
+%else
+BuildRequires: gtk2-devel
+BuildRequires: xulrunner-devel
+%endif
+
+%if 0%{?fedora} || 0%{?rhel}
+%define with_gtk1 1
+BuildRequires: glib-devel
+BuildRequires: gtk+-devel
+%endif
+%if 0%{?mgaversion} || 0%{?mdkversion}
+%define with_gtk1 1
+BuildRequires: %{_lib}glib1.2-devel
+BuildRequires: %{_lib}gtk+-devel
+%endif
+
+%if 0%{?mgaversion} || 0%{?mdkversion}
+BuildRequires: %{_lib}gdk_pixbuf2.0-devel
+%else
+%if 0%{?fedora} >= 17
+BuildRequires: gdk-pixbuf2-devel
+%else
+BuildRequires: gdk-pixbuf-devel
+%endif
+%endif
+
+
+## Python
+BuildRequires: python-devel
+%define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")
+
+## ruby
+BuildRequires: ruby-devel >= 1.8, ruby
+%{!?ruby_arch: %define ruby_arch %(ruby -rrbconfig -e 'puts Config::CONFIG["archdir"]')}
+%{!?ruby_rubylibdir: %define ruby_rubylibdir %(ruby -rrbconfig -e 'puts Config::CONFIG["rubylibdir"]')}
+# Ruby 1.9 includes are located in strance directories ... (taken from ruby 1.9 spec file)
+%global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/;s/armv.*/arm/')
+
+## java
+%if 0%{?rhel} > 0 && 0%{?rhel} < 6
+BuildRequires: java-1.4.2-gcj-compat-devel
+BuildRequires: libgcj-devel
+BuildRequires: gcc-java
+%else
+BuildRequires: java-openjdk
+BuildRequires: java-devel >= 1.4.2
+%if 0%{?fedora} >= 17 || 0%{?suse_version} >= 1220
+BuildRequires: java-1.7.0-openjdk-devel
+%else
+BuildRequires: java-1.6.0-openjdk-devel
+%endif
+%endif
+
+%if 0%{?suse_version}
+%define java_home %{_usr}/%{_lib}/jvm/java
+%else
+%if 0%{?rhel} == 4
+%define java_home %{_usr}/lib/jvm/java-1.4.2-gcj-1.4.2.0
+%else
+%define java_home %{_usr}/lib/jvm/java
+%endif
+%endif
+%define _with_java --with-java=%{java_home}
+
+## Perl
+# There is no 'perl-devel' package on RHEL5
+%if 0%{?rhel} >= 6 || 0%{?fedora} || 0%{?mdkversion} || 0%{?mgaversion}
+BuildRequires: perl-devel
+%endif
+%define perl_vendorarch %{expand:%%(eval `perl -V:installvendorarch`; echo $installvendorarch)}
+
+
+Obsoletes: trinity-kdebindings < %{version}-%{release}
+Provides: trinity-kdebindings = %{version}-%{release}
+
+# Metapackage requires
+Requires: trinity-tdebindings-java = %{version}-%{release}
+Requires: trinity-libsmokeqt1 = %{version}-%{release}
+Requires: trinity-libsmokekde1 = %{version}-%{release}
+Requires: trinity-perl-dcop = %{version}-%{release}
+Requires: trinity-python-dcop = %{version}-%{release}
+Requires: trinity-libkjsembed1 = %{version}-%{release}
+Requires: trinity-kjscmd = %{version}-%{release}
+Requires: trinity-juic = %{version}-%{release}
+Requires: trinity-libkorundum0-ruby = %{version}-%{release}
+Requires: trinity-libqt0-ruby = %{version}-%{release}
+
+
+%description
+TDE/DCOP bindings to non-C++ languages
+
+%files
+
+##########
+
+%package java
+Summary: TDE Java bindings metapackage [Trinity]
+Group: Environment/Libraries
+Requires: trinity-libdcop3-java = %{version}-%{release}
+Requires: trinity-libdcop3-jni = %{version}-%{release}
+Requires: trinity-libqt3-java = %{version}-%{release}
+Requires: trinity-libqt3-jni = %{version}-%{release}
+Requires: trinity-libtrinity-java = %{version}-%{release}
+Requires: trinity-libtrinity-jni = %{version}-%{release}
+
+%description java
+A metapackage depending on all TDE, Qt and DCOP bindings libraries
+related to the Java language.
+
+This package is part of the official TDE bindings module.
+
+%files java
+%defattr(-,root,root,-)
+
+##########
+
+%package -n trinity-libdcop3-java
+Summary: DCOP bindings for Java [Trinity]
+Group: Environment/Libraries
+
+Requires: trinity-libdcop3-jni = %{version}-%{release}
+
+%description -n trinity-libdcop3-java
+This package contains the Java classes necessary to run Java programs
+using the Java DCOP bindings. DCOP is the TDE Desktop COmmunications
+Protocol, used for communicating with running TDE applications.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libdcop3-java
+%defattr(-,root,root,-)
+#%{tde_datadir}/java/dcopjava*.jar
+%{tde_libdir}/java/org/kde/DCOP/*.class
+
+##########
+
+%package -n trinity-libdcop3-java-devel
+Summary: DCOP bindings for Java (dcopidl2java program) [Trinity]
+Group: Development/Libraries
+Requires: trinity-libdcop3-java = %{version}-%{release}
+
+%description -n trinity-libdcop3-java-devel
+This package contains the dcopidl2java program which generates Java
+stubs from DCOP IDL files, necessary to do development with the DCOP Java
+bindings. DCOP is the TDE Desktop COmmunications Protocol, used for
+communicating with running TDE applications.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libdcop3-java-devel
+%defattr(-,root,root,-)
+%{tde_bindir}/dcopidl2java
+
+##########
+
+%package -n trinity-libdcop3-jni
+Summary: DCOP bindings for Java ( Native libraries ) [Trinity]
+Group: Environment/Libraries
+
+%description -n trinity-libdcop3-jni
+This package contains the shared libraries and scripts necessary to
+run programs using the Java DCOP bindings. DCOP is the TDE Desktop
+COmmunications Protocol, used for communicating with running TDE
+applications.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libdcop3-jni
+%defattr(-,root,root,-)
+%{tde_libdir}/libjavadcop.la
+%{tde_libdir}/libjavadcop.so
+
+%post -n trinity-libdcop3-jni
+/sbin/ldconfig || :
+
+%postun -n trinity-libdcop3-jni
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libqt3-java
+Summary: Java bindings for Qt [Trinity]
+Group: Environment/Libraries
+Requires: trinity-libdcop3-jni = %{version}-%{release}
+Requires: trinity-libqt3-jni = %{version}-%{release}
+Requires: trinity-juic = %{version}-%{release}
+
+%description -n trinity-libqt3-java
+This package contains the Java classes necessary to run Java programs
+using the Java Qt bindings. Qt is a very popular GUI toolkit, used by
+the TDE desktop environment.
+
+It also includes many example programs that make use of these bindings,
+plus many of the Qt Tutorial examples translated into Java.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libqt3-java
+%defattr(-,root,root,-)
+%{tde_libdir}/java/qtjava*.jar
+%{tde_tdedocdir}/HTML/en/javalib/
+
+##########
+
+%package -n trinity-libqt3-jni
+Summary: Java bindings for Qt ( Native libraries ) [Trinity]
+Group: Environment/Libraries
+
+%description -n trinity-libqt3-jni
+This package contains the shared libraries necessary to run Java
+programs using the Java Qt bindings. Qt is a very popular GUI
+toolkit, used by the TDE desktop environment.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libqt3-jni
+%defattr(-,root,root,-)
+%{tde_libdir}/libqtjavasupport.la
+%{tde_libdir}/libqtjavasupport.so.*
+%{tde_libdir}/jni/libqtjava.la
+%{tde_libdir}/jni/libqtjava.so.*
+%doc qtjava/ChangeLog
+
+##########
+
+%package -n trinity-libqt3-jni-devel
+Summary: Development files fo Java bindings for Qt ( Native libraries ) [Trinity]
+Group: Development/Libraries
+Requires: trinity-libqt3-jni = %{version}-%{release}
+
+%description -n trinity-libqt3-jni-devel
+This package contains the development files for trinity-libqt3-jni.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libqt3-jni-devel
+%defattr(-,root,root,-)
+%{tde_libdir}/libqtjavasupport.so
+%{tde_libdir}/jni/libqtjava.so
+
+##########
+
+%package -n trinity-libtrinity-java
+Summary: tdelibs bindings for Java [Trinity]
+Group: Environment/Libraries
+
+Requires: trinity-libtrinity-jni = %{version}-%{release}
+
+%description -n trinity-libtrinity-java
+This package contains the Java classes necessary to run Java programs
+using the Java tdelibs bindings. TDE is the Trinity Desktop Environment, a
+very popular UNIX Desktop Environment.
+
+It also includes some example applications that use these Java
+classes, and multiple usage samples of the most common TDE classes.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libtrinity-java
+%defattr(-,root,root,-)
+%{tde_libdir}/java/koala*.jar
+
+##########
+
+%package -n trinity-libtrinity-jni
+Summary: tdelibs bindings for java ( Native libraries ) [Trinity]
+Group: Environment/Libraries
+
+%description -n trinity-libtrinity-jni
+This package contains the shared libraries necessary to run Java
+programs using the Java tdelibs bindings. TDE is the Trinity Desktop
+Environment, a very popular UNIX Desktop Environment.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libtrinity-jni
+%defattr(-,root,root,-)
+%{tde_libdir}/jni/libkdejava.la
+%{tde_libdir}/jni/libkdejava.so.*
+%doc kdejava/ChangeLog
+
+##########
+
+%package -n trinity-libtrinity-jni-devel
+Summary: Development files for tdelibs bindings for java ( Native libraries ) [Trinity]
+Group: Development/Libraries
+Requires: trinity-libtrinity-jni = %{version}-%{release}
+
+%description -n trinity-libtrinity-jni-devel
+This package contains the development files for trinity-libtrinity-jni.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libtrinity-jni-devel
+%defattr(-,root,root,-)
+%{tde_libdir}/jni/libkdejava.so
+
+##########
+
+%package -n trinity-libsmokeqt1
+Summary: SMOKE Binding Library to Qt
+Group: Environment/Libraries
+
+%description -n trinity-libsmokeqt1
+The "Scripting Meta Object Kompiler Engine" library is used by
+various TDE language bindings packages to provide interfaces to the
+Qt library.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libsmokeqt1
+%defattr(-,root,root,-)
+%{tde_libdir}/libsmokeqt.so.*
+
+%post -n trinity-libsmokeqt1
+/sbin/ldconfig || :
+
+%postun -n trinity-libsmokeqt1
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libsmokeqt-devel
+Summary: SMOKE Binding Library to Qt - Development Files
+Group: Development/Libraries
+Requires: trinity-libsmokeqt1 = %{version}-%{release}
+
+%description -n trinity-libsmokeqt-devel
+The "Scripting Meta Object Kompiler Engine" library is used by
+various TDE language bindings packages to provide interfaces to the
+Qt library. This package contains the development files for the
+library.
+
+If you are a normal user, you probably don't need this
+package.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libsmokeqt-devel
+%defattr(-,root,root,-)
+%{tde_tdeincludedir}/smoke.h
+%{tde_libdir}/libsmokeqt.so
+%{tde_libdir}/libsmokeqt.la
+
+%post -n trinity-libsmokeqt-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-libsmokeqt-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libsmokekde1
+Summary: SMOKE Binding Library to TDE
+Group: Environment/Libraries
+
+%description -n trinity-libsmokekde1
+The "Scripting Meta Object Kompiler Engine" library is used by
+various TDE language bindings packages to provide interfaces to the
+TDE libraries.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libsmokekde1
+%defattr(-,root,root,-)
+%{tde_libdir}/libsmokekde.so.*
+
+%post -n trinity-libsmokekde1
+/sbin/ldconfig || :
+
+%postun -n trinity-libsmokekde1
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libsmokekde-devel
+Summary: SMOKE Binding Library to TDE - Development Files
+Group: Development/Libraries
+Requires: trinity-libsmokekde1 = %{version}-%{release}
+
+%description -n trinity-libsmokekde-devel
+The "Scripting Meta Object Kompiler Engine" library is used by
+various TDE language bindings packages to provide interfaces to the
+Qt and TDE libraries. This package contains the development files for
+the library.
+
+If you are a normal user, you probably don't need this
+package.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libsmokekde-devel
+%defattr(-,root,root,-)
+%{tde_libdir}/libsmokekde.so
+%{tde_libdir}/libsmokekde.la
+
+%post -n trinity-libsmokekde-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-libsmokekde-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-perl-dcop
+Summary: DCOP Bindings for Perl
+Group: Development/Libraries
+
+Obsoletes: trinity-kdebindings-dcopperl < %{version}-%{release}
+Provides: trinity-kdebindings-dcopperl = %{version}-%{release}
+
+%description -n trinity-perl-dcop
+Perl bindings to the DCOP interprocess communication protocol used by TDE
+
+%files -n trinity-perl-dcop
+%defattr(-,root,root,-)
+%{perl_vendorarch}/auto/DCOP/*
+%{perl_vendorarch}/DCOP.pm
+%{perl_vendorarch}/DCOP/*
+%doc dcopperl/AUTHORS dcopperl/Changes dcopperl/README dcopperl/TODO
+%{tde_mandir}/man3/DCOP.3pm*
+
+##########
+
+%package -n trinity-python-dcop
+Summary: DCOP bindings for Python
+Group: Environment/Libraries
+Requires: python
+#Provides: %{name}-dcoppython = %{version}-%{release}
+
+%description -n trinity-python-dcop
+This package contains the shared libraries necessary to run and
+develop Python programs using the Python DCOP bindings
+libraries. DCOP is the TDE Desktop COmmunications Protocol, used for
+communicating with running TDE applications.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-python-dcop
+%defattr(-,root,root,-)
+%{python_sitearch}/pcop.la
+%{python_sitearch}/pcop.so
+%{python_sitearch}/pydcop.py*
+
+##########
+
+%package -n trinity-libkjsembed1
+Summary: Embedded JavaScript library
+Group: Environment/Libraries
+
+%description -n trinity-libkjsembed1
+This package contains the shared libraries necessary to run programs
+linked with the KJSEmbed library. This library provides JavaScript
+embedded scripting facilities to TDE applications.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libkjsembed1
+%defattr(-,root,root,-)
+%{tde_libdir}/libkjsembed.so.*
+%{tde_tdelibdir}/libimagefxplugin.la
+%{tde_tdelibdir}/libimagefxplugin.so
+%{tde_datadir}/services/imagefx_plugin.desktop
+%{tde_tdelibdir}/libqprocessplugin.so
+%{tde_tdelibdir}/libqprocessplugin.la
+%{tde_datadir}/services/qprocess_plugin.desktop
+%{tde_tdelibdir}/libfileitemplugin.la
+%{tde_tdelibdir}/libfileitemplugin.so
+%{tde_datadir}/services/kfileitem_plugin.desktop
+%{tde_datadir}/apps/kjsembed/cmdline.js
+%{tde_datadir}/servicetypes/binding_type.desktop
+%{tde_bindir}/embedjs
+%{tde_datadir}/apps/embedjs/embedjsui.rc
+%{tde_datadir}/applnk/Utilities/embedjs.desktop
+%{tde_datadir}/icons/hicolor/16x16/apps/embedjs.png
+%{tde_datadir}/icons/hicolor/32x32/apps/embedjs.png
+%{tde_tdelibdir}/libjavascript.la
+%{tde_tdelibdir}/libjavascript.so
+%{tde_datadir}/apps/kate/scripts/swaptabs.js
+%{tde_datadir}/apps/kate/scripts/swaptabs.ui
+%{tde_datadir}/apps/kate/scripts/swaptabs.desktop
+%{tde_datadir}/services/javascript.desktop
+%doc kjsembed/docs/ChangeLog
+
+%post -n trinity-libkjsembed1
+/sbin/ldconfig ||:
+touch --no-create %{tde_datadir}/icons/hicolor ||:
+gtk-update-icon-cache -q %{tde_datadir}/icons/hicolor 2> /dev/null ||:
+update-desktop-database >& /dev/null ||:
+
+%postun -n trinity-libkjsembed1
+/sbin/ldconfig ||:
+touch --no-create %{tde_datadir}/icons/hicolor ||:
+gtk-update-icon-cache -q %{tde_datadir}/icons/hicolor 2> /dev/null ||:
+update-desktop-database >& /dev/null ||:
+
+##########
+
+%package -n trinity-libkjsembed-devel
+Summary: Embedded JavaScript library (Development files)
+Group: Development/Libraries
+Requires: trinity-libkjsembed1 = %{version}-%{release}
+
+%description -n trinity-libkjsembed-devel
+This package contains the header files and symbolic links necessary
+to develop and compile programs using the KJSEmbed library. This
+library provides JavaScript embedded scripting facilities to TDE
+applications.
+
+It also includes lots of example programs that make use of these
+bindings, plus comprehensive documentation of the bindings.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libkjsembed-devel
+%defattr(-,root,root,-)
+%{tde_tdeincludedir}/kjsembed/
+%{tde_libdir}/libkjsembed.so
+%{tde_libdir}/libkjsembed.la
+%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+
+%post -n trinity-libkjsembed-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-libkjsembed-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kjscmd
+Summary: A script interpreter using the TDE JavaScript library
+Group: Environment/Libraries
+
+%description -n trinity-kjscmd
+This package contains the kjscmd program, which is a standalone
+JavaScript interpreter using the KJSEmbed library.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-kjscmd
+%defattr(-,root,root,-)
+%{tde_bindir}/kjscmd
+%{tde_tdeappdir}/kjscmd.desktop
+%{tde_mandir}/man1/kjscmd.*
+%{tde_tdelibdir}/libjsconsoleplugin.la
+%{tde_tdelibdir}/libjsconsoleplugin.so
+
+%post -n trinity-kjscmd
+update-desktop-database >& /dev/null ||:
+
+%postun -n trinity-kjscmd
+update-desktop-database >& /dev/null ||:
+
+##########
+
+%package -n trinity-juic
+Summary: The Qt Java UI Compiler
+Group: Environment/Libraries
+Requires: trinity-libqt3-java = %{version}-%{release}
+
+%description -n trinity-juic
+This package contains the juic program, which is used to convert
+a UI description file generated by the Qt Designer, and converts
+it into a Qt Java class. It is necessary for compiling and
+developing programs using the Qt Java bindings together with Qt
+Designer.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-juic
+%defattr(-,root,root,-)
+%{tde_bindir}/juic
+%{tde_datadir}/juic/
+
+##########
+
+%package -n trinity-libkorundum0-ruby
+Summary: TDE bindings for Ruby [Trinity]
+Group: Environment/Libraries
+Requires: trinity-libqt0-ruby = %{version}-%{release}
+
+%description -n trinity-libkorundum0-ruby
+This package contains the files necessary for running and developing
+Ruby code using the Korundum TDE Ruby bindings.
+
+It also includes some example programs and templates that make use of
+these bindings.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libkorundum0-ruby
+%defattr(-,root,root,-)
+%{tde_bindir}/rbkdesh
+%{tde_bindir}/rbkdeapi
+%{tde_bindir}/krubyinit
+%{tde_bindir}/rbkconfig_compiler
+%{ruby_rubylibdir}/Korundum.rb
+%{ruby_rubylibdir}/KDE/korundum.rb
+%{ruby_arch}/korundum.la
+%{ruby_arch}/korundum.so*
+%doc korundum/ChangeLog
+
+%post -n trinity-libkorundum0-ruby
+/sbin/ldconfig || :
+
+%postun -n trinity-libkorundum0-ruby
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libqt0-ruby
+Summary: Qt bindings for Ruby [Trinity]
+Group: Environment/Libraries
+Requires: ruby
+
+%description -n trinity-libqt0-ruby
+This package contains the files necessary for running and developing
+Ruby code using the Qt Ruby bindings.
+
+It also includes some example programs that make use of these bindings,
+plus many of the Qt Tutorial examples translated into Ruby.
+
+This package is part of the official TDE bindings module.
+
+%files -n trinity-libqt0-ruby
+%defattr(-,root,root,-)
+%{tde_bindir}/rbqtsh
+%{tde_bindir}/rbqtapi
+%{tde_bindir}/rbuic
+%{tde_bindir}/qtrubyinit
+%{ruby_rubylibdir}/Qt/qtruby.rb
+%{ruby_rubylibdir}/Qt.rb
+%{ruby_arch}/qtruby.so*
+%{ruby_arch}/qtruby.la
+%{ruby_arch}/qui.so*
+%{ruby_arch}/qui.la
+%doc qtruby/ChangeLog
+
+%post -n trinity-libqt0-ruby
+/sbin/ldconfig || :
+
+%postun -n trinity-libqt0-ruby
+/sbin/ldconfig || :
+
+##########
+
+%if 0
+%package -n trinity-kmozilla
+Summary: Kmozilla for TDE
+Group: Environment/Libraries
+
+%description -n trinity-kmozilla
+%{summary}
+
+%files -n trinity-kmozilla
+%defattr(-,root,root,-)
+%{tde_bindir}/kmozilla
+%{tde_libdir}/libkmozillapart.so.*
+%{tde_libdir}/libkmozillapart.so
+%{tde_libdir}/libkmozillapart.la
+%{tde_datadir}/services/kmozilla.desktop
+%endif
+
+##########
+
+%package -n trinity-xpart-notepad
+Summary: A small XPart editor
+Group: Applications/Utilities
+
+%description -n trinity-xpart-notepad
+xpart_notepad is a small XPart editor. Use it to understand how to use XPart.
+
+%files -n trinity-xpart-notepad
+%defattr(-,root,root,-)
+%{tde_bindir}/shell_xparthost
+%{tde_bindir}/xp_notepad
+%{tde_libdir}/libxp_notepadpart.la
+%{tde_libdir}/libxp_notepadpart.so
+%{tde_libdir}/libxp_notepadpart.so.*
+%{tde_datadir}/services/xp_notepad.desktop
+%doc xparts/xpart_notepad/README
+
+%post -n trinity-xpart-notepad
+/sbin/ldconfig || :
+
+%postun -n trinity-xpart-notepad
+/sbin/ldconfig || :
+
+##########
+
+%if 0%{?with_gtk1}
+%package -n trinity-libgtkxparts1
+Summary: Xparts library for GTK
+Group: Environment/Libraries
+
+%description -n trinity-libgtkxparts1
+%{summary}
+
+%files -n trinity-libgtkxparts1
+%defattr(-,root,root,-)
+%{tde_libdir}/libgtkxparts.so.*
+%{tde_libdir}/libgtkxparts.la
+
+%post -n trinity-libgtkxparts1
+/sbin/ldconfig || :
+
+%postun -n trinity-libgtkxparts1
+/sbin/ldconfig || :
+%endif
+
+##########
+
+%package -n trinity-libkdexparts1
+Summary: Xparts library for KDE
+Group: Environment/Libraries
+
+%description -n trinity-libkdexparts1
+%{summary}
+
+%files -n trinity-libkdexparts1
+%defattr(-,root,root,-)
+%{tde_libdir}/libkdexparts.so.*
+%{tde_libdir}/libkdexparts.la
+
+%post -n trinity-libkdexparts1
+/sbin/ldconfig || :
+
+%postun -n trinity-libkdexparts1
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libxparts-devel
+Summary: Xparts development files
+Group: Development/Libraries
+%if 0%{?with_gtk1}
+Requires: trinity-libgtkxparts1 = %{version}-%{release}
+%endif
+Requires: trinity-libkdexparts1 = %{version}-%{release}
+
+%description -n trinity-libxparts-devel
+%{summary}
+
+%files -n trinity-libxparts-devel
+%defattr(-,root,root,-)
+%{tde_tdeincludedir}/xkparts/
+%if 0%{?with_gtk1}
+%{tde_libdir}/libgtkxparts.so
+%endif
+%{tde_libdir}/libkdexparts.so
+
+%post -n trinity-libxparts-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-libxparts-devel
+/sbin/ldconfig || :
+
+##########
+
+%package xparts-extras
+Summary: Extra xparts for TDE [Trinity]
+Group: Environment/Libraries
+
+# Metapckage requires
+Requires: trinity-xpart-notepad = %{version}-%{release}
+%if 0%{?with_gtk1}
+Requires: trinity-libgtkxparts1 = %{version}-%{release}
+%endif
+Requires: trinity-libkdexparts1 = %{version}-%{release}
+Requires: trinity-libdcop-c = %{version}-%{release}
+
+%description xparts-extras
+This package contains extra xparts-based modules for Trinity
+This includes the mozilla-konqueror plugin
+
+This package is part of the official TDE bindings module.
+
+%files xparts-extras
+
+###########
+
+%package -n trinity-libdcop-c
+Summary: DCOP bindings for C [Trinity]
+Group: Environment/Libraries
+
+%description -n trinity-libdcop-c
+%{summary}
+
+%files -n trinity-libdcop-c
+%defattr(-,root,root,-)
+%{tde_libdir}/libdcopc.so.*
+
+%post -n trinity-libdcop-c
+/sbin/ldconfig || :
+
+%postun -n trinity-libdcop-c
+/sbin/ldconfig || :
+
+###########
+
+%package -n trinity-libdcop-c-devel
+Summary: DCOP bindings for C, development files [Trinity]
+Group: Development/Libraries
+Requires: trinity-libdcop-c = %{version}-%{release}
+
+%description -n trinity-libdcop-c-devel
+%{summary}
+
+%files -n trinity-libdcop-c-devel
+%defattr(-,root,root,-)
+%{tde_libdir}/libdcopc.so
+%{tde_libdir}/libdcopc.la
+%{tde_tdeincludedir}/dcopc/
+
+%post -n trinity-libdcop-c-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-libdcop-c-devel
+/sbin/ldconfig || :
+
+##########
+
+%package devel
+Summary: Development files for %{name}
+Group: Development/Libraries
+Requires: trinity-tdelibs-devel
+
+Obsoletes: trinity-kdebindings-devel < %{version}-%{release}
+Provides: trinity-kdebindings-devel = %{version}-%{release}
+
+# Metapackage
+Requires: trinity-libsmokeqt-devel = %{version}-%{release}
+Requires: trinity-libdcop3-java-devel = %{version}-%{release}
+Requires: trinity-libsmokekde-devel = %{version}-%{release}
+Requires: trinity-libkjsembed-devel = %{version}-%{release}
+Requires: trinity-libxparts-devel = %{version}-%{release}
+Requires: trinity-libdcop-c-devel = %{version}-%{release}
+Requires: trinity-libqt3-jni-devel = %{version}-%{release}
+Requires: trinity-libtrinity-jni-devel = %{version}-%{release}
+
+%description devel
+Development files for the TDE bindings.
+
+%files devel
+
+##########
+
+%if 0%{?suse_version}
+%debug_package
+%endif
+
+##########
+
+%prep
+%setup -q -n kdebindings-3.5.13.1
+%patch1 -p1 -b .libgcj
+
+%if 0%{?fedora} >= 17 || 0%{?suse_version} >= 1220
+%patch2 -p1 -b .libhpi
+%endif
+%patch6 -p1 -b .dcopcinclude
+%patch7 -p1 -b .dcopjavaldflags
+
+%patch10 -p1 -b .ruby19
+%patch11 -p1 -b .ruby19
+%patch12 -p1 -b .ruby19
+%patch13 -p1 -b .ruby19
+%patch14 -p1 -b .ruby19
+%patch15 -p1 -b .ruby19
+%patch16 -p1 -b .ruby19
+%patch17 -p1 -b .ruby19
+%if 0%{?rhel} >= 4 && 0%{?rhel} <= 5
+%patch18 -p1 -b .ruby
+%endif
+
+# Adds non-standard Ruby include path in include dirs
+%if 0%{?rhel} == 5
+#for d in \
+# qtruby/rubylib/qtruby \
+# qtruby/rubylib/designer/uilib \
+# qtruby/bin \
+# korundum/rubylib/korundum \
+# korundum/bin \
+#; do
+# echo -e "\nINCLUDES += -I%{_usr}/include/%{_normalized_cpu}-%{_target_os}" >> "${d}/Makefile.am"
+#done
+%endif
+
+# Disable kmozilla, it does not build with recent xulrunner (missing 'libmozjs.so')
+%__sed -i "xparts/Makefile.am" \
+ -e "s|SUBDIRS = .*|SUBDIRS = src xpart_notepad|"
+
+# Ugly hack to modify TQT include directory inside autoconf files.
+# If TQT detection fails, it fallbacks to TQT4 instead of TQT3 !
+%__sed -i "admin/acinclude.m4.in" \
+ -e "s|/usr/include/tqt|%{tde_includedir}/tqt|g" \
+ -e "s|kde_htmldir='.*'|kde_htmldir='%{tde_tdedocdir}/HTML'|g"
+
+%__cp -f "/usr/share/aclocal/libtool.m4" "admin/libtool.m4.in"
+%__cp -f "/usr/share/libtool/config/ltmain.sh" "admin/ltmain.sh" || %__cp -f "/usr/share/libtool/ltmain.sh" "admin/ltmain.sh"
+%__make -f "admin/Makefile.common"
+
+
+%build
+unset QTDIR || : ; source /etc/profile.d/qt3.sh
+export PATH="%{tde_bindir}:${PATH}"
+export LDFLAGS="-L%{tde_libdir} -I%{tde_includedir}"
+
+unset JAVA_HOME ||:
+%{?java_home:JAVA_HOME=%{java_home}; export JAVA_HOME}
+
+# sip/PyQt/PyKDE built separately, not here
+export DO_NOT_COMPILE="$DO_NOT_COMPILE python"
+
+# Specific path for RHEL4
+if [ -d /usr/X11R6 ]; then
+ export CXXFLAGS="${CXXFLAGS} -I/usr/X11R6/include -L/usr/X11R6/%{_lib}"
+fi
+
+%configure \
+ --prefix=%{tde_prefix} \
+ --exec-prefix=%{tde_prefix} \
+ --bindir=%{tde_bindir} \
+ --datadir=%{tde_datadir} \
+ --docdir=%{tde_docdir} \
+ --includedir=%{tde_tdeincludedir} \
+ --libdir=%{tde_libdir} \
+ --mandir=%{tde_mandir} \
+ --disable-rpath \
+ --enable-new-ldflags \
+ --disable-debug --disable-warnings \
+ --disable-dependency-tracking \
+ --with-extra-libs=%{tde_libdir} \
+ --with-pythondir=%{_usr} \
+ --enable-closure \
+ --enable-final \
+ %{?_with_java} %{!?_with_java:--without-java} \
+ %{?_enable_qscintilla} %{!?_enable_qscintilla:--disable-qscintilla} \
+ --with-extra-includes=%{tde_includedir}/tqt
+
+pushd dcopperl
+CFLAGS="$RPM_OPT_FLAGS" perl Makefile.PL INSTALLDIRS=vendor
+
+# Ugly hack to add TQT include directory in Makefile
+# Also modifies the man pages directory
+sed -i Makefile \
+ -e "s|^\(INC = .*\)|\1 -I%{tde_includedir}/tqt|" \
+ -e "s|/usr/share/man|%{tde_mandir}|g"
+
+%__make OPTIMIZE="$RPM_OPT_FLAGS" ||:
+popd
+
+# smoke (not smp-safe)
+%__make -C smoke
+
+# The rest is smp-safe
+%__make %{?_smp_mflags} PYTHON=%{__python}
+
+
+%install
+export PATH="%{tde_bindir}:${PATH}"
+%__rm -rf $RPM_BUILD_ROOT
+
+%__make install DESTDIR=%{?buildroot} \
+ PYTHON=%{__python}
+
+# Removes some perl files
+find $RPM_BUILD_ROOT -type f -a \( -name perllocal.pod -o -name .packlist \
+ -o \( -name '*.bs' -a -empty \) \) -exec rm -f {} ';'
+
+# locale's
+%find_lang %{name} || touch %{name}.lang
+HTML_DIR=$(kde-config --expandvars --install html)
+if [ -d $RPM_BUILD_ROOT$HTML_DIR ]; then
+for lang_dir in $RPM_BUILD_ROOT$HTML_DIR/* ; do
+ if [ -d $lang_dir ]; then
+ lang=$(basename $lang_dir)
+ echo "%lang($lang) $HTML_DIR/$lang/*" >> %{name}.lang
+ # replace absolute symlinks with relative ones
+ pushd $lang_dir
+ for i in *; do
+ [ -d $i -a -L $i/common ] && ln -nsf ../common $i/common
+ done
+ popd
+ fi
+done
+fi
+
+# Installs juic
+%__install -D -m 755 qtjava/designer/juic/bin/juic %{?buildroot}%{tde_bindir}/juic
+%__install -d -m 755 %{?buildroot}%{tde_datadir}/juic/common
+%__install qtjava/designer/juic/common/*.xml %{?buildroot}%{tde_datadir}/juic/common
+%__install qtjava/designer/juic/common/*.xsl %{?buildroot}%{tde_datadir}/juic/common
+%__install -d -m 755 %{?buildroot}%{tde_datadir}/juic/java
+%__install qtjava/designer/juic/java/*.xml %{?buildroot}%{tde_datadir}/juic/java
+%__install qtjava/designer/juic/java/*.xsl %{?buildroot}%{tde_datadir}/juic/java
+%__install qtjava/designer/juic/juic.xsl %{?buildroot}%{tde_datadir}/juic
+
+# kjsembed sample files
+%__install -d -m 755 %{?buildroot}%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+%__install kjsembed/plugins/customobject_plugin.cpp %{?buildroot}%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+%__install kjsembed/plugins/customobject_plugin.h %{?buildroot}%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+%__install kjsembed/plugins/customobject_plugin.desktop %{?buildroot}%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+%__install kjsembed/plugins/customqobject_plugin.cpp %{?buildroot}%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+%__install kjsembed/plugins/customqobject_plugin.h %{?buildroot}%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+%__install kjsembed/plugins/customqobject_plugin.desktop %{?buildroot}%{tde_docdir}/trinity-libkjsembed-devel/plugin-examples/customobject/
+
+
+# Man installation location is wrong on RHEL4...
+if [ -d "%{buildroot}%{_mandir}/man3" ]; then
+ mv -f %{buildroot}%{_mandir}/man3 %{buildroot}%{tde_mandir}/man3/
+ rm -rf %{buildroot}%{_mandir}
+fi
+
+
+%clean
+%__rm -rf $RPM_BUILD_ROOT
+
+
+
+%changelog
+* Sat Sep 29 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13.1-1
+- Initial build for TDE 3.5.13.1