diff options
author | mat <mat@FreeBSD.org> | 2017-01-17 00:47:00 +0800 |
---|---|---|
committer | mat <mat@FreeBSD.org> | 2017-01-17 00:47:00 +0800 |
commit | a910cc17afab15cfc4090a2681968937a99ddcfa (patch) | |
tree | 3b8ea3a783597953a4328bd04ea5a6b9b48b5db6 /Mk | |
parent | 9bf7d5a787467dacc8f0c2c2fd1cc2be3fa69e06 (diff) | |
download | freebsd-ports-gnome-a910cc17afab15cfc4090a2681968937a99ddcfa.tar.gz freebsd-ports-gnome-a910cc17afab15cfc4090a2681968937a99ddcfa.tar.zst freebsd-ports-gnome-a910cc17afab15cfc4090a2681968937a99ddcfa.zip |
Extract do-patch into a separate script.
PR: 215761
Submitted by: mat
Exp-run by: antoine
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D9029
Diffstat (limited to 'Mk')
-rw-r--r-- | Mk/Scripts/do-patch.sh | 117 | ||||
-rw-r--r-- | Mk/bsd.port.mk | 106 |
2 files changed, 149 insertions, 74 deletions
diff --git a/Mk/Scripts/do-patch.sh b/Mk/Scripts/do-patch.sh new file mode 100644 index 000000000000..25f7dfcbdadb --- /dev/null +++ b/Mk/Scripts/do-patch.sh @@ -0,0 +1,117 @@ +#!/bin/sh +# $FreeBSD$ +# +# MAINTAINER: portmgr@FreeBSD.org + +set -e + +. "${dp_SCRIPTSDIR}/functions.sh" + +validate_env dp_BZCAT dp_CAT dp_DISTDIR dp_ECHO_MSG dp_EXTRA_PATCHES \ + dp_EXTRA_PATCH_TREE dp_GZCAT dp_OPSYS dp_PATCH dp_PATCHDIR \ + dp_PATCHFILES dp_PATCH_ARGS dp_PATCH_DEBUG_TMP dp_PATCH_DIST_ARGS \ + dp_PATCH_SILENT dp_PATCH_WRKSRC dp_PKGNAME dp_PKGORIGIN \ + dp_UNZIP_NATIVE_CMD dp_XZCAT + +[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_DO_PATCH}" ] && set -x + +set -u + +apply_one_patch() { + local file="$1" + local msg="$2" + shift 2 + local patch_strip="" + + case ${file} in + *:-p[0-9]) + patch_strip=${file##*:} + file=${file%:-p[0-9]} + ;; + esac + + if [ -n "${msg}" ]; then + ${dp_ECHO_MSG} "===> ${msg} ${file}${patch_strip:+ with ${patch_strip}}" + fi + + case "${file}" in + *.Z|*.gz) + ${dp_GZCAT} "${file}" + ;; + *.bz2) + ${dp_BZCAT} "${file}" + ;; + *.xz) + ${dp_XZCAT} "${file}" + ;; + *.zip) + ${dp_UNZIP_NATIVE_CMD} -p "${file}" + ;; + *) + ${dp_CAT} "${file}" + ;; + esac | do_patch "$@" ${patch_strip} +} + +do_patch() { + "${dp_PATCH}" -d "${dp_PATCH_WRKSRC}" "$@" +} + +patch_from_directory() { + local dir="$1" + local msg="$2" + + if [ -d "${dir}" ]; then + cd "${dir}" + + if [ "$(echo patch-*)" != "patch-*" ]; then + + ${dp_ECHO_MSG} "===> Applying ${msg} patches for ${dp_PKGNAME}" + + PATCHES_APPLIED="" + + for i in patch-*; do + case ${i} in + *.orig|*.rej|*~|*,v) + ${dp_ECHO_MSG} "===> Ignoring patchfile ${i}" + ;; + *) + if [ -n "${dp_PATCH_DEBUG_TMP}" ]; then + ${dp_ECHO_MSG} "===> Applying ${msg} patch ${i}" + fi + if do_patch ${dp_PATCH_ARGS} < ${i}; then + PATCHES_APPLIED="${PATCHES_APPLIED} ${i}" + else + ${dp_ECHO_MSG} "=> ${msg} patch ${i} failed to apply cleanly." + if [ -n "${PATCHES_APPLIED}" -a "${dp_PATCH_SILENT}" != "yes" ]; then + ${dp_ECHO_MSG} "=> Patch(es) ${PATCHES_APPLIED} applied cleanly." + fi + false + fi + ;; + esac + done + fi + fi +} + +if [ -n "${dp_PATCHFILES}" ]; then + ${dp_ECHO_MSG} "===> Applying distribution patches for ${dp_PKGNAME}" + cd "${dp_DISTDIR}" + for i in ${dp_PATCHFILES}; do + apply_one_patch "${i}" \ + "${dp_PATCH_DEBUG_TMP:+ Applying distribution patch}" \ + ${dp_PATCH_DIST_ARGS} + done +fi + +if [ -n "${dp_EXTRA_PATCHES}" ]; then + for i in ${dp_EXTRA_PATCHES}; do + apply_one_patch "${i}" \ + "Applying extra patch" \ + ${dp_PATCH_ARGS} + done +fi + +patch_from_directory "${dp_PATCHDIR}" "${dp_OPSYS}" + diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index f67c12b5d037..8fc714d83aa1 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -1993,12 +1993,11 @@ PATCH_STRIP?= -p0 PATCH_DIST_STRIP?= -p0 .if defined(PATCH_DEBUG) PATCH_DEBUG_TMP= yes -PATCH_ARGS?= -d ${PATCH_WRKSRC} -E ${PATCH_STRIP} -PATCH_DIST_ARGS?= --suffix ${DISTORIG} -d ${PATCH_WRKSRC} -E ${PATCH_DIST_STRIP} +PATCH_ARGS?= -E ${PATCH_STRIP} +PATCH_DIST_ARGS?= --suffix ${DISTORIG} -E ${PATCH_DIST_STRIP} .else -PATCH_DEBUG_TMP= no -PATCH_ARGS?= -d ${PATCH_WRKSRC} --forward --quiet -E ${PATCH_STRIP} -PATCH_DIST_ARGS?= --suffix ${DISTORIG} -d ${PATCH_WRKSRC} --forward --quiet -E ${PATCH_DIST_STRIP} +PATCH_ARGS?= --forward --quiet -E ${PATCH_STRIP} +PATCH_DIST_ARGS?= --suffix ${DISTORIG} --forward --quiet -E ${PATCH_DIST_STRIP} .endif .if !defined(QUIET) PATCH_SILENT= PATCH_SILENT=yes @@ -2010,6 +2009,7 @@ PATCH_DIST_ARGS+= --batch # Prevent breakage with VERSION_CONTROL=numbered PATCH_ARGS+= -V simple +PATCH_DIST_ARGS+= -V simple .if defined(PATCH_CHECK_ONLY) PATCH_ARGS+= -C @@ -2372,8 +2372,10 @@ _PATCH_SITES_ALL+= ${_PATCH_SITES_${_group}} . endfor . endif _PATCHFILES:= ${_PATCHFILES} ${_P_file} -. if !empty(_P_strip) -_PATCH_DIST_STRIP_CASES:= ${_PATCH_DIST_STRIP_CASES} ("${_P_file}") printf %s "${_P_strip}" ;; +. if empty(_P_strip) +_PATCHFILES2:= ${_PATCHFILES2} ${_P_file} +. else +_PATCHFILES2:= ${_PATCHFILES2} ${_P_file}:${_P_strip} . endif .endfor _P_groups= @@ -3076,73 +3078,29 @@ do-extract: .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 ;; \ - *.zip) ${UNZIP_NATIVE_CMD} -p $$i ;; \ - *) ${CAT} $$i ;; \ - esac | ${PATCH} ${PATCH_DIST_ARGS} `patch_dist_strip $$i` ; \ - done ) -.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 $$patch_file in \ - *.Z|*.gz) ${GZCAT} $$patch_file ;; \ - *.bz2) ${BZCAT} $$patch_file ;; \ - *.xz) ${XZCAT} $$patch_file ;; \ - *.zip) ${UNZIP_NATIVE_CMD} -p $$patch_file ;; \ - *) ${CAT} $$patch_file ;; \ - esac | ${PATCH} ${PATCH_ARGS} $$patch_strip ; \ - 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"" -a ${PATCH_SILENT} != "yes" ]; then \ - ${ECHO_MSG} `${ECHO_CMD} "=> Patch(es) $$PATCHES_APPLIED applied cleanly." | ${SED} "s|${PATCHDIR}/||g"` ; \ - fi; \ - ${FALSE} ; \ - fi; \ - ;; \ - esac; \ - done; \ - fi; \ - fi + @${SETENV} \ + dp_BZCAT="${BZCAT}" \ + dp_CAT="${CAT}" \ + dp_DISTDIR="${_DISTDIR}" \ + dp_ECHO_MSG="${ECHO_MSG}" \ + dp_EXTRA_PATCHES="${EXTRA_PATCHES}" \ + dp_EXTRA_PATCH_TREE="${EXTRA_PATCH_TREE}" \ + dp_GZCAT="${GZCAT}" \ + dp_OPSYS="${OPSYS}" \ + dp_PATCH="${PATCH}" \ + dp_PATCHDIR="${PATCHDIR}" \ + dp_PATCHFILES="${_PATCHFILES2}" \ + dp_PATCH_ARGS=${PATCH_ARGS:Q} \ + dp_PATCH_DEBUG_TMP="${PATCH_DEBUG_TMP}" \ + dp_PATCH_DIST_ARGS="${PATCH_DIST_ARGS}" \ + dp_PATCH_SILENT="${PATCH_SILENT}" \ + dp_PATCH_WRKSRC=${PATCH_WRKSRC} \ + dp_PKGNAME="${PKGNAME}" \ + dp_PKGORIGIN="${PKGORIGIN}" \ + dp_SCRIPTSDIR="${SCRIPTSDIR}" \ + dp_UNZIP_NATIVE_CMD="${UNZIP_NATIVE_CMD}" \ + dp_XZCAT="${XZCAT}" \ + ${SH} ${SCRIPTSDIR}/do-patch.sh .endif .if !target(run-autotools-fixup) |