From mboxrd@z Thu Jan 1 00:00:00 1970 From: taylanbayirli@gmail.com (Taylan Ulrich =?utf-8?Q?Bay=C4=B1rl=C4=B1?= =?utf-8?Q?=2FKammer?=) Subject: Re: [PATCH] gnu: Add audacity. Date: Tue, 03 Mar 2015 23:33:38 +0100 Message-ID: <87sidlemnx.fsf@taylan.uni.cx> References: <87mw46kdkq.fsf@taylan.uni.cx> <87sidrpcm3.fsf@gnu.org> <871tl6fcpy.fsf@taylan.uni.cx> <87zj7trf56.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49682) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YSvNr-00083p-RT for guix-devel@gnu.org; Tue, 03 Mar 2015 17:33:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YSvNo-0000sz-B1 for guix-devel@gnu.org; Tue, 03 Mar 2015 17:33:47 -0500 In-Reply-To: <87zj7trf56.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Tue, 03 Mar 2015 21:37:41 +0100") 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: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Sorry for not being clear: I think we should avoid diverging from > upstream in this way, especially if there=E2=80=99s just one package that= makes > the incorrect assumption. So I would rather not add those .pc files. All clear. (No worries; it was my idea to copy Debian's patches.) > If Audacity uses Autoconf and pkg.m4, I guess you could just pass > PKG_CONFIG=3Dtrue as a configure flag, or {LIBID3TAG,LIBMAD}_{CFLAGS,LIBS} > and it will just work. The latter option seems to work. (I suppose the former was meant to be "PKG_CONFIG=3Dfalse"? That seems to break the whole library search.) Updated patch is attached; please tell me if the style is correct. >> Note also it's in audacity.scm now and not audio.scm, because it depends >> on ffmpeg, which is in video.scm, which now imports audio.scm, so >> audio.scm cannot import video.scm. > > It actually can, but it=E2=80=99s fine (and safer) the way you propose. = :-) Does Guile support circular imports? (video.scm imports audio.scm on the meanwhile, in case I wasn't clear about that, so I think we'll have to avoid importing video.scm from audio.scm.) >> +++ b/gnu/packages/patches/portaudio-audacity-compat.patch >> @@ -0,0 +1,322 @@ >> +Description: Add features needed to make portmixer work with audacity. >> +Author: Audacity Team >> +Last-Update: 2011-12-07 > > Could you add a link to PortAudio=E2=80=99s bug tracker or list? Added a link to in the patch header. Updated patches: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-gnu-portaudio-Patch-for-Audacity-compatibility.patch Content-Transfer-Encoding: 8bit Content-Description: patch1 >From 9d3ae472c1c31400753bfe89ef5d612ba6998cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?= Date: Mon, 2 Mar 2015 01:06:35 +0100 Subject: [PATCH 1/2] gnu: portaudio: Patch for Audacity compatibility. * gnu/packages/audio.scm (portaudio): Add a patch for Audacity compatibility. * gnu/packages/patches/portaudio-audacity-compat.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/audio.scm | 19 +- .../patches/portaudio-audacity-compat.patch | 324 +++++++++++++++++++++ 3 files changed, 341 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/portaudio-audacity-compat.patch diff --git a/gnu-system.am b/gnu-system.am index 0497fe1..33f3ae1 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -494,6 +494,7 @@ dist_patch_DATA = \ gnu/packages/patches/pingus-sdl-libs-config.patch \ gnu/packages/patches/plotutils-libpng-jmpbuf.patch \ gnu/packages/patches/polkit-drop-test.patch \ + gnu/packages/patches/portaudio-audacity-compat.patch \ gnu/packages/patches/procps-make-3.82.patch \ gnu/packages/patches/pulseaudio-CVE-2014-3970.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \ diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 5a23618..bda173e 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1005,15 +1005,28 @@ portions of LAME.") (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version) ".tgz")) (sha256 - (base32 "0mwddk4qzybaf85wqfhxqlf0c5im9il8z03rd4n127k8y2jj9q4g")))) + (base32 "0mwddk4qzybaf85wqfhxqlf0c5im9il8z03rd4n127k8y2jj9q4g")) + (patches (list (search-patch "portaudio-audacity-compat.patch"))))) (build-system gnu-build-system) (inputs ;; TODO: Add ASIHPI. `(("alsa-lib" ,alsa-lib) ("jack" ,jack-2))) (native-inputs - `(("pkg-config" ,pkg-config))) - (arguments '(#:tests? #f)) ;no 'check' target + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (arguments + '(#:phases + ;; Autoreconf is necessary because the audacity-compat patch modifies + ;; .in files. + (alist-cons-after + 'unpack 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-vif"))) + %standard-phases) + #:tests? #f)) ;no 'check' target (home-page "http://www.portaudio.com/") (synopsis "Audio I/O library") (description diff --git a/gnu/packages/patches/portaudio-audacity-compat.patch b/gnu/packages/patches/portaudio-audacity-compat.patch new file mode 100644 index 0000000..9f239ad --- /dev/null +++ b/gnu/packages/patches/portaudio-audacity-compat.patch @@ -0,0 +1,324 @@ +Description: Add features needed to make portmixer work with audacity. +Author: Audacity Team +Last-Update: 2011-12-07 + +See . + +--- a/include/pa_win_ds.h ++++ b/include/pa_win_ds.h +@@ -89,6 +89,21 @@ + + }PaWinDirectSoundStreamInfo; + ++/** Retrieve the GUID of the input device. ++ ++ @param stream The stream to query. ++ ++ @return A pointer to the GUID, or NULL if none. ++*/ ++LPGUID PaWinDS_GetStreamInputGUID( PaStream* s ); ++ ++/** Retrieve the GUID of the output device. ++ ++ @param stream The stream to query. ++ ++ @return A pointer to the GUID, or NULL if none. ++*/ ++LPGUID PaWinDS_GetStreamOutputGUID( PaStream* s ); + + + #ifdef __cplusplus +--- a/include/portaudio.h ++++ b/include/portaudio.h +@@ -1146,6 +1146,15 @@ + signed long Pa_GetStreamWriteAvailable( PaStream* stream ); + + ++/** Retrieve the host type handling an open stream. ++ ++ @return Returns a non-negative value representing the host API type ++ handling an open stream or, a PaErrorCode (which are always negative) ++ if PortAudio is not initialized or an error is encountered. ++*/ ++PaHostApiTypeId Pa_GetStreamHostApiType( PaStream* stream ); ++ ++ + /* Miscellaneous utilities */ + + +--- /dev/null ++++ b/include/pa_unix_oss.h +@@ -0,0 +1,104 @@ ++#ifndef PA_UNIX_OSS_H ++#define PA_UNIX_OSS_H ++ ++/* ++ * $Id: portaudio.patch,v 1.10 2009-06-30 04:52:59 llucius Exp $ ++ * PortAudio Portable Real-Time Audio Library ++ * OSS-specific extensions ++ * ++ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining ++ * a copy of this software and associated documentation files ++ * (the "Software"), to deal in the Software without restriction, ++ * including without limitation the rights to use, copy, modify, merge, ++ * publish, distribute, sublicense, and/or sell copies of the Software, ++ * and to permit persons to whom the Software is furnished to do so, ++ * subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * Any person wishing to distribute modifications to the Software is ++ * requested to send the modifications to the original developer so that ++ * they can be incorporated into the canonical version. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ++ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF ++ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ */ ++ ++/** @file ++ * OSS-specific PortAudio API extension header file. ++ */ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++const char *PaOSS_GetStreamInputDevice( PaStream *s ); ++ ++const char *PaOSS_GetStreamOutputDevice( PaStream *s ); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif ++#ifndef PA_UNIX_OSS_H ++#define PA_UNIX_OSS_H ++ ++/* ++ * $Id: portaudio.patch,v 1.10 2009-06-30 04:52:59 llucius Exp $ ++ * PortAudio Portable Real-Time Audio Library ++ * OSS-specific extensions ++ * ++ * Copyright (c) 1999-2000 Ross Bencina and Phil Burk ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining ++ * a copy of this software and associated documentation files ++ * (the "Software"), to deal in the Software without restriction, ++ * including without limitation the rights to use, copy, modify, merge, ++ * publish, distribute, sublicense, and/or sell copies of the Software, ++ * and to permit persons to whom the Software is furnished to do so, ++ * subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * Any person wishing to distribute modifications to the Software is ++ * requested to send the modifications to the original developer so that ++ * they can be incorporated into the canonical version. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ++ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF ++ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ */ ++ ++/** @file ++ * OSS-specific PortAudio API extension header file. ++ */ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++const char *PaOSS_GetStreamInputDevice( PaStream *s ); ++ ++const char *PaOSS_GetStreamOutputDevice( PaStream *s ); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +--- a/src/common/pa_front.c ++++ b/src/common/pa_front.c +@@ -1216,8 +1216,10 @@ + hostApiInputParametersPtr, hostApiOutputParametersPtr, + sampleRate, framesPerBuffer, streamFlags, streamCallback, userData ); + +- if( result == paNoError ) ++ if( result == paNoError ) { + AddOpenStream( *stream ); ++ PA_STREAM_REP(*stream)->hostApiType = hostApi->info.type; ++ } + + + PA_LOGAPI(("Pa_OpenStream returned:\n" )); +@@ -1729,6 +1731,32 @@ + return result; + } + ++PaHostApiTypeId Pa_GetStreamHostApiType( PaStream* stream ) ++{ ++ PaError error = PaUtil_ValidateStreamPointer( stream ); ++ PaHostApiTypeId result; ++ ++#ifdef PA_LOG_API_CALLS ++ PaUtil_DebugPrint("Pa_GetStreamHostApiType called:\n" ); ++ PaUtil_DebugPrint("\tPaStream* stream: 0x%p\n", stream ); ++#endif ++ ++ if( error == paNoError ) ++ { ++ result = PA_STREAM_REP(stream)->hostApiType; ++ } ++ else ++ { ++ result = (PaHostApiTypeId) error; ++ } ++ ++#ifdef PA_LOG_API_CALLS ++ PaUtil_DebugPrint("Pa_GetStreamHostApiType returned:\n" ); ++ PaUtil_DebugPrint("\tPaError: %d ( %s )\n\n", result, Pa_GetErrorText( result ) ); ++#endif ++ ++ return result; ++} + + PaError Pa_GetSampleSize( PaSampleFormat format ) + { +--- a/src/common/pa_stream.c ++++ b/src/common/pa_stream.c +@@ -93,6 +93,8 @@ + streamRepresentation->streamInfo.inputLatency = 0.; + streamRepresentation->streamInfo.outputLatency = 0.; + streamRepresentation->streamInfo.sampleRate = 0.; ++ ++ streamRepresentation->hostApiType = 0; + } + + +--- a/src/common/pa_stream.h ++++ b/src/common/pa_stream.h +@@ -152,6 +152,7 @@ + PaStreamFinishedCallback *streamFinishedCallback; + void *userData; + PaStreamInfo streamInfo; ++ PaHostApiTypeId hostApiType; + } PaUtilStreamRepresentation; + + +--- a/src/hostapi/coreaudio/pa_mac_core_blocking.c ++++ b/src/hostapi/coreaudio/pa_mac_core_blocking.c +@@ -66,6 +66,9 @@ + #ifdef MOSX_USE_NON_ATOMIC_FLAG_BITS + # define OSAtomicOr32( a, b ) ( (*(b)) |= (a) ) + # define OSAtomicAnd32( a, b ) ( (*(b)) &= (a) ) ++#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3 ++# define OSAtomicOr32( a, b ) BitOrAtomic( a, (UInt32 *) b ) ++# define OSAtomicAnd32( a, b ) BitAndAtomic( a, (UInt32 *) b ) + #else + # include + #endif +--- a/src/hostapi/alsa/pa_linux_alsa.c ++++ b/src/hostapi/alsa/pa_linux_alsa.c +@@ -611,6 +611,7 @@ + StreamDirection streamDir; + + snd_pcm_channel_area_t *channelAreas; /* Needed for channel adaption */ ++ int card; + } PaAlsaStreamComponent; + + /* Implementation specific stream structure */ +@@ -1806,6 +1807,7 @@ + { + PaError result = paNoError; + PaSampleFormat userSampleFormat = params->sampleFormat, hostSampleFormat = paNoError; ++ snd_pcm_info_t* pcmInfo; + assert( params->channelCount > 0 ); + + /* Make sure things have an initial value */ +@@ -1826,6 +1828,9 @@ + self->device = params->device; + + PA_ENSURE( AlsaOpen( &alsaApi->baseHostApiRep, params, streamDir, &self->pcm ) ); ++ ++ snd_pcm_info_alloca( &pcmInfo ); ++ self->card = snd_pcm_info_get_card( pcmInfo ); + self->nfds = alsa_snd_pcm_poll_descriptors_count( self->pcm ); + + PA_ENSURE( hostSampleFormat = PaUtil_SelectClosestAvailableFormat( GetAvailableFormats( self->pcm ), userSampleFormat ) ); +@@ -4519,9 +4524,7 @@ + /* XXX: More descriptive error? */ + PA_UNLESS( stream->capture.pcm, paDeviceUnavailable ); + +- alsa_snd_pcm_info_alloca( &pcmInfo ); +- PA_ENSURE( alsa_snd_pcm_info( stream->capture.pcm, pcmInfo ) ); +- *card = alsa_snd_pcm_info_get_card( pcmInfo ); ++ *card = stream->capture.card; + + error: + return result; +@@ -4537,9 +4540,7 @@ + /* XXX: More descriptive error? */ + PA_UNLESS( stream->playback.pcm, paDeviceUnavailable ); + +- alsa_snd_pcm_info_alloca( &pcmInfo ); +- PA_ENSURE( alsa_snd_pcm_info( stream->playback.pcm, pcmInfo ) ); +- *card = alsa_snd_pcm_info_get_card( pcmInfo ); ++ *card = stream->playback.card; + + error: + return result; +--- a/src/hostapi/oss/pa_unix_oss.c ++++ b/src/hostapi/oss/pa_unix_oss.c +@@ -2028,3 +2028,26 @@ + #endif + } + ++const char *PaOSS_GetStreamInputDevice( PaStream* s ) ++{ ++ PaOssStream *stream = (PaOssStream*)s; ++ ++ if( stream->capture ) ++ { ++ return stream->capture->devName; ++ } ++ ++ return NULL; ++} ++ ++const char *PaOSS_GetStreamOutputDevice( PaStream* s ) ++{ ++ PaOssStream *stream = (PaOssStream*)s; ++ ++ if( stream->playback ) ++ { ++ return stream->playback->devName; ++ } ++ ++ return NULL; ++} +--- a/configure.in ++++ b/configure.in +@@ -365,6 +365,7 @@ + DLL_LIBS="$DLL_LIBS -lossaudio" + LIBS="$LIBS -lossaudio" + fi ++ INCLUDES="$INCLUDES pa_unix_oss.h" + AC_DEFINE(PA_USE_OSS,1) + fi + -- 2.2.1 --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=0002-gnu-Add-audacity.patch Content-Transfer-Encoding: quoted-printable Content-Description: patch2 >From 0fd1fcb065342aae81411dc62ca78fb0bc7e3afb Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?Taylan=3D20Ulrich=3D20Bay=3DC4=3DB1rl=3DC4=3DB1/Kammer?=3D Date: Fri, 20 Feb 2015 21:52:21 +0100 Subject: [PATCH 2/2] gnu: Add audacity. * gnu/packages/audacity.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * gnu/packages/patches/audacity-fix-ffmpeg-binding.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 2 + gnu/packages/audacity.scm | 102 +++++++++++++++++= ++++ .../patches/audacity-fix-ffmpeg-binding.patch | 32 +++++++ 3 files changed, 136 insertions(+) create mode 100644 gnu/packages/audacity.scm create mode 100644 gnu/packages/patches/audacity-fix-ffmpeg-binding.patch diff --git a/gnu-system.am b/gnu-system.am index 33f3ae1..eb5bba9 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -38,6 +38,7 @@ GNU_SYSTEM_MODULES =3D \ gnu/packages/asciidoc.scm \ gnu/packages/aspell.scm \ gnu/packages/attr.scm \ + gnu/packages/audacity.scm \ gnu/packages/audio.scm \ gnu/packages/autogen.scm \ gnu/packages/autotools.scm \ @@ -358,6 +359,7 @@ dist_patch_DATA =3D \ gnu/packages/patches/ath9k-htc-firmware-binutils.patch \ gnu/packages/patches/ath9k-htc-firmware-gcc.patch \ gnu/packages/patches/ath9k-htc-firmware-objcopy.patch \ + gnu/packages/patches/audacity-fix-ffmpeg-binding.patch \ gnu/packages/patches/automake-skip-amhello-tests.patch \ gnu/packages/patches/avahi-localstatedir.patch \ gnu/packages/patches/avrdude-fix-libusb.patch \ diff --git a/gnu/packages/audacity.scm b/gnu/packages/audacity.scm new file mode 100644 index 0000000..f12a2e8 --- /dev/null +++ b/gnu/packages/audacity.scm @@ -0,0 +1,102 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2015 Taylan Ulrich Bay=C4=B1rl=C4=B1/Kammer +;;; +;;; 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 audacity) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages audio) + #:use-module (gnu packages gtk) + #:use-module (gnu packages linux) + #:use-module (gnu packages mp3) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) + #:use-module (gnu packages xiph) + #:use-module (gnu packages xml) + #:use-module (gnu packages video) + #:use-module (gnu packages which) + #:use-module (gnu packages wxwidgets)) + +(define-public audacity + (package + (name "audacity") + (version "2.0.6") + (source + (origin + (method url-fetch) + (uri + (string-append + "mirror://sourceforge/audacity/audacity-minsrc-" version ".tar.xz= ")) + (sha256 + (base32 "0yvxlfgjwdn7rvjrkr2wdg6xlwn5j3lwcdhsjs1ddq3qws8c301h")) + (patches (list (search-patch "audacity-fix-ffmpeg-binding.patch")))= )) + (build-system gnu-build-system) + (inputs + ;; TODO: Add portSMF and libwidgetextra once they're packaged. In-tr= ee + ;; versions shipping with Audacity are used for now. + `(("wxwidgets" ,wxwidgets-2) + ("gtk" ,gtk+-2) + ("alsa-lib" ,alsa-lib) + ("jack" ,jack-2) + ("expat" ,expat) + ("ffmpeg" ,ffmpeg) + ("lame" ,lame) + ("flac" ,flac) + ("libid3tag" ,libid3tag) + ("libmad" ,libmad) + ("libsbsms" ,libsbsms) + ("libsndfile" ,libsndfile) + ("soundtouch" ,soundtouch) + ("soxr" ,soxr) ;replaces libsamplerate + ("twolame" ,twolame) + ("vamp" ,vamp) + ("libvorbis" ,libvorbis) + ("lv2" ,lv2) + ("lilv" ,lilv) + ("portaudio" ,portaudio))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-2) + ("which" ,which))) + (arguments + '(#:configure-flags + (let ((libid3tag (assoc-ref %build-inputs "libid3tag")) + (libmad (assoc-ref %build-inputs "libmad"))) + (list + ;; Loading FFmpeg dynamically is problematic. + "--disable-dynamic-loading" + ;; libid3tag and libmad provide no .pc files, so pkg-config fail= s to + ;; find them. Force their inclusion. + (string-append "ID3TAG_CFLAGS=3D-I" libid3tag "/include") + (string-append "ID3TAG_LIBS=3D-L" libid3tag "/lib -lid3tag -lz") + (string-append "LIBMAD_CFLAGS=3D-I" libmad "/include") + (string-append "LIBMAD_LIBS=3D-L" libmad "/lib -lmad"))) + ;; The test suite is not "well exercised" according to the develope= rs, + ;; and fails with various errors. See + ;; . + #:tests? #f)) + (home-page "http://audacity.sourceforge.net/") + (synopsis "Software for recording and editing sounds") + (description + "Audacity is a multi-track audio editor designed for recording, playi= ng +and editing digital audio. It features digital effects and spectrum analy= sis +tools.") + (license license:gpl2+))) diff --git a/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch b/gnu/p= ackages/patches/audacity-fix-ffmpeg-binding.patch new file mode 100644 index 0000000..d6d6533 --- /dev/null +++ b/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch @@ -0,0 +1,32 @@ +This resolves some "declaration of C function conflicts with previous +declaration" errors during compilation. + +--- a/src/FFmpeg.h 2015-02-21 00:33:33.853857529 +0100 ++++ b/src/FFmpeg.h 2015-02-21 00:35:09.626497205 +0100 +@@ -688,7 +688,7 @@ + FFMPEG_FUNCTION_WITH_RETURN( + AVOutputFormat*, + av_oformat_next, +- (AVOutputFormat *f), ++ (const AVOutputFormat *f), + (f) + ); + FFMPEG_FUNCTION_WITH_RETURN( +@@ -755,7 +755,7 @@ + FFMPEG_FUNCTION_WITH_RETURN( + int, + av_fifo_size, +- (AVFifoBuffer *f), ++ (const AVFifoBuffer *f), + (f) + ); + FFMPEG_FUNCTION_WITH_RETURN( +@@ -801,7 +801,7 @@ + FFMPEG_FUNCTION_WITH_RETURN( + AVDictionaryEntry *, + av_dict_get, +- (AVDictionary *m, const char *key, const AVDictionaryEntry *prev, i= nt flags), ++ (const AVDictionary *m, const char *key, const AVDictionaryEntry *p= rev, int flags), + (m, key, prev, flags) + ); + FFMPEG_FUNCTION_WITH_RETURN( --=20 2.2.1 --=-=-=--