From 2fafe645c12eaa0ed713720e385e42bc62ca0f3a Mon Sep 17 00:00:00 2001 From: Siggi Langauf Date: Sat, 25 May 2002 18:30:44 +0000 Subject: =?UTF-8?q?added=20"easy=20release"=20shell=20script.=20Hope=20tha?= =?UTF-8?q?t=20will=20make=20G=C3=BCnter=20release=20more=20often=20;-)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CVS patchset: 1938 CVS date: 2002/05/25 18:30:44 --- misc/make_release.sh | 256 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100755 misc/make_release.sh diff --git a/misc/make_release.sh b/misc/make_release.sh new file mode 100755 index 000000000..fad6e226f --- /dev/null +++ b/misc/make_release.sh @@ -0,0 +1,256 @@ +#!/bin/sh +# +# make_release.sh - make and upload a new xine-lib release + + +this=misc/make_release.sh +tmpfile=/tmp/make_release.$$.tmp + +# first of all: check directory structure +######################################### + +case "$0" in + /*) + location="$0" + ;; + *) + location=`pwd`/"$0" + ;; +esac + +location=`echo "$location"|sed -e 's|//|/|g' -e 's|/./|/|g'` + +if test -r "$location"; then + topdir=`echo "$location"|sed -e 's|/'$this'$||'` +else + echo 'Help! Unable to find myself.' + echo 1 +fi + +cd "$topdir" + +if test -r CVS/Root; then + cvsroot=`cat CVS/Root` + case "$cvsroot" in + *cvs.xine.sf.net:/cvsroot/xine*) ;; + *cvs.xine.sourceforgef.net:/cvsroot/xine*) ;; + *) + echo "This doesn't look like a xine CVS checkout. aborting..." + exit 1 + ;; + esac +else + echo "This must be called from a CVS checkout." + exit 1 +fi + +if [ `basename $topdir` = xine-lib ]; then + echo "good, this seems to be a xine-lib CVS checkout." +else + echo "This script is intended to be called from xine-lib CVS trees only." + exit 1 +fi + +superdir=`dirname "$topdir"` +if test -d "$superdir/xine_www"; then + echo "okay, found xine_www module. Let's check that..." + www_dir="$superdir/xine_www" + cd "$www_dir" + if test -r CVS/Root && grep cvsroot/xine CVS/Root >/dev/null 2>&1; then + echo "okay, looks like a xine_www CVS checkout." + else + echo "this doesn't seem to be a xine_www CVS checkout. Aborting." + echo "please retry after checking out like this:" + echo "cd $superdir; cvs -d cvs.xine.sf.net:/cvsroot/xine co xine_www" + exit 1 + fi +else + echo "Unable to find a xine_www checkout in $superdir" + exit 1 +fi + + +# utility function definitions +############################### +yesno() { + echo "$* (y/n)?" + read answer + case "$answer" in + y*) + true;; + n*) + false;; + *) + echo "'pardon?? neither yes nor no? assuming no..." + false;; + esac +} + +cvs_up_check(){ +cvs up -dP >$tmpfile 2>&1 +merged="`grep ^M\ $tmpfile`" +patched="`grep ^P\ $tmpfile`" +conflict="`grep ^C\ $tmpfile`" +unknown="`grep -v ^M\ $tmpfile|grep -v ^\?\ |grep -v ^cvs\ server:|grep -v ^P\ |grep -v ^C\ `" + +if test -n "$conflict"; then + echo "The following files have had local changes (conflicts) that could" + echo "NOT be merged by CVS:" + echo "$conflict" + echo "This means your local tree is in an inconsistent state." + echo "Releasing this doesn't make sense, please try again after resolving" + echo "the conflicts! Stopping here." + exit 1 +fi + +if test -n "$patched"; then + echo "The following files have been updated by CVS:" + echo "$patched" + echo "This means your local tree hasn't been up to date before this update." + echo -n "Do you want to continue anyway" + if yesno; then + echo "Okay, I will continue on your request." + else + echo "Okay, stopping here." + exit 1 + fi +fi + +if test -n "$merged"; then + echo "The following files have had local changes that could be merged by CVS:" + echo "$merged" + echo "This probably means your local tree hasn't been commited to CVS yet." + echo -n "Do you want to continue anyway" + if yesno; then + echo "Okay, I will continue on your request." + else + echo "Okay, stopping here." + exit 1 + fi +fi + +if test -n "$unknown"; then + echo "Ooops, CVS said something that I didn't understand:" + echo "$unknown" + echo "I have no clue what this means, so you have to decide:" + echo -n "Do you want to continue anyway" + if yesno; then + echo "Okay, I will continue on your request." + else + echo "Okay, stopping here." + exit 1 + fi +fi +} + + +# the actual work starts here +############################## + +echo "updating xine_www from CVS..." +cd "$www_dir" +cvs_up_check +echo "fetching download page from xine's web site..." +rm -f $tmpfile +if wget -nv -O $tmpfile http://xine.sf.net/download.html; then + echo "diffing against CVS checkout:" + if diff download.html $tmpfile; then + echo "Okay, they are the same." + else + echo "The CVS version is different from that on the web server!" + echo "Please fix that and try again!" + exit 1 + fi +else + echo "Unable to fetch the download file from http://xine.sf.net; aborting." + exit 1 +fi + +lastver=`grep 'href="files/xine-lib-' download.html \ + |sed -e 's|^.*href="files/xine-lib-||' -e 's|\.tar\.gz.*$||g' \ + |head -1` + +echo "The last release has been $lastver." +old_major=`echo $lastver|awk -F. '{print $1}'` +old_minor=`echo $lastver|awk -F. '{print $2}'` +old_sub=`echo $lastver|awk -F. '{print $3}'` + +cd "$topdir" +echo "updating xine-lib from CVS..." +cvs_up_check + +new_major=`awk -F= '/XINE_MAJOR=/ {print $2}' $tarball
" + fi + echo "$line" + done download.html.new \ + && mv download.html.new download.html + + echo "committing download file to xine_www CVS" + cvs commit -m "added $tarball" download.html + + cd "$topdir" + echo "copying the tarball to xine.sf.net..." + scp "$tarball" xine.sf.net:/home/groups/x/xi/xine/htdocs/files + + cd "$www_dir" + echo "copying download page to xine.sf.net..." + scp download.html xine.sf.net:/home/groups/x/xi/xine/htdocs +else + echo "Sorry. Please try again after fixing it!" + exit 1 +fi + +cd "$topdir" +echo "press return to clean up (make maintainer-clean; cvs up)..." +read line +make maintainer-clean +cvs up -dP +tag=xine-${new_major}_${new_minor}_${new_sub}-release +echo -n "set CVS tag $tag" +if yesno; then + cvs tag $tag +else + echo "Okay, but you should probably do something like" + echo "cvs tag $tag" +fi + +echo "Well, that's it. xine-lib $new_ver is officially released" +echo "You should probably announce it on xine-announce." + +rm $tmpfile -- cgit v1.2.3