https://github.com/audacity/audacity/releases/tag/Audacity-2.3.1 Linux support restored in this update https://www.audacityteam.org/audacity-2-3-1-released/
This release requires a new portaudio snapshot first.
Created attachment 568566 [details] audacity-2.3.1.ebuild Alright, added updated portaudio to the tree but now compilation of audacity-2.3.1 fails: x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -std=c++11 -Wno-deprecated-declarations -D__STDC_CONSTANT_MACROS -DWXINTL_NO_GETTEXT_MACRO -DLIBDIR=\"/usr/lib64\" -pthread -I../lib-src/lib-widget-extra -I/usr/lib64/wx/include/gtk2-unic ode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -I/usr/include/soundtouch -I/usr/lib64/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WX GTK__ -pthread -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/l ibpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -Wno-unused-local-typedefs -I../lib-src/portmixer/include -march=native -mtune=native -O2 -pipe -std=gnu++11 -DwxDEBUG_LEVEL=0 --std=gnu++11 -Wall -I../include -I../lib-src/FileDialog -c -o audacity-DirManager.o `test -f 'DirManager.cpp' || echo './'`DirManager.cpp In file included from effects/Effect.h:42, from effects/EffectManager.h:26, from Project.h:31, from DirManager.cpp:103: effects/../Track.h:122:37: error: ‘Note’ is not a member of ‘TrackKind’ Pair<NoteTrack, TrackKind::Note>, ^~~~ effects/../Track.h:122:37: error: ‘Note’ is not a member of ‘TrackKind’ effects/../Track.h:122:41: error: template argument 2 is invalid Pair<NoteTrack, TrackKind::Note>, ^ effects/../Track.h:126:4: error: template argument 5 is invalid >; ^ effects/../Track.h: In function ‘constexpr TrackKind track_kind()’: effects/../Track.h:145:64: error: ‘List’ was not declared in this scope return Lookup< typename std::remove_const<TrackType>::type, List >::value(); ^~~~ effects/../Track.h:145:64: note: suggested alternative: ‘wxList’ return Lookup< typename std::remove_const<TrackType>::type, List >::value(); ^~~~ wxList effects/../Track.h:145:69: error: template argument 2 is invalid return Lookup< typename std::remove_const<TrackType>::type, List >::value(); ^ effects/../Track.h: In instantiation of ‘constexpr TrackKind track_kind() [with TrackType = const Track]’: effects/../Track.h:807:50: required from ‘typename std::enable_if<std::is_pointer<_Tp>::value, T>::type track_cast(Track*) [with T = const Track*; typename std::enable_if<std::is_pointer<_Tp>::value, T>::type = const Track*]’ effects/../Track.h:980:52: required from ‘bool TrackIter<TrackType>::valid() const [with TrackType = const Track]’ effects/../Track.h:866:47: required from ‘TrackIter<TrackType>::TrackIter(TrackNodePointer, TrackNodePointer, TrackNodePointer, const Predicate&) [with Predicate = std::function<bool(const Track*)>; TrackType = const Track; TrackNodePointer = std::pair<std::_List_iterator<std::shared_ptr<Track> >, std::__cxx11::list<std::shared_ptr<Track> >*>]’ effects/../Track.h:891:67: required from ‘typename std::enable_if<(std::is_base_of<_Tp, _Up>::value && ((! std::is_const<_Tp>::value) || std::is_const<TrackType2>::value)), TrackIter<TrackType2> >::type TrackIter<TrackType>::Filter() const [with TrackType2 = const Track; TrackType = Track; typename std::enable_if<(std::is_base_of<_Tp, _Up>::value && ((! std::is_const<_Tp>::value) || std::is_const<TrackType2>::value)), TrackIter<TrackType2> >::type = TrackIter<const Track>]’ effects/../Track.h:1243:73: required from here effects/../Track.h:146:1: error: body of ‘constexpr’ function ‘constexpr TrackKind track_kind() [with TrackType = const Track]’ not a return-statement } ^ effects/../Track.h: In instantiation of ‘constexpr TrackKind track_kind() [with TrackType = Track]’: effects/../Track.h:807:50: required from ‘typename std::enable_if<std::is_pointer<_Tp>::value, T>::type track_cast(Track*) [with T = Track*; typename std::enable_if<std::is_pointer<_Tp>::value, T>::type = Track*]’ effects/../Track.h:980:52: required from ‘bool TrackIter<TrackType>::valid() const [with TrackType = Track]’ effects/../Track.h:866:47: required from ‘TrackIter<TrackType>::TrackIter(TrackNodePointer, TrackNodePointer, TrackNodePointer, const Predicate&) [with Predicate = std::function<bool(const Track*)>; TrackType = Track; TrackNodePointer = std::pair<std::_List_iterator<std::shared_ptr<Track> >, std::__cxx11::list<std::shared_ptr<Track> >*>]’ effects/../Track.h:1475:53: required from ‘TrackIterRange<TrackType> TrackList::Tracks(const Pred&) [with TrackType = Track; Pred = std::function<bool(const Track*)>]’ effects/../Track.h:1251:34: required from ‘TrackIterRange<TrackType> TrackList::Any() [with TrackType = Track]’ effects/../Track.h:1202:34: required from here effects/../Track.h:146:1: error: body of ‘constexpr’ function ‘constexpr TrackKind track_kind() [with TrackType = Track]’ not a return-statement make[2]: *** [Makefile:2999: audacity-DirManager.o] Error 1 make[2]: Leaving directory '/var/tmp/portage/media-sound/audacity-2.3.1/work/audacity-Audacity-2.3.1/src' make[1]: *** [Makefile:1635: all] Error 2 make[1]: Leaving directory '/var/tmp/portage/media-sound/audacity-2.3.1/work/audacity-Audacity-2.3.1/src' make: *** [Makefile:811: all-recursive] Error 1 * ERROR: media-sound/audacity-2.3.1::gentoo failed (compile phase): * emake failed Any help is appreciated.
https://wiki.audacityteam.org/wiki/Building_On_Linux never mention we need portaudio???
(In reply to Michal Plichta from comment #3) > https://wiki.audacityteam.org/wiki/Building_On_Linux never mention we need > portaudio??? Because they bundle lots of libs in their source tarballs but Gentoo discourages usage of bundled libs for security reasons.
I’ve also looked a little bit into it and noticed, that the portaudio patch you applied was already present in 2.2.2, which did not break compilation. So the root cause has to be somewhere else. At least we now know one more place, where nothing is to be found. ;)
audacity-2.3.2 fails with the same error message. Still, any help is highly appreciated.
Apparently Audacity does not compile without the USE_MIDI macro being defined. USE_MIDI is not getting defined, because portSMF is disabled: ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --disable-silent-rules --docdir=/usr/share/doc/audacity-2.3.2 --htmldir=/usr/share/doc/audacity-2.3.2/html --libdir=/usr/lib64 --disable-dynamic-loading --enable-nyquist --enable-unicode --with-lib-preference=system --with-portaudio --with-widgetextra=local --with-wx-version=3.0 --enable-sse --enable-ladspa --disable-nls --enable-vst --with-ffmpeg --with-libflac --with-libid3tag --with-lame --with-lv2 --with-libmad --with-midi --with-sbsms --with-soundtouch --without-libtwolame --without-libvamp --with-libvorbis --with-portmixer --with-mod-script-pipe --with-mod-nyq-bench ... checking for PORTSMF... no configure: portSMF library is NOT available as system library checking for ./lib-src/portsmf/allegro.h... yes configure: portSMF library is available in the local tree ... PORTSMF: disabled ... Given --with-lib-preference=system this is seems to be expected behavior. There is no portSMF pkg-config file on the system.
In order to build audacity, here are the USE flags being set here for eons, since 2.2.x at least, likely be older but emerge.log got reset: media-sound/audacity +lame media-sound/audacity +midi media-sound/audacity +portmixer media-sound/audacity +soundtouch The + is set here to emphasize USE flags technically required to build. 2.3.2 builds fine here. Maybe an unstable ebuild could be released forcing these, or any other appropriate configuration. This is nothing but my two cents, that may fit some users.
Thanks for working on this
Created attachment 585228 [details] audacity-2.3.2.ebuild (WIP) Current work in progress ebuild. I still have trouble compiling audacity against our system-portaudio. I suppose we still haven't sufficiently patched our system-portaudio for audacity. Patches or hints what needs to be fixed are highly welcome!
(In reply to Jaak Ristioja from comment #7) > Apparently Audacity does not compile without the USE_MIDI macro being > defined. USE_MIDI is not getting defined, because portSMF is disabled: > > ... > > Given --with-lib-preference=system this is seems to be expected behavior. > There is no portSMF pkg-config file on the system. There are two different midi-related configure options: --with-midi=system : requires portsmf, which is currently not in the gentoo repo; --with-portmidi=system : requires media-libs/portmidi and pkg-config file "portmidi.pc", which is not provided by upstream and exists only in bundled portmidi in audacity source tree. So we cannot currently build Audacity against system midi libraries and the following part of ebuild is incorrect: midi? ( media-libs/portmidi ) ... $(use_with midi)
Created attachment 588238 [details] audacity-2.3.2-Fix-building-against-system-portaudio.patch Debian patch
Created attachment 588240 [details] audacity-2.3.2.ebuild - fixed building against system portaudio; - fixed dependency on media-libs/portaudio ([alsa?]); - temporary switched to bundled portmidi and portsmf until we decide what to do with them.
(In reply to Lars Wendler (Polynomial-C) from comment #2) I can reproduce this with USE=-midi. Looks like some ifdefs (USE_MIDI and/or EXPERIMENTAL_MIDI_OUT) are missing (similar to bug 637110). I'm still investigating.
Created attachment 588242 [details] audacity-2.3.2-Fix-building-without-midi.patch I'll submit PR upstream when find time to test these changes against git master (most likely src/menus/FileMenus.cpp is already fixed here).
Created attachment 588244 [details] audacity-2.3.2.ebuild Fixed building with USE=-midi EXPERIMENTAL_MIDI_OUT depends on USE_MIDI and must be commented out in src/Experimental.h with USE=-midi
TODO: - bump to EAPI=7 - what to do with portsmf and portmidi?
Created attachment 588266 [details] audacity-2.3.2.ebuild - EAPI=7 - drop REQUIRED_USE and don't enable midi use-flag by default - add missing lv2 dependencies - explicitly request system libraries
Created attachment 588274 [details] audacity-2.3.2-Fix-building-without-midi.patch
Created attachment 588402 [details] audacity-2.3.2.ebuild Pass --with-lib-preference=system to configure instead of specifying it for each option (default is "system local").
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e6b9364ffd66913edfbf0276653a7f881ca4bde6 commit e6b9364ffd66913edfbf0276653a7f881ca4bde6 Author: Alexander Tsoy <alexander@tsoy.me> AuthorDate: 2019-08-28 07:43:54 +0000 Commit: Lars Wendler <polynomial-c@gentoo.org> CommitDate: 2019-08-28 07:44:43 +0000 media-sound/audacity: Bump to version 2.3.2 Closes: https://bugs.gentoo.org/680028 Package-Manager: Portage-2.3.73, Repoman-2.3.17 Signed-off-by: Lars Wendler <polynomial-c@gentoo.org> media-sound/audacity/Manifest | 2 + media-sound/audacity/audacity-2.3.2.ebuild | 141 +++++++++++++++++++++ .../audacity-2.3.2-Fix-building-without-midi.patch | 71 +++++++++++ ...3.2-fix_building_against_system_portaudio.patch | 56 ++++++++ 4 files changed, 270 insertions(+)
Has anyone seen this?: Making all in portmixer make[2]: Entering directory '/var/tmp/portage/media-sound/audacity-2.3.2/work/audacity-Audacity-2.3.2/lib-src/portmixer' make[2]: *** No rule to make target 'all'. Stop. make[2]: Leaving directory '/var/tmp/portage/media-sound/audacity-2.3.2/work/audacity-Audacity-2.3.2/lib-src/portmixer' make[1]: *** [Makefile:1014: all-recursive] Error 1 make[1]: Leaving directory '/var/tmp/portage/media-sound/audacity-2.3.2/work/audacity-Audacity-2.3.2/lib-src' make: *** [Makefile:812: all-recursive] Error 1 * ERROR: media-sound/audacity-2.3.2::gentoo failed (compile phase): * emake failed If I look in lib-src/portmixer, I see a Makefile.am and Makefile.in but no Makefile.
(In reply to Matt Whitlock from comment #22) Yes, I can reproduce this with USE=-portmixer. The problem is in lib-src/Makefile.am, which is unconditionally includes portmixer subdir. And this is not a regression AFAIS.
(In reply to Alexander Tsoy from comment #23) > (In reply to Matt Whitlock from comment #22) > Yes, I can reproduce this with USE=-portmixer. The problem is in > lib-src/Makefile.am, which is unconditionally includes portmixer subdir. And > this is not a regression AFAIS. I have 2.2.2 installed with USE="-portmixer". I guess I'll take a look at producing a patch for this next week. (Won't be the first time I'll have dug into Audacity to fix build failures. Upstream isn't very thorough about testing their configure options.)
(In reply to Matt Whitlock from comment #24) > I guess I'll take a look at producing a patch for this next week. See bug #694122.