patch to bsd.ports.mk to support out-of-tree patches.
Chris H
bsd-lists at bsdforge.com
Tue Mar 24 13:19:20 UTC 2015
On Tue, 24 Mar 2015 16:06:23 +0800 Julian Elischer <julian at freebsd.org> wrote
> On 3/24/15 1:45 PM, Chris H wrote:
> > On Tue, 24 Mar 2015 13:33:15 +0800 Julian Elischer <julian at freebsd.org>
> > wrote >
> >> Hi, I've a need to keep soe changes outside of the ports tree, to
> >> allow me to tailor
> >> our installs. I could use the "EXTRA_PATCHES" setting, but I'd have to
> >> outline the
> >> patches every time and keep track of them one by one.
> >>
> >> Instead, I have adde dhte following to bsd.ports.mk:
> >>
> >>
> >>
> >> diff -u bsd.port.mk.orig bsd.port.mk
> >> --- bsd.port.mk.orig 2015-03-23 21:55:47.498891000 -0700
> >> +++ bsd.port.mk 2015-03-23 22:15:16.757385000 -0700
> >> @@ -834,6 +834,11 @@
> >> # The patches specified by this variable will be
> >> # applied after the normal distribution patches but
> >> # before those in ${PATCHDIR}.
> >> +# EXTRA_PATCH_TREE - where to find extra 'out-of-tree' patches
> >> +# Points to a directory hierarchy with the same layout
> >> +# as the ports tree, where local patches can be found.
> >> +# This allows a third party to keep their patches in
> >> +# some other source control system if needed.
> >> # PATCH_WRKSRC - Directory to apply patches in.
> >> # Default: ${WRKSRC}
> >> #
> >> @@ -3523,6 +3528,37 @@
> >> esac | ${PATCH} ${PATCH_DIST_ARGS} 'patch_dist_strip $$i' ; \
> >> done )
> >> .endif
> >> +.if defined(EXTRA_PATCH_TREE)
> >> + @set -e ;\
> >> + if [ -d ${EXTRA_PATCH_TREE} ]; then \
> >> + if [ "'${ECHO_CMD}
> >> ${EXTRA_PATCH_TREE}/${PKGORIGIN}/patch-*'" !=
> >> "${EXTRA_PATCH_TREE}/${PKGORIGIN}/patch-*" ]; then \
> >> + ${ECHO_MSG} "===> Applying local patches for
> >> ${PKGNAME}" ; \
> >> + PATCHES_APPLIED="" ; \
> >> + for i in
> >> ${EXTRA_PATCH_TREE}/${PKGORIGIN}/patch-*; do \
> >> + case $$i in \
> >> + *.orig|*.rej|*~|*,v) \
> >> + ${ECHO_MSG} "===>
> >> Ignoring patchfile $$i" ; \
> >> + ;; \
> >> + *) \
> >> + if [
> >> ${PATCH_DEBUG_TMP} = yes ]; then \
> >> + ${ECHO_MSG} "===> Applying local patch $$i" ; \
> >> + fi; \
> >> + if ${PATCH}
> >> ${PATCH_ARGS} < $$i ; then \
> >> + PATCHES_APPLIED="$$PATCHES_APPLIED $$i" ; \
> >> + else \
> >> + ${ECHO_MSG} '${ECHO_CMD} "=> Patch $$i failed to apply cleanly." |
> >> ${SED} "s|${EXTRA_PATCH_TREE}/${PKGORIGIN}/||"' ; \
> >> + if [
> >> x"$$PATCHES_APPLIED" != x"" -a ${PATCH_SILENT} != "yes" ]; then \
> >> + ${ECHO_MSG} '${ECHO_CMD} "=> Patch(es) $$PATCHES_APPLIED applied
> >> cleanly." | ${SED} "s|${EXTRA_PATCH_TREE}/${PKGORIGIN
> >> +}/||g"' ; \
> >> + fi; \
> >> + ${FALSE} ; \
> >> + fi; \
> >> + ;; \
> >> + esac; \
> >> + done; \
> >> + fi; \
> >> + fi
> >> +.endif
> >> .if defined(EXTRA_PATCHES)
> >> @set -e ; \
> >> for i in ${EXTRA_PATCHES}; do \
> >>
> >>
> >> ============
> >>
> >>
> >> this allows me to keep as many patches as I require in a separate
> >> "out-of-tree"
> >> repository, that I can change at will, allowing the actual ports tree
> >> to be
> >> updated as needed with no chances of file collisions etc.
> >>
> >> Basically I keep a second parallel 'shadow' tree containing nothing
> >> but patches, and
> >> the ports tree remains unchanged.
> >>
> >> Is there any interest on taking this onboard?
> > Thank you for this, Julian!
> > Absolutely interested in seeing this. I've been forced
> > to kludge a similar approach. This would be wonderful.
> Well, we'll see what the regular ports people think.. I am not a ports
> committer :-)
You are too kind. For I am but a lowly Maintainer. :-)
>
> >
> > Please do.
> >
> > --Chris
> >>
--Chris
--
More information about the freebsd-ports
mailing list