Subject: Patch Management Scripts
From: Andreas Gruenbacher <[email-masked]>
Date: Sat, 18 Jan 2003 18:40:32 +0100

Hello,

this is to announce that the patch-scripts package is available at
http://www.suse.de/~agruen/patch-scripts/. The current version is 0.11.

These scripts were based on Andrew Morton's patch scripts
(http://www.zip.com.au/~akpm/linux/patches/), but have been very
heavily modified since then.

I am sure that there still a couple of bugs left, but these should
really be ironed out before long.

The scripts support:

*	Managing a stack of patches, applying and
	removing patches from the stack, adding new patches, and
	modifying them under a minimal kind of version control.

*	They should be reasonably robust (hopefully!).

*	Works for ordinary packages with only a few patches, and
	also for the kernel with several hundered patches.

*	The refresh script is careful not to drop any documentation
	preceding the actual patch in the patch files.

*	Simple to set up to get into "working mode" quickly.

*	Any applied patch can be refreshed. This is trivial for the
	topmost patch. If a file is modified by multiple patches,
	all changes to the file affect only the topmost patch that
	changed that file; patches further below will not include
	any such changes when being rediffed.

*	Several queries are supported, such as:
	- topmost, preceding, following patch(es),
	- files a patch creates or modifies
	- patches that modify a given file
	- changes a patch includes
	- changes to a patch in the working directory

For those of you who are interested, here is a how to get started, after
grabbing and installing the patch-scripts package.

Patching an ordinary package:

	*	The usual RPM contains a tarball and a set of
		patches. Unpack the tarball and copy the
		patches into the patches/ sub-directory in the
		package.

	*	Create a file named series in the patches/ directory.
		The series file contains the list of patches for
		the package.

		The patches are applied with -p1 by default; for -p0
		or other style patches the series file must have
		-p0 or similar after the patch name (but on the same
		line).

	*	Run `pushpatch -a' to apply all the patches. (Note
		that the first run is slightly slower because lists
		of files modified by the patches are created.)

	*	Proceed with the README file in the patch-scripts
		package.

Patching the kernel:

	*	The kernel lives in a CVS repository. Check out this
		tree, say in a directory called $KCVS.

	*	Unpack the kernel tarball, e.g., in $SRC. Create the
		patches/ directory, and add soft links to the various
		patches.* 	directories in the CVS into the patches
		directory, e.g.,

			$ cd $SRC/patches
			$ ln -s $KCVS/patches.* .

	*	Create a series file. This is done like that:

			$ (cd $K_SRC/scripts ; \
			   guards $(arch-symbols)) \
			   < ../series.conf \
			   > $SRC/patches/series

	*	Change to $SRC, and run `pushpatch -qa' to apply
		the patches (-q gives much less output).

	*	As above, check the README in the patch-scripts
		package, and try out what the individual scripts do.

Cheers,
Andreas.

------------------------------------------------------------------
 Andreas Gruenbacher                                SuSE Linux AG
 mailto:[email-masked]                     Deutschherrnstr. 15-19
 http://www.suse.de/                   D-90429 Nuernberg, Germany