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