On 3/24/15 1:45 PM, Chris H wrote:
On Tue, 24 Mar 2015 13:33:15 +0800 Julian Elischer <jul...@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 :-)


Please do.

--Chris


_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to