Mercurial > hg
annotate contrib/buildrpm @ 7277:3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
mercurial.spec had bitrotted. These changes makes it possible to build an rpm that is usable.
Only minimal changes has been made, and there is plenty of room for improvement.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Mon, 06 Oct 2008 14:41:22 +0200 |
parents | 6def53be19fb |
children | 3d827cc616b6 |
rev | line source |
---|---|
564 | 1 #!/bin/sh |
2 # | |
3 # Build a Mercurial RPM in place. | |
7277
3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
Mads Kiilerich <mads@kiilerich.com>
parents:
4755
diff
changeset
|
4 # Known to work on: |
3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
Mads Kiilerich <mads@kiilerich.com>
parents:
4755
diff
changeset
|
5 # - Fedora 9 |
564 | 6 # |
7 # Bryan O'Sullivan <bos@serpentine.com> | |
8 | |
9 root="`hg root 2>/dev/null`" | |
10 specfile=contrib/mercurial.spec | |
11 | |
12 if [ -z "$root" ]; then | |
13 echo 'You are not inside a Mercurial repository!' 1>&2 | |
14 exit 1 | |
15 fi | |
16 | |
7277
3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
Mads Kiilerich <mads@kiilerich.com>
parents:
4755
diff
changeset
|
17 rpmdir=/tmp/"`basename $root | sed 's/ /_/'`"-rpm # FIXME: Insecure /tmp handling |
564 | 18 |
19 cd "$root" | |
20 rm -rf $rpmdir | |
21 mkdir -p $rpmdir/RPMS | |
22 hg clone "$root" $rpmdir/BUILD | |
23 | |
24 if [ ! -f $specfile ]; then | |
25 echo "Cannot find $specfile!" 1>&2 | |
26 exit 1 | |
27 fi | |
28 | |
7277
3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
Mads Kiilerich <mads@kiilerich.com>
parents:
4755
diff
changeset
|
29 tmpspec=/tmp/`basename "$specfile"`.$$ # FIXME: Insecure /tmp handling |
564 | 30 # Use the most recent tag as the version. |
31 version=`hg tags | perl -e 'while(<STDIN>){if(/^(\d\S+)/){print$1;exit}}'` | |
32 # Compute the release number as the difference in revision numbers | |
33 # between the tip and the most recent tag. | |
4755
6def53be19fb
buildrpm: fix rpm release number calculation
Adam Spiers <hg@adamspiers.org>
parents:
4754
diff
changeset
|
34 release=`hg tags | perl -e 'while(<STDIN>){($tag,$id)=/^(\S+)\s+(\d+)/;if($tag eq "tip"){$tip = $id}elsif($tag=~/^\d/){print $tip-$id+1;exit}}'` |
564 | 35 tip=`hg -q tip` |
36 | |
37 # Beat up the spec file | |
38 sed -e 's,^Source:.*,Source: /dev/null,' \ | |
39 -e "s,^Version:.*,Version: $version," \ | |
40 -e "s,^Release:.*,Release: $release," \ | |
41 -e "s,^%prep.*,Changeset: $tip\n\0," \ | |
42 -e 's,^%setup.*,,' \ | |
43 $specfile > $tmpspec | |
44 | |
4754
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
45 cat <<EOF >> $tmpspec |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
46 %changelog |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
47 * `date +'%a %b %d %Y'` `hg showconfig ui.username` $version-$release |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
48 - Automatically built via $0 |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
49 |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
50 EOF |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
51 hg log \ |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
52 --template '* {date|rfc822date} {author}\n- {desc|firstline}\n\n' \ |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
53 .hgtags \ |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
54 | sed -e 's/^\(\* [MTWFS][a-z][a-z]\), \([0-3][0-9]\) \([A-Z][a-z][a-z]\) /\1 \3 \2 /' \ |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
55 -e '/^\* [MTWFS][a-z][a-z] /{s/ [012][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9]\{4\}//}' \ |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
56 >> $tmpspec |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
57 |
564 | 58 rpmbuild --define "_topdir $rpmdir" -bb $tmpspec |
59 if [ $? = 0 ]; then | |
60 rm -rf $tmpspec $rpmdir/BUILD | |
61 mv $rpmdir/RPMS/*/* $rpmdir && rm -r $rpmdir/RPMS | |
62 echo | |
7277
3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
Mads Kiilerich <mads@kiilerich.com>
parents:
4755
diff
changeset
|
63 echo "Packages are in $rpmdir:" |
3e000e2bf5f6
Make contrib/buildrpm work on Fedora 9.
Mads Kiilerich <mads@kiilerich.com>
parents:
4755
diff
changeset
|
64 ls -l $rpmdir/*.rpm |
564 | 65 fi |