Michal Marek 411abb
#! /bin/bash
Michal Marek 411abb
Michal Marek 411abb
export LANG=POSIX
Michal Marek 411abb
Michal Marek 411abb
path=(.)
Michal Marek 411abb
while test $# -gt 0; do
Michal Marek 411abb
	case "$1" in
Michal Marek 411abb
	--patches)
Michal Marek 411abb
		path[${#path[@]}]=$2
Michal Marek 411abb
		shift 2
Michal Marek 411abb
		;;
Michal Marek 411abb
	*)
Michal Marek 411abb
		echo "Usage $0 [--patches <dir>]" >&2
Michal Marek 411abb
		exit 1
Michal Marek 411abb
	esac
Michal Marek 411abb
done
Michal Marek 411abb
if test "${path[*]}" = "."; then
Michal Marek 411abb
	path=(. ..)
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Marek 411abb
Michal Marek 411abb
source $(dirname $0)/config.sh
Michal Marek dca146
parse_srcversion()
Michal Marek dca146
{
Michal Marek dca146
	local IFS=.
Michal Marek dca146
	set -- ${SRCVERSION%%-*}
Michal Marek dca146
	VERSION=$1
Michal Marek 95c997
	PATCHLEVEL=${2:-0}
Michal Marek 95c997
	SUBLEVEL=${3:-0}
Michal Marek a0a138
	EXTRAVERSION=${SRCVERSION#${SRCVERSION%%-*}}
Michal Marek dca146
}
Michal Marek dca146
parse_srcversion
Michal Marek 411abb
Michal Marek 411abb
EXTRA_SYMBOLS=$(set -- $([ -e $(dirname $0)/extra-symbols ] && cat $(dirname $0)/extra-symbols) ; echo $*)
Michal Marek 411abb
Michal Marek 411abb
series=$(mktemp)
Michal Marek 411abb
tmp_files="$series"
Michal Marek 411abb
trap 'rm -rf $tmp_files' EXIT
Michal Marek 411abb
warned=false
Michal Marek 411abb
while read patch; do
Michal Marek 411abb
	dir=${patch%/*}
Michal Marek 411abb
	for p in "${path[@]}"; do
Michal Marek 014bd2
		if test -e "$p/$patch"; then
Michal Marek 411abb
			echo "$p/$patch"
Michal Marek 411abb
			continue 2
Michal Marek 411abb
		fi
Michal Marek 411abb
	done
Michal Marek 411abb
	for p in "${path[@]}"; do
Michal Marek 411abb
		if test -e "$p/$dir.tar.bz2"; then
Michal Marek 411abb
			echo "unpacking $p/$dir.tar.bz2" >&2
Michal Marek 411abb
			if ! $warned; then
Michal Marek 411abb
				echo "pass --patches <directory with unpacked tarballs> to avoid this" >&2
Michal Marek 411abb
				warned=true
Michal Marek 411abb
			fi
Michal Marek 411abb
			tmp_files="$tmp_files $dir"
Michal Marek 411abb
			tar -xjf "$p/$dir.tar.bz2"
Michal Marek 411abb
			echo "$patch"
Michal Marek 411abb
			continue 2
Michal Marek 411abb
		fi
Michal Marek 411abb
	done
Michal Marek 411abb
	echo "Can't find $patch" >&2
Michal Marek 411abb
	exit 1
Michal Marek 411abb
done >"$series" < <($(dirname $0)/guards $EXTRA_SYMBOLS 
Michal Marek 411abb
Michal Marek 411abb
# Parse all the changes to KERNELRELEASE out of all patches and
Michal Marek 411abb
# convert them to shell code that can be evaluated. Evaluate it.
Michal Marek 411abb
eval "$(
Michal Marek 411abb
    <"$series" xargs awk '
Jeff Mahoney 52dd0f
    /^--- |^\+\+\+ / \
Michal Marek 411abb
	{ M = match($2, /^[^\/]+\/Makefile( \t|$)/) }
Michal Marek 411abb
    M && /^+(VERSION|PATCHLEVEL|SUBLEVEL|EXTRAVERSION)/ \
Michal Marek 411abb
	{ print }
Michal Marek 411abb
    ' \
Michal Marek 411abb
    | sed -e 's,^+,,' -e 's, *= *\(.*\),="\1",'
Michal Marek 411abb
)"
Michal Marek 95c997
Michal Marek 95c997
echo "$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"