bug 889 EXPERIMENTAL_MIDI_OUT

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

bug 889 EXPERIMENTAL_MIDI_OUT

Stevethefiddle
Moved to -devel to reduce clutter in bugzilla thread.

Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6

"If you're building it with the local version (or via
--with-portaudio=local) then it should fix it."

I've been removing the system version of portaudio19-dev before
building Audacity, and that has been working for a while.

I'd forgotten about "--with-portaudio=local" but tried that now and
pleased to say that works. Nevertheless, I expect that distro
maintainers would be happier if Audacity built using the system
version. Do we have any ideas why it doesn't?


Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7

"I don't know what errors Steve got from a system version"

The error is:

"audacity-AudioIO.o: In function `AudioIO::MidiTime()':
/audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference to
`PaUtil_GetTime'
collect2: error: ld returned 1 exit status
Makefile:2350: recipe for target 'audacity' failed'"


Paul wrote:

"What are the steps to determine if you have a system version?"

From  a terminal:
sudo dpkg -L portaudio19-dev

If portaudio19-dev is installed, its location will be given. If it's
not installed, it will tell you that the package is not installed.

Also, at the end of running configure (building Audacity), the
terminal output list various libraries like this:

Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBSBSMS: using LOCAL libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: using SYSTEM libraries
LIBTWOLAME: using SYSTEM libraries
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
PORTMIDI: using LOCAL libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr/local/

Run 'configure --help' for an explanation of these options,
otherwise run 'make' to build Audacity.


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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: bug 889 EXPERIMENTAL_MIDI_OUT

Pokechu22
The problem, as I understand it, is that portaudio is sometimes compiled as C++, and sometimes as C; this changes how you can link to it.  While PRL's fixed that for the local version, we don't know whether the system version was compiled as C or C++.  This could probably be resolved with a define and checking for C linkage, using C++ linkage if that fails (checking using automake, which I think can check linkage)

--Poke

On Tue, Jul 18, 2017 at 11:41 AM, Steve the Fiddle <[hidden email]> wrote:
Moved to -devel to reduce clutter in bugzilla thread.

Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6

"If you're building it with the local version (or via
--with-portaudio=local) then it should fix it."

I've been removing the system version of portaudio19-dev before
building Audacity, and that has been working for a while.

I'd forgotten about "--with-portaudio=local" but tried that now and
pleased to say that works. Nevertheless, I expect that distro
maintainers would be happier if Audacity built using the system
version. Do we have any ideas why it doesn't?


Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7

"I don't know what errors Steve got from a system version"

The error is:

"audacity-AudioIO.o: In function `AudioIO::MidiTime()':
/audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference to
`PaUtil_GetTime'
collect2: error: ld returned 1 exit status
Makefile:2350: recipe for target 'audacity' failed'"


Paul wrote:

"What are the steps to determine if you have a system version?"

From  a terminal:
sudo dpkg -L portaudio19-dev

If portaudio19-dev is installed, its location will be given. If it's
not installed, it will tell you that the package is not installed.

Also, at the end of running configure (building Audacity), the
terminal output list various libraries like this:

Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBSBSMS: using LOCAL libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: using SYSTEM libraries
LIBTWOLAME: using SYSTEM libraries
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
PORTMIDI: using LOCAL libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr/local/

Run 'configure --help' for an explanation of these options,
otherwise run 'make' to build Audacity.


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
[hidden email]
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: bug 889 EXPERIMENTAL_MIDI_OUT

Paul Licameli


On Tue, Jul 18, 2017 at 3:51 PM, Pokechu22 <[hidden email]> wrote:
The problem, as I understand it, is that portaudio is sometimes compiled as C++, and sometimes as C; this changes how you can link to it.  While PRL's fixed that for the local version, we don't know whether the system version was compiled as C or C++.  This could probably be resolved with a define and checking for C linkage, using C++ linkage if that fails (checking using automake, which I think can check linkage)

--Poke

On my Mac I can use the Unix nm command (your path will vary):

nm ~/Library/Developer/Xcode/DerivedData/Audacity-gkopfutijyptwegarpjfigjtokfb/Build/Products/Debug/libportaudio.a  | grep GetTime

 
Output may be system dependent, but try it, building first as C then as C++, and I think this may reveal a difference in the "mangling" of the symbol name when it is C++.

I have just discovered by experiment that on my Mac, with clang, you can still get away reverting commit 38fd97b8e26060332ab3e9e000a8882326a70ba7 and then building pa_unix_util.c as C++, because it makes no difference to the nm output, but that may not be so with g++.


PRL




On Tue, Jul 18, 2017 at 11:41 AM, Steve the Fiddle <[hidden email]> wrote:
Moved to -devel to reduce clutter in bugzilla thread.

Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6

"If you're building it with the local version (or via
--with-portaudio=local) then it should fix it."

I've been removing the system version of portaudio19-dev before
building Audacity, and that has been working for a while.

I'd forgotten about "--with-portaudio=local" but tried that now and
pleased to say that works. Nevertheless, I expect that distro
maintainers would be happier if Audacity built using the system
version. Do we have any ideas why it doesn't?


Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7

"I don't know what errors Steve got from a system version"

The error is:

"audacity-AudioIO.o: In function `AudioIO::MidiTime()':
/audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference to
`PaUtil_GetTime'
collect2: error: ld returned 1 exit status
Makefile:2350: recipe for target 'audacity' failed'"


Paul wrote:

"What are the steps to determine if you have a system version?"

From  a terminal:
sudo dpkg -L portaudio19-dev

If portaudio19-dev is installed, its location will be given. If it's
not installed, it will tell you that the package is not installed.

Also, at the end of running configure (building Audacity), the
terminal output list various libraries like this:

Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBSBSMS: using LOCAL libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: using SYSTEM libraries
LIBTWOLAME: using SYSTEM libraries
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
PORTMIDI: using LOCAL libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr/local/

Run 'configure --help' for an explanation of these options,
otherwise run 'make' to build Audacity.


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
[hidden email]
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
[hidden email]
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: bug 889 EXPERIMENTAL_MIDI_OUT

Pokechu22
I've tried a fix for this, where it'll instead attempt to link with the system version as both C and C++ in the checklib, and if it can link as C++ but not C it'll add a define.  Then we can attempt to link to either version.  I'm not 100% sure if it works, since my system version is actually too outdated to test, though (but I tested similar versions and those were fine).

--Poke

On Tue, Jul 18, 2017 at 2:09 PM, Paul Licameli <[hidden email]> wrote:


On Tue, Jul 18, 2017 at 3:51 PM, Pokechu22 <[hidden email]> wrote:
The problem, as I understand it, is that portaudio is sometimes compiled as C++, and sometimes as C; this changes how you can link to it.  While PRL's fixed that for the local version, we don't know whether the system version was compiled as C or C++.  This could probably be resolved with a define and checking for C linkage, using C++ linkage if that fails (checking using automake, which I think can check linkage)

--Poke

On my Mac I can use the Unix nm command (your path will vary):

nm ~/Library/Developer/Xcode/DerivedData/Audacity-gkopfutijyptwegarpjfigjtokfb/Build/Products/Debug/libportaudio.a  | grep GetTime

 
Output may be system dependent, but try it, building first as C then as C++, and I think this may reveal a difference in the "mangling" of the symbol name when it is C++.

I have just discovered by experiment that on my Mac, with clang, you can still get away reverting commit 38fd97b8e26060332ab3e9e000a8882326a70ba7 and then building pa_unix_util.c as C++, because it makes no difference to the nm output, but that may not be so with g++.


PRL




On Tue, Jul 18, 2017 at 11:41 AM, Steve the Fiddle <[hidden email]> wrote:
Moved to -devel to reduce clutter in bugzilla thread.

Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6

"If you're building it with the local version (or via
--with-portaudio=local) then it should fix it."

I've been removing the system version of portaudio19-dev before
building Audacity, and that has been working for a while.

I'd forgotten about "--with-portaudio=local" but tried that now and
pleased to say that works. Nevertheless, I expect that distro
maintainers would be happier if Audacity built using the system
version. Do we have any ideas why it doesn't?


Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7

"I don't know what errors Steve got from a system version"

The error is:

"audacity-AudioIO.o: In function `AudioIO::MidiTime()':
/audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference to
`PaUtil_GetTime'
collect2: error: ld returned 1 exit status
Makefile:2350: recipe for target 'audacity' failed'"


Paul wrote:

"What are the steps to determine if you have a system version?"

From  a terminal:
sudo dpkg -L portaudio19-dev

If portaudio19-dev is installed, its location will be given. If it's
not installed, it will tell you that the package is not installed.

Also, at the end of running configure (building Audacity), the
terminal output list various libraries like this:

Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBSBSMS: using LOCAL libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: using SYSTEM libraries
LIBTWOLAME: using SYSTEM libraries
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
PORTMIDI: using LOCAL libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr/local/

Run 'configure --help' for an explanation of these options,
otherwise run 'make' to build Audacity.


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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: bug 889 EXPERIMENTAL_MIDI_OUT

Paul Licameli


On Wed, Jul 19, 2017 at 1:15 PM, Pokechu22 <[hidden email]> wrote:
I've tried a fix for this, where it'll instead attempt to link with the system version as both C and C++ in the checklib, and if it can link as C++ but not C it'll add a define.  Then we can attempt to link to either version.  I'm not 100% sure if it works, since my system version is actually too outdated to test, though (but I tested similar versions and those were fine).

--Poke

Did you try my suggestions with nm? 

Where is this commit?

Is this really what we want?  Do we rather want the reassurance that we have a self-contained source code tree free of system dependencies?

PRL

 

On Tue, Jul 18, 2017 at 2:09 PM, Paul Licameli <[hidden email]> wrote:


On Tue, Jul 18, 2017 at 3:51 PM, Pokechu22 <[hidden email]> wrote:
The problem, as I understand it, is that portaudio is sometimes compiled as C++, and sometimes as C; this changes how you can link to it.  While PRL's fixed that for the local version, we don't know whether the system version was compiled as C or C++.  This could probably be resolved with a define and checking for C linkage, using C++ linkage if that fails (checking using automake, which I think can check linkage)

--Poke

On my Mac I can use the Unix nm command (your path will vary):

nm ~/Library/Developer/Xcode/DerivedData/Audacity-gkopfutijyptwegarpjfigjtokfb/Build/Products/Debug/libportaudio.a  | grep GetTime

 
Output may be system dependent, but try it, building first as C then as C++, and I think this may reveal a difference in the "mangling" of the symbol name when it is C++.

I have just discovered by experiment that on my Mac, with clang, you can still get away reverting commit 38fd97b8e26060332ab3e9e000a8882326a70ba7 and then building pa_unix_util.c as C++, because it makes no difference to the nm output, but that may not be so with g++.


PRL




On Tue, Jul 18, 2017 at 11:41 AM, Steve the Fiddle <[hidden email]> wrote:
Moved to -devel to reduce clutter in bugzilla thread.

Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6

"If you're building it with the local version (or via
--with-portaudio=local) then it should fix it."

I've been removing the system version of portaudio19-dev before
building Audacity, and that has been working for a while.

I'd forgotten about "--with-portaudio=local" but tried that now and
pleased to say that works. Nevertheless, I expect that distro
maintainers would be happier if Audacity built using the system
version. Do we have any ideas why it doesn't?


Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7

"I don't know what errors Steve got from a system version"

The error is:

"audacity-AudioIO.o: In function `AudioIO::MidiTime()':
/audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference to
`PaUtil_GetTime'
collect2: error: ld returned 1 exit status
Makefile:2350: recipe for target 'audacity' failed'"


Paul wrote:

"What are the steps to determine if you have a system version?"

From  a terminal:
sudo dpkg -L portaudio19-dev

If portaudio19-dev is installed, its location will be given. If it's
not installed, it will tell you that the package is not installed.

Also, at the end of running configure (building Audacity), the
terminal output list various libraries like this:

Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBSBSMS: using LOCAL libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: using SYSTEM libraries
LIBTWOLAME: using SYSTEM libraries
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
PORTMIDI: using LOCAL libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr/local/

Run 'configure --help' for an explanation of these options,
otherwise run 'make' to build Audacity.


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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: bug 889 EXPERIMENTAL_MIDI_OUT

Pokechu22
I should clarify: it checks the system version and uses if it can (but in more cases now), but if it can't, it still uses the local version.  It still requires changing the lib-src version to use extern "C", so that we have a consistent build there.

I've looked at it with nm before but I'm not entirely sure how to read the output, as at least on my machines the output both looked the same (no mangling at all was evident) other than the length of the number before (which I assume is a 32-bit/64-bit thing).

The commits in question are 62d5d8e8d (relates to portaudio automake) and 0cd6f761a (using the prior changes for including), though 059d3a503 (relates to portmidi automake) is also a prerequisite to that.
--Poke

On Wed, Jul 19, 2017 at 10:22 AM, Paul Licameli <[hidden email]> wrote:


On Wed, Jul 19, 2017 at 1:15 PM, Pokechu22 <[hidden email]> wrote:
I've tried a fix for this, where it'll instead attempt to link with the system version as both C and C++ in the checklib, and if it can link as C++ but not C it'll add a define.  Then we can attempt to link to either version.  I'm not 100% sure if it works, since my system version is actually too outdated to test, though (but I tested similar versions and those were fine).

--Poke

Did you try my suggestions with nm? 

Where is this commit?

Is this really what we want?  Do we rather want the reassurance that we have a self-contained source code tree free of system dependencies?

PRL

 

On Tue, Jul 18, 2017 at 2:09 PM, Paul Licameli <[hidden email]> wrote:


On Tue, Jul 18, 2017 at 3:51 PM, Pokechu22 <[hidden email]> wrote:
The problem, as I understand it, is that portaudio is sometimes compiled as C++, and sometimes as C; this changes how you can link to it.  While PRL's fixed that for the local version, we don't know whether the system version was compiled as C or C++.  This could probably be resolved with a define and checking for C linkage, using C++ linkage if that fails (checking using automake, which I think can check linkage)

--Poke

On my Mac I can use the Unix nm command (your path will vary):

nm ~/Library/Developer/Xcode/DerivedData/Audacity-gkopfutijyptwegarpjfigjtokfb/Build/Products/Debug/libportaudio.a  | grep GetTime

 
Output may be system dependent, but try it, building first as C then as C++, and I think this may reveal a difference in the "mangling" of the symbol name when it is C++.

I have just discovered by experiment that on my Mac, with clang, you can still get away reverting commit 38fd97b8e26060332ab3e9e000a8882326a70ba7 and then building pa_unix_util.c as C++, because it makes no difference to the nm output, but that may not be so with g++.


PRL




On Tue, Jul 18, 2017 at 11:41 AM, Steve the Fiddle <[hidden email]> wrote:
Moved to -devel to reduce clutter in bugzilla thread.

Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6

"If you're building it with the local version (or via
--with-portaudio=local) then it should fix it."

I've been removing the system version of portaudio19-dev before
building Audacity, and that has been working for a while.

I'd forgotten about "--with-portaudio=local" but tried that now and
pleased to say that works. Nevertheless, I expect that distro
maintainers would be happier if Audacity built using the system
version. Do we have any ideas why it doesn't?


Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7

"I don't know what errors Steve got from a system version"

The error is:

"audacity-AudioIO.o: In function `AudioIO::MidiTime()':
/audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference to
`PaUtil_GetTime'
collect2: error: ld returned 1 exit status
Makefile:2350: recipe for target 'audacity' failed'"


Paul wrote:

"What are the steps to determine if you have a system version?"

From  a terminal:
sudo dpkg -L portaudio19-dev

If portaudio19-dev is installed, its location will be given. If it's
not installed, it will tell you that the package is not installed.

Also, at the end of running configure (building Audacity), the
terminal output list various libraries like this:

Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBSBSMS: using LOCAL libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: using SYSTEM libraries
LIBTWOLAME: using SYSTEM libraries
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
PORTMIDI: using LOCAL libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr/local/

Run 'configure --help' for an explanation of these options,
otherwise run 'make' to build Audacity.


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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: bug 889 EXPERIMENTAL_MIDI_OUT

Paul Licameli


On Wed, Jul 19, 2017 at 1:30 PM, Pokechu22 <[hidden email]> wrote:
I should clarify: it checks the system version and uses if it can (but in more cases now), but if it can't, it still uses the local version.  It still requires changing the lib-src version to use extern "C", so that we have a consistent build there.

I've looked at it with nm before but I'm not entirely sure how to read the output, as at least on my machines the output both looked the same (no mangling at all was evident) other than the length of the number before (which I assume is a 32-bit/64-bit thing).

The commits in question are 62d5d8e8d (relates to portaudio automake) and 0cd6f761a (using the prior changes for including), though 059d3a503 (relates to portmidi automake) is also a prerequisite to that.
--Poke


Steve, will you test those commits and push them?

PRL

 
On Wed, Jul 19, 2017 at 10:22 AM, Paul Licameli <[hidden email]> wrote:


On Wed, Jul 19, 2017 at 1:15 PM, Pokechu22 <[hidden email]> wrote:
I've tried a fix for this, where it'll instead attempt to link with the system version as both C and C++ in the checklib, and if it can link as C++ but not C it'll add a define.  Then we can attempt to link to either version.  I'm not 100% sure if it works, since my system version is actually too outdated to test, though (but I tested similar versions and those were fine).

--Poke

Did you try my suggestions with nm? 

Where is this commit?

Is this really what we want?  Do we rather want the reassurance that we have a self-contained source code tree free of system dependencies?

PRL

 

On Tue, Jul 18, 2017 at 2:09 PM, Paul Licameli <[hidden email]> wrote:


On Tue, Jul 18, 2017 at 3:51 PM, Pokechu22 <[hidden email]> wrote:
The problem, as I understand it, is that portaudio is sometimes compiled as C++, and sometimes as C; this changes how you can link to it.  While PRL's fixed that for the local version, we don't know whether the system version was compiled as C or C++.  This could probably be resolved with a define and checking for C linkage, using C++ linkage if that fails (checking using automake, which I think can check linkage)

--Poke

On my Mac I can use the Unix nm command (your path will vary):

nm ~/Library/Developer/Xcode/DerivedData/Audacity-gkopfutijyptwegarpjfigjtokfb/Build/Products/Debug/libportaudio.a  | grep GetTime

 
Output may be system dependent, but try it, building first as C then as C++, and I think this may reveal a difference in the "mangling" of the symbol name when it is C++.

I have just discovered by experiment that on my Mac, with clang, you can still get away reverting commit 38fd97b8e26060332ab3e9e000a8882326a70ba7 and then building pa_unix_util.c as C++, because it makes no difference to the nm output, but that may not be so with g++.


PRL




On Tue, Jul 18, 2017 at 11:41 AM, Steve the Fiddle <[hidden email]> wrote:
Moved to -devel to reduce clutter in bugzilla thread.

Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6

"If you're building it with the local version (or via
--with-portaudio=local) then it should fix it."

I've been removing the system version of portaudio19-dev before
building Audacity, and that has been working for a while.

I'd forgotten about "--with-portaudio=local" but tried that now and
pleased to say that works. Nevertheless, I expect that distro
maintainers would be happier if Audacity built using the system
version. Do we have any ideas why it doesn't?


Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7

"I don't know what errors Steve got from a system version"

The error is:

"audacity-AudioIO.o: In function `AudioIO::MidiTime()':
/audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference to
`PaUtil_GetTime'
collect2: error: ld returned 1 exit status
Makefile:2350: recipe for target 'audacity' failed'"


Paul wrote:

"What are the steps to determine if you have a system version?"

From  a terminal:
sudo dpkg -L portaudio19-dev

If portaudio19-dev is installed, its location will be given. If it's
not installed, it will tell you that the package is not installed.

Also, at the end of running configure (building Audacity), the
terminal output list various libraries like this:

Finished configure:
EXPAT: using SYSTEM libraries
FFMPEG: using SYSTEM libraries
LAME: using SYSTEM libraries
LIBFLAC: using SYSTEM libraries
LIBID3TAG: using SYSTEM libraries
LIBMAD: using SYSTEM libraries
LIBNYQUIST: using LOCAL libraries
LIBSBSMS: using LOCAL libraries
LIBSNDFILE: using SYSTEM libraries
LIBSOUNDTOUCH: using SYSTEM libraries
LIBSOXR: using SYSTEM libraries
LIBTWOLAME: using SYSTEM libraries
LIBVAMP: using SYSTEM libraries
LIBVORBIS: using SYSTEM libraries
LV2: using SYSTEM libraries
PORTAUDIO: using LOCAL libraries
PORTSMF: using SYSTEM libraries
PORTMIDI: using LOCAL libraries
WIDGETEXTRA: using LOCAL libraries
ladspa plugin support: enabled
audiounit plugin support: disabled
VST plugin support: enabled
prefix=/usr/local/

Run 'configure --help' for an explanation of these options,
otherwise run 'make' to build Audacity.


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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: bug 889 EXPERIMENTAL_MIDI_OUT

Stevethefiddle
On 19 July 2017 at 18:38, Paul Licameli <[hidden email]> wrote:

>
>
> On Wed, Jul 19, 2017 at 1:30 PM, Pokechu22
> <[hidden email]> wrote:
>>
>> I should clarify: it checks the system version and uses if it can (but in
>> more cases now), but if it can't, it still uses the local version.  It still
>> requires changing the lib-src version to use extern "C", so that we have a
>> consistent build there.
>>
>> I've looked at it with nm before but I'm not entirely sure how to read the
>> output, as at least on my machines the output both looked the same (no
>> mangling at all was evident) other than the length of the number before
>> (which I assume is a 32-bit/64-bit thing).
>>
>> The commits in question are 62d5d8e8d (relates to portaudio automake) and
>> 0cd6f761a (using the prior changes for including), though 059d3a503 (relates
>> to portmidi automake) is also a prerequisite to that.
>> --Poke
>>
>
> Steve, will you test those commits and push them?

Could you clarify exactly which commits you want me to test.

Steve

>
> PRL
>
>
>>
>> On Wed, Jul 19, 2017 at 10:22 AM, Paul Licameli <[hidden email]>
>> wrote:
>>>
>>>
>>>
>>> On Wed, Jul 19, 2017 at 1:15 PM, Pokechu22
>>> <[hidden email]> wrote:
>>>>
>>>> I've tried a fix for this, where it'll instead attempt to link with the
>>>> system version as both C and C++ in the checklib, and if it can link as C++
>>>> but not C it'll add a define.  Then we can attempt to link to either
>>>> version.  I'm not 100% sure if it works, since my system version is actually
>>>> too outdated to test, though (but I tested similar versions and those were
>>>> fine).
>>>>
>>>> --Poke
>>>
>>>
>>> Did you try my suggestions with nm?
>>>
>>> Where is this commit?
>>>
>>> Is this really what we want?  Do we rather want the reassurance that we
>>> have a self-contained source code tree free of system dependencies?
>>>
>>> PRL
>>>
>>>
>>>>
>>>>
>>>> On Tue, Jul 18, 2017 at 2:09 PM, Paul Licameli <[hidden email]>
>>>> wrote:
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Jul 18, 2017 at 3:51 PM, Pokechu22
>>>>> <[hidden email]> wrote:
>>>>>>
>>>>>> The problem, as I understand it, is that portaudio is sometimes
>>>>>> compiled as C++, and sometimes as C; this changes how you can link to it.
>>>>>> While PRL's fixed that for the local version, we don't know whether the
>>>>>> system version was compiled as C or C++.  This could probably be resolved
>>>>>> with a define and checking for C linkage, using C++ linkage if that fails
>>>>>> (checking using automake, which I think can check linkage)
>>>>>>
>>>>>> --Poke
>>>>>
>>>>>
>>>>> On my Mac I can use the Unix nm command (your path will vary):
>>>>>
>>>>> nm
>>>>> ~/Library/Developer/Xcode/DerivedData/Audacity-gkopfutijyptwegarpjfigjtokfb/Build/Products/Debug/libportaudio.a
>>>>> | grep GetTime
>>>>>
>>>>>
>>>>> Output may be system dependent, but try it, building first as C then as
>>>>> C++, and I think this may reveal a difference in the "mangling" of the
>>>>> symbol name when it is C++.
>>>>>
>>>>> I have just discovered by experiment that on my Mac, with clang, you
>>>>> can still get away reverting commit 38fd97b8e26060332ab3e9e000a8882326a70ba7
>>>>> and then building pa_unix_util.c as C++, because it makes no difference to
>>>>> the nm output, but that may not be so with g++.
>>>>>
>>>>>
>>>>> PRL
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> On Tue, Jul 18, 2017 at 11:41 AM, Steve the Fiddle
>>>>>> <[hidden email]> wrote:
>>>>>>>
>>>>>>> Moved to -devel to reduce clutter in bugzilla thread.
>>>>>>>
>>>>>>> Poke wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c6
>>>>>>>
>>>>>>> "If you're building it with the local version (or via
>>>>>>> --with-portaudio=local) then it should fix it."
>>>>>>>
>>>>>>> I've been removing the system version of portaudio19-dev before
>>>>>>> building Audacity, and that has been working for a while.
>>>>>>>
>>>>>>> I'd forgotten about "--with-portaudio=local" but tried that now and
>>>>>>> pleased to say that works. Nevertheless, I expect that distro
>>>>>>> maintainers would be happier if Audacity built using the system
>>>>>>> version. Do we have any ideas why it doesn't?
>>>>>>>
>>>>>>>
>>>>>>> Paul wrote in http://bugzilla.audacityteam.org/show_bug.cgi?id=889#c7
>>>>>>>
>>>>>>> "I don't know what errors Steve got from a system version"
>>>>>>>
>>>>>>> The error is:
>>>>>>>
>>>>>>> "audacity-AudioIO.o: In function `AudioIO::MidiTime()':
>>>>>>> /audacity/build/src/../../src/AudioIO.cpp:3984: undefined reference
>>>>>>> to
>>>>>>> `PaUtil_GetTime'
>>>>>>> collect2: error: ld returned 1 exit status
>>>>>>> Makefile:2350: recipe for target 'audacity' failed'"
>>>>>>>
>>>>>>>
>>>>>>> Paul wrote:
>>>>>>>
>>>>>>> "What are the steps to determine if you have a system version?"
>>>>>>>
>>>>>>> From  a terminal:
>>>>>>> sudo dpkg -L portaudio19-dev
>>>>>>>
>>>>>>> If portaudio19-dev is installed, its location will be given. If it's
>>>>>>> not installed, it will tell you that the package is not installed.
>>>>>>>
>>>>>>> Also, at the end of running configure (building Audacity), the
>>>>>>> terminal output list various libraries like this:
>>>>>>>
>>>>>>> Finished configure:
>>>>>>> EXPAT: using SYSTEM libraries
>>>>>>> FFMPEG: using SYSTEM libraries
>>>>>>> LAME: using SYSTEM libraries
>>>>>>> LIBFLAC: using SYSTEM libraries
>>>>>>> LIBID3TAG: using SYSTEM libraries
>>>>>>> LIBMAD: using SYSTEM libraries
>>>>>>> LIBNYQUIST: using LOCAL libraries
>>>>>>> LIBSBSMS: using LOCAL libraries
>>>>>>> LIBSNDFILE: using SYSTEM libraries
>>>>>>> LIBSOUNDTOUCH: using SYSTEM libraries
>>>>>>> LIBSOXR: using SYSTEM libraries
>>>>>>> LIBTWOLAME: using SYSTEM libraries
>>>>>>> LIBVAMP: using SYSTEM libraries
>>>>>>> LIBVORBIS: using SYSTEM libraries
>>>>>>> LV2: using SYSTEM libraries
>>>>>>> PORTAUDIO: using LOCAL libraries
>>>>>>> PORTSMF: using SYSTEM libraries
>>>>>>> PORTMIDI: using LOCAL libraries
>>>>>>> WIDGETEXTRA: using LOCAL libraries
>>>>>>> ladspa plugin support: enabled
>>>>>>> audiounit plugin support: disabled
>>>>>>> VST plugin support: enabled
>>>>>>> prefix=/usr/local/
>>>>>>>
>>>>>>> Run 'configure --help' for an explanation of these options,
>>>>>>> otherwise run 'make' to build Audacity.
>>>>>>>
>>>>>>>
>>>>>>> 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
>>>>>>> [hidden email]
>>>>>>> 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
>>>>>> [hidden email]
>>>>>> 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
>>>>> [hidden email]
>>>>> 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
>>>> [hidden email]
>>>> 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
>>> [hidden email]
>>> 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
>> [hidden email]
>> 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
> [hidden email]
> 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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Loading...