Subject: Re: additional distribution patches in an archive file
To: Klaus Heinz <k.heinz.okt.fuenf@onlinehome.de>
From: Johnny C. Lam <jlam@pkgsrc.org>
List: tech-pkg
Date: 10/23/2005 11:08:03
Klaus Heinz wrote:
> 
> the patch framework assumes that additional distribution patches are
> simple files which can be downloaded to $DISTDIR, decompressed if
> necessary and then piped through the patch command.

I extended the patch framework a bit a few months back to handle these 
types of situations.

> I do not see how I could use a .tar.gz archive which _contains_ the
> patch to be applied.

Take a look at pkgsrc/graphics/xv for an example of how to do it.  The 
relevant variables are PATCH_DIST_CAT and PATCH_DIST_STRIP.  If you need 
to have separate variables per-patch, you can do it by setting 
PATCH_DIST_{CAT,STRIP}.<patch> (see bsd.pkg.patch.mk).

> I can add the patch archive to DISTFILES and have it extracted alongside
> the main distfile but how can I tell pkgsrc that the patch is _not_
> available relative to $DISTDIR but is located in a different directory,
> $WRKDIR/patch-archive/the-patch? Copying the patch file to $DISTDIR
> in a pre-patch target may not work if DISTDIR is not writable.
> 
> Would it be worthwhile to change bsd.pkg.patch.mk so that another
> patch-specific variable PATCH_DIST_PATCHDIR.patch specifies the directory
> for "patch"?

That might be a good idea.  For now, you have the option to set 
PATCH_DIST_ARGS to the full set of arguments to the patch command.

> One proposed solution treats the whole patch tar archive as the patch
> itself and pipes it (decompressed) through the patch command. It seems
> to work for .tar files but I would not like to rely on this behaviour.

The example provided by pkgsrc/graphics/xv only extracts the patches 
from the tar.bz2 archive.

	Cheers,
	
	-- Johnny Lam <jlam@pkgsrc.org>