summaryrefslogtreecommitdiffstats
path: root/kde/kdebindings/ruby.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde/kdebindings/ruby.patch')
-rwxr-xr-xkde/kdebindings/ruby.patch165
1 files changed, 165 insertions, 0 deletions
diff --git a/kde/kdebindings/ruby.patch b/kde/kdebindings/ruby.patch
new file mode 100755
index 000000000..5276dedcd
--- /dev/null
+++ b/kde/kdebindings/ruby.patch
@@ -0,0 +1,165 @@
+* Set up a RUBY_VERSION macro to use to test for whether QtRuby is being
+ built for Ruby 1.9 or not. Add patches from Mr Napalm for building
+with
+ Ruby 1.9, for the new 'per string' encoding. Also add conditional code
+ for whether to use the new rb_frame_callee() function or the old
+ rb_frame_last_func() one.
+
+CCMAIL: kde-bindings@...
+
+
+ M +10 -0 CMakeLists.txt
+ M +7 -0 qtruby/ChangeLog
+ M +4 -0 qtruby/src/CMakeLists.txt
+ M +37 -6 qtruby/src/handlers.cpp
+ M +0 -1 qtruby/src/marshall_types.cpp
+ M +4 -0 qtruby/src/qtruby.cpp
+
+
+--- trunk/KDE/kdebindings/ruby/CMakeLists.txt #920196:920197
+@@ -46,6 +46,16 @@
+ set(PLASMA_ENABLED "no")
+
+ if(RUBY_EXECUTABLE AND RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
++ EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -e "print RUBY_VERSION"
++ OUTPUT_VARIABLE RUBY_VERSION)
++
++ STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1"
+RUBY_VERSION_MAJOR "${RUBY_VERSION}")
++ STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+.*" "\\1"
+RUBY_VERSION_MINOR "${RUBY_VERSION}")
++ STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1"
+RUBY_VERSION_PATCH "${RUBY_VERSION}")
++
++ # compute an overall version number which can be compared at once
++ MATH(EXPR RUBY_VERSION_NUMBER "${RUBY_VERSION_MAJOR}*10000 +
+${RUBY_VERSION_MINOR}*100 + ${RUBY_VERSION_PATCH}")
++
+ if(ENABLE_QTRUBY)
+ add_subdirectory( qtruby )
+ set(QTRUBY_ENABLED "yes")
+--- trunk/KDE/kdebindings/ruby/qtruby/ChangeLog #920196:920197
+@@ -1,3 +1,10 @@
++2009-02-02 Richard Dale <richard.j.dale@...>
++ * Set up a RUBY_VERSION macro to use to test for whether QtRuby is
+being
++ built for Ruby 1.9 or not. Add patches from Mr Napalm for building
+with
++ Ruby 1.9, for the new 'per string' encoding. Also add conditional
+code
++ for whether to use the new rb_frame_callee() function or the old
++ rb_frame_last_func() one.
++
+ 2009-02-01 Richard Dale <richard.j.dale@...>
+ * The construct_copy() function was using the full classname of the
+class
+ to construct which meant that it didn't work with classnames
+containing
+--- trunk/KDE/kdebindings/ruby/qtruby/src/CMakeLists.txt #920196:920197
+@@ -9,6 +9,10 @@
+ ADD_DEFINITIONS (-DQT_QWT)
+ ENDIF(QWT_FOUND)
+
++if(RUBY_VERSION)
++ ADD_DEFINITIONS (-DRUBY_VERSION=0x${RUBY_VERSION_NUMBER})
++ENDIF(RUBY_VERSION)
++
+ include_directories( ${CMAKE_SOURCE_DIR}/smoke ${RUBY_INCLUDE_PATH} )
+ INCLUDE_DIRECTORIES (${QT_INCLUDES})
+
+--- trunk/KDE/kdebindings/ruby/qtruby/src/handlers.cpp #920196:920197
+@@ -891,9 +891,11 @@
+ }
+ }
+
+-static const char * KCODE = 0;
+ static QTextCodec *codec = 0;
+
++#if RUBY_VERSION < 0x10900
++static const char * KCODE = 0;
++
+ static void
+ init_codec() {
+ VALUE temp = rb_gv_get("$KCODE");
+@@ -923,11 +925,6 @@
+ return new QString(QString::fromLocal8Bit(StringValuePtr(rstring),
+RSTRING_LEN(rstring)));
+ }
+
+-QByteArray*
+-qbytearrayFromRString(VALUE rstring) {
+- return new QByteArray(StringValuePtr(rstring), RSTRING_LEN(rstring));
+-}
+-
+ VALUE
+ rstringFromQString(QString * s) {
+ if (KCODE == 0) {
+@@ -946,6 +943,40 @@
+ return rb_str_new2(s->toLocal8Bit());
+ }
+
++#else
++
++QString*
++qstringFromRString(VALUE rstring) {
++ VALUE encoding = rb_funcall(rstring, rb_intern("encoding"), 0);
++ encoding = rb_funcall(encoding, rb_intern("to_s"), 0);
++ const char * enc_s = RSTRING_PTR(encoding);
++
++ if (qstrcmp(enc_s, "UTF8") == 0) {
++ return new QString(QString::fromUtf8(StringValuePtr(rstring),
+RSTRING_LEN(rstring)));
++ } else if (qstrcmp(enc_s, "EUC-JP") == 0) {
++ codec = QTextCodec::codecForName("eucJP");
++ return new QString(codec->toUnicode(StringValuePtr(rstring)));
++ } else if (qstrcmp(enc_s, "Shift-JIS") == 0) {
++ codec = QTextCodec::codecForName("Shift-JIS");
++ return new QString(codec->toUnicode(StringValuePtr(rstring)));
++ } else if(qstrcmp(enc_s, "ISO-8859-1") == 0 || qstrcmp(enc_s,
+"US-ASCII") == 0) {
++ return new QString(QString::fromLatin1(StringValuePtr(rstring)));
++ }
++
++ return new QString(QString::fromLocal8Bit(StringValuePtr(rstring),
+RSTRING_LEN(rstring)));
++}
++
++VALUE
++rstringFromQString(QString * s) {
++ return rb_str_new2(s->toUtf8());
++}
++#endif
++
++QByteArray*
++qbytearrayFromRString(VALUE rstring) {
++ return new QByteArray(StringValuePtr(rstring), RSTRING_LEN(rstring));
++}
++
+ VALUE
+ rstringFromQByteArray(QByteArray * s) {
+ return rb_str_new(s->data(), s->size());
+--- trunk/KDE/kdebindings/ruby/qtruby/src/marshall_types.cpp
+#920196:920197
+@@ -17,7 +17,6 @@
+
+***************************************************************************/
+
+ #include "marshall_types.h"
+-#include <rubysig.h>
+ #include <smoke/qt_smoke.h>
+ #include <QtDBus>
+
+--- trunk/KDE/kdebindings/ruby/qtruby/src/qtruby.cpp #920196:920197
+@@ -1365,7 +1365,11 @@
+ return Qfalse;
+ }
+
++#if RUBY_VERSION >= 0x10900
++ QLatin1String signalname(rb_id2name(rb_frame_callee()));
++#else
+ QLatin1String signalname(rb_id2name(rb_frame_last_func()));
++#endif
+ VALUE metaObject_value = rb_funcall(qt_internal_module,
+rb_intern("getMetaObject"), 2, Qnil, self);
+
+ smokeruby_object *ometa = value_obj_info(metaObject_value);