Index: bsd.port.mk =================================================================== --- bsd.port.mk (revision 367574) +++ bsd.port.mk (working copy) @@ -795,7 +795,9 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # ${WRKDIR}, then point EXTRA_PATCHES to them. # The patches specified by this variable will be # applied after the normal distribution patches but -# before those in ${PATCHDIR}. +# before those in ${PATCHDIR}. Items in this list can +# be individual patch files or directories. In the case +# of a directory, all patch-* files in it are applied. # PATCH_WRKSRC - Directory to apply patches in. # Default: ${WRKSRC} # @@ -3384,18 +3386,28 @@ do-patch: .endif .if defined(EXTRA_PATCHES) @set -e ; \ - for i in ${EXTRA_PATCHES}; do \ - case $$i in \ - *:-p[0-9]) patch_file=$${i%:*} ; patch_strip=$${i##*:} ;; \ - *) patch_file=$$i ;; \ - esac ; \ - ${ECHO_MSG} "===> Applying extra patch $$patch_file" ; \ - case $$patfh_file in \ - *.Z|*.gz) ${GZCAT} $$patch_file ;; \ - *.bz2) ${BZCAT} $$patch_file ;; \ - *.xz) ${XZCAT} $$patch_file ;; \ - *) ${CAT} $$patch_file ;; \ - esac | ${PATCH} ${PATCH_ARGS} $$patch_strip ; \ + for j in ${EXTRA_PATCHES}; do \ + if [ -d $$j ] ; then \ + if [ "`${ECHO_CMD} $$j/patch-*`" == "$$j/patch-*" ]; then \ + continue ; \ + fi ; \ + patch_list=$$j/patch-* ; \ + else \ + patch_list=$$j ; \ + fi ; \ + for i in $$patch_list; do \ + case $$i in \ + *:-p[0-9]) patch_file=$${i%:*} ; patch_strip=$${i##*:} ;; \ + *) patch_file=$$i ;; \ + esac ; \ + ${ECHO_MSG} "===> Applying extra patch $$patch_file" ; \ + case $$patch_file in \ + *.Z|*.gz) ${GZCAT} $$patch_file ;; \ + *.bz2) ${BZCAT} $$patch_file ;; \ + *.xz) ${XZCAT} $$patch_file ;; \ + *) ${CAT} $$patch_file ;; \ + esac | ${PATCH} ${PATCH_ARGS} $$patch_strip ; \ + done \ done .endif @set -e ;\