This patch contains all the Debian-specific changes mixed together. To review
them separately, please inspect the VCS history at
http://anonscm.debian.org/gitweb/?p=pkg-ruby-extras/ruby-gnome2.git;a=summary
--- ruby-gnome2-1.0.0.orig/exec_make.rb
+++ ruby-gnome2-1.0.0/exec_make.rb
@@ -29,7 +29,8 @@ SUBDIRS.each do |subdir|
 	if ret
 		success << subdir 
 	else
-		failure << subdir
+                puts "Building of #{subdir} failed."
+                exit(1)
 	end
 end
 
--- ruby-gnome2-1.0.0.orig/extconf.rb
+++ ruby-gnome2-1.0.0/extconf.rb
@@ -42,6 +42,9 @@ if subdirs.size == 0
     subdir[0..$topsrcdir.size] = ""
     File.dirname(subdir)
   end
+  subdirs.reject! do |subdir|
+    subdir =~ /gtkmozembed/
+  end
   priorlibs &= subdirs
   subdirs -= priorlibs
   subdirs = priorlibs + subdirs #Change the order
@@ -75,6 +78,10 @@ subdirs.each do |subdir|
   if ret
     targets << subdir
   else
+    if $strict
+        exit(1)
+    end
+
     ignore << subdir
   end
 end
@@ -114,6 +121,7 @@ def run_make_in_sub_dirs(command)
 	  echo "FAILED: $$failed";		\\
 	  echo "-----";				\\
 	  echo "Done.";				\\
+	  test "$$failed" = "NONE";             \\
 	)
     EOS
   end
--- ruby-gnome2-1.0.0.orig/gtk2/ext/gtk2/rbgtkcellrendererspinner.c
+++ ruby-gnome2-1.0.0/gtk2/ext/gtk2/rbgtkcellrendererspinner.c
@@ -4,7 +4,7 @@
   rbgtkcellrendererspinner.c -
 
   $Author: masaakiaoyagi $
-  $Date: 2011-02-19 09:24:49 +0900 (土, 19  2月 2011) $
+  $Date: 2011-02-19 09:24:49 +0900 $
 
   Copyright (C) 2011 Ruby-GNOME2 Project Team
 ************************************************/
--- /dev/null
+++ ruby-gnome2-1.0.0/gtk2/ext/gtk2/rbgtktreedrag.h
@@ -0,0 +1,49 @@
+/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
+/************************************************
+
+  rbgtktreedrag.h -
+
+  $Author: ck $
+  $Date: 2006/08/16 02:24:00 $
+
+  Copyright (C) 2006 Armin Burgmeier
+************************************************/
+
+#ifndef __RBGTKTREEDRAG_H__
+#define __RBGTKTREEDRAG_H__
+
+#include <gtk/gtktreestore.h>
+#include <gtk/gtkliststore.h>
+
+#define RB_TYPE_DND_TREE_STORE (rb_dnd_tree_store_get_type())
+#define RB_TYPE_DND_LIST_STORE (rb_dnd_list_store_get_type())
+
+typedef struct _RbDndTreeStore RbDndTreeStore;
+typedef struct _RbDndListStore RbDndListStore;
+
+typedef struct _RbDndTreeStoreClass RbDndTreeStoreClass;
+typedef struct _RbDndListStoreClass RbDndListStoreClass;
+
+struct _RbDndTreeStore {
+    GtkTreeStore parent;
+};
+
+struct _RbDndTreeStoreClass {
+    GtkTreeStoreClass parent_class;
+};
+
+struct _RbDndListStore {
+    GtkListStore parent;
+};
+
+struct _RbDndListStoreClass {
+    GtkListStoreClass parent_class;
+};
+
+GType
+rb_dnd_tree_store_get_type(void) G_GNUC_CONST;
+
+GType
+rb_dnd_list_store_get_type(void) G_GNUC_CONST;
+
+#endif /* __RBGTKTREEDRAG_H__ */
--- ruby-gnome2-1.0.0.orig/gtk2/ext/gtk2/rbgtkspinner.c
+++ ruby-gnome2-1.0.0/gtk2/ext/gtk2/rbgtkspinner.c
@@ -4,7 +4,7 @@
   rbgtkspinner.c -
 
   $Author: masaakiaoyagi $
