]> Creatis software - creaToolsTools.git/blobdiff - Linux/installscript
#3183 creaToolsTools Feature New Normal - install prefix name
[creaToolsTools.git] / Linux / installscript
index b8251243d5cbf96277d89677bb6a4530aa0e7483..b7c2f492c9209ee9dd3f42ab0e1f1a398675e40a 100755 (executable)
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+#
+#  This software is governed by the CeCILL-B license under French law and 
+#  abiding by the rules of distribution of free software. You can  use, 
+#  modify and/ or redistribute the software under the terms of the CeCILL-B 
+#  license as circulated by CEA, CNRS and INRIA at the following URL 
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability. 
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------  
+
 #!/bin/bash -e
 
+scriptDirName=$(dirname $(readlink -f $0) )
+
 #########################################################################
 ############     Local Functions  #######################################
 #########################################################################
 
-##########################################
-# check that $1 is one of $2, $3, ...
-function checkVal  {
-    local val=$1
-    shift
-    for x in $* ; do
-        if [ "$val" == "$x" ] ; then
-            echo "true"
-            return
-        fi
-    done
-    echo "false"
-}
-
-###########################################
-function bigDisplay {
-    echo " ================================================================================================"
-    echo " ================================================================================================"
-    echo " ======= $1"                                       
-    echo " ================================================================================================"
-    echo " ================================================================================================"
-}
-
-###########################################
-function checkDistrib {
-    local OS=$1
-
-    if [ "`checkVal $OS MacOS Fedora Ubuntu Mandriva`" == "false" ] ; then
-        echo "Operating System not supported: $OS"
-        echo "Currently supported system: Fedora Ubuntu MacOS"
-        exit 1
-    fi
-}
-
-###########################################
-function getDistrib {
-    local OS=`uname`
-
-      if [ "$OS" == Darwin ] ; then OS=MacOS;
-    elif [ "$OS" == Linux  ] ; then OS=`awk 'NR==1{print $1}' /etc/issue`
-    else OS=""
-    fi
-
-#    checkDistrib $OS
-
-    echo $OS
-}
-
-###########################################
-function getncore {
-    if [ `uname` == Darwin ] ; then # MacOS
-        system_profiler | grep Processor | awk '$1=="Number" {print $4}'
-    else
-        cat /proc/cpuinfo | grep processor | wc -l
-    fi
-}
-
-###########################################
-function getbashrc {
-    if [ ! -f $HOME/.bashrc ] ; then
-        touch $HOME/.bashrc
-    fi
-    echo $HOME/.bashrc
-
-
-#    # Do it, while we are under user, not under root! # JPR
-#    if [ -f $HOME/.bashrc ] ; then
-#        echo $HOME/.bashrc
-#    else
-#        if [ -f $HOME/.profile ] ; then
-#            echo $HOME/.profile
-#        else
-#            echo "=============== BIG TROUBLE : neither $HOME/.bashrc nor $HOME/.profile file found" > /dev/stderr
-#            echo "=============== You'd better abort the program and (try to) fix the issue" > /dec/stderr
-#            read a # just to let the user time enough to read the message...
-#        fi
-#    fi
-}
-
-
-###########################################
-function printconfig {
-
-    echo
-    echo "Current Configuration:"
-    echo "  Operating System                           : $OperatingSystem"
-    echo "  Number of Cores                            : $corenumber"  
-    echo "  Name of the Generation Directory           : $generationdir"
-    echo "  Install Prefix for Third Party Libraries   : $installPrefixThird"  
-    echo "  Install Prefix for CreaTools               : $installPrefix"
-    echo "  Boolean for Doc Generation                 : $docgeneration"
-    echo "  Where do you want to get source files from : $sourcesFrom"
-    if [ $sourcesFrom = CVS ] ; then
-    echo "  CVS User Name                              : $cvsUserName"
-    fi
-    echo "  Login User Name                            : $loginUserName"
-    echo "  Login Group Name                           : $loginGroupName"
-    echo "  Build type                                 : $buildType"          
-    echo "  Gdcm version                               : $gdcmVersion"
-    echo "  ITK version                                : $ITKVersion"
-    echo
-
-}
-
-
 
-##################################################################################################
-##################################################################################################
-##################################################################################################
-##################################################################################################
-##################################################################################################
-##################################################################################################
+source scripts/LocalFunctions.sh
 
 configureFile="scripts/CreaTools-configure.sh"
 
