summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--multimedia/cheese/Makefile45
-rw-r--r--multimedia/cheese/distinfo3
-rw-r--r--multimedia/cheese/files/patch-configure214
-rw-r--r--multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c438
-rw-r--r--multimedia/cheese/pkg-descr5
-rw-r--r--multimedia/cheese/pkg-plist377
6 files changed, 1082 insertions, 0 deletions
diff --git a/multimedia/cheese/Makefile b/multimedia/cheese/Makefile
new file mode 100644
index 000000000..411e3c42c
--- /dev/null
+++ b/multimedia/cheese/Makefile
@@ -0,0 +1,45 @@
+# New ports collection makefile for: cheese
+# Date created: 13 January 2008
+# Whom: FreeBSD GNOME Team <gnome@FreeBSD.org>
+#
+# $FreeBSD$
+# $MCom: ports/multimedia/cheese/Makefile,v 1.58 2010/04/27 15:51:59 kwm Exp $
+#
+
+PORTNAME= cheese
+PORTVERSION= 2.31.90
+CATEGORIES= multimedia gnome
+MASTER_SITES= GNOME
+DIST_SUBDIR= gnome2
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= A Photobooth-inspired app for taking pictures and videos from webcam
+
+BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev.h:${PORTSDIR}/multimedia/v4l_compat
+LIB_DEPENDS= canberra-gtk.0:${PORTSDIR}/audio/libcanberra \
+ hal.1:${PORTSDIR}/sysutils/hal
+
+USE_XORG= xxf86vm
+USE_BZIP2= yes
+USE_GMAKE= yes
+USE_GNOME= gnomehack gnomeprefix intlhack evolutiondataserver librsvg2 \
+ gnomedocutils gnomedesktop
+USE_GETTEXT= yes
+USE_GSTREAMER= good v4l2
+INSTALLS_OMF= yes
+INSTALLS_ICONS= yes
+USE_LDCONFIG= yes
+GNU_CONFIGURE= yes
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+ LDFLAGS="-L${LOCALBASE}/lib"
+
+DOCS= AUTHORS COPYING ChangeLog NEWS README
+GCONF_SCHEMAS= cheese.schemas
+
+post-install:
+ @${MKDIR} ${DOCSDIR}
+.for i in ${DOCS}
+ @${INSTALL_DATA} ${WRKSRC}/${i} ${DOCSDIR}
+.endfor
+
+.include <bsd.port.mk>
diff --git a/multimedia/cheese/distinfo b/multimedia/cheese/distinfo
new file mode 100644
index 000000000..1a40cb226
--- /dev/null
+++ b/multimedia/cheese/distinfo
@@ -0,0 +1,3 @@
+MD5 (gnome2/cheese-2.31.90.tar.bz2) = 9fb96abfeb3cc013eb8e39396f08dbc1
+SHA256 (gnome2/cheese-2.31.90.tar.bz2) = 146c2462d4b29cf6be2e54313c5591f19676872e4e03bfd4d72d273d575d6e59
+SIZE (gnome2/cheese-2.31.90.tar.bz2) = 5330737
diff --git a/multimedia/cheese/files/patch-configure b/multimedia/cheese/files/patch-configure
new file mode 100644
index 000000000..8befb947b
--- /dev/null
+++ b/multimedia/cheese/files/patch-configure
@@ -0,0 +1,214 @@
+--- configure.orig 2010-04-27 17:32:36.000000000 +0200
++++ configure 2010-04-27 17:32:36.000000000 +0200
+@@ -756,8 +756,8 @@ HAVE_XTEST_FALSE
+ HAVE_XTEST_TRUE
+ XTEST_LIBS
+ OS_LINUX
+-UDEV_LIBS
+-UDEV_CFLAGS
++HAL_LIBS
++HAL_CFLAGS
+ HAVE_GNOME_DOC_UTILS_FALSE
+ HAVE_GNOME_DOC_UTILS_TRUE
+ DISTCHECK_CONFIGURE_FLAGS
+@@ -975,8 +975,8 @@ LIBS
+ CPPFLAGS
+ CPP
+ PKG_CONFIG
+-UDEV_CFLAGS
+-UDEV_LIBS
++HAL_CFLAGS
++HAL_LIBS
+ CHEESE_CFLAGS
+ CHEESE_LIBS'
+
+@@ -1646,8 +1646,8 @@ Some influential environment variables:
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ PKG_CONFIG path to pkg-config utility
+- UDEV_CFLAGS C compiler flags for UDEV, overriding pkg-config
+- UDEV_LIBS linker flags for UDEV, overriding pkg-config
++ HAL_CFLAGS C compiler flags for HAL, overriding pkg-config
++ HAL_LIBS linker flags for HAL, overriding pkg-config
+ CHEESE_CFLAGS
+ C compiler flags for CHEESE, overriding pkg-config
+ CHEESE_LIBS linker flags for CHEESE, overriding pkg-config
+@@ -13843,38 +13843,38 @@ LIBRSVG_REQUIRED=2.18.0
+ # Check for udev
+ #*******************************************************************************
+
+-UDEV_PKG=
++HAL_PKG=
+
+ pkg_failed=no
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UDEV" >&5
+-$as_echo_n "checking for UDEV... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for HAL" >&5
++$as_echo_n "checking for HAL... " >&6; }
+
+-if test -n "$UDEV_CFLAGS"; then
+- pkg_cv_UDEV_CFLAGS="$UDEV_CFLAGS"
++if test -n "$HAL_CFLAGS"; then
++ pkg_cv_HAL_CFLAGS="$HAL_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "gudev-1.0") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"hal\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "hal") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_UDEV_CFLAGS=`$PKG_CONFIG --cflags "gudev-1.0" 2>/dev/null`
++ pkg_cv_HAL_CFLAGS=`$PKG_CONFIG --cflags "hal" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+ else
+ pkg_failed=untried
+ fi
+-if test -n "$UDEV_LIBS"; then
+- pkg_cv_UDEV_LIBS="$UDEV_LIBS"
++if test -n "$HAL_LIBS"; then
++ pkg_cv_HAL_LIBS="$HAL_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "gudev-1.0") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"hal\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "hal") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_UDEV_LIBS=`$PKG_CONFIG --libs "gudev-1.0" 2>/dev/null`
++ pkg_cv_HAL_LIBS=`$PKG_CONFIG --libs "hal" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -13892,27 +13892,27 @@ else
+ _pkg_short_errors_supported=no
+ fi
+ if test $_pkg_short_errors_supported = yes; then
+- UDEV_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gudev-1.0" 2>&1`
++ HAL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "hal" 2>&1`
+ else
+- UDEV_PKG_ERRORS=`$PKG_CONFIG --print-errors "gudev-1.0" 2>&1`
++ HAL_PKG_ERRORS=`$PKG_CONFIG --print-errors "hal" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+- echo "$UDEV_PKG_ERRORS" >&5
++ echo "$HAL_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+- UDEV_PKG=
++ HAL_PKG=
+ elif test $pkg_failed = untried; then
+- UDEV_PKG=
++ HAL_PKG=
+ else
+- UDEV_CFLAGS=$pkg_cv_UDEV_CFLAGS
+- UDEV_LIBS=$pkg_cv_UDEV_LIBS
++ HAL_CFLAGS=$pkg_cv_HAL_CFLAGS
++ HAL_LIBS=$pkg_cv_HAL_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+
+-$as_echo "#define HAVE_UDEV 1" >>confdefs.h
++$as_echo "#define HAVE_HAL 1" >>confdefs.h
+
+- UDEV_PKG=gudev-1.0
++ HAL_PKG=hal
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking operating system" >&5
+@@ -13925,7 +13925,7 @@ $as_echo "#define OS_LINUX /**/" >>confd
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux" >&5
+ $as_echo "Linux" >&6; }
+- if test x$UDEV_PKG = "x" ; then
++ if test x$HAL_PKG = "x" ; then
+ as_fn_error "libgudev is required under Linux and not installed" "$LINENO" 5
+ fi
+ ;;
+@@ -14034,7 +14034,7 @@ if test -n "$CHEESE_CFLAGS"; then
+ dbus-glib-1 >= \$DBUS_GLIB_REQUIRED \\
+ pangocairo >= \$PANGOCAIRO_REQUIRED \\
+ librsvg-2.0 >= \$LIBRSVG_REQUIRED
+- libcanberra-gtk \$UDEV_PKG\""; } >&5
++ libcanberra-gtk \$HAL_PKG\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "\
+ glib-2.0 >= $GLIB_REQUIRED \
+ gobject-2.0 >= $GOBJECT_REQUIRED \
+@@ -14050,7 +14050,7 @@ if test -n "$CHEESE_CFLAGS"; then
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED
+- libcanberra-gtk $UDEV_PKG") 2>&5
++ libcanberra-gtk $HAL_PKG") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+@@ -14069,7 +14069,7 @@ if test -n "$CHEESE_CFLAGS"; then
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED
+- libcanberra-gtk $UDEV_PKG" 2>/dev/null`
++ libcanberra-gtk $HAL_PKG" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -14095,7 +14095,7 @@ if test -n "$CHEESE_LIBS"; then
+ dbus-glib-1 >= \$DBUS_GLIB_REQUIRED \\
+ pangocairo >= \$PANGOCAIRO_REQUIRED \\
+ librsvg-2.0 >= \$LIBRSVG_REQUIRED
+- libcanberra-gtk \$UDEV_PKG\""; } >&5
++ libcanberra-gtk \$HAL_PKG\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "\
+ glib-2.0 >= $GLIB_REQUIRED \
+ gobject-2.0 >= $GOBJECT_REQUIRED \
+@@ -14111,7 +14111,7 @@ if test -n "$CHEESE_LIBS"; then
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED
+- libcanberra-gtk $UDEV_PKG") 2>&5
++ libcanberra-gtk $HAL_PKG") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+@@ -14130,7 +14130,7 @@ if test -n "$CHEESE_LIBS"; then
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED
+- libcanberra-gtk $UDEV_PKG" 2>/dev/null`
++ libcanberra-gtk $HAL_PKG" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -14163,7 +14163,7 @@ fi
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED
+- libcanberra-gtk $UDEV_PKG" 2>&1`
++ libcanberra-gtk $HAL_PKG" 2>&1`
+ else
+ CHEESE_PKG_ERRORS=`$PKG_CONFIG --print-errors "\
+ glib-2.0 >= $GLIB_REQUIRED \
+@@ -14180,7 +14180,7 @@ fi
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED
+- libcanberra-gtk $UDEV_PKG" 2>&1`
++ libcanberra-gtk $HAL_PKG" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$CHEESE_PKG_ERRORS" >&5
+@@ -14200,7 +14200,7 @@ fi
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED
+- libcanberra-gtk $UDEV_PKG) were not met:
++ libcanberra-gtk $HAL_PKG) were not met:
+
+ $CHEESE_PKG_ERRORS
+
diff --git a/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c b/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c
new file mode 100644
index 000000000..8604c2377
--- /dev/null
+++ b/multimedia/cheese/files/patch-libcheese_cheese-camera-device-monitor.c
@@ -0,0 +1,438 @@
+--- libcheese/cheese-camera-device-monitor.c.orig 2010-08-16 23:00:43.000000000 +0200
++++ libcheese/cheese-camera-device-monitor.c 2010-08-18 09:51:48.000000000 +0200
+@@ -24,24 +24,11 @@
+ #endif
+
+ #include <glib-object.h>
++#include <glib/gstdio.h>
+ #include <dbus/dbus-glib-lowlevel.h>
++#include <libhal.h>
+ #include <string.h>
+-
+-#ifdef HAVE_UDEV
+- #define G_UDEV_API_IS_SUBJECT_TO_CHANGE 1
+- #include <gudev/gudev.h>
+-#else
+- #include <fcntl.h>
+- #include <unistd.h>
+- #include <sys/ioctl.h>
+- #if USE_SYS_VIDEOIO_H > 0
+- #include <sys/types.h>
+- #include <sys/videoio.h>
+- #elif defined (__sun)
+- #include <sys/types.h>
+- #include <sys/videodev2.h>
+- #endif /* USE_SYS_VIDEOIO_H */
+-#endif
++#include <unistd.h>
+
+ #include "cheese-camera-device-monitor.h"
+ #include "cheese-marshal.h"
+@@ -54,9 +41,9 @@
+ * #CheeseCameraDeviceMonitor provides a basic interface for
+ * video4linux device enumeration and hotplugging.
+ *
+- * It uses either GUdev or some platform specific code to list video
++ * It uses either HAL or some platform specific code to list video
+ * devices. It is also capable (right now in linux only, with the
+- * udev backend) to monitor device plugging and emit a
++ * hal backend) to monitor device plugging and emit a
+ * CheeseCameraDeviceMonitor::added or
+ * CheeseCameraDeviceMonitor::removed signal when an event happens.
+ */
+@@ -80,11 +67,9 @@ enum CheeseCameraDeviceMonitorError
+
+ typedef struct
+ {
+-#ifdef HAVE_UDEV
+- GUdevClient *client;
+-#else
++ DBusConnection *connection;
++ LibHalContext *hal_ctx;
+ guint filler;
+-#endif /* HAVE_UDEV */
+ } CheeseCameraDeviceMonitorPrivate;
+
+ enum
+@@ -102,111 +87,77 @@ cheese_camera_device_monitor_error_quark
+ return g_quark_from_static_string ("cheese-camera-error-quark");
+ }
+
+-#ifdef HAVE_UDEV
+-static void
+-cheese_camera_device_monitor_added (CheeseCameraDeviceMonitor *monitor,
+- GUdevDevice *udevice)
++cheese_camera_device_monitor_handle_udi (CheeseCameraDeviceMonitor *monitor,
++ const char *udi)
+ {
+- const char *device_file;
+- const char *product_name;
+- const char *vendor;
+- const char *product;
+- const char *bus;
+- gint vendor_id = 0;
+- gint product_id = 0;
++ CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
++ char *device_file;
++ char *product_name;
++ char *capstr;
+ gint v4l_version = 0;
++ DBusError error;
+
+- const gchar *devpath = g_udev_device_get_property (udevice, "DEVPATH");
++ GST_INFO ("Checking hal device '%s'", udi);
+
+- GST_INFO ("Checking udev device '%s'", devpath);
++ dbus_error_init (&error);
+
+- bus = g_udev_device_get_property (udevice, "ID_BUS");
+- if (g_strcmp0 (bus, "usb") == 0)
+- {
+- vendor = g_udev_device_get_property (udevice, "ID_VENDOR_ID");
+- if (vendor != NULL)
+- vendor_id = g_ascii_strtoll (vendor, NULL, 16);
+- product = g_udev_device_get_property (udevice, "ID_MODEL_ID");
+- if (product != NULL)
+- product_id = g_ascii_strtoll (product, NULL, 16);
+- if (vendor_id == 0 || product_id == 0)
+- {
+- GST_WARNING ("Error getting vendor and product id");
+- }
+- else
+- {
+- GST_INFO ("Found device %04x:%04x, getting capabilities...", vendor_id, product_id);
+- }
+- }
+- else
++ product_name = libhal_device_get_property_string (priv->hal_ctx, udi, "info.product", &error);
++ if (dbus_error_is_set (&error))
+ {
+- GST_INFO ("Not an usb device, skipping vendor and model id retrieval");
++ GST_WARNING ("error getting product name: %s: %s", error.name, error.message);
++ dbus_error_free (&error);
++ return;
+ }
+
+- device_file = g_udev_device_get_device_file (udevice);
+- if (device_file == NULL)
++ device_file = libhal_device_get_property_string (priv->hal_ctx, udi, "video4linux.device", &error);
++ if (dbus_error_is_set (&error))
+ {
+- GST_WARNING ("Error getting V4L device");
+- return;
++ GST_WARNING ("error getting V4L device for %s: %s: %s", udi, error.name, error.message);
++ dbus_error_free (&error);
++ libhal_free_string (product_name);
+ }
+
+- /* vbi devices support capture capability too, but cannot be used,
+- * so detect them by device name */
+- if (strstr (device_file, "vbi"))
++ if (g_access (device_file, (R_OK | W_OK)) == -1)
+ {
+- GST_INFO ("Skipping vbi device: %s", device_file);
++ GST_WARNING ("Device %s does not have proper permissions. Permissions must be 0666", device_file);
++ libhal_free_string (product_name);
++ libhal_free_string (device_file);
+ return;
+ }
+
+- v4l_version = g_udev_device_get_property_as_int (udevice, "ID_V4L_VERSION");
+- if (v4l_version == 2 || v4l_version == 1)
++ capstr = libhal_device_get_property_string (priv->hal_ctx, udi, "video4linux.version", &error);
++ if (dbus_error_is_set (&error))
+ {
+- const char *caps;
+-
+- caps = g_udev_device_get_property (udevice, "ID_V4L_CAPABILITIES");
+- if (caps == NULL || strstr (caps, ":capture:") == NULL)
+- {
+- GST_WARNING ("Device %s seems to not have the capture capability, (radio tuner?)"
+- "Removing it from device list.", device_file);
+- return;
+- }
+- product_name = g_udev_device_get_property (udevice, "ID_V4L_PRODUCT");
+- }
+- else if (v4l_version == 0)
+- {
+- GST_ERROR ("Fix your udev installation to include v4l_id, ignoring %s", device_file);
++ GST_WARNING ("error getting V4L version for %s: %s: %s", udi, error.name, error.message);
++ dbus_error_free (&error);
++ libhal_free_string (product_name);
++ libhal_free_string (device_file);
+ return;
+ }
+- else
+- {
+- g_assert_not_reached ();
+- }
++
++ v4l_version = atoi (capstr);
++ libhal_free_string (capstr);
+
+ g_signal_emit (monitor, monitor_signals[ADDED], 0,
+- devpath,
++ udi,
+ device_file,
+ product_name,
+ v4l_version);
+ }
+
+ static void
+-cheese_camera_device_monitor_removed (CheeseCameraDeviceMonitor *monitor,
+- GUdevDevice *udevice)
+-{
+- g_signal_emit (monitor, monitor_signals[REMOVED], 0,
+- g_udev_device_get_property (udevice, "DEVPATH"));
+-}
++cheese_camera_device_monitor_removed (LibHalContext *ctx,
++ const char *udi)
++ {
++ CheeseCameraDeviceMonitor *monitor;
++ void *data;
+
+-static void
+-cheese_camera_device_monitor_uevent_cb (GUdevClient *client,
+- const gchar *action,
+- GUdevDevice *udevice,
+- CheeseCameraDeviceMonitor *monitor)
+-{
+- if (g_str_equal (action, "remove"))
+- cheese_camera_device_monitor_removed (monitor, udevice);
+- else if (g_str_equal (action, "add"))
+- cheese_camera_device_monitor_added (monitor, udevice);
++ data = libhal_ctx_get_user_data (ctx);
++ g_assert (data);
++
++ monitor = CHEESE_CAMERA_DEVICE_MONITOR (data);
++
++ g_signal_emit (monitor, monitor_signals[REMOVED], 0, udi);
+ }
+
+ /**
+@@ -222,115 +173,85 @@ void
+ cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
+ {
+ CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+- GList *devices, *l;
+- gint i = 0;
++ int i;
++ int num_udis = 0;
++ char **udis;
++ DBusError error;
+
+- if (priv->client == NULL)
+- return;
++ GST_INFO ("Probing devices with HAL...");
+
+- GST_INFO ("Probing devices with udev...");
++ if (priv->hal_ctx == NULL)
++ return;
+
+- devices = g_udev_client_query_by_subsystem (priv->client, "video4linux");
++ dbus_error_init (&error);
+
+- /* Initialize camera structures */
+- for (l = devices; l != NULL; l = l->next)
++ udis = libhal_find_device_by_capability (priv->hal_ctx, "video4linux", &num_udis, &error);
++
++ if (dbus_error_is_set (&error))
+ {
+- cheese_camera_device_monitor_added (monitor, l->data);
+- g_object_unref (l->data);
+- i++;
++ GST_WARNING ("libhal_find_device_by_capability: %s: %s", error.name, error.message);
++ dbus_error_free (&error);
++ return;
+ }
+- g_list_free (devices);
++
++ /* Initialize camera structures */
++ for (i = 0; i < num_udis; i++)
++ cheese_camera_device_monitor_handle_udi (monitor, udis[i]);
++ libhal_free_string_array (udis);
+
+ if (i == 0) GST_WARNING ("No device found");
+ }
+
+-#else /* HAVE_UDEV */
+-void
+-cheese_camera_device_monitor_coldplug (CheeseCameraDeviceMonitor *monitor)
++static void
++cheese_camera_device_monitor_added (LibHalContext *ctx, const char *udi)
+ {
+- #if 0
+- CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+- struct v4l2_capability v2cap;
+- struct video_capability v1cap;
+- int fd, ok;
+-
+- if ((fd = open (device_path, O_RDONLY | O_NONBLOCK)) < 0)
+- {
+- g_warning ("Failed to open %s: %s", device_path, strerror (errno));
+- return;
+- }
+- ok = ioctl (fd, VIDIOC_QUERYCAP, &v2cap);
+- if (ok < 0)
+- {
+- ok = ioctl (fd, VIDIOCGCAP, &v1cap);
+- if (ok < 0)
+- {
+- g_warning ("Error while probing v4l capabilities for %s: %s",
+- device_path, strerror (errno));
+- close (fd);
+- return;
+- }
+- g_print ("Detected v4l device: %s\n", v1cap.name);
+- g_print ("Device type: %d\n", v1cap.type);
+- gstreamer_src = "v4lsrc";
+- product_name = v1cap.name;
+- }
+- else
+- {
+- guint cap = v2cap.capabilities;
+- g_print ("Detected v4l2 device: %s\n", v2cap.card);
+- g_print ("Driver: %s, version: %d\n", v2cap.driver, v2cap.version);
+-
+- /* g_print ("Bus info: %s\n", v2cap.bus_info); */ /* Doesn't seem anything useful */
+- g_print ("Capabilities: 0x%08X\n", v2cap.capabilities);
+- if (!(cap & V4L2_CAP_VIDEO_CAPTURE))
+- {
+- g_print ("Device %s seems to not have the capture capability, (radio tuner?)\n"
+- "Removing it from device list.\n", device_path);
+- close (fd);
+- return;
+- }
+- gstreamer_src = "v4l2src";
+- product_name = (char *) v2cap.card;
+- }
+- close (fd);
++ CheeseCameraDeviceMonitor *monitor;
++ char **caps;
++ guint i;
++ void *data;
+
+- GList *devices, *l;
++ data = libhal_ctx_get_user_data (ctx);
++ g_assert (data);
+
+- g_print ("Probing devices with udev...\n");
++ monitor = CHEESE_CAMERA_DEVICE_MONITOR (data);
+
+- if (priv->client == NULL)
++ caps = libhal_device_get_property_strlist (ctx, udi, "info.capabilities", NULL);
++ if (caps == NULL)
+ return;
+
+- devices = g_udev_client_query_by_subsystem (priv->client, "video4linux");
+-
+- /* Initialize camera structures */
+- for (l = devices; l != NULL; l = l->next)
++ for (i = 0; caps[i] != NULL; i++)
+ {
+- cheese_camera_device_monitor_added (monitor, l->data);
+- g_object_unref (l->data);
++ if (g_strcmp0 (caps[i], "video4linux") == 0)
++ {
++ cheese_camera_device_monitor_handle_udi (monitor, udi);
++ break;
++ }
+ }
+- g_list_free (devices);
+- #endif
+-}
+
+-#endif /* HAVE_UDEV */
++ libhal_free_string_array (caps);
++}
+
+ static void
+ cheese_camera_device_monitor_finalize (GObject *object)
+ {
+-#ifdef HAVE_UDEV
+ CheeseCameraDeviceMonitor *monitor;
+
+ monitor = CHEESE_CAMERA_DEVICE_MONITOR (object);
+ CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+
+- if (priv->client != NULL)
++ if (priv->connection != NULL)
+ {
+- g_object_unref (priv->client);
+- priv->client = NULL;
++ dbus_connection_unref (priv->connection);
++ priv->connection = NULL;
+ }
+-#endif /* HAVE_UDEV */
++ if (priv->hal_ctx != NULL)
++ {
++ libhal_ctx_set_device_added (priv->hal_ctx, NULL);
++ libhal_ctx_set_device_removed (priv->hal_ctx, NULL);
++ libhal_ctx_free (priv->hal_ctx);
++ priv->hal_ctx = NULL;
++ }
++
+ G_OBJECT_CLASS (cheese_camera_device_monitor_parent_class)->finalize (object);
+ }
+
+@@ -385,14 +306,52 @@ cheese_camera_device_monitor_class_init
+ static void
+ cheese_camera_device_monitor_init (CheeseCameraDeviceMonitor *monitor)
+ {
+-#ifdef HAVE_UDEV
+- CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
+- const gchar *const subsystems[] = {"video4linux", NULL};
+-
+- priv->client = g_udev_client_new (subsystems);
+- g_signal_connect (G_OBJECT (priv->client), "uevent",
+- G_CALLBACK (cheese_camera_device_monitor_uevent_cb), monitor);
+-#endif /* HAVE_UDEV */
++ CheeseCameraDeviceMonitorPrivate *priv = CHEESE_CAMERA_DEVICE_MONITOR_GET_PRIVATE (monitor);
++ LibHalContext *hal_ctx;
++ DBusError error;
++
++ dbus_error_init (&error);
++
++ priv->connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
++ dbus_connection_set_exit_on_disconnect (priv->connection, FALSE);
++
++ hal_ctx = libhal_ctx_new ();
++ if (hal_ctx == NULL)
++ {
++ GST_WARNING ("Could not create libhal context");
++ dbus_error_free (&error);
++ return;
++ }
++
++ if (!libhal_ctx_set_dbus_connection (hal_ctx, priv->connection))
++ {
++ GST_WARNING ("libhal_ctx_set_dbus_connection: %s: %s", error.name, error.message);
++ dbus_error_free (&error);
++ return;
++ }
++
++ if (!libhal_ctx_init (hal_ctx, &error))
++ {
++ if (dbus_error_is_set (&error))
++ {
++ GST_WARNING ("libhal_ctx_init: %s: %s", error.name, error.message);
++ dbus_error_free (&error);
++ }
++ GST_WARNING ("Could not initialise connection to hald.\n"
++ "Normally this means the HAL daemon (hald) is not running or not ready");
++ return;
++ }
++
++ dbus_connection_setup_with_g_main (priv->connection, NULL);
++
++ if (!libhal_ctx_set_user_data (hal_ctx, monitor))
++ GST_WARNING ("Failed to set user data on HAL context");
++ if (!libhal_ctx_set_device_added (hal_ctx, cheese_camera_device_monitor_added))
++ GST_WARNING ("Failed to connect to device added signal from HAL");
++ if (!libhal_ctx_set_device_removed (hal_ctx, cheese_camera_device_monitor_removed))
++ GST_WARNING ("Failed to connect to device removed signal from HAL");
++
++ priv->hal_ctx = hal_ctx;
+ }
+
+ /**
diff --git a/multimedia/cheese/pkg-descr b/multimedia/cheese/pkg-descr
new file mode 100644
index 000000000..51402b10a
--- /dev/null
+++ b/multimedia/cheese/pkg-descr
@@ -0,0 +1,5 @@
+Cheese is a Photobooth-inspired GNOME application for taking pictures and
+videos from a webcam. It also includes fancy graphical effects based on the
+gstreamer-backend.
+
+WWW: http://www.gnome.org/projects/cheese/
diff --git a/multimedia/cheese/pkg-plist b/multimedia/cheese/pkg-plist
new file mode 100644
index 000000000..13619429f
--- /dev/null
+++ b/multimedia/cheese/pkg-plist
@@ -0,0 +1,377 @@
+bin/cheese
+include/cheese/cheese-avatar-chooser.h
+include/cheese/cheese-camera-device-monitor.h
+include/cheese/cheese-widget.h
+lib/libcheese-gtk.a
+lib/libcheese-gtk.la
+lib/libcheese-gtk.so
+lib/libcheese-gtk.so.18
+libdata/pkgconfig/cheese-gtk.pc
+libexec/cheese/cheese-bugreport.sh
+share/applications/cheese.desktop
+%%DATADIR%%/cheese-prefs.ui
+%%DATADIR%%/cheese-ui.xml
+%%DATADIR%%/cheese.ui
+%%DATADIR%%/effects/Hulk.png
+%%DATADIR%%/effects/Mauve.png
+%%DATADIR%%/effects/NoirBlanc.png
+%%DATADIR%%/effects/Saturation.png
+%%DATADIR%%/effects/dicetv.png
+%%DATADIR%%/effects/edgetv.png
+%%DATADIR%%/effects/identity.png
+%%DATADIR%%/effects/shagadelictv.png
+%%DATADIR%%/effects/vertigotv.png
+%%DATADIR%%/effects/videoflip_h.png
+%%DATADIR%%/effects/videoflip_v.png
+%%DATADIR%%/effects/warptv.png
+%%DATADIR%%/gtkrc
+%%DATADIR%%/icons/hicolor/16x16/actions/browse-webcam-effects.png
+%%DATADIR%%/icons/hicolor/16x16/actions/cheese-take-burst.png
+%%DATADIR%%/icons/hicolor/16x16/actions/cheese-take-photo.png
+%%DATADIR%%/icons/hicolor/22x22/actions/browse-webcam-effects.png
+%%DATADIR%%/icons/hicolor/22x22/actions/cheese-take-burst.png
+%%DATADIR%%/icons/hicolor/22x22/actions/cheese-take-photo.png
+%%DATADIR%%/icons/hicolor/24x24/actions/browse-webcam-effects.png
+%%DATADIR%%/icons/hicolor/24x24/actions/cheese-take-burst.png
+%%DATADIR%%/icons/hicolor/24x24/actions/cheese-take-photo.png
+%%DATADIR%%/icons/hicolor/32x32/actions/browse-webcam-effects.png
+%%DATADIR%%/icons/hicolor/32x32/actions/cheese-take-burst.png
+%%DATADIR%%/icons/hicolor/32x32/actions/cheese-take-photo.png
+%%DATADIR%%/icons/hicolor/48x48/actions/browse-webcam-effects.png
+%%DATADIR%%/icons/hicolor/48x48/actions/cheese-take-burst.png
+%%DATADIR%%/icons/hicolor/48x48/actions/cheese-take-photo.png
+%%DATADIR%%/icons/hicolor/scalable/actions/browse-webcam-effects.svg
+%%DATADIR%%/icons/hicolor/scalable/actions/cheese-take-burst.svg
+%%DATADIR%%/icons/hicolor/scalable/actions/cheese-take-photo.svg
+%%DATADIR%%/pixmaps/camera-icon.svg
+%%DATADIR%%/pixmaps/cheese-1.svg
+%%DATADIR%%/pixmaps/cheese-2.svg
+%%DATADIR%%/pixmaps/cheese-3.svg
+%%DATADIR%%/pixmaps/thumbnail-frame.png
+share/dbus-1/services/org.gnome.Cheese.service
+%%DOCSDIR%%/AUTHORS
+%%DOCSDIR%%/COPYING
+%%DOCSDIR%%/ChangeLog
+%%DOCSDIR%%/CheeseAvatarChooser.html
+%%DOCSDIR%%/CheeseCameraDeviceMonitor.html
+%%DOCSDIR%%/CheeseWidget.html
+%%DOCSDIR%%/NEWS
+%%DOCSDIR%%/README
+%%DOCSDIR%%/api-index-full.html
+%%DOCSDIR%%/ch01.html
+%%DOCSDIR%%/cheese.devhelp
+%%DOCSDIR%%/cheese.devhelp2
+%%DOCSDIR%%/home.png
+%%DOCSDIR%%/index.html
+%%DOCSDIR%%/index.sgml
+%%DOCSDIR%%/left.png
+%%DOCSDIR%%/object-tree.html
+%%DOCSDIR%%/right.png
+%%DOCSDIR%%/style.css
+%%DOCSDIR%%/up.png
+share/gnome/help/cheese/C/cheese.xml
+share/gnome/help/cheese/C/figures/cheese-effects.jpg
+share/gnome/help/cheese/C/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/C/figures/cheese-main.jpg
+share/gnome/help/cheese/C/figures/cheese-preferences.jpg
+share/gnome/help/cheese/C/figures/cheese-share.jpg
+share/gnome/help/cheese/C/figures/cheese-wide.jpg
+share/gnome/help/cheese/C/legal.xml
+share/gnome/help/cheese/ca/cheese.xml
+share/gnome/help/cheese/ca/figures/cheese-effects.jpg
+share/gnome/help/cheese/ca/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/ca/figures/cheese-main.jpg
+share/gnome/help/cheese/ca/figures/cheese-preferences.jpg
+share/gnome/help/cheese/ca/figures/cheese-share.jpg
+share/gnome/help/cheese/ca/figures/cheese-wide.jpg
+share/gnome/help/cheese/cs/cheese.xml
+share/gnome/help/cheese/cs/figures/cheese-effects.jpg
+share/gnome/help/cheese/cs/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/cs/figures/cheese-main.jpg
+share/gnome/help/cheese/cs/figures/cheese-preferences.jpg
+share/gnome/help/cheese/cs/figures/cheese-share.jpg
+share/gnome/help/cheese/cs/figures/cheese-wide.jpg
+share/gnome/help/cheese/de/cheese.xml
+share/gnome/help/cheese/de/figures/cheese-effects.jpg
+share/gnome/help/cheese/de/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/de/figures/cheese-main.jpg
+share/gnome/help/cheese/de/figures/cheese-preferences.jpg
+share/gnome/help/cheese/de/figures/cheese-share.jpg
+share/gnome/help/cheese/de/figures/cheese-wide.jpg
+share/gnome/help/cheese/el/cheese.xml
+share/gnome/help/cheese/el/figures/cheese-effects.jpg
+share/gnome/help/cheese/el/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/el/figures/cheese-main.jpg
+share/gnome/help/cheese/el/figures/cheese-preferences.jpg
+share/gnome/help/cheese/el/figures/cheese-share.jpg
+share/gnome/help/cheese/el/figures/cheese-wide.jpg
+share/gnome/help/cheese/en_GB/cheese.xml
+share/gnome/help/cheese/en_GB/figures/cheese-effects.jpg
+share/gnome/help/cheese/en_GB/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/en_GB/figures/cheese-main.jpg
+share/gnome/help/cheese/en_GB/figures/cheese-preferences.jpg
+share/gnome/help/cheese/en_GB/figures/cheese-share.jpg
+share/gnome/help/cheese/en_GB/figures/cheese-wide.jpg
+share/gnome/help/cheese/es/cheese.xml
+share/gnome/help/cheese/es/figures/cheese-effects.jpg
+share/gnome/help/cheese/es/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/es/figures/cheese-main.jpg
+share/gnome/help/cheese/es/figures/cheese-preferences.jpg
+share/gnome/help/cheese/es/figures/cheese-share.jpg
+share/gnome/help/cheese/es/figures/cheese-wide.jpg
+share/gnome/help/cheese/fr/cheese.xml
+share/gnome/help/cheese/fr/figures/cheese-effects.jpg
+share/gnome/help/cheese/fr/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/fr/figures/cheese-main.jpg
+share/gnome/help/cheese/fr/figures/cheese-preferences.jpg
+share/gnome/help/cheese/fr/figures/cheese-share.jpg
+share/gnome/help/cheese/fr/figures/cheese-wide.jpg
+share/gnome/help/cheese/it/cheese.xml
+share/gnome/help/cheese/it/figures/cheese-effects.jpg
+share/gnome/help/cheese/it/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/it/figures/cheese-main.jpg
+share/gnome/help/cheese/it/figures/cheese-preferences.jpg
+share/gnome/help/cheese/it/figures/cheese-share.jpg
+share/gnome/help/cheese/it/figures/cheese-wide.jpg
+share/gnome/help/cheese/nl/cheese.xml
+share/gnome/help/cheese/nl/figures/cheese-effects.jpg
+share/gnome/help/cheese/nl/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/nl/figures/cheese-main.jpg
+share/gnome/help/cheese/nl/figures/cheese-preferences.jpg
+share/gnome/help/cheese/nl/figures/cheese-share.jpg
+share/gnome/help/cheese/nl/figures/cheese-wide.jpg
+share/gnome/help/cheese/oc/cheese.xml
+share/gnome/help/cheese/oc/figures/cheese-effects.jpg
+share/gnome/help/cheese/oc/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/oc/figures/cheese-main.jpg
+share/gnome/help/cheese/oc/figures/cheese-preferences.jpg
+share/gnome/help/cheese/oc/figures/cheese-share.jpg
+share/gnome/help/cheese/oc/figures/cheese-wide.jpg
+share/gnome/help/cheese/pt_BR/cheese.xml
+share/gnome/help/cheese/pt_BR/figures/cheese-effects.jpg
+share/gnome/help/cheese/pt_BR/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/pt_BR/figures/cheese-main.jpg
+share/gnome/help/cheese/pt_BR/figures/cheese-preferences.jpg
+share/gnome/help/cheese/pt_BR/figures/cheese-share.jpg
+share/gnome/help/cheese/pt_BR/figures/cheese-wide.jpg
+share/gnome/help/cheese/ru/cheese.xml
+share/gnome/help/cheese/ru/figures/cheese-effects.jpg
+share/gnome/help/cheese/ru/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/ru/figures/cheese-main.jpg
+share/gnome/help/cheese/ru/figures/cheese-preferences.jpg
+share/gnome/help/cheese/ru/figures/cheese-share.jpg
+share/gnome/help/cheese/ru/figures/cheese-wide.jpg
+share/gnome/help/cheese/sl/cheese.xml
+share/gnome/help/cheese/sl/figures/cheese-effects.jpg
+share/gnome/help/cheese/sl/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/sl/figures/cheese-main.jpg
+share/gnome/help/cheese/sl/figures/cheese-preferences.jpg
+share/gnome/help/cheese/sl/figures/cheese-share.jpg
+share/gnome/help/cheese/sl/figures/cheese-wide.jpg
+share/gnome/help/cheese/sv/cheese.xml
+share/gnome/help/cheese/sv/figures/cheese-effects.jpg
+share/gnome/help/cheese/sv/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/sv/figures/cheese-main.jpg
+share/gnome/help/cheese/sv/figures/cheese-preferences.jpg
+share/gnome/help/cheese/sv/figures/cheese-share.jpg
+share/gnome/help/cheese/sv/figures/cheese-wide.jpg
+share/gnome/help/cheese/th/cheese.xml
+share/gnome/help/cheese/th/figures/cheese-effects.jpg
+share/gnome/help/cheese/th/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/th/figures/cheese-main.jpg
+share/gnome/help/cheese/th/figures/cheese-preferences.jpg
+share/gnome/help/cheese/th/figures/cheese-share.jpg
+share/gnome/help/cheese/th/figures/cheese-wide.jpg
+share/gnome/help/cheese/zh_CN/cheese.xml
+share/gnome/help/cheese/zh_CN/figures/cheese-effects.jpg
+share/gnome/help/cheese/zh_CN/figures/cheese-fullscreen.jpg
+share/gnome/help/cheese/zh_CN/figures/cheese-main.jpg
+share/gnome/help/cheese/zh_CN/figures/cheese-preferences.jpg
+share/gnome/help/cheese/zh_CN/figures/cheese-share.jpg
+share/gnome/help/cheese/zh_CN/figures/cheese-wide.jpg
+share/icons/hicolor/16x16/apps/cheese.png
+share/icons/hicolor/22x22/apps/cheese.png
+share/icons/hicolor/24x24/apps/cheese.png
+share/icons/hicolor/256x256/apps/cheese.png
+share/icons/hicolor/32x32/apps/cheese.png
+share/icons/hicolor/48x48/apps/cheese.png
+share/icons/hicolor/scalable/apps/cheese.svg
+share/locale/af/LC_MESSAGES/cheese.mo
+share/locale/ar/LC_MESSAGES/cheese.mo
+share/locale/as/LC_MESSAGES/cheese.mo
+share/locale/ast/LC_MESSAGES/cheese.mo
+share/locale/be/LC_MESSAGES/cheese.mo
+share/locale/be@latin/LC_MESSAGES/cheese.mo
+share/locale/bg/LC_MESSAGES/cheese.mo
+share/locale/bn/LC_MESSAGES/cheese.mo
+share/locale/bn_IN/LC_MESSAGES/cheese.mo
+share/locale/ca/LC_MESSAGES/cheese.mo
+share/locale/ca@valencia/LC_MESSAGES/cheese.mo
+share/locale/cs/LC_MESSAGES/cheese.mo
+share/locale/da/LC_MESSAGES/cheese.mo
+share/locale/de/LC_MESSAGES/cheese.mo
+share/locale/dz/LC_MESSAGES/cheese.mo
+share/locale/el/LC_MESSAGES/cheese.mo
+share/locale/en@shaw/LC_MESSAGES/cheese.mo
+share/locale/en_GB/LC_MESSAGES/cheese.mo
+share/locale/es/LC_MESSAGES/cheese.mo
+share/locale/et/LC_MESSAGES/cheese.mo
+share/locale/eu/LC_MESSAGES/cheese.mo
+share/locale/fi/LC_MESSAGES/cheese.mo
+share/locale/fr/LC_MESSAGES/cheese.mo
+share/locale/ga/LC_MESSAGES/cheese.mo
+share/locale/gl/LC_MESSAGES/cheese.mo
+share/locale/gu/LC_MESSAGES/cheese.mo
+share/locale/he/LC_MESSAGES/cheese.mo
+share/locale/hi/LC_MESSAGES/cheese.mo
+share/locale/hr/LC_MESSAGES/cheese.mo
+share/locale/hu/LC_MESSAGES/cheese.mo
+share/locale/id/LC_MESSAGES/cheese.mo
+share/locale/it/LC_MESSAGES/cheese.mo
+share/locale/ja/LC_MESSAGES/cheese.mo
+share/locale/ka/LC_MESSAGES/cheese.mo
+share/locale/kn/LC_MESSAGES/cheese.mo
+share/locale/ko/LC_MESSAGES/cheese.mo
+share/locale/ku/LC_MESSAGES/cheese.mo
+share/locale/lt/LC_MESSAGES/cheese.mo
+share/locale/lv/LC_MESSAGES/cheese.mo
+share/locale/mai/LC_MESSAGES/cheese.mo
+share/locale/mk/LC_MESSAGES/cheese.mo
+share/locale/ml/LC_MESSAGES/cheese.mo
+share/locale/mr/LC_MESSAGES/cheese.mo
+share/locale/ms/LC_MESSAGES/cheese.mo
+share/locale/nb/LC_MESSAGES/cheese.mo
+share/locale/nds/LC_MESSAGES/cheese.mo
+share/locale/nl/LC_MESSAGES/cheese.mo
+share/locale/nn/LC_MESSAGES/cheese.mo
+share/locale/oc/LC_MESSAGES/cheese.mo
+share/locale/or/LC_MESSAGES/cheese.mo
+share/locale/pa/LC_MESSAGES/cheese.mo
+share/locale/pl/LC_MESSAGES/cheese.mo
+share/locale/ps/LC_MESSAGES/cheese.mo
+share/locale/pt/LC_MESSAGES/cheese.mo
+share/locale/pt_BR/LC_MESSAGES/cheese.mo
+share/locale/ro/LC_MESSAGES/cheese.mo
+share/locale/ru/LC_MESSAGES/cheese.mo
+share/locale/sl/LC_MESSAGES/cheese.mo
+share/locale/sq/LC_MESSAGES/cheese.mo
+share/locale/sr/LC_MESSAGES/cheese.mo
+share/locale/sr@latin/LC_MESSAGES/cheese.mo
+share/locale/sv/LC_MESSAGES/cheese.mo
+share/locale/ta/LC_MESSAGES/cheese.mo
+share/locale/te/LC_MESSAGES/cheese.mo
+share/locale/th/LC_MESSAGES/cheese.mo
+share/locale/tr/LC_MESSAGES/cheese.mo
+share/locale/uk/LC_MESSAGES/cheese.mo
+share/locale/vi/LC_MESSAGES/cheese.mo
+share/locale/zh_CN/LC_MESSAGES/cheese.mo
+share/locale/zh_HK/LC_MESSAGES/cheese.mo
+share/locale/zh_TW/LC_MESSAGES/cheese.mo
+share/omf/cheese/cheese-C.omf
+share/omf/cheese/cheese-ca.omf
+share/omf/cheese/cheese-cs.omf
+share/omf/cheese/cheese-de.omf
+share/omf/cheese/cheese-el.omf
+share/omf/cheese/cheese-en_GB.omf
+share/omf/cheese/cheese-es.omf
+share/omf/cheese/cheese-fr.omf
+share/omf/cheese/cheese-it.omf
+share/omf/cheese/cheese-nl.omf
+share/omf/cheese/cheese-oc.omf
+share/omf/cheese/cheese-pt_BR.omf
+share/omf/cheese/cheese-ru.omf
+share/omf/cheese/cheese-sl.omf
+share/omf/cheese/cheese-sv.omf
+share/omf/cheese/cheese-th.omf
+share/omf/cheese/cheese-zh_CN.omf
+@dirrm share/omf/cheese
+@dirrmtry share/icons/hicolor/256x256/apps
+@dirrmtry share/icons/hicolor/256x256
+@dirrm share/gnome/help/cheese/zh_CN/figures
+@dirrm share/gnome/help/cheese/zh_CN
+@dirrm share/gnome/help/cheese/th/figures
+@dirrm share/gnome/help/cheese/th
+@dirrm share/gnome/help/cheese/sv/figures
+@dirrm share/gnome/help/cheese/sv
+@dirrm share/gnome/help/cheese/sl/figures
+@dirrm share/gnome/help/cheese/sl
+@dirrm share/gnome/help/cheese/ru/figures
+@dirrm share/gnome/help/cheese/ru
+@dirrm share/gnome/help/cheese/pt_BR/figures
+@dirrm share/gnome/help/cheese/pt_BR
+@dirrm share/gnome/help/cheese/oc/figures
+@dirrm share/gnome/help/cheese/oc
+@dirrm share/gnome/help/cheese/nl/figures
+@dirrm share/gnome/help/cheese/nl
+@dirrm share/gnome/help/cheese/it/figures
+@dirrm share/gnome/help/cheese/it
+@dirrm share/gnome/help/cheese/fr/figures
+@dirrm share/gnome/help/cheese/fr
+@dirrm share/gnome/help/cheese/es/figures
+@dirrm share/gnome/help/cheese/es
+@dirrm share/gnome/help/cheese/en_GB/figures
+@dirrm share/gnome/help/cheese/en_GB
+@dirrm share/gnome/help/cheese/el/figures
+@dirrm share/gnome/help/cheese/el
+@dirrm share/gnome/help/cheese/de/figures
+@dirrm share/gnome/help/cheese/de
+@dirrm share/gnome/help/cheese/cs/figures
+@dirrm share/gnome/help/cheese/cs
+@dirrm share/gnome/help/cheese/ca/figures
+@dirrm share/gnome/help/cheese/ca
+@dirrm share/gnome/help/cheese/C/figures
+@dirrm share/gnome/help/cheese/C
+@dirrm share/gnome/help/cheese
+@dirrm %%DOCSDIR%%
+@dirrm %%DATADIR%%/pixmaps
+@dirrm %%DATADIR%%/icons/hicolor/scalable/actions
+@dirrm %%DATADIR%%/icons/hicolor/scalable
+@dirrm %%DATADIR%%/icons/hicolor/48x48/actions
+@dirrm %%DATADIR%%/icons/hicolor/48x48
+@dirrm %%DATADIR%%/icons/hicolor/32x32/actions
+@dirrm %%DATADIR%%/icons/hicolor/32x32
+@dirrm %%DATADIR%%/icons/hicolor/24x24/actions
+@dirrm %%DATADIR%%/icons/hicolor/24x24
+@dirrm %%DATADIR%%/icons/hicolor/22x22/actions
+@dirrm %%DATADIR%%/icons/hicolor/22x22
+@dirrm %%DATADIR%%/icons/hicolor/16x16/actions
+@dirrm %%DATADIR%%/icons/hicolor/16x16
+@dirrm %%DATADIR%%/icons/hicolor
+@dirrm %%DATADIR%%/icons
+@dirrm %%DATADIR%%/effects
+@dirrm %%DATADIR%%
+@dirrmtry share/applications
+@dirrm libexec/cheese
+@dirrm include/cheese
+@dirrmtry share/locale/zh_HK/LC_MESSAGES
+@dirrmtry share/locale/zh_HK
+@dirrmtry share/locale/te/LC_MESSAGES
+@dirrmtry share/locale/te
+@dirrmtry share/locale/sr@latin/LC_MESSAGES
+@dirrmtry share/locale/sr@latin
+@dirrmtry share/locale/ps/LC_MESSAGES
+@dirrmtry share/locale/ps
+@dirrmtry share/locale/oc/LC_MESSAGES
+@dirrmtry share/locale/oc
+@dirrmtry share/locale/nds/LC_MESSAGES
+@dirrmtry share/locale/nds
+@dirrmtry share/locale/mr/LC_MESSAGES
+@dirrmtry share/locale/mr
+@dirrmtry share/locale/mai/LC_MESSAGES
+@dirrmtry share/locale/mai
+@dirrmtry share/locale/ku/LC_MESSAGES
+@dirrmtry share/locale/ku
+@dirrmtry share/locale/en@shaw/LC_MESSAGES
+@dirrmtry share/locale/en@shaw
+@dirrmtry share/locale/dz/LC_MESSAGES
+@dirrmtry share/locale/dz
+@dirrmtry share/locale/ca@valencia/LC_MESSAGES
+@dirrmtry share/locale/ca@valencia
+@dirrmtry share/locale/bn_IN/LC_MESSAGES
+@dirrmtry share/locale/bn_IN
+@dirrmtry share/locale/be@latin/LC_MESSAGES
+@dirrmtry share/locale/be@latin
+@dirrmtry share/locale/ast/LC_MESSAGES
+@dirrmtry share/locale/ast
+@dirrmtry share/locale/as/LC_MESSAGES
+@dirrmtry share/locale/as