contrib/buildrpm
author Benoit Boissinot <bboissin@gmail.com>
Thu, 01 Dec 2005 10:48:29 -0600
changeset 1564 34579a67fa71
parent 564 ced5f5ceb172
child 4745 e5e6dd8ba6bb
permissions -rwxr-xr-x
Re: [PATCH 2 of 3] remove walk warning about nonexistent files On 11/15/05, Robin Farine <robin.farine@terminus.org> wrote: > # HG changeset patch > # User Robin Farine <robin.farine@terminus.org> > # Node ID ce0a3cc309a8d1e81278ec01a3c61fbb99c691f4 > # Parent feb77e0951e74d75c213e8471f107fdcc124c876 > remove walk warning about nonexistent files > > diff -r feb77e0951e7 -r ce0a3cc309a8 mercurial/dirstate.py > --- a/mercurial/dirstate.py Tue Nov 15 08:42:45 2005 +0100 > +++ b/mercurial/dirstate.py Tue Nov 15 08:59:50 2005 +0100 > @@ -336,9 +336,6 @@ > try: > st = os.lstat(f) > except OSError, inst: > - if ff not in dc: self.ui.warn('%s: %s\n' % ( > - util.pathto(self.getcwd(), ff), > - inst.strerror)) > continue > if stat.S_ISDIR(st.st_mode): > cmp1 = (lambda x, y: cmp(x[1], y[1])) this break some tests, a better fix would be to check if ff can be a directory prefix from files in dc you can try the attached patch. Benoit

#!/bin/sh
#
# Build a Mercurial RPM in place.
#
# Bryan O'Sullivan <bos@serpentine.com>

root="`hg root 2>/dev/null`"
specfile=contrib/mercurial.spec

if [ -z "$root" ]; then
    echo 'You are not inside a Mercurial repository!' 1>&2
    exit 1
fi

rpmdir=/tmp/"`basename $root | sed 's/ /_/'`"-rpm

cd "$root"
rm -rf $rpmdir
mkdir -p $rpmdir/RPMS
hg clone "$root" $rpmdir/BUILD

if [ ! -f $specfile ]; then
    echo "Cannot find $specfile!" 1>&2
    exit 1
fi

tmpspec=/tmp/`basename "$specfile"`.$$
# Use the most recent tag as the version.
version=`hg tags | perl -e 'while(<STDIN>){if(/^(\d\S+)/){print$1;exit}}'`
# Compute the release number as the difference in revision numbers
# between the tip and the most recent tag.
release=`hg tags | perl -e 'while(<STDIN>){/^(\S+)\s+(\d+)/;if($1eq"tip"){$t=$2}else{print$t-$2+1;exit}}'`
tip=`hg -q tip`

# Beat up the spec file
sed -e 's,^Source:.*,Source: /dev/null,' \
    -e "s,^Version:.*,Version: $version," \
    -e "s,^Release:.*,Release: $release," \
    -e "s,^%prep.*,Changeset: $tip\n\0," \
    -e 's,^%setup.*,,' \
    $specfile > $tmpspec

rpmbuild --define "_topdir $rpmdir" -bb $tmpspec
if [ $? = 0 ]; then
    rm -rf $tmpspec $rpmdir/BUILD
    mv $rpmdir/RPMS/*/* $rpmdir && rm -r $rpmdir/RPMS
    echo
    echo "Packages are in $rpmdir"
fi