anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / audio / ardour / 7.nix
blobd0554a21af1851857869dbc225d042ed1470a610
1 { lib
2 , stdenv
3 , fetchgit
4 , fetchzip
5 , fetchpatch
6 , fetchpatch2
7 , alsa-lib
8 , aubio
9 , boost
10 , cairomm
11 , cppunit
12 , curl
13 , dbus
14 , doxygen
15 , ffmpeg
16 , fftw
17 , fftwSinglePrec
18 , flac
19 , glibc
20 , glibmm
21 , graphviz
22 , gtkmm2
23 , harvid
24 , itstool
25 , libarchive
26 , libjack2
27 , liblo
28 , libogg
29 , libpulseaudio
30 , librdf_raptor
31 , librdf_rasqal
32 , libsamplerate
33 , libsigcxx
34 , libsndfile
35 , libusb1
36 , libuv
37 , libwebsockets
38 , libxml2
39 , libxslt
40 , lilv
41 , lrdf
42 , lv2
43 , makeWrapper
44 , pango
45 , perl
46 , pkg-config
47 , python3
48 , readline
49 , rubberband
50 , serd
51 , sord
52 , soundtouch
53 , sratom
54 , suil
55 , taglib
56 , vamp-plugin-sdk
57 , wafHook
58 , xjadeo
59 , videoSupport ? true
61 stdenv.mkDerivation rec {
62   pname = "ardour";
63   version = "7.5";
65   # We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org
66   # result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info.
67   src = fetchgit {
68     url = "git://git.ardour.org/ardour/ardour.git";
69     rev = version;
70     hash = "sha256-cmYt6fGYuuVs6YhAXaO9AG6TrYLDVUaE1/iC67rt76I=";
71   };
73   bundledContent = fetchzip {
74     url = "https://web.archive.org/web/20221026200824/http://stuff.ardour.org/loops/ArdourBundledMedia.zip";
75     hash = "sha256-IbPQWFeyMuvCoghFl1ZwZNNcSvLNsH84rGArXnw+t7A=";
76     # archive does not contain a single folder at the root
77     stripRoot = false;
78   };
80   patches = [
81     # AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096
82     ./as-flags.patch
83     ./default-plugin-search-paths.patch
85     # Fix build with libxml2 2.12.
86     (fetchpatch {
87       url = "https://github.com/Ardour/ardour/commit/e995daa37529715214c6c4a2587e4134aaaba02f.patch";
88       hash = "sha256-EpXOIIObOwwcNgNma0E3nvaBad3930sagDjBpa+78WI=";
89     })
91     # Work around itstools bug #9648
92     (fetchpatch2 {
93       url = "https://github.com/Ardour/ardour/commit/338cd09a4aa1b36b8095dfc14ab534395f9a4a92.patch?full_index=1";
94       hash = "sha256-AvV4aLdkfrxPkE4NX2ETSagq4GjEC+sHCEqdcYvL+CY=";
95     })
96   ];
98   # Ardour's wscript requires git revision and date to be available.
99   # Since they are not, let's generate the file manually.
100   postPatch = ''
101     printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc
102     sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
103     patchShebangs ./tools/
104     substituteInPlace libs/ardour/video_tools_paths.cc \
105       --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \
106       --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");'
107   '';
109   nativeBuildInputs = [
110     doxygen
111     graphviz # for dot
112     itstool
113     makeWrapper
114     perl
115     pkg-config
116     python3
117     wafHook
118   ];
120   buildInputs = [
121     alsa-lib
122     aubio
123     boost
124     cairomm
125     cppunit
126     curl
127     dbus
128     ffmpeg
129     fftw
130     fftwSinglePrec
131     flac
132     glibmm
133     gtkmm2
134     itstool
135     libarchive
136     libjack2
137     liblo
138     libogg
139     libpulseaudio
140     librdf_raptor
141     librdf_rasqal
142     libsamplerate
143     libsigcxx
144     libsndfile
145     libusb1
146     libuv
147     libwebsockets
148     libxml2
149     libxslt
150     lilv
151     lrdf
152     lv2
153     pango
154     perl
155     python3
156     readline
157     rubberband
158     serd
159     sord
160     soundtouch
161     sratom
162     suil
163     taglib
164     vamp-plugin-sdk
165   ] ++ lib.optionals videoSupport [ harvid xjadeo ];
167   wafConfigureFlags = [
168     "--cxx11"
169     "--docs"
170     "--freedesktop"
171     "--no-phone-home"
172     "--optimize"
173     "--ptformat"
174     "--run-tests"
175     "--test"
176   ];
177   # removed because it fixes https://tracker.ardour.org/view.php?id=8161 and https://tracker.ardour.org/view.php?id=8437
178   # "--use-external-libs"
180   postInstall = ''
181     # wscript does not install these for some reason
182     install -vDm 644 "build/gtk2_ardour/ardour.xml" \
183       -t "$out/share/mime/packages"
184     install -vDm 644 "build/gtk2_ardour/ardour${lib.versions.major version}.desktop" \
185       -t "$out/share/applications"
186     for size in 16 22 32 48 256 512; do
187       install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \
188         "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour${lib.versions.major version}.png"
189     done
190     install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
192     # install additional bundled beats, chords and progressions
193     cp -rp "${bundledContent}"/* "$out/share/ardour${lib.versions.major version}/media"
194   '' + lib.optionalString videoSupport ''
195     # `harvid` and `xjadeo` must be accessible in `PATH` for video to work.
196     wrapProgram "$out/bin/ardour${lib.versions.major version}" \
197       --prefix PATH : "${lib.makeBinPath [ harvid xjadeo ]}"
198   '';
200   LINKFLAGS = "-lpthread";
202   meta = with lib; {
203     description = "Multi-track hard disk recording software";
204     longDescription = ''
205       Ardour is a digital audio workstation (DAW), You can use it to
206       record, edit and mix multi-track audio and midi. Produce your
207       own CDs. Mix video soundtracks. Experiment with new ideas about
208       music and sound.
210       Please consider supporting the ardour project financially:
211       https://community.ardour.org/donate
212     '';
213     homepage = "https://ardour.org/";
214     license = licenses.gpl2Plus;
215     mainProgram = "ardour7";
216     platforms = platforms.linux;
217     maintainers = with maintainers; [ magnetophon mitchmindtree ];
218   };