Index: bsd.port.mk =================================================================== --- bsd.port.mk (revision 334394) +++ bsd.port.mk (working copy) @@ -2682,9 +2682,11 @@ . endif . endfor . endif +apply-patch-${_P_file}_DIR= ${_DISTDIR} _PATCHFILES:= ${_PATCHFILES} ${_P_file} +apply-patch-${_P_file}_PATCH_ARGS= ${PATCH_DIST_ARGS} . if !empty(_P_strip) -_PATCH_DIST_STRIP_CASES:= ${_PATCH_DIST_STRIP_CASES} ("${_P_file}") printf %s "${_P_strip}" ;; +apply-patch-${_P_file}_PATCH_ARGS+= ${_P_strip} . endif .endfor _P_groups= @@ -3629,70 +3631,41 @@ .endif .endif +_REGULAR_PATCHES!= test -d ${PATCHDIR} && (cd ${PATCHDIR}; ${ECHO_CMD} patch-*) || ${ECHO_CMD} +.ORDER: ${_PATCHFILES:S,^,apply-patch-,g} ${EXTRA_PATCHES:S,^${PATCHDIR}/,apply-patch-,g} ${_REGULAR_PATCHES:S,^,apply-patch-,g} +.PHONY: ${_PATCHFILES:S,^,apply-patch-,g} ${EXTRA_PATCHES:S,^${PATCHDIR}/,apply-patch-,g} ${_REGULAR_PATCHES:S,^,apply-patch-,g} +.for p in ${_PATCHFILES} ${EXTRA_PATCHES:S,^${PATCHDIR}/,,g} ${_REGULAR_PATCHES} +do-patch: apply-patch-${p} + +apply-patch-${p}: + @set -e ; \ + if [ "${${.TARGET}_DIR}" = "" ]; then \ + cd ${PATCHDIR} ; \ + else \ + cd ${${.TARGET}_DIR} ; \ + fi ; \ + if [ "${${.TARGET}_PATCH_ARGS}" = "" ]; then \ + patch_args="${PATCH_ARGS}" ; \ + else \ + patch_args="${${.TARGET}_PATCH_ARGS}" ; \ + fi ; \ + patch=${.TARGET:S/^apply-patch-//} ;\ + ${ECHO_MSG} "===> Applying patch: $$patch" ; \ + test -f $$patch || (${ECHO_CMD} "No such patch" && ${FALSE}); \ + ret=0; \ + case $$patch in \ + *.Z|*.gz) ${GZCAT} $$patch; ret=$$? ;; \ + *.bz2) ${BZCAT} $$patch; ret=$$? ;; \ + *.xz) ${XZCAT} $$patch ; ret=$$? ;; \ + *) ${CAT} $$patch ; ret=$$? ;; \ + esac | ${PATCH} $$patch_args ; \ + [ $$ret -eq 0 ] || ${FALSE} +.endfor + .if !target(do-patch) do-patch: -.if defined(PATCHFILES) - @${ECHO_MSG} "===> Applying distribution patches for ${PKGNAME}" - @(set -e; \ - cd ${_DISTDIR}; \ - patch_dist_strip () { \ - case "$$1" in \ - ${_PATCH_DIST_STRIP_CASES} \ - esac; \ - }; \ - for i in ${_PATCHFILES}; do \ - if [ ${PATCH_DEBUG_TMP} = yes ]; then \ - ${ECHO_MSG} "===> Applying distribution patch $$i" ; \ - fi ; \ - case $$i in \ - *.Z|*.gz) ${GZCAT} $$i ;; \ - *.bz2) ${BZCAT} $$i ;; \ - *.xz) ${XZCAT} $$i ;; \ - *) ${CAT} $$i ;; \ - esac | ${PATCH} ${PATCH_DIST_ARGS} `patch_dist_strip $$i` ; \ - done ) + @${DO_NADA} .endif -.if defined(EXTRA_PATCHES) - @set -e ; \ - for i in ${EXTRA_PATCHES}; do \ - ${ECHO_MSG} "===> Applying extra patch $$i" ; \ - case $$i in \ - *.Z|*.gz) ${GZCAT} $$i ;; \ - *.bz2) ${BZCAT} $$i ;; \ - *.xz) ${XZCAT} $$i ;; \ - *) ${CAT} $$i ;; \ - esac | ${PATCH} ${PATCH_ARGS} ; \ - done -.endif - @set -e ;\ - if [ -d ${PATCHDIR} ]; then \ - if [ "`${ECHO_CMD} ${PATCHDIR}/patch-*`" != "${PATCHDIR}/patch-*" ]; then \ - ${ECHO_MSG} "===> Applying ${OPSYS} patches for ${PKGNAME}" ; \ - PATCHES_APPLIED="" ; \ - for i in ${PATCHDIR}/patch-*; do \ - case $$i in \ - *.orig|*.rej|*~|*,v) \ - ${ECHO_MSG} "===> Ignoring patchfile $$i" ; \ - ;; \ - *) \ - if [ ${PATCH_DEBUG_TMP} = yes ]; then \ - ${ECHO_MSG} "===> Applying ${OPSYS} 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|${PATCHDIR}/||"` ; \ - if [ x"$$PATCHES_APPLIED" != x"" ]; then \ - ${ECHO_MSG} `${ECHO_CMD} "=> Patch(es) $$PATCHES_APPLIED applied cleanly." | ${SED} "s|${PATCHDIR}/||g"` ; \ - fi; \ - ${FALSE} ; \ - fi; \ - ;; \ - esac; \ - done; \ - fi; \ - fi -.endif .if !target(run-autotools-fixup) run-autotools-fixup: