patch to bsd.ports.mk to support out-of-tree patches.
Julian Elischer
julian at freebsd.org
Tue Mar 24 08:06:44 UTC 2015
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 :-)
>
> Please do.
>
> --Chris
>>
More information about the freebsd-ports
mailing list