Make venv dir name OS specific

This is to allow the Vagrantbox to mount your local dev on a Mac, yet
have venv working even when it includes OS-specific binary files.
diff --git a/Makefile b/Makefile
index 8e0bc3f..d009f74 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@
 
 include setup.mk
 
-VENVDIR := venv
+VENVDIR := venv-$(shell uname -s | tr '[:upper:]' '[:lower:]')
 
 .PHONY: $(DIRS) $(DIRS_CLEAN) $(DIRS_FLAKE8) flake8
 
@@ -95,12 +95,13 @@
 ${VENVDIR}/.built:
 	@ virtualenv ${VENVDIR}
 	@ . ${VENVDIR}/bin/activate && \
+	    pip install --upgrade pip; \
 	    if ! pip install -r requirements.txt; \
 	    then \
 	        echo "On MAC OS X, if the installation failed with an error \n'<openssl/opensslv.h>': file not found,"; \
 	        echo "see the BUILD.md file for a workaround"; \
 	    else \
-	        touch ${VENVDIR}/.built; \
+	        uname -s > ${VENVDIR}/.built; \
 	    fi
 
 utest: venv
diff --git a/env.sh b/env.sh
index e88f121..0e29340 100644
--- a/env.sh
+++ b/env.sh
@@ -1,8 +1,16 @@
 # sourcing this file is needed to make local development and integration testing work
 export VOLTHA_BASE=$PWD
 
-# load local python virtualenv 
-. venv/bin/activate
+# load local python virtualenv if exists, otherwise create it
+VENVDIR="venv-$(uname -s | tr '[:upper:]' '[:lower:]')"
+if [ ! -e "$VENVDIR/.built" ]; then
+    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+    echo "Initializing OS-appropriate virtual env."
+    echo "This will take a few minutes."
+    echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+    make venv
+fi
+. $VENVDIR/bin/activate
 
 # assign DOCKER_HOST_IP to be the main ip address of this host
 export DOCKER_HOST_IP=$(python voltha/nethelpers.py)