On Fri, 2008-06-27 at 12:45 -0400, Roger Dannenberg wrote:
> Greg Williams and I are updating the note track data structures and
> editing operations in preparation for audio-score alignment. We would be
> happy to commit these changes into CVS. As far as I can tell, the new
> code is better than what's there now -- cut, copy, paste actually work
> on note tracks. However, because there are lots of changes and we
> haven't tested on non-Windows machines, I feel certain there are bugs
> lurking. Would this be a good time to commit? Our changes should be
> contained by the EXPERIMENTAL_NOTE_TRACK option.
I see this is now in CVS.
This has a number of build breaking effects under Linux:
1) lib-src/allegro/ now doesn't compile. See today's mail from Udo for
details, #include <errno.h> fixes that but the link still fails with
missing symbols.
2)#ifndef EXPERIMENTAL_NOTE_TRACK appears in .cpp files in the
lib-src/allegro source directory. This will _ALWAYS_ evaluate to true
because the file doesn't #include audacity's Experimental.h
3) If I try and use the upstream portSMF SVN version to build against, I
have to patch NoteTrack because the number of arguments to
Alq_seq::serialize() is two and it should (according to the prototype in
SVN) be three.
4) There seem to be many more header files in the audacity allegro
directory than in the portSMF SVN, a number of which are used by
audacity, which prevents building audacity with the SVN version.
Ideally there shouldn't be anything special about the copy of portSMF
used with audacity, it should just be taken straight from the SVN
repository and copied into lib-src/. It would also be much more logical
to keep it in a directory called portsmf/, and leave the legacy copy of
allegro alone (with the intention to delete and remove fairly shortly).
http://www.audacityteam.org/wiki/index.php?title=CVS_Etiquette, section
on External Libraries.
This also allows us to largely ignore the obscure and not easily
understood build system that the audacity copy of allegro has got in
favour of writing something from scratch.
I've been looking at this this afternoon, and come up with a
patch against the portSMF SVN repository, which provides a configure
script to build a static library and the pkg-config files for other apps
to find the library. This means anyone with pkg-config working doesn't
have to wory about what objects to link, what the dependencies are or
anything else, they just do `pkg-config --libs` etc to get the relevant
paths - and it works both from the build directory and from the system
should you be silly enough to install it.
The library is static only, which largely avoids the need to worry about
library versions until the library is more stable (I've set the version
as 0.1 at the moment).
The one thing the code urgently needs is a License - there is just no
information I can see in the source tree. By default this would go in a
file called COPYING at the top level.
Whilst I'm on the subject of file layout, how many of the headers are
needed to us portSMF, and how many are just needed when building it's
innards? This only matters once you get to packaging the library, but it
would be nice to put all the headers in portsmf/*.h, so the are together
and don't clash with any other package's headers. In order for stuff to
work with the uninstalled package as well, the same change needs to be
made to the source tree, i.e. public headers go in a sub-directory
called portsmf/, then are included as "portsmf/allegro.h" etc in the
files.
The (fairly trivial) changes to support this are noted as comments in
Makefile.am in the patch, or I can re-do the patch after SVN is updated.
To summarise:
* With EXPERIMENTAL_NOTE_TRACK not defined, it still builds OK on Linux
* with EXPERIMENTAL_NOTE_TRACK defined, it breaks quite badly
* fixing the breakage the way things are now would be hard
* it would be much easier to leave lib-src/allegro/ alone and have a new
lib-src/portsmf/
* There is a patch to provide a build system for portSMF SVN. The patch
won't fit on this mailing list, so it's at
http://audacity.sourceforge.net/files/autotools-build-system.patch.gzRichard
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel