Proposal: mechanism for local patches

Scott Lambert lambert at lambertfam.org
Tue Dec 2 12:00:03 PST 2008


On Tue, Dec 02, 2008 at 09:07:43PM +0300, Dmitry Marakasov wrote:
> * G. Paul Ziemba (pz-freebsd-ports at ziemba.us) wrote:
> 
> > In hopes of stimulating some discussion, I propose a new variable,
> > LOCAL_PATCHES (or maybe SITE_PATCHES), that would behave just like
> > EXTRA_PATCHES, except that it would be designated specifically for
> > site-local patches. It would be implemented in the do-patch target
> > in bsd.port.mk at the end, after patches from PATCHDIR are applied,
> > and patch Makefiles would, by convention, leave it unmolested.
> > 
> > Have I overlooked some better approach to integrating site-local
> > fixes?
> 
> I am not aware of any mechanism for this. But I agree that it's
> really needed. Before (in cvsup times) we could just place patches
> under files/ and be happy, but now when more people use portsnap
> we need something better.
> 
> I think making another variable that behaves like EXTRA_PATCHES is
> not convenient - you'll have to provide it per-port which means
> conditionals in make.conf.
> 
> I think the most convenient way of implementing this is having
> a directory hierarchy (either two level ${CATEGORY}/${PORTNAME}/patch-*)
> or single level ${PORTNAME}/patch-*) and a single variable that makes
> port system look there for patches in addition to ${PATCHDIR}.
> 
> Thus, you only have to add a single line to make.conf:
> 
> USE_LOCALPATCHES=	/usr/ports/local-patches
> (or /whereever)
> 
> and from there on files will be searced in
> 
> either /usr/ports/local-patches/${CATEGORY}/${PORTNAME}
> /usr/ports/local-patches/${PORTNAME}.
> 
> AFAIK, port names are unique in the whole portstree, so single level
> layout seems to be easier to handle.
> 
> Here's the draft patch for this functionality:
> 
> http://people.freebsd.org/~amdmi3/local-patchdir.patch

How about something like WRKDIRPREFIX?

Presumably the logic for dealing with that structure is already in
the system.  Maybe you could have USE_LOCAL_PATCHES boolean which
uses ${CATEGORY}/${PORTNAME}/files subdirs in WRKDIRPREFIX, or
LOCALPATCHDIRPREFIX if you want to keep your patches in CVS/SVN without
polluting the CVS/SVN working directory.

Just a thought.

-- 
Scott Lambert                    KC5MLE                       Unix SysAdmin
lambert at lambertfam.org



More information about the freebsd-ports mailing list