Control: tag 883547 +patch
On 2017-12-04, Adam Borowski wrote:
> If for whatever reason you want or need to build your own kernels, the
> preferred way these days is "make bindeb-pkg".  It is also a good idea
> to use CONFIG_LOCALVERSION_AUTO=y, which marks the exact tree used to
> build the kernel.
>
> However, with this option, the version is _appended_ after local version,
> thus making it hard to add that "-armmp" string.
...
> Just allowing an empty string flavour doesn't work, as it'll still want a -
> after the version.

I think the following patch should work for this, by setting:

Kernel-Flavor: any

or even an empty value:

Kernel-Flavor:

(though, if that device has existing value in all.db, it will not be
overridden by the empty value).

The patch significantly refactors the use of the check_kflavor function,
and the one place it is called. Essentially, rather than trying to
derive the suffix from file, comparing that against a known list of good
suffixes, it merely checks if the targeted kernel version ends with one
of the good suffixes.

I haven't done extensive testing yet, but I could go ahead any push this
myself once I've done more tests, if nobody objects.


live well,
  vagrant


diff --git a/functions b/functions
index b2ae5be..8dc542d 100644
--- a/functions
+++ b/functions
@@ -86,17 +86,17 @@ mtdsize() {
 }
 
 check_kflavors() {
-       local kfile_suffix="$1"
-       shift
-
-       if [ -z "$kfile_suffix" ]; then
+       local kvers="$1"
+       local kflavor="$2"
+       if [ "$kflavor" = "any" ]; then
+               return 0
+       fi
+       # count flavor+ as valid
+       kvers=${kvers%%+}
+       if [ "${kvers}" != "${kvers%%$kflavor}" ]; then
+               # kernel version ended with flavor
                return 0
        fi
-       for kflavor; do
-               if [ "$kfile_suffix" = "$kflavor" ] || [ "$kfile_suffix" = 
"$kflavor+" ]; then
-                       return 0
-               fi
-       done
        return 1
 }
 
@@ -764,18 +764,16 @@ if ! check_supported "$machine"; then
        error "Unsupported platform."
 fi
 
-if kflavors="$(get_machine_field "$machine" "Kernel-Flavors")"; then
-       kfile_suffix=""
-       while [ "$kfile_suffix" != "$kfile" ] ; do
-               kfile_suffix=$(get_kfile_suffix "$kfile" "$kfile_suffix")
-
-               if check_kflavors "$kfile_suffix" $kflavors; then
-                       break
-               fi
-       done
-fi
+kfile_suffix=""
+kflavors=$(get_machine_field "$machine" "Kernel-Flavors")
+for kflavor in ${kflavors:-"any"} ; do
+       if check_kflavors "$kvers" "$kflavor" ; then
+               kfile_suffix="$kflavor"
+               break
+       fi
+done
 
-if [ "$kfile_suffix" = "$kfile" ]; then
+if [ -z "$kfile_suffix" ]; then
        echo "Kernel $kfile does not match any of the expected flavors 
($kflavors), therefore not writing it to flash." >&2
        exit 0
 fi
diff --git a/test_functions b/test_functions
index e75b089..eeea52f 100755
--- a/test_functions
+++ b/test_functions
@@ -116,34 +116,26 @@ add_test test_mtdsize
 test_check_kflavors() {
     (
         . "$functions"
-        if check_kflavors "ksuffix" "kflavor1" "kflavor2"; then
+        if check_kflavors "4.14.0-1-armmp" "armmp-lpae"; then
             echo "Expected check_kflavors to fail with kernel suffix not in 
expected flavors, but it succeeded" >&2
             exit 1
         fi
-        if ! check_kflavors "foo" "kflavor1" "foo" "kflavor3"; then
+        if ! check_kflavors "4.14.0-1-armmp-lpae" "armmp-lpae"; then
             echo "Expected check_kflavors to succeed with kernel suffix in 
expected flavors, but it failed" >&2
             exit 1
         fi
-        if ! check_kflavors "kflavor1-suffix" "klavor1" "kflavor1-suffix" 
"kflavor2"; then
-            echo "Expected check_kflavours to succeed with double-barrelled 
kernel suffix in expected flavours, but it failed" >&2
-            exit 1
-        fi
-        if check_kflavors "kflavor1-suffix" "klavor1" "kflavor2"; then
-            echo "Expected check_kflavours to fail with double-barrelled 
kernel suffix not in expected flavours, but it succeeded" >&2
-            exit 1
-        fi
-        if ! check_kflavors "" "kflavor1" "kflavor2" "kflavor3"; then
-            echo "Expected check_kflavors to succeed with empty kernel suffix, 
but it failed" >&2
-            exit 1
-        fi
-        if check_kflavors "ksuffix+" "kflavor1" "kflavor2"; then
+        if check_kflavors "4.14.0-1-armp-lpae+" "armmp"; then
             echo "Expected check_kflavors to fail with kernel suffix (with 
additional +) not in expected flavors, but it succeeded" >&2
             exit 1
         fi
-        if ! check_kflavors "foo+" "kflavor1" "foo" "kflavor2"; then
+        if ! check_kflavors "4.14.0-1-armmp-lpae+" "armmp-lpae"; then
             echo "Expected check_kflavours to succeed with kernel suffix (with 
additional +) in expected flavors, but it failed" >&2
             exit 1
         fi
+        if ! check_kflavors "4.14.0-1-armmp-lpae" "any"; then
+            echo "Expected check_kflavours to succeed with kernel suffix 'any' 
in expected flavors, but it failed" >&2
+            exit 1
+        fi
     )
 }
 add_test test_check_kflavors

Attachment: signature.asc
Description: PGP signature

Reply via email to