From 3270e16e6405a9780755ae77bbc5187ad01c6bb3 Mon Sep 17 00:00:00 2001
From: Marcel Loose <loose@astron.nl>
Date: Wed, 24 Feb 2010 15:09:44 +0000
Subject: [PATCH] Bug 1475: Use Python distutils to determine third-party
 extensions directory, instead of hardcoding 'site-packages' into it.

---
 lofarinit.csh.in | 17 ++++++-----------
 lofarinit.sh.in  | 17 ++++++-----------
 2 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/lofarinit.csh.in b/lofarinit.csh.in
index 99ca98599b9..602a12ecd8a 100644
--- a/lofarinit.csh.in
+++ b/lofarinit.csh.in
@@ -37,13 +37,8 @@ endif
 # Use only the basename of the the lib
 set lfr_libdir=`basename $lfr_libdir`
 
-# Get python version.
-set lfr_pyv=`python -V |& cat --`
-set lfr_pyvv=`echo $lfr_pyv | sed -e "s/Python \([0-9]\.[0-9]\).*/\1/"`
-# Fall-back: if python cannot be found assume Python 2.4
-if ("$lfr_pyv" == "$lfr_pyvv") then
-  set lfr_pyvv=2.4
-endif
+# Get directory for Python extensions
+set lfr_pylibdir=`python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(plat_specific=True, prefix='')"`
 
 # Only modify path variables if $lfr_root is an existing directory.
 if (! (-d $lfr_root) ) then
@@ -64,7 +59,7 @@ else
             setenv LD_LIBRARY_PATH `echo $LD_LIBRARY_PATH | sed -e "s%:${lfr_lib}:%:%g" -e "s%^${lfr_lib}:%%"  -e "s%:${lfr_lib}"'$%%' -e "s%^${lfr_lib}"'$%%'`
         endif
         if ($?PYTHONPATH) then
-            set lfr_pyt = "$lfr_path/$lfr_libdir/python$lfr_pyvv/site-packages"
+            set lfr_pyt = "$lfr_path/$lfr_pylibdir"
             setenv PYTHONPATH `echo $PYTHONPATH | sed -e "s%:${lfr_pyt}:%:%g" -e "s%^${lfr_pyt}:%%"  -e "s%:${lfr_pyt}"'$%%' -e "s%^${lfr_pyt}"'$%%'`
         endif
     endif
@@ -91,7 +86,7 @@ else
         setenv LD_LIBRARY_PATH `echo $LD_LIBRARY_PATH | sed -e "s%:${lfr_lib}:%:%g" -e "s%^${lfr_lib}:%%"  -e "s%:${lfr_lib}"'$%%' -e "s%^${lfr_lib}"'$%%'`
     endif
     if ($?PYTHONPATH) then
-        set lfr_pyt = "$lfr_path/$lfr_libdir/python$lfr_pyvv/site-packages"
+        set lfr_pyt = "$lfr_path/$lfr_pylibdir"
         setenv PYTHONPATH `echo $PYTHONPATH | sed -e "s%:${lfr_pyt}:%:%g" -e "s%^${lfr_pyt}:%%"  -e "s%:${lfr_pyt}"'$%%' -e "s%^${lfr_pyt}"'$%%'`
     endif
 
@@ -106,7 +101,7 @@ else
     else
         setenv LD_LIBRARY_PATH $LOFARROOT/${lfr_libdir}:$LD_LIBRARY_PATH
     endif
-    set lfr_pyt = "$LOFARROOT/$lfr_libdir/python$lfr_pyvv/site-packages"
+    set lfr_pyt = "$LOFARROOT/$lfr_pylibdir"
     if (! $?PYTHONPATH) then
         setenv PYTHONPATH $lfr_pyt
     else
@@ -130,4 +125,4 @@ else
 
 endif
 
-unset lfr_root lfr_bin lfr_libdir lfr_lib lfr_pyt lfr_pyv lfr_pyvv lfr_path
+unset lfr_root lfr_bin lfr_libdir lfr_lib lfr_pylibdir lfr_pyt lfr_path
diff --git a/lofarinit.sh.in b/lofarinit.sh.in
index 2e1c3702a4c..cadb08941e5 100644
--- a/lofarinit.sh.in
+++ b/lofarinit.sh.in
@@ -37,13 +37,8 @@ fi
 # Use only the basename of the the lib
 lfr_libdir=`basename $lfr_libdir`
 
-# Get python version.
-lfr_pyv=`python -V 2>&1`
-lfr_pyvv=`echo $lfr_pyv | sed -e "s/Python \([0-9]\.[0-9]\).*/\1/"`
-# Fall-back: if python cannot be found assume Python 2.4
-if test "$lfr_pyv" = "$lfr_pyvv"; then
-  lfr_pyvv=2.4
-fi
+# Get directory for Python extensions
+lfr_pylibdir=`python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(plat_specific=True, prefix='')"`
 
 # First strip the current LOFARROOT from PATH, LD_LIBRARY_PATH, and PYTHONPATH.
 # Take care that a possible . is preceeded by a backslash (for the later sed).
@@ -58,7 +53,7 @@ if [ "$LOFARROOT" != "" ]; then
     lfr_lib="$lfr_path/$lfr_libdir"
     LD_LIBRARY_PATH=`echo $LD_LIBRARY_PATH | sed -e "s%:$lfr_lib:%:%g" -e "s%^$lfr_lib:%%"  -e "s%:$lfr_lib$%%" -e "s%^$lfr_lib$%%"`
     export LD_LIBRARY_PATH
-    lfr_pyt="$lfr_path/$lfr_libdir/python$lfr_pyvv/site-packages"
+    lfr_pyt="$lfr_path/$lfr_pylibdir"
     PYTHONPATH=`echo $PYTHONPATH | sed -e "s%:$lfr_pyt:%:%g" -e "s%^$lfr_pyt:%%"  -e "s%:$lfr_pyt$%%" -e "s%^$lfr_pyt$%%"`
     export PYTHONPATH
 fi
@@ -83,7 +78,7 @@ else
     lfr_lib="$lfr_path/$lfr_libdir"
     LD_LIBRARY_PATH=`echo $LD_LIBRARY_PATH | sed -e "s%:$lfr_lib:%:%g" -e "s%^$lfr_lib:%%"  -e "s%:$lfr_lib$%%" -e "s%^$lfr_lib$%%"`
     export LD_LIBRARY_PATH
-    lfr_pyt="$lfr_path/$lfr_libdir/python$lfr_pyvv/site-packages"
+    lfr_pyt="$lfr_path/$lfr_pylibdir"
     PYTHONPATH=`echo $PYTHONPATH | sed -e "s%:$lfr_pyt:%:%g" -e "s%^$lfr_pyt:%%"  -e "s%:$lfr_pyt$%%" -e "s%^$lfr_pyt$%%"`
     export PYTHONPATH
 fi
@@ -105,7 +100,7 @@ else
         LD_LIBRARY_PATH=$LOFARROOT/$lfr_libdir:$LD_LIBRARY_PATH
     fi
     export LD_LIBRARY_PATH
-    lfr_pyt=$LOFARROOT/$lfr_libdir/python$lfr_pyvv/site-packages
+    lfr_pyt="$LOFARROOT/$lfr_pylibdir"
     if [ "$PYTHONPATH" = "" ]; then
         PYTHONPATH=$lfr_pyt
     else
@@ -133,4 +128,4 @@ else
 fi
 
 # Clean up
-unset lfr_root lfr_nroot lfr_bin lfr_libdir lfr_lib lfr_pyt lfr_pyv lfr_pyvv lfr_path
+unset lfr_root lfr_nroot lfr_bin lfr_libdir lfr_lib lfr_pylibdir lfr_pyt lfr_path
-- 
GitLab