about summary refs log tree commit diff
path: root/pkgs/applications/audio/ardour
diff options
context:
space:
mode:
authorAndrew Morgan <1342360+anoadragon453@users.noreply.github.com>2022-11-09 19:46:13 +0000
committerGitHub <noreply@github.com>2022-11-09 20:46:13 +0100
commitef527a4a2bbdc1b496500a4a38b12637c8fe21d3 (patch)
treea87148e3620a2e8a652a16d87c4dbedb46da54af /pkgs/applications/audio/ardour
parent00dd23ec034083cc60c23024af9eb08ac66db5bb (diff)
ardour: 6.9 -> 7.1 (#196290)
Diffstat (limited to 'pkgs/applications/audio/ardour')
-rw-r--r--pkgs/applications/audio/ardour/6.nix191
-rw-r--r--pkgs/applications/audio/ardour/default.nix49
2 files changed, 222 insertions, 18 deletions
diff --git a/pkgs/applications/audio/ardour/6.nix b/pkgs/applications/audio/ardour/6.nix
new file mode 100644
index 0000000000000..140d20c2aad5b
--- /dev/null
+++ b/pkgs/applications/audio/ardour/6.nix
@@ -0,0 +1,191 @@
+{ lib, stdenv
+, fetchgit
+, alsa-lib
+, aubio
+, boost
+, cairomm
+, cppunit
+, curl
+, dbus
+, doxygen
+, ffmpeg
+, fftw
+, fftwSinglePrec
+, flac
+, glibc
+, glibmm
+, graphviz
+, gtkmm2
+, harvid
+, itstool
+, libarchive
+, libjack2
+, liblo
+, libogg
+, libpulseaudio
+, librdf_raptor
+, librdf_rasqal
+, libsamplerate
+, libsigcxx
+, libsndfile
+, libusb1
+, libuv
+, libwebsockets
+, libxml2
+, libxslt
+, lilv
+, lrdf
+, lv2
+, makeWrapper
+, pango
+, perl
+, pkg-config
+, python3
+, readline
+, rubberband
+, serd
+, sord
+, soundtouch
+, sratom
+, suil
+, taglib
+, vamp-plugin-sdk
+, wafHook
+, xjadeo
+, videoSupport ? true
+}:
+stdenv.mkDerivation rec {
+  pname = "ardour";
+  version = "6.9";
+
+  # We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org
+  # result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info.
+  src = fetchgit {
+    url = "git://git.ardour.org/ardour/ardour.git";
+    rev = version;
+    sha256 = "0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm";
+  };
+
+  patches = [
+    # AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096
+    ./as-flags.patch
+  ];
+
+  nativeBuildInputs = [
+    doxygen
+    graphviz # for dot
+    itstool
+    makeWrapper
+    perl
+    pkg-config
+    python3
+    wafHook
+  ];
+
+  buildInputs = [
+    alsa-lib
+    aubio
+    boost
+    cairomm
+    cppunit
+    curl
+    dbus
+    ffmpeg
+    fftw
+    fftwSinglePrec
+    flac
+    glibmm
+    gtkmm2
+    itstool
+    libarchive
+    libjack2
+    liblo
+    libogg
+    libpulseaudio
+    librdf_raptor
+    librdf_rasqal
+    libsamplerate
+    libsigcxx
+    libsndfile
+    libusb1
+    libuv
+    libwebsockets
+    libxml2
+    libxslt
+    lilv
+    lrdf
+    lv2
+    pango
+    perl
+    python3
+    readline
+    rubberband
+    serd
+    sord
+    soundtouch
+    sratom
+    suil
+    taglib
+    vamp-plugin-sdk
+  ] ++ lib.optionals videoSupport [ harvid xjadeo ];
+
+  wafConfigureFlags = [
+    "--cxx11"
+    "--docs"
+    "--freedesktop"
+    "--no-phone-home"
+    "--optimize"
+    "--ptformat"
+    "--run-tests"
+    "--test"
+  ];
+  # removed because it fixes https://tracker.ardour.org/view.php?id=8161 and https://tracker.ardour.org/view.php?id=8437
+  # "--use-external-libs"
+
+  # 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 = "${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/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/ardour6.png"
+    done
+    install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
+  '' + lib.optionalString videoSupport ''
+    # `harvid` and `xjadeo` must be accessible in `PATH` for video to work.
+    wrapProgram "$out/bin/ardour6" \
+      --prefix PATH : "${lib.makeBinPath [ harvid xjadeo ]}"
+  '';
+
+  LINKFLAGS = "-lpthread";
+
+  meta = with 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.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ goibhniu magnetophon mitchmindtree ];
+  };
+}
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index d5afcac86cd48..44b54111fd360 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchgit
+, fetchzip
 , alsa-lib
 , aubio
 , boost
@@ -56,13 +58,21 @@
 }:
 stdenv.mkDerivation rec {
   pname = "ardour";
-  version = "6.9";
+  version = "7.1";
 
-  # don't fetch releases from the GitHub mirror, they are broken
+  # We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org
+  # result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info.
   src = fetchgit {
     url = "git://git.ardour.org/ardour/ardour.git";
     rev = version;
-    sha256 = "0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm";
+    hash = "sha256-eLF9n71tjdPA+ks0B8UonmPZqRgcZEA7ok79+m9PioU=";
+  };
+
+  bundledContent = fetchzip {
+    url = "https://web.archive.org/web/20221026200824/http://stuff.ardour.org/loops/ArdourBundledMedia.zip";
+    hash = "sha256-IbPQWFeyMuvCoghFl1ZwZNNcSvLNsH84rGArXnw+t7A=";
+    # archive does not contain a single folder at the root
+    stripRoot = false;
   };
 
   patches = [
@@ -70,6 +80,17 @@ stdenv.mkDerivation rec {
     ./as-flags.patch
   ];
 
+  # 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 = "${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");'
+  '';
+
   nativeBuildInputs = [
     doxygen
     graphviz # for dot
@@ -141,31 +162,23 @@ stdenv.mkDerivation rec {
   # removed because it fixes https://tracker.ardour.org/view.php?id=8161 and https://tracker.ardour.org/view.php?id=8437
   # "--use-external-libs"
 
-  # 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 = "${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/ardour6.desktop" \
+    install -vDm 644 "build/gtk2_ardour/ardour${lib.versions.major version}.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/ardour6.png"
+        "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour${lib.versions.major version}.png"
     done
     install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
+
+    # install additional bundled beats, chords and progressions
+    cp -rp "${bundledContent}"/* "$out/share/ardour${lib.versions.major version}/media"
   '' + lib.optionalString videoSupport ''
     # `harvid` and `xjadeo` must be accessible in `PATH` for video to work.
-    wrapProgram "$out/bin/ardour6" \
+    wrapProgram "$out/bin/ardour${lib.versions.major version}" \
       --prefix PATH : "${lib.makeBinPath [ harvid xjadeo ]}"
   '';