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