summaryrefslogtreecommitdiff
blob: 66ad8dd451bbe33cafa4d05a6e3b736a1797c38f (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
#!/bin/bash

if [ -z "$1" ]; then
	echo "Usage: rpm2patches <srcrpm>"
	exit 1
fi


tmpdir=$(mktemp -d)
srcrpm=$(basename ${1})
srctar=${srcrpm/.rpm/.tar}
rpmdir=$(dirname ${1})

pushd ${rpmdir} >/dev/null

echo " * Converting rpm to tar"
rpm2tar ${srcrpm} || exit 2

echo " * Unpacking to ${tmpdir}"
tar xf ${srctar} -C ${tmpdir} || exit 3

popd >/dev/null

echo " * Renaming patches"

pushd ${tmpdir} >/dev/null

krelease=$(grep 'define krelease' kernel-ovz.spec|awk '{print $3}')
patchlist=$(grep '^Patch' kernel-ovz.spec | sed -r 's/Patch([0-9]+): (.*)/\1_\2/g' | sed -r "s/%\{krelease\}/${krelease}/g");

for i in ${patchlist}; do
	nr=${i%%_*}
	src=${i#*_}
	dst=$(printf '%04d_%s\n' ${nr} ${src})
	dst="${dst%.patch}.patch"
	mv ${src} ${dst}
done

popd >/dev/null

echo ">> Patches are at ${tmpdir}"