+++ /dev/null
-import errno, glob, os, math, mimetypes, multiprocessing
-import platform, readline, tarfile
-from distutils import spawn
-
-## ------------------------
-## -- Create directories --
-## ------------------------
-
-def create_dir( path ):
- try:
- os.makedirs(path)
- except OSError as exception:
- if exception.errno != errno.EEXIST:
- raise
- # yrt
-# fed
-
-## ------------------------
-## -- Filename completer --
-## ------------------------
-
-def filename_completer( text, state ):
- return ( glob.glob( text + '*' ) + [ None ] )[ state ]
-# fed
-
-def get_filepath( message ):
- readline.set_completer_delims( ' \t\n;' )
- readline.parse_and_bind( "tab: complete" )
- readline.set_completer( filename_completer )
- return os.path.abspath( raw_input( message ) )
-# fed
-
-## ----------------
-## -- Find paths --
-## ----------------
-
-def find_paths( locs, progs ):
- paths = []
- for prog in progs:
- for loc in locs:
- path = spawn.find_executable( loc + "/" + prog )
- if path <> None:
- paths.append( path )
- # rof
- # rof
- return paths
-# def
-
-## ------------------------------
-## -- Extract compressed files --
-## ------------------------------
-
-def extract( src ):
- tar_gz_type = ( "application/x-tar", "gzip" )
- src_type = mimetypes.guess_type( src )
- print( "Extracting " + src + ": " )
- if src_type == tar_gz_type:
- src_dir = os.path.splitext( src )[ 0 ]
- src_file = tarfile.open( src, "r|gz" )
- src_file.extractall( src_dir )
- src_file.close( )
- #elif src_type == tar_bz2_type:
- #elif src_type == zip_type:
- #else:
- # fi
- print( " done!" )
- return src_dir
-
-## -------------------
-## -- Choose config --
-## -------------------
-
-def choose_config( paths, name ):
- print( "Please choose one configuration for " + name + ":" )
- for i in range( len( paths ) ):
- print( "\t" + str( i ) + ": " + paths[ i ] )
- # rof
- print( "\t" + str( len( paths ) + 0 ) + ": Give another installation." )
- print( "\t" + str( len( paths ) + 1 ) + ": Build from scratch." )
- opt = -1
- while opt == -1:
- opt = int( raw_input( "\t---> " ) )
- if opt < 0 or opt > len( paths ) + 1:
- qmake_opt = -1
- # fi
- # elihw
- return opt
-# def
-
-## --------------------
-## -- Some variables --
-## --------------------
-
-home_dir = os.environ[ "HOME" ]
-process_count = str( multiprocessing.cpu_count( ) / 2 )
-
-## -----------------------------------------------
-## -- qmake and cmake locations and executables --
-## -----------------------------------------------
-
-locations = []
-qmake_progs = []
-cmake_progs = []
-if platform.system( ) == "Linux":
- locations = [
- "/usr/bin",
- "/usr/local/bin",
- home_dir + "/bin",
- home_dir + "/local/bin"
- ]
- qmake_progs = [ "qmake", "qmake-qt4" ]
- cmake_progs = [ "cmake" ]
-# fi
-qmake_paths = find_paths( locations, qmake_progs )
-cmake_paths = find_paths( locations, cmake_progs )
-
-qmake_opt = choose_config( qmake_paths, "Qt4" )
-qmake_src = None
-if qmake_opt == len( qmake_paths ):
- qmake_exec = get_filepath( "Choose your own Qt4 installation: " )
- while not os.path.isfile( qmake_exec ):
- qmake_exec = get_filepath( "Choose your own Qt4 installation: " )
- # elihw
-elif qmake_opt == len( qmake_paths ) + 1:
- qmake_src = get_filepath( "Choose your own Qt4 source file: " )
- while not os.path.isfile( qmake_src ):
- qmake_src = get_filepath( "Choose your own Qt4 source file: " )
- # elihw
-else:
- qmake_exec = qmake_paths[ qmake_opt ]
-# fi
-
-cmake_opt = choose_config( cmake_paths, "CMake" )
-cmake_src = None
-if cmake_opt == len( cmake_paths ):
- cmake_exec = get_filepath( "Choose your own CMake installation: " )
- while not os.path.isfile( cmake_exec ):
- cmake_exec = get_filepath( "Choose your own CMake installation: " )
- # elihw
-elif cmake_opt == len( cmake_paths ) + 1:
- cmake_src = get_filepath( "Choose your own CMake source file: " )
- while not os.path.isfile( cmake_src ):
- cmake_src = get_filepath( "Choose your own CMake source file: " )
- # elihw
-else:
- cmake_exec = cmake_paths[ cmake_opt ]
-# fi
-
-## -----------------------
-## -- ITK and VTK files --
-## -----------------------
-
-itk_src = get_filepath( "Choose your own ITK source file: " )
-while not os.path.isfile( itk_src ):
- itk_src = get_filepath( "Choose your own ITK source file: " )
-# elihw
-itk_extra = raw_input( "Type an extra configurations for ITK:" )
-
-vtk_src = get_filepath( "Choose your own VTK source file: " )
-while not os.path.isfile( vtk_src ):
- vtk_src = get_filepath( "Choose your own VTK source file: " )
-# elihw
-vtk_extra = raw_input( "Type an extra configurations for VTK:" )
-
-## ------------------------
-## -- More configuration --
-## ------------------------
-
-install_prefix = get_filepath( "Choose your installation prefix: " )
-build_type = raw_input( "Type your build type [(r)elease/(d)ebug]: " )
-build_type.lower( )
-qmake_full = "n"
-if qmake_src <> None:
- qmake_full = raw_input( "Would you like a full Qt4 install [y/n]? " )
- qmake_full.lower( )
-# fi
-qmake_build_type = "release"
-kitware_build_type = "MinSizeRel"
-if build_type[ 0 ] == "d":
- qmake_build_type = "debug"
- kitware_build_type = "Debug"
-# fi
-
-## -----------------
-## -- Compile Qt4 --
-## -----------------
-
-if qmake_src <> None:
- qmake_src_dir = extract( qmake_src )
- qmake_bin_dir = qmake_src_dir + "-build"
- min_size = 999999
- qmake_configure = ""
- for root, dirs, files in os.walk( qmake_src_dir ):
- if "configure" in files:
- path = os.path.join( root, "configure" )
- if min_size > len( path ):
- min_size = len( path )
- qmake_configure = path
- # fi
- # fi
- # rof
- create_dir( qmake_bin_dir )
-
- # particular_options=-no-framework
- particular_options = ""
-
- command = "cd " + qmake_bin_dir + " && "
- command += qmake_configure
- command += " -prefix " + install_prefix
- command += " -" + qmake_build_type
- command += " -opensource -shared -fast -no-webkit -optimized-qmake"
- command += " -confirm-license"
- if qmake_full == "y":
- command += " -no-phonon -no-phonon-backend -no-openvg"
- command += " -nomake demos -nomake examples"
- # fi
- command += particular_options
- command += " && make -j" + process_count
- command += " && make -j install"
- os.system( command )
- qmake_exec = find_paths( [ install_prefix ], [ "qmake" ] )[ 0 ]
-# fi
-
-## -------------------
-## -- Compile CMake --
-## -------------------
-
-if cmake_src <> None:
- cmake_src_dir = extract( cmake_src )
- cmake_bin_dir = cmake_src_dir + "-build"
- min_size = 999999
- cmake_configure = ""
- for root, dirs, files in os.walk( cmake_src_dir ):
- if "bootstrap" in files:
- path = os.path.join( root, "bootstrap" )
- if min_size > len( path ):
- min_size = len( path )
- cmake_configure = path
- # fi
- # fi
- # rof
- create_dir( cmake_bin_dir )
-
- command = "cd " + cmake_bin_dir + " && "
- command += cmake_configure
- command += " --prefix " + install_prefix
- command += " --qt-gui --qt-qmake=" + qmake_exec
- command += " && make -j" + process_count
- command += " && make -j install"
- os.system( command )
- cmake_exec = find_paths( [ install_prefix ], [ "cmake" ] )[ 0 ]
-# fi
-
-## -----------------
-## -- Compile ITK --
-## -----------------
-
-itk_src_dir = extract( itk_src )
-itk_bin_dir = itk_src_dir + "-build"
-min_size = 999999
-itk_configure = ""
-for root, dirs, files in os.walk( itk_src_dir ):
- if "CMakeLists.txt" in files:
- path = os.path.join( root, "CMakeLists.txt" )
- if min_size > len( path ):
- min_size = len( path )
- itk_configure = path
- # fi
- # fi
-# rof
-create_dir( itk_bin_dir )
-
-command = "cd " + itk_bin_dir + " && "
-command += cmake_exec
-command += " -DCMAKE_CXX_FLAGS:STRING=-std=c++11"
-command += " -DBUILD_DOCUMENTATION:BOOL=OFF"
-command += " -DBUILD_EXAMPLES:BOOL=OFF"
-command += " -DBUILD_SHARED_LIBS:BOOL=ON"
-command += " -DBUILD_TESTING:BOOL=OFF"
-command += " -DModule_ITKReview:BOOL=ON"
-command += " -DModule_ITKVtkGlue:BOOL=OFF"
-command += " -DModule_ParabolicMorphology:BOOL=ON"
-command += " -DCMAKE_BUILD_TYPE:STRING=" + kitware_build_type
-command += " -DCMAKE_INSTALL_PREFIX:PATH=" + install_prefix
-command += " " + itk_src_dir
-command += " && make -j" + process_count
-command += " && make -j install"
-os.system( command )
-
-## -----------------
-## -- Compile VTK --
-## -----------------
-
-vtk_src_dir = extract( vtk_src )
-vtk_bin_dir = vtk_src_dir + "-build"
-min_size = 999999
-vtk_configure = ""
-for root, dirs, files in os.walk( vtk_src_dir ):
- if "CMakeLists.txt" in files:
- path = os.path.join( root, "CMakeLists.txt" )
- if min_size > len( path ):
- min_size = len( path )
- vtk_configure = path
- # fi
- # fi
-# rof
-create_dir( vtk_bin_dir )
-
-command = "cd " + vtk_bin_dir + " && "
-command += cmake_exec
-command += " -DCMAKE_CXX_FLAGS:STRING=-std=c++11"
-command += " -DBUILD_DOCUMENTATION:BOOL=OFF"
-command += " -DBUILD_EXAMPLES:BOOL=OFF"
-command += " -DBUILD_SHARED_LIBS:BOOL=ON"
-command += " -DBUILD_TESTING:BOOL=OFF"
-command += " -DModule_vtkGUISupportQt:BOOL=ON"
-command += " -DModule_vtkGUISupportQtOpenGL:BOOL=ON"
-command += " -DModule_vtkGUISupportQtSQL:BOOL=OFF"
-command += " -DModule_vtkGUISupportQtWebkit:BOOL=OFF"
-command += " -DQT_QMAKE_EXECUTABLE:PATH=" + qmake_exec
-command += " -DCMAKE_BUILD_TYPE:STRING=" + kitware_build_type
-command += " -DCMAKE_INSTALL_PREFIX:PATH=" + install_prefix
-command += " " + vtk_src_dir
-command += " && make -j" + process_count
-command += " && make -j install"
-os.system( command )
-
-## eof - $RCSfile$