From 04170cb4d5a69b48041a12229181d7e4d2bf5afd Mon Sep 17 00:00:00 2001
From: Dilawar Singh <dilawars@ncbs.res.in>
Date: Sun, 20 Nov 2016 14:47:31 +0530
Subject: [PATCH] Squashed 'moose-core/' changes from bd86fb5..3f8c345

3f8c345 Make sure all python scripts are python3 compatible. BhallaLab/moose#202.
937fdf4 Allow failure with clang compiler. python-libsbml module doest not get build with clang.
b7f1834 Merge commit '1680bac6852381ac9e46c60bd501b80ad58a6fbf'
d28a94d Changes to cmake file so that we can find the correct static library.
67c0d52 Fix a development warning in cmake.
9bb0aa9 Removing shebangs from the python scripts. These scripts were never called as standalone executables.
3b2296b A test commit to package hdf5-devel BhallaLab/moose#201.
06adf59 Fixed another typo in FindGSL. Library list was converted to string.
3893081 Fixed a typo in FindGSL file.
b635a2c FindGSL also looks for GSL_VERSION now.
6bcc61d Fixes to travis failure.
88d49cb Updated CMake and FindGSL.
0fb10a5 Fixes to extension bug.
a9b9f2a Some fixes to static library dependencies [skip ci]
6614991 Cleanup in cmake files. Using bash scripts to generate subprojects. This way I can handle environment variables cleanly.
7fc33ef New hdf5 version generates static library with different name. Fix it.
1b55fa5 This should pass on travis.
700bb53 Merge commit 'd0a6060b975540dedc0f455f49ea4357da479eec'
cd0ae83 Merge commit 'b5a7c2e2a2d7a1a5250ad20f8c43ac18910b7382'
358b59f Merge commit '273124ec2f3f25e6af896ac0b3759bee2ee2e77a'
02fa6cf Merge commit '8bfef2e62f38d0660e71e43dc30081fc9004f811'
e7138d9 Merge commit '6c8f20121ff0b38b0c47eb37aacef75ba5cb9acc'
0462858 Merge commit '96580978fd046d82b2545fdac8b72ea52bd4956c'
fdadcf4 A test case test_sbml_support.py which inturn calls to write moosewriteSBML which needs networkx which is added as a dependency for travis
c90cae4 Oops moment. Fixed the typo in compiler flag for apple-clang
1878ce8 updated apple-clang flags in compiler. Fix to missing symbols from stl.
f50cfe2 Merge commit '2af833a02ab1ad4d1e9caf12efe7705e73fb2c32'
72de2fa Moved docs to moose. Removed temp directory.

git-subtree-dir: moose-core
git-subtree-split: 3f8c345800c8227e975ae3cf9c714dc6c2c014ee
---
 .travis.yml                                   |  20 +-
 CMakeLists.txt                                | 241 +++++++-----------
 VERSION                                       |   2 +-
 cmake_modules/FindGSL.cmake                   | 232 +++++++----------
 python/libmumbl/core/dynamic_vars.py          |   2 +-
 python/libmumbl/core/types.py                 |   2 +-
 python/libmumbl/helper/graph_methods.py       |   2 +-
 python/libmumbl/helper/moose_methods.py       |   2 +-
 python/libmumbl/helper/xml_methods.py         |   2 +-
 python/libmumbl/nml_parser/importer.py        |   2 +-
 python/libmumbl/test/adaptor.py               |   2 +-
 python/libmumbl/utility/debug.py              |   2 +-
 python/moose/methods_utils.py                 |   2 +-
 python/moose/neuroml2/generated_neuroml.py    |   2 +-
 python/moose/neuroml2/generated_neuromlsub.py |   2 +-
 .../test_files/Purk2M9s.nml.REMOVED.git-id    |   1 -
 python/moose/plot_utils.py                    |   2 +-
 python/moose/sim_utils.py                     |   2 +-
 python/moose/verification_utils.py            |   2 +-
 .../cells/CA1.morph.xml.REMOVED.git-id        |   1 -
 .../chans/CA1.morph.xml.REMOVED.git-id        |   1 -
 .../CA1.morph.bad.xml.REMOVED.git-id          |   1 -
 .../CA1.morph.original.xml.REMOVED.git-id     |   1 -
 .../CA1.morph.xml.REMOVED.git-id              |   1 -
 .../CA1_original.morph.xml.REMOVED.git-id     |   1 -
 .../CA1inhomog.morph.xml.REMOVED.git-id       |   1 -
 26 files changed, 212 insertions(+), 319 deletions(-)
 delete mode 100644 python/moose/neuroml2/test_files/Purk2M9s.nml.REMOVED.git-id
 delete mode 100644 python/rdesigneur/cells/CA1.morph.xml.REMOVED.git-id
 delete mode 100644 python/rdesigneur/chans/CA1.morph.xml.REMOVED.git-id
 delete mode 100644 tests/python/neuroml/cells_channels/CA1.morph.bad.xml.REMOVED.git-id
 delete mode 100644 tests/python/neuroml/cells_channels/CA1.morph.original.xml.REMOVED.git-id
 delete mode 100644 tests/python/neuroml/cells_channels/CA1.morph.xml.REMOVED.git-id
 delete mode 100644 tests/python/neuroml/cells_channels/CA1_original.morph.xml.REMOVED.git-id
 delete mode 100644 tests/python/neuroml/cells_channels/CA1inhomog.morph.xml.REMOVED.git-id

