Blame apply-patches

Bernhard M. Wiedemann 6ebc4a
#!/bin/sh
Bernhard M. Wiedemann 6ebc4a
#
Bernhard M. Wiedemann 6ebc4a
# Given a series.conf file and a directory with patches, applies them to the
Bernhard M. Wiedemann 6ebc4a
# current directory.
Bernhard M. Wiedemann 6ebc4a
# Used by kernel-source.spec.in and kernel-binary.spec.in
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
USAGE="$0 [--vanilla] <series.conf> <patchdir> [symbol ...]"
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
set -e
Bernhard M. Wiedemann 6ebc4a
set -o pipefail
Bernhard M. Wiedemann 6ebc4a
vanilla=false
Bernhard M. Wiedemann 6ebc4a
if test "$1" == "--vanilla"; then
Bernhard M. Wiedemann 6ebc4a
	vanilla=true
Bernhard M. Wiedemann 6ebc4a
	shift
Bernhard M. Wiedemann 6ebc4a
fi
Bernhard M. Wiedemann 6ebc4a
if test $# -lt 2; then
Bernhard M. Wiedemann 6ebc4a
	echo "$USAGE" >&2
Bernhard M. Wiedemann 6ebc4a
	exit 1
Bernhard M. Wiedemann 6ebc4a
fi
Bernhard M. Wiedemann 6ebc4a
DIR="${0%/*}"
Bernhard M. Wiedemann 6ebc4a
SERIES_CONF=$1
Bernhard M. Wiedemann 6ebc4a
PATCH_DIR=$2
Bernhard M. Wiedemann 6ebc4a
shift 2
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
trap 'rm -f "$series"' EXIT
Bernhard M. Wiedemann 6ebc4a
series=$(mktemp)
Bernhard M. Wiedemann 6ebc4a
# support for patches in patches.addon/series
Bernhard M. Wiedemann 6ebc4a
cp "$SERIES_CONF" "$series"
Bernhard M. Wiedemann 6ebc4a
if ! $vanilla && test -e "$PATCH_DIR/patches.addon/series"; then
Bernhard M. Wiedemann 6ebc4a
	# make it user-friendly and automatically prepend "patches.addon/"
Bernhard M. Wiedemann 6ebc4a
	# if there is no "/"
Bernhard M. Wiedemann 6ebc4a
	sed -r 's|^([[:space:]]*)([^#[:space:]][^/]*)$|\1patches.addon/\2|' \
Bernhard M. Wiedemann 6ebc4a
		"$PATCH_DIR/patches.addon/series" >>"$series"
Bernhard M. Wiedemann 6ebc4a
fi
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
(
Bernhard M. Wiedemann 6ebc4a
	echo "trap 'echo \"*** patch \$_ failed ***\"' ERR"
Bernhard M. Wiedemann 6ebc4a
	echo "set -ex"
Bernhard M. Wiedemann 6ebc4a
	"$DIR"/guards "$@" <"$series" | \
Bernhard M. Wiedemann 6ebc4a
	if $vanilla; then
Bernhard M. Wiedemann 6ebc4a
		sed -rn '/^patches\.(kernel\.org|rpmify)\//p'
Bernhard M. Wiedemann 6ebc4a
	else
Bernhard M. Wiedemann 6ebc4a
		cat
Bernhard M. Wiedemann 6ebc4a
	fi |\
Bernhard M. Wiedemann 6ebc4a
	sed "s|^|patch -s -F0 -E -p1 --no-backup-if-mismatch -i $PATCH_DIR/|"
Bernhard M. Wiedemann 6ebc4a
) | sh
Bernhard M. Wiedemann 6ebc4a