Discussion:
[Audacity-devel] Linux build instructions in a mess
James Crook
2017-07-23 13:36:55 UTC
Permalink
I think we need to sort out our linux build instructions!
This is what we currently have:

https://github.com/audacity/audacity/blob/7156479d11d24f2426298cb59c19615b54feac9f/INSTALL


I think we should be mentioning our repo for patched wxWidgets as
(surely?) it won't work as is.
These are the instructions I use:

http://wiki.audacityteam.org/wiki/User:James/Building_on_Ubuntu

I think we should also modify our set up so that configure chooses
"local system" by default, and -std=gnu++11 by default.

I work on Windows, and occasionally build on Ubuntu, but not other
linuxes, so I would like it that someone who knows autotools and knows
what they are doing does the updates.

--James.
Paul Licameli
2017-07-24 01:06:01 UTC
Permalink
Post by James Crook
I think we need to sort out our linux build instructions!
https://github.com/audacity/audacity/blob/7156479d11d24f2426
298cb59c19615b54feac9f/INSTALL
I think we should be mentioning our repo for patched wxWidgets as
(surely?) it won't work as is.
http://wiki.audacityteam.org/wiki/User:James/Building_on_Ubuntu
I think we should also modify our set up so that configure chooses "local
system" by default, and -std=gnu++11 by default.
I work on Windows, and occasionally build on Ubuntu, but not other
linuxes, so I would like it that someone who knows autotools and knows what
they are doing does the updates.
--James.
I mentioned lately too that the Mac build instructions should probably be
updated. Don't mention the .patch files, and remove them from our source
code tree. Let our fork of wxWidgets be the source.

Agreed?

PRL
Post by James Crook
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Cliff Scott
2017-07-24 01:27:39 UTC
Permalink
Post by James Crook
I think we need to sort out our linux build instructions!
https://github.com/audacity/audacity/blob/7156479d11d24f2426298cb59c19615b54feac9f/INSTALL <https://github.com/audacity/audacity/blob/7156479d11d24f2426298cb59c19615b54feac9f/INSTALL>
I think we should be mentioning our repo for patched wxWidgets as (surely?) it won't work as is.
http://wiki.audacityteam.org/wiki/User:James/Building_on_Ubuntu <http://wiki.audacityteam.org/wiki/User:James/Building_on_Ubuntu>
I think we should also modify our set up so that configure chooses "local system" by default, and -std=gnu++11 by default.
I work on Windows, and occasionally build on Ubuntu, but not other linuxes, so I would like it that someone who knows autotools and knows what they are doing does the updates.
--James.
I mentioned lately too that the Mac build instructions should probably be updated. Don't mention the .patch files, and remove them from our source code tree. Let our fork of wxWidgets be the source.
Agreed?
Seems as if that would simplify things so +1

Cliff
Post by James Crook
PRL
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel <https://lists.sourceforge.net/lists/listinfo/audacity-devel>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Steve the Fiddle
2017-07-24 03:06:46 UTC
Permalink
Post by Paul Licameli
Post by James Crook
I think we need to sort out our linux build instructions!
https://github.com/audacity/audacity/blob/7156479d11d24f2426298cb59c19615b54feac9f/INSTALL
I think we should be mentioning our repo for patched wxWidgets as
(surely?) it won't work as is.
Audacity builds fine on Ubuntu with the standard wxgtk3 package.
Post by Paul Licameli
Post by James Crook
http://wiki.audacityteam.org/wiki/User:James/Building_on_Ubuntu
but there's no mention of dependencies that are not part of the
standard Desktop Ubuntu.

More up to date detailed instructions are available on the forum:
https://forum.audacityteam.org/viewforum.php?f=19

The most recent "almost complete" instructions are here:
https://forum.audacityteam.org/viewtopic.php?f=19&t=96525
I've not yet got FFmpeg working, which I suspect may require building
against system ffmpeg libraries (see also below).
Post by Paul Licameli
Post by James Crook
I think we should also modify our set up so that configure chooses "local
system" by default,
I don't know what (if any) implications that has for package
maintainers, but Audacity does not build with the system portaudio
library on Ubuntu 16.04 LTS, so my most recent instructions use:

../configure --disable-dynamic-loading --with-lib-preference="local system"

--disable-dynamic-loading allowed ffmpeg to work on Ubuntu 16.04 (last
tested a few days ago), but that's not working for me today with
Ubuntu 17.04. Audacity is building, but I'm still getting the
"Libraries" preference even with --disable-dynamic-loading

