From 30bf1fcb2987210f40def69e860b588649d983a7 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Tue, 6 Sep 2011 01:00:23 +0000
Subject: [PATCH] * Add libgdu as a dependency to gvfs to enable mounting of
 volumes   (through udisks) in Xfce.  Libgdu is part of gnome-disk-utility,  
 which would pull in lots of Gnome dependencies, so some hackery is  
 necessary to build only the useful part.

svn path=/nixpkgs/trunk/; revision=29054
---
 pkgs/desktops/xfce-4.8/default.nix            |   2 +-
 pkgs/desktops/xfce-4.8/support/gvfs.nix       |   4 +-
 .../xfce-4.8/support/libgdu-only.patch        | 144 ++++++++++++++++++
 pkgs/desktops/xfce-4.8/support/libgdu.nix     |  34 +++++
 4 files changed, 181 insertions(+), 3 deletions(-)
 create mode 100644 pkgs/desktops/xfce-4.8/support/libgdu-only.patch
 create mode 100644 pkgs/desktops/xfce-4.8/support/libgdu.nix

diff --git a/pkgs/desktops/xfce-4.8/default.nix b/pkgs/desktops/xfce-4.8/default.nix
index 821a8e92fab..056bc4368c6 100644
--- a/pkgs/desktops/xfce-4.8/default.nix
+++ b/pkgs/desktops/xfce-4.8/default.nix
@@ -5,7 +5,7 @@ rec {
 
   #### SUPPORT
 
-  #gnome_disk_utility = callPackage ./support/gnome-disk-utility.nix { };  
+  libgdu = callPackage ./support/libgdu.nix { };  
 
   # Gvfs is required by Thunar for the trash feature and for volume
   # mounting.  Should use the one from Gnome, but I don't want to mess
diff --git a/pkgs/desktops/xfce-4.8/support/gvfs.nix b/pkgs/desktops/xfce-4.8/support/gvfs.nix
index d679e31a997..6e50e6825dd 100644
--- a/pkgs/desktops/xfce-4.8/support/gvfs.nix
+++ b/pkgs/desktops/xfce-4.8/support/gvfs.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, glib, dbus, intltool, udev }:
+{ stdenv, fetchurl, pkgconfig, glib, dbus, intltool, udev, libgdu }:
 
 stdenv.mkDerivation rec {
   name = "gvfs-1.8.2";
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "0895ac8f6d416e1b15433b6b6b68eb119c6e8b04fdb66db665d684355ef89345";
   };
 
-  buildInputs = [ pkgconfig glib dbus.libs intltool udev ];
+  buildInputs = [ pkgconfig glib dbus.libs intltool udev libgdu ];
 
   meta = {
     description = "Virtual Filesystem support library (for Xfce)";
diff --git a/pkgs/desktops/xfce-4.8/support/libgdu-only.patch b/pkgs/desktops/xfce-4.8/support/libgdu-only.patch
new file mode 100644
index 00000000000..c5873c71681
--- /dev/null
+++ b/pkgs/desktops/xfce-4.8/support/libgdu-only.patch
@@ -0,0 +1,144 @@
+diff -ru -x '*~' gnome-disk-utility-2.30.1-orig/configure.ac gnome-disk-utility-2.30.1/configure.ac
+--- gnome-disk-utility-2.30.1-orig/configure.ac	2010-03-22 16:54:09.000000000 +0100
++++ gnome-disk-utility-2.30.1/configure.ac	2011-09-06 02:52:09.000000000 +0200
+@@ -106,17 +106,6 @@
+ # GNOME
+ # *****
+ 
+-GNOME_COMMON_INIT
+-GNOME_DOC_INIT
+-GNOME_DEBUG_CHECK
+-GNOME_COMPILE_WARNINGS([maximum])
+-GNOME_MAINTAINER_MODE_DEFINES
+-
+-AC_ARG_ENABLE(gtk-doc, AS_HELP_STRING([--enable-gtk-doc],
+-  [use gtk-doc to build documentation [default=yes]]),,
+-  enable_gtk_doc=yes)
+-GTK_DOC_CHECK([1.3])
+-
+ # ***************************
+ # Check for required packages
+ # ***************************
+@@ -130,7 +119,6 @@
+ UNIQUE_REQUIRED=1.0
+ LIBNOTIFY_REQUIRED=0.3.0
+ NAUTILUS_REQUIRED=2.24.0
+-AVAHI_UI_REQUIRED=0.6.25
+ 
+ UDISKS_REQUIRED=1.0.0
+ UDISKS_NEXT_ABI_INCOMPATIBLE_VERSION=1.1.0
+@@ -144,13 +132,7 @@
+ PKG_CHECK_MODULES(GIO_UNIX2, [gio-unix-2.0 >= $GIO2_REQUIRED])
+ PKG_CHECK_MODULES(GTHREAD2, [gthread-2.0 >= $GLIB2_REQUIRED])
+ PKG_CHECK_MODULES(DBUS_GLIB, [dbus-glib-1 >= $DBUS_GLIB_REQUIRED])
+-PKG_CHECK_MODULES(GTK2, [gtk+-2.0 >= $GTK2_REQUIRED])
+-PKG_CHECK_MODULES(UNIQUE, [unique-1.0 >= $UNIQUE_REQUIRED])
+-PKG_CHECK_MODULES(LIBNOTIFY, [libnotify  >= $LIBNOTIFY_REQUIRED])
+ PKG_CHECK_MODULES(UDISKS, [udisks  >= $UDISKS_REQUIRED udisks < $UDISKS_NEXT_ABI_INCOMPATIBLE_VERSION])
+-PKG_CHECK_MODULES(X11, [x11])
+-PKG_CHECK_MODULES(LIBATASMART, [libatasmart >= 0.14])
+-PKG_CHECK_MODULES(AVAHI_UI, [avahi-ui >= $AVAHI_UI_REQUIRED])
+ 
+ # *************
+ # Remote Access
+@@ -183,21 +165,10 @@
+ AC_SUBST(GNOME_KEYRING_CFLAGS)
+ AM_CONDITIONAL(ENABLE_GNOME_KEYRING, [test "$have_gnome_keyring" = "yes"])
+ 
+-# *************
+-# Documentation
+-# *************
+-
+-AC_PATH_PROG(SCROLLKEEPER_CONFIG, scrollkeeper-config,no)
+-if test x$SCROLLKEEPER_CONFIG = xno; then
+-  AC_MSG_ERROR(Couldn't find scrollkeeper-config, please install the scrollkeeper package)
+-fi
+-
+ # ********************
+ # Internationalization
+ # ********************
+ 
+-IT_PROG_INTLTOOL([$INTLTOOL_REQUIRED])
+-
+ GETTEXT_PACKAGE=gnome-disk-utility
+ AC_SUBST([GETTEXT_PACKAGE])
+ AM_GLIB_GNU_GETTEXT
+diff -ru -x '*~' gnome-disk-utility-2.30.1-orig/doc/Makefile.am gnome-disk-utility-2.30.1/doc/Makefile.am
+--- gnome-disk-utility-2.30.1-orig/doc/Makefile.am	2009-12-02 20:52:38.000000000 +0100
++++ gnome-disk-utility-2.30.1/doc/Makefile.am	2011-09-06 02:17:15.000000000 +0200
+@@ -70,9 +70,7 @@
+ 	Makefile.in			\
+ 	$(NULL)
+ 
+-include $(top_srcdir)/gtk-doc.make
+-
+-CLEANFILES +=   *~						\
++CLEANFILES =   *~						\
+ 		gnome-disk-utility-scan*			\
+ 		gnome-disk-utility.args				\
+ 		gnome-disk-utility.hierarchy			\
+@@ -91,4 +89,4 @@
+ 		$(NULL)
+ 
+ # Version information for marking the documentation
+-EXTRA_DIST += version.xml.in
++EXTRA_DIST = version.xml.in
+diff -ru -x '*~' gnome-disk-utility-2.30.1-orig/gtk-doc.make gnome-disk-utility-2.30.1/gtk-doc.make
+--- gnome-disk-utility-2.30.1-orig/gtk-doc.make	2010-03-16 00:08:20.000000000 +0100
++++ gnome-disk-utility-2.30.1/gtk-doc.make	2011-09-06 02:15:33.000000000 +0200
+@@ -4,15 +4,9 @@
+ # Everything below here is generic #
+ ####################################
+ 
+-if GTK_DOC_USE_LIBTOOL
+-GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+-GTKDOC_RUN = $(LIBTOOL) --mode=execute
+-else
+ GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+ GTKDOC_RUN =
+-endif
+ 
+ # We set GPATH here; this gives us semantics for GNU make
+ # which are more like other make's VPATH, when it comes to
+@@ -49,22 +43,7 @@
+ 
+ CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+ 
+-if ENABLE_GTK_DOC
+-if GTK_DOC_BUILD_HTML
+-HTML_BUILD_STAMP=html-build.stamp
+-else
+-HTML_BUILD_STAMP=
+-endif
+-if GTK_DOC_BUILD_PDF
+-PDF_BUILD_STAMP=pdf-build.stamp
+-else
+-PDF_BUILD_STAMP=
+-endif
+-
+-all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+-else
+ all-local:
+-endif
+ 
+ docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
+ 
+diff -ru -x '*~' gnome-disk-utility-2.30.1-orig/help/Makefile.am gnome-disk-utility-2.30.1/help/Makefile.am
+--- gnome-disk-utility-2.30.1-orig/help/Makefile.am	2009-09-23 20:35:01.000000000 +0200
++++ gnome-disk-utility-2.30.1/help/Makefile.am	2011-09-06 02:18:13.000000000 +0200
+@@ -1,4 +1,3 @@
+-include $(top_srcdir)/gnome-doc-utils.make
+ dist-hook: doc-dist-hook
+ 
+ DOC_MODULE = palimpsest
+diff -ru -x '*~' gnome-disk-utility-2.30.1-orig/Makefile.am gnome-disk-utility-2.30.1/Makefile.am
+--- gnome-disk-utility-2.30.1-orig/Makefile.am	2010-03-16 00:12:39.000000000 +0100
++++ gnome-disk-utility-2.30.1/Makefile.am	2011-09-06 02:17:34.000000000 +0200
+@@ -1,4 +1,4 @@
+-SUBDIRS = src data doc help po
++SUBDIRS = src data
+ 
+ EXTRA_DIST = \
+ 	autogen.sh		\
diff --git a/pkgs/desktops/xfce-4.8/support/libgdu.nix b/pkgs/desktops/xfce-4.8/support/libgdu.nix
new file mode 100644
index 00000000000..32835f0434a
--- /dev/null
+++ b/pkgs/desktops/xfce-4.8/support/libgdu.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, gnome, pkgconfig, glib, dbus_glib, intltool, udev, gtk
+, libnotify, udisks, libatasmart, avahi
+, autoconf, automake, libtool }:
+
+let version = "2.30.1"; in
+
+stdenv.mkDerivation rec {
+  name = "libgdu-${version}";
+  
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-disk-utility/2.30/gnome-disk-utility-${version}.tar.bz2";
+    sha256 = "df9b336c780b5d77ceda54e96f7c37c67645f5e73d48754ba0a8efba7c1836d7";
+  };
+
+  # Only build libgdu, not all that Gnome crap.
+  patches = [ ./libgdu-only.patch ];
+
+  buildInputs =
+    [ pkgconfig glib dbus_glib udisks
+      autoconf automake libtool
+    ];
+
+  preConfigure =
+    ''
+      substituteInPlace src/gdu/Makefile.am --replace /usr/share/dbus-1/interfaces ${udisks}/share/dbus-1/interfaces
+      autoreconf -f -i
+    '';
+
+  postConfigure = "cd src/gdu";
+
+  meta = {
+    description = "Xfce/Gvfs support library for mounting filesystems";
+  };
+}