Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 42953master
parent
f0d9e712e4
commit
e641bb026b
@ -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 |
Loading…
Reference in new issue