mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-27 05:10:36 +00:00
3bbc00468a
Instead of: EXTRA_PATCHES= ${PATCHDIR}/feat-foo-patch-file.c \ ${PATCHDIR}/feat-foo-patch-file.h \ ${PATCHDIR}/feat-foo-patch-file2.c Move those files to ${PATCHDIR}/feat-foo/, name them patch-*, and set: EXTRA_PATCHES= ${PATCHDIR}/feat-foo Approved by: bdrewery Sponsored by: Absolight Differential Revision: https://reviews.freebsd.org/D10855
127 lines
2.6 KiB
Bash
127 lines
2.6 KiB
Bash
#!/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
|
|
if [ -d "${i}" ]; then
|
|
patch_from_directory "${i}" \
|
|
"extra patch"
|
|
else
|
|
apply_one_patch "${i}" \
|
|
"Applying extra patch" \
|
|
${dp_PATCH_ARGS}
|
|
fi
|
|
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
|
|
|