summary refs log tree commit diff
path: root/pkgs/applications/audio/ardour
diff options
context:
space:
mode:
authorBart Brouns <bart@magnetophon.nl>2020-05-30 20:17:08 +0200
committerGitHub <noreply@github.com>2020-05-30 14:17:08 -0400
commit3a77caa41907e1124709c29398380e2b5772d615 (patch)
treeb50e6c049162fcb8ba2db152fc8fb4e96f71e9c9 /pkgs/applications/audio/ardour
parent903eb50f027a9712d92b25233adbf0f406f70c75 (diff)
downloadnixpkgs-3a77caa41907e1124709c29398380e2b5772d615.tar
nixpkgs-3a77caa41907e1124709c29398380e2b5772d615.tar.gz
nixpkgs-3a77caa41907e1124709c29398380e2b5772d615.tar.bz2
nixpkgs-3a77caa41907e1124709c29398380e2b5772d615.tar.lz
nixpkgs-3a77caa41907e1124709c29398380e2b5772d615.tar.xz
nixpkgs-3a77caa41907e1124709c29398380e2b5772d615.tar.zst
nixpkgs-3a77caa41907e1124709c29398380e2b5772d615.zip
ardour: add ardour 6 and make it the default (#89175)
We leave Ardour 5 in, since Ardour 6 has a new latency compensation
algorithm, so your mixes might end up sounding different in the new version.

Co-Authored-By: Pavol Rusnak <pavol@rusnak.io>
Diffstat (limited to 'pkgs/applications/audio/ardour')
-rw-r--r--pkgs/applications/audio/ardour/5.nix162
-rw-r--r--pkgs/applications/audio/ardour/as-flags.patch12
-rw-r--r--pkgs/applications/audio/ardour/default.nix124
3 files changed, 248 insertions, 50 deletions
diff --git a/pkgs/applications/audio/ardour/5.nix b/pkgs/applications/audio/ardour/5.nix
new file mode 100644
index 00000000000..86879e4e5bd
--- /dev/null
+++ b/pkgs/applications/audio/ardour/5.nix
@@ -0,0 +1,162 @@
+{ stdenv
+, fetchgit
+, alsaLib
+, aubio
+, boost
+, cairomm
+, curl
+, doxygen
+, fftwSinglePrec
+, flac
+, glibc
+, glibmm
+, graphviz
+, gtkmm2
+, libjack2
+, liblo
+, libogg
+, libsamplerate
+, libsigcxx
+, libsndfile
+, libusb1
+, fluidsynth_1
+, hidapi
+, libltc
+, qm-dsp
+, libxml2
+, lilv
+, lrdf
+, lv2
+, perl
+, pkg-config
+, itstool
+, python2
+, rubberband
+, serd
+, sord
+, sratom
+, taglib
+, vamp-plugin-sdk
+, dbus
+, fftw
+, pango
+, suil
+, libarchive
+, wafHook
+}:
+let
+  # Ardour git repo uses a mix of annotated and lightweight tags. Annotated
+  # tags are used for MAJOR.MINOR versioning, and lightweight tags are used
+  # in-between; MAJOR.MINOR.REV where REV is the number of commits since the
+  # last annotated tag. A slightly different version string format is needed
+  # for the 'revision' info that is built into the binary; it is the format of
+  # "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
+
+  # Version to build.
+  tag = "5.12";
+in stdenv.mkDerivation rec {
+  pname = "ardour_5";
+  version = "5.12";
+
+  src = fetchgit {
+    url = "git://git.ardour.org/ardour/ardour.git";
+    rev = "ae0dcdc0c5d13483271065c360e378202d20170a";
+    sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr";
+  };
+
+  nativeBuildInputs = [
+    wafHook
+    pkg-config
+    itstool
+    doxygen
+    graphviz # for dot
+    perl
+    python2
+  ];
+
+  buildInputs = [
+    alsaLib
+    aubio
+    boost
+    cairomm
+    curl
+    dbus
+    fftw
+    fftwSinglePrec
+    flac
+    glibmm
+    gtkmm2
+    libjack2
+    liblo
+    libogg
+    libsamplerate
+    libsigcxx
+    libsndfile
+    libusb1
+    fluidsynth_1
+    hidapi
+    libltc
+    qm-dsp
+    libxml2
+    lilv
+    lrdf
+    lv2
+    pango
+    rubberband
+    serd
+    sord
+    sratom
+    suil
+    taglib
+    vamp-plugin-sdk
+    libarchive
+  ];
+
+  wafConfigureFlags = [
+    "--optimize"
+    "--docs"
+    "--use-external-libs"
+    "--freedesktop"
+    "--with-backends=jack,alsa,dummy"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${qm-dsp}/include/qm-dsp";
+
+  # ardour's wscript has a "tarball" target but that required the git revision
+  # be available. Since this is an unzipped tarball fetched from github we
+  # have to do that ourself.
+  postPatch = ''
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc
+    patchShebangs ./tools/
+  '';
+
+  postInstall = ''
+    # wscript does not install these for some reason
+    install -vDm 644 "build/gtk2_ardour/ardour.xml" \
+      -t "$out/share/mime/packages"
+    install -vDm 644 "build/gtk2_ardour/ardour5.desktop" \
+      -t "$out/share/applications"
+    for size in 16 22 32 48 256 512; do
+      install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
+        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour5.png"
+    done
+    install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multi-track hard disk recording software";
+    longDescription = ''
+      Ardour is a digital audio workstation (DAW), You can use it to
+      record, edit and mix multi-track audio and midi. Produce your
+      own CDs. Mix video soundtracks. Experiment with new ideas about
+      music and sound.
+
+      Please consider supporting the ardour project financially:
+      https://community.ardour.org/donate
+    '';
+    homepage = "https://ardour.org/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu fps ];
+  };
+}
diff --git a/pkgs/applications/audio/ardour/as-flags.patch b/pkgs/applications/audio/ardour/as-flags.patch
new file mode 100644
index 00000000000..b8aab70ddca
--- /dev/null
+++ b/pkgs/applications/audio/ardour/as-flags.patch
@@ -0,0 +1,12 @@
+--- a/libs/ardour/wscript
++++ b/libs/ardour/wscript
+@@ -379,8 +379,7 @@ def build(bld):
+
+     # remove '${DEFINES_ST:DEFINES}' from run_str.
+     # x86_64-w64-mingw32-as (mingw) -D flag is for debug messages
+-    if bld.env['build_target'] == 'mingw':
+-        class asm(Task.classes['asm']): run_str = '${AS} ${ASFLAGS} ${ASMPATH_ST:INCPATHS} ${AS_SRC_F}${SRC} ${AS_TGT_F}${TGT}'
++    class asm(Task.classes['asm']): run_str = '${AS} ${ASFLAGS} ${ASMPATH_ST:INCPATHS} ${AS_SRC_F}${SRC} ${AS_TGT_F}${TGT}'
+
+     # operate on copy to avoid adding sources twice
+     sources = list(libardour_sources)
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index fadfedf5384..c99545bb74f 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -4,75 +4,79 @@
 , aubio
 , boost
 , cairomm
+, cppunit
 , curl
+, dbus
 , doxygen
+, ffmpeg
+, fftw
 , fftwSinglePrec
 , flac
+, fluidsynth
 , glibc
 , glibmm
 , graphviz
 , gtkmm2
+, hidapi
+, itstool
+, libarchive
 , libjack2
 , liblo
+, libltc
 , libogg
+, libpulseaudio
+, librdf_raptor
+, librdf_rasqal
 , libsamplerate
 , libsigcxx
 , libsndfile
 , libusb1
-, fluidsynth_1
-, hidapi
-, libltc
-, qm-dsp
+, libuv
+, libwebsockets
 , libxml2
+, libxslt
 , lilv
 , lrdf
 , lv2
-, makeWrapper
+, pango
 , perl
 , pkg-config
-, itstool
-, python2
+, python3
+, qm-dsp
+, readline
 , rubberband
 , serd
 , sord
 , sratom
+, suil
 , taglib
 , vamp-plugin-sdk
-, dbus
-, fftw
-, pango
-, suil
-, libarchive
 , wafHook
 }:
-let
-  # Ardour git repo uses a mix of annotated and lightweight tags. Annotated
-  # tags are used for MAJOR.MINOR versioning, and lightweight tags are used
-  # in-between; MAJOR.MINOR.REV where REV is the number of commits since the
-  # last annotated tag. A slightly different version string format is needed
-  # for the 'revision' info that is built into the binary; it is the format of
-  # "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
-
-  # Version to build.
-  tag = "5.12";
-in stdenv.mkDerivation rec {
-  name = "ardour-${tag}";
+stdenv.mkDerivation rec {
+  pname = "ardour";
+  version = "6.0";
 
+  # don't fetch releases from the GitHub mirror, they are broken
   src = fetchgit {
     url = "git://git.ardour.org/ardour/ardour.git";
-    rev = "ae0dcdc0c5d13483271065c360e378202d20170a";
-    sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr";
+    rev = version;
+    sha256 = "162jd96zahl05fdmjwvpdfjxbhd6ifbav6xqa0vv6rsdl4zk395q";
   };
 
+  patches = [
+    # AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096
+    ./as-flags.patch
+  ];
+
   nativeBuildInputs = [
-    wafHook
-    makeWrapper
-    pkg-config
-    itstool
     doxygen
     graphviz # for dot
+    itstool
     perl
-    python2
+    pkg-config
+    python3
+    wafHook
   ];
 
   buildInputs = [
@@ -80,29 +84,42 @@ in stdenv.mkDerivation rec {
     aubio
     boost
     cairomm
+    cppunit
     curl
     dbus
+    ffmpeg
     fftw
     fftwSinglePrec
     flac
+    fluidsynth
     glibmm
     gtkmm2
+    hidapi
+    itstool
+    libarchive
     libjack2
     liblo
+    libltc
     libogg
+    libpulseaudio
+    librdf_raptor
+    librdf_rasqal
     libsamplerate
     libsigcxx
     libsndfile
     libusb1
-    fluidsynth_1
-    hidapi
-    libltc
-    qm-dsp
+    libuv
+    libwebsockets
     libxml2
+    libxslt
     lilv
     lrdf
     lv2
     pango
+    perl
+    python3
+    qm-dsp
+    readline
     rubberband
     serd
     sord
@@ -110,40 +127,47 @@ in stdenv.mkDerivation rec {
     suil
     taglib
     vamp-plugin-sdk
-    libarchive
   ];
 
   wafConfigureFlags = [
-    "--optimize"
+    "--cxx11"
     "--docs"
-    "--use-external-libs"
     "--freedesktop"
-    "--with-backends=jack,alsa,dummy"
+    "--no-phone-home"
+    "--optimize"
+    "--ptformat"
+    "--qm-dsp-include=${qm-dsp}/include/qm-dsp"
+    "--run-tests"
+    "--test"
+    "--use-external-libs"
   ];
 
-  NIX_CFLAGS_COMPILE = "-I${qm-dsp}/include/qm-dsp";
-
-  # ardour's wscript has a "tarball" target but that required the git revision
-  # be available. Since this is an unzipped tarball fetched from github we
-  # have to do that ourself.
+  # Ardour's wscript requires git revision and date to be available.
+  # Since they are not, let's generate the file manually.
   postPatch = ''
-    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc
+    sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
     patchShebangs ./tools/
+    substituteInPlace libs/ardour/video_tools_paths.cc \
+      --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \
+      --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");'
   '';
 
   postInstall = ''
     # wscript does not install these for some reason
     install -vDm 644 "build/gtk2_ardour/ardour.xml" \
       -t "$out/share/mime/packages"
-    install -vDm 644 "build/gtk2_ardour/ardour5.desktop" \
+    install -vDm 644 "build/gtk2_ardour/ardour6.desktop" \
       -t "$out/share/applications"
     for size in 16 22 32 48 256 512; do
       install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
-        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour5.png"
+        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour6.png"
     done
     install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
   '';
 
+  LINKFLAGS = "-lpthread";
+
   meta = with stdenv.lib; {
     description = "Multi-track hard disk recording software";
     longDescription = ''
@@ -153,11 +177,11 @@ in stdenv.mkDerivation rec {
       music and sound.
 
       Please consider supporting the ardour project financially:
-      https://community.ardour.org/node/8288
+      https://community.ardour.org/donate
     '';
-    homepage = "http://ardour.org/";
+    homepage = "https://ardour.org/";
     license = licenses.gpl2;
     platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu maintainers.fps ];
+    maintainers = with maintainers; [ goibhniu magnetophon ];
   };
 }