summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Desroches <ludovic.desroches@atmel.com>2012-03-14 16:33:57 +0100
committerPeter Korsgaard <jacmet@sunsite.dk>2012-03-21 00:06:26 +0100
commit6c29e50c94241e5179e0075fc15dab6c073f0d6f (patch)
tree9435803fa24c0544bf3ba49804b923a0c4c7131f
parent4f9e82da2a7d30f7e9e39238a3a2f0bd021a7be4 (diff)
apply-patches.sh: use series file to apply patches in proper order
If a series file is present use it to determine the proper order to apply patches instead of using ls sorting order. Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com> Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> add a series file with a wrong patch order into an archive containing several patches whose correct order is the alphabetical one Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
-rwxr-xr-xsupport/scripts/apply-patches.sh32
1 files changed, 20 insertions, 12 deletions
diff --git a/support/scripts/apply-patches.sh b/support/scripts/apply-patches.sh
index 1f632aa88..968e2a406 100755
--- a/support/scripts/apply-patches.sh
+++ b/support/scripts/apply-patches.sh
@@ -58,19 +58,27 @@ function scan_patchdir {
shift 1
patches=${@-*}
- for i in `cd $path; ls -d $patches 2> /dev/null` ; do
- if [ -d "${path}/$i" ] ; then
- echo "${path}/$i skipped"
- elif echo "$i" | grep -q -E "\.tar(\..*)?$|\.tbz2?$|\.tgz$" ; then
- unpackedarchivedir="$builddir/.patches-$(basename $i)-unpacked"
- rm -rf "$unpackedarchivedir" 2> /dev/null
- mkdir "$unpackedarchivedir"
- tar -C "$unpackedarchivedir" --strip-components=1 -xaf "${path}/$i"
- scan_patchdir "$unpackedarchivedir"
- else
+ # If there is a series file, use it instead of using ls sort order
+ # to apply patches. Skip line starting with a dash.
+ if [ -e "${path}/series" ] ; then
+ for i in `grep -Ev "^#" ${path}/series 2> /dev/null` ; do
apply_patch "$path" "$i" || exit 1
- fi
- done
+ done
+ else
+ for i in `cd $path; ls -d $patches 2> /dev/null` ; do
+ if [ -d "${path}/$i" ] ; then
+ echo "${path}/$i skipped"
+ elif echo "$i" | grep -q -E "\.tar(\..*)?$|\.tbz2?$|\.tgz$" ; then
+ unpackedarchivedir="$builddir/.patches-$(basename $i)-unpacked"
+ rm -rf "$unpackedarchivedir" 2> /dev/null
+ mkdir "$unpackedarchivedir"
+ tar -C "$unpackedarchivedir" --strip-components=1 -xaf "${path}/$i"
+ scan_patchdir "$unpackedarchivedir"
+ else
+ apply_patch "$path" "$i" || exit 1
+ fi
+ done
+ fi
}
scan_patchdir $patchdir $patchpattern