Mark H Weaver <m...@netris.org> writes: > 'dconf' apparently needs to be in the profile for both GNOME Terminal > and Totem because of the session dbus service(s) it provides. Without > it, modern GNOME programs behave quite badly. They have no way to > access or change their own configuration settings, e.g. if you go into > their preferences, you see checkboxes that do not change their state > when clicked. > > I'm not sure how best to deal with issues like this, and also with > things like grilo-plugins and gst-plugins-* that are needed for the > proper functioning of Totem. Should we make them propagated-inputs? > > Or perhaps they should be normal inputs and we should use a wrapper to > add those directories as suffixes to GRL_PLUGIN_PATH and > GST_PLUGIN_SYSTEM_PATH automatically? > > What do you think?
So, at this point my inclination is to do the following: * Add 'dconf' to the propagated-inputs of 'totem', since totem needs dconf services to be available on the user session D-Bus. * Add a wrapper for 'totem' that add prefixes to both GST_PLUGIN_SYSTEM_PATH and GRL_PLUGIN_PATH to ensure reliable access to a baseline set of plugins needed for proper functioning of 'totem'. This includes grilo-plugins, gst-plugins-base, and gst-plugins-good. IMO, this hard-coded set of plugins should exclude patent-encumbered codecs, so no gst-libav or gst-plugins-ugly. Please see the attached 'totem' package. To simplify things, the values of the GST_PLUGIN_SYSTEM_PATH and GRL_PLUGIN_PATH environment variables are taken directly from the build environment (using 'getenv') and propagated unchanged into the created wrapper. What do you think? Mark
>From f1cbb55b1dd87bffd34d77cf6e1e68f33c38b9e0 Mon Sep 17 00:00:00 2001 From: Mark H Weaver <m...@netris.org> Date: Sat, 20 Jun 2015 18:26:34 -0400 Subject: [PATCH] gnu: Add totem. * gnu/packages/gnome.scm (totem): New variable. --- gnu/packages/gnome.scm | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 30277f5..3142506 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -57,6 +57,7 @@ #:use-module (gnu packages libcanberra) #:use-module (gnu packages linux) #:use-module (gnu packages libusb) + #:use-module (gnu packages lirc) #:use-module (gnu packages lua) #:use-module (gnu packages image) #:use-module (gnu packages perl) @@ -2823,3 +2824,81 @@ for application developers.") "Grilo is a framework focused on making media discovery and browsing easy for application developers.") (license license:lgpl2.1+))) + +(define-public totem + (package + (name "totem") + (version "3.16.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1nkm2i271ivq40hryrl6px39gbbvhmlx4vmvwvw4h3z8xh3013f9")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("desktop-file-utils" ,desktop-file-utils) + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("itstool" ,itstool))) + (propagated-inputs + `(("dconf" ,dconf))) + (inputs + `(("gtk+" ,gtk+) + ("gdk-pixbuf" ,gdk-pixbuf) + ("atk" ,atk) + ("cairo" ,cairo) + ("dbus-glib" ,dbus-glib) + ("clutter" ,clutter) + ("clutter-gtk" ,clutter-gtk) + ("clutter-gst" ,clutter-gst) + ("xproto" ,xproto) + ("libxxf86vm" ,libxxf86vm) + ("libxtst" ,libxtst) + ("libxrandr" ,libxrandr) + ("libxml2" ,libxml2) + ("libsoup" ,libsoup) + ("libpeas" ,libpeas) + ("librsvg" ,librsvg) + ("lirc" ,lirc) + ("gnome-desktop" ,gnome-desktop) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-good" ,gst-plugins-good) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("adwaita-icon-theme" ,adwaita-icon-theme) + ;; XXX We use python-2 because libxml2 because itstool (which needs + ;; libxml) currently uses python-2. + ("python" ,python-2) + ("python-pygobject" ,python2-pygobject) + ;; XXX TODO pylint needed for python support + ("totem-pl-parser" ,totem-pl-parser) + ("grilo" ,grilo) + ("grilo-plugins" ,grilo-plugins) + ("nettle" ,nettle) + ("vala" ,vala))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after + 'install 'wrap-totem + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")) + (grl-plugin-path (getenv "GRL_PLUGIN_PATH"))) + (wrap-program (string-append out "/bin/totem") + `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)) + `("GRL_PLUGIN_PATH" ":" prefix (,grl-plugin-path)))) + #t))))) + (home-page "https://wiki.gnome.org/Apps/Videos") + (synopsis "Simple media player for GNOME based on GStreamer") + (description "Totem is a simple yet featureful media player for GNOME +which can read a large number of file formats.") + ;; GPL2+ with an exception clause for non-GPL compatible GStreamer plugins + ;; to be used and distributed together with GStreamer and Totem. See + ;; file://COPYING in the source distribution for details. + (license license:gpl2+))) -- 2.4.3