mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-05 15:08:48 +00:00
add hacking notes
Original commit message from CVS: add hacking notes
This commit is contained in:
parent
87324f82f0
commit
b51bb8f341
2 changed files with 55 additions and 22 deletions
|
@ -1,6 +1,6 @@
|
||||||
2004-03-11 Thomas Vander Stichele <thomas at apestaart dot org>
|
2004-03-11 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
* configure.ac: use new setup with mirrored cvs tree
|
* configure.ac: use new setup with mirrored cvs tree
|
||||||
|
|
||||||
2004-03-10 David Schleef <ds@schleef.org>
|
2004-03-10 David Schleef <ds@schleef.org>
|
||||||
|
|
||||||
|
|
75
HACKING
75
HACKING
|
@ -1,3 +1,5 @@
|
||||||
|
THE GOAL
|
||||||
|
--------
|
||||||
What we are trying to achieve:
|
What we are trying to achieve:
|
||||||
|
|
||||||
satisfy:
|
satisfy:
|
||||||
|
@ -8,32 +10,63 @@ satisfy:
|
||||||
make distcheck
|
make distcheck
|
||||||
non-srcdir build (ie, mkdir build; cd build; ../configure; make)
|
non-srcdir build (ie, mkdir build; cd build; ../configure; make)
|
||||||
|
|
||||||
How it works:
|
THE SETUP
|
||||||
|
---------
|
||||||
|
There is a "mirror" root CVS module that contains "ffmpeg".
|
||||||
|
This directory contains a vendor-branch checkout of upstream FFmpeg CVS
|
||||||
|
of a given day.
|
||||||
|
|
||||||
* configure checks whether or not it should update ffmpeg from CVS by looking
|
On head, the following things have been commited on top of this:
|
||||||
at the nano version number
|
* patches/, which is a directory with a set of patches, and a series file
|
||||||
- if it's 1, we're in cvs mode, and it should check it out
|
listing the order, as generated by quilt
|
||||||
- if it's not 1, we're in prerel or rel mode, and the code should already
|
* .pc/, which is a tree of files that quilt uses to keep control of its state.
|
||||||
be on disk
|
It contains a list of applied patches, and one directory per patch,
|
||||||
FIXME: we could change this to really check out the source code if some
|
containing a tree of hardlinked files that were added to the patchset, and
|
||||||
required files aren't there just in case someone checks out from CVS
|
a .pc file listing all files part of the patchset.
|
||||||
but CVS is not at nano 1
|
* the result of having all these patches commited (ie, quilt push -a) to the
|
||||||
|
ffmpeg tree.
|
||||||
|
|
||||||
* patching of the checked-out copy happens at
|
Both the actually patched CVS ffmpeg code as well as the .pc dir need to be
|
||||||
|
commited to CVS so the state of quilt wrt. the source is in sync.
|
||||||
|
|
||||||
Axioms under which we work:
|
THE WAY
|
||||||
- the dist tarball needs to include either
|
-------
|
||||||
- the pristine ffmpeg checkout + our patches + a patch mechanism on make
|
|
||||||
or
|
|
||||||
- the ffmpeg checkout with patches already applied
|
|
||||||
|
|
||||||
- configure/make is not allowed to touch files that already live in the source
|
- If you want to hack on our copy of the FFmpeg code, there are some basic
|
||||||
tree; if they need to then they need to be copied first and cleaned
|
rules you need to respect:
|
||||||
afterward
|
- you need to use quilt. If you don't use quilt, you can't hack on it.
|
||||||
|
- we separate patches based on the functionality they patch, and whether
|
||||||
- it would be very nice if, on update of either the Tag file or the patch set,
|
or not we want to send stuff upstream. Make sure you work in the right
|
||||||
make would know exactly what to do with it.
|
patch. use "quilt applied" to check which patches are applied.
|
||||||
|
- before starting to hack, run cvs diff. There should be NO diffs, and
|
||||||
|
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
|
||||||
|
- 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 PLUGIN
|
||||||
|
----------
|
||||||
Some notes on how ffmpeg wrapping inside GStreamer currently works:
|
Some notes on how ffmpeg wrapping inside GStreamer currently works:
|
||||||
* gstffmpeg{dec,enc,demux,mux}.c are wrappers for specific element types from
|
* 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
|
their ffmpeg counterpart. If you want to wrap a new type of element in
|
||||||
|
|
Loading…
Reference in a new issue