Mercurial > hg
annotate contrib/buildrpm @ 11125:7a5a98fc38e9 stable
convert/svn: remove broken but unused copy filtering code
For some reason, if a copy source is deleted in the same revision it is
referenced, it is filtered out. This is silly, because this happens all the
time with move operations. Fortunately, the filtering code is buggy and ends
being a no-op 99% of the time, since it does not delete the right key. Just
remove all this nonsense.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 09 May 2010 19:11:02 +0200 |
parents | 5070e4d57276 |
children | 5337cb17fa1f |
rev | line source |
---|---|
564 | 1 #!/bin/sh |
2 # | |
3 # Build a Mercurial RPM in place. | |
4 # | |
8867
ff817723280a
contrib/buildrpm: Support python 2.4 and 2.6
Mads Kiilerich <mads@kiilerich.com>
parents:
7431
diff
changeset
|
5 # Tested on |
9812
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
6 # - Fedora 8 (with docutils 0.5) |
8867
ff817723280a
contrib/buildrpm: Support python 2.4 and 2.6
Mads Kiilerich <mads@kiilerich.com>
parents:
7431
diff
changeset
|
7 # - Fedora 11 |
9812
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
8 # - OpenSuse 11.2 |
564 | 9 |
9811
c92ac5a56f69
buildrpm: enable to start the script from anywhere
Gilles Moris <gilles.moris@free.fr>
parents:
9810
diff
changeset
|
10 cd "`dirname $0`/.." |
c92ac5a56f69
buildrpm: enable to start the script from anywhere
Gilles Moris <gilles.moris@free.fr>
parents:
9810
diff
changeset
|
11 HG="$PWD/hg" |
c92ac5a56f69
buildrpm: enable to start the script from anywhere
Gilles Moris <gilles.moris@free.fr>
parents:
9810
diff
changeset
|
12 PYTHONPATH="$PWD/mercurial/pure" |
8869
d244ee52ac30
contrib/buildrpm: Don't require installed hg, use local hg with pure extensions
Mads Kiilerich <mads@kiilerich.com>
parents:
8868
diff
changeset
|
13 export PYTHONPATH |
7431
3d827cc616b6
buildrpm: complain when hg command isn't available
Mads Kiilerich <mads@kiilerich.com>
parents:
7277
diff
changeset
|
14 |
564 | 15 specfile=contrib/mercurial.spec |
9812
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
16 if [ ! -f $specfile ]; then |
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
17 echo "Cannot find $specfile!" 1>&2 |
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
18 exit 1 |
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
19 fi |
564 | 20 |
9812
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
21 if [ ! -d .hg ]; then |
564 | 22 echo 'You are not inside a Mercurial repository!' 1>&2 |
23 exit 1 | |
24 fi | |
25 | |
9810
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
26 if $HG id -i | grep '+$' > /dev/null 2>&1; then |
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
27 echo -n "Your local changes will NOT be in the RPM. Continue [y/n] ? " |
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
28 read answer |
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
29 if echo $answer | grep -iv '^y'; then |
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
30 exit |
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
31 fi |
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
32 fi |
326a0a6453a3
buildrpm: warn if there is outstanding uncommitted changes
Gilles Moris <gilles.moris@free.fr>
parents:
9809
diff
changeset
|
33 |
9812
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
34 rpmdir="$PWD/rpmbuild" |
564 | 35 |
36 rm -rf $rpmdir | |
9813
2059795bb5d0
buildrpm: build full RPM package including sources
Gilles Moris <gilles.moris@free.fr>
parents:
9812
diff
changeset
|
37 mkdir -p $rpmdir/SOURCES $rpmdir/SPECS $rpmdir/RPMS $rpmdir/SRPMS $rpmdir/BUILD |
564 | 38 |
9809
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
39 # make setup.py build the version string |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
40 python setup.py build_py -c -d . |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
41 hgversion=`$HG version | sed -ne 's/.*(version \(.*\))$/\1/p'` |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
42 |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
43 if echo $hgversion | grep -- '-' > /dev/null 2>&1; then |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
44 # nightly build case, version is like 1.3.1+250-20b91f91f9ca |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
45 version=`echo $hgversion | cut -d- -f1` |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
46 release=`echo $hgversion | cut -d- -f2 | sed -e 's/+.*//'` |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
47 else |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
48 # official tag, version is like 1.3.1 |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
49 version=`echo $hgversion | sed -e 's/+.*//'` |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
50 release='0' |
ce145bf2ca5e
buildrpm: build from working dir parent and use hg version for RPM versioning
Gilles Moris <gilles.moris@free.fr>
parents:
8906
diff
changeset
|
51 fi |
564 | 52 |
9813
2059795bb5d0
buildrpm: build full RPM package including sources
Gilles Moris <gilles.moris@free.fr>
parents:
9812
diff
changeset
|
53 $HG archive -t tgz $rpmdir/SOURCES/mercurial-$version.tar.gz |
2059795bb5d0
buildrpm: build full RPM package including sources
Gilles Moris <gilles.moris@free.fr>
parents:
9812
diff
changeset
|
54 rpmspec=$rpmdir/SPECS/mercurial-$version.spec |
2059795bb5d0
buildrpm: build full RPM package including sources
Gilles Moris <gilles.moris@free.fr>
parents:
9812
diff
changeset
|
55 |
9812
dd2c95fc4fe5
buildrpm: cleanup script
Gilles Moris <gilles.moris@free.fr>
parents:
9811
diff
changeset
|
56 sed -e "s,^Version:.*,Version: $version," \ |
564 | 57 -e "s,^Release:.*,Release: $release," \ |
9813
2059795bb5d0
buildrpm: build full RPM package including sources
Gilles Moris <gilles.moris@free.fr>
parents:
9812
diff
changeset
|
58 $specfile > $rpmspec |
564 | 59 |
9814
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
60 echo >> $rpmspec |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
61 echo "%changelog" >> $rpmspec |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
62 |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
63 if echo $version | grep '+' > /dev/null 2>&1; then |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
64 latesttag="`echo $version | sed -e 's/+.*//'`" |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
65 $HG log -r .:"$latesttag" -fM \ |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
66 --template '{date|hgdate}\t{author}\t{desc|firstline}\n' | python -c ' |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
67 import sys, time |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
68 |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
69 def datestr(date, format): |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
70 return time.strftime(format, time.gmtime(float(date[0]) - date[1])) |
4754
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
71 |
9814
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
72 changelog = [] |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
73 for l in sys.stdin.readlines(): |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
74 tok = l.split("\t") |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
75 hgdate = tuple(int(v) for v in tok[0].split()) |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
76 changelog.append((datestr(hgdate, "%F"), tok[1], hgdate, tok[2])) |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
77 prevtitle = "" |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
78 for l in sorted(changelog, reverse=True): |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
79 title = "* %s %s" % (datestr(l[2], "%a %b %d %Y"), l[1]) |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
80 if prevtitle != title: |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
81 prevtitle = title |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
82 print |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
83 print title |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
84 print "- %s" % l[3].strip() |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
85 ' >> $rpmspec |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
86 |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
87 else |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
88 |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
89 $HG log \ |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
90 --template '{date|hgdate}\t{author}\t{desc|firstline}\n' \ |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
91 .hgtags | python -c ' |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
92 import sys, time |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
93 |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
94 def datestr(date, format): |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
95 return time.strftime(format, time.gmtime(float(date[0]) - date[1])) |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
96 |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
97 for l in sys.stdin.readlines(): |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
98 tok = l.split("\t") |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
99 hgdate = tuple(int(v) for v in tok[0].split()) |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
100 print "* %s %s\n- %s" % (datestr(hgdate, "%a %b %d %Y"), tok[1], tok[2]) |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
101 ' >> $rpmspec |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
102 |
5070e4d57276
buildrpm: enhance changelog of the RPM file
Gilles Moris <gilles.moris@free.fr>
parents:
9813
diff
changeset
|
103 fi |
4754
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
104 |
9813
2059795bb5d0
buildrpm: build full RPM package including sources
Gilles Moris <gilles.moris@free.fr>
parents:
9812
diff
changeset
|
105 rpmbuild --define "_topdir $rpmdir" -ba $rpmspec --clean |
564 | 106 if [ $? = 0 ]; then |
107 echo | |
7277
3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
Mads Kiilerich <mads@kiilerich.com>
parents:
4755
diff
changeset
|
108 echo "Packages are in $rpmdir:" |
9813
2059795bb5d0
buildrpm: build full RPM package including sources
Gilles Moris <gilles.moris@free.fr>
parents:
9812
diff
changeset
|
109 ls -l $rpmdir/*RPMS/* |
564 | 110 fi |