Steve
Post by Paul Licameli
Post by James Crook
and -std=gnu++11 by default.
I work on Windows, and occasionally build on Ubuntu, but not other
linuxes, so I would like it that someone who knows autotools and knows what
they are doing does the updates.
--James.
I mentioned lately too that the Mac build instructions should probably be
updated. Don't mention the .patch files, and remove them from our source
code tree. Let our fork of wxWidgets be the source.
Agreed?
Seems as if that would simplify things so +1
Cliff
PRL
Post by James Crook
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org!
http://sdm.link/slashdot_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Steve the Fiddle
2017-07-24 12:53:07 UTC
Permalink
Post by Steve the Fiddle
Post by Paul Licameli
Post by James Crook
I think we need to sort out our linux build instructions!
https://github.com/audacity/audacity/blob/7156479d11d24f2426298cb59c19615b54feac9f/INSTALL
I think we should be mentioning our repo for patched wxWidgets as
(surely?) it won't work as is.
Audacity builds fine on Ubuntu with the standard wxgtk3 package.
Post by Paul Licameli
Post by James Crook
http://wiki.audacityteam.org/wiki/User:James/Building_on_Ubuntu
but there's no mention of dependencies that are not part of the
standard Desktop Ubuntu.
https://forum.audacityteam.org/viewforum.php?f=19
https://forum.audacityteam.org/viewtopic.php?f=19&t=96525
I've not yet got FFmpeg working, which I suspect may require building
against system ffmpeg libraries (see also below).
Post by Paul Licameli
Post by James Crook
I think we should also modify our set up so that configure chooses "local
system" by default,
Why?
We currently need to build against our local portaudio library, at
least on Ubuntu 16.04, but I've not noticed problems with system
libraries elsewhere.

Isn't there a risk that if we build against local libraries that there
could be compatibility problems with installed system libraries? That
certainly appears to be the case for ffmpeg (see below).
Post by Steve the Fiddle
I don't know what (if any) implications that has for package
maintainers, but Audacity does not build with the system portaudio
../configure --disable-dynamic-loading --with-lib-preference="local system"
--disable-dynamic-loading allowed ffmpeg to work on Ubuntu 16.04 (last
tested a few days ago), but that's not working for me today with
Ubuntu 17.04. Audacity is building, but I'm still getting the
"Libraries" preference even with --disable-dynamic-loading
I've now got ffmpeg working on Ubuntu 17.04.
The "--disable-dynamic-loading" switch is not required, but Audacity
must be built against system ffmpeg libraries.

I think that installing dependencies for Audacity on Ubuntu 17.04 can
be simplified from my current instructions now that I've got my
sources.list fixed. It'll take a bit of time to check because I will
need to reinstall vanilla Ubuntu.

Steve
Post by Steve the Fiddle
Steve
Post by Paul Licameli
Post by James Crook
and -std=gnu++11 by default.
I work on Windows, and occasionally build on Ubuntu, but not other
linuxes, so I would like it that someone who knows autotools and knows what
they are doing does the updates.
--James.
I mentioned lately too that the Mac build instructions should probably be
updated. Don't mention the .patch files, and remove them from our source
code tree. Let our fork of wxWidgets be the source.
Agreed?
Seems as if that would simplify things so +1
Cliff
PRL
James Crook
2017-07-24 14:33:23 UTC
Permalink
Post by Steve the Fiddle
Post by James Crook
I think we should also modify our set up so that configure chooses
"local system" by default,
Why?
We currently need to build against our local portaudio library, at
least on Ubuntu 16.04, but I've not noticed problems with system
libraries elsewhere.
Isn't there a risk that if we build against local libraries that there
could be compatibility problems with installed system libraries? That
certainly appears to be the case for ffmpeg (see below).
I can't build ffmpeg with system libs. I can't build with system
portaudio. I'm expecting that disabling dynamic linking (of wxwidgets)
prevents use of mod-xxx plug-ins like mod-nyqbench. I've lost track of
exactly what libs we've patched, but I think it is more than portaudio.

Also we know we only work with some versions of ffmpeg, and that
probably holds for other libs too.

So I guessed that the most reliable way to build multiplatform is to use
our own copy of the libs.

A better solution would be if configure would make 'the right choices',
but I think that needs more autotools foo than we (certainly than I)
have. So that's why. I'm certainly open to any better solution. I do
know that our instructions for building on linux need some work, and
that was my main point.

