-
Notifications
You must be signed in to change notification settings - Fork 56
Debugging Deep Dive
(This is a slightly more readable version of the same notes I posted to the mailing list)
At Chris's request, I'm writing down a bit of a Socratic dialogue between myself and the Garnet front-end node to expose how I diagnose, resolve, and commit back build problems on the machine. We start from a problem using/building the distribute package using pypi, use git blame and other tools to see how the configuration logic has changed, then use diff to generate a new configure patch. I then use "git clean" and "git reset --hard" to restore a clean working tree in a muddled git repository when distclean fails, and commit my changes back.
It looks like PyPI has started issuing redirects from HTTP to HTTPS for all of their downloads:
aron@garnet05:~/old/proteus> wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.21.tar.gz
--2013-10-21 07:56:50-- http://pypi.python.org/packages/source/d/distribute/distribute-0.6.21.tar.gz
Resolving pypi.python.org... 199.27.78.185, 199.27.78.184
Connecting to pypi.python.org|199.27.78.185|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://pypi.python.org/packages/source/d/distribute/distribute-0.6.21.tar.gz [following]
--2013-10-21 07:56:50-- https://pypi.python.org/packages/source/d/distribute/distribute-0.6.21.tar.gz
This means that if we use Python to install distribute from distribute_setup.py (as we currently do), it needs to be properly configured to use SSL. This doesn't appear to be the case on Garnet:
aron@garnet05:~/old/proteus> $PROTEUS_PYTHON -c "import socket; print hasattr(socket,'ssl')"
False
Tracking down the configure flags:
aron@garnet05:~/old/proteus> cat externalPackages/pythonConfig/configure.garnet.gnu
export LD_LIBRARY_PATH=/usr/local/usp/openssl/lib:$LD_LIBRARY_PATH
./configure --prefix=${PROTEUS_PREFIX} --enable-shared
#cp ../pythonConfig/Setup.garnet.gnu Modules/Setup
#cp ../pythonConfig/setup.py.garnet.gnu setup.py
It looks like LD_LIBRARY_PATH is being set, but that may not be enough for SSL detection. Searching through the Python build log, we see at the end:
aron@garnet05:~/old/proteus> grep ssl -C 2 externalPackages/build_python_progress
Python build finished, but the necessary bits to build these modules were not found:
_sqlite3 _ssl bsddb185
bz2 dl gdbm
imageop readline sunaudiodev
So _ssl is not being properly built.
SSL is available and installed on Garnet:
aron@garnet05:~/old/proteus> ls /usr/lib/libssl*
/usr/lib/libssl3.so /usr/lib/libssl.so.0.9.8
But are we enabling it in the Python configure?
aron@garnet05:~/old/proteus> cat externalPackages/pythonConfig/configure.garnet.gnu
export LD_LIBRARY_PATH=/usr/local/usp/openssl/lib:$LD_LIBRARY_PATH
./configure --prefix=${PROTEUS_PREFIX} --enable-shared
#cp ../pythonConfig/Setup.garnet.gnu Modules/Setup
#cp ../pythonConfig/setup.py.garnet.gnu setup.py
Uh-oh, the command to copy Modules/Setup has been commented out. Can we figure out why?
aron@garnet05:~/old/proteus> git blame externalPackages/pythonConfig/configure.garnet.gnu | cat
3474f37f (Chris Kees 2013-10-09 18:48:31 -0500 1) export LD_LIBRARY_PATH=/usr/local/usp/openssl/lib:$LD_LIBRARY_PATH
2a47cc4f (Chris Kees 2013-08-14 15:45:04 -0500 2) ./configure --prefix=${PROTEUS_PREFIX} --enable-shared
3474f37f (Chris Kees 2013-10-09 18:48:31 -0500 3) #cp ../pythonConfig/Setup.garnet.gnu Modules/Setup
3474f37f (Chris Kees 2013-10-09 18:48:31 -0500 4) #cp ../pythonConfig/setup.py.garnet.gnu setup.py
So Chris commented it out earlier this month in commit 3474f. Did he give an explanation?
aron@garnet05:~/old/proteus> git log 3474f --stat -n 1 | cat
commit 3474f37fb768f2628d7253002a04553036b5028d
Author: Chris Kees <cekees@gmail.com>
Date: Wed Oct 9 18:48:31 2013 -0500
updated current garnet configuration test_proteus_garnet.pbs is running but not finished testing
envConfig/garnet.gnu.bash | 1 +
externalPackages/daetk | 2 +-
externalPackages/hdf5Config/configure.garnet.gnu | 2 +-
externalPackages/mpi4py | 2 +-
externalPackages/numpy | 2 +-
externalPackages/petsc-dev | 2 +-
externalPackages/petsc4py | 2 +-
externalPackages/petscConfig/configure.garnet.gnu | 11 ++++++++---
externalPackages/python | 2 +-
externalPackages/pythonConfig/configure.garnet.gnu | 4 +++-
proteusModule/proteusConfig/config.py.garnet.gnu | 14 ++++++++++----
proteusModule/src/mesh.cpp | 1 -
proteusModule/test/test_mpi4py_garnet.pbs | 20 ++++++++++----------
proteusModule/test/test_petsc4py_garnet.pbs | 9 +++++++--
proteusModule/test/test_proteus_garnet.pbs | 14 +++++++-------
15 files changed, 53 insertions(+), 35 deletions(-)
Okay, it looks like Chris was in the middle of hacking. Perhaps he'd already built Python and didn't realize it. Suspiciously, he also referred to a Setup.garnet.gnu file and a setup.py.garnet.gnu file that aren't present in the repository and weren't removed by his commit.
Well, things are working out on Diamond, let's see the difference between its modified Setup file and Garnet:
aron@garnet05:~/old/proteus> diff externalPackages/{python/Modules/Setup,pythonConfig/Setup.diamond}
215,218c215,218
< #SSL=/usr/local/ssl
< #_ssl _ssl.c \
< # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
< # -L$(SSL)/lib -lssl -lcrypto
---
> SSL=/usr/local/usp/openssl
> _ssl _ssl.c \
> -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
> -L$(SSL)/lib -lssl -lcrypto
Ack! That's exactly the change we need to get SSL support in on Garnet. It's bad form to leave this as a blind copy, since what we really want to do is just apply those four line changes. Let's redo this set of modifications as a single-file patch. Using a patch file (generated by diff and applied by patch) allows us to explicitly specify what changes we would like to make, and allows us to port our changes to other Python installs.
Note that we explicitly are repeating ourselves and creating a machine-specific patch, despite the fact that this should work on both Garnet and Diamond. This is partially a matter of preference, but since we are not running automated build tests on these machines, I'd rather follow the Proteus philosophy here of building an explicit toolchain for each machine, even at the cost of some painful redundancy.
aron@garnet05:~/old/proteus> diff -u externalPackages/{python/Modules/Setup,pythonConfig/Setup.diamond} | tee externalPackages/pythonConfig/add_ssl_to_setup.patch.garnet
--- externalPackages/python/Modules/Setup 2013-10-17 16:12:07.000000000 -0500
+++ externalPackages/pythonConfig/Setup.diamond 2013-10-16 23:51:24.000000000 -0500
@@ -212,10 +212,10 @@
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
-#SSL=/usr/local/ssl
-#_ssl _ssl.c \
-# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-# -L$(SSL)/lib -lssl -lcrypto
+SSL=/usr/local/usp/openssl
+_ssl _ssl.c \
+ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
+ -L$(SSL)/lib -lssl -lcrypto
# The crypt module is now disabled by default because it breaks builds
# on many systems (where -lcrypt is needed), e.g. Linux (I believe).
Checking the diff in setup.py.diamond:
aron@garnet05:~/old/proteus> diff -u externalPackages/python{/setup.py,Config/setup.py.diamond}
--- externalPackages/python/setup.py 2013-10-17 09:29:15.000000000 -0500
+++ externalPackages/pythonConfig/setup.py.diamond 2013-10-16 23:51:24.000000000 -0500
@@ -711,7 +711,8 @@
# Detect SSL support for the socket module (via _ssl)
search_for_ssl_incs_in = [
'/usr/local/ssl/include',
- '/usr/contrib/ssl/include/'
+ '/usr/contrib/ssl/include/',
+ '/usr/local/usp/openssl/include'
]
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
@@ -723,7 +724,8 @@
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ '/usr/contrib/ssl/lib/',
+ '/usr/local/usp/openssl/lib/'
] )
if (ssl_incs is not None and
It looks like there's a newer version of SSL in /usr/local/usp/openssl on Diamond (and Garnet as well). Let's go ahead and build a patch for that as well.
aron@garnet05:~/old/proteus> diff -u externalPackages/python{/setup.py,Config/setup.py.diamond} | tee externalPackages/pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet
--- externalPackages/python/setup.py 2013-10-17 09:29:15.000000000 -0500
+++ externalPackages/pythonConfig/setup.py.diamond 2013-10-16 23:51:24.000000000 -0500
@@ -711,7 +711,8 @@
# Detect SSL support for the socket module (via _ssl)
search_for_ssl_incs_in = [
'/usr/local/ssl/include',
- '/usr/contrib/ssl/include/'
+ '/usr/contrib/ssl/include/',
+ '/usr/local/usp/openssl/include'
]
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
@@ -723,7 +724,8 @@
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ '/usr/contrib/ssl/lib/',
+ '/usr/local/usp/openssl/lib/'
] )
if (ssl_incs is not None and
Let's test the patches out and see if we can get a proper SSL build out of Python.
[ After editing configure.garnet.gnu ]
aron@garnet05:~/old/proteus> git diff externalPackages/pythonConfig/configure.garnet.gnu | cat
diff --git a/externalPackages/pythonConfig/configure.garnet.gnu b/externalPackages/pythonConfig/configure.garnet.gnu
index a724304..a511e7a 100755
--- a/externalPackages/pythonConfig/configure.garnet.gnu
+++ b/externalPackages/pythonConfig/configure.garnet.gnu
@@ -1,4 +1,4 @@
export LD_LIBRARY_PATH=/usr/local/usp/openssl/lib:$LD_LIBRARY_PATH
./configure --prefix=${PROTEUS_PREFIX} --enable-shared
-#cp ../pythonConfig/Setup.garnet.gnu Modules/Setup
-#cp ../pythonConfig/setup.py.garnet.gnu setup.py
+patch -up2 < ../pythonConfig/add_ssl_to_setup.patch.garnet
+patch -up2 < ../pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet
Note the '-u' flag on both patch and diff. This tells diff that we'd like to output in the "unified diff" format, and tells patch how to interpret diff's output as its input.
The '-p2' flag tells patch to strip off the first two path components, because externalPackages/pythonConfig is leading directory structure that isn't relevant from the directory that the configure script is being run from.
Okay, time to test:
aron@garnet05:~/old/proteus> make -k -C externalPackages distclean_python
make: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages'
touch install_python
mv -f install_python install_python_last
cd python && make distclean
make[1]: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages/python'
make[1]: *** No rule to make target `distclean'.
make[1]: Leaving directory `/lustre/home1/u/aron/old/proteus/externalPackages/python'
make: *** [distclean_python] Error 2
make: Leaving directory `/lustre/home1/u/aron/old/proteus/externalPackages'
aron@garnet05:~/old/proteus> make -C externalPackages python
make: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages'
make: Nothing to be done for `python'.
make: Leaving directory `/lustre/home1/u/aron/old/proteus/externalPackages'
Oops, looks like disclean_python doesn't do what we want. What is it useful for then? Well, there's more than one way to skin a cat...
aron@garnet05:~/old/proteus> make -C externalPackages -B python
make: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages'
cd versionsConfig && cp versions. versions.garnet.gnu
cp: cannot stat `versions.': No such file or directory
make: *** [versionsConfig/versions.garnet.gnu] Error 1
make: Leaving directory `/lustre/home1/u/aron/old/proteus/externalPackages'
Huh. Why isn't PROTEUS_ARCH propagating here? Who cares, make
itself should work after a distclean...
aron@garnet05:~/old/proteus> make
cd externalPackages && make all
make[1]: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages'
make config_python build_python
make[2]: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages'
cd python && ../pythonConfig/configure.garnet.gnu > ../config_python_progress 2>&1
make[2]: *** [config_python] Error 1
make[2]: Leaving directory `/lustre/home1/u/aron/old/proteus/externalPackages'
make[1]: *** [install_python] Error 2
make[1]: Leaving directory `/lustre/home1/u/aron/old/proteus/externalPackages'
make: *** [install_externalPackages] Error 2
Oh, what the heck.
aron@garnet05:~/old/proteus> tail -n 10 externalPackages/config_python_progress
config.status: creating pyconfig.h
creating Modules/Setup
creating Modules/Setup.local
creating Makefile
patching file Modules/Setup
patching file setup.py
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
2 out of 2 hunks ignored -- saving rejects to file setup.py.rej
Rats! I tested the patch out on setup.py before running the script, and of course, distclean didn't do what I wanted it to do.
Since Python is just an (old) git repository, we should probably just use git clean and reset here, which are more reliable than distclean.
cd externalPackages/python
git clean -xdf
git reset --hard HEAD
cd ../..
While we're at it, though, we'll adjust the patch command so that it doesn't die if the patch has already been applied by adding the "-N" flag.
aron@garnet05:~/old/proteus> git diff externalPackages/pythonConfig/configure.garnet.gnu | cat
diff --git a/externalPackages/pythonConfig/configure.garnet.gnu b/externalPackages/pythonConfig/configure.garnet.gnu
index a724304..d585471 100755
--- a/externalPackages/pythonConfig/configure.garnet.gnu
+++ b/externalPackages/pythonConfig/configure.garnet.gnu
@@ -1,4 +1,4 @@
export LD_LIBRARY_PATH=/usr/local/usp/openssl/lib:$LD_LIBRARY_PATH
./configure --prefix=${PROTEUS_PREFIX} --enable-shared
-#cp ../pythonConfig/Setup.garnet.gnu Modules/Setup
-#cp ../pythonConfig/setup.py.garnet.gnu setup.py
+patch -Nup2 < ../pythonConfig/add_ssl_to_setup.patch.garnet
+patch -Nup2 < ../pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet
Uno Mas!
aron@garnet05:~/old/proteus> make
cd externalPackages && make all
make[1]: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages'
make config_python build_python
make[2]: Entering directory `/lustre/home1/u/aron/old/proteus/externalPackages'
cd python && ../pythonConfig/configure.garnet.gnu > ../config_python_progress 2>&1
cd python && make > ../build_python_progress 2>&1
...
aron@garnet05:~/old/proteus> grep -C 2 ssl externalPackages/build_python_progress
gcc -pthread -shared build/temp.linux-x86_64-2.7/lustre/home1/u/aron/old/proteus/externalPackages/python/Modules/socketmodule.o -L/u/aron/old/proteus/garnet.gnu/lib -L/usr/local/lib -L. -lpython2.7 -o build/lib.linux-x86_64-2.7/_socket.so
building '_hashlib' extension
gcc -pthread -fPIC -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/usp/openssl/include -I/u/aron/old/proteus/garnet.gnu/include -I. -IInclude -I./Include -I/usr/local/include -I/lustre/home1/u/aron/old/proteus/externalPackages/python/Include -I/lustre/home1/u/aron/old/proteus/externalPackages/python -c /lustre/home1/u/aron/old/proteus/externalPackages/python/Modules/_hashopenssl.c -o build/temp.linux-x86_64-2.7/lustre/home1/u/aron/old/proteus/externalPackages/python/Modules/_hashopenssl.o
In file included from Include/Python.h:126:0,
from /lustre/home1/u/aron/old/proteus/externalPackages/python/Modules/_hashopenssl.c:16:
Include/modsupport.h:27:1: warning: '_PyArg_ParseTuple_SizeT' is an unrecognized format function type [-Wformat=]
PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...) Py_FORMAT_PARSETUPLE(PyArg_ParseTuple, 2, 3);
^
gcc -pthread -shared build/temp.linux-x86_64-2.7/lustre/home1/u/aron/old/proteus/externalPackages/python/Modules/_hashopenssl.o -L/usr/local/usp/openssl/lib -L/u/aron/old/proteus/garnet.gnu/lib -L/usr/local/lib -L. -lssl -lcrypto -lpython2.7 -o build/lib.linux-x86_64-2.7/_hashlib.so
building '_bsddb' extension
gcc -pthread -fPIC -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/include/db4 -I/u/aron/old/proteus/garnet.gnu/include -I. -IInclude -I./Include -I/usr/local/include -I/lustre/home1/u/aron/old/proteus/externalPackages/python/Include -I/lustre/home1/u/aron/old/proteus/externalPackages/python -c /lustre/home1/u/aron/old/proteus/externalPackages/python/Modules/_bsddb.c -o build/temp.linux-x86_64-2.7/lustre/home1/u/aron/old/proteus/externalPackages/python/Modules/_bsddb.o
Excellent. Let's test the new Python now that the install is done.
aron@garnet05:~/old/proteus> $PROTEUS_PYTHON -c "import socket; print hasattr(socket,'ssl')"
False
Argghhh!!!
Intermission
When we last left our daring protagonist, he had found himself flustered by the seeming insignificance of his morning's efforts.
Devastated by the uselessness of his clever tricks, our hero played his last trump card:
aron@garnet05:~/old/proteus> rm -rf garnet.gnu
aron@garnet05:~/old/proteus> make
Fortunately, that seemed to fix things. Time to commit to a feature branch!
aron@garnet05:~/old/proteus> git checkout -b garnet_python_ssl_fixes
aron@garnet05:~/old/proteus> git add externalPackages/pythonConfig/add_*
aron@garnet05:~/old/proteus> git add externalPackages/pythonConfig/configure.garnet.gnu
Check the staging area has what we want to commit.
aron@garnet05:~/old/proteus> git diff --cached | cat
diff --git a/externalPackages/pythonConfig/add_ssl_to_setup.patch.garnet b/externalPackages/pythonConfig/add_ssl_to_setup.patch.garnet
new file mode 100644
index 0000000..b556618
--- /dev/null
+++ b/externalPackages/pythonConfig/add_ssl_to_setup.patch.garnet
@@ -0,0 +1,17 @@
+--- externalPackages/python/Modules/Setup 2013-10-17 16:12:07.000000000 -0500
++++ externalPackages/pythonConfig/Setup.diamond 2013-10-16 23:51:24.000000000 -0500
+@@ -212,10 +212,10 @@
+
+ # Socket module helper for SSL support; you must comment out the other
+ # socket line above, and possibly edit the SSL variable:
+-#SSL=/usr/local/ssl
+-#_ssl _ssl.c \
+-# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
+-# -L$(SSL)/lib -lssl -lcrypto
++SSL=/usr/local/usp/openssl
++_ssl _ssl.c \
++ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
++ -L$(SSL)/lib -lssl -lcrypto
+
+ # The crypt module is now disabled by default because it breaks builds
+ # on many systems (where -lcrypt is needed), e.g. Linux (I believe).
diff --git a/externalPackages/pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet b/externalPackages/pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet
new file mode 100644
index 0000000..181c8a6
--- /dev/null
+++ b/externalPackages/pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet
@@ -0,0 +1,22 @@
+--- externalPackages/python/setup.py 2013-10-17 09:29:15.000000000 -0500
++++ externalPackages/pythonConfig/setup.py.diamond 2013-10-16 23:51:24.000000000 -0500
+@@ -711,7 +711,8 @@
+ # Detect SSL support for the socket module (via _ssl)
+ search_for_ssl_incs_in = [
+ '/usr/local/ssl/include',
+- '/usr/contrib/ssl/include/'
++ '/usr/contrib/ssl/include/',
++ '/usr/local/usp/openssl/include'
+ ]
+ ssl_incs = find_file('openssl/ssl.h', inc_dirs,
+ search_for_ssl_incs_in
+@@ -723,7 +724,8 @@
+ ssl_incs += krb5_h
+ ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
+ ['/usr/local/ssl/lib',
+- '/usr/contrib/ssl/lib/'
++ '/usr/contrib/ssl/lib/',
++ '/usr/local/usp/openssl/lib/'
+ ] )
+
+ if (ssl_incs is not None and
diff --git a/externalPackages/pythonConfig/configure.garnet.gnu b/externalPackages/pythonConfig/configure.garnet.gnu
index a724304..0ccb542 100755
--- a/externalPackages/pythonConfig/configure.garnet.gnu
+++ b/externalPackages/pythonConfig/configure.garnet.gnu
@@ -1,4 +1,6 @@
export LD_LIBRARY_PATH=/usr/local/usp/openssl/lib:$LD_LIBRARY_PATH
./configure --prefix=${PROTEUS_PREFIX} --enable-shared
-#cp ../pythonConfig/Setup.garnet.gnu Modules/Setup
-#cp ../pythonConfig/setup.py.garnet.gnu setup.py
+x=$(patch -Nup2 < ../pythonConfig/add_ssl_to_setup.patch.garnet)
+echo $x
+x=$(patch -Nup2 < ../pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet)
+echo $x
aron@garnet05:~/old/proteus> git config --global user.name "Aron Ahmadia"
aron@garnet05:~/old/proteus> git config --global user.email "aron@ahmadia.net"
aron@garnet05:~/old/proteus> git commit
[garnet_python_ssl_fixes ad9ef90] Enable SSL in Python install
3 files changed, 43 insertions(+), 2 deletions(-)
create mode 100644 externalPackages/pythonConfig/add_ssl_to_setup.patch.garnet
create mode 100644 externalPackages/pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet
We'll push this feature branch to erdc-cm/proteus and open a PR from there.
aron@garnet05:~/old/proteus> git push origin -u garnet_python_ssl_fixes:garnet_python_ssl_fixes
Compare and pull request from the repo page:
https://github.com/erdc-cm/proteus/compare/garnet_python_ssl_fixes?expand=1
Open the PR: https://github.com/erdc-cm/proteus/pull/24
Now I can merge in this feature branch when needed until the PR lands into master. Once the branch is merged/rebased in, I no longer need to keep it around and can safely delete it.
Intermission
And the PR has landed! That means time to clean up.
aron@garnet05:~/old/proteus> git checkout master
M externalPackages/clawpack/pyclaw
M externalPackages/daetk
M externalPackages/mpi4py
M externalPackages/numexpr
M externalPackages/petsc-dev
M externalPackages/pytables
M externalPackages/python
M externalPackages/superlu
M externalPackages/zlib
Switched to branch 'master'
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
aron@garnet05:~/old/proteus> git pull --ff-only
Updating 7825e92..3427384
Fast-forward
externalPackages/pythonConfig/add_ssl_to_setup.patch.garnet | 17 +++++++++++++++++
externalPackages/pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet | 22 ++++++++++++++++++++++
externalPackages/pythonConfig/configure.garnet.gnu | 6 ++++--
3 files changed, 43 insertions(+), 2 deletions(-)
create mode 100644 externalPackages/pythonConfig/add_ssl_to_setup.patch.garnet
create mode 100644 externalPackages/pythonConfig/add_usr_local_usp_openssl_to_setup_py.patch.garnet
aron@garnet05:~/old/proteus> git branch -D garnet_python_ssl_fixes
Deleted branch garnet_python_ssl_fixes (was ad9ef90).
Delete on github as well from: https://github.com/erdc-cm/proteus/pull/24