Mercurial > hg > mercurial-crew-with-dirclash
annotate contrib/buildrpm @ 5377:756a43a30e34
convert: readd --filemap
To handle merges correctly, this revision adds a filemap_source class
that wraps a converter_source and does the work necessary to calculate
the subgraph we're interested in.
The wrapped converter_source must provide a new getchangedfiles method
that, given a revision rev, and an index N, returns the list of files
that are different in rev and its Nth parent.
The implementation depends on the ability to skip some revisions and to
change the parents field of the commit objects that we returned earlier.
To make the conversion restartable, we assume the revisons in the
revmapfile are topologically sorted.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Thu, 04 Oct 2007 23:21:37 -0300 |
parents | 6def53be19fb |
children |
rev | line source |
---|---|
564 | 1 #!/bin/sh |
2 # | |
3 # Build a Mercurial RPM in place. | |
4 # | |
5 # Bryan O'Sullivan <bos@serpentine.com> | |
6 | |
7 root="`hg root 2>/dev/null`" | |
8 specfile=contrib/mercurial.spec | |
9 | |
10 if [ -z "$root" ]; then | |
11 echo 'You are not inside a Mercurial repository!' 1>&2 | |
12 exit 1 | |
13 fi | |
14 | |
15 rpmdir=/tmp/"`basename $root | sed 's/ /_/'`"-rpm | |
16 | |
17 cd "$root" | |
18 rm -rf $rpmdir | |
19 mkdir -p $rpmdir/RPMS | |
20 hg clone "$root" $rpmdir/BUILD | |
21 | |
22 if [ ! -f $specfile ]; then | |
23 echo "Cannot find $specfile!" 1>&2 | |
24 exit 1 | |
25 fi | |
26 | |
27 tmpspec=/tmp/`basename "$specfile"`.$$ | |
28 # Use the most recent tag as the version. | |
29 version=`hg tags | perl -e 'while(<STDIN>){if(/^(\d\S+)/){print$1;exit}}'` | |
30 # Compute the release number as the difference in revision numbers | |
31 # between the tip and the most recent tag. | |
4746
6def53be19fb
buildrpm: fix rpm release number calculation
Adam Spiers <hg@adamspiers.org>
parents:
4745
diff
changeset
|
32 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 | 33 tip=`hg -q tip` |
34 | |
35 # Beat up the spec file | |
36 sed -e 's,^Source:.*,Source: /dev/null,' \ | |
37 -e "s,^Version:.*,Version: $version," \ | |
38 -e "s,^Release:.*,Release: $release," \ | |
39 -e "s,^%prep.*,Changeset: $tip\n\0," \ | |
40 -e 's,^%setup.*,,' \ | |
41 $specfile > $tmpspec | |
42 | |
4745
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
43 cat <<EOF >> $tmpspec |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
44 %changelog |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
45 * `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
|
46 - Automatically built via $0 |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
47 |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
48 EOF |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
49 hg log \ |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
50 --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
|
51 .hgtags \ |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
52 | 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
|
53 -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
|
54 >> $tmpspec |
e5e6dd8ba6bb
buildrpm: auto-generate %changelog in .spec file
Adam Spiers <hg@adamspiers.org>
parents:
564
diff
changeset
|
55 |
564 | 56 rpmbuild --define "_topdir $rpmdir" -bb $tmpspec |
57 if [ $? = 0 ]; then | |
58 rm -rf $tmpspec $rpmdir/BUILD | |
59 mv $rpmdir/RPMS/*/* $rpmdir && rm -r $rpmdir/RPMS | |
60 echo | |
61 echo "Packages are in $rpmdir" | |
62 fi |