diff --git a/.travis.yml b/.travis.yml
index 473c14db..8c33e46f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,29 +20,31 @@ env:
     - CTEST_MODEL=Nightly
 cache: apt
 
-#matrix:
-#    allow_failures:
-#        - clang
+matrix:
+    allow_failures:
+        - clang
 
 before_script:
     - sudo apt-get install -qq libxml2-dev libbz2-dev
     - sudo apt-get install -qq libhdf5-serial-dev
     - sudo apt-get install -qq make cmake
-    - sudo apt-get install -qq python-numpy python-matplotlib python-networkx
-    - sudo apt-get install -qq python3-numpy python3-matplotlib python3-dev 
+    - sudo apt-get install -qq  python-numpy python-matplotlib python-networkx
+    - sudo apt-get install -qq  python3-numpy python3-matplotlib python3-dev
     - sudo apt-get install -qq libboost-all-dev
     - sudo apt-get install -qq libgsl0-dev
     - sudo apt-get install -qq python-pip python3-pip
     - sudo apt-get install -qq libgraphviz-dev
-    - # sudo pip install python-libsbml
-    - # sudo pip3 install python-libsbml
-    - # sudo pip3 install pygraphviz
+    - sudo pip install python-libsbml
+    - sudo pip3 install python-libsbml
+    - sudo pip3 install pygraphviz
 
 install:
     - echo "nothing to do here"
 
 script:
-    - # First test is normal make scripts. (outdated).
+    - First check no python3 incompatible file.
+    - python3 -m compileall -q .
+    - # Then run the old make scripts
     - make 
     - ## CMAKE based flow
     - mkdir -p _GSL_BUILD && cd _GSL_BUILD && cmake -DDEBUG=ON -DPYTHON_EXECUTABLE=/usr/bin/python ..
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 93810552..1be40102 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,37 +94,16 @@ option(DEBUG "Build with debug support" OFF)
 option(GPROF "Build for profiling using gprof" OFF)
 option(ENABLE_UNIT_TESTS "Enable unit tests (DEBUG should also be ON)" OFF)
 option(WITH_PYTHON "Build native python extension" ON)
-option(WITH_CYTHON "Build python extension using Cython. (experimental)" OFF)
 option(WITH_MPI  "Enable Openmpi support" OFF)
 option(WITH_BOOST "Use boost library instead of GSL" OFF)
 option(WITH_GSL  "Use gsl-library. Alternative is WITH_BOOST" ON)
 
-# If GSL_STATIC_HOME is set, we use it to search for static gsl libs.
-option(GSL_STATIC_HOME 
-    "Path prefix where static gsl library can be found e.g. /opt/sw/gsl116 " 
-    OFF
-    )
-option(HDF5_STATIC_HOME
-    "Path prefix where static hdf5 library can be found e.g /opt/sw/hdf5 "
-    OFF
-    )
-
 ################################# CMKAE MACROS #################################
 
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
 
 ############################ BUILD CONFIGURATION #################################
 
