summaryrefslogtreecommitdiff
path: root/copy-patches.sh
blob: b40867cafe0ee5ce822223b31c617c7083df7d70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash -

set -e

# Maintainer script to copy patches from the git repo to the current
# directory.  Use it like this:
#   ./copy-patches.sh

project=guestfs-tools
rhel_version=9.4

# Check we're in the right directory.
if [ ! -f $project.spec ]; then
    echo "$0: run this from the directory containing '$project.spec'"
    exit 1
fi

case `id -un` in
    rjones) git_checkout=$HOME/d/$project-rhel-$rhel_version ;;
    lacos)  git_checkout=$HOME/src/v2v/$project ;;
    *)      git_checkout=$HOME/d/$project-rhel-$rhel_version ;;
esac
if [ ! -d $git_checkout ]; then
    echo "$0: $git_checkout does not exist"
    echo "This script is only for use by the maintainer when preparing a"
    echo "$project release on RHEL."
    exit 1
fi

# Get the base version of the project.
version=`grep '^Version:' $project.spec | awk '{print $2}'`
tag="v$version"

# Remove any existing patches.
git rm -f [0-9]*.patch ||:
rm -f [0-9]*.patch

# Get the patches.
(
  cd $git_checkout
  rm -f [0-9]*.patch
  git -c core.abbrev=9 format-patch -O/dev/null --subject-prefix=PATCH -N \
      --submodule=diff --no-signature --patience $tag
)
mv $git_checkout/[0-9]*.patch .

# Remove any not to be applied.
rm -f *NOT-FOR-RPM*.patch

# Add the patches.
git add [0-9]*.patch

# Print out the patch lines.
echo
echo "--- Copy the following text into $project.spec file"
echo

echo "# Patches."
for f in [0-9]*.patch; do
    n=`echo $f | awk -F- '{print $1}'`
    echo "Patch$n:     $f"
done

echo
echo "--- End of text"