-  $Date: 2011-02-19 09:24:49 +0900 (土, 19  2月 2011) $
+  $Date: 2011-02-19 09:24:49 +0900 $
 
   Copyright (C) 2011 Ruby-GNOME2 Project Team
 ************************************************/
--- /dev/null
+++ ruby-gnome2-1.0.0/gtk2/ext/gtk2/rbgtktreedrag.c
@@ -0,0 +1,196 @@
+/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
+/************************************************
+
+  rbgtktreedrag.c -
+
+  $Author: ck $
+  $Date: 2006/08/16 02:06:00 $
+
+  Copyright (C) 2006 Armin Burgmeier
+************************************************/
+
+#include "global.h"
+#include "rbgtktreedrag.h"
+
+#define g_marshal_value_peek_boxed(v)    g_value_get_boxed(v)
+#define g_marshal_value_peek_object(v)   g_value_get_object(v)
+
+static void
+_rb_marshal_BOOLEAN__BOXED(GClosure     *closure,
+                           GValue       *return_value,
+                           guint         n_param_values,
+                           const GValue *param_values,
+                           gpointer      invocation_hint,
+                           gpointer      marshal_data)
+{
+  typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED) (gpointer     data1,
+                                                   gpointer     arg_1,
+                                                   gpointer     data2);
+  register GMarshalFunc_BOOLEAN__BOXED callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+  gboolean v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 2);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_BOOLEAN__BOXED) (marshal_data ? marshal_data : cc->callback);
+
+  v_return = callback (data1,
+                       g_marshal_value_peek_boxed (param_values + 1),
+                       data2);
+
+  g_value_set_boolean (return_value, v_return);
+}
+
+static void
+_rb_marshal_BOOLEAN__BOXED_OBJECT_BOXED(GClosure     *closure,
+                                        GValue       *return_value,
+                                        guint         n_param_values,
+                                        const GValue *param_values,
+                                        gpointer      invocation_hint,
+                                        gpointer      marshal_data)
+{
+  typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_OBJECT_BOXED) (gpointer     data1,
+                                                                gpointer     arg_1,
+                                                                gpointer     arg_2,
+                                                                gpointer     arg_3,
+                                                                gpointer     data2);
+  register GMarshalFunc_BOOLEAN__BOXED_OBJECT_BOXED callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+  gboolean v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 4);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_BOOLEAN__BOXED_OBJECT_BOXED) (marshal_data ? marshal_data : cc->callback);
+
+  v_return = callback (data1,
+                       g_marshal_value_peek_boxed (param_values + 1),
+                       g_marshal_value_peek_object (param_values + 2),
+                       g_marshal_value_peek_boxed (param_values + 3),
+                       data2);
+
+  g_value_set_boolean (return_value, v_return);
+}
+
+static void
+rb_dnd_tree_drag_class_init(GType type)
+{
+    g_signal_new("row-draggable",
+                 type,
+                 G_SIGNAL_RUN_LAST,
+                 0,
+                 NULL, NULL,
+                 _rb_marshal_BOOLEAN__BOXED,
+                 G_TYPE_BOOLEAN, 1,
+                 GTK_TYPE_TREE_PATH);
+
+    g_signal_new("row-drop-possible",
+                 type,
+                 G_SIGNAL_RUN_LAST,
+                 0,
+                 NULL, NULL,
+                 _rb_marshal_BOOLEAN__BOXED_OBJECT_BOXED,
+                 G_TYPE_BOOLEAN, 3,
+                 GTK_TYPE_TREE_PATH,
+                 GTK_TYPE_TREE_MODEL,
+                 GTK_TYPE_TREE_PATH);
+}
+
+static gboolean
+rb_dnd_tree_drag_row_draggable(GtkTreeDragSource *drag_source,
+                               GtkTreePath *path)
+{
+  gboolean retval;
+  g_assert(G_TYPE_FROM_INSTANCE(drag_source) == RB_TYPE_DND_TREE_STORE ||
+           G_TYPE_FROM_INSTANCE(drag_source) == RB_TYPE_DND_LIST_STORE);
+
+  guint signal_id = g_signal_lookup("row-draggable", G_TYPE_FROM_INSTANCE(drag_source));
+
+  if(g_signal_has_handler_pending(drag_source, signal_id, 0, FALSE))
+    g_signal_emit(drag_source, signal_id, 0, path, &retval);
+  else
+    retval = TRUE; /* default value */
+
+  return retval;
+}
+
+static gboolean
+rb_dnd_tree_drag_row_drop_possible(GtkTreeDragDest* drag_dest,
+                                   GtkTreePath* dest_path,
+                                   GtkSelectionData* selection_data)
+{
+  gboolean retval;
+
+  g_assert(G_TYPE_FROM_INSTANCE(drag_dest) == RB_TYPE_DND_TREE_STORE ||
+           G_TYPE_FROM_INSTANCE(drag_dest) == RB_TYPE_DND_LIST_STORE);
+
+  guint signal_id = g_signal_lookup("row-drop-possible", G_TYPE_FROM_INSTANCE(drag_dest));
+
+  GtkTreeModel* source_model = NULL;
+  GtkTreePath* source_path = NULL;
+  /* The selection_data must be of type GTK_TREE_MODEL_ROW, otherwise
+     the get function returns false and the out values are hopefully left
+     as-is. */
+  gtk_tree_get_row_drag_data(selection_data, &source_model, &source_path);
+
+  if(g_signal_has_handler_pending(drag_dest, signal_id, 0, FALSE))
+    g_signal_emit(drag_dest, signal_id, 0, dest_path, source_model, source_path, &retval);
+  else
+    retval = TRUE; /* default value */
+
+  if(source_path)
+    gtk_tree_path_free(source_path);
+  return retval;
+}
+
+static void
+rb_dnd_tree_store_init(RbDndTreeStore* store)
+{
+  GTK_TREE_DRAG_SOURCE_GET_IFACE(store)->row_draggable = rb_dnd_tree_drag_row_draggable;
+  GTK_TREE_DRAG_DEST_GET_IFACE(store)->row_drop_possible = rb_dnd_tree_drag_row_drop_possible;
+}
+
+static void
+rb_dnd_list_store_init(RbDndListStore* store)
+{
+  GTK_TREE_DRAG_SOURCE_GET_IFACE(store)->row_draggable = rb_dnd_tree_drag_row_draggable;
+  GTK_TREE_DRAG_DEST_GET_IFACE(store)->row_drop_possible = rb_dnd_tree_drag_row_drop_possible;
+}
+
+static void
+rb_dnd_tree_store_class_init(RbDndTreeStoreClass* klass)
+{
+  rb_dnd_tree_drag_class_init(G_TYPE_FROM_CLASS(klass));
+}
+
+static void
+rb_dnd_list_store_class_init(RbDndListStoreClass* klass)
+{
+  rb_dnd_tree_drag_class_init(G_TYPE_FROM_CLASS(klass));
+}
+
+G_DEFINE_TYPE(RbDndTreeStore, rb_dnd_tree_store, GTK_TYPE_TREE_STORE)
+G_DEFINE_TYPE(RbDndListStore, rb_dnd_list_store, GTK_TYPE_LIST_STORE)
--- ruby-gnome2-1.0.0.orig/gtk2/ext/gtk2/rbgtktreestore.c
+++ ruby-gnome2-1.0.0/gtk2/ext/gtk2/rbgtktreestore.c
@@ -11,6 +11,8 @@
 
 #include "global.h"
 
+#include "rbgtktreedrag.h"
+
 #define _SELF(s) (GTK_TREE_STORE(RVAL2GOBJ(s)))
 
 static VALUE
@@ -27,7 +29,8 @@ tstore_initialize(int argc, VALUE *argv,
         buf[cnt] = CLASS2GTYPE(argv[cnt]);
     }
 
-    store = gtk_tree_store_newv(argc, buf);
+    store = GTK_TREE_STORE(g_object_new(RB_TYPE_DND_TREE_STORE, NULL));
+    gtk_tree_store_set_column_types(store, argc, buf);
  
     G_INITIALIZE(self, store);
 
@@ -326,9 +329,9 @@ tstore_move_after(VALUE self, VALUE iter
 void
 Init_gtk_tree_store()
 {
-    VALUE ts = G_DEF_CLASS(GTK_TYPE_TREE_STORE, "TreeStore", mGtk);
+    VALUE ts = G_DEF_CLASS(RB_TYPE_DND_TREE_STORE, "TreeStore", mGtk);
 
-    rbgtk_register_treeiter_set_value_func(GTK_TYPE_TREE_STORE, 
+    rbgtk_register_treeiter_set_value_func(RB_TYPE_DND_TREE_STORE,
                                            (rbgtkiter_set_value_func)&gtk_tree_store_set_value);
 
     rb_define_method(ts, "initialize", tstore_initialize, -1);
--- ruby-gnome2-1.0.0.orig/gtk2/ext/gtk2/rbgtkliststore.c
+++ ruby-gnome2-1.0.0/gtk2/ext/gtk2/rbgtkliststore.c
@@ -11,6 +11,8 @@
 
 #include "global.h"
 
+#include "rbgtktreedrag.h"
+
 #define _SELF(s) (GTK_LIST_STORE(RVAL2GOBJ(s)))
 
 static ID id_to_a, id_size;
@@ -29,7 +31,8 @@ lstore_initialize(int argc, VALUE *argv,
         buf[cnt] = CLASS2GTYPE(argv[cnt]);
     }
 
-    store = gtk_list_store_newv(argc, buf);
+    store = GTK_LIST_STORE(g_object_new(RB_TYPE_DND_LIST_STORE, NULL));
+    gtk_list_store_set_column_types(store, argc, buf);
  
     G_INITIALIZE(self, store);
 
@@ -360,12 +363,12 @@ lstore_move_after(VALUE self, VALUE iter
 void
 Init_gtk_list_store()
 {
-    VALUE ls = G_DEF_CLASS(GTK_TYPE_LIST_STORE, "ListStore", mGtk);
+    VALUE ls = G_DEF_CLASS(RB_TYPE_DND_LIST_STORE, "ListStore", mGtk);
 
     id_to_a = rb_intern("to_a");
     id_size = rb_intern("size");
 
-    rbgtk_register_treeiter_set_value_func(GTK_TYPE_LIST_STORE, 
+    rbgtk_register_treeiter_set_value_func(RB_TYPE_DND_LIST_STORE,
                                            (rbgtkiter_set_value_func)&gtk_list_store_set_value);
     rb_define_method(ls, "initialize", lstore_initialize, -1);
     rb_define_method(ls, "set_column_types", lstore_set_column_types, -1);
--- ruby-gnome2-1.0.0.orig/gtkmozembed/ext/gtkmozembed/rbgtkmozembed-init.cpp
+++ ruby-gnome2-1.0.0/gtkmozembed/ext/gtkmozembed/rbgtkmozembed-init.cpp
@@ -35,8 +35,8 @@ static void
 setup_xpcom_glue(void)
 {
     static const GREVersionRange greVersion = {
-	"1.9b", PR_TRUE,
-	"2", PR_TRUE
+	"1.9.1", PR_TRUE,
+	"1.9.2", PR_FALSE
     };
     char xpcomPath[PATH_MAX];
 
--- ruby-gnome2-1.0.0.orig/gtkmozembed/ext/gtkmozembed/extconf.rb
+++ ruby-gnome2-1.0.0/gtkmozembed/ext/gtkmozembed/extconf.rb
@@ -89,7 +89,6 @@ mozilla_path = mozilla_library_path.stri
 if mozilla_path
   # please comment the CFLAGS line if you don't want a default comp_path
   $CFLAGS << " -DDEFAULT_MOZILLA_FIVE_HOME='\"#{mozilla_path}\"' "
-  $LDFLAGS << " -Wl,-rpath,#{mozilla_path}"
 else
   $stderr.puts "${package_id}.pc cannot be found."
   exit 1
