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