apply-patches: only use first field of line for series file
authorRyan Barnett <ryanbarnett3@gmail.com>
Tue, 8 Dec 2015 22:27:56 +0000 (23:27 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 12 Dec 2015 13:34:47 +0000 (14:34 +0100)
A series file for quilt has a valid syntax of:

  fixes/autoconf.diff -p1
  fixes/doc-html-local-css.diff -p1
  fixes/gnu-inline.diff -p1

However, with the current way that a series file is handled, it will
error out because the -p1 is tried as a file. This is because in the
for loop that iterates the files, we only look for comment lines. Then
each line is used within a bash for loop which uses spaces a
delimiter. In order to fix this, we should only use the string that
comes before a space in the series file.

Note that the format allows for any arbitrary depth to the -pN field.
But since we'll have only one package with -pN fields, and all will be
-p1, we for now always assume -p1. This will have to be fixed whenever
we get a package with other values.

Signed-off-by: Ryan Barnett <ryanbarnett3@gmail.com>
[yann.morin.1998@free.fr: expand comment about the format of a series
file and how we interpret it]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
CC: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
support/scripts/apply-patches.sh

index 2edf05466fc2fd5f755deea84d4eb52539d5a824..aa13e882955cfefb4e282d622246d821a34ab795 100755 (executable)
@@ -115,7 +115,13 @@ function scan_patchdir {
     # 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
+        # The format of a series file accepts a second field that is
+        # used to specify the number of directory components to strip
+        # when applying the patch, in the form -pN (N an integer >= 0)
+        # We assume this field to always be -p1 whether it is present
+        # or missing.
+        series_patches="`grep -Ev "^#" ${path}/series | cut -d ' ' -f1 2> /dev/null`"
+        for i in $series_patches; do
             apply_patch "$path" "$i" series
         done
     else