##// END OF EJS Templates
buildrpm: introduce --prepare for preparing without actually building rpms
Mads Kiilerich -
r22435:4c4385eb default
parent child Browse files
Show More
@@ -1,103 +1,122 b''
1 1 #!/bin/sh -e
2 2 #
3 3 # Build a Mercurial RPM from the current repo
4 4 #
5 5 # Tested on
6 6 # - Fedora 20
7 7 # - CentOS 5
8 8 # - centOS 6
9 9
10 BUILD=1
11 while [ "$1" ]; do
12 case "$1" in
13 --prepare )
14 shift
15 BUILD=
16 ;;
17 * )
18 echo "Invalid parameter $1!" 1>&2
19 exit 1
20 ;;
21 esac
22 done
23
10 24 cd "`dirname $0`/.."
11 25
12 26 specfile=contrib/mercurial.spec
13 27 if [ ! -f $specfile ]; then
14 28 echo "Cannot find $specfile!" 1>&2
15 29 exit 1
16 30 fi
17 31
18 32 if [ ! -d .hg ]; then
19 33 echo 'You are not inside a Mercurial repository!' 1>&2
20 34 exit 1
21 35 fi
22 36
23 37 # build local hg and use it
24 38 python setup.py build_py -c -d .
25 39 HG="$PWD/hg"
26 40 PYTHONPATH="$PWD/mercurial/pure"
27 41 export PYTHONPATH
28 42
29 43 rpmdir="$PWD/rpmbuild"
30 44
31 45 rm -rf $rpmdir
32 46 mkdir -p $rpmdir/SOURCES $rpmdir/SPECS $rpmdir/RPMS $rpmdir/SRPMS $rpmdir/BUILD
33 47
34 48 hgversion=`$HG version | sed -ne 's/.*(version \(.*\))$/\1/p'`
35 49
36 50 if echo $hgversion | grep -- '-' > /dev/null 2>&1; then
37 51 # nightly build case, version is like 1.3.1+250-20b91f91f9ca
38 52 version=`echo $hgversion | cut -d- -f1`
39 53 release=`echo $hgversion | cut -d- -f2 | sed -e 's/+.*//'`
40 54 else
41 55 # official tag, version is like 1.3.1
42 56 version=`echo $hgversion | sed -e 's/+.*//'`
43 57 release='0'
44 58 fi
45 59
46 60 $HG archive -t tgz $rpmdir/SOURCES/mercurial-$version-$release.tar.gz
47 61 rpmspec=$rpmdir/SPECS/mercurial.spec
48 62
49 63 sed -e "s,^Version:.*,Version: $version," \
50 64 -e "s,^Release:.*,Release: $release," \
51 65 $specfile > $rpmspec
52 66
53 67 echo >> $rpmspec
54 68 echo "%changelog" >> $rpmspec
55 69
56 70 if echo $version | grep '+' > /dev/null 2>&1; then
57 71 latesttag="`echo $version | sed -e 's/+.*//'`"
58 72 $HG log -r .:"$latesttag" -fM \
59 73 --template '{date|hgdate}\t{author}\t{desc|firstline}\n' | python -c '
60 74 import sys, time
61 75
62 76 def datestr(date, format):
63 77 return time.strftime(format, time.gmtime(float(date[0]) - date[1]))
64 78
65 79 changelog = []
66 80 for l in sys.stdin.readlines():
67 81 tok = l.split("\t")
68 82 hgdate = tuple(int(v) for v in tok[0].split())
69 83 changelog.append((datestr(hgdate, "%F"), tok[1], hgdate, tok[2]))
70 84 prevtitle = ""
71 85 for l in sorted(changelog, reverse=True):
72 86 title = "* %s %s" % (datestr(l[2], "%a %b %d %Y"), l[1])
73 87 if prevtitle != title:
74 88 prevtitle = title
75 89 print
76 90 print title
77 91 print "- %s" % l[3].strip()
78 92 ' >> $rpmspec
79 93
80 94 else
81 95
82 96 $HG log \
83 97 --template '{date|hgdate}\t{author}\t{desc|firstline}\n' \
84 98 .hgtags | python -c '
85 99 import sys, time
86 100
87 101 def datestr(date, format):
88 102 return time.strftime(format, time.gmtime(float(date[0]) - date[1]))
89 103
90 104 for l in sys.stdin.readlines():
91 105 tok = l.split("\t")
92 106 hgdate = tuple(int(v) for v in tok[0].split())
93 107 print "* %s %s\n- %s" % (datestr(hgdate, "%a %b %d %Y"), tok[1], tok[2])
94 108 ' >> $rpmspec
95 109
96 110 fi
97 111
98 rpmbuild --define "_topdir $rpmdir" -ba $rpmspec --clean
99 if [ $? = 0 ]; then
100 echo
101 echo "Packages are in $rpmdir:"
102 ls -l $rpmdir/*RPMS/*
112 if [ "$BUILD" ]; then
113 rpmbuild --define "_topdir $rpmdir" -ba $rpmspec --clean
114 if [ $? = 0 ]; then
115 echo
116 echo "Built packages for $version-$release:"
117 find $rpmdir/*RPMS/ -type f -newer $rpmspec
118 fi
119 else
120 echo "Prepared sources for $version-$release $rpmspec are in $rpmdir/SOURCES/ - use like:"
121 echo "rpmbuild --define '_topdir $rpmdir' -ba $rpmspec --clean"
103 122 fi
General Comments 0
You need to be logged in to leave comments. Login now