diff options
author | Ludovic Desroches <ludovic.desroches@atmel.com> | 2012-03-14 16:33:57 +0100 |
---|---|---|
committer | Peter Korsgaard <jacmet@sunsite.dk> | 2012-03-21 00:06:26 +0100 |
commit | 6c29e50c94241e5179e0075fc15dab6c073f0d6f (patch) | |
tree | 9435803fa24c0544bf3ba49804b923a0c4c7131f | |
parent | 4f9e82da2a7d30f7e9e39238a3a2f0bd021a7be4 (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-x | support/scripts/apply-patches.sh | 32 |
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 |