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>
This commit is contained in:
Bart Brouns 2020-05-30 20:17:08 +02:00 committed by GitHub
parent 903eb50f02
commit 3a77caa419
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 250 additions and 50 deletions

View File

@ -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 ];
};
}

View File

@ -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)

View File

@ -4,75 +4,79 @@
, aubio , aubio
, boost , boost
, cairomm , cairomm
, cppunit
, curl , curl
, dbus
, doxygen , doxygen
, ffmpeg
, fftw
, fftwSinglePrec , fftwSinglePrec
, flac , flac
, fluidsynth
, glibc , glibc
, glibmm , glibmm
, graphviz , graphviz
, gtkmm2 , gtkmm2
, hidapi
, itstool
, libarchive
, libjack2 , libjack2
, liblo , liblo
, libltc
, libogg , libogg
, libpulseaudio
, librdf_raptor
, librdf_rasqal
, libsamplerate , libsamplerate
, libsigcxx , libsigcxx
, libsndfile , libsndfile
, libusb1 , libusb1
, fluidsynth_1 , libuv
, hidapi , libwebsockets
, libltc
, qm-dsp
, libxml2 , libxml2
, libxslt
, lilv , lilv
, lrdf , lrdf
, lv2 , lv2
, makeWrapper , pango
, perl , perl
, pkg-config , pkg-config
, itstool , python3
, python2 , qm-dsp
, readline
, rubberband , rubberband
, serd , serd
, sord , sord
, sratom , sratom
, suil
, taglib , taglib
, vamp-plugin-sdk , vamp-plugin-sdk
, dbus
, fftw
, pango
, suil
, libarchive
, wafHook , wafHook
}: }:
let stdenv.mkDerivation rec {
# Ardour git repo uses a mix of annotated and lightweight tags. Annotated pname = "ardour";
# tags are used for MAJOR.MINOR versioning, and lightweight tags are used version = "6.0";
# 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}";
# don't fetch releases from the GitHub mirror, they are broken
src = fetchgit { src = fetchgit {
url = "git://git.ardour.org/ardour/ardour.git"; url = "git://git.ardour.org/ardour/ardour.git";
rev = "ae0dcdc0c5d13483271065c360e378202d20170a"; rev = version;
sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"; sha256 = "162jd96zahl05fdmjwvpdfjxbhd6ifbav6xqa0vv6rsdl4zk395q";
}; };
patches = [
# AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096
./as-flags.patch
];
nativeBuildInputs = [ nativeBuildInputs = [
wafHook
makeWrapper
pkg-config
itstool
doxygen doxygen
graphviz # for dot graphviz # for dot
itstool
perl perl
python2 pkg-config
python3
wafHook
]; ];
buildInputs = [ buildInputs = [
@ -80,29 +84,42 @@ in stdenv.mkDerivation rec {
aubio aubio
boost boost
cairomm cairomm
cppunit
curl curl
dbus dbus
ffmpeg
fftw fftw
fftwSinglePrec fftwSinglePrec
flac flac
fluidsynth
glibmm glibmm
gtkmm2 gtkmm2
hidapi
itstool
libarchive
libjack2 libjack2
liblo liblo
libltc
libogg libogg
libpulseaudio
librdf_raptor
librdf_rasqal
libsamplerate libsamplerate
libsigcxx libsigcxx
libsndfile libsndfile
libusb1 libusb1
fluidsynth_1 libuv
hidapi libwebsockets
libltc
qm-dsp
libxml2 libxml2
libxslt
lilv lilv
lrdf lrdf
lv2 lv2
pango pango
perl
python3
qm-dsp
readline
rubberband rubberband
serd serd
sord sord
@ -110,40 +127,47 @@ in stdenv.mkDerivation rec {
suil suil
taglib taglib
vamp-plugin-sdk vamp-plugin-sdk
libarchive
]; ];
wafConfigureFlags = [ wafConfigureFlags = [
"--optimize" "--cxx11"
"--docs" "--docs"
"--use-external-libs"
"--freedesktop" "--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 requires git revision and date to be available.
# Since they are not, let's generate the file manually.
# 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 = '' 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/ 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 = '' postInstall = ''
# wscript does not install these for some reason # wscript does not install these for some reason
install -vDm 644 "build/gtk2_ardour/ardour.xml" \ install -vDm 644 "build/gtk2_ardour/ardour.xml" \
-t "$out/share/mime/packages" -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" -t "$out/share/applications"
for size in 16 22 32 48 256 512; do for size in 16 22 32 48 256 512; do
install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \ 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 done
install -vDm 644 "ardour.1"* -t "$out/share/man/man1" install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
''; '';
LINKFLAGS = "-lpthread";
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Multi-track hard disk recording software"; description = "Multi-track hard disk recording software";
longDescription = '' longDescription = ''
@ -153,11 +177,11 @@ in stdenv.mkDerivation rec {
music and sound. music and sound.
Please consider supporting the ardour project financially: 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; license = licenses.gpl2;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = [ maintainers.goibhniu maintainers.fps ]; maintainers = with maintainers; [ goibhniu magnetophon ];
}; };
} }

View File

@ -18662,6 +18662,8 @@ in
ardour = callPackage ../applications/audio/ardour { }; ardour = callPackage ../applications/audio/ardour { };
ardour_5 = lowPrio (callPackage ../applications/audio/ardour/5.nix { });
arelle = with python3Packages; toPythonApplication arelle; arelle = with python3Packages; toPythonApplication arelle;
argo = callPackage ../applications/networking/cluster/argo { }; argo = callPackage ../applications/networking/cluster/argo { };