#!/bin/csh -f
# Copyright(c)'1994-2011 by The Givaro group
# This file is part of Givaro.
# Givaro is governed by the CeCILL-B license under French law
# and abiding by the rules of distribution of free software.
# see the COPYRIGHT file for more details.
set conf = configure.ac
set mak = src/Makefile.am
set ver = src/kernel/system/givconfig.h
set mkf = Makefile.am
#verbatim second argument of AC_INIT
set verb = `grep ^AC_INIT $conf | cut -d',' -f2`
#removes spaces and brackets
set vern = `echo "$verb" | sed 's/ //g;s/\[//;s/\]//'`
echo "Current version is $vern."
###################################
## INCREMENT THE LIBRARY VERSION ##
###################################
echo -n "Increment library version ? (y/n)"
set answ = $<
if ("$answ" == "y") then
#gets the line
set line = `grep -n ^AC_INIT $conf | cut -d':' -f1`
#a version number is macro.minor.micro
set macro = `echo "$vern" | cut -d'.' -f1`
set minor = `echo "$vern" | cut -d'.' -f2`
set micro = `echo "$vern" | cut -d'.' -f3`
#make temp files for sed
set tmpfile = `mktemp`
set sedfile = `mktemp`
#increment the revision numbers.
set pmicro = `echo $micro`
@ pmicro ++
set pminor = `echo $minor`
@ pminor ++
set pmacro = `echo $macro`
@ pmacro ++
# talk to the user. This choice is very important here
echo "Increment micro revision number ($vern -> $macro.$minor.$pmicro) ? press '0' "
echo "Increment minor revision number ($vern -> $macro.$pminor.0) ? press '1' "
echo -n "Increment macro revision number ($vern -> $pmacro.0.0) ? press '2' "
set increm = $<
switch ($increm)
case 0:
set newv = "[$macro.$minor.$pmicro]"
breaksw
case 1:
set newv = "[$macro.$pminor.0]"
breaksw
case 2:
set newv = "[$pmacro.0.0]"
breaksw
default:
set newv = "$verb"
echo "'$increm' was read. Not incrementing anything."
breaksw
endsw
# replacing [ ] and . with escaped version for sed would understand them as 'operators'.
# This line is important when the used left spaces or removed [].
echo "$line s/$verb/$newv/" | sed 's/\./\\\./g;s/\[/\\\[/g;s/\]/\\\]/g' > $sedfile
sed -f $sedfile $conf > $tmpfile
# clean up
\rm -f $sedfile
# diff for changes
diff -u0 $conf $tmpfile
# if something was changed, confirm incrementation :
# if not confirm, we restore and abort.
if ("$newv" != "$verb") then
echo -n "Confirmation of incrementation ? (yes/no)"
set answ = $<
set backupconf = $conf.back$$
if ("$answ" == "yes") then
\cp -p $conf $backupconf
echo "Back-up of $conf made in $backupconf. Now overwriting $conf."
\mv -f $tmpfile $conf
else
echo "'$answ' was read. Not incrementing anything."
\rm -f $tmpfile
exit 0
endif
#####################################
## INCREMENT THE GIVCONFIG VERSION ##
#####################################
echo -n "Incrementing givconfig revision accordingly."
set backupver = $ver.back$$
set tmpfile = `mktemp`
set sedfile = `mktemp`
switch ($increm)
case 0:
echo "s/GIVARO_REVISION_VERSION.*/GIVARO_REVISION_VERSION $pmicro/" > $sedfile
set decimalversion = `expr \( $macro \* 100 + $minor \) \* 100 + $pmicro`
breaksw
case 1:
echo "s/GIVARO_MINOR_VERSION.*/GIVARO_MINOR_VERSION $pminor/" > $sedfile
echo "s/GIVARO_REVISION_VERSION.*/GIVARO_REVISION_VERSION 0/" >> $sedfile
set decimalversion = `expr \( $macro \* 100 + $pminor \) \* 100`
breaksw
case 2:
echo "s/GIVARO_MAJOR_VERSION.*/GIVARO_MAJOR_VERSION $pmacro/" > $sedfile
echo "s/GIVARO_REVISION_VERSION.*/GIVARO_REVISION_VERSION 0/" >> $sedfile
echo "s/GIVARO_MINOR_VERSION.*/GIVARO_MINOR_VERSION 0/" >> $sedfile
set decimalversion = `expr $pmacro \* 10000`
breaksw
default:
echo "Something abnormal happened"
exit 1
breaksw
endsw
echo "s/GIVARO_VERSION.*/GIVARO_VERSION $decimalversion/" >> $sedfile
sed -f $sedfile $ver > $tmpfile
\rm -f $sedfile
diff -u0 $ver $tmpfile
echo -n "Confirmation of incrementation ? (yes/no) "
set answ = $<
if ("$answ" == "yes") then
\cp -p $ver $backupver
\mv -f $tmpfile $ver
else
echo "'$answ' was read. Not incrementing anything."
echo " your old $conf is restored..."
\rm -f $tmpfile
\mv -f $backupconf $conf
exit 0
endif
#####################################
## INCREMENT THE MAKEFILE VERSION ##
#####################################
echo "Incrementing Makefile.am version."
set tmpfile = `mktemp` #tempfile
set sedfile = `mktemp` #tempfile
switch ($increm)
case 0:
echo -n "s/VERSION.*/VERSION=$macro.$minor.$pmicro/" >> $sedfile
breaksw
case 1:
echo "s/VERSION.*/VERSION=$macro.$pminor.0/" > $sedfile
breaksw
case 2:
echo "s/VERSION.*/VERSION=$pmacro.0.0/" > $sedfile
breaksw
default:
echo "Something abnormal happened"
exit 1
breaksw
endsw
sed -f $sedfile $mkf > $tmpfile
\rm -f $sedfile
diff -u0 $mkf $tmpfile
echo -n "Confirmation of incrementation ? (yes/no) "
set backupmkf = $mkf.back$$
set answ = $<
if ("$answ" == "yes") then
\cp -p $mkf $backupmkf
\mv -f $tmpfile $mkf
else
echo "'$answ' read. Not incrementing anything."
echo " your old $conf and $ver are restored..."
\rm -f $tmpfile
\mv -f $backupconf $conf
\mv -f $backupver $ver
exit 0
endif
##################################
## INCREMENT THE SONAME VERSION ##
##################################
echo "Incrementing soname version now."
set backupmake = $mak.back$$
set infostring = `grep "libgivaro_la_LDFLAGS.*version-info" $mak | awk '{print $NF}'`
set cur = `echo $infostring | cut -d':' -f1`
set rev = `echo $infostring | cut -d':' -f2`
set age = `echo $infostring | cut -d':' -f3`
set pcur = `echo $cur`
@ pcur ++
set prev = `echo $rev`
@ prev ++
set page = `echo $age`
@ page ++
set tmpfile = `mktemp`
set sedfile = `mktemp`
switch ($increm)
case 0:
echo "s/${infostring}/${cur}:${prev}:${age}/" > $sedfile
breaksw
case 1:
echo "s/${infostring}/${pcur}:0:${page}/" > $sedfile
breaksw
case 2:
echo "s/${infostring}/${pcur}:0:0/" > $sedfile
breaksw
default:
echo "Something enourmously abnormal happened"
exit 1
breaksw
endsw
sed -f $sedfile $mak > $tmpfile
\rm -f $sedfile
diff -u0 $mak $tmpfile
echo -n "Confirmation of incrementation ? (yes/no) "
set answ = $<
if ("$answ" == "yes") then
\cp -p $mak $backupmake
\mv -f $tmpfile $mak
echo -n "Removing back-up for $conf, $mkf, $mak and $ver ? (y/n)"
set remo = $<
if ("$remo" == "y") then
\rm -f $backupconf
\rm -f $backupver
\rm -f $backupmake
\rm -f $backupmkf
else
echo "You can find them in $backupconf, $backupmkf, $backupver and $backupmake."
endif
else
echo "'$answ' was read. Not incrementing anything."
echo " your old $conf and $ver are restored..."
\rm -f $tmpfile
\mv -f $backupconf $conf
\mv -f $backupver $ver
\mv -f $backupmkf $mkf
exit 0
endif
endif
else
echo "'$answ' was read. Not incrementing anything."
exit 0
endif
exit 0
# how to unset set variables ?