Difference between revisions of "Notes for Packagers"

From Audacity Wiki
Jump to: navigation, search
(very minor tidy; Add to Category:Linux and Unix Platform, add Intro. and link to feedback address for reports and patches)
 
(16 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Intro|1=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]].|2= For almost all Mac and Windows users we would recommend distributing the binaries available on our website: {{external|http://audacity.sourceforge.net/download/}}.}}
+
{{alert|1=This page has not been maintained in a very long time.  ''Forsooth, it even mentions wxWidgets 2.8.x!''  If you are a packager and you arrived here, we encourage you to come over to audacity-devel email list, or if you are there already, to uncloak, and ask us about what you were looking for.}}{{Intro|1=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]].|2= For almost all Mac and Windows users we would recommend distributing the binaries available on our website: {{external|https://web.audacityteam.org/download/}}.}}
 
 
  
 
== What to Package ==
 
== 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.
+
The current version of Audacity from https://web.audacityteam.org/download/source should be packaged.  
 
 
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 can be built using either the 2.6 or 2.8 versions of wxwidgets (provided that 2.6 compatibility is enabled in the wx 2.8 build). Because this is a beta release, be aware that there is limited documentation and there will be frequent new releases to address issues.
 
  
 +
This requires wxwidgets 2.8.x, and preferably wx2.8.12.
  
 
== Dependencies ==
 
== Dependencies ==
Line 25: Line 23:
 
=== Optional Dependencies ===
 
=== 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.
 
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.
 +
* {{external|[http://ffmpeg.org/ FFmpeg]}} Multi-format audio and video encoder.
 +
** FFmpeg library headers only required to compile Audacity.
 +
** FFmpeg libraries are dynamically opened at run time if support was compiled into Audacity. If they are not available Audacity will still run, but not be able to import or export as many formats.
 +
** 0.5 through 0.10 release branch required (later versions will not work). 0.5 branch works but will be missing some features only added to development branch later (like distributable AMR support).
 
* {{external|[http://flac.sourceforge.net/ FLAC]}} Josh Coalson's Free Lossless Audio Codec.
 
* {{external|[http://flac.sourceforge.net/ FLAC]}} Josh Coalson's Free Lossless Audio Codec.
** Version 1.1.0 or higher needed, 1.2.1 recommended.
+
** Version 1.1.0 or higher needed, 1.3.0 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.
+
** Whilst it is possible to handle FLAC files indirectly through either libsndfile or FFmpeg, the direct support through FLAC has more features and is the preferred option.
 +
* {{external|[http://www.underbit.com/products/mad/ libid3tag]}} ID3 tag manipulation library
 +
** Comes with libMAD (below).
 
* {{external|[http://www.underbit.com/products/mad/ libMAD]}} The reference-grade MPEG Audio Decoder.
 
* {{external|[http://www.underbit.com/products/mad/ libMAD]}} The reference-grade MPEG Audio Decoder.
 
** Used to decode MPEG I layer 2 (MP2) and layer 3 (MP3) files.
 
** 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.
 
** Does not provide MPEG encoding so generally considered fairly safe from patent claims.
 +
* {{external|[http://www.xiph.org/ libogg]}} Ogg container format library
 +
** Needed by libvorbis (below) and in it's own right
 +
** Very stable library, any stable version probably still works fine.
 +
* {{external|[http://www.vamp-plugins.org/ Vamp SDK]}} Audio Analysis plug-in SDK
 +
** Version 2.0 needed
 +
** Allows Audacity to function as a Vamp 2.0 host for Vamp analysis plug-ins.
 
* {{external|[http://www.xiph.org/vorbis/ libvorbis]}} Reference Vorbis encoder and decoder from {{external|[http://www.xiph.org/ Xiph.org]}}
 
* {{external|[http://www.xiph.org/vorbis/ libvorbis]}} Reference Vorbis encoder and decoder from {{external|[http://www.xiph.org/ Xiph.org]}}
 
** Provides import and export of Ogg Vorbis files
 
** Provides import and export of Ogg Vorbis files
 
** Very stable library, old 1.1.x versions probably still work fine.
 
** Very stable library, old 1.1.x versions probably still work fine.
 
* {{external|[http://www.surina.net/soundtouch/ Soundtouch]}} Independent Pitch and Tempo changing library.
 
* {{external|[http://www.surina.net/soundtouch/ Soundtouch]}} Independent Pitch and Tempo changing library.
** Versions 1.3.1 and 1.3.0 supported
+
** Versions 1.3.0 to 1.4.0 supported
 
** 1.3.0 is missing a pkg-config file so is not detected by the configure script unless one is created.
 
** 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.
 
** Can be a problem to build due to heavy ASM optimisation. Numerous patches exist for specific systems and compilers.
Line 54: Line 64:
 
* {{external|[http://pkg-config.freedesktop.org/wiki/ pkg-config]}} Utility to locate libraries and compiler options
 
* {{external|[http://pkg-config.freedesktop.org/wiki/ pkg-config]}} Utility to locate libraries and compiler options
 
** Used extensively by the Audacity configure script to find system libraries.
 
** Used extensively by the Audacity configure script to find system libraries.
* {{external|[http://www.gnu.org/software/autoconf/ Autoconf]}} Program for creating configure scripts
+
* {{external|[http://www.gnu.org/software/autoconf/ Autoconf]}} and {{external|[http://www.gnu.org/software/automake/ Automake]}} Programs for creating configure scripts and Makefiles
** Only needed if you want to patch or alter the Audacity configure script by editing configure.in.
+
** Only needed if you want to patch or alter the Audacity build system by editing configure.in, Makefile.am and so on.
** Note Audacity does ''not'' use Automake, although some sub-libraries do.
+
** Note Audacity does ''not'' use Automake, although some sub-libraries in lib-src/ do.
* {{external|[http://autoconf-archive.cryp.to/ Autoconf Macro Archive]}} Archive of useful Autoconf macros.
+
** All audacity-supplied libraries have AM_MAINTAINER_MODE([enabled]) included in their configure.ac/.in, so autotools will ''not'' be run automatically by make unless the --enable-maintainer-mode option is passed to configure.
** Used in Audacity's configure scripts, so needed when rebuilding configure using Autoconf
 
 
 
  
 
==Sending us Patches or Bug Reports==
 
==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 {{external|1=[mailto:[email protected].org?subject=Packagers'_enquiry send us an e-mail]}}. Patches can be attached and should preferably be in unified diff format.   
+
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 visit our {{external|[https://github.com/audacity/audacity/issues GitHub]}}. Patches can be attached and should preferably be in unified diff format.   
  
  
 
[[Category: For Developers]][[Category:Linux and Unix Platform]]
 
[[Category: For Developers]][[Category:Linux and Unix Platform]]

Latest revision as of 11:27, 31 July 2021

Warning icon This page has not been maintained in a very long time. Forsooth, it even mentions wxWidgets 2.8.x! If you are a packager and you arrived here, we encourage you to come over to audacity-devel email list, or if you are there already, to uncloak, and ask us about what you were looking for.
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: https://web.audacityteam.org/download/ .

What to Package

The current version of Audacity from https://web.audacityteam.org/download/source should be packaged.

This requires wxwidgets 2.8.x, and preferably wx2.8.12.

Dependencies

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.

  • FFmpeg  Multi-format audio and video encoder.
    • FFmpeg library headers only required to compile Audacity.
    • FFmpeg libraries are dynamically opened at run time if support was compiled into Audacity. If they are not available Audacity will still run, but not be able to import or export as many formats.
    • 0.5 through 0.10 release branch required (later versions will not work). 0.5 branch works but will be missing some features only added to development branch later (like distributable AMR support).
  • FLAC  Josh Coalson's Free Lossless Audio Codec.
    • Version 1.1.0 or higher needed, 1.3.0 recommended.
    • Whilst it is possible to handle FLAC files indirectly through either libsndfile or FFmpeg, the direct support through FLAC has more features and is the preferred option.
  • libid3tag  ID3 tag manipulation library
    • Comes with libMAD (below).
  • 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.
  • libogg  Ogg container format library
    • Needed by libvorbis (below) and in it's own right
    • Very stable library, any stable version probably still works fine.
  • Vamp SDK  Audio Analysis plug-in SDK
    • Version 2.0 needed
    • Allows Audacity to function as a Vamp 2.0 host for Vamp analysis plug-ins.
  • libvorbis  Reference Vorbis encoder and decoder from Xiph.org 
    • 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.0 to 1.4.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  and Automake  Programs for creating configure scripts and Makefiles
    • Only needed if you want to patch or alter the Audacity build system by editing configure.in, Makefile.am and so on.
    • Note Audacity does not use Automake, although some sub-libraries in lib-src/ do.
    • All audacity-supplied libraries have AM_MAINTAINER_MODE([enabled]) included in their configure.ac/.in, so autotools will not be run automatically by make unless the --enable-maintainer-mode option is passed to configure.

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 visit our GitHub . Patches can be attached and should preferably be in unified diff format.