Page MenuHomeFreeBSD

D9029.id23572.diff
No OneTemporary

D9029.id23572.diff

Index: Mk/Scripts/do-patch.sh
===================================================================
--- /dev/null
+++ Mk/Scripts/do-patch.sh
@@ -0,0 +1,115 @@
+#!/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_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 | "${dp_PATCH}" $@ ${patch_strip}
+}
+
+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 apply_one_patch ${i} \
+ "${dp_PATCH_DEBUG_TMP:+ Applying ${msg} patch}" \
+ ${dp_PATCH_ARGS} ; 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}"
+
+if [ -n "${dp_EXTRA_PATCH_TREE}" ]; then
+ patch_from_directory "${dp_EXTRA_PATCH_TREE}/${dp_PKGORIGIN}" "local"
+fi
+
Index: Mk/bsd.port.mk
===================================================================
--- Mk/bsd.port.mk
+++ Mk/bsd.port.mk
@@ -749,6 +749,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}
#
@@ -1996,7 +2001,6 @@
PATCH_ARGS?= -d ${PATCH_WRKSRC} -E ${PATCH_STRIP}
PATCH_DIST_ARGS?= --suffix ${DISTORIG} -d ${PATCH_WRKSRC} -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}
.endif
@@ -2010,6 +2014,7 @@
# 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 +2377,10 @@
. 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 +3083,28 @@
.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}" \
+ dp_PATCH_DEBUG_TMP="${PATCH_DEBUG_TMP}" \
+ dp_PATCH_DIST_ARGS="${PATCH_DIST_ARGS}" \
+ dp_PATCH_SILENT="${PATCH_SILENT}" \
+ 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)

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 31, 4:43 AM (18 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35752691
Default Alt Text
D9029.id23572.diff (7 KB)

Event Timeline