Notes for Packagers

From Audacity Wiki
Revision as of 21:10, 17 October 2008 by Richardash1981 (talk | contribs) (What to Package: update to reflect w2.8 only for 1.3.6)
Jump to: navigation, search
This page contains hints and tips on creating Audacity packages for Linux/Unix distributions. It will also be useful for people compiling Audacity from source on their own systems. For more details about developing for Linux/Unix, see Developing On Linux.
For almost all Mac and Windows users we would recommend distributing the binaries available on our website: .

What to Package

Ideally, both the latest stable release of Audacity and the latest beta release would be available to users, with a choice to install either or both independently. Unfortunately this (especially parallel installs) is beyond the capability of many package management systems, and so a decision will have to be made on which version to package.

Currently, the stable (1.2.5/6) version of Audacity depends on the obsolete 2.4.x version of wxwidgets, so will be difficult to package for many systems. In practice this means that you will have to package the most recent beta release from the 1.3.x series (1.3.5 at the moment). This requires wxwidgets 2.8.x, and preferably the current (wx2.8.9) release. Because this is a beta release of Audacity, be aware that there is limited documentation and there will be frequent new releases to address issues.


Audacity uses a lot of libraries to provide functionality. The majority of these can and should be dynamically linked as system libraries, and so listed as dependencies of the Audacity package. The sources of some of these libraries are provided in the lib-src/ module of the Audacity CVS, but don't regard this as evidence that they should be preferred to system copies: most are provided only as a convenience to Mac and Windows developers.

Required Dependencies

Some libraries are absolutely required for Audacity to run. These are hard dependencies for any Audacity package unless the libraries are linked statically.

  • wxWidgets  This is the graphical toolkit used to build Audacity.
    • For most *nix systems wxGTK (built on top of GTK+2) will be the correct implementation to use. We do not support the incomplete and largely obsolete Motif (wxX11) implementation.
    • Please always stick to stable releases (even version numbers) of wxGTK - we don't target unstable releases, and they frequently contain bugs that cause problems for users.
    • A Unicode build of Audacity requires a Unicode build of wxGTK. This is the default, and allows internationalised file names which don't work in ANSI builds. So build Unicode if possible - there are rarely reasons not to.
  • Libsndfile  The canonical I/O library for uncompressed and low compression audio files.
    • Audacity will work with almost any release since 1.0.0, however more recent releases provide more formats and fix bugs, especially with metadata handling.
  • Expat  A workhorse XML parser library, and much smaller than libxml2.
    • This is a dependency of wxWidgets, so it's probably already present
    • Again, almost any stable version will work quite happily, but most testing uses the most recent stable release (currently 2.0.1).

Optional Dependencies

With just the required libraries, Audacity only supports a very limited range of file formats. To expand this to a more useful range of common audio formats more libraries will be needed. These libraries are all optional at build time, however once Audacity is compiled with them they are required at run-time to start Audacity.

  • FLAC  Josh Coalson's Free Lossless Audio Codec.
    • Version 1.1.0 or higher needed, 1.2.1 recommended.
    • Whilst it is possible to handle FLAC files indirectly through either libdnsfile or ffmpeg, the direct support through FLAC has more features and is the preferred option.
  • libMAD  The reference-grade MPEG Audio Decoder.
    • Used to decode MPEG I layer 2 (MP2) and layer 3 (MP3) files.
    • Does not provide MPEG encoding so generally considered fairly safe from patent claims.
  • libvorbis  Reference Vorbis encoder and decoder from 
    • Provides import and export of Ogg Vorbis files
    • Very stable library, old 1.1.x versions probably still work fine.
  • Soundtouch  Independent Pitch and Tempo changing library.
    • Versions 1.3.1 and 1.3.0 supported
    • 1.3.0 is missing a pkg-config file so is not detected by the configure script unless one is created.
    • Can be a problem to build due to heavy ASM optimisation. Numerous patches exist for specific systems and compilers.
  • TwoLame  MPEG 1 Layer 2 encoder library (widely used in radio broadcasting).
    • Based on ISO Dist 10 sources, believed to be patent safe as doesn't implement Layer 3 encoding.
    • Better maintained replacement for tooLAME
    • Version 0.3.10 or better required, 0.3.12 recommended for build fixes.

Build Dependencies

These are packages required to build Audacity from source, but that are not then required in order to run Audacity. As such they will be needed on the machine used to build packages but are not dependencies of the resulting package for binary package systems. Most of them are close to standard on Linux systems, but may not be elsewhere.

  • Gmake  GNU make
    • Other make tools are not supported
    • Systems where make != gmake should work fine if the MAKE environment variable is set to point at a copy of GNU make. Please report to us if this is not the case.
  • GCC  The GNU Compiler Collection
    • This is the only supported compiler target for *nix. Sensible patches for other compilers are welcome though.
    • If you split GCC up by languages, C and C++ compilers are required to build Audacity.
    • Systems where cc != gcc should work if the CC (and CXX) environment variables are set when configure is run. This probably implies building supporting libraries using GCC as well.
  • pkg-config  Utility to locate libraries and compiler options
    • Used extensively by the Audacity configure script to find system libraries.
  • Autoconf  Program for creating configure scripts
    • Only needed if you want to patch or alter the Audacity configure script by editing
    • Note Audacity does not use Automake, although some sub-libraries do.
  • Autoconf Macro Archive  Archive of useful Autoconf macros.
    • Used in Audacity's configure scripts, so needed when rebuilding configure using Autoconf

Sending us Patches or Bug Reports

We'd greatly appreciate packagers letting us know of any problems that arise, or sending us patches for compiling Audacity with latest library versions. To contact our Team, please send us an e-mail . Patches can be attached and should preferably be in unified diff format.