diff options
author | Thomas Vander Stichele <thomas@apestaart.org> | 2004-04-14 15:09:00 +0000 |
---|---|---|
committer | Thomas Vander Stichele <thomas@apestaart.org> | 2004-04-14 15:09:00 +0000 |
commit | 2d910891cf609984b49a9efccddd5d4f15ea0ed5 (patch) | |
tree | 89cd5cdbb8feb4f935d522063c845c8b5930e415 /HACKING | |
parent | 009ca0c1f53d6ce79f08c0e174d444bea78a7e9d (diff) |
update HACKING notes for updating snapshots
Original commit message from CVS:
update HACKING notes for updating snapshots
Diffstat (limited to 'HACKING')
-rw-r--r-- | HACKING | 166 |
1 files changed, 142 insertions, 24 deletions
@@ -42,6 +42,9 @@ What's more, if you want to be on the safe side, make sure that you can unapply and reapply without problems, by running quilt pop -a then quilt push -a. +The ONLY exception to this is when you're working on a branch to update +the upstream source you're working with. + *** THE WAY @@ -56,36 +59,140 @@ THE WAY NO files listed with question mark. If there are, somebody before you probably made a mistake. To manage the state correctly, it is vital that none of the files are unknown to CVS. - - if you want to add a file to a patchset, you need to: - - be in the right patchset - - quilt add (file) - - cvs add .pc/(patchsetname)/(file) - - cvs commit .pc/(patchsetname) (to update the state of quilt in cvs) - - edit the file - - cvs add the file if it doesn't exist yet - - quilt refresh - - quilt push -a (This one is IMPORTANT, otherwise you'll have a huge diff) - - cvs commit - - if you want to add a patchset, you need to: - - go over the procedure with thomas to check it's correct - - decide where in the stack to put it. ask for help if you don't know. - - go there in the patch stack (use quilt pop/push) - - quilt new (patchsetname).patch (don't forget .patch !) - - quilt add (files) - - cvs add .pc/(patchsetname) the whole tree - - cvs commit .pc/(patchsetname) - - quilt refresh - - quilt push -a - - cvs commit - - cvs diff (to check if any of the files are unknown to CVS; if they are, - you need to add them to CVS) + + +- if you want to add a file to a patchset, you need to: + - be in the right patchset + - quilt add (file) + - cvs add .pc/(patchsetname)/(file) + - cvs commit .pc/(patchsetname) (to update the state of quilt in cvs) + - edit the file + - cvs add the file if it doesn't exist yet + - quilt refresh + - quilt push -a (This one is IMPORTANT, otherwise you'll have a huge diff) + - cvs commit + +- if you want to add a patchset, you need to: + - go over the procedure with thomas to check it's correct + - decide where in the stack to put it. ask for help if you don't know. + - go there in the patch stack (use quilt pop/push) + - quilt new (patchsetname).patch (don't forget .patch !) + - quilt add (files) + - cvs add .pc/(patchsetname) the whole tree + - cvs commit .pc/(patchsetname) + - quilt refresh + - quilt push -a + - cvs commit + - cvs diff (to check if any of the files are unknown to CVS; if they are, + you need to add them to CVS) + +THE UPSTREAM +------------ +At some points you want to update the upstream snapshot code to a newer date. +This is easy if you follow the steps outlined here, but make sure to follow +them correctly ! + +- find a good CVS snapshot date for upstream, one that is known to work. + You're going to save yourself quite a bit of trouble if you verify this + first ! +- check it out to a local directory: + cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg export -D '2004-04-11 23:00 GMT' ffmpeg +- compile it and test it, make sure it works + +- in gst-ffmpeg/gst-libs/ext/ffmpeg: + - Pre-flight checks: + - first make sure you don't have local changes, all files are either in + CVS or in .cvsignore patch, the whole quilt stack is applied, and stuff + works. + - do a quilt pop -a and quilt push -a to verify everything is ok. + + - Branch and rollback: + - tag HEAD with the branch root point: + cvs tag BRANCH-UPDATE-CVS-2004-04-11-23-00-ROOT + - branch: + cvs tag -b BRANCH-UPDATE-CVS-2004-04-11-23-00 + - FIXME: lock cvs HEAD + - update local copy to branch: + cvs update -r BRANCH-UPDATE-CVS-2004-04-11-23-00 + - peel off all patches: + quilt pop -a + - commit this + cvs commit + - check + cvs diff + you should only have ? for files that are generated somehow (binaries, + build files, ...) + you get warnings about cvs not finding files to diff that are in .pc + or generated by your patches + + + - if you want, you can now compare this state of CVS (which should + be last upstream CVS combined with your local unapplied quilt state) + - remember to NOT do cvs update from here on, since you popped your quilt + state all your added files that are also in CVS are not locally present. + + - sync with upstream: + - in a temp dir, redo the export: + cd .. + mkdir tmp + cd tmp + cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg export -D '2004-04-11 23:00 GMT' ffmpeg + - rsync it over the old ffmpeg tree + rsync -arv ffmpeg .. + - go back and commit this new snapshot + cd ../ffmpeg + cvs commit + - check if any new files got added that you should add to cvs + cvs diff + This will list a lot of local files missing, from your quilt state, + which you shouldn't worry about. Just inspect all the ?'s and add + files to cvs that belong to upstream and should be in cvs. + - if everything's ok and commited, tag the state: + cvs tag UPSTREAM-CVS-2004-04-11-23-00 + + - reapply and fix quilt patches one by one + - try applying one + quilt push + - if that didn't work, inspect the patch and figure out how to fix it: + - if the patch got applied upstream completely, quilt push will tell + you the patch looks like a reverse patch. In that case you can + remove the patch from your patches file (patches/series), and + remove the .pc/$(patchname) and patches/$(patchname).patch files from + cvs. + - if the patch conflicts somehow, you can force application with + quilt push -f + and then resolve all the rejects, and fix the patch completely. + Then refresh quilt state with + quilt refresh + - when the patch is succesfully removed or reworked, commit current state + to CVS, then check again if nothing is missing using cvs diff, and + resolve problems/apply missing files from your quilt state/... + + - after reapplying your complete quilt state, test locally if the complete + gst-ffmpeg module now works. Compile and test. Resolve all problems + (upstream errors, missing symbols, missing files, ...) until you have + a working module. commit again. + + - merge to head: + - update locally back to head + cvs update -A + - FIXME: unlock cvs HEAD + - merge from your branch + cvs update -j BRANCH-UPDATE-CVS-2004-04-11-23-00 + - commit + cvs commit + - check for diffs + cvs diff + - tag merge point + cvs tag BRANCH-UPDATE-CVS-2004-04-11-23-00-MERGE + + - get a drink THE PLUGIN ---------- Some notes on how ffmpeg wrapping inside GStreamer currently works: * gstffmpeg{dec,enc,demux,mux}.c are wrappers for specific element types from their ffmpeg counterpart. If you want to wrap a new type of element in - ffmpeg (e.g. the URLProtocol things), then you'd need to write a new wrapper file. * gstffmpegcolorspace.c is a wrapper for one specific function in ffmpeg: @@ -144,3 +251,14 @@ Some notes on how ffmpeg wrapping inside GStreamer currently works: * there's lots of things that still need doing. See the TODO file for more information. + +THE REMINDERS +------------- +* the initial ffmpeg checkout was imported using: + - get CVS ffmpeg + cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -D '2004-03-09 06:00 GMT' ffmpeg + + - delete all CVS directories + find . -name CVS -type d -exec rm -rf {} \; + - import it in our CVS + cvs -d:ext:thomasvs@cvs.freedesktop.org:/cvs/gstreamer import -m "Import of FFmpeg cvs from 2004-03-09 06:00 GMT" mirror/ffmpeg FFMPEG CVS-2004-03-09 |