Index: /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-matlab.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-matlab.sh	(revision 25896)
+++ /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-matlab.sh	(revision 25896)
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+################################################################################
+# Wrapper script to build, package, and transfer to ISSM Web site ISSM 
+# distributable package for Linux with MATLAB API.
+#
+# Normally, we would put this directly into the project configuration under 
+# 'Build' -> 'Excute shell', but becasue it is a bit more involved, it is a 
+# good idea to version it.
+#
+# When no failures/errors occur, performs the following:
+# - Builds ISSM according to configuration.
+# - Packages executables and libraries.
+# - Runs test suite against package.
+# - Transmits package to ISSM Web site for distribution.
+#
+# Options:
+# -b/--skipbuild		Skip ISSM compilation.
+# -s/--skiptests		Skip ISSM compilation and testing during packaging 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
+# -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
+#						fails for some reason to skip building, packaging, and 
+#						signing.
+#
+# NOTE:
+# - Use only *one* of the above options at a time, and make sure it is removed 
+#	again after a single run.
+# - Builds will fail when any of the above options are used on a clean 
+#	workspace. For example, if 'Source Code Management' -> 'Check-out Strategy' 
+#	select menu is set to "Always check out a fresh copy".
+################################################################################
+
+## Constants
+#
+PKG="ISSM-Linux-MATLAB" # Name of directory to copy distributable files to
+
+COMPRESSED_PKG="${PKG}.zip"
+
+## Environment
+#
+export COMPRESSED_PKG
+export PKG
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+# NOTE: We could do this with binary switching (i.e. 0011 to sign and transfer, 
+#		but the following is self-documenting).
+#
+build=1
+package=1
+transfer=1
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-b|--skipbuild)		build=0;				shift	;;
+		-s|--skiptests)		build=0;						;;
+		-t|--transferonly)	build=0;	package=0;			;;
+		*) echo "Unknown parameter passed: $1"; exit 1 		;;
+	esac
+fi
+
+# Build
+if [ ${build} -eq 1 ]; then
+	./jenkins/jenkins.sh ./jenkins/ross-debian_linux-binaries-matlab
+fi
+
+# Package
+if [ ${package} -eq 1 ]; then
+	./packagers/linux/package-issm-linux-binaries-matlab.sh $1
+fi
+
+# Transfer distributable package to ISSM Web site
+if [ ${transfer} -eq 1 ]; then
+	./packagers/linux/transfer-issm-linux-binaries.sh
+fi
+
Index: /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-python.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-python.sh	(revision 25896)
+++ /issm/trunk-jpl/packagers/linux/complete-issm-linux-binaries-python.sh	(revision 25896)
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+################################################################################
+# Wrapper script to build, package, and transfer to ISSM Web site ISSM 
+# distributable package for Linux with Python API.
+#
+# Normally, we would put this directly into the project configuration under 
+# 'Build' -> 'Excute shell', but becasue it is a bit more involved, it is a 
+# good idea to version it.
+#
+# When no failures/errors occur, performs the following:
+# - Builds ISSM according to configuration.
+# - Packages executables and libraries.
+# - Runs test suite against package.
+# - Transmits package to ISSM Web site for distribution.
+#
+# Options:
+# -b/--skipbuild		Skip ISSM compilation.
+# -s/--skiptests		Skip ISSM compilation and testing during packaging 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
+# -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
+#						fails for some reason to skip building, packaging, and 
+#						signing.
+#
+# NOTE:
+# - Use only *one* of the above options at a time, and make sure it is removed 
+#	again after a single run.
+# - Builds will fail when any of the above options are used on a clean 
+#	workspace. For example, if 'Source Code Management' -> 'Check-out Strategy' 
+#	select menu is set to "Always check out a fresh copy".
+################################################################################
+
+## Constants
+#
+PKG="ISSM-Linux-Python" # Name of directory to copy distributable files to
+
+COMPRESSED_PKG="${PKG}.zip"
+
+## Environment
+#
+export COMPRESSED_PKG
+export PKG
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+# NOTE: We could do this with binary switching (i.e. 0011 to sign and transfer, 
+#		but the following is self-documenting).
+#
+build=1
+package=1
+transfer=1
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-b|--skipbuild)		build=0;				shift	;;
+		-s|--skiptests)		build=0;						;;
+		-t|--transferonly)	build=0;	package=0;			;;
+		*) echo "Unknown parameter passed: $1"; exit 1 		;;
+	esac
+fi
+
+# Build
+if [ ${build} -eq 1 ]; then
+	./jenkins/jenkins.sh ./jenkins/ross-debian_linux-binaries-python
+fi
+
+# Package
+if [ ${package} -eq 1 ]; then
+	./packagers/linux/package-issm-linux-binaries-python.sh $1
+fi
+
+# Transfer distributable package to ISSM Web site
+if [ ${transfer} -eq 1 ]; then
+	./packagers/linux/transfer-issm-linux-binaries.sh
+fi
+
Index: /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 25895)
+++ /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 25896)
@@ -2,21 +2,19 @@
 
 ################################################################################
-# To be used after running,
-#
-#	${ISSM_DIR}/jenkins/jenkins.sh ${ISSM_DIR}/jenkins/ross-debian_linux-binaries-matlab
-#
-# in the context of a Jenkins project.
-#
-# When no runtime errors occur, performs the following:
-# - Checks resulting executables and libraries against test suite.
-# - Packages and compresses executables and libraries.
-# - Transmits it to ISSM Web site for distribution.
+# Packages and tests ISSM distributable package for Linux with MATLAB API.
 #
 # Options:
-# -s/--skiptests		Skip tests (use if this script fails for some reason 
-#						after tests have successfully passed to save time)
-# -t/--transferonly		Transfer package to ISSM Web site only (use if 
-#						transfer fails for some reason to skip testing and
-#						signing)
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_DIR
+#		PKG
+#
+# See also:
+# - packagers/linux/complete-issm-linux-binaries-matlab.sh
 ################################################################################
 
@@ -34,7 +32,4 @@
 MATLAB_NROPTIONS="'benchmark','all','exclude',[125,126,234,235,418,420,435,444,445,701,702,703,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1201,1202,1203,1204,1205,1206,1207,1208,1301,1302,1303,1304,1401,1402,1601,1602,2002,2003,2005,2006,2010,2020,2021,2051,2052,2053,2101,2102,3001:3200,3201,3202,3300,3480,3481,4001,4002,4003]" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
 MATLAB_PATH="/usr/local/MATLAB/R2019b"
-PKG="ISSM-Linux-MATLAB" # Name of directory to copy distributable files to
-
-COMPRESSED_PKG="${PKG}.tar.gz"
 
 ## Environment
@@ -50,136 +45,121 @@
 
 skip_tests=0
-transfer_only=0
 while [ $# -gt 0 ]; do
     case $1 in
-        -s|--skiptests) skip_tests=1; shift ;;
-        -t|--transferonly) transfer_only=1; shift ;;
-        *) echo "Unknown parameter passed: $1"; exit 1 ;;
+        -s|--skiptests) skip_tests=1;					;;
+        *) echo "Unknown parameter passed: $1"; exit 1	;;
     esac
     shift
 done
 
-if [ ${transfer_only} -eq 0 ]; then
-	# Check if MATLAB exists
-	if ! [ -d ${MATLAB_PATH} ]; then
-		echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
+# Check if MATLAB exists
+if ! [ -d ${MATLAB_PATH} ]; then
+	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
+	exit 1
+fi
+
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PKG} ${COMPRESSED_PKG}
+mkdir ${PKG}
+
+# Add/modify required binaries and libraries
+cd ${ISSM_DIR}/bin
+
+echo "Modify generic"
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+
+echo "Moving MPICH binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+else
+	echo "MPICH not found"
+	exit 1
+fi
+
+echo "Moving GDAL binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+else
+	echo "GDAL not found"
+	exit 1
+fi
+
+echo "Moving GMT binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+else
+	echo "GMT not found"
+	exit 1
+fi
+
+echo "Moving Gmsh binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+else
+	echo "Gmsh not found"
+	exit 1
+fi
+
+echo "Moving libgfortran to lib/"
+cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+
+# Run tests
+if [ ${skip_tests} -eq 0 ]; then
+	echo "Running tests"
+	cd ${ISSM_DIR}/test/NightlyRun
+	rm matlab.log 2> /dev/null
+
+	# Run tests, redirecting output to logfile and suppressing output to console
+	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &> /dev/null
+
+	# Check that MATLAB did not exit in error
+	matlabExitCode=`echo $?`
+	matlabExitedInError=`grep -E "Activation cannot proceed|Error in matlab_run" matlab.log | wc -l`
+
+	if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
+		echo "----------MATLAB exited in error!----------"
+		cat matlab.log
+		echo "-----------End of matlab.log-----------"
+
+		# Clean up execution directory
+		rm -rf ${ISSM_DIR}/execution/*
+
 		exit 1
 	fi
 
-	# Clean up from previous packaging
-	echo "Cleaning up existing assets"
-	cd ${ISSM_DIR}
-	rm -rf ${PKG} ${COMPRESSED_PKG}
-	mkdir ${PKG}
+	# Check that all tests passed
+	numTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
 
-	# Add/modify required binaries and libraries
-	cd ${ISSM_DIR}/bin
-
-	echo "Modify generic"
-	cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
-
-	echo "Moving MPICH binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
-		cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
-		cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
-	elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
-		cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
-		cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+	if [[ ${numTestsFailed} -ne 0 ]]; then
+		echo "One or more tests FAILED"
+		exit 1
 	else
-		echo "MPICH not found"
-		exit 1
+		echo "All tests PASSED"
 	fi
-
-	echo "Moving GDAL binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
-		cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
-		cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
-	else
-		echo "GDAL not found"
-		exit 1
-	fi
-
-	echo "Moving GMT binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
-		cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
-		cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
-	else
-		echo "GMT not found"
-		exit 1
-	fi
-
-	echo "Moving Gmsh binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
-		cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
-	else
-		echo "Gmsh not found"
-		exit 1
-	fi
-
-	echo "Moving libgfortran to lib/"
-	cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
-
-
-	# Run tests
-	if [ ${skip_tests} -eq 0 ]; then
-		echo "Running tests"
-		cd ${ISSM_DIR}/test/NightlyRun
-		rm matlab.log 2> /dev/null
-
-		# Run tests, redirecting output to logfile and suppressing output to console
-		${MATLAB_PATH}/bin/matlab -nojvm -nosplash -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &> /dev/null
-
-		# Check that MATLAB did not exit in error
-		matlabExitCode=`echo $?`
-		matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
-
-		if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
-			echo "----------MATLAB exited in error!----------"
-			cat matlab.log
-			echo "-----------End of matlab.log-----------"
-
-			# Clean up execution directory
-			rm -rf ${ISSM_DIR}/execution/*
-
-			exit 1
-		fi
-
-		# Check that all tests passed
-		numTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
-
-		if [[ ${numTestsFailed} -ne 0 ]]; then
-			echo "One or more tests FAILED"
-			exit 1
-		else
-			echo "All tests PASSED"
-		fi
-	else
-		echo "Skipping tests"
-	fi
-
-	# Create package
-	cd ${ISSM_DIR}
-	svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
-	echo "Copying assets to package: ${PKG}"
-	cp -rf bin examples lib scripts test ${PKG}/
-	mkdir ${PKG}/execution
-	echo "Cleaning up unneeded/unwanted files"
-	rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
-	rm -f ${PKG}/lib/*.a # Remove static libraries from package
-	rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
-	rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
-
-	# Compress package
-	echo "Compressing package"
-	tar -czf ${COMPRESSED_PKG} ${PKG}
-	ls -lah ${ISSM_DIR}/${COMPRESSED_PKG}
+else
+	echo "Skipping tests"
 fi
 
-# Transfer package to ISSM Web site
-echo "Transferring package to ISSM Web site"
-scp -i ~/.ssh/debian_linux-vm_to_ross ${COMPRESSED_PKG} jenkins@ross.ics.uci.edu:/var/www/html/${COMPRESSED_PKG}
+# Create package
+cd ${ISSM_DIR}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PKG}"
+cp -rf bin examples lib scripts test ${PKG}/
+mkdir ${PKG}/execution
+echo "Cleaning up unneeded/unwanted files"
+rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -f ${PKG}/lib/*.a # Remove static libraries from package
+rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
+rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
 
-if [ $? -ne 0 ]; then
-	echo "Transfer failed! Verify connection then build this project again."
-	exit 1
-fi
+# Compress package
+echo "Compressing package"
+tar -czf ${COMPRESSED_PKG} ${PKG}
Index: /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python.sh	(revision 25895)
+++ /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-python.sh	(revision 25896)
@@ -2,21 +2,19 @@
 
 ################################################################################
-# To be used after running,
-#
-#	${ISSM_DIR}/jenkins/jenkins.sh ${ISSM_DIR}/jenkins/ross-debian_linux-binaries-matlab
-#
-# in the context of a Jenkins project.
-#
-# When no runtime errors occur, performs the following:
-# - Checks resulting executables and libraries against test suite.
-# - Packages and compresses executables and libraries.
-# - Transmits it to ISSM Web site for distribution.
+# Packages and tests ISSM distributable package for Linux with Python API.
 #
 # Options:
-# -s/--skiptests		Skip tests (use if this script fails for some reason 
-#						after tests have successfully passed to save time)
-# -t/--transferonly		Transfer package to ISSM Web site only (use if 
-#						transfer fails for some reason to skip testing and
-#						signing)
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_DIR
+#		PKG
+#
+# See also:
+# - packagers/linux/complete-issm-linux-binaries-python.sh
 ################################################################################
 
@@ -33,7 +31,4 @@
 LIBGFORTRAN_DIST="${ISSM_DIR}/lib/libgfortran.so.5" # Important the file name matches the SONAME entry in the binaries and other shared libraries which link to it
 PYTHON_NROPTIONS="--benchmark all --exclude 125 126 234 235 418 420 435 444 445 701 702 703 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1201 1202 1203 1204 1205 1206 1207 1208 1301 1302 1303 1304 1401 1402 1601 1602 2002 2003 2005 2006 2010 2020 2021 2051 2052 2053 2101 2102 3001:3200 3201 3202 3300 3480 3481 4001 4002 4003" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
-PKG="ISSM-Linux-Python" # Name of directory to copy distributable files to
-
-COMPRESSED_PKG="${PKG}.tar.gz"
 
 ## Environment
@@ -49,143 +44,123 @@
 
 skip_tests=0
-transfer_only=0
 while [ $# -gt 0 ]; do
     case $1 in
-        -s|--skiptests) skip_tests=1; shift ;;
-        -t|--transferonly) transfer_only=1; shift ;;
-        *) echo "Unknown parameter passed: $1"; exit 1 ;;
+        -s|--skiptests) skip_tests=1;					;;
+        *) echo "Unknown parameter passed: $1"; exit 1	;;
     esac
     shift
 done
 
-if [ ${transfer_only} -eq 0 ]; then
-	# Check if MATLAB exists
-	if ! [ -d ${MATLAB_PATH} ]; then
-		echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PKG} ${COMPRESSED_PKG}
+mkdir ${PKG}
+
+# Add/modify required binaries and libraries
+cd ${ISSM_DIR}/bin
+
+echo "Modify generic"
+cat generic_static.py | sed -e "s/generic_static/generic/g" > generic.py
+
+echo "Moving MPICH binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+else
+	echo "MPICH not found"
+	exit 1
+fi
+
+echo "Moving GDAL binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+else
+	echo "GDAL not found"
+	exit 1
+fi
+
+echo "Moving GMT binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+else
+	echo "GMT not found"
+	exit 1
+fi
+
+echo "Moving Gmsh binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+else
+	echo "Gmsh not found"
+	exit 1
+fi
+
+echo "Moving libgfortran to lib/"
+cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+
+
+# Run tests
+if [ ${skip_tests} -eq 0 ]; then
+	echo "Running tests"
+	cd ${ISSM_DIR}/test/NightlyRun
+	rm python.log 2> /dev/null
+
+	# Set Python environment
+	export PYTHONPATH="${ISSM_DIR}/src/m/dev"
+	export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
+	export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
+
+	# Run tests, redirecting output to logfile and suppressing output to console
+	./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
+
+	# Check that Python did not exit in error
+	pythonExitCode=`echo $?`
+	pythonExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" python.log | wc -l`
+
+	if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+		echo "----------Python exited in error!----------"
+		cat python.log
+		echo "-----------End of python.log-----------"
+
+		# Clean up execution directory
+		rm -rf ${ISSM_DIR}/execution/*
+
 		exit 1
 	fi
 
-	# Clean up from previous packaging
-	echo "Cleaning up existing assets"
-	cd ${ISSM_DIR}
-	rm -rf ${PKG} ${COMPRESSED_PKG}
-	mkdir ${PKG}
+	# Check that all tests passed
+	numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
 
-	# Add/modify required binaries and libraries
-	cd ${ISSM_DIR}/bin
-
-	echo "Modify generic"
-	cat generic_static.py | sed -e "s/generic_static/generic/g" > generic.py
-
-	echo "Moving MPICH binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
-		cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
-		cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
-	elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
-		cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
-		cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+	if [[ ${numTestsFailed} -ne 0 ]]; then
+		echo "One or more tests FAILED"
+		exit 1
 	else
-		echo "MPICH not found"
-		exit 1
+		echo "All tests PASSED"
 	fi
-
-	echo "Moving GDAL binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
-		cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
-		cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
-	else
-		echo "GDAL not found"
-		exit 1
-	fi
-
-	echo "Moving GMT binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
-		cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
-		cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
-	else
-		echo "GMT not found"
-		exit 1
-	fi
-
-	echo "Moving Gmsh binaries to bin/"
-	if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
-		cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
-	else
-		echo "Gmsh not found"
-		exit 1
-	fi
-
-	echo "Moving libgfortran to lib/"
-	cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
-
-
-	# Run tests
-	if [ ${skip_tests} -eq 0 ]; then
-		echo "Running tests"
-		cd ${ISSM_DIR}/test/NightlyRun
-		rm python.log 2> /dev/null
-
-		# Set Python environment
-		export PYTHONPATH="${ISSM_DIR}/src/m/dev"
-		export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
-		export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
-
-		# Run tests, redirecting output to logfile and suppressing output to console
-		./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
-
-		# Check that Python did not exit in error
-		pythonExitCode=`echo $?`
-		pythonExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" python.log | wc -l`
-
-		if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
-			echo "----------Python exited in error!----------"
-			cat python.log
-			echo "-----------End of python.log-----------"
-
-			# Clean up execution directory
-			rm -rf ${ISSM_DIR}/execution/*
-
-			exit 1
-		fi
-
-		# Check that all tests passed
-		numTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
-
-		if [[ ${numTestsFailed} -ne 0 ]]; then
-			echo "One or more tests FAILED"
-			exit 1
-		else
-			echo "All tests PASSED"
-		fi
-	else
-		echo "Skipping tests"
-	fi
-
-	# Create package
-	cd ${ISSM_DIR}
-	svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
-	echo "Copying assets to package: ${PKG}"
-	cp -rf bin examples lib scripts test ${PKG}/
-	mkdir ${PKG}/execution
-	${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
-	echo "Cleaning up unneeded/unwanted files"
-	rm -f ${PKG}/bin/*.py # Remove all Python scripts
-	rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
-	rm -f ${PKG}/lib/*.a # Remove static libraries from package
-	rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
-	rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
-
-	# Compress package
-	echo "Compressing package"
-	tar -czf ${COMPRESSED_PKG} ${PKG}
-	ls -lah ${ISSM_DIR}/${COMPRESSED_PKG}
+else
+	echo "Skipping tests"
 fi
 
-# Transfer package to ISSM Web site
-echo "Transferring package to ISSM Web site"
-scp -i ~/.ssh/debian_linux-vm_to_ross ${COMPRESSED_PKG} jenkins@ross.ics.uci.edu:/var/www/html/${COMPRESSED_PKG}
+# Create package
+cd ${ISSM_DIR}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PKG}"
+cp -rf bin examples lib scripts test ${PKG}/
+mkdir ${PKG}/execution
+${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
+echo "Cleaning up unneeded/unwanted files"
+rm -f ${PKG}/bin/*.py # Remove all Python scripts
+rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -f ${PKG}/lib/*.a # Remove static libraries from package
+rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
+rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
 
-if [ $? -ne 0 ]; then
-	echo "Transfer failed! Verify connection then build this project again."
-	exit 1
-fi
+# Compress package
+echo "Compressing package"
+tar -czf ${COMPRESSED_PKG} ${PKG}
Index: sm/trunk-jpl/packagers/linux/package-issm-linux-binaries-solid_earth.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-solid_earth.sh	(revision 25895)
+++ 	(revision )
@@ -1,181 +1,0 @@
-#!/bin/bash
-
-
-# Script to test, package, and transfer distributable to ISSM Web site.
-# Corresponds with build generated by configuration in 
-# $ISSM_DIR/jenkins/ross-debian_linux-binaries-solid_earth.
-#
-
-## Constants
-#
-LIBGFORTRAN="/usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0" # Important that this is the library itself
-LIBGFORTRAN_DIST="${ISSM_DIR}/lib/libgfortran.so.5" # Important the file name matches the SONAME entry in the binaries and other shared libraries which link to it
-MATLAB_NROPTIONS="'benchmark','slr','exclude',[2002 2003 2010 2020 2021 2101]"
-MATLAB_PATH="/usr/local/MATLAB/R2019b"
-PACKAGE="ISSM-Solid_Earth" # Name of directory to copy distributable files to
-PYTHON_NROPTIONS="--benchmark slr --exclude 2002 2003 2010 2020 2021 2101"
-TARBALL_NAME="issm-linux-solid_earth"
-TARBALL="${TARBALL_NAME}.tar.gz"
-
-## Environment
-#
-export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
-
-# Check if MATLAB exists
-if ! [ -d ${MATLAB_PATH} ]; then
-	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
-	exit 1
-fi
-
-# Clean up from previous packaging
-echo "Cleaning up existing assets"
-cd ${ISSM_DIR}
-rm -rf ${PACKAGE}
-mkdir ${PACKAGE}
-
-# Add/modify required binaries
-cd ${ISSM_DIR}/bin
-
-echo "Modifying generic"
-cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
-cat generic_static.py | sed -e "s/generic_static/generic/g" > generic.py
-
-echo "Moving MPICH binaries to bin/"
-if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
-	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
-	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
-elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
-	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
-	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
-else
-	echo "MPICH not found"
-	exit 1
-fi
-
-echo "Moving GDAL binaries to bin/"
-if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
-	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
-	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
-else
-	echo "GDAL not found"
-	exit 1
-fi
-
-echo "Moving GMT binaries to bin/"
-if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
-	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
-	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
-else
-	echo "GMT not found"
-	exit 1
-fi
-
-echo "Moving Gmsh binaries to bin/"
-if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
-	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
-else
-	echo "Gmsh not found"
-	exit 1
-fi
-
-# Add/modify required libraries
-echo "Moving libgfortran to lib/"
-cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
-
-# Run tests
-echo "Running tests"
-cd ${ISSM_DIR}/test/NightlyRun
-
-# Check that MATLAB tests run
-echo "Running MATLAB tests"
-
-rm matlab.log 2> /dev/null
-
-# Run MATLAB tests redirecting output to logfile and suppressing output to console
-${MATLAB_PATH}/bin/matlab -nojvm -nosplash -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &> /dev/null
-
-# Check that MATLAB did not exit in error
-matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" matlab.log | wc -l`
-
-if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
-	echo "----------MATLAB exited in error!----------"
-	cat matlab.log
-	echo "-----------End of matlab.log-----------"
-
-	# Clean up execution directory
-	rm -rf ${ISSM_DIR}/execution/*
-
-	exit 1
-fi
-
-# Check that all MATLAB tests passed
-numMatlabTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
-
-if [[ ${numMatlabTestsFailed} -ne 0 ]]; then
-	echo "One or more MATLAB tests FAILED"
-	exit 1;
-else
-	echo "All MATLAB tests PASSED"
-fi
-
-# Check that Python tests run
-echo "Running Python tests"
-
-export PATH="${PATH}:${ISSM_DIR}/bin"
-export PYTHONPATH="${ISSM_DIR}/src/m/dev"
-export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
-export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
-
-rm python.log 2> /dev/null
-./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
-
-# Check that Python did not exit in error
-pythonExitCode=`echo $?`
-pythonExitedInError=`grep -E "Error|Traceback|bad interpreter" python.log | wc -l`
-
-if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
-	echo "----------Python exited in error!----------"
-	cat python.log
-	echo "-----------End of python.log-----------"
-
-	# Clean up execution directory
-	rm -rf ${ISSM_DIR}/execution/*
-
-	exit 1
-fi
-
-# Check that all Python tests passed
-numPythonTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
-
-if [[ ${numPythonTestsFailed} -ne 0 ]]; then
-	echo "One or more Python tests FAILED"
-	exit 1
-else
-	echo "All Python tests PASSED"
-fi
-
-# Create tarball
-cd ${ISSM_DIR}
-rm -f ${TARBALL}
-svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
-echo "Copying assets to package: ${PACKAGE}"
-cp -rf bin examples lib scripts test ${PACKAGE}/
-echo "Cleaning up unneeded/unwanted files"
-python -m compileall ${PACKAGE}/bin # Precompile all Python scripts to bytecode
-rm -f ${PACKAGE}/bin/*.py # Remove all Python scripts
-rm -f ${PACKAGE}/bin/generic_static.* # Remove static versions of generic cluster classes
-rm -f ${PACKAGE}/lib/*.a # Remove static libraries from package
-rm -f ${PACKAGE}/lib/*.la # Remove libtool libraries from package
-rm -rf ${PACKAGE}/test/SandBox # Remove testing sandbox from package
-echo "Creating tarball: ${TARBALL_NAME}"
-tar -czf ${TARBALL} ${PACKAGE}
-ls -lah ${ISSM_DIR}/${TARBALL}
-
-echo "Transferring binaries to ISSM Web site"
-scp -i ~/.ssh/debian_linux-vm_to_ross ${TARBALL} jenkins@ross.ics.uci.edu:/var/www/html/${TARBALL}
-
-if [ $? -ne 0 ]; then
-	echo "FAILED: Manually check connection"
-	exit 1
-fi
Index: sm/trunk-jpl/packagers/linux/package-issm-linux-binaries-with_dakota.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-with_dakota.sh	(revision 25895)
+++ 	(revision )
@@ -1,155 +1,0 @@
-#!/bin/bash
-
-
-# Script to test, package, and transfer distributable to ISSM Web site.
-# Corresponds with build generated by configuration in 
-# $ISSM_DIR/jenkins/ross-debian_linux-binaries-with_dakota.
-#
-
-## Constants
-#
-LIBGFORTRAN="/usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0" # Important that this is the library itself
-LIBGFORTRAN_DIST="${ISSM_DIR}/lib/libgfortran.so.5" # Important the file name matches the SONAME entry in the binaries and other shared libraries which link to it
-MATLAB_NROPTIONS="'id',[IdFromString('Dakota')]"
-MATLAB_PATH="/usr/local/MATLAB/R2019b"
-PACKAGE="ISSM" # Name of directory to copy distributable files to
-PYTHON_NROPTIONS="--include_name 'Dakota' --exclude 234 418 420"
-TARBALL_NAME="issm-linux-with_dakota"
-TARBALL="${TARBALL_NAME}.tar.gz"
-
-## Environment
-#
-export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
-
-# Check if MATLAB exists
-if ! [ -d ${MATLAB_PATH} ]; then
-	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
-	exit 1
-fi
-
-# Clean up from previous packaging
-echo "Cleaning up existing assets"
-cd ${ISSM_DIR}
-rm -rf ${PACKAGE}
-mkdir ${PACKAGE}
-
-# Add/modify required binaries
-cd ${ISSM_DIR}/bin
-
-echo "Modifying generic"
-cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
-cat generic_static.py | sed -e "s/generic_static/generic/g" > generic.py
-
-echo "Moving MPICH binaries to bin/"
-if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
-	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
-	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
-elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
-	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
-	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
-else
-	echo "MPICH not found"
-	exit 1
-fi
-
-# Add/modify required libraries
-echo "Moving libgfortran to lib/"
-cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
-
-# Run tests
-echo "Running tests"
-cd ${ISSM_DIR}/test/NightlyRun
-
-# Check that MATLAB tests run
-echo "Running MATLAB tests"
-
-rm matlab.log 2> /dev/null
-
-# Run MATLAB tests redirecting output to logfile and suppressing output to console
-${MATLAB_PATH}/bin/matlab -nojvm -nosplash -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &> /dev/null
-
-# Check that MATLAB did not exit in error
-matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
-
-if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
-	echo "----------MATLAB exited in error!----------"
-	cat matlab.log
-	echo "-----------End of matlab.log-----------"
-
-	# Clean up execution directory
-	rm -rf ${ISSM_DIR}/execution/*
-
-	exit 1
-fi
-
-# Check that all MATLAB tests passed
-numMatlabTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
-
-if [[ ${numMatlabTestsFailed} -ne 0 ]]; then
-	echo "One or more MATLAB tests FAILED"
-	exit 1;
-else
-	echo "All MATLAB tests PASSED"
-fi
-
-# Check that Python tests run
-echo "Running Python tests"
-
-export PATH="${PATH}:${ISSM_DIR}/bin"
-export PYTHONPATH="${ISSM_DIR}/src/m/dev"
-export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
-export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
-
-rm python.log 2> /dev/null
-./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
-
-# Check that Python did not exit in error
-pythonExitCode=`echo $?`
-pythonExitedInError=`grep -E "Error|Standard exception|Traceback|bad interpreter" python.log | wc -l`
-
-if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
-	echo "----------Python exited in error!----------"
-	cat python.log
-	echo "-----------End of python.log-----------"
-
-	# Clean up execution directory
-	rm -rf ${ISSM_DIR}/execution/*
-
-	exit 1
-fi
-
-# Check that all Python tests passed
-numPythonTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
-
-if [[ ${numPythonTestsFailed} -ne 0 ]]; then
-	echo "One or more Python tests FAILED"
-	exit 1
-else
-	echo "All Python tests PASSED"
-fi
-
-# Create tarball
-cd ${ISSM_DIR}
-rm -f ${TARBALL}
-svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
-echo "Copying assets to package: ${PACKAGE}"
-cp -rf bin examples lib scripts test ${PACKAGE}/
-echo "Cleaning up unneeded/unwanted files"
-python -m compileall ${PACKAGE}/bin # Precompile all Python scripts to bytecode
-rm -f ${PACKAGE}/bin/*.py # Remove all Python scripts
-rm -f ${PACKAGE}/bin/generic_static.* # Remove static versions of generic cluster classes
-rm -f ${PACKAGE}/lib/*.a # Remove static libraries from package
-rm -f ${PACKAGE}/lib/*.la # Remove libtool libraries from package
-rm -rf ${PACKAGE}/test/SandBox # Remove testing sandbox from package
-echo "Creating tarball: ${TARBALL_NAME}"
-tar -czf ${TARBALL} ${PACKAGE}
-ls -lah ${ISSM_DIR}/${TARBALL}
-
-echo "Transferring binaries to ISSM Web site"
-scp -i ~/.ssh/debian_linux-vm_to_ross ${TARBALL} jenkins@ross.ics.uci.edu:/var/www/html/${TARBALL}
-
-if [ $? -ne 0 ]; then
-	echo "FAILED: Manually check connection"
-	exit 1
-fi
Index: sm/trunk-jpl/packagers/linux/package-issm-linux-binaries.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries.sh	(revision 25895)
+++ 	(revision )
@@ -1,114 +1,0 @@
-#!/bin/bash
-
-
-# Script to test, package, and transfer distributable to ISSM Web site.
-# Corresponds with build generated by configuration in 
-# $ISSM_DIR/jenkins/ross-debian_linux-binaries.
-#
-
-## Constants
-#
-LIBGFORTRAN="/usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0" # Important that this is the library itself
-LIBGFORTRAN_DIST="${ISSM_DIR}/lib/libgfortran.so.5" # Important the file name matches the SONAME entry in the binaries and other shared libraries which link to it
-MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota')]"
-MATLAB_PATH="/usr/local/MATLAB/R2019b"
-PACKAGE="ISSM" # Name of directory to copy distributable files to
-TARBALL_NAME="issm-linux"
-TARBALL="${TARBALL_NAME}.tar.gz"
-
-## Environment
-#
-export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
-
-# Check if MATLAB exists
-if ! [ -d ${MATLAB_PATH} ]; then
-	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
-	exit 1
-fi
-
-# Clean up from previous packaging
-echo "Cleaning up existing assets"
-cd ${ISSM_DIR}
-rm -rf ${PACKAGE}
-mkdir ${PACKAGE}
-
-# Add/modify required binaries and libraries
-cd ${ISSM_DIR}/bin
-
-echo "Modify generic"
-cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
-
-echo "Moving MPICH binaries to bin/"
-if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
-	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
-	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
-elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
-	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
-	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
-else
-	echo "MPICH not found"
-	exit 1
-fi
-
-echo "Moving libgfortran to lib/"
-cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
-
-# Run tests
-echo "Running tests"
-cd ${ISSM_DIR}/test/NightlyRun
-
-# Check that MATLAB tests run
-echo "Running MATLAB tests"
-
-rm matlab.log 2> /dev/null
-
-# Run MATLAB tests redirecting output to logfile and suppressing output to console
-${MATLAB_PATH}/bin/matlab -nojvm -nosplash -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &> /dev/null
-
-# Check that MATLAB did not exit in error
-matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
-
-if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
-	echo "----------MATLAB exited in error!----------"
-	cat matlab.log
-	echo "-----------End of matlab.log-----------"
-
-	# Clean up execution directory
-	rm -rf ${ISSM_DIR}/execution/*
-
-	exit 1
-fi
-
-# Check that all MATLAB tests passed
-numMatlabTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
-
-if [[ ${numMatlabTestsFailed} -ne 0 ]]; then
-	echo "One or more MATLAB tests FAILED"
-	exit 1
-else
-	echo "All MATLAB tests PASSED"
-fi
-
-# Create tarball
-cd ${ISSM_DIR}
-rm -f ${TARBALL}
-svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
-echo "Copying assets to package: ${PACKAGE}"
-cp -rf bin examples lib scripts test ${PACKAGE}/
-echo "Cleaning up unneeded/unwanted files"
-rm -f ${PACKAGE}/bin/generic_static.* # Remove static versions of generic cluster classes
-rm -f ${PACKAGE}/lib/*.a # Remove static libraries from package
-rm -f ${PACKAGE}/lib/*.la # Remove libtool libraries from package
-rm -rf ${PACKAGE}/test/SandBox # Remove testing sandbox from package
-echo "Creating tarball: ${TARBALL_NAME}"
-tar -czf ${TARBALL} ${PACKAGE}
-ls -lah ${ISSM_DIR}/${TARBALL}
-
-echo "Transferring binaries to ISSM Web site"
-scp -i ~/.ssh/debian_linux-vm_to_ross ${TARBALL} jenkins@ross.ics.uci.edu:/var/www/html/${TARBALL}
-
-if [ $? -ne 0 ]; then
-	echo "FAILED: Manually check connection"
-	exit 1
-fi
Index: /issm/trunk-jpl/packagers/linux/transfer-issm-linux-binaries.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/transfer-issm-linux-binaries.sh	(revision 25896)
+++ /issm/trunk-jpl/packagers/linux/transfer-issm-linux-binaries.sh	(revision 25896)
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+################################################################################
+# Transfers ISSM distributable package for Linux with MATLAB API to ISSM Web 
+# site.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#
+# See also:
+# - packagers/linux/complete-issm-linux-binaries-matlab.sh
+# - packagers/linux/complete-issm-linux-binaries-python.sh
+################################################################################
+
+# Transfer package to ISSM Web site
+echo "Transferring package to ISSM Web site"
+scp -i ~/.ssh/debian_linux-vm_to_ross ${COMPRESSED_PKG} jenkins@ross.ics.uci.edu:/var/www/html/${COMPRESSED_PKG}
+
+if [ $? -ne 0 ]; then
+	echo "Transfer failed! Verify connection then build this project again (with -t/--transferonly option to skip building and packaging)."
+	exit 1
+fi
Index: /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-matlab.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-matlab.sh	(revision 25895)
+++ /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-matlab.sh	(revision 25896)
@@ -11,5 +11,5 @@
 # When no failures/errors occur, performs the following:
 # - Builds ISSM according to configuration.
-# - Packages and compresses executables and libraries.
+# - Packages executables and libraries.
 # - Runs test suite against package.
 # - Commits compressed package to repository to be signed by JPL Cybersecurity.
@@ -23,5 +23,6 @@
 #						are valid.
 # -s/--skiptests		Skip ISSM compilation and testing during packaging 
-#						step. Use if 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
 # -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
 #						fails for some reason to skip building, packaging, and 
Index: /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-python.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-python.sh	(revision 25895)
+++ /issm/trunk-jpl/packagers/mac/complete-issm-mac-binaries-python.sh	(revision 25896)
@@ -11,5 +11,5 @@
 # When no failures/errors occur, performs the following:
 # - Builds ISSM according to configuration.
-# - Packages and compresses executables and libraries.
+# - Packages executables and libraries.
 # - Runs test suite against package.
 # - Commits compressed package to repository to be signed by JPL Cybersecurity.
@@ -23,5 +23,6 @@
 #						are valid.
 # -s/--skiptests		Skip ISSM compilation and testing during packaging 
-#						step. Use if 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
 # -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
 #						fails for some reason to skip building, packaging, and 
Index: /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 25895)
+++ /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 25896)
@@ -5,5 +5,6 @@
 #
 # Options:
-# -s/--skiptests		Skip tests and package only.
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
 #
 # NOTE:
Index: /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python.sh	(revision 25895)
+++ /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-python.sh	(revision 25896)
@@ -5,5 +5,6 @@
 #
 # Options:
-# -s/--skiptests		Skip tests and package only.
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
 #
 # NOTE:
Index: /issm/trunk-jpl/packagers/mac/transfer-issm-mac-binaries.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/transfer-issm-mac-binaries.sh	(revision 25895)
+++ /issm/trunk-jpl/packagers/mac/transfer-issm-mac-binaries.sh	(revision 25896)
@@ -2,5 +2,6 @@
 
 ################################################################################
-# Transfers ISSM distributable package to ISSM Web site.
+# Transfers ISSM distributable package for macOS with MATLAB API to ISSM Web 
+# site.
 #
 # NOTE:
