summaryrefslogtreecommitdiffstats
path: root/scripts/pki_patch_maker
blob: 2803d26fbb4c46c27c10ca299180de8207f7770a (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash
## BEGIN COPYRIGHT BLOCK
## (C) 2011 Red Hat, Inc.
## All rights reserved.
## END COPYRIGHT BLOCK

## This shell script must always be executed in the base
## directory located one level above this shell script
cd `dirname $0`/..


##
## Usage statement
##

Usage()
{
	printf "\n"
	printf "Usage:  $0 <startrev> <endrev> <srpm> <basever>\n\n"
	printf "        where:\n\n"
	printf "            <startrev> is the starting SVN revision\n\n"
	printf "            <endrev> is the ending SVN revision\n\n"
	printf "            <srpm> is one of the following:\n\n"
	printf "                 pki-core\n\n"
	printf "            <basever> is the version of the specified <srpm>\n"
	printf "\n"
	printf "IMPORTANT:  Successful use of this script relies upon separation\n"
	printf "            of 'pki-core' check-ins.  All patch files\n"
	printf "            automatically produced by this script\n"
	printf "            should be applied and tested thoroughly before\n"
	printf "            being accepted as proper patches.\n\n"
}


##
## Identify source associated with srpm
##
PKI_CORE="base/ca base/common base/java-tools base/native-tools base/setup base/symkey base/util"


##
## Check for command line argument validity
##

if [ $# -ne 4 ] ; then
    printf "ERROR:  Insufficent parameters!\n"
	Usage
	exit 255
fi

startrev=$1
endrev=$2
srpm=$3
basever=$4

if [ ${srpm} == "pki-core" ]; then
    source=${PKI_CORE}
else
    printf "ERROR:  Invalid <srpm> specified!\n"
	Usage
	exit 255
fi

if [ ${startrev} -ge ${endrev} ]; then
    printf "ERROR:  <startrev> must be less than <endrev>!\n"
	Usage
	exit 255
fi


##
## Always establish a new working directory
##
workingdir=/tmp/pki_patch_maker
if [ ! -e ${workingdir} ]; then
    mkdir ${workingdir}
fi
rm -rf ${workingdir}/${srpm}
mkdir ${workingdir}/${srpm}


##
## Process specified SVN revision numbers
##
for i in ${source}
do
    svn log -q -r${startrev}:${endrev} $i |grep "^r"|awk '{print $1}'|sed 's/r//' >> ${workingdir}/${srpm}/revnos
done

cat ${workingdir}/${srpm}/revnos |sort |uniq > ${workingdir}/${srpm}/revnos2


##
## Generate patches for the specified SRPM based upon SVN revision numbers
##
while read rev0 
do
    svn diff -c $rev0 --diff-cmd /usr/bin/diff -x "-Nurb" > ${workingdir}/${srpm}/${srpm}-${basever}-r${rev0}.patch
done < ${workingdir}/${srpm}/revnos2


##
## Generate sample changelog messages associated with these patches
##
while read rev0
do
    echo `svn log -r $rev0 |grep -i "Resolves"`, $rev0 >> ${workingdir}/${srpm}/changelog
done < ${workingdir}/${srpm}/revnos2