mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-16 16:47:41 +02:00
Update the library instructions quite majorly for managing source code with SVN. Now all we need to do is make it happen ....
This commit is contained in:
parent
7bf7f9306e
commit
2074a24ee8
@ -1,6 +1,7 @@
|
|||||||
This is intended as a list of all the patches that have been incorporated into
|
This is intended as a list of all the patches that have been incorporated into
|
||||||
the lib-src copies of libraries, to avoid them getting lost in version upgrades
|
the lib-src copies of libraries, to avoid them getting lost in version upgrades
|
||||||
from upstream, and to remind us of the versions we are using.
|
from upstream, and to remind us of the versions we are using. See the notes at
|
||||||
|
the end for how external libraries are brought in and maintained.
|
||||||
|
|
||||||
Libraries
|
Libraries
|
||||||
=========
|
=========
|
||||||
@ -163,13 +164,13 @@ portaudio-v19
|
|||||||
-------------
|
-------------
|
||||||
http://portaudio.com/
|
http://portaudio.com/
|
||||||
cross-platform audio I/O library version 19, used for 1.3.2 onwards releases
|
cross-platform audio I/O library version 19, used for 1.3.2 onwards releases
|
||||||
Version in Audacity SVN: 1st July 2009 SVN snapshot (r1416)
|
Version in Audacity SVN: 3rd October 2010 SVN snapshot (r1541 = aud r10711)
|
||||||
Patches:
|
Patches:
|
||||||
../portmixer/portaudio.patch add features needed to make portmixer work.
|
../portmixer/portaudio.patch add features needed to make portmixer work.
|
||||||
Integration by upstream in progress. Will need updating as upstream
|
Integration by upstream in progress. Will need updating as upstream
|
||||||
portaudio moves
|
portaudio moves
|
||||||
|
|
||||||
portaudio/libtool22.patch Patch from Gentoo to ensure that static libraries
|
?portaudio/libtool22.patch Patch from Gentoo to ensure that static libraries
|
||||||
are always built, not shared ones, otherwise the assumptions elsewhere in the
|
are always built, not shared ones, otherwise the assumptions elsewhere in the
|
||||||
build system break. Not suitable for upstream, what is needed is more
|
build system break. Not suitable for upstream, what is needed is more
|
||||||
powerfull autoconf features to pass the right options to portaudio's configure
|
powerfull autoconf features to pass the right options to portaudio's configure
|
||||||
@ -293,56 +294,111 @@ wave++
|
|||||||
http://www.scs.ryerson.ca/~lkolasa/CppWavelets.html
|
http://www.scs.ryerson.ca/~lkolasa/CppWavelets.html
|
||||||
disused?
|
disused?
|
||||||
|
|
||||||
Crib notes on upgrading lib-src trees:
|
Crib notes on upgrading lib-src trees
|
||||||
======================================
|
=====================================
|
||||||
1 Remove old files
|
With extensive reference to
|
||||||
------------------
|
http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html
|
||||||
find . -not -wholename '*CVS*' -delete
|
|
||||||
will remove all the source files but not any directories or the CVS files, so
|
|
||||||
after this you have an empty place into which you can unpack the new tarball
|
|
||||||
|
|
||||||
2 Bring in new files
|
This directory (audacity-src/trunk/lib-src/) is the working copy of the
|
||||||
--------------------
|
imported libraries, with changes made to them. The current upstream version of
|
||||||
Next unpack the tarball. If you want to unpack within a package directory,
|
the libraries is imported into the audacity-src/vendor/ tree, which is _not
|
||||||
then tar --strip-components 1 will remove the un-needed top level directory.
|
modified_ except for new imports. The unmodified upstream sources are then
|
||||||
|
used to merge forward the changes between releases into the
|
||||||
|
audacity-src/trunk/lib-src/ copy which contains the audacity project changes.
|
||||||
|
|
||||||
3 Apply patches and updates
|
The version of a given <library> in lib-src should be the version from
|
||||||
---------------------------
|
vendor/<library>/current/ with the audacity changes added in.
|
||||||
Now we have a new file tree. This is the point at which to clean out any
|
|
||||||
un-needed files, re-apply any local patches so on. To clean up after patching,
|
|
||||||
run find . -name '*.orig' -delete and find . -name '*~' -delete. To remove
|
|
||||||
.svn directories from projects that use SVN upstream, use
|
|
||||||
find . -wholename '*/.svn/*' -delete and then find . -name '.svn' -delete
|
|
||||||
|
|
||||||
* run autoreconf if we have modified configure.in or configure.ac
|
1. We will update the vendor branch copy with the new upstream source first,
|
||||||
|
then merge into the working copy. As always we need a new set of clean source
|
||||||
|
to import. If pulling from upstream version control, do an export to loose
|
||||||
|
version control files first.
|
||||||
|
2. Use the svn_load_dirs.pl script to upgrade the vendor branch to the new
|
||||||
|
upstream source (which will deal with adds, deletions and renaming in the
|
||||||
|
source tree without too much effort). You need to specify a tag name for the
|
||||||
|
new update (which should reflect the upstream release, in this case an SVN
|
||||||
|
revision in upstream's repository)
|
||||||
|
svn_load_dirs.pl -t r1541 \
|
||||||
|
https://audacity.googlecode.com/svn/audacity-src/vendor/portaudio-v19/ \
|
||||||
|
current /path/to/newver
|
||||||
|
Note that the URL excludes the final 'current' section, which is specified
|
||||||
|
separately in the next argument, with the final one being the path to inside
|
||||||
|
the directory with the new source in it.
|
||||||
|
Note that the URL excludes the final 'current' section, which is specified
|
||||||
|
separately in the next argument, with the final one being the path to inside
|
||||||
|
the directory with the new source in it.Note that the URL excludes the final
|
||||||
|
'current' section, which is specified separately in the next argument, with
|
||||||
|
the final one being the path to inside the directory with the new source in
|
||||||
|
it.Note that the URL excludes the final 'current' section, which is specified
|
||||||
|
separately in the next argument, with the final one being the path to inside
|
||||||
|
the directory with the new source in it.
|
||||||
|
3. Answer the questions as posed by the script (it is interactive). The tag
|
||||||
|
should sort itself out fairly easily. Several temporary SVN checkouts will be
|
||||||
|
created and merges done. Deleted and Added files will be printed (with a pause
|
||||||
|
after each screen). If some of these should actually be renames (that is, a
|
||||||
|
delete and an addition go together), then enter the numbers of those two files
|
||||||
|
to sort that out for the script. Getting this correct makes the merge of
|
||||||
|
changes much less painful.
|
||||||
|
4. Much churning will occur to update all the files, remove orphans etc. The
|
||||||
|
new version of the library will now be in vendor/<library>/current/, with a
|
||||||
|
tag of the given name at vendor/<library>/<tag>/
|
||||||
|
5. Merge the changes between the previous and current upstream versions into
|
||||||
|
the lib-src copy used in Audacity using svn merge. Do this from the
|
||||||
|
audacity-src/lib-src/ directory of a working copy, as you will need to resolve
|
||||||
|
some conflicts along the way.
|
||||||
|
svn merge
|
||||||
|
https://audacity.googlecode.com/svn/audacity-src/vendor/portaudio-v19/r1416 \
|
||||||
|
https://audacity.googlecode.com/svn/audacity-src/vendor/portaudio-v19/current \
|
||||||
|
portaudio-v19
|
||||||
|
6. When prompted with a conflict, most of the time, you want to see the
|
||||||
|
changes, which you can get with the 'df' (diff full) response. In many cases
|
||||||
|
the changes may be trivial (e.g. version headers), in which case you can just
|
||||||
|
choose to use the new version with the 'tf' (theirs full) command.
|
||||||
|
* For generated files (e.g. configure), accept upstream's version because we
|
||||||
|
will re-generate them later.
|
||||||
|
* If there is a minor conflict, then going to 'e' (edit) will let you clean
|
||||||
|
the remaining issues in the file up. Save the file, then 'r' (resolved)
|
||||||
|
accepts the updated file.
|
||||||
|
* Mangled line endings cause a load of grief here, so try to make sure they
|
||||||
|
don't happen. SVN shouldn't have trouble with this, provided that the
|
||||||
|
svn:eol property is correctly set
|
||||||
|
7. Check the SVN status output to see what has changed. In particularly, look
|
||||||
|
for files not under version control and which are, but have been deleted.
|
||||||
|
svn st | grep '^?'
|
||||||
|
svn st | grep '^!'
|
||||||
|
Ideally there shouldn't be any!
|
||||||
|
8. Do some local updates to help reliable builds (especially if upstream
|
||||||
|
aren't very good at doing these)
|
||||||
* If the package uses libtool, run libtoolize --copy --force to update
|
* If the package uses libtool, run libtoolize --copy --force to update
|
||||||
ltmain.sh, config.sub, config.guess. If not, update config.sub,
|
ltmain.sh, config.sub, config.guess. If not, update config.sub,
|
||||||
config.guess from /usr/share/gnuconfig/
|
config.guess from /usr/share/gnuconfig/
|
||||||
|
* run autoreconf
|
||||||
|
9. Build and test the code! Make sure that your merges actually work!
|
||||||
|
10. Commit to repository - svn commit as usual.
|
||||||
|
11. To re-generate the patches in the Audacity tree, diff the original in
|
||||||
|
/vendor/ against the patched version in lib-src/ (you will need to use both
|
||||||
|
URLs on the server for this to work)
|
||||||
|
|
||||||
By doing it this way we have already updated the mtime on all files, so we
|
Bringing in a new (or only previously in CVS) library
|
||||||
don't need to do a recusive touch.
|
-----------------------------------------------------
|
||||||
|
We start out with the svn import command to to all the adding and setting up
|
||||||
|
for us. We need a set of files to import (for old CVS libs, a set of whatever
|
||||||
|
was imported last time), without any version control droppings (to get this
|
||||||
|
from someone else's SVN repository, use
|
||||||
|
svn export -r <revision> https://wherever <local directory>)
|
||||||
|
|
||||||
4 Add new files to CVS and remove old ones
|
So to push our local folder tree into the vendor branch:
|
||||||
------------------------------------------
|
1. Create a directory to put it in the vendor branch
|
||||||
CVS will list files with a ? if they are new and need to be added to the
|
svn mkdir --parents https://audacity.googlecode.com/svn/audacity-src/vendor/portaudio-v19/current/
|
||||||
repository. To get a list, run
|
|
||||||
cvs st 2>/dev/null | grep '?'
|
|
||||||
Remember to ignore the generated files from the build system which don't need
|
|
||||||
to be included in CVS, like aclocal.m4 and autom4te.cache
|
|
||||||
|
|
||||||
Finding which files have been removed is a bit harder:
|
|
||||||
cvs st 2>/dev/null | grep 'Status: Needs Checkout'
|
|
||||||
gives file names but not their paths, so you have to go back and grep each
|
|
||||||
file name to find them and do cvs rm on them.
|
|
||||||
|
|
||||||
To remove all the files that are in the working directory but aren't under CVS
|
|
||||||
control, you can use this incantation:
|
|
||||||
\rm $(cvs st 2>/dev/null | grep '?' | cut -d '?' -f 2)
|
|
||||||
|
|
||||||
5 Commit the lot to CVS
|
|
||||||
-----------------------
|
|
||||||
Run cvs ci -f -R to commit all the files in the new library tree. Use an
|
|
||||||
appropriate message that says what library version this is. This should do
|
|
||||||
all the required changes and add / remove files.
|
|
||||||
|
|
||||||
|
2. Do the svn import
|
||||||
|
svn import portaudio/pa-r1416/ https://audacity.googlecode.com/svn/audacity-src/vendor/portaudio-v19/current/ -m 'Import the previous SVN snapshot of portaudio as a base'
|
||||||
|
portaudio/pa-r1416/ is the source directory, e.g. an unpacked tarball. Note
|
||||||
|
that we don't want the versioned top level directory from the tarball, so we
|
||||||
|
give the path including that directory with a trailing slash on it.
|
||||||
|
|
||||||
|
3. The import will list the files by their source directory as it goes on and
|
||||||
|
commits as part of the import. At the end you should have all the files for
|
||||||
|
the library in the
|
||||||
|
https://audacity.googlecode.com/svn/audacity-src/vendor/portaudio-v19/current/
|
||||||
|
directory.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user