#!/bin/sh

# Backport pspp 0.8.5 to older systems
# Reverts the dependencies on glib and gtk to versions 2.24 and 2.20 respectively
#
# To use this script:
# 1. unpack the tarball for pspp-0.8.5
# 2. before running ./configure run this script from within the directory containing configure.
# 3. run ./configure ; make ; make install  as per normal


sed -i -e 's/\(glib.*\)2\.32/\12.24/g' configure
sed -i -e 's/\(gtk+.*\)2\.24/\12.20/g' configure

patch -p 1 <<EOF
diff --git a/configure.ac b/configure.ac
index 2d3b3bf..44ac675 100644
--- a/configure.ac
+++ b/configure.ac
@@ -70,11 +70,11 @@ if test "$with_cairo" != no && test "$with_gui" != "no"; then
   PKG_CHECK_MODULES([GTHREAD], [gthread-2.0], [],
     [PSPP_REQUIRED_PREREQ([gthread 2.0 (or use --without-gui)])])
 
-  PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24], [],
-    [PSPP_REQUIRED_PREREQ([gtk+ 2.0 version 2.24 or later (or use --without-gui)])])
+  PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.20], [],
+    [PSPP_REQUIRED_PREREQ([gtk+ 2.0 version 2.20 or later (or use --without-gui)])])
 
-  PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.32], [],
-    [PSPP_REQUIRED_PREREQ([glib 2.0 version 2.32 or later (or use --without-gui)])])
+  PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.00], [],
+    [PSPP_REQUIRED_PREREQ([glib 2.0 version 2.00 or later (or use --without-gui)])])
 
 
   PKG_CHECK_MODULES([GTKSOURCEVIEW], [gtksourceview-2.0 >= 2.2], [],
diff --git a/src/ui/gui/psppire-dialog.c b/src/ui/gui/psppire-dialog.c
index 37eaa1f..c1a525f 100644
--- a/src/ui/gui/psppire-dialog.c
+++ b/src/ui/gui/psppire-dialog.c
@@ -394,7 +394,7 @@ psppire_dialog_notify_change (PsppireDialog *dialog)
 static void
 remove_notify_handlers (PsppireDialog *dialog, GObject *sel)
 {
-  g_signal_handlers_disconnect_by_data (sel, dialog);
+  g_signal_handlers_disconnect_matched (sel, G_SIGNAL_MATCH_DATA, 0,0,0,0, dialog);
 }
 
 
diff --git a/src/ui/gui/psppire-means-layer.c b/src/ui/gui/psppire-means-layer.c
index 8046b00..aacb8a9 100644
--- a/src/ui/gui/psppire-means-layer.c
+++ b/src/ui/gui/psppire-means-layer.c
@@ -149,7 +149,8 @@ psppire_means_layer_clear (PsppireMeansLayer *ml)
 
   ml->n_layers = 1;
   ml->current_layer = 0;
-  ml->layer = g_ptr_array_new_full (3, g_object_unref);
+  ml->layer = g_ptr_array_sized_new (3);
+  g_ptr_array_set_free_func (ml->layer, g_object_unref);
 
   add_new_layer (ml);
 
diff --git a/src/ui/gui/psppire-selector.c b/src/ui/gui/psppire-selector.c
index 17e173b..93d9818 100644
--- a/src/ui/gui/psppire-selector.c
+++ b/src/ui/gui/psppire-selector.c
@@ -914,7 +914,7 @@ on_dest_data_delete (GtkTreeModel *tree_model,
 static void
 remove_selector_handlers (PsppireSelector *selector, GObject *sel)
 {
-  g_signal_handlers_disconnect_by_data (sel, selector);
+  g_signal_handlers_disconnect_matched (sel, G_SIGNAL_MATCH_DATA, 0,0,0,0, selector);
 }
 
 static void

EOF
