From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ricardo Wurmus Subject: [PATCH v2]: Add Ardour. Date: Sat, 31 Jan 2015 20:41:54 +0100 Message-ID: <87sieqyby5.fsf@mango.localdomain> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33527) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YHdvj-0005sS-RR for guix-devel@gnu.org; Sat, 31 Jan 2015 14:42:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YHdvf-00033P-Am for guix-devel@gnu.org; Sat, 31 Jan 2015 14:42:07 -0500 Received: from sender1.zohomail.com ([74.201.84.155]:29780) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YHdve-00033K-Oe for guix-devel@gnu.org; Sat, 31 Jan 2015 14:42:03 -0500 List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel --=-=-= Content-Type: text/plain Hi Guix, This is a new version of my previous patch series towards Ardour. The attached patches replace (and partially repeat) those contained in the following emails: * waf build system (unchanged): http://lists.gnu.org/archive/html/guix-devel/2015-01/msg00439.html * JACK2, aubio, liblo, LV2 http://lists.gnu.org/archive/html/guix-devel/2015-01/msg00446.html * serd, sord, sratom, lilv, suil http://lists.gnu.org/archive/html/guix-devel/2015-01/msg00461.html On top of that, the patch set adds the following packages: - Vamp SDK - LADSPA (a little ugly) - rubberband - libgnomecanvasmm (deprecated and old, but used by Ardour) - and finally: Ardour I decided to replace the previous patches because of an error in the 'jack-2' package whose fix made it difficult to apply subsequent patches. Now everything is in context and the dependencies between the patches is clearer now that Ardour has also been packaged. ~~ Ricardo --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-Add-waf-build-system.patch Content-Transfer-Encoding: 8bit >From b60b5718c35db62d471df63168bc3da4c11bbc32 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 28 Jan 2015 22:39:03 +0100 Subject: [PATCH 01/15] Add 'waf-build-system'. * guix/build-system/waf.scm, guix/build/waf-build-system.scm: New files. * Makefile.am (MODULES): Add them. --- Makefile.am | 2 + guix/build-system/waf.scm | 128 ++++++++++++++++++++++++++++++++++++++++ guix/build/waf-build-system.scm | 86 +++++++++++++++++++++++++++ 3 files changed, 216 insertions(+) create mode 100644 guix/build-system/waf.scm create mode 100644 guix/build/waf-build-system.scm diff --git a/Makefile.am b/Makefile.am index 67367d6..6a4a09b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -53,6 +53,7 @@ MODULES = \ guix/build-system/gnu.scm \ guix/build-system/perl.scm \ guix/build-system/python.scm \ + guix/build-system/waf.scm \ guix/build-system/ruby.scm \ guix/build-system/trivial.scm \ guix/ftp-client.scm \ @@ -71,6 +72,7 @@ MODULES = \ guix/build/perl-build-system.scm \ guix/build/python-build-system.scm \ guix/build/ruby-build-system.scm \ + guix/build/waf-build-system.scm \ guix/build/store-copy.scm \ guix/build/utils.scm \ guix/build/union.scm \ diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm new file mode 100644 index 0000000..494cb95 --- /dev/null +++ b/guix/build-system/waf.scm @@ -0,0 +1,128 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 (guix build-system waf) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix derivations) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module ((guix build-system python) + #:select (default-python default-python2)) + #:use-module (ice-9 match) + #:use-module (srfi srfi-26) + #:export (waf-build + waf-build-system)) + +;; Commentary: +;; +;; Standard build procedure for applications using 'waf'. This is very +;; similar to the 'python-build-system' and is implemented as an extension of +;; 'gnu-build-system'. +;; +;; Code: + +(define* (lower name + #:key source inputs native-inputs outputs system target + (python (default-python)) + #:allow-other-keys + #:rest arguments) + "Return a bag for NAME." + (define private-keywords + '(#:source #:target #:python #:inputs #:native-inputs)) + + (and (not target) ;XXX: no cross-compilation + (bag + (name name) + (system system) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@inputs + + ;; Keep the standard inputs of 'gnu-build-system'. + ,@(standard-packages))) + (build-inputs `(("python" ,python) + ,@native-inputs)) + (outputs outputs) + (build waf-build) ; only change compared to 'lower' in python.scm + (arguments (strip-keyword-arguments private-keywords arguments))))) + +(define* (waf-build store name inputs + #:key + (tests? #t) + (test-target "check") + (configure-flags ''()) + (phases '(@ (guix build waf-build-system) + %standard-phases)) + (outputs '("out")) + (search-paths '()) + (system (%current-system)) + (guile #f) + (imported-modules '((guix build waf-build-system) + (guix build gnu-build-system) + (guix build utils))) + (modules '((guix build waf-build-system) + (guix build utils)))) + "Build SOURCE with INPUTS. This assumes that SOURCE provides a 'waf' file +as its build system." + (define builder + `(begin + (use-modules ,@modules) + (waf-build #:name ,name + #:source ,(match (assoc-ref inputs "source") + (((? derivation? source)) + (derivation->output-path source)) + ((source) + source) + (source + source)) + #:configure-flags ,configure-flags + #:system ,system + #:test-target ,test-target + #:tests? ,tests? + #:phases ,phases + #:outputs %outputs + #:search-paths ',(map search-path-specification->sexp + search-paths) + #:inputs %build-inputs))) + + (define guile-for-build + (match guile + ((? package?) + (package-derivation store guile system #:graft? #f)) + (#f ; the default + (let* ((distro (resolve-interface '(gnu packages commencement))) + (guile (module-ref distro 'guile-final))) + (package-derivation store guile system #:graft? #f))))) + + (build-expression->derivation store name builder + #:inputs inputs + #:system system + #:modules imported-modules + #:outputs outputs + #:guile-for-build guile-for-build)) + +(define waf-build-system + (build-system + (name 'waf) + (description "The standard waf build system") + (lower lower))) + +;;; waf.scm ends here diff --git a/guix/build/waf-build-system.scm b/guix/build/waf-build-system.scm new file mode 100644 index 0000000..e64b51a --- /dev/null +++ b/guix/build/waf-build-system.scm @@ -0,0 +1,86 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 (guix build waf-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build utils) + #:use-module (ice-9 match) + #:use-module (ice-9 ftw) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (%standard-phases + waf-build)) + +;; Commentary: +;; +;; Builder-side code of the standard waf build procedure. +;; +;; Code: + + +(define (call-waf command params) + (if (file-exists? "waf") + (begin + (format #t "running \"python waf\" with command ~s and parameters ~s~%" + command params) + (zero? (apply system* "python" "waf" command params))) + (error "no waf found"))) + +(define* (configure #:key target native-inputs inputs outputs + (configure-flags '()) + #:allow-other-keys) + "Build a given waf application." + (let* ((prefix (assoc-ref outputs "out")) + (flags `(,(string-append "--prefix=" prefix) + ,@configure-flags))) + (call-waf "configure" flags))) + +(define* (build #:rest empty) + "Build a given waf application." + (call-waf "build" '())) + +(define* (check #:key tests? test-target #:allow-other-keys) + "Run the test suite of a given waf application." + (if tests? + (call-waf test-target '()) + #t)) + +(define* (install #:key outputs inputs (configure-flags '()) + #:allow-other-keys) + "Install a given waf application." + (let* ((out (assoc-ref outputs "out")) + (params (append (list (string-append "--prefix=" out)) + configure-flags))) + (call-waf "install" params))) + +(define %standard-phases + (alist-replace + 'configure configure + (alist-replace + 'build build + (alist-replace + 'check check + (alist-replace 'install install + gnu:%standard-phases))))) + +(define* (waf-build #:key inputs (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given waf application, applying all of PHASES in order." + (apply gnu:gnu-build #:inputs inputs #:phases phases args)) + +;;; waf-build-system.scm ends here -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-gnu-Add-JACK2.patch >From 192f5e5204924abd473d82dd3b9602e4a3e88fc6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 29 Jan 2015 10:00:56 +0100 Subject: [PATCH 02/15] gnu: Add JACK2. * gnu/packages/audio.scm (jack-2): New variable. --- gnu/packages/audio.scm | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index daf7feb..d5b862f 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -22,9 +22,16 @@ #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) + #:use-module (guix build-system waf) #:use-module (gnu packages) #:use-module (gnu packages databases) - #:use-module (gnu packages linux)) + #:use-module (gnu packages glib) ;dbus + #:use-module (gnu packages linux) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate + #:use-module (gnu packages readline) + #:use-module (gnu packages xiph) + #:use-module (gnu packages xml)) (define-public jack-1 (package @@ -55,3 +62,33 @@ synchronous execution of all clients, and low latency operation.") ;; Most files are licensed under the GPL. However, the libjack/ tree is ;; licensed under the LGPL in order to allow for proprietary usage. (license (list license:gpl2+ license:lgpl2.1+)))) + +(define-public jack-2 + (package (inherit jack-1) + (name "jack") + (version "1.9.10") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/jackaudio/jack2/archive/v" + version + ".tar.gz")) + (sha256 + (base32 + "03b0iiyk3ng3vh5s8gaqwn565vik7910p56mlbk512bw3dhbdwc8")))) + (build-system waf-build-system) + (arguments + `(#:tests? #f ; no check target + #:configure-flags '("--dbus" + "--alsa"))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("dbus" ,dbus) + ("expat" ,expat) + ("libsamplerate" ,libsamplerate) + ("opus" ,opus) + ("readline" ,readline))) + (native-inputs + `(("pkg-config" ,pkg-config))) + ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+ + (license (list license:gpl2+ license:lgpl2.1+)))) -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0003-gnu-Add-liblo.patch >From d1262e7694e6485aee5a2ea7e776b9576a915a08 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 31 Jan 2015 09:22:04 +0100 Subject: [PATCH 03/15] gnu: Add liblo. * gnu/packages/audio.scm (liblo): New variable. --- gnu/packages/audio.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index d5b862f..e8bcd82 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -92,3 +92,28 @@ synchronous execution of all clients, and low latency operation.") `(("pkg-config" ,pkg-config))) ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+ (license (list license:gpl2+ license:lgpl2.1+)))) + +(define-public liblo + (package + (name "liblo") + (version "0.28") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/liblo/liblo-" + version + ".tar.gz")) + (sha256 + (base32 + "02drgnpirvl2ihvzgsmn02agr5sj3vipzzw9vma56qlkgfvak56s")))) + (build-system gnu-build-system) + (arguments + `(;; liblo test FAILED + ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device + #:tests? #f)) + (home-page "http://liblo.sourceforge.net") + (synopsis "Implementation of the Open Sound Control protocol") + (description + "liblo is a lightweight library that provides an easy to use +implementation of the Open Sound Control (OSC) protocol.") + (license license:lgpl2.1+))) -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0004-gnu-Add-aubio.patch >From a518d4329f9775f7e84e6e67a04a4b2117936cf1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 31 Jan 2015 09:22:56 +0100 Subject: [PATCH 04/15] gnu: Add aubio. * gnu/packages/audio.scm (aubio): New variable. --- gnu/packages/audio.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index e8bcd82..8db5cff 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -24,15 +24,56 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system waf) #:use-module (gnu packages) + #:use-module (gnu packages algebra) #:use-module (gnu packages databases) #:use-module (gnu packages glib) ;dbus #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate + #:use-module (gnu packages python) #:use-module (gnu packages readline) #:use-module (gnu packages xiph) #:use-module (gnu packages xml)) +(define-public aubio + (package + (name "aubio") + (version "0.4.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://aubio.org/pub/aubio-" version ".tar.bz2")) + (sha256 + (base32 + "15f6nf76y7iyl2kl4ny7ky0zpxfxr8j3902afvd6ydnnkh5dzmr5")))) + (build-system waf-build-system) + (arguments + `(#:tests? #f ; no check target + #:configure-flags + '("--enable-fftw3f" + "--enable-jack" + "--enable-sndfile" + "--enable-samplerate" + ;; enable compilation with avcodec once available + "--disable-avcodec") + #:python ,python-2)) + (inputs + `(("jack" ,jack-1) + ("libuuid" ,util-linux) + ("libsndfile" ,libsndfile) + ("libsamplerate" ,libsamplerate) + ("fftwf" ,fftwf))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://aubio.org/") + (synopsis "A library for audio labelling") + (description + "aubio is a tool designed for the extraction of annotations from audio +signals. Its features include segmenting a sound file before each of its +attacks, performing pitch detection, tapping the beat and producing midi +streams from live audio.") + (license license:gpl3+))) + (define-public jack-1 (package (name "jack") -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0005-gnu-Add-LV2.patch >From d64ae3ff11bf6ddcc7d37eeef4497fc5d8602202 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 29 Jan 2015 10:12:00 +0100 Subject: [PATCH 05/15] gnu: Add LV2. * gnu/packages/audio.scm (lv2): New variable. --- gnu/packages/audio.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 8db5cff..1911f6f 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -158,3 +158,32 @@ synchronous execution of all clients, and low latency operation.") "liblo is a lightweight library that provides an easy to use implementation of the Open Sound Control (OSC) protocol.") (license license:lgpl2.1+))) + +(define-public lv2 + (package + (name "lv2") + (version "1.10.0") + (source (origin + (method url-fetch) + (uri (string-append "http://lv2plug.in/spec/lv2-" + version + ".tar.bz2")) + (sha256 + (base32 + "1md41x9snrp4mcfyli7lyfpvcfa78nfy6xkdy84kppnl8m5qw378")))) + (build-system waf-build-system) + (arguments + `(#:tests? #f ; no check target + #:configure-flags '("--lv2-system"))) + (inputs + ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins + `(("libsndfile" ,libsndfile))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://lv2plug.in/") + (synopsis "LV2 audio plugin standard") + (description + "LV2 is an open standard for audio plugins and host applications. At its +core, LV2 is a simple stable interface, accompanied by extensions which add +functionality to support the needs of increasingly powerful audio software.") + (license license:isc))) -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0006-gnu-Add-serd.patch >From e1cea746dbf9999b202c97dfed014e95a1640bb4 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 29 Jan 2015 23:08:34 +0100 Subject: [PATCH 06/15] gnu: Add serd. * gnu/packages/audio.scm (serd): New variable. --- gnu/packages/audio.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 1911f6f..b039212 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -187,3 +187,28 @@ implementation of the Open Sound Control (OSC) protocol.") core, LV2 is a simple stable interface, accompanied by extensions which add functionality to support the needs of increasingly powerful audio software.") (license license:isc))) + +(define-public serd + (package + (name "serd") + (version "0.20.0") + (source (origin + (method url-fetch) + (uri (string-append "http://download.drobilla.net/serd-" + version + ".tar.bz2")) + (sha256 + (base32 + "1gxbzqsm212wmn8qkdd3lbl6wbv7fwmaf9qh2nxa4yxjbr7mylb4")))) + (build-system waf-build-system) + (arguments `(#:tests? #f)) ; no check target + (home-page "http://drobilla.net/software/serd/") + (synopsis "Library for RDF syntax supporting Turtle and NTriples") + (description + "Serd is a lightweight C library for RDF syntax which supports reading +and writing Turtle and NTriples. Serd is not intended to be a swiss-army +knife of RDF syntax, but rather is suited to resource limited or performance +critical applications (e.g. converting many gigabytes of NTriples to Turtle), +or situations where a simple reader/writer with minimal dependencies is +ideal (e.g. in LV2 implementations or embedded applications).") + (license license:isc))) -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0007-gnu-Add-sord.patch >From 4856227a3ee42294dca9c394b9fbbe71b63a55ed Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 29 Jan 2015 23:09:19 +0100 Subject: [PATCH 07/15] gnu: Add sord. * gnu/packages/audio.scm (sord): New variable. --- gnu/packages/audio.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index b039212..986b071 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -212,3 +212,27 @@ critical applications (e.g. converting many gigabytes of NTriples to Turtle), or situations where a simple reader/writer with minimal dependencies is ideal (e.g. in LV2 implementations or embedded applications).") (license license:isc))) + +(define-public sord + (package + (name "sord") + (version "0.12.2") + (source (origin + (method url-fetch) + (uri (string-append "http://download.drobilla.net/sord-" + version + ".tar.bz2")) + (sha256 + (base32 + "0rq7vafdv4vsxi6xk9zf5shr59w3kppdhqbj78185rz5gp9kh1dx")))) + (build-system waf-build-system) + (arguments `(#:tests? #f)) ; no check target + (inputs + `(("serd" ,serd))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://drobilla.net/software/sord/") + (synopsis "C library for storing RDF data in memory") + (description + "Sord is a lightweight C library for storing RDF data in memory.") + (license license:isc))) -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0008-gnu-Add-sratom.patch >From 0f2609618b484ce84be22744b4084a89cb3e8d1d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 29 Jan 2015 23:10:01 +0100 Subject: [PATCH 08/15] gnu: Add sratom. * gnu/packages/audio.scm (sratom): New variable. --- gnu/packages/audio.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 986b071..721dd6b 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -236,3 +236,30 @@ ideal (e.g. in LV2 implementations or embedded applications).") (description "Sord is a lightweight C library for storing RDF data in memory.") (license license:isc))) + +(define-public sratom + (package + (name "sratom") + (version "0.4.6") + (source (origin + (method url-fetch) + (uri (string-append "http://download.drobilla.net/sratom-" + version + ".tar.bz2")) + (sha256 + (base32 + "080jjiyxjnj7hf25844hd9rb01grvzz1rk8mxcdnakywmspbxfd4")))) + (build-system waf-build-system) + (arguments `(#:tests? #f)) ; no check target + (inputs + `(("lv2" ,lv2) + ("serd" ,serd) + ("sord" ,sord))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://drobilla.net/software/sratom/") + (synopsis "Library for serialising LV2 atoms to/from RDF") + (description + "Sratom is a library for serialising LV2 atoms to/from RDF, particularly +the Turtle syntax.") + (license license:isc))) -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0009-gnu-Add-lilv.patch >From 6a96e2d4d7e82247ed8e02c99d976bec9315549e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 29 Jan 2015 23:10:31 +0100 Subject: [PATCH 09/15] gnu: Add lilv. * gnu/packages/audio.scm (lilv): New variable. --- gnu/packages/audio.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 721dd6b..401429e 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -159,6 +159,35 @@ synchronous execution of all clients, and low latency operation.") implementation of the Open Sound Control (OSC) protocol.") (license license:lgpl2.1+))) +(define-public lilv + (package + (name "lilv") + (version "0.20.0") + (source (origin + (method url-fetch) + (uri (string-append "http://download.drobilla.net/lilv-" + version + ".tar.bz2")) + (sha256 + (base32 + "0aj2plkx56iar8vzjbq2l7hi7sp0ml99m0h44rgwai2x4vqkk2j2")))) + (build-system waf-build-system) + (arguments `(#:tests? #f)) ; no check target + (inputs + `(("lv2" ,lv2) + ("serd" ,serd) + ("sord" ,sord) + ("sratom" ,sratom))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://drobilla.net/software/lilv/") + (synopsis "Library to simplify use of LV2 plugins in applications") + (description + "Lilv is a C library to make the use of LV2 plugins as simple as possible +for applications. Lilv is the successor to SLV2, rewritten to be +significantly faster and have minimal dependencies.") + (license license:isc))) + (define-public lv2 (package (name "lv2") -- 2.1.0 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0010-gnu-Add-suil.patch Content-Transfer-Encoding: 8bit >From cae7a61f645ff5b5e8458f5b3bcd0d6029e43b22 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 29 Jan 2015 23:11:30 +0100 Subject: [PATCH 10/15] gnu: Add suil. * gnu/packages/audio.scm (suil): New variable. --- gnu/packages/audio.scm | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 401429e..736a708 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -27,6 +27,8 @@ #:use-module (gnu packages algebra) #:use-module (gnu packages databases) #:use-module (gnu packages glib) ;dbus + #:use-module (gnu packages gtk) + #:use-module (gnu packages qt) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate @@ -292,3 +294,41 @@ ideal (e.g. in LV2 implementations or embedded applications).") "Sratom is a library for serialising LV2 atoms to/from RDF, particularly the Turtle syntax.") (license license:isc))) + +(define-public suil + (package + (name "suil") + (version "0.8.2") + (source (origin + (method url-fetch) + (uri (string-append "http://download.drobilla.net/suil-" + version + ".tar.bz2")) + (sha256 + (base32 + "1s3adyiw7sa5gfvm5wasa61qa23629kprxyv6w8hbxdiwp0hhxkq")))) + (build-system waf-build-system) + (arguments `(#:tests? #f)) ; no check target + (inputs + `(("lv2" ,lv2) + ("gtk+-2" ,gtk+-2) + ("qt-4" ,qt-4))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://drobilla.net/software/suil/") + (synopsis "Library for loading and wrapping LV2 plugin UIs") + (description + "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs. + +Suil makes it possible to load a UI of any toolkit in a host using any other +toolkit (assuming the toolkits are both supported by Suil). Hosts do not need +to build against or link to foreign toolkit libraries to use UIs written with +that toolkit; all the necessary magic is performed by dynamically loaded +modules. The API is designed such that hosts do not need to explicitly support +specific toolkits at all – if Suil supports a particular toolkit, then UIs in +that toolkit will work in all hosts that use Suil automatically. + +Suil currently supports every combination of Gtk 2, Qt 4, and X11, e.g. with +Suil a Gtk program can embed a Qt plugin UI without depending on Qt, and a Qt +program can embed a Gtk plugin UI without depending on Gtk.") + (license license:isc))) -- 2.1.0 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0011-gnu-Add-Vamp-SDK.patch Content-Transfer-Encoding: 8bit >From a13f49d293eebf5d6de5170a4dfc0b9885a90c26 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 30 Jan 2015 18:14:00 +0100 Subject: [PATCH 11/15] gnu: Add Vamp SDK. * gnu/packages/audio.scm (vamp): New variable. --- gnu/packages/audio.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 736a708..fdc488b 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -332,3 +332,33 @@ Suil currently supports every combination of Gtk 2, Qt 4, and X11, e.g. with Suil a Gtk program can embed a Qt plugin UI without depending on Qt, and a Qt program can embed a Gtk plugin UI without depending on Gtk.") (license license:isc))) + +(define-public vamp + (package + (name "vamp") + (version "2.5") + (source (origin + (method url-fetch) + (uri (string-append + "https://code.soundsoftware.ac.uk" + "/attachments/download/690/vamp-plugin-sdk-" + version + ".tar.gz")) + (sha256 + (base32 + "178kfgq08cmgdzv7g8dwyjp4adwx8q04riimncq4nqkm8ng9ywbv")))) + (build-system gnu-build-system) + (arguments `(#:tests? #f)) ; no check target + (inputs + `(("libsndfile" ,libsndfile))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://vamp-plugins.org") + (synopsis "Vamp audio plugin SDK") + (description + "Vamp is an audio processing plugin system for plugins that extract +descriptive information from audio data — typically referred to as audio +analysis plugins or audio feature extraction plugins.") + (license + (license:bsd-style + "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING")))) -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0012-gnu-Add-LADSPA.patch >From 59b721c970278230bfc9c12588a3e671b264acd4 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 30 Jan 2015 18:15:03 +0100 Subject: [PATCH 12/15] gnu: Add LADSPA. * gnu/packages/audio.scm (ladspa): New variable. --- gnu/packages/audio.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index fdc488b..24e4b01 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -136,6 +136,43 @@ synchronous execution of all clients, and low latency operation.") ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+ (license (list license:gpl2+ license:lgpl2.1+)))) +(define-public ladspa + (package + (name "ladspa") + (version "1.13") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.ladspa.org/download/ladspa_sdk_" + version + ".tgz")) + (sha256 + (base32 + "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; the "test" target is a listening test only + #:phases + (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) + (chdir "src") + (let ((out (assoc-ref outputs "out"))) + (substitute* "makefile" + (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/")) + (("/usr/include/") (string-append out "/include/")) + (("/usr/bin/") (string-append out "/bin/")) + (("-mkdirhier") "mkdir -p") + (("^CC.*") "CC = gcc\n") + (("^CPP.*") "CPP = g++\n")))) + (alist-delete 'build %standard-phases)))) + (home-page "http://ladspa.org") + (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)") + (description + "LADSPA is a standard that allows software audio processors and effects +to be plugged into a wide range of audio synthesis and recording packages.") + (license license:lgpl2.1+))) + (define-public liblo (package (name "liblo") -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0013-gnu-Add-rubberband.patch >From 94f5649f1310c9080c1bbbcfa92920831e056c7d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 30 Jan 2015 18:15:50 +0100 Subject: [PATCH 13/15] gnu: Add rubberband. * gnu/packages/audio.scm (rubberband): New variable. --- gnu/packages/audio.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 24e4b01..76fcbfb 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -256,6 +256,34 @@ core, LV2 is a simple stable interface, accompanied by extensions which add functionality to support the needs of increasingly powerful audio software.") (license license:isc))) +(define-public rubberband + (package + (name "rubberband") + (version "1.8.1") + (source (origin + (method url-fetch) + (uri + (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v" + version + ".tar.bz2")) + (sha256 + (base32 + "05amrbrxx0da3w7m237q51799r8xgs4ffqabi2qv06hq8dpcj386")))) + (build-system gnu-build-system) + (arguments `(#:tests? #f)) ; no check target + (inputs + `(("ladspa" ,ladspa) + ("libsamplerate" ,libsamplerate) + ("vamp" ,vamp))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://breakfastquay.com/rubberband/") + (synopsis "Audio time-stretching and pitch-shifting library") + (description + "Rubber Band is a library and utility program that permits changing the +tempo and pitch of an audio recording independently of one another.") + (license license:gpl2))) + (define-public serd (package (name "serd") -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0014-gnu-Add-libgnomecanvasmm.patch >From 199620c5fe4021084e15d7876aeabc2535854ae6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 31 Jan 2015 00:04:20 +0100 Subject: [PATCH 14/15] gnu: Add libgnomecanvasmm. * gnu/packages/gnome.scm (libgnomecanvasmm): New variable. --- gnu/packages/gnome.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index c42092d..663912b 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -994,6 +994,28 @@ high-quality vector-based 2D library with antialiasing and alpha composition.") creating interactive structured graphics.") (license license:lgpl2.0+))) +(define-public libgnomecanvasmm + (package + (name "libgnomecanvasmm") + (version "2.26.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "0679hcnpam2gkag2i63sm0wdm35gwvzafnz1354mg6j5gzwpfrcr")))) + (build-system gnu-build-system) + (propagated-inputs `(("libgnomecanvas" ,libgnomecanvas))) + (native-inputs + `(("gtkmm-2" ,gtkmm-2) + ("pkg-config" ,pkg-config))) + (home-page "http://gtkmm.org") + (synopsis "C++ bindings to the GNOME Canvas library") + (description "C++ bindings to the GNOME Canvas library.") + (license license:lgpl2.0+))) + (define-public libgnomeui (package (name "libgnomeui") -- 2.1.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0015-gnu-Add-ardour.patch >From 537ce664730cac73bbf3889fb4b53d20aa763292 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sat, 31 Jan 2015 00:07:57 +0100 Subject: [PATCH 15/15] gnu: Add ardour. * gnu/packages/audio.scm (ardour): New variable. --- gnu/packages/audio.scm | 81 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 76fcbfb..f2e65dc 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -25,14 +25,20 @@ #:use-module (guix build-system waf) #:use-module (gnu packages) #:use-module (gnu packages algebra) + #:use-module (gnu packages boost) + #:use-module (gnu packages curl) #:use-module (gnu packages databases) - #:use-module (gnu packages glib) ;dbus + #:use-module (gnu packages glib) #:use-module (gnu packages gtk) + #:use-module (gnu packages gnome) #:use-module (gnu packages qt) #:use-module (gnu packages linux) + #:use-module (gnu packages mp3) ;taglib + #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate #:use-module (gnu packages python) + #:use-module (gnu packages rdf) #:use-module (gnu packages readline) #:use-module (gnu packages xiph) #:use-module (gnu packages xml)) @@ -76,6 +82,79 @@ attacks, performing pitch detection, tapping the beat and producing midi streams from live audio.") (license license:gpl3+))) +(define-public ardour + (package + (name "ardour") + (version "3.5.403") + (source (origin + ;; The project only provides tarballs upon individual request + ;; (or after payment) so we take the code from git. + (method git-fetch) + (uri (git-reference + (url "git://git.ardour.org/ardour/ardour.git") + (commit version))) + (snippet + '(call-with-output-file + "libs/ardour/revision.cc" + (lambda (port) + (format port "#include \"ardour/revision.h\" +namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }")))) + (sha256 + (base32 + "01b0wxh0wlxjfz5j8gcwwqhxc6q2kn4njz2fcmzv9fr3xaya5dbp")) + (file-name (string-append name "-" version)))) + (build-system waf-build-system) + (arguments + `(#:tests? #f ; no check target + #:python ,python-2)) + (inputs + `(("alsa-lib" ,alsa-lib) + ("aubio" ,aubio) + ("lrdf" ,lrdf) + ("boost" ,boost) + ("atkmm" ,atkmm) + ("cairomm" ,cairomm) + ("gtkmm" ,gtkmm-2) + ("glibmm" ,glibmm) + ("libart-lgpl" ,libart-lgpl) + ("libgnomecanvasmm" ,libgnomecanvasmm) + ("pangomm" ,pangomm) + ("liblo" ,liblo) + ("libsndfile" ,libsndfile) + ("libsamplerate" ,libsamplerate) + ("libxml2" ,libxml2) + ("libogg" ,libogg) + ("libvorbis" ,libvorbis) + ("flac" ,flac) + ("lv2" ,lv2) + ("vamp" ,vamp) + ("curl" ,curl) + ("libuuid" ,util-linux) + ("fftw" ,fftw) + ("fftwf" ,fftwf) + ("jack" ,jack-1) + ("serd" ,serd) + ("sord" ,sord) + ("sratom" ,sratom) + ("suil" ,suil) + ("lilv" ,lilv) + ("rasqal" ,rasqal) + ("raptor2" ,raptor2) + ("redland" ,redland) + ("rubberband" ,rubberband) + ("taglib" ,taglib) + ("python-rdflib" ,python-rdflib))) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config))) + (home-page "http://ardour.org") + (synopsis "Digital audio workstation") + (description + "Ardour is a multi-channel digital audio workstation, allowing users to +record, edit, mix and master audio and MIDI projects. It is targeted at audio +engineers, musicians, soundtrack editors and composers.") + (license license:gpl2+))) + (define-public jack-1 (package (name "jack") -- 2.1.0 --=-=-=--