Mercurial > hg
view contrib/packaging/buildrpm @ 51143:d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
This function will be used outside of the log command
(in templatekw, used by hgweb, for which logcmdutil is not available).
Let's move this function together with the rest of the diff-related
utils instead.
author | pacien <pacien.trangirard@pacien.net> |
---|---|
date | Wed, 15 Nov 2023 02:39:53 +0100 |
parents | 97205cf0ee4d |
children |
line wrap: on
line source
#!/bin/bash -e # # Build a Mercurial RPM from the current repo, mainly for Fedora/CentOS/RHEL . $(dirname $0)/packagelib.sh BUILD=1 RPMBUILDDIR="$PWD/rpmbuild" PYTHONEXE=python3 DOCUTILSPACKAGE=python3-docutils while [ "$1" ]; do case "$1" in --prepare ) shift BUILD= ;; --python) shift PYTHONEXE=$1 shift ;; --withpython | --with-python) shift PYTHONVER=2.7.16 PYTHONMD5=f1a2ace631068444831d01485466ece0 PYTHONEXE=python ;; --docutilspackage) shift DOCUTILSPACKAGE="$1" shift ;; --rpmbuilddir ) shift RPMBUILDDIR="$1" shift ;; * ) echo "Invalid parameter $1!" 1>&2 exit 1 ;; esac done cd "`dirname $0`/../.." specfile=$PWD/contrib/packaging/mercurial.spec if [ ! -f $specfile ]; then echo "Cannot find $specfile!" 1>&2 exit 1 fi if [ ! -d .hg ]; then echo 'You are not inside a Mercurial repository!' 1>&2 exit 1 fi gethgversion $PYTHONEXE if [ -z "$type" ] ; then release=1 else release=0.9_$type fi if [ -n "$distance" ] ; then release=$release+${distance}_${node} fi if [ "$PYTHONVER" ]; then release=$release+$PYTHONVER RPMPYTHONVER=$PYTHONVER else RPMPYTHONVER=%{nil} fi mkdir -p $RPMBUILDDIR/{SOURCES,BUILD,SRPMS,RPMS} $PYTHONEXE $HG archive -t tgz $RPMBUILDDIR/SOURCES/mercurial-$version-$release.tar.gz if [ "$PYTHONVER" ]; then ( mkdir -p build cd build PYTHON_SRCFILE=Python-$PYTHONVER.tgz [ -f $PYTHON_SRCFILE ] || curl -Lo $PYTHON_SRCFILE http://www.python.org/ftp/python/$PYTHONVER/$PYTHON_SRCFILE if [ "$PYTHONMD5" ]; then echo "$PYTHONMD5 $PYTHON_SRCFILE" | md5sum -w -c fi ln -f $PYTHON_SRCFILE $RPMBUILDDIR/SOURCES/$PYTHON_SRCFILE DOCUTILSVER=`sed -ne "s/^%global docutilsname docutils-//p" $specfile` DOCUTILS_SRCFILE=docutils-$DOCUTILSVER.tar.gz [ -f $DOCUTILS_SRCFILE ] || curl -Lo $DOCUTILS_SRCFILE http://downloads.sourceforge.net/project/docutils/docutils/$DOCUTILSVER/$DOCUTILS_SRCFILE DOCUTILSMD5=`sed -ne "s/^%global docutilsmd5 //p" $specfile` if [ "$DOCUTILSMD5" ]; then echo "$DOCUTILSMD5 $DOCUTILS_SRCFILE" | md5sum -w -c fi ln -f $DOCUTILS_SRCFILE $RPMBUILDDIR/SOURCES/$DOCUTILS_SRCFILE ) fi mkdir -p $RPMBUILDDIR/SPECS rpmspec=$RPMBUILDDIR/SPECS/mercurial.spec sed -e "s,^Version:.*,Version: $version," \ -e "s,^Release:.*,Release: $release," \ -e "s/^%global pythonexe .*/%global pythonexe $PYTHONEXE/" \ $specfile > $rpmspec echo >> $rpmspec echo "%changelog" >> $rpmspec if echo $version | grep '+' > /dev/null 2>&1; then latesttag="`echo $version | sed -e 's/+.*//'`" $PYTHONEXE $HG log -r .:"$latesttag" -fM \ --template '{date|hgdate}\t{author}\t{desc|firstline}\n' | python -c ' import sys, time def datestr(date, format): return time.strftime(format, time.gmtime(float(date[0]) - date[1])) changelog = [] for l in sys.stdin.readlines(): tok = l.split("\t") hgdate = tuple(int(v) for v in tok[0].split()) changelog.append((datestr(hgdate, "%F"), tok[1], hgdate, tok[2])) prevtitle = "" for l in sorted(changelog, reverse=True): title = "* %s %s" % (datestr(l[2], "%a %b %d %Y"), l[1]) if prevtitle != title: prevtitle = title print print(title) print("- %s" % l[3].strip()) ' >> $rpmspec else $PYTHONEXE $HG log \ --template '{date|hgdate}\t{author}\t{desc|firstline}\n' \ .hgtags | $PYTHONEXE -c ' import sys, time def datestr(date, format): return time.strftime(format, time.gmtime(float(date[0]) - date[1])) for l in sys.stdin.readlines(): tok = l.split("\t") hgdate = tuple(int(v) for v in tok[0].split()) print("* %s %s\n- %s" % (datestr(hgdate, "%a %b %d %Y"), tok[1], tok[2])) ' >> $rpmspec fi sed -i \ -e "s/^%define withpython.*$/%define withpython $RPMPYTHONVER/" \ $rpmspec sed -i \ -e "s/^%global pythondocutils.*$/%global pythondocutils $DOCUTILSPACKAGE/" \ $rpmspec if [ "$BUILD" ]; then rpmbuild --define "_topdir $RPMBUILDDIR" -ba $rpmspec --clean if [ $? = 0 ]; then echo echo "Built packages for $version-$release:" find $RPMBUILDDIR/*RPMS/ -type f -newer $rpmspec fi else echo "Prepared sources for $version-$release $rpmspec are in $RPMBUILDDIR/SOURCES/ - use like:" echo "rpmbuild --define '_topdir $RPMBUILDDIR' -ba $rpmspec --clean" fi