1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
$Id$
This file attempts to explain some of the oddities of the xterm Debian
source package by describing the files and directories not usually found in
a (debhelperized) source package.
This package uses quilt to manage patches. A basic description of how to use
this is below.
Interesting targets supported by the debian/rules file include:
debian/rules setup Unpacks and patches the source.
debian/rules patch-audit Unpacks and patches the source, and
verifies that there are no offsets or
fuzz in the patches. If you are
contributing a patch, please verify that
this target works before submitting it;
it can save the package maintainers a
considerable amount of time.
debian/rules clean Unpatches the source and removes stampdir,
build-tree, and various patch-related items
debian/rules patch Patches the source with all patches
debian/rules unpatch Unpatches the source with all patches
debian/rules prepare Sets up the directory so you can begin
editing patches. VERY IMPORTANT.
Editing and creating patches:
The first thing you need to do is become familiar with the basics of quilt.
It comes with a pdf tutorial in /usr/share/doc/quilt as well as an excellent
manpage.
To start, you should be in the top level directory, containing the debian
directory and the xc directory. First, run debian/rules prepare. This will
set up the proper symlinks so that quilt can find the patches it needs to
apply. Once this is done, you will see a symlink named "patches" that will
point to debian/patches. This is because quilt expects the patches directory
to be located at the top level by default. It will set up a ".pc" link as
well, which quilt uses internally to store info (this is why you'll want to
use debian/rules clean to clean up, rather than just rm -rf'ing what you see,
the hidden .pc is easy to forget). It will also create a stampdir that is
used to store stamps so debian/rules knows what its done, as well as logs.
Now that the directory is set up, you're going to want to do your thing.
Let's start with editing a patch. You'll want to run "quilt push
yourpatchname.diff". You're going to want to make your edits now. If you're
editing a file that wasn't previously included in the patch, be sure to let
quilt know you're doing it by using "quilt add" or "quilt edit". If you're
not sure if you need this, you can run "quilt files" to see if your file is
already in there, or "quilt patches filename" to see if the current patch
edits the specified file. Once you're done editing, run "quilt refresh" to
update your patch. All documentation in the patch header will be retained by
quilt automatically. If you have made a serious edit, you may want to
document it in the header of the patch.
Alternately, you could be creating a new patch. As above, you'll want to set
up the tree by running debian/rules prepare. You need to decide where your
patch belongs according to the number series specified below. Once you do
this, run "quilt push patch-before-yours" specifying the patch that will be
the last one applied before your new patch. Then run "quilt new patchname"
using the name of the patch (including the appropriate number). Make your
edits to the files. As described above, you'll want to be sure quilt knows
which files you are editing. When you are finished, run "quilt refresh -u -p
0". This will create a unified diff patch with a strip number of 0. You
should then go in to the patches directory and document your patch.
You may have a patch that you stole from some other source that you just want
to apply and you don't want to deal with adding files by hand. You can use
"quilt import -n internal-patch-name file-name" where the internal-patch-name
is what you want to call your patch. You'll want to push the patch before
yours, as described above, before doing the import, in order to make sure it
applies in the right sequence.
Once you're all done with patch work, you'll want to run debian/rules clean
to get rid of the things that had to be set up.
patches:
Directory containing patches applied in ASCIIbetical order.
numeric prefix indicates disposition of patch
000 patches FROM upstream
001-899 patches that should be sent upstream
001-099 general-purpose patches
100-199 architecture-specific patches
800-899 OS flavour patches
900-999 patches that should not be sent upstream
900-998 Debian-specific behavior and enhancements
999 experimental or debugging patches (should not
generally be present in a production release)
local:
This contains Debian-specific programs and documentation that we include
in our xterm binary packages; for instance, our UTF-8 wrapper.
vim:set ai et sw=2 ts=2 tw=80:
|