Mercurial > hg > mercurial-crew-with-dirclash
annotate contrib/buildrpm @ 5483:0c43f87baba3 default tip
Fix file-changed-to-dir and dir-to-file commits (issue660).
Allow adding to dirstate files that clash with previously existing
but marked for removal. Protect from reintroducing clashes by revert.
This change doesn't address related issues with update. Current
workaround is to do "clean" update by manually removing conflicting
files/dirs from working directory.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 27 Oct 2007 16:27:55 +0400 |
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 |