@@ -123,26 +38,22 @@ configureFile="scripts/CreaTools-configure.sh"
 # default configuration parameters
 OperatingSystem=`getDistrib`
 corenumber=`getncore`
-generationdir=$HOME/CreatoolsGenerationDir
+generationdir=$HOME/Creatis/creaTools
 installPrefixThird=
 installPrefix=
 docgeneration=OFF
-sourcesFrom=HTML
+sourcesFrom=GIT
 
-cvsUserName=
 loginUserName=$USER
-loginGroupName=$GROUP
-buildType=RelWithDebug
+loginGroupName=`groups | awk '{print $1}'`
+buildType=Release
 gdcmVersion=GDCM1
 ITKVersion=ITK3
 export ETC_BASHRC=`getbashrc`
 
 
-
-
-
 function usage {
-    echo "menu.sh [options] command" 
+    echo "installscript [options] command" 
     echo "creatools configure/compile/install script" 
     echo "" 
     echo "" 
@@ -150,27 +61,35 @@ function usage {
     echo "" 
     echo "" 
     echo "    command:" 
-    echo "         all               : configure / compile / install
-    echo "         "                 
-    echo "         config            : set the configuration parameters only" 
+    echo "" 
+    echo "    as a normal user:" 
+    echo "         config                    : set the configuration parameters only" 
     echo "         "                 
-    echo "         3rd               : Get, Compile, Install all 3rd party library "
-    echo "         3rd-base          : Install basic tools (cmake, doxygen...)"
-    echo "         3rd-vtk           : Get, Compile, Install vtk"
-    echo "         3rd-itk           : Get, Compile, Install itk"
-    echo "         3rd-gdcm          : Get, Compile, Install gdcm"
-    echo "         3rd-wx            : Get, Compile, Install wx widget (for Mac Users)"
+    echo "    need root password:" 
+    echo "         3rd                       : Get, Compile, Install all 3rd party library "
+    echo "         3rd-base                  : Install basic tools (cmake, doxygen...)"
+    echo "         3rd-vtk                   : Get, Compile, Install vtk"
+    echo "         3rd-itk                   : Get, Compile, Install itk"
+    echo "         3rd-gdcm                  : Get, Compile, Install gdcm"
+    echo "         3rd-wx                    : Get, Compile, Install wx widget (for Mac Users)"
+    echo "         3rd-wt                    : Get, Compile, Install wt"
     echo "   "
-    echo "         creatools         : Get Compile and Install the CreaTools"
-    echo "         creatools-get     : Get the CreaTools"
-    echo "         creatools-cmp     : Compile the CreaTools"
-    echo "         creatools-install : Install the CreaTools"
+    echo "    as a normal user:" 
+    echo "         creatools                 : Get Compile and Install the CreaTools"
+    echo "         creatools-get             : Get the CreaTools"
+    echo "         creatools-cmp             : Compile the CreaTools"
+    echo "         creatools-install         : Install the CreaTools"
     echo "   "
-    echo "         uninstall         : uninstall the creatools"
+    echo "         creatools-generateBinTGZ  : generation of CreaTools.tgz (binary version)" 
     echo "   "
-    echo "         printconfig       : print the configuration" 
-    echo "         help              : print help"
-    echo "         env               : print some environnement variables"
+    echo "         uninstall                 : uninstall the creatools"
+    echo "   "
+    echo "         printconfig               : print the configuration" 
+    echo "         help                      : print help"
+    echo "         env                       : print some environnement variables"
+    echo "" 
+    echo "         all                       : configure / compile / install" 
+    echo "         "                 
     echo "   "
     echo "   "
     echo "   "
@@ -181,7 +100,9 @@ function usage {
     echo "        -gdir <dir>           : generation directory (default $generationdir)"
     echo "        -instprefix <dir>     : creatools install prefix" 
     echo "        -instprefix3 <dir>    : 3rd party library install prefix" 
-    echo "        -cvs <cvsusername>    : get creatools from cvs (CREATIS user only)"
+    echo "        -html                 : get creatools from HTML"
+    echo "        -git                  : get creatools from git (CREATIS user only)"
+    echo "        -git-read-only        : get creatools from git (anonymously, no write access)"
     echo "        -build                : build type Release, RelWithDebug or Debug (default RelWithDebug)"
     echo ""
     echo "     experimental configure options (use at your own risk!!):"
@@ -202,7 +123,10 @@ while [ $# -ge 1 ] ; do
         -instprefix)        installPrefix=$2;                          shift 2;;
         -instprefix3)       installPrefixThird=$2;                     shift 2;;
         -doc)               docgeneration=ON;                          shift 1;;
-        -cvs)               sourcesFrom=CVS; cvsUserName=$2;           shift 2;;
+        -html)              sourcesFrom=HTML;                          shift 1;;
+        -git)               sourcesFrom=GIT;                           shift 1;;
+        -git-read-only)     sourcesFrom=GIT-READ-ONLY;
+shift 1;;
         -gdcm2)             gdcmVersion=GDCM2;                         shift 1;;
         -itk4)              ITKVersion=ITK4;                           shift 1;;
         -build)             buildType=$2;                              shift 2;;
