summaryrefslogtreecommitdiff
path: root/support/scripts/apply-patches.sh
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2011-08-31 23:35:04 +0200
committerPeter Korsgaard <jacmet@sunsite.dk>2011-09-17 08:15:32 +0200
commit59a326b934737483531c49c99acda7874c72e335 (patch)
tree37535beb370ab735f84fe06ff641da3720211fce /support/scripts/apply-patches.sh
parent20f8a7dec6fc25f6c475163c0273147580128867 (diff)
support: move patch-kernel.sh and rename it
The name "patch-kernel.sh" is a bit stupid, since this script is used to patch everything in Buildroot, not only kernel trees. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'support/scripts/apply-patches.sh')
-rwxr-xr-xsupport/scripts/apply-patches.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/support/scripts/apply-patches.sh b/support/scripts/apply-patches.sh
new file mode 100755
index 000000000..76cb9f753
--- /dev/null
+++ b/support/scripts/apply-patches.sh
@@ -0,0 +1,66 @@
+#! /bin/bash
+# A little script I whipped up to make it easy to
+# patch source trees and have sane error handling
+# -Erik
+#
+# (c) 2002 Erik Andersen <andersen@codepoet.org>
+
+# Set directories from arguments, or use defaults.
+targetdir=${1-.}
+patchdir=${2-../kernel-patches}
+shift 2
+patchpattern=${@-*}
+
+if [ ! -d "${targetdir}" ] ; then
+ echo "Aborting. '${targetdir}' is not a directory."
+ exit 1
+fi
+if [ ! -d "${patchdir}" ] ; then
+ echo "Aborting. '${patchdir}' is not a directory."
+ exit 1
+fi
+
+for i in `cd ${patchdir}; ls -d ${patchpattern} 2> /dev/null` ; do
+ apply="patch -p1 -E -d"
+ uncomp_parm=""
+ if [ -d "${patchdir}/$i" ] ; then
+ type="directory overlay"
+ uncomp="tar cf - --exclude=.svn --no-anchored -C"
+ uncomp_parm="."
+ apply="tar xvf - -C"
+ else case "$i" in
+ *.gz)
+ type="gzip"; uncomp="gunzip -dc"; ;;
+ *.bz)
+ type="bzip"; uncomp="bunzip -dc"; ;;
+ *.bz2)
+ type="bzip2"; uncomp="bunzip2 -dc"; ;;
+ *.zip)
+ type="zip"; uncomp="unzip -d"; ;;
+ *.Z)
+ type="compress"; uncomp="uncompress -c"; ;;
+ *.tgz)
+ type="tar gzip"; uncomp="gunzip -dc"; apply="tar xvf - -C"; ;;
+ *.tar)
+ type="tar"; uncomp="cat"; apply="tar xvf - -C"; ;;
+ *)
+ type="plaintext"; uncomp="cat"; ;;
+ esac fi
+ echo ""
+ echo "Applying ${i} using ${type}: "
+ echo ${i} | cat >> ${targetdir}/.applied_patches_list
+ ${uncomp} ${patchdir}/${i} ${uncomp_parm} | ${apply} ${targetdir}
+ if [ $? != 0 ] ; then
+ echo "Patch failed! Please fix $i!"
+ exit 1
+ fi
+done
+
+# Check for rejects...
+if [ "`find $targetdir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then
+ echo "Aborting. Reject files found."
+ exit 1
+fi
+
+# Remove backup files
+find $targetdir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \;