From 37bfb4488d3035be0d896b1fb55ed3734fa461f4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 4 Oct 2013 22:45:49 +0200 Subject: gnu: Add PulseAudio and related libraries. * gnu/packages/pulseaudio.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/pulseaudio.scm | 187 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 gnu/packages/pulseaudio.scm diff --git a/gnu-system.am b/gnu-system.am index 7d34c8916d..74e3690e2d 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -143,6 +143,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/plotutils.scm \ gnu/packages/popt.scm \ gnu/packages/pth.scm \ + gnu/packages/pulseaudio.scm \ gnu/packages/python.scm \ gnu/packages/qemu.scm \ gnu/packages/qt.scm \ diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm new file mode 100644 index 0000000000..99da0de556 --- /dev/null +++ b/gnu/packages/pulseaudio.scm @@ -0,0 +1,187 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages pulseaudio) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'l:)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages linux) + #:use-module (gnu packages oggvorbis) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages avahi) + #:use-module (gnu packages glib) + #:use-module (gnu packages algebra) + #:use-module ((gnu packages autotools) #:select (libtool)) + #:use-module (gnu packages gdbm) + #:use-module (gnu packages m4) + #:use-module (gnu packages check) + #:export (libsndfile + libsamplerate + json-c + pulseaudio)) + +(define libsndfile + (package + (name "libsndfile") + (version "1.0.25") + (source (origin + (method url-fetch) + (uri (string-append "http://www.mega-nerd.com/libsndfile/files/libsndfile-" + version ".tar.gz")) + (sha256 + (base32 + "10j8mbb65xkyl0kfy0hpzpmrp0jkr12c7mfycqipxgka6ayns0ar")))) + (build-system gnu-build-system) + (inputs + `(("libvorbis" ,libvorbis) + ("libogg" ,libogg) + ("flac" ,flac) + ("pkg-config" ,pkg-config))) + (home-page "http://www.mega-nerd.com/libsndfile/") + (synopsis "Reading and writing files containing sampled sound") + (description + "Libsndfile is a C library for reading and writing files containing +sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) through +one standard library interface. + +It was designed to handle both little-endian (such as WAV) and +big-endian (such as AIFF) data, and to compile and run correctly on +little-endian (such as Intel and DEC/Compaq Alpha) processor systems as well +as big-endian processor systems such as Motorola 68k, Power PC, MIPS and +SPARC. Hopefully the design of the library will also make it easy to extend +for reading and writing new sound file formats.") + (license l:gpl2+))) + +(define libsamplerate + (package + (name "libsamplerate") ; aka. Secret Rabbit Code (SRC) + (version "0.1.8") + (source (origin + (method url-fetch) + (uri (string-append "http://www.mega-nerd.com/SRC/libsamplerate-" + version ".tar.gz")) + (sha256 + (base32 + "01hw5xjbjavh412y63brcslj5hi9wdgkjd3h9csx5rnm8vglpdck")))) + (build-system gnu-build-system) + (inputs `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("libsndfile" ,libsndfile) + ("fftw" ,fftw))) + (home-page "http://www.mega-nerd.com/SRC/index.html") + (synopsis "Audio sample rate conversion library") + (description + "Secret Rabbit Code (aka. libsamplerate) is a Sample Rate Converter for +audio. One example of where such a thing would be useful is converting audio +from the CD sample rate of 44.1kHz to the 48kHz sample rate used by DAT +players. + +SRC is capable of arbitrary and time varying conversions; from downsampling by +a factor of 256 to upsampling by the same factor. Arbitrary in this case means +that the ratio of input and output sample rates can be an irrational +number. The conversion ratio can also vary with time for speeding up and +slowing down effects. + +SRC provides a small set of converters to allow quality to be traded off +against computation cost. The current best converter provides a +signal-to-noise ratio of 145dB with -3dB passband extending from DC to 96% of +the theoretical best bandwidth for a given pair of input and output sample +rates. ") + (license l:gpl2+))) + +(define json-c + (package + (name "json-c") + (version "0.11") + (source (origin + (method url-fetch) + (uri (string-append "https://s3.amazonaws.com/json-c_releases/releases/json-c-" + version ".tar.gz")) + (sha256 + (base32 + "1324jja19jgsvcz9ij3nf4sgkrf4fg0ilw77vzqls3fw8m8wdpr8")))) + (build-system gnu-build-system) + (arguments '(#:parallel-build? #f + #:parallel-tests? #f)) + (home-page "https://github.com/json-c/json-c/wiki") + (synopsis "JSON implementation in C") + (description + "JSON-C implements a reference counting object model that allows you to +easily construct JSON objects in C, output them as JSON formatted strings and +parse JSON formatted strings back into the C representation of JSON objects.") + (license l:x11))) + +(define pulseaudio + (package + (name "pulseaudio") + (version "4.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://freedesktop.org/software/pulseaudio/releases/pulseaudio-" + version ".tar.xz")) + (sha256 + (base32 + "1bndz4l8jxyq3zq128gzp3gryxl6yjs66j2y1d7yabw2n5mv7kim")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--localstatedir=/var" ;"--sysconfdir=/etc" + "--disable-oss-output") + #:phases (alist-cons-before + 'check 'pre-check + (lambda _ + ;; 'tests/lock-autospawn-test.c' wants to create a file + ;; under ~/.config/pulse. + (setenv "HOME" (getcwd))) + %standard-phases))) + (inputs + ;; TODO: Add optional inputs (GTK+?). + `(;; ("sbc" ,sbc) + ("alsa-lib" ,alsa-lib) + ("json-c" ,json-c) + ("speex" ,speex) + ("libsndfile" ,libsndfile) + ("libsamplerate" ,libsamplerate) + ("dbus" ,dbus) + ("glib" ,glib) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("m4" ,m4) + ("libtool" ,libtool) + ("fftw" ,fftw) + ("avahi" ,avahi) + ("check" ,check))) + (propagated-inputs + ;; 'libpulse*.la' contain `-lgdbm' and `-lcap', so propagate them. + `(;; ("libcap" ,libcap) + ("gdbm" ,gdbm))) + (home-page "http://www.pulseaudio.org/") + (synopsis "Sound server") + (description + "PulseAudio is a sound server. It is basically a proxy for your sound applications. +It allows you to do advanced operations on your sound data as it passes +between your application and your hardware. Things like transferring the +audio to a different machine, changing the sample format or channel count and +mixing several sounds into one are easily achieved using a sound server. ") + + ;; PulseAudio is LGPLv2+, but some of the optional dependencies (GNU dbm, + ;; FFTW, etc.) are GPL'd, so the result is effectively GPLv2+. See + ;; 'LICENSE' for details. + (license l:gpl2+))) -- cgit v1.2.3