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.
This commit is contained in:
parent
b47e1b20bd
commit
beb8dc0007
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
(define-module (gnu packages libcanberra)
|
(define-module (gnu packages libcanberra)
|
||||||
#:use-module ((guix licenses) #:select (lgpl2.1+))
|
#:use-module ((guix licenses) #:select (lgpl2.1+))
|
||||||
|
#:use-module (gnu packages)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
|
@ -46,7 +47,21 @@
|
||||||
version ".tar.xz"))
|
version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(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)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("alsa-lib" ,alsa-lib)
|
`(("alsa-lib" ,alsa-lib)
|
||||||
|
@ -55,9 +70,21 @@
|
||||||
("libtool" ,libtool)
|
("libtool" ,libtool)
|
||||||
("libvorbis" ,libvorbis)
|
("libvorbis" ,libvorbis)
|
||||||
("pulseaudio" ,pulseaudio)
|
("pulseaudio" ,pulseaudio)
|
||||||
("udev" ,eudev)))
|
("udev" ,eudev)
|
||||||
|
("sound-theme-freedesktop" ,sound-theme-freedesktop)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)))
|
`(("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/")
|
(home-page "http://0pointer.de/lennart/projects/libcanberra/")
|
||||||
(synopsis
|
(synopsis
|
||||||
"Implementation of the XDG Sound Theme and Name Specifications")
|
"Implementation of the XDG Sound Theme and Name Specifications")
|
||||||
|
|
|
@ -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) {
|
Loading…
Reference in New Issue