--James.
Steve the Fiddle
2017-07-24 14:55:48 UTC
Permalink
Post by Steve the Fiddle
Post by James Crook
I think we should also modify our set up so that configure chooses "local
system" by default,
Why?
We currently need to build against our local portaudio library, at
least on Ubuntu 16.04, but I've not noticed problems with system
libraries elsewhere.
Isn't there a risk that if we build against local libraries that there
could be compatibility problems with installed system libraries? That
certainly appears to be the case for ffmpeg (see below).
I can't build ffmpeg with system libs. I can't build with system portaudio.
Which version of Ubuntu are you using?
With Xubuntu 16.04, these instructions work for me with one modification:
https://forum.audacityteam.org/viewtopic.php?f=19&t=88922

The modification: add "--with-portaudio=local" to the configure command:
../configure --disable-dynamic-loading --with-portaudio=local
I'm expecting that disabling dynamic linking (of wxwidgets) prevents use of
mod-xxx plug-ins like mod-nyqbench.
No. Nyquist Workbench still works.
I've lost track of exactly what libs
we've patched, but I think it is more than portaudio.
Also we know we only work with some versions of ffmpeg, and that probably
holds for other libs too.
So I guessed that the most reliable way to build multiplatform is to use our
own copy of the libs.
A better solution would be if configure would make 'the right choices', but
I think that needs more autotools foo than we (certainly than I) have.
Could Benjamin be persuaded to give a hand? He's still listed on both
the Debian and Ubuntu package maintainers lists.
What about Richard Ash?

Steve
So
that's why. I'm certainly open to any better solution. I do know that our
instructions for building on linux need some work, and that was my main
point.
--James.
James Crook
2017-07-24 15:06:59 UTC
Permalink
Post by Steve the Fiddle
Post by Steve the Fiddle
Post by James Crook
I think we should also modify our set up so that configure chooses "local
system" by default,
Why?
We currently need to build against our local portaudio library, at
least on Ubuntu 16.04, but I've not noticed problems with system
libraries elsewhere.
Isn't there a risk that if we build against local libraries that there
could be compatibility problems with installed system libraries? That
certainly appears to be the case for ffmpeg (see below).
I can't build ffmpeg with system libs. I can't build with system portaudio.
Which version of Ubuntu are you using?
14.04, with an updated gcc.

--James.
Steve the Fiddle
2017-07-24 15:43:18 UTC
Permalink
Post by James Crook
Post by Steve the Fiddle
Post by Steve the Fiddle
Post by James Crook
I think we should also modify our set up so that configure chooses "local
system" by default,
Why?
We currently need to build against our local portaudio library, at
least on Ubuntu 16.04, but I've not noticed problems with system
libraries elsewhere.
Isn't there a risk that if we build against local libraries that there
could be compatibility problems with installed system libraries? That
certainly appears to be the case for ffmpeg (see below).
I can't build ffmpeg with system libs. I can't build with system portaudio.
Which version of Ubuntu are you using?
14.04, with an updated gcc.
That's a bit long in the tooth (even though still a supported version).
If I recall correctly, 14.04 did not have FFmpeg in the official repositories.

Steve
Post by James Crook
--James.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
James Crook
2017-07-24 16:08:54 UTC
Permalink
Post by Steve the Fiddle
Post by James Crook
Post by Steve the Fiddle
Post by Steve the Fiddle
Post by James Crook
I think we should also modify our set up so that configure chooses "local
system" by default,
Why?
We currently need to build against our local portaudio library, at
least on Ubuntu 16.04, but I've not noticed problems with system
libraries elsewhere.
Isn't there a risk that if we build against local libraries that there
could be compatibility problems with installed system libraries? That
certainly appears to be the case for ffmpeg (see below).
I can't build ffmpeg with system libs. I can't build with system portaudio.
Which version of Ubuntu are you using?
14.04, with an updated gcc.
That's a bit long in the tooth (even though still a supported version).
Then you and I are very long indeed in the tooth. It was only released
in 2014.
It's LTS and supported out into 2019. We could agree to drop support
for it, I suppose, if supporting it is and will be causing a lot of
problems. But that begs the question, which versions of Linux do we
support?
Post by Steve the Fiddle
If I recall correctly, 14.04 did not have FFmpeg in the official repositories.
Steve
Steve the Fiddle
2017-07-24 16:28:42 UTC
Permalink
Post by Steve the Fiddle
Post by James Crook
Post by Steve the Fiddle
Post by Steve the Fiddle
Post by James Crook
I think we should also modify our set up so that configure chooses "local
system" by default,
Why?
We currently need to build against our local portaudio library, at
least on Ubuntu 16.04, but I've not noticed problems with system
libraries elsewhere.
Isn't there a risk that if we build against local libraries that there
could be compatibility problems with installed system libraries? That
certainly appears to be the case for ffmpeg (see below).
I can't build ffmpeg with system libs. I can't build with system portaudio.
Which version of Ubuntu are you using?
14.04, with an updated gcc.
That's a bit long in the tooth (even though still a supported version).
Then you and I are very long indeed in the tooth. It was only released in
2014.
It's LTS and supported out into 2019. We could agree to drop support for
it, I suppose, if supporting it is and will be causing a lot of problems.
But that begs the question, which versions of Linux do we support?
No, I agree that we should officially support Ubuntu 14.04 LTS, though
perhaps prioritise more recent LTS versions. I think that it's
reasonable to assume that users that are particularly concerned about
having the most up to date software will have updated to a more recent
Ubuntu release.

