gnu: libcanberra: Add default sounds support.

* gnu/packages/libcanberra.scm (libcanberra): Add input
  'sound-theme-freedesktop'.  Add "libcanberra-sound-theme-freedesktop.patch"
  and related phase 'patch-default-sounds-directory to patch the default
  sounds directory.
master
Federico Beffa 2014-12-18 21:32:34 +01:00
parent b47e1b20bd
commit beb8dc0007
2 changed files with 51 additions and 2 deletions

View File

@ -19,6 +19,7 @@
(define-module (gnu packages libcanberra)
#:use-module ((guix licenses) #:select (lgpl2.1+))
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
@ -46,7 +47,21 @@
version ".tar.xz"))
(sha256
(base32
"0wps39h8rx2b00vyvkia5j40fkak3dpipp1kzilqla0cgvk73dn2"))))
"0wps39h8rx2b00vyvkia5j40fkak3dpipp1kzilqla0cgvk73dn2"))
;; "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.
;;
;; We add the default sounds store directory to the code dealing with
;; XDG_DATA_DIRS and not XDG_DATA_HOME. 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.
(patch-flags '("-p0"))
(patches
(list (search-patch "libcanberra-sound-theme-freedesktop.patch")))))
(build-system gnu-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
@ -55,9 +70,21 @@
("libtool" ,libtool)
("libvorbis" ,libvorbis)
("pulseaudio" ,pulseaudio)
("udev" ,eudev)))
("udev" ,eudev)
("sound-theme-freedesktop" ,sound-theme-freedesktop)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(arguments
`(#:phases
(alist-cons-before
'build 'patch-default-sounds-directory
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/sound-theme-spec.c"
(("@SOUND_THEME_DIRECTORY@")
(string-append
(assoc-ref inputs "sound-theme-freedesktop")
"/share"))))
%standard-phases)))
(home-page "http://0pointer.de/lennart/projects/libcanberra/")
(synopsis
"Implementation of the XDG Sound Theme and Name Specifications")

View File

@ -0,0 +1,22 @@
# We insert a hook called "@SOUND_THEME_DIRECTORY@" where, at build time, we
# insert the directory of the package "sound-theme-freedesktop" in the store.
--- src/sound-theme-spec.c.orig 2015-01-11 13:13:29.520527358 +0100
+++ src/sound-theme-spec.c 2015-01-11 14:27:23.035046849 +0100
@@ -321,9 +321,13 @@
const char *g;
if (!(g = getenv("XDG_DATA_DIRS")) || *g == 0)
- return "/usr/local/share:/usr/share";
-
- return g;
+ return "@SOUND_THEME_DIRECTORY@";
+ else {
+ const char *stp = ":@SOUND_THEME_DIRECTORY@";
+ size_t len = strlen(stp) + strlen(g) + 1;
+ char *g2 = (char*) malloc(len);
+ return strcat(strcpy(g2, g), stp);
+ }
}
static int load_theme_dir(ca_theme_data *t, const char *name) {