patch to bsd.ports.mk to support out-of-tree patches.
Chris H
bsd-lists at bsdforge.com
Tue Mar 24 05:43:14 UTC 2015
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.
Please do.
--Chris
>
>
> Julian
>
>
>
>
> _______________________________________________
> freebsd-ports at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe at freebsd.org"
More information about the freebsd-ports
mailing list