Brandon Philips 243e88
#!/bin/bash
Brandon Philips 243e88
# Add suse Kernel repo headers to a patch created using git-format-patch 
Brandon Philips 243e88
#
Brandon Philips 243e88
# Brandon Philips <bphilips@suse.de>
Brandon Philips 243e88
Brandon Philips 243e88
PATH=$(dirname $0):$PATH
Brandon Philips 243e88
Brandon Philips 243e88
if [ $# -lt 1 ]; then
Michal Marek 395ba5
	echo "usage: $0 <filename> <kernel clone> <repo url>"
Brandon Philips 243e88
	echo "Add relevant headers for patches pulled from git"
Brandon Philips 243e88
	echo ""
Brandon Philips 243e88
	echo "Adds a Git-commit: tag using the From header"
Brandon Philips 243e88
	echo ""
Brandon Philips 243e88
	echo "Adds a Patch-mainline: tag if <kernel path> is given"
Brandon Philips 243e88
	echo "	a useful tree name can be provided in <kernel name>"
Brandon Philips 243e88
	echo "	otherwise basename <kernel path> will be used"
Brandon Philips 243e88
	echo ""
Brandon Philips 243e88
	echo "example usage"
Brandon Philips 243e88
	echo "-------------"
Brandon Philips 243e88
	echo "$0 NULL-pointer-fix.patch"
Brandon Philips 243e88
	echo "$0 NULL-pointer-fix.patch ~/kernel/linux-2.6"
Brandon Philips 243e88
	echo "$0 NULL-pointer-fix.patch ~/kernel/linux-2.6 pci 2.6"
Brandon Philips 243e88
Brandon Philips 243e88
	exit 1
Brandon Philips 243e88
fi
Brandon Philips 243e88
Brandon Philips 243e88
FILE=$1
Brandon Philips 243e88
shift
Brandon Philips 243e88
Brandon Philips 243e88
if [ ! -f $FILE ]; then
Brandon Philips 243e88
	echo "No such file $1"
Brandon Philips 243e88
	exit 2
Brandon Philips 243e88
fi
Brandon Philips 243e88
Michal Marek a43c4e
# try the git cherry-pick -x marker first
Michal Marek a43c4e
commit=$(sed -n 's/^(cherry picked from commit \([0-9a-f]*\))/\1/p' "$FILE")
Michal Marek a43c4e
if test -z "$commit"; then
Michal Marek a43c4e
	commit=$(head -n1 $FILE | sed -n "s%From\s\([0-9a-f]*\)\s.*%\1%p")
Michal Marek a43c4e
else
Michal Marek a43c4e
	sed -i '/^(cherry picked from commit/d' "$FILE"
Michal Marek a43c4e
fi
Brandon Philips 243e88
if [ "z$commit" = "z" ]; then
Brandon Philips 243e88
	echo "$FILE doesn't look like a patch from git"
Brandon Philips 243e88
else
Brandon Philips 243e88
	patch-tag -A git-commit="$commit" $FILE
Brandon Philips 243e88
fi
Brandon Philips 243e88
Brandon Philips 243e88
if [ $# -eq 0 ]; then
Benjamin Poirier 842e04
	libdir=$(dirname "$(readlink -f "$0")")
Benjamin Poirier 842e04
	DIR=$("$libdir"/linux_git.sh) || exit 1
Jan Kara 85916d
else
Jan Kara 85916d
	DIR=$1
Jan Kara 85916d
	shift
Brandon Philips 243e88
fi
Brandon Philips 243e88
Brandon Philips 243e88
commit=$(patch-tag -p git-commit $FILE | grep -i "git-commit:" | sed "s%.*:\s\(.*\)%\1%g")
Brandon Philips 243e88
Brandon Philips 243e88
if [ "z$commit" = "z" ]; then
Brandon Philips 243e88
	echo "No git-commit tag in $FILE"
Brandon Philips 243e88
	exit 3
Brandon Philips 243e88
fi
Brandon Philips 243e88
Benjamin Poirier a6d98d
export GIT_DIR=$DIR
Brandon Philips 243e88
Brandon Philips 243e88
if [ ! -d $GIT_DIR ]; then
Brandon Philips 243e88
	echo "No such directory $GIT_DIR"
Brandon Philips 243e88
	echo 4
Brandon Philips 243e88
fi
Brandon Philips 243e88
Michal Marek 4ed8f9
mainline=$(git describe --contains --match 'v*' $commit 2> /dev/null)
Michal Marek 4ed8f9
if test -z "$mainline"; then
Michal Marek 4ed8f9
	mainline=$(git describe --contains  $commit 2> /dev/null)
Michal Marek 4ed8f9
fi
Michal Marek b087b9
mainline=${mainline%%[~^]*}
Brandon Philips 243e88
Brandon Philips 243e88
if [ "z$mainline" = "z" ]; then
Brandon Philips 243e88
	if git show $commit > /dev/null 2> /dev/null; then
Michal Marek 395ba5
		patch-tag -A Patch-mainline="Queued in subsystem maintainer repository" "$FILE"
Michal Marek 395ba5
		if test -n "$1"; then
Michal Marek 395ba5
			patch-tag -A Git-repo="$*" "$FILE"
Brandon Philips 243e88
		else
Michal Marek 395ba5
			echo "warning: Non-mainline commit in $FILE but no repo url specified"
Brandon Philips 243e88
		fi
Brandon Philips 243e88
		exit 0
Brandon Philips 243e88
	else
Brandon Philips 243e88
		echo "$commit from $FILE does not exist in $DIR"
Brandon Philips 243e88
		exit 5
Brandon Philips 243e88
	fi
Brandon Philips 243e88
fi
Brandon Philips 243e88
Brandon Philips 243e88
patch-tag -A Patch-mainline="$mainline" $FILE