Date: Saturday, October 31, 2009 @ 16:15:33
  Author: jgc
Revision: 57523

Merged revisions 57520 via svnmerge from 
svn+ssh://gerolde.archlinux.org/srv/svn-packages/nautilus-cd-burner/trunk

........
  r57520 | jgc | 2009-10-31 21:12:26 +0100 (Sat, 31 Oct 2009) | 2 lines
  
  upgpkg: nautilus-cd-burner 2.25.3-1
      Update to 2.25.3 - removes eel dependency for nautilus extension, remove 
dependency on gnome-mount
........

Added:
  nautilus-cd-burner/repos/extra-i686/use-gio-for-eject.patch
    (from rev 57520, nautilus-cd-burner/trunk/use-gio-for-eject.patch)
Modified:
  nautilus-cd-burner/repos/extra-i686/  (properties)
  nautilus-cd-burner/repos/extra-i686/PKGBUILD

-------------------------+
 PKGBUILD                |   17 ++-
 use-gio-for-eject.patch |  198 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 208 insertions(+), 7 deletions(-)


Property changes on: nautilus-cd-burner/repos/extra-i686
___________________________________________________________________
Modified: svnmerge-integrated
   - /nautilus-cd-burner/trunk:1-46877
   + /nautilus-cd-burner/trunk:1-57522

Modified: extra-i686/PKGBUILD
===================================================================
--- extra-i686/PKGBUILD 2009-10-31 20:15:10 UTC (rev 57522)
+++ extra-i686/PKGBUILD 2009-10-31 20:15:33 UTC (rev 57523)
@@ -2,22 +2,25 @@
 # Maintainer: Jan de Groot <[email protected]>
 
 pkgname=nautilus-cd-burner
-pkgver=2.24.0
-pkgrel=2
+pkgver=2.25.3
+pkgrel=1
 pkgdesc="Adds cd burner functionality to nautilus"
 arch=(i686 x86_64)
-depends=('cdrkit' 'dvd+rw-tools' 'gnome-mount>=0.8' 'desktop-file-utils' 
'libgnomeui>=2.24.0')
-makedepends=('intltool' 'pkgconfig' 'nautilus>=2.24.0' 'eel')
-optdepends=('nautilus' 'eel')
+depends=('cdrkit' 'dvd+rw-tools' 'desktop-file-utils' 'libgnomeui>=2.24.2')
+makedepends=('intltool' 'pkgconfig' 'nautilus>=2.28.0')
+optdepends=('nautilus')
 options=('!libtool' '!emptydirs')
 license=('GPL')
 url=http://www.gnome.org/
 install=nautilus-cd-burner.install