@@ -215,7 +139,7 @@ if [ $# -le 0 ] ; then usage; fi
 command=$1
 
 # check that command is valid
-if [ `checkVal $command all config 3rd 3rd-base 3rd-vtk 3rd-itk 3rd-gdcm 3rd-wx creatools creatools-get creatools-cmp creatools-install uninstall printconfig help env` == "false" ] ; then
+if [ `checkVal $command all config 3rd 3rd-base 3rd-vtk 3rd-itk 3rd-gdcm 3rd-wx 3rd-wt creatools creatools-get creatools-cmp creatools-install creatools-generateBinTGZ uninstall printconfig help env` == "false" ] ; then
     echo "Unrecognized command: $command"
     echo ""
     usage
@@ -230,7 +154,7 @@ if [ `checkVal $command config all` == false ] ; then
         exit
     fi
     source $configureFile
-    if [ ! -f $installPrefixThird/share/creatools_third_party_library_config.sh ] ; then
+    if [ ! -f $installPrefixThird/share/creatools/creatools_third_party_library_config.sh ] ; then
         echo WARNING
         echo "the curently used Third Party libraries are NOT in $installPrefixThird but ... in :"
         grep "installPrefixThird=" $ETC_BASHRC
@@ -250,8 +174,8 @@ fi
 checkDistrib $OperatingSystem
 
 # complete default install prefix
-if [ -z "$installPrefix" ]      ; then installPrefix=$generationdir/creatools_install; fi
-if [ -z "$installPrefixThird" ] ; then installPrefixThird=$generationdir/thirdparty_install; fi
+if [ -z "$installPrefix" ]      ; then installPrefix=$generationdir/ci; fi
+if [ -z "$installPrefixThird" ] ; then installPrefixThird=$generationdir/tpli; fi
 
 # check build type
 if [ `checkVal $buildType Release Debug RelWithDebug` == "false" ] ; then
@@ -266,7 +190,7 @@ fi
 if [ `checkVal $command config all` == true ] ; then
     echo "#!/bin/bash"                            >  $configureFile
     echo                                          >> $configureFile
-    echo "#File generated by 'menu.sh'"           >> $configureFile
+    echo "#File generated by 'installscript'"           >> $configureFile
     echo "#DO NOT edit !"                         >> $configureFile
     echo "#(except if you *do* know what you do)" >> $configureFile
     echo                                          >> $configureFile
@@ -277,7 +201,6 @@ if [ `checkVal $command config all` == true ] ; then
     echo "installPrefixThird=$installPrefixThird" >> $configureFile
     echo "docgeneration=$docgeneration"           >> $configureFile
     echo "sourcesFrom=$sourcesFrom"               >> $configureFile
-    echo "cvsUserName=$cvsUserName"               >> $configureFile 
     echo "loginUserName=$loginUserName"           >> $configureFile
     echo "loginGroupName=$loginGroupName"         >> $configureFile
     echo "buildType=$buildType"                   >> $configureFile
@@ -305,49 +228,56 @@ if [ `checkVal $command config printconfig` == true ] ; then
     exit
 fi
 
+################################################################################## creatools
+# download creatools
+if [ `checkVal $command all creatools creatools-get` == true ] ; then
+    bigDisplay "DOWNLOAD CREATOOLS"
+    bash scripts/CreaTools-load.sh
+fi
 
 ################################################################################## 3rd library
 # install packaged dependencies as root
 if [ `checkVal $command all 3rd 3rd-base` == true ] ; then
     bigDisplay "INSTALL PACKAGES DEPENDENCIES"
-    if [ "`whoami`" == root ] ; then
-        bash scripts/ThirdParty-install-Base-Stuff.sh
-    else 
-        # must log as root
-        echo "Please enter the root passwd to add necessary packages:"; 
-        su -c "bash scripts/ThirdParty-install-Base-Stuff.sh"   
-    fi
+    source scripts/CreaTools-configure.sh
+    cd scripts
+    source ThirdParty-install-Base-Stuff.sh $OperatingSystem
+    cd ..
     bash scripts/ThirdParty-install.sh
 fi
 
 # vtk
 if [ `checkVal $command all 3rd 3rd-vtk` == true ] ; then
     bigDisplay "INSTALL VTK"
-    bash scripts/ThirdParty-install-VTK.sh
+    source scripts/ThirdParty-install-VTK.sh
+    cd $scriptDirName
 fi
 
 # gdcm
 if [ `checkVal $command all 3rd 3rd-gdcm` == true ] ; then
     bigDisplay "INSTALL $gdcmVersion"
-    bash scripts/ThirdParty-install-gdcm.sh
+    source scripts/ThirdParty-install-gdcm.sh
+    cd $scriptDirName
 fi
 
 # itk
 if [ `checkVal $command all 3rd 3rd-itk` == true ] ; then
     bigDisplay "INSTALL $ITKVersion"
     bash scripts/ThirdParty-install-ITK.sh
+    cd $scriptDirName
 fi
 
-## ??
-#if [ `checkVal $command all 3rd` == true ] ; then
-#    bash scripts/ThirdParty-install.sh
-#fi
+# wt
+if [ `checkVal $command all 3rd 3rd-wt` == true ] ; then
+    bigDisplay "INSTALL WT"
+    source scripts/ThirdParty-install-WT.sh
+    cd $scriptDirName
+fi
 
 # Setup the user .bashrc correctly
-if [ `checkVal $command all 3rd 3rd-vtk 3rd-itk 3rd-gdcm 3rd-wx ` == true ] ; then
+if [ `checkVal $command all 3rd 3rd-vtk 3rd-itk 3rd-gdcm 3rd-wx 3rd-wt ` == true ] ; then
     bigDisplay "FINALIZE 3RD PARTY LIBRARY INSTALLATION"
     bash scripts/ThirdParty-install-Finalize.sh
-    source $ETC_BASHRC
     if [ `checkVal $command 3rd 3rd-vtk 3rd-itk 3rd-gdcm 3rd-wx ` == true ] ; then
         bigDisplay "Third Party Install Done" 
         bigDisplay "Please copy paste the following command or open a new terminal: source ~/.bashrc" 
@@ -355,16 +285,11 @@ if [ `checkVal $command all 3rd 3rd-vtk 3rd-itk 3rd-gdcm 3rd-wx ` == true ] ; th
 fi
 
 ################################################################################## creatools
-
-# download creatools
-if [ `checkVal $command all creatools creatools-get` == true ] ; then
-    bigDisplay "DOWNLOAD CREATOOLS"
-    bash scripts/CreaTools-load.sh
-fi
-
 # compile creatools
 if [ `checkVal $command all creatools creatools-cmp` == true ] ; then
     bigDisplay "COMPILE CREATOOLS"
+echo "EED installscript compile creatools"
+echo $ETC_BASHRC
     source $ETC_BASHRC
     bash -x scripts/CreaTools-compile.sh
 
@@ -388,10 +313,23 @@ if [ `checkVal $command all creatools creatools-install` == true ] ; then
     source $ETC_BASHRC
     bash scripts/CreaTools-install.sh
     source $ETC_BASHRC
+    echo " "
+    echo " "
+    echo " "
+    echo " "
+    echo "Open a new terminal to run creatools."
+    echo "(Close this window and continue....) "
+    echo " "
+    echo " "
+    ##EED read -p "Press [Enter] key to continue..."
 fi
 
-################################################################################## uninstall
+#generate TGZ version of the bin (Creatools and ThirdParty)
+if [ `checkVal $command creatools-generateBinTGZ` == true ] ; then
+    bash scripts/CreaTools-GenerateBinTGZ.sh
+fi
 
+################################################################################## uninstall
 if [ `checkVal $command uninstall` == true ] ; then
     bigDisplay "UNINSTALL CREATOOLS"
     bash scripts/CreaTools-uninstall.sh