This changes the shared library name to a versioned one, with a symlink, and
fixes the shared library out-of-date test accordingly.

Index: petsc/lib/petsc/conf/rules
===================================================================
--- petsc.orig/lib/petsc/conf/rules
+++ petsc/lib/petsc/conf/rules
@@ -42,7 +42,7 @@ chklib_dir:
 chkopts: chk_upgrade
 	@for LIBNAME in ${SHLIBS}; do \
 	  library=${INSTALL_LIB_DIR}/$$LIBNAME.a; \
-	sharedlibrary=${INSTALL_LIB_DIR}/$$LIBNAME.${SL_LINKER_SUFFIX}; \
+	sharedlibrary=`readlink -e ${INSTALL_LIB_DIR}/$$LIBNAME.${SL_LINKER_SUFFIX}`; \
 	flag=""; \
 	if [ -f $$library ]; then \
 	  if [ -f $$sharedlibrary ]; then \
@@ -510,8 +510,8 @@ deleteshared:
              echo ${RM} -rf ${INSTALL_LIB_DIR}/$${LIBNAME}.dylib.dSYM; \
 	     ${RM} -rf ${INSTALL_LIB_DIR}/$${LIBNAME}.dylib.dSYM; \
 	   fi; \
-           echo ${RM} ${INSTALL_LIB_DIR}/$${LIBNAME}.${SL_LINKER_SUFFIX}; \
-           ${RM} ${INSTALL_LIB_DIR}/$${LIBNAME}.${SL_LINKER_SUFFIX}; \
+           echo ${RM} ${INSTALL_LIB_DIR}/$${LIBNAME}.${SL_LINKER_SUFFIX}*; \
+           ${RM} ${INSTALL_LIB_DIR}/$${LIBNAME}.${SL_LINKER_SUFFIX}*; \
 	done
 	@if [ -f ${INSTALL_LIB_DIR}/so_locations ]; then \
           echo ${RM} ${INSTALL_LIB_DIR}/so_locations; \
@@ -875,7 +875,8 @@ shared_none:
 
 shared_linux:
 	-@cd ${SHARED_LIBRARY_TMPDIR}; \
-	${CLINKER} -shared -Wl,-soname,${LIBNAME}.${SL_LINKER_SUFFIX} -o ${INSTALL_LIB_DIR}/$$LIBNAME.${SL_LINKER_SUFFIX} *.o ${PETSC_EXTERNAL_LIB_BASIC} ${OTHERSHAREDLIBS}; \
+	${CLINKER} -shared -Wl,-soname,${LIBNAME}.${SL_LINKER_SUFFIX_VERSIONED} -o ${INSTALL_LIB_DIR}/$$LIBNAME.${SL_LINKER_SUFFIX_VERSIONED} *.o ${PETSC_EXTERNAL_LIB_BASIC} ${OTHERSHAREDLIBS}; \
+	ln -s $$LIBNAME.${SL_LINKER_SUFFIX_VERSIONED} ${INSTALL_LIB_DIR}/$$LIBNAME.${SL_LINKER_SUFFIX}
 
 shared_darwin:
 	-@cd ${SHARED_LIBRARY_TMPDIR}; \
