aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/scripts/import-backports.sh
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-10-18 17:39:04 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-10-18 17:39:04 +0000
commitdfb392d4db3605f1683c3c27a601a203bd7aed41 (patch)
tree67f2e073d39394c09e967109ff9a1fa0889e5bd4 /package/kernel/mac80211/scripts/import-backports.sh
parent2a685ec414827d135ee2788e42eed8021349aae1 (diff)
downloadmaster-187ad058-dfb392d4db3605f1683c3c27a601a203bd7aed41.tar.gz
master-187ad058-dfb392d4db3605f1683c3c27a601a203bd7aed41.tar.bz2
master-187ad058-dfb392d4db3605f1683c3c27a601a203bd7aed41.zip
mac80211: add a maintenance script for upstream backport commits
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42953 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211/scripts/import-backports.sh')
-rwxr-xr-xpackage/kernel/mac80211/scripts/import-backports.sh109
1 files changed, 109 insertions, 0 deletions
diff --git a/package/kernel/mac80211/scripts/import-backports.sh b/package/kernel/mac80211/scripts/import-backports.sh
new file mode 100755
index 0000000000..d056eb6d04
--- /dev/null
+++ b/package/kernel/mac80211/scripts/import-backports.sh
@@ -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