summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mk/Scripts/do-patch.sh77
1 files changed, 49 insertions, 28 deletions
diff --git a/Mk/Scripts/do-patch.sh b/Mk/Scripts/do-patch.sh
index 254e60b2188e..a8b63880162b 100644
--- a/Mk/Scripts/do-patch.sh
+++ b/Mk/Scripts/do-patch.sh
@@ -17,6 +17,28 @@ validate_env dp_BZCAT dp_CAT dp_DISTDIR dp_ECHO_MSG dp_EXTRA_PATCHES \
set -u
+has_failed=""
+
+cat_file() {
+ case "$1" in
+ *.Z|*.gz)
+ ${dp_GZCAT} "$1"
+ ;;
+ *.bz2)
+ ${dp_BZCAT} "$1"
+ ;;
+ *.xz)
+ ${dp_XZCAT} "$1"
+ ;;
+ *.zip)
+ ${dp_UNZIP_NATIVE_CMD} -p "$1"
+ ;;
+ *)
+ ${dp_CAT} "$1"
+ ;;
+ esac
+}
+
apply_one_patch() {
local file="$1"
local msg="$2"
@@ -31,26 +53,13 @@ apply_one_patch() {
esac
if [ -n "${msg}" ]; then
- ${dp_ECHO_MSG} "===> ${msg} ${file}${patch_strip:+ with ${patch_strip}}"
+ ${dp_ECHO_MSG} "===> Applying ${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}
+ if ! cat_file "$file" | do_patch "$@" ${patch_strip}; then
+ ${dp_ECHO_MSG} "===> FAILED Applying ${msg} ${file}${patch_strip:+ with ${patch_strip}}"
+ has_failed=1
+ fi
}
do_patch() {
@@ -61,6 +70,7 @@ patch_from_directory() {
local dir="$1"
local msg="$2"
local patches_applied=""
+ local patches_failed=""
if [ -d "${dir}" ]; then
cd "${dir}"
@@ -73,24 +83,29 @@ patch_from_directory() {
for i in patch-*; do
case ${i} in
*.orig|*.rej|*~|*,v)
- ${dp_ECHO_MSG} "===> Ignoring patchfile ${i}"
+ ${dp_ECHO_MSG} "====> IGNORING patchfile ${i}"
;;
*)
if [ -n "${dp_PATCH_DEBUG_TMP}" ]; then
- ${dp_ECHO_MSG} "===> Applying ${msg} patch ${i}"
+ ${dp_ECHO_MSG} "====> Applying ${msg} patch ${i}"
fi
- if do_patch ${dp_PATCH_ARGS} < ${i}; then
+ if cat_file "$i" | do_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
+ ${dp_ECHO_MSG} "====> FAILED Applying ${msg} patch ${i}"
+ patches_failed="${patches_failed} ${i}"
fi
;;
esac
done
+
+ if [ -n "${patches_applied}" -a "${dp_PATCH_SILENT}" != "yes" ]; then
+ ${dp_ECHO_MSG} "===> Cleanly applied ${msg} patch(es) ${patches_applied}"
+ fi
+ if [ -n "${patches_failed}" -a "${dp_PATCH_SILENT}" != "yes" ]; then
+ ${dp_ECHO_MSG} "===> FAILED to apply cleanly ${msg} patch(es) ${patches_failed}"
+ has_failed=1
+ fi
fi
fi
}
@@ -100,7 +115,7 @@ if [ -n "${dp_PATCHFILES}" ]; then
cd "${dp_DISTDIR}"
for i in ${dp_PATCHFILES}; do
apply_one_patch "${i}" \
- "${dp_PATCH_DEBUG_TMP:+ Applying distribution patch}" \
+ "${dp_PATCH_DEBUG_TMP:+ distribution patch}" \
${dp_PATCH_DIST_ARGS}
done
fi
@@ -112,7 +127,7 @@ if [ -n "${dp_EXTRA_PATCHES}" ]; then
"extra patch"
else
apply_one_patch "${i}" \
- "Applying extra patch" \
+ "extra patch" \
${dp_PATCH_ARGS}
fi
done
@@ -124,3 +139,9 @@ if [ -n "${dp_EXTRA_PATCH_TREE}" ]; then
patch_from_directory "${dp_EXTRA_PATCH_TREE}/${dp_PKGORIGIN}" "local"
fi
+if [ -n "$has_failed" ]; then
+ ${dp_ECHO_MSG} "==> SOME PATCHES FAILED TO APPLY CLEANLY."
+ ${dp_ECHO_MSG} "==> Look for FAILED messages above."
+ false
+fi
+