mac80211: add a maintenance script for upstream backport commits
authorFelix Fietkau <nbd@openwrt.org>
Sat, 18 Oct 2014 17:39:04 +0000 (17:39 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 18 Oct 2014 17:39:04 +0000 (17:39 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 42953

package/kernel/mac80211/scripts/import-backports.sh [new file with mode: 0755]

diff --git a/package/kernel/mac80211/scripts/import-backports.sh b/package/kernel/mac80211/scripts/import-backports.sh
new file mode 100755 (executable)
index 0000000..d056eb6
--- /dev/null
@@ -0,0 +1,109 @@
+#!/usr/bin/env bash
+BASE=$1; shift
+
+usage() {
+       echo "Usage: $0 NNN <file>..."
+       exit 1
+}
+
+check_number() {
+       case "$1" in
+               [0-9][0-9][0-9]) return 0;;
+       esac
+       return 1;
+}
+
+patch_header()
+{
+       awk '
+       /^(---|\*\*\*|Index:)[ \t][^ \t]|^diff -/ \
+               { exit }
+               { print }
+       '
+}
+
+strip_diffstat()
+{
+       awk '
+       /#? .* \| / \
+               { eat = eat $0 "\n"
+                 next }
+       /^#? .* files? changed(, .* insertions?\(\+\))?(, .* deletions?\(-\))?/ \
+               { eat = ""
+                 next }
+               { print eat $0
+                 eat = "" }
+       '
+}
+
+strip_trailing_whitespace() {
+       sed -e 's:[ '$'\t'']*$::'
+}
+
+fixup_header() {
+       awk '
+               /^From / { next }
+               /^Subject: / {
+                       sub("Subject: \\[[^\]]*\\]", "Subject: [PATCH]")
+               }
+               { print }
+       '
+}
+
+check_number "$BASE" || usage
+
+quilt series > /dev/null || {
+       echo "Not in quilt directory"
+       exit 2
+}
+
+get_next() {
+       NEW=$BASE
+       quilt series | while read CUR; do
+               [ -n "$CUR" ] || break
+               CUR=${CUR%%-*}
+               check_number "$CUR" || continue
+               [ "$CUR" -lt "$NEW" ] && continue
+               [ "$CUR" -ge "$(($BASE + 100))" ] && continue
+               NEW="$(($CUR + 1))"
+               echo $NEW
+       done | tail -n1
+}
+
+CUR=`get_next`
+CUR="${CUR:-$BASE}"
+
+while [ -n "$1" ]; do
+       FILE="$1"; shift
+       NAME="$(basename $FILE)"
+       NAME="${NAME#[0-9]*-}"
+       echo -n "Processing patch $NAME: "
+
+       [ -e "$FILE" ] || {
+               echo "file $FILE not found"
+               exit 1
+       }
+
+       grep -qE "$NAME$" patches/series && {
+               echo "already applied"
+               continue
+       }
+
+       quilt new "$CUR-$NAME" || exit 1
+       patch_header < "$FILE" |
+               strip_diffstat |
+               strip_trailing_whitespace |
+               fixup_header > "patches/$CUR-$NAME"
+
+       quilt fold < "$FILE" || {
+               cp "$FILE" ./cur_patch
+               echo "patch $FILE failed to apply, copied to ./cur_patch"
+               exit 1
+       }
+
+       quilt refresh -p ab --no-index --no-timestamps
+
+       CUR="$(($CUR + 1))"
+done
+
+exit 0