#!/bin/sh # This script updates VERSION_SUBMINOR in petscversion.h and doc/download/index.rst # # Usage: createpatch petscrepo # example usage: createpatch /sandbox/petsc/petsc-dist if [ $# = 1 ]; then petscrepo=$1 else echo "Error: petscrepo not specified. Usge: createpatch petscrepo" exit fi # check petscrepo to be valid if [ ! -d $petscrepo ]; then echo "Error: dir $petscrepo does not exist" exit fi cd $petscrepo if [ ! -f include/petscversion.h ]; then echo "Error: dir $petscrepo/include/petscversion.h does not exist" exit fi if [ ! -f doc/install/download.md ]; then echo "Error: dir $petscrepo/doc/install/download.md does not exist" exit fi # check if all files are checked in a=`git status --untracked-files=no --short | wc -l` if [ "${a}" != "0" ]; then echo "*** Git edited files exist. Cannot proceed! ****" git status --untracked-files=no --short exit fi #git_branch=`git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3` #if [ "${git_branch}" != "release" ]; then # echo "Error: Wrong branch '${git_branch}'! Patchlevel can only be updated for 'release' branch" # exit #fi version_release=`grep '^#define PETSC_VERSION_RELEASE ' include/petscversion.h |tr -s ' ' | cut -d ' ' -f 3` version_major=`grep '^#define PETSC_VERSION_MAJOR ' include/petscversion.h |tr -s ' ' | cut -d ' ' -f 3` version_minor=`grep '^#define PETSC_VERSION_MINOR ' include/petscversion.h |tr -s ' ' | cut -d ' ' -f 3` version_subminor=`grep '^#define PETSC_VERSION_SUBMINOR ' include/petscversion.h |tr -s ' ' | cut -d ' ' -f 3` if [ ${version_release} = 0 ]; then echo "Error: PETSC_VERSION_RELEASE is unset. Not using a 'release' branch?" exit fi # crank up patchlevel new_version_subminor=`expr $version_subminor + 1` oldver=${version_major}.${version_minor}.${version_subminor} newver=${version_major}.${version_minor}.${new_version_subminor} echo "#########################################################" echo "## updating patchlevel from $version_subminor to $new_version_subminor ##" echo "#########################################################" # Update patchlevel in petscversion.h /bin/mv include/petscversion.h include/petscversion.h.bak cat include/petscversion.h.bak | \ sed -e "s/#define PETSC_VERSION_SUBMINOR .*/#define PETSC_VERSION_SUBMINOR ${new_version_subminor}/" > include/petscversion.h /bin/rm -f include/petscversion.h.bak # Update patchlevel in src/binding/petsc4py/src/petsc4py/__init__.py /bin/mv src/binding/petsc4py/src/petsc4py/__init__.py src/binding/petsc4py/src/petsc4py/__init__.py.bak cat src/binding/petsc4py/src/petsc4py/__init__.py.bak | \ sed -e "s/__version__ =.*/__version__ = '${newver}'/" > src/binding/petsc4py/src/petsc4py/__init__.py /bin/rm -f src/binding/petsc4py/src/petsc4py/__init__.py.bak # Update patchlevel in doc/install/download.md /bin/mv doc/install/download.md doc/install/download.md.bak cat doc/install/download.md.bak | \ sed -e "s/-${oldver}.tar.gz/-${newver}.tar.gz/g" > doc/install/download.md /bin/rm -f doc/install/download.md.bak # now create a changeset git commit -m"Increase patchlevel to ${newver}" include/petscversion.h doc/install/download.md src/binding/petsc4py/src/petsc4py/__init__.py echo "#########################################################" echo "# Created patch for the following change #" echo "#########################################################" git show HEAD echo "#########################################################" echo "# Now creating a signed tag for v${newver} #" echo "#########################################################" git tag -s -m "PETSc ${newver}" v${newver}