I've had ffmpeg working on 14.04 with Audacity 2.1.2, so I'd guess
that it should also be possible with 2.2.0, though it may require a
bit of massaging. I don't have time to do that right now.

Steve
Post by Steve the Fiddle
If I recall correctly, 14.04 did not have FFmpeg in the official repositories.
Steve
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Darrell Walisser
2017-07-24 18:08:41 UTC
Permalink
This post might be inappropriate. Click to display it.
James Crook
2017-07-24 19:41:19 UTC
Permalink
Post by James Crook
and -std=gnu++11 by default.
-std=gnu++11 is no longer needed, it's in the current configure script.
Thanks! I updated INSTALL so it no longer says to pass in CXXFLAGS and
also updated on wiki.
It would be good to include instructions for getting a compatible
FFmpeg/libav version from source as well. I've always used the current git
version installed in /usr/local. If someone can point me in the right
direction (what exactly are the compatible versions?) I can hack some
autoconf foo for it.
Anyone?

--James.
Steve the Fiddle
2017-07-24 20:03:29 UTC
Permalink
Post by James Crook
and -std=gnu++11 by default.
-std=gnu++11 is no longer needed, it's in the current configure script.
Thanks! I updated INSTALL so it no longer says to pass in CXXFLAGS and also
updated on wiki.
It would be good to include instructions for getting a compatible
FFmpeg/libav version from source as well. I've always used the current git
version installed in /usr/local. If someone can point me in the right
direction (what exactly are the compatible versions?) I can hack some
autoconf foo for it.
Anyone?
It depends on the distribution / version.

I have just tested with a fully updated vanilla install of Ubuntu
17.04 LTS, and written up detailed notes here:
https://forum.audacityteam.org/viewtopic.php?f=19&t=96525

Building and installing was very straightforward, using system
libraries where available _except_for_portaudio_ and everything,
including FFmpeg works straight out of the box.

On Ubuntu 16.04 LTS, the standard Ubuntu repository version works
_provided_that_ Audacity is build with system libraries and Audacity
is configured with the
"--disable-dynamic-loading" option.

Steve
--James.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
audacity-devel mailing list
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Darrell Walisser
2017-07-25 00:43:27 UTC
Permalink
Post by Steve the Fiddle
Post by James Crook
Post by James Crook
and -std=gnu++11 by default.
-std=gnu++11 is no longer needed, it's in the current configure script.
Thanks! I updated INSTALL so it no longer says to pass in CXXFLAGS and
also
Post by James Crook
updated on wiki.
It would be good to include instructions for getting a compatible
FFmpeg/libav version from source as well. I've always used the current
git
Post by James Crook
version installed in /usr/local. If someone can point me in the right
direction (what exactly are the compatible versions?) I can hack some
autoconf foo for it.
Anyone?
It depends on the distribution / version.
I have just tested with a fully updated vanilla install of Ubuntu
https://forum.audacityteam.org/viewtopic.php?f=19&t=96525
Building and installing was very straightforward, using system
libraries where available _except_for_portaudio_ and everything,
including FFmpeg works straight out of the box.
​This makes sense, 17.04 gives you a much newer version of Libav.
Post by Steve the Fiddle
On Ubuntu 16.04 LTS, the standard Ubuntu repository version works
_provided_that_ Audacity is build with system libraries and Audacity
is configured with the
"--disable-dynamic-loading" option.
I just checked my 16.04 machine and I have libavutil52, libavutil54, and
libavutil-ffmpeg54 as choices. If Audacity compiled against the v54 headers
it would not be able to load the v52 lib due to the conditional code in
FFmpeg.h which appears to pivot about v53.

It seems to me --disable-dynamic-loading should be the default on Linux.
The distros that include an Audacity package, are probably already doing
this? Developers/power users probably want this if they are compiling from
source. We don't supply a binary for Linux as in other platforms.
Loading...