-source=(http://ftp.gnome.org/pub/GNOME/sources/nautilus-cd-burner/2.24/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('eb211dd03d0518263fa4eadccc3caa88')
+source=(http://ftp.gnome.org/pub/GNOME/sources/nautilus-cd-burner/2.25/${pkgname}-${pkgver}.tar.bz2
+        use-gio-for-eject.patch)
+md5sums=('02324246d8e4804e15e41ef7b62836a7'
+         'c915d5fda67b7604fc61fad7e9559b3d')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/use-gio-for-eject.patch" || return 1
   ./configure --prefix=/usr --sysconfdir=/etc \
       --libexecdir=/usr/lib/nautilus-cd-burner \
       --localstatedir=/var --enable-hal || return 1

Copied: nautilus-cd-burner/repos/extra-i686/use-gio-for-eject.patch (from rev 
57520, nautilus-cd-burner/trunk/use-gio-for-eject.patch)
===================================================================
--- extra-i686/use-gio-for-eject.patch                          (rev 0)
+++ extra-i686/use-gio-for-eject.patch  2009-10-31 20:15:33 UTC (rev 57523)
@@ -0,0 +1,198 @@
+From 555f4ef2a64a79d7bb63421859eb8a554cfe104d Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <[email protected]>
+Date: Wed, 17 Dec 2008 11:49:06 +0000
+Subject: Eject using GIO instead of calling out to eject, or gnome-mount 
(Closes:
+
+2008-12-17  Bastien Nocera  <[email protected]>
+
+       * src/nautilus-burn-drive.c
+       (nautilus_burn_drive_get_drive_for_node),
+       (nautilus_burn_drive_eject_cb), (nautilus_burn_drive_eject):
+       Eject using GIO instead of calling out to eject, or gnome-mount
+       (Closes: #504391)
+
+
+svn path=/trunk/; revision=2270
+---
+diff --git a/src/nautilus-burn-drive.c b/src/nautilus-burn-drive.c
+index b32078b..2322937 100644
+--- a/src/nautilus-burn-drive.c
++++ b/src/nautilus-burn-drive.c
+@@ -781,6 +781,48 @@ nautilus_burn_drive_is_mounted (NautilusBurnDrive *drive)
+         return drive->priv->media_is_mounted;
+ }
+ 
++static GDrive *
++nautilus_burn_drive_get_drive_for_node (NautilusBurnDrive *drive)
++{
++      GVolumeMonitor *monitor;
++      GList *drives, *l;
++      GDrive *ret;
++
++      ret = NULL;
++
++      monitor = g_volume_monitor_get ();
++      drives = g_volume_monitor_get_connected_drives (monitor);
++      g_object_unref (monitor);
++
++      for (l = drives; l != NULL && ret == NULL; l = l->next) {
++              GDrive *d = l->data;
++              char *id;
++
++              id = g_drive_get_identifier (d, 
G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
++              if (g_strcmp0 (id, drive->priv->device) == 0)
++                      ret = g_object_ref (d);
++      }
++      g_list_foreach (drives, (GFunc) g_object_unref, NULL);
++      g_list_free (drives);
++
++      return ret;
++}
++
++typedef struct _CdCacheCallbackData {
++      gboolean called;
++      gboolean result;
++} EjectCallbackData;
++
++static void
++nautilus_burn_drive_eject_cb (GObject *source_object,
++                            GAsyncResult *res,
++                            EjectCallbackData *data)
++{
++      data->result = g_drive_eject_finish (G_DRIVE (source_object),
++                                           res, NULL);
++      data->called = TRUE;
++}
++
+ /**
+  * nautilus_burn_drive_eject:
+  * @drive: #NautilusBurnDrive
+@@ -794,8 +836,8 @@ nautilus_burn_drive_is_mounted (NautilusBurnDrive *drive)
+ gboolean
+ nautilus_burn_drive_eject (NautilusBurnDrive *drive)
+ {
+-        char    *cmd;
+-        gboolean res;
++      GDrive *gdrive;
++      EjectCallbackData data;
+ 
+         g_return_val_if_fail (drive != NULL, FALSE);
+ 
+@@ -803,19 +845,25 @@ nautilus_burn_drive_eject (NautilusBurnDrive *drive)
+                 return FALSE;
+         }
+ 
+-#ifdef USE_GNOME_MOUNT
+-        cmd = g_strdup_printf ("gnome-mount --block --eject --no-ui 
--device=%s", drive->priv->device);
+-#else
+-        cmd = g_strdup_printf ("eject %s", drive->priv->device);
+-#endif
++      gdrive = nautilus_burn_drive_get_drive_for_node (drive);
++      if (gdrive == NULL)
++              return FALSE;
++      if (g_drive_can_eject (gdrive) == FALSE) {
++              g_object_unref (gdrive);
++              return FALSE;
++      }
+ 
+-        res = g_spawn_command_line_sync (cmd, NULL, NULL, NULL, NULL);
+-        g_free (cmd);
++      memset (&data, 0, sizeof(data));
+ 
+-        /* delay a bit to make sure eject finishes */
+-        sleep (1);
++      g_drive_eject (gdrive, G_MOUNT_UNMOUNT_FORCE, NULL,
++                     (GAsyncReadyCallback) nautilus_burn_drive_eject_cb,
++                     &data);
++      while (!data.called)
++              g_main_context_iteration (NULL, TRUE);
+ 
+-        return res;
++      g_object_unref (gdrive);
++
++        return data.result;
+ }
+ 
+ /**
+--
+cgit v0.8.2
+From 0a997551806573b6e495353bf9b5766a558c44f9 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <[email protected]>
+Date: Wed, 17 Dec 2008 11:52:37 +0000
+Subject: Simplify _can_eject by calling out to GIO instead of our Linux 
specific
+
+2008-12-17  Bastien Nocera  <[email protected]>
+
+       * src/nautilus-burn-drive.c (nautilus_burn_drive_can_eject):
+       Simplify _can_eject by calling out to GIO instead of our
+       Linux specific ioctl
+
+
+svn path=/trunk/; revision=2271
+---
+diff --git a/src/nautilus-burn-drive.c b/src/nautilus-burn-drive.c
+index 2322937..541d6f2 100644
+--- a/src/nautilus-burn-drive.c
++++ b/src/nautilus-burn-drive.c
+@@ -1492,29 +1492,6 @@ nautilus_burn_drive_class_init (NautilusBurnDriveClass 
*klass)
+                                                                
G_PARAM_READWRITE));
+ }
+ 
+-static gboolean
+-can_drive_eject (int fd)
+-{
+-        if (fd < 0) {
+-                return FALSE;
+-        }
+-
+-#ifdef __linux__
+-        {
+-                int status;
+-
+-                status = ioctl (fd, CDROM_GET_CAPABILITY, 0);
+-                if (status < 0) {
+-                        return FALSE;
+-                }
+-
+-                return status & CDC_OPEN_TRAY;
+-        }
+-#else
+-        return FALSE;
+-#endif
+-}
+-
+ /**
+  * nautilus_burn_drive_can_eject:
+  * @drive: #NautilusBurnDrive
+@@ -1526,22 +1503,16 @@ can_drive_eject (int fd)
+ gboolean
+ nautilus_burn_drive_can_eject (NautilusBurnDrive *drive)
+ {
+-        gpointer ioctl_handle;
+-        int      fd;
+-        gboolean ret;
++      GDrive *gdrive;
++      gboolean ret;
+ 
+         g_return_val_if_fail (drive != NULL, FALSE);
+ 
+-        ioctl_handle = open_ioctl_handle (drive->priv->device);
+-        if (ioctl_handle == INVALID_HANDLE) {
+-                return FALSE;
+-        }
+-
+-        fd = get_ioctl_handle_fd (ioctl_handle);
+-
+-        ret = can_drive_eject (fd);
+-
+-        close_ioctl_handle (ioctl_handle);
++      gdrive = nautilus_burn_drive_get_drive_for_node (drive);
++      if (gdrive == NULL)
++              return FALSE;
++      ret = g_drive_can_eject (gdrive);
++      g_object_unref (gdrive);
+ 
+         return ret;
+ }
+--
+cgit v0.8.2

Reply via email to