On Thu, Jan 8, 2015 at 9:39 PM, Ludovic Courtès <l...@gnu.org> wrote:
> That said, this kind of patch is not very different from the automated
> shebang patching that we do, IMO.

I do not see it this way because the shebang concept is fully
standardized, while here we are patching a "random" piece of code.

> The reason I’m not thrilled by the use of ‘propagated-inputs’ here is
> that that’s not what they were designed for at the beginning.
>
> It may also lead to usability problems.  Remember that when A is a
> propagated input of B, installing B in a profile also installs A in that
> profile.  So, if each GTKish package propagates sound-theme-freedesktop,
> then installing several such packages in the same profile is likely to
> lead to collisions just because the themes differ (those collisions may
> be harmless, but they will at least trigger a bunch of warnings every
> time the user operates on their profile, which is not desirable.)

Thanks for explaining your concern. But doesn't this problem exist
with most uses of propagated-inputs? As one example libssh2 propagates
libgcrypt. If the user installs a different version of libgcrypt (with
a possibly different ABI), doesn't this causes problems (required
version not found, or worse)?

In any case I've updated libcanberra with a patch to find the default
sounds without the need for propagated-inputs. Differently from your
suggested patch I'm proposing to add the default sounds store
directory to the code dealing with XDG_DATA_DIRS. This is because
XDG_DATA_HOME can only be a single directory and is inspected first.
XDG_DATA_DIRS can list an arbitrary number of directories and is only
inspected later. This is designed to allows the user to modify any
theme at his pleasure.

Regards,
Fede
From a1d7a5b9ed1392d8c5c1a8561357b72e48253ccf Mon Sep 17 00:00:00 2001
From: Federico Beffa <be...@fbengineering.ch>
Date: Thu, 18 Dec 2014 21:32:34 +0100
Subject: [PATCH 3/4] gnu: libcanberra: Add default sounds support.

* gnu/packages/libcanberra.scm (libcanberra): Add input
  'sound-theme-freedesktop'.  Add phase 'patch-default-sounds-directory to
  patch the default sounds directory.
---
 gnu/packages/libcanberra.scm | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index 764c327..91760d8 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -55,9 +55,36 @@
        ("libtool" ,libtool)
        ("libvorbis" ,libvorbis)
        ("pulseaudio" ,pulseaudio)
-       ("udev" ,eudev)))
+       ("udev" ,eudev)
+       ("sound-theme-freedesktop" ,sound-theme-freedesktop)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
+    ;; "sound-theme-freedesktop" is the default and fall-back sound theme for
+    ;; XDG desktops and should always be present.
+    ;; http://www.freedesktop.org/wiki/Specifications/sound-theme-spec/
+    ;; We make sure libcanberra will find it.
+    (arguments
+     `(#:phases 
+       (alist-cons-before
+        'build 'patch-default-sounds-directory
+        (lambda* (#:key inputs #:allow-other-keys)
+          (let ((sounds (string-append
+                         (assoc-ref inputs "sound-theme-freedesktop")
+                         "/share")))
+            (substitute* "src/sound-theme-spec.c"
+              (("return \"/usr/local/share:/usr/share\";")
+               (string-append "return \"" sounds "\";\n"
+                              "             else {\n"
+                              "                const char *stp = \":"
+                              sounds "\";\n"
+                              "                size_t len =  strlen(stp) + "
+                              "strlen(g) + 1;\n"
+                              "                "
+                              "char *g2 = (char*) malloc(len);\n"
+                              "                return "
+                              "strcat(strcpy(g2, g), stp);\n"
+                              "        }")))))
+          %standard-phases)))
     (home-page "http://0pointer.de/lennart/projects/libcanberra/";)
     (synopsis
      "Implementation of the XDG Sound Theme and Name Specifications")
-- 
1.8.4

Reply via email to