-# VERBOSITY OF OUTPUT
-if(VERBOSITY)
-    message(STATUS "Verbosity of output is ${VERBOSITY}. This is not implemented
-    yet!")
-    add_definitions(-DVERBOSITY=${VERBOSITY})
-else()
-    message(STATUS "Moose will be quiet")
-    add_definitions(-DQUIET_MODE)
-endif()
-
 # Default macros
 add_definitions(-DUSE_GENESIS_PARSER)
 
@@ -178,42 +157,30 @@ include_directories(msg basecode)
 set_target_properties(libmoose PROPERTIES COMPILE_DEFINITIONS  "MOOSE_LIB")
 set_target_properties(libmoose PROPERTIES PREFIX "")
 
+## Variable to collect all static libraries.
+set(STATIC_LIBRARIES "" )
+# Collect all shared libraries here.
+set(SYSTEM_SHARED_LIBS ${LibXML2_LIBRARIES})
+
 if(WITH_GSL)
-    if(GSL_STATIC_HOME)
-        SET(GSL_INCLUDE_DIRS "${GSL_STATIC_HOME}/include")
-        find_library(GSL_LIBRARY 
-            NAME libgsl.a 
-            PATHS ${GSL_STATIC_HOME}/lib ${GSL_STATIC_HOME}/lib64
-            NO_DEFAULT_PATH
-            )
-        find_library(GSLCBLAS_LIBRARY
-            NAME libgslcblas.a 
-            PATHS ${GSL_STATIC_HOME}/lib ${GSL_STATIC_HOME}/lib64 
-            NO_DEFAULT_PATH
+    find_package(GSL 1.16)
+    if(NOT GSL_FOUND)
+        message(FATAL_ERROR 
+            "=====================================================================\n"
+            " FATAL gsl(>1.16) not found.\n\n"
+            " MOOSE requires Gnu Scientific Library (GSL) 1.16 or higher. \n"
+            " Please install the `dev` or `devel` package e.g. \n"
+            "     $ sudo apt-get install libgsl0-dev \n"
+            "     $ sudo yum install libgsl-devel \n"
+            "     $ brew install gsl \n\n"
+            " Or build and install gsl from source code \n"
+            "     https://www.gnu.org/software/gsl/ \n"
+            " After installing gsl, rerun cmake.\n\n"
+            " If you install gsl in non-standard place, set the GSL_HOME environment \n"
+            " variable. CMAKE use this to search for required files. \n"
+            "====================================================================\n"
             )
-        SET(GSL_LIBRARIES ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
-        message(STATUS "STATIC GSL_LIBRARIES ${GSL_LIBRARIES}")
-        set(GSL_FOUND TRUE)
-    ELSE()
-        find_package(GSL 1.16)
-        if(NOT GSL_FOUND)
-            message(FATAL_ERROR 
-                "=====================================================================\n"
-                " FATAL gsl(>1.16) not found.\n\n"
-                " MOOSE requires Gnu Scientific Library (GSL) 1.16 or higher. \n"
-                " Please install the `dev` or `devel` package e.g. \n"
-                "     $ sudo apt-get install libgsl0-dev \n"
-                "     $ sudo yum install libgsl-devel \n"
-                "     $ brew install gsl \n\n"
-                " Or build and install gsl from source code \n"
-                "     https://www.gnu.org/software/gsl/ \n"
-                " After installing gsl, rerun cmake.\n\n"
-                " If you install gsl in non-standard place, set the GSL_HOME environment \n"
-                " variable. CMAKE use this to search for required files. \n"
-                "====================================================================\n"
-                )
-        endif(NOT GSL_FOUND)
-    endif()
+    endif(NOT GSL_FOUND)
     add_definitions(-DUSE_GSL)
     # GSL is also used in RNG (whenever applicable), therefore include paths are
     # top level.
@@ -232,29 +199,8 @@ elseif(WITH_BOOST)
     endif(BOOST_RANDOM_DEVICE_EXISTS)
 endif()
 
-## Setup hdf5
-if(HDF5_STATIC_HOME)
-    SET(HDF5_INCLUDE_DIRS "${HDF5_STATIC_HOME}/include")
-    find_library(HDF5_LIBRARY 
-        NAME libhdf5-static.a
-        PATHS ${HDF5_STATIC_HOME}/lib ${HDF5_STATIC_HOME}/lib64
-        NO_DEFAULT_PATH
-        )
-    find_library(HDF5_HL_LIBRARY
-        NAME libhdf5_hl-static.a
-        PATHS ${HDF5_STATIC_HOME}/lib ${HDF5_STATIC_HOME}/lib64
-        NO_DEFAULT_PATH
-        )
-    SET(HDF5_LIBRARIES ${HDF5_LIBRARY} ${HDF5_HL_LIBRARY})
-    SET(HDF5_FOUND TRUE)
-ELSE(HDF5_STATIC_HOME)
-    pkg_check_modules(HDF5 hdf5)
-    if(NOT HDF5_FOUND)
-        message(STATUS "pkg-config could not find hdf5. fallback to default")
-        find_package(HDF5 COMPONENTS CXX HL REQUIRED)
-     endif()
-endif(HDF5_STATIC_HOME)
 
+find_package(HDF5 COMPONENTS CXX HL)
 if(NOT HDF5_FOUND)
     message(
         "==================================================================\n"
@@ -269,18 +215,35 @@ if(NOT HDF5_FOUND)
         " variable HDF5_ROOT to the location. Rerun cmake \n"
         "================================================================ \n"
         )
-ELSEIF(HDF5_FOUND AND (NOT HDF5_STATIC_HOME))
-    if(HDF5_HL_LIBRARIES)
-        set(HDF5_LIBRARIES ${HDF5_HL_LIBRARIES})
-    else()
-        set(HDF5_LIBRARIES "-lhdf5 -lhdf5_hl")
-    endif()
-    include_directories(${HDF5_INCLUDE_DIRS})
 endif(NOT HDF5_FOUND)
 
 if(HDF5_FOUND)
-    add_definitions( -DUSE_HDF5 )
     include_directories( ${HDF5_INCLUDE_DIRS} )
+    add_definitions( -DUSE_HDF5 )
+    if(HDF5_USE_STATIC_LIBRARIES)
+	message(STATUS "Finding static HDF5 libraries in $ENV{HDF5_ROOT}")
+        find_library(HDF5_CXX_LIBRARIES NAMES libhdf5.a 
+            PATHS $ENV{HDF5_ROOT}/lib $ENV{HDF5_ROOT}/lib64
+            )
+        find_library(HDF5_HL_LIBRARIES NAMES libhdf5_hl.a
+            PATHS $ENV{HDF5_ROOT}/lib $ENV{HDF5_ROOT}/lib64 
+            )
+    endif()
+
+    set(HDF5_LIBRARIES ${HDF5_CXX_LIBRARIES} ${HDF5_HL_LIBRARIES})
+    message(STATUS "MOOSE will use ${HDF5_LIBRARIES}" )
+    foreach(HDF5_LIB ${HDF5_LIBRARIES})
+        if(HDF5_LIB)
+            get_filename_component( HDF5_LIB_EXT ${HDF5_LIB} EXT )
+            if(HDF5_LIB_EXT)
+                if(${HDF5_LIB_EXT} STREQUAL ".a")
+                    list(APPEND STATIC_LIBRARIES ${HDF5_LIB} )
+                else( )
+                    list(APPEND SYSTEM_SHARED_LIBS ${HDF5_LIB} )
+                endif( )
+            endif()
+        endif( )
+    endforeach( )
 endif( HDF5_FOUND )
 
 # This is a fix for new HDF5 package on Debian/Ubuntu which installs hdf5
@@ -313,64 +276,30 @@ if(WITH_MPI)
     endif()
 endif(WITH_MPI)
 
-# Add subdirectroeis
-add_subdirectory(basecode)
-add_subdirectory(msg)
-add_subdirectory(shell)
-add_subdirectory(randnum)
-add_subdirectory(scheduling)
-add_subdirectory(biophysics)
-add_subdirectory(builtins)
-add_subdirectory(utility)
-add_subdirectory(mesh)
-add_subdirectory(mpi)
-add_subdirectory(signeur)
-add_subdirectory(ksolve)
-add_subdirectory(hsolve)
-add_subdirectory(diffusion)
-add_subdirectory(device)
-add_subdirectory(benchmarks)
-add_subdirectory(kinetics)
-add_subdirectory(synapse)
-add_subdirectory(intfire)
-
-# These are always shared libraries.
-set(SYSTEM_SHARED_LIBS ${LibXML2_LIBRARIES})
 if(WITH_BOOST)
     list(APPEND SYSTEM_SHARED_LIBS ${LAPACK_LIBRARIES})
     list(APPEND SYSTEM_SHARED_LIBS ${Boost_LIBRARIES})
 endif(WITH_BOOST)
 
-# These libraries could be static of dynamic.
-# When building packages on OBS or launchpad, we build static library of a
-# dependencies if a correct version is not found. 
-# Here we make sure that the correct static version is linked; if a correct
-# shared version is found then link the shared version in SYSTEM_SHARED_LIBS.
-
-# If CMAKE_STATIC_LIBRARIES are mentiond on command line, use it as list.
-set(STATIC_LIBRARIES  "")
-
-if(HDF5_STATIC_HOME)
-    list(APPEND STATIC_LIBRARIES ${HDF5_LIBRARIES})
-elseif(HDF5_FOUND)
-    list(APPEND SYSTEM_SHARED_LIBS ${HDF5_LIBRARIES})
-endif()
-
+# These libraries could be static of dynamic. We need to discrimate between
+# these two types because of --whole-archive option. See
+# BhallaLab/moose-core#66,
 if(WITH_GSL)
-    if(GSL_STATIC_HOME)
-        message(STATUS "Using STATIC gsl libraries: ${GSL_LIBRARIES}")
-        list(APPEND STATIC_LIBRARIES ${GSL_LIBRARIES})
-    else()
-        message(STATUS "Using system gsl : ${GSL_LIBRARIES}")
-        list(APPEND SYSTEM_SHARED_LIBS ${GSL_LIBRARIES})
-    endif()
+    message(STATUS "Using STATIC gsl libraries: ${GSL_LIBRARIES}")
+    foreach(GSL_LIB ${GSL_LIBRARIES} )
+        if(GSL_LIB)
+            get_filename_component( GSL_LIB_EXT ${GSL_LIB} EXT )
+            if(GSL_LIB_EXT)
+                if(GSL_LIB_EXT STREQUAL ".a" )
+                    list(APPEND STATIC_LIBRARIES ${GSL_LIB})
+                else()
+                    list(APPEND SYSTEM_SHARED_LIBS ${GSL_LIB})
+                endif( )
+            endif( )
+        endif( )
+    endforeach( )
 endif()
 
-# Deprecated.
-#if(READLINE_FOUND AND TERMCAP_FOUND)
-#    list(APPEND SYSTEM_SHARED_LIBS ${Readline_LIBRARY} ${TERMCAP_LIBRARY})
-#endif()
-
 if(WITH_MPI)
     if(MPI_CXX_FOUND)
         list(APPEND SYSTEM_SHARED_LIBS ${MPI_CXX_LIBRARIES})
@@ -387,15 +316,26 @@ else()
     list(APPEND MOOSE_LIBRARIES muparser)
 endif()
 
-#pkg_check_modules(TINYXML tinyxml)
-#if(TINYXML_FOUND)
-    #message(STATUS "Using system tinyxml ${TINYXML_VERSION}")
-    #list(APPEND SYSTEM_SHARED_LIBS ${TINYXML_LIBRARIES})
-#else()
-    #message(STATUS "Using private tinyxml")
-    #add_subdirectory(external/tinyxml)
-    #list(APPEND MOOSE_LIBRARIES tinyxml)
-#endif()
+# Add subdirectroeis
+add_subdirectory(basecode)
+add_subdirectory(msg)
+add_subdirectory(shell)
+add_subdirectory(randnum)
+add_subdirectory(scheduling)
+add_subdirectory(biophysics)
+add_subdirectory(builtins)
+add_subdirectory(utility)
+add_subdirectory(mesh)
+add_subdirectory(mpi)
+add_subdirectory(signeur)
+add_subdirectory(ksolve)
+add_subdirectory(hsolve)
+add_subdirectory(diffusion)
+add_subdirectory(device)
+add_subdirectory(benchmarks)
+add_subdirectory(kinetics)
+add_subdirectory(synapse)
+add_subdirectory(intfire)
 
 ###################################### LINKING #################################
 list(APPEND MOOSE_LIBRARIES
@@ -420,6 +360,11 @@ list(APPEND MOOSE_LIBRARIES
     basecode
     )
 
+# Make sure to remove duplicates.
+list(REMOVE_DUPLICATES STATIC_LIBRARIES)
+if(SYSTEM_SHARED_LIBS)
+    list(REMOVE_DUPLICATES SYSTEM_SHARED_LIBS)
+endif( )
 
 # MAC linker does not understand many of gnu-ld options.
 message( STATUS "Shared libs: ${SYSTEM_SHARED_LIBS}")
@@ -446,13 +391,7 @@ endif(MACOSX)
 
 add_dependencies(moose.bin libmoose)
 
-# This target is only for testing purpose. It links to libmoose.
-if(CMAKE_VERSION VERSION_LESS "2.8.0")
-    message(STATUS "Using a fix for cmake ( < 2.8)")
-    target_link_libraries(moose.bin PUBLIC moose ${CMAKE_DL_LIBS})
-ELSE()
-    target_link_libraries(moose.bin LINK_PUBLIC moose ${CMAKE_DL_LIBS})
-ENDIF()
+target_link_libraries(moose.bin LINK_PUBLIC moose ${CMAKE_DL_LIBS})
 
 ######################### BUILD PYMOOSE ########################################
 # Root of all python module.
diff --git a/VERSION b/VERSION
index 819720a6..bad061c1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.1.0-123-g7805364
\ No newline at end of file
+3.1.0-155-gb7f1834
\ No newline at end of file
diff --git a/cmake_modules/FindGSL.cmake b/cmake_modules/FindGSL.cmake
index 17260420..93c2686f 100644
--- a/cmake_modules/FindGSL.cmake
+++ b/cmake_modules/FindGSL.cmake
@@ -1,147 +1,107 @@
-## 
-## Try to find gnu scientific library GSL  
-## (see http://www.gnu.org/software/gsl/)
-## Once run this will define: 
-## 
-## GSL_FOUND       = system has GSL lib
-##
-## GSL_LIBRARIES   = full path to the libraries
-##    on Unix/Linux with additional linker flags from "gsl-config --libs"
-## 
-## CMAKE_GSL_CXX_FLAGS  = Unix compiler flags for GSL, essentially "`gsl-config --cxxflags`"
-##
-## GSL_INCLUDE_DIRS      = where to find headers 
-##
-## GSL_LINK_DIRECTORIES = link directories, useful for rpath on Unix
-## GSL_EXE_LINKER_FLAGS = rpath on Unix
-##
-## Felix Woelk 07/2004
-## minor corrections Jan Woetzel
-##
-## www.mip.informatik.uni-kiel.de
-## --------------------------------
-##
-
+# Try to find gnu scientific library GSL  
+# (see http://www.gnu.org/software/gsl/)
+# Once run this will define: 
+# 
+# GSL_FOUND       = system has GSL lib
+#
+# GSL_VERSION       = gsl version
+#
+# GSL_LIBRARIES   =  name of the libraries.
+#
+# GSL_INCLUDE_DIRS      = where to find headers 
+# 
+# GSL_USE_STATIC_LIBRARIES = Set it ON if you want to search for static
+# libraries.
+#
+# Felix Woelk 07/2004
+# minor corrections Jan Woetzel
+#
+# www.mip.informatik.uni-kiel.de
+# --------------------------------
+#
+# Friday 18 November 2016 09:05:56 AM IST
+# MODIFICATIONS: ##   dilawars@ncbs.res.in, For the MOOSE project.
+#      This  version does not use gsl-config file.
+#
+
+# Set this envrionment variable to search in this path first.
+SET(GSL_ROOT_DIR $ENV{GSL_ROOT_DIR})
+if(GSL_ROOT_DIR)
+    message( STATUS "Debug: GSL_ROOT_DIR value ${GSL_ROOT_DIR}")
+endif(GSL_ROOT_DIR)
 
 IF(WIN32)
 
-  SET(GSL_MINGW_PREFIX "c:/msys/local" )
-  SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
-  FIND_LIBRARY(GSL_LIB gsl PATHS 
-    ${GSL_MINGW_PREFIX}/lib 
-    ${GSL_MSVC_PREFIX}/lib
-    )
-  #MSVC version of the lib is just called 'cblas'
-  FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS 
-    ${GSL_MINGW_PREFIX}/lib 
-    ${GSL_MSVC_PREFIX}/lib
-    )
-
-  FIND_PATH(GSL_INCLUDE_DIRS gsl/gsl_blas.h 
-    ${GSL_MINGW_PREFIX}/include 
-    ${GSL_MSVC_PREFIX}/include
-    )
+    SET(GSL_MINGW_PREFIX "c:/msys/local" )
+    SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
+    FIND_LIBRARY(GSL_LIB gsl PATHS 
+        ${GSL_MINGW_PREFIX}/lib 
+        ${GSL_MSVC_PREFIX}/lib
+        )
+    #MSVC version of the lib is just called 'cblas'
+    FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS 
+        ${GSL_MINGW_PREFIX}/lib 
+        ${GSL_MSVC_PREFIX}/lib
+        )
+
+    FIND_PATH(GSL_INCLUDE_DIRS gsl/gsl_blas.h 
+        ${GSL_MINGW_PREFIX}/include 
+        ${GSL_MSVC_PREFIX}/include
+        )
+
+    IF (GSL_LIB AND GSLCBLAS_LIB)
+        SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
+    ENDIF (GSL_LIB AND GSLCBLAS_LIB)
 
-  IF (GSL_LIB AND GSLCBLAS_LIB)
-    SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
-  ENDIF (GSL_LIB AND GSLCBLAS_LIB)
-  
 ELSE(WIN32)
-  IF(UNIX) 
-    SET(GSL_CONFIG_PREFER_PATH "$ENV{GSL_HOME}/bin")
-    # MESSAGE("++ DEBUG: GSL_CONFIG_PREFER_PATH: ${GSL_CONFIG_PREFER_PATH}")
-     
-    # GSL_CONFIG must be cleared. This script may be called again after installing
-    # the proper version of gsl
-    if(EXISTS "$ENV{GSL_HOME}")
-	set(GSL_CONFIG "$ENV{GSL_HOME}/bin/gsl-config")
-	MESSAGE(STATUS "gsl-config from environment variable: ${GSL_CONFIG}")
-	set(GSL_INCLUDE_DIRS)
-        set(GSL_LIBRARIES)
-        set(GSL_VERSION)
-        set(GSL_CONFIG_LIBS)
-    else()
-	FIND_PROGRAM(GSL_CONFIG gsl-config
-			${GSL_CONFIG_PREFER_PATH}
-			$ENV{LIB_DIR}/bin
-			/usr/local/bin/
-			/usr/bin/
-		    )
-    endif()
-    IF (GSL_CONFIG) 
-      # set CXXFLAGS to be fed into CXX_FLAGS by the user:
-      SET(GSL_CXX_FLAGS "`${GSL_CONFIG} --cflags`")
-      
-      # set INCLUDE_DIRS to prefix+include
-      EXEC_PROGRAM(${GSL_CONFIG}
-        ARGS --prefix
-        OUTPUT_VARIABLE GSL_PREFIX)
-      SET(GSL_INCLUDE_DIRS ${GSL_PREFIX}/include CACHE STRING INTERNAL)
-
-      # set link libraries and link flags
-      EXEC_PROGRAM(${GSL_CONFIG}
-          ARGS --libs
-          OUTPUT_VARIABLE GSL_LIBRARIES)
-      
-      ## extract link dirs for rpath  
-      EXEC_PROGRAM(${GSL_CONFIG}
-        ARGS --libs
-        OUTPUT_VARIABLE GSL_CONFIG_LIBS )
-
-     EXEC_PROGRAM(${GSL_CONFIG}
-         ARGS --version
-         OUTPUT_VARIABLE GSL_VERSION
-         )
-
-      ## split off the link dirs (for rpath)
-      ## use regular expression to match wildcard equivalent "-L*<endchar>"
-      ## with <endchar> is a space or a semicolon
-      STRING(REGEX MATCHALL "[-][L]([^ ;])+" 
-        GSL_LINK_DIRECTORIES_WITH_PREFIX 
-        "${GSL_CONFIG_LIBS}" )
-        #      MESSAGE("DBG  GSL_LINK_DIRECTORIES_WITH_PREFIX=${GSL_LINK_DIRECTORIES_WITH_PREFIX}")
 
-      ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
-      
-      IF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
-        STRING(REGEX REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} )
-      ENDIF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
-      SET(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL)
-      #      MESSAGE("DBG  GSL_LINK_DIRECTORIES=${GSL_LINK_DIRECTORIES}")
-      #      MESSAGE("DBG  GSL_EXE_LINKER_FLAGS=${GSL_EXE_LINKER_FLAGS}")
+    IF(GSL_USE_STATIC_LIBRARIES)
+        SET(GSL_LIB_NAMES libgsl.a)
+        SET(GSL_CBLAS_LIB_NAMES libgslcblas.a)
+    ELSE(GSL_USE_STATIC_LIBRARIES)
+        SET(GSL_LIB_NAMES gsl)
+        SET(GSL_CBLAS_LIB_NAMES gslcblas)
+    ENDIF( )
+
+    FIND_LIBRARY(GSL_LIB 
+        NAMES ${GSL_LIB_NAMES} 
+        PATHS 
+            ${GSL_ROOT_DIR}/lib ${GSL_ROOT_DIR}/lib64
+            /opt/lib /opt/lib64
+        )
+
+    FIND_LIBRARY(GSLCBLAS_LIB 
+        NAMES ${GSL_CBLAS_LIB_NAMES}
+        PATHS 
+            ${GSL_ROOT_DIR}/lib ${GSL_ROOT_DIR}/lib64
+            /opt/lib /opt/lib64
+        )
+    IF (GSL_LIB AND GSLCBLAS_LIB)
+        SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
+    ENDIF (GSL_LIB AND GSLCBLAS_LIB)
+
+    FIND_PATH(GSL_INCLUDE_DIRS NAMES gsl/gsl_blas.h
+        PATHS ${GSL_ROOT_DIR}/include /opt/include 
+        )
 
-      #      ADD_DEFINITIONS("-DHAVE_GSL")
-      #      SET(GSL_DEFINITIONS "-DHAVE_GSL")
-      MARK_AS_ADVANCED(
-        GSL_CXX_FLAGS
-        GSL_INCLUDE_DIRS
-        GSL_LIBRARIES
-        GSL_LINK_DIRECTORIES
-        GSL_DEFINITIONS
-      )
-      
-    ELSE(GSL_CONFIG)
 
-      IF (GSL_FIND_REQUIRED)
-         MESSAGE(FATAL_ERROR "Could not find gsl-config. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
-      ELSE (GSL_FIND_REQUIRED)
-         MESSAGE(STATUS "Could not find GSL")
-         # TODO: Avoid cmake complaints if GSL is not found
-      ENDIF (GSL_FIND_REQUIRED)
-
-    ENDIF(GSL_CONFIG)
-
-  ENDIF(UNIX)
 ENDIF(WIN32)
 
-
-IF(GSL_LIBRARIES)
-  IF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
-
-    SET(GSL_FOUND 1)
-    
-    MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}")
-
-  ENDIF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
-ENDIF(GSL_LIBRARIES)
+# FIND version
+if(GSL_INCLUDE_DIRS)
+    file(READ "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" GSL_VERSION_TEXT)
+    string(REGEX REPLACE ".*define[ ]+GSL_MAJOR_VERSION[ ]*([0-9]+).*"  "\\1"
+        GSL_MAJOR_VERSION "${GSL_VERSION_TEXT}")
+    string(REGEX REPLACE ".*define[ ]+GSL_MINOR_VERSION[ ]*([0-9]+).*"  "\\1"
+        GSL_MINOR_VERSION "${GSL_VERSION_TEXT}")
+    set(GSL_VERSION "${GSL_MAJOR_VERSION}.${GSL_MINOR_VERSION}")
+    message(STATUS "GSL version : ${GSL_VERSION}")
+endif(GSL_INCLUDE_DIRS)
+
+IF(GSL_LIBRARIES AND GSL_VERSION)
+    IF(GSL_INCLUDE_DIRS)
+        MESSAGE(STATUS "Found GSL ${GSL_LIBRARIES}")
+        SET(GSL_FOUND 1)
+    ENDIF(GSL_INCLUDE_DIRS)
+ENDIF()
 
diff --git a/python/libmumbl/core/dynamic_vars.py b/python/libmumbl/core/dynamic_vars.py
index b66a1e15..ae56381a 100644
--- a/python/libmumbl/core/dynamic_vars.py
+++ b/python/libmumbl/core/dynamic_vars.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """dynamic_vars.py: Class to create variables out of strings.
 
diff --git a/python/libmumbl/core/types.py b/python/libmumbl/core/types.py
index a89ed84c..272ae847 100644
--- a/python/libmumbl/core/types.py
+++ b/python/libmumbl/core/types.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """types.py: Implement some data-types.
 
diff --git a/python/libmumbl/helper/graph_methods.py b/python/libmumbl/helper/graph_methods.py
index b5d1360b..50c400eb 100644
--- a/python/libmumbl/helper/graph_methods.py
+++ b/python/libmumbl/helper/graph_methods.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 __author__  = "Dilawar Singh <dilawars@ncbs.res.in>"
 
diff --git a/python/libmumbl/helper/moose_methods.py b/python/libmumbl/helper/moose_methods.py
index bb684480..c5b0cb8f 100644
--- a/python/libmumbl/helper/moose_methods.py
+++ b/python/libmumbl/helper/moose_methods.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """moose_methods.py:  Some helper function related with moose to do multiscale
 modelling.
diff --git a/python/libmumbl/helper/xml_methods.py b/python/libmumbl/helper/xml_methods.py
index e848bfa4..d3fb6394 100644
--- a/python/libmumbl/helper/xml_methods.py
+++ b/python/libmumbl/helper/xml_methods.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 __author__  = "Dilawar Singh <dilawars@ncbs.res.in>"
 
diff --git a/python/libmumbl/nml_parser/importer.py b/python/libmumbl/nml_parser/importer.py
index 6beb6d1c..186f6a0a 100644
--- a/python/libmumbl/nml_parser/importer.py
+++ b/python/libmumbl/nml_parser/importer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 __author__  = "Dilawar Singh <dilawars@ncbs.res.in>"
 __date__    = "Mon 21 Oct 2013 11:37:01 PM IST"
diff --git a/python/libmumbl/test/adaptor.py b/python/libmumbl/test/adaptor.py
index 25f38feb..51a55eb5 100644
--- a/python/libmumbl/test/adaptor.py
+++ b/python/libmumbl/test/adaptor.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """adaptor.py: 
 
diff --git a/python/libmumbl/utility/debug.py b/python/libmumbl/utility/debug.py
index 1fc31a8c..f99de021 100644
--- a/python/libmumbl/utility/debug.py
+++ b/python/libmumbl/utility/debug.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """print_utils.py: A library with some print functions. Very useful during
 development.
diff --git a/python/moose/methods_utils.py b/python/moose/methods_utils.py
index 5eaa1519..91e49dcc 100644
--- a/python/moose/methods_utils.py
+++ b/python/moose/methods_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """methods_utils.py: 
     Some non-standard functions generic to moose. 
diff --git a/python/moose/neuroml2/generated_neuroml.py b/python/moose/neuroml2/generated_neuroml.py
index e2d4c5a3..0cbf3ffd 100644
--- a/python/moose/neuroml2/generated_neuroml.py
+++ b/python/moose/neuroml2/generated_neuroml.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 # -*- coding: utf-8 -*-
 
 #
diff --git a/python/moose/neuroml2/generated_neuromlsub.py b/python/moose/neuroml2/generated_neuromlsub.py
index 3f066bdd..7e7957be 100644
--- a/python/moose/neuroml2/generated_neuromlsub.py
+++ b/python/moose/neuroml2/generated_neuromlsub.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 #
 # Generated Sun Apr 17 15:01:32 2016 by generateDS.py version 2.22a.
diff --git a/python/moose/neuroml2/test_files/Purk2M9s.nml.REMOVED.git-id b/python/moose/neuroml2/test_files/Purk2M9s.nml.REMOVED.git-id
deleted file mode 100644
index 18e9dea4..00000000
--- a/python/moose/neuroml2/test_files/Purk2M9s.nml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-511ab43e06697c5907ff335cdd26b31603cc281c
\ No newline at end of file
diff --git a/python/moose/plot_utils.py b/python/moose/plot_utils.py
index b1438394..b2740954 100644
--- a/python/moose/plot_utils.py
+++ b/python/moose/plot_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """plot_utils.py: Some utility function for plotting data in moose.
 
diff --git a/python/moose/sim_utils.py b/python/moose/sim_utils.py
index 2e88a68c..0fd637d7 100644
--- a/python/moose/sim_utils.py
+++ b/python/moose/sim_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """sim_utils.py: 
     Helper function related with simulation.
diff --git a/python/moose/verification_utils.py b/python/moose/verification_utils.py
index c5d52c8a..973c03f1 100644
--- a/python/moose/verification_utils.py
+++ b/python/moose/verification_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """verification_utils.py:
 
diff --git a/python/rdesigneur/cells/CA1.morph.xml.REMOVED.git-id b/python/rdesigneur/cells/CA1.morph.xml.REMOVED.git-id
deleted file mode 100644
index b422b192..00000000
--- a/python/rdesigneur/cells/CA1.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-dcae7ae96b2922a1e00f701d1ddbb26c114ae5d9
\ No newline at end of file
diff --git a/python/rdesigneur/chans/CA1.morph.xml.REMOVED.git-id b/python/rdesigneur/chans/CA1.morph.xml.REMOVED.git-id
deleted file mode 100644
index be0ea2fb..00000000
--- a/python/rdesigneur/chans/CA1.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-2a3815b394f8bcb4b6450081d9ba45d20abdf3cf
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1.morph.bad.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1.morph.bad.xml.REMOVED.git-id
deleted file mode 100644
index 63d5e4e5..00000000
--- a/tests/python/neuroml/cells_channels/CA1.morph.bad.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-b7ea967caab7e1e55c783506429892b973da4e25
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1.morph.original.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1.morph.original.xml.REMOVED.git-id
deleted file mode 100644
index 6fe13999..00000000
--- a/tests/python/neuroml/cells_channels/CA1.morph.original.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-68f982a3ed4e630891fd11c985fce9d7a3f44c39
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1.morph.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1.morph.xml.REMOVED.git-id
deleted file mode 100644
index 3e43c654..00000000
--- a/tests/python/neuroml/cells_channels/CA1.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-074524a8ca7045254e3f75b817299f54beaf0096
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1_original.morph.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1_original.morph.xml.REMOVED.git-id
deleted file mode 100644
index 6fe13999..00000000
--- a/tests/python/neuroml/cells_channels/CA1_original.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-68f982a3ed4e630891fd11c985fce9d7a3f44c39
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1inhomog.morph.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1inhomog.morph.xml.REMOVED.git-id
deleted file mode 100644
index 07fc399b..00000000
--- a/tests/python/neuroml/cells_channels/CA1inhomog.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-c4700d039b3549376c1ff8d7e9e938a674b05e23
\ No newline at end of file
-- 
GitLab