3 import os,subprocess,sys,re,datetime,shutil,glob
5 install_base_directory=os.path.dirname(os.path.abspath(__file__))
7 local_archives_path=os.path.join(install_base_directory,"archives")
9 cmakeLoc=os.path.join(local_archives_path,"cmake-3.0.2.tar.gz")
10 pythonLoc=os.path.join(local_archives_path,"Python-2.7.10.tgz")
11 hdf5Loc=os.path.join(local_archives_path,"hdf5-1.8.14.tar.gz")
12 swigLoc=os.path.join(local_archives_path,"swig-2.0.8.tar.gz")
13 qtLoc=os.path.join(local_archives_path,"qt-everywhere-opensource-src-5.5.1.tar.gz")
14 medLoc=os.path.join(local_archives_path,"med-3.2.0.tar.gz")
16 salome_git_repo="https://git.salome-platform.org/gitpub"
18 medcouplingLoc=(os.path.join(salome_git_repo,"tools","medcoupling.git","76601490"))
19 paraviewLoc=("https://github.com/Kitware/ParaView.git","v5.0.0")
20 kernelLoc=(os.path.join(salome_git_repo,"modules","kernel.git","49410ad3"))
21 guiLoc=(os.path.join(salome_git_repo,"modules","gui.git","792a0f7d"))
22 paravisLoc=(os.path.join(salome_git_repo,"modules","paravis.git","314918a6"))
24 python_version_short="2.7"
25 python_version_long="2.7.10"
27 paraview_version="5.0"
31 #export INSTALL_BASE_DIRECTORY="/local00/home/H87074/TMP46/SalomeMiniForKW/install"
32 #PATH=${INSTALL_BASE_DIRECTORY}/cmake-3.0.2/bin:${INSTALL_BASE_DIRECTORY}/Python-2.7.10/bin:${INSTALL_BASE_DIRECTORY}/hdf5-1.8.14/bin:${INSTALL_BASE_DIRECTORY}/swig-2.0.8/bin
33 #SWIG_LIB=${INSTALL_BASE_DIRECTORY}/swig-2.0.8/share/swig/2.0.8
34 #LD_LIBRARY_PATH=${INSTALL_BASE_DIRECTORY}/Python-2.7.10/lib:${INSTALL_BASE_DIRECTORY}/hdf5-1.8.14/lib
36 #HDF5HOME=${INSTALL_BASE_DIRECTORY}/hdf5-1.8.14
37 #SWIG_ROOT_DIR=${INSTALL_BASE_DIRECTORY}/swig-2.0.8
38 #PYTHONSTARTUP=${INSTALL_BASE_DIRECTORY}/Python-2.7.10/pythonrc.py
39 #PYTHONHOME=${INSTALL_BASE_DIRECTORY}/Python-2.7.10
40 #PYTHON_INCLUDE=${INSTALL_BASE_DIRECTORY}/Python-2.7.10/include/python2.7
41 #HDF5_DISABLE_VERSION_CHECK=1
43 def generateRuntimeEnviron():
44 file = open('runTimeEnviron.sh', 'w')
45 file.write('export INSTALL_BASE_DIRECTORY="%s"\n'%os.path.join(install_base_directory,rootDir,"install"))
46 file.write('export PATH=${INSTALL_BASE_DIRECTORY}/cmake-3.0.2/bin:${PATH}\n')
47 file.write('export PATH=${INSTALL_BASE_DIRECTORY}/Python-2.7.10/bin:${PATH}\n')
48 file.write('export PATH=${INSTALL_BASE_DIRECTORY}/hdf5-1.8.14/bin:${PATH}\n')
49 file.write('export PATH=${INSTALL_BASE_DIRECTORY}/swig-2.0.8/bin:${PATH}\n')
50 file.write('export SWIG_LIB=${INSTALL_BASE_DIRECTORY}/swig-2.0.8/share/swig/2.0.8\n')
51 file.write('export LD_LIBRARY_PATH=${INSTALL_BASE_DIRECTORY}/Python-2.7.10/lib:${LD_LIBRARY_PATH}\n')
52 file.write('export LD_LIBRARY_PATH=${INSTALL_BASE_DIRECTORY}/hdf5-1.8.14/lib:${LD_LIBRARY_PATH}\n')
53 file.write('export PYTHON_VERSION=%s\n'%python_version_short)
54 file.write('export HDF5HOME=${INSTALL_BASE_DIRECTORY}/hdf5-1.8.14\n')
55 file.write('export SWIG_ROOT_DIR=${INSTALL_BASE_DIRECTORY}/swig-2.0.8\n')
56 file.write('export PYTHONSTARTUP=${INSTALL_BASE_DIRECTORY}/Python-2.7.10/pythonrc.py:${PYTHONSTARTUP}\n')
57 file.write('export PYTHONHOME=${INSTALL_BASE_DIRECTORY}/Python-2.7.10\n')
58 file.write('export PYTHON_INCLUDE=${INSTALL_BASE_DIRECTORY}/Python-2.7.10/include/python2.7\n')
59 file.write('export HDF5_DISABLE_VERSION_CHECK=1\n')
64 cfgOut="config_out.txt"
65 cfgErr="config_err.txt"
66 compOut="compile_out.txt"
67 compErr="compile_err.txt"
70 def cmake_Environ(installDir,envAcc):
71 pathAdd=[os.path.join(installDir,"bin")]
72 addEnv(envAcc,"PATH",pathAdd)
75 def python_Environ(installDir,envAcc):
76 pathAdd=[os.path.join(installDir,"bin")]
77 ldPathAdd=[os.path.join(installDir,"lib")]
78 addEnv(envAcc,"PATH",pathAdd)
79 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
80 envAcc["PYTHONHOME"]=installDir
81 envAcc["PYTHONSTARTUP"]=os.path.join(installDir,"pythonrc.py")
82 envAcc["PYTHON_VERSION"]=python_version_short
83 envAcc["PYTHON_INCLUDE"]=os.path.join(installDir,"include","python%s"%envAcc["PYTHON_VERSION"])
86 def hdf5_Environ(installDir,envAcc):
87 envAcc["HDF5HOME"]=installDir
88 envAcc["HDF5_DISABLE_VERSION_CHECK"]="1"
89 pathAdd=[os.path.join(installDir,"bin")]
90 ldPathAdd=[os.path.join(installDir,"lib")]
91 addEnv(envAcc,"PATH",pathAdd)
92 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
95 def swig_Environ(installDir,envAcc):
96 pathAdd=[os.path.join(installDir,"bin")]
97 addEnv(envAcc,"PATH",pathAdd)
98 envAcc["SWIG_ROOT_DIR"]=installDir
99 envAcc["SWIG_LIB"]=os.path.join(installDir,"share","swig",swig_version)
102 def qt_Environ(installDir,envAcc):
103 pathAdd=[os.path.join(installDir,"bin")]
104 ldPathAdd=[os.path.join(installDir,"lib")]
105 addEnv(envAcc,"PATH",pathAdd)
106 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
107 envAcc["QTDIR"]=installDir
108 envAcc["QT_PLUGIN_PATH"]=os.path.join(installDir,"plugins")
111 def med_Environ(installDir,envAcc):
112 pathAdd=[os.path.join(installDir,"bin")]
113 ldPathAdd=[os.path.join(installDir,"lib")]
114 pyPathAdd=[os.path.join(installDir,"lib","python%s"%python_version_short,"site-packages")]
115 addEnv(envAcc,"PATH",pathAdd)
116 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
117 addEnv(envAcc,"PYTHONPATH",pyPathAdd)
118 envAcc["MED3HOME"]=installDir
121 def medcoupling_Environ(installDir,envAcc):
122 pathAdd=[os.path.join(installDir,"bin")]
123 ldPathAdd=[os.path.join(installDir,"lib")]
124 pyPathAdd=[os.path.join(installDir,"lib","python%s"%python_version_short,"site-packages")]
125 addEnv(envAcc,"PATH",pathAdd)
126 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
127 addEnv(envAcc,"PYTHONPATH",pyPathAdd)
128 addEnv(envAcc,"PATH",pathAdd)
129 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
130 addEnv(envAcc,"PYTHONPATH",pyPathAdd)
131 envAcc["MEDCOUPLINGHOME"]=installDir
134 def paraview_Environ(installDir,envAcc):
135 envAcc["PVHOME"]=installDir
136 envAcc["PVVERSION"]=paraview_version
137 pathAdd=[os.path.join(installDir,"bin")]
138 addEnv(envAcc,"PATH",pathAdd)
139 ldPathAdd=[os.path.join(installDir,"lib","paraview-%s"%paraview_version)]
140 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
141 pyPathAdd =[os.path.join(installDir,"lib","paraview-%s"%paraview_version,"site-packages")]
142 pyPathAdd+=[os.path.join(installDir,"lib","paraview-%s"%paraview_version,"site-packages","vtk")]
143 pyPathAdd+=[os.path.join(installDir,"lib","paraview-%s"%paraview_version,"site-packages","paraview","vtk")]
144 addEnv(envAcc,"PYTHONPATH",pyPathAdd)
145 pvPlgPathAdd=[os.path.join(installDir,"lib","paraview-%s"%paraview_version)]
146 addEnv(envAcc,"PV_PLUGIN_PATH",pvPlgPathAdd)
149 def paravis_Environ(installDir,envAcc):
150 ldPathAdd=[os.path.join(installDir,"lib","salome")]
151 pvPlgPathAdd=[os.path.join(installDir,"lib","paraview")]
152 addEnv(envAcc,"LD_LIBRARY_PATH",ldPathAdd)
153 addEnv(envAcc,"PV_PLUGIN_PATH",pvPlgPathAdd)
158 def addEnv(dico,key,val):
159 if key not in dico.keys():
165 def __init__(self,dn):
170 def extractSrcFromArchive(srcLoc,srcDir,pattern):
173 if os.path.exists(tmpDir):
178 myExt=os.path.splitext(srcLoc)[1]
179 if myExt in [".gz",".tgz",".bz2"]:
180 if myExt in [".gz",".tgz"]:
181 myCmd=["tar","xfz",srcLoc]
183 myCmd=["tar","xfj",srcLoc]
184 print "Command: ", " ".join(myCmd)
185 p=subprocess.Popen(myCmd,cwd=tmpDir,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
187 assert(p.returncode==0)
189 li=os.listdir(tmpDir)
191 li=filter(lambda x: pattern.lower() in x.lower(),li)
193 unzipDir=os.path.join(tmpDir,li[0])
194 assert(os.path.isdir(unzipDir))
195 srcDN=os.path.basename(li[0])
196 ret=os.path.realpath(os.path.join(os.getcwd(),srcDN))
197 if os.path.exists(ret):
198 print("\"%s\" already exists : keep it as this !"%ret)
199 shutil.rmtree(tmpDir)
201 shutil.move(unzipDir,os.getcwd())
206 #for elt in os.listdir(os.getcwd()):
207 # print datetime.date.fromtimestamp(os.stat(elt).st_ctime)
211 def extractSrcFromGit(gitLoc,srcDir,pattern):
213 assert(isinstance(gitLoc,tuple))
214 assert(len(gitLoc)==2)
215 dirGitLoc=os.path.splitext(os.path.basename(gitLoc[0]))[0]
216 ret=os.path.realpath(os.path.join(os.getcwd(),dirGitLoc))
217 if not os.path.exists(dirGitLoc):
218 print("Cloning %s..."%dirGitLoc)
219 p=subprocess.Popen(["git","clone",gitLoc[0]],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
221 assert(p.returncode==0)
223 assert(os.path.exists(os.path.join(dirGitLoc,".git")))
224 p=subprocess.Popen(["git","checkout",gitLoc[1]],cwd=dirGitLoc,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
226 assert(p.returncode==0)
227 if dirGitLoc=="ParaView":
228 p=subprocess.Popen(["git","submodule","update","--init"],cwd=dirGitLoc,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
230 assert(p.returncode==0)
234 def extractSrc(srcDir,pattern):
235 srcLoc=eval("%sLoc"%pattern)
236 if isinstance(srcLoc,str):
237 return extractSrcFromArchive(srcLoc,srcDir,pattern)
238 elif isinstance(srcLoc,tuple):
239 return extractSrcFromGit(srcLoc,srcDir,pattern)
241 raise Exception("Unrecognized localization of source : %s"%srcLoc)
243 def computeEnv(envAcc,withDft=True):
246 d=copy.deepcopy(os.environ)
247 for k in os.environ.keys():
248 if k not in envAcc.keys():
252 for k in envAcc.keys():
255 l=d[k].split(os.pathsep)
257 if not isinstance(tmp,list):
260 if k!="PYTHONSTARTUP":
261 d[k]=os.pathsep.join(l)
265 if "PATH" not in d.keys():
266 d["PATH"]=os.environ["PATH"]
269 def compilePart0(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild):
270 assert(os.path.isdir(srcDir))
271 baseName=os.path.basename(srcDir)
272 myBuildDir=os.path.realpath(os.path.join(topBuildDir,baseName))
273 myInstallDir=os.path.realpath(os.path.join(topInstallDir,baseName))
274 if os.path.exists(myBuildDir):
276 shutil.rmtree(myBuildDir)
278 if not os.path.exists(os.path.join(myBuildDir,okFlag)):
279 shutil.rmtree(myBuildDir)
282 print("For \"%s\" : Do nothing !"%srcDir)
283 return myBuildDir,myInstallDir,False
286 return myBuildDir,myInstallDir,True
288 def compilePart1(p,buildDir):
290 f=file(os.path.join(buildDir,cfgOut),"w") ; f.write(a) ; f.flush()
291 f=file(os.path.join(buildDir,cfgErr),"w") ; f.write(b) ; f.flush()
292 assert(p.returncode==0)
294 def compilePart2(envAcc,buildDir,splitInstall):
295 print("make in %s"%(buildDir))
297 p=subprocess.Popen(["make",paraCompFlag,"install"],cwd=buildDir,env=computeEnv(envAcc),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
299 f=file(os.path.join(buildDir,compOut),"w") ; f.write(a) ; f.flush()
300 f=file(os.path.join(buildDir,compErr),"w") ; f.write(b) ; f.flush()
301 assert(p.returncode==0)
303 p=subprocess.Popen(["make",paraCompFlag],cwd=buildDir,env=computeEnv(envAcc),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
304 a0,b0=p.communicate()
305 f=file(os.path.join(buildDir,compOut),"w") ; f.write(a0) ; f.flush()
306 f=file(os.path.join(buildDir,compErr),"w") ; f.write(b0) ; f.flush()
307 assert(p.returncode==0)
308 p=subprocess.Popen(["make",paraCompFlag,"install"],cwd=buildDir,env=computeEnv(envAcc),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
309 a1,b1=p.communicate()
310 f=file(os.path.join(buildDir,compOut),"w") ; f.write(a0+a1) ; f.flush()
311 f=file(os.path.join(buildDir,compErr),"w") ; f.write(b0+b1) ; f.flush()
312 assert(p.returncode==0)
314 f=file(os.path.join(buildDir,okFlag),"w") ; f.write(str(datetime.datetime.now())) ; f.flush()
317 def compileOldCommon(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild,splitInstall):
318 myBuildDir,myInstallDir,shouldContinue=compilePart0(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild)
319 if not shouldContinue:
321 myCmd=[os.path.join(srcDir,"configure"),"--prefix=%s"%(myInstallDir)]+addCfgParam
322 print "Command: ", " ".join(myCmd)
323 p=subprocess.Popen(myCmd,cwd=myBuildDir,env=computeEnv(envAcc),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
324 compilePart1(p,myBuildDir)
325 compilePart2(envAcc,myBuildDir,splitInstall)
328 def compileOld(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild):
329 return compileOldCommon(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild,False)
331 def compileVeryOld(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild):
332 return compileOldCommon(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild,True)
334 def compileNew(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild):
335 myBuildDir,myInstallDir,shouldContinue=compilePart0(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild)
336 if not shouldContinue:
338 myCmd=["cmake","-DCMAKE_INSTALL_PREFIX=%s"%(myInstallDir)]+addCfgParam+[srcDir]
339 print(" ".join(myCmd))
340 p=subprocess.Popen(myCmd,cwd=myBuildDir,env=computeEnv(envAcc),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
341 compilePart1(p,myBuildDir)
342 compilePart2(envAcc,myBuildDir,False)
345 def accumulateEnv(installDir,pattern,envAcc):
346 """ envAcc out parameter"""
347 zeAccumulator=eval("%s_Environ"%pattern)
348 zeAccumulator(installDir,envAcc)
351 def generateInlineEnv(envAcc):
353 return "env "+" ".join(["%s=%s"%(k,d[k]) for k in d.keys()])
356 def generateFileEnv(envAcc):
358 return "\n".join(["export %s=\"%s\""%(k,d[k]) for k in d.keys()])
360 def bidouilleForCMake(topSrcDir,guiSrcDir):
361 kernelFake="DUMMY_KERNEL"
362 zeKernelFake=os.path.join(topSrcDir,kernelFake)
363 if os.path.exists(zeKernelFake):
364 shutil.rmtree(zeKernelFake)
365 os.mkdir(zeKernelFake)
366 distDir=os.path.join(zeKernelFake,"salome_adm")
368 shutil.copytree(os.path.join(guiSrcDir,"adm_local","cmake_files"),os.path.join(distDir,"cmake_files"))
369 return os.path.abspath(zeKernelFake)
371 def copyCMakeFromSrcToInstall(srcDir,installDir):
372 zeSrcDir=os.path.join(srcDir,"cmake_files")
373 zeInstDir=os.path.join(installDir,"cmake_files")
374 for fi in glob.glob(os.path.join(zeSrcDir,"*.cmake")):
375 shutil.copy(fi,zeInstDir)
377 def patchCMakeLists(topSrcDir,srcDir):
378 realSrcDirSrc=os.path.join(srcDir,'src','Plugins','MEDReader')
379 destReal=os.path.join(topSrcDir,'MEDReader')
380 if os.path.exists(destReal):
381 shutil.rmtree(destReal)
382 shutil.copytree(realSrcDirSrc,destReal)
383 linesToAdd0="""INCLUDE(UseQtExt)
385 linesToAdd1="""IF (NOT SALOME_GUI_BUILD_WITH_QT5)
386 FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui QtXml QtHelp)
388 FIND_PACKAGE(SalomeQt5 REQUIRED)
392 cmakeToPatch=os.path.join(destReal,"CMakeLists.txt")
393 assert(os.path.exists(cmakeToPatch))
394 f=file(cmakeToPatch) ; lines=f.readlines()
395 pos0=filter(lambda (x,y): "INCLUDE(SalomeSetupPlatform)" in y,enumerate(lines))
396 assert(len(pos0)==1) ; pos0=pos0[0]
397 lines=lines[0:pos0[0]+1]+[linesToAdd0]+lines[pos0[0]+1:]
398 pos1=filter(lambda (x,y): "FIND_PACKAGE(SalomeMEDFile REQUIRED)" in y,enumerate(lines))
399 assert(len(pos1)==1) ; pos1=pos1[0]
400 lines=lines[0:pos1[0]+1]+[linesToAdd1]+lines[pos1[0]+1:]
401 f=file(cmakeToPatch,"w") ; f.writelines(lines)
402 return os.path.abspath(destReal)
404 ########### FINI LA PARLOTE !
406 if not os.path.exists(rootDir):
409 zz=AutoChdir(rootDir)
414 topInstallDir="install"
415 for d in [topSrcDir,topBuildDir,topInstallDir]:
416 if not os.path.exists(d):
421 srcDir=extractSrc(topSrcDir,pattern)
422 installDir=compileOld(envAcc,srcDir,topBuildDir,topInstallDir,[],False)
423 accumulateEnv(installDir,pattern,envAcc)
426 srcDir=extractSrc(topSrcDir,pattern)
427 installDir=compileOld(envAcc,srcDir,topBuildDir,topInstallDir,["--enable-shared","--enable-unicode=ucs4","-without-pymalloc"],False)
428 accumulateEnv(installDir,pattern,envAcc)
431 srcDir=extractSrc(topSrcDir,pattern)
432 installDir=compileNew(envAcc,srcDir,topBuildDir,topInstallDir,
433 ['-DHDF5_BUILD_HL_LIB=ON','-DHDF5_BUILD_TOOLS=ON','-DBUILD_SHARED_LIBS=ON','-DHDF5_ENABLE_Z_LIB_SUPPORT=ON','-DCMAKE_BUILD_TYPE=Release'],False)
434 accumulateEnv(installDir,pattern,envAcc)
437 srcDir=extractSrc(topSrcDir,pattern)
438 installDir=compileVeryOld(envAcc,srcDir,topBuildDir,topInstallDir,["--without-pcre","--without-octave"],False)
439 accumulateEnv(installDir,pattern,envAcc)
442 srcDir=extractSrc(topSrcDir,pattern)
443 installDir=compileVeryOld(envAcc,srcDir,topBuildDir,topInstallDir,["-opensource","-confirm-license","-no-rpath","-qt-xcb"],False)
444 accumulateEnv(installDir,pattern,envAcc)
447 srcDir=extractSrc(topSrcDir,pattern)
448 installDir=compileOld(envAcc,srcDir,topBuildDir,topInstallDir,["--with-hdf5=%s"%(envAcc["HDF5HOME"]),"--enable-production"],False)
449 accumulateEnv(installDir,pattern,envAcc)
451 pattern="medcoupling"
452 srcDir=extractSrc(topSrcDir,pattern) ; medcouplingSrcDir=srcDir
453 installDir=compileNew(envAcc,srcDir,topBuildDir,topInstallDir,
454 ["-DMEDFILE_ROOT_DIR=%s"%(envAcc["MED3HOME"]),"-DCMAKE_BUILD_TYPE=Debug","-DMEDCOUPLING_BUILD_DOC=OFF","-DMEDCOUPLING_BUILD_TESTS=OFF",
455 "-DMEDCOUPLING_PARTITIONER_METIS=OFF","-DMEDCOUPLING_ENABLE_RENUMBER=OFF","-DMEDCOUPLING_PARTITIONER_SCOTCH=OFF"],False)
456 accumulateEnv(installDir,pattern,envAcc)
457 #copyCMakeFromSrcToInstall(srcDir,installDir)#patch
460 srcDir=extractSrc(topSrcDir,pattern)
461 installDir=compileNew(envAcc,srcDir,topBuildDir,topInstallDir,
462 ['-DPYTHON_ROOT_DIR=%s'%(envAcc["PYTHONHOME"]),'-DHDF5_ROOT_DIR=%s'%(envAcc["HDF5HOME"]),'-DPYTHON_EXECUTABLE=%s/bin/python%s'%(envAcc["PYTHONHOME"],envAcc["PYTHON_VERSION"]),
463 '-DPYTHON_INCLUDE_DIR=%s'%(envAcc["PYTHON_INCLUDE"]),'-DPYTHON_LIBRARY=%s/lib/libpython%s.so'%(envAcc["PYTHONHOME"],envAcc["PYTHON_VERSION"]),
464 '-DHDF5_LIBRARIES=%s/lib'%(envAcc["HDF5HOME"]),
465 '-DHDF5_INCLUDE_DIRS=%s/include'%(envAcc["HDF5HOME"]),'-DHDF5_CXX_COMPILER_EXECUTABLE=%s/bin/h5pcc'%(envAcc["HDF5HOME"]),
466 '-DHDF5_HL_INCLUDE_DIR=%s/include'%(envAcc["HDF5HOME"]),'-DHDF5_hdf5_hl_LIBRARY=%s/lib/libhdf5_hl.so'%(envAcc["HDF5HOME"]),
467 '-DHDF5_hdf5_hl_LIBRARY_RELEASE=%s/lib/libhdf5_hl.so'%(envAcc["HDF5HOME"]),'-DHDF5_hdf5_hl_LIBRARY_DEBUG=%s/lib/libhdf5_hl.so'%(envAcc["HDF5HOME"]),
468 '-DHDF5_HL_LIBRARY=%s/lib/libhdf5_hl.so'%(envAcc["HDF5HOME"]),'-DBUILD_SHARED_LIBS:BOOL=ON','-DCMAKE_BUILD_TYPE:STRING=Debug',
469 '-DPARAVIEW_INSTALL_DEVELOPMENT:BOOL=ON','-DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON','-DVTK_USE_64BIT_IDS:BOOL=OFF','-DPARAVIEW_BUILD_QT_GUI:BOOL=ON',
470 '-DVTK_QT_USE_WEBKIT:BOOL=ON','-DQT_TESTING_INSTALL_DEVELOPMENT:BOOL=ON','-DPARAVIEW_ENABLE_PYTHON:BOOL=ON','-DVTK_USE_SYSTEM_HDF5:BOOL=ON','-DVTK_USE_GL2PS:BOOL=ON',
471 '-DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF', '-DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF', '-DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF',
472 '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON',
473 '-DVTK_NO_PYTHON_THREADS=OFF','-DPARAVIEW_ENABLE_CATALYST:BOOL=ON','-DPARAVIEW_BUILD_PLUGIN_AnalyzeNIfTIIO:BOOL=OFF','-DPARAVIEW_BUILD_PLUGIN_ArrowGlyph:BOOL=OFF',
474 '-DPARAVIEW_BUILD_PLUGIN_CatalystScriptGeneratorPlugin:BOOL=ON','-DPARAVIEW_BUILD_PLUGIN_GMVReader:BOOL=OFF','-DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF',
475 '-DPARAVIEW_BUILD_PLUGIN_NonOrthogonalSource:BOOL=OFF','-DPARAVIEW_BUILD_PLUGIN_QuadView:BOOL=OFF','-DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF','-DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF',
476 '-DPARAVIEW_BUILD_PLUGIN_RGBZView:BOOL=OFF','-DPARAVIEW_BUILD_PLUGIN_SciberQuestToolKit:BOOL=OFF','-DPARAVIEW_BUILD_PLUGIN_StreamingParticles:BOOL=ON',
477 '-DPARAVIEW_BUILD_PLUGIN_UncertaintyRendering:BOOL=ON','-DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON','-DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON','-DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON',
478 '-DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON','-DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON','-DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON',
479 '-DCMAKE_BUILD_QT_GUI:BOOL=ON','-DVTK_USE_SYSTEM_LIBXML2:BOOL=ON','-DVTK_USE_OGGTHEORA_ENCODER:BOOL=ON','-DPARAVIEW_INSTALL_THIRD_PARTY_LIBRARIES:BOOL=OFF',
480 '-DBUILD_DOCUMENTATION:BOOL=ON','-DBUILD_EXAMPLES:BOOL=OFF','-DBUILD_TESTING:BOOL=OFF', '-DPARAVIEW_GENERATE_PROXY_DOCUMENTATION:BOOL=ON','-DVTK_NO_PYTHON_THREADS=OFF',
481 '-DVTK_PYTHON_FULL_THREADSAFE=ON','-DPARAVIEW_QT_VERSION=5','-DQT_HELP_GENERATOR=%s/bin/qhelpgenerator'%(envAcc["QTDIR"]),'-DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF','-DBUILD_DOCUMENTATION=OFF'],False)
482 accumulateEnv(installDir,pattern,envAcc)
485 srcDir=extractSrc(topSrcDir,pattern)
486 fakeKernelDir=bidouilleForCMake(topSrcDir,srcDir)
488 pattern="paravis"# for MEDReader
489 srcDir=extractSrc(topSrcDir,pattern)
490 srcDir=patchCMakeLists(topSrcDir,srcDir)# change Reference for source
491 installDir=compileNew(envAcc,srcDir,topBuildDir,topInstallDir,
492 ["-DMEDCOUPLING_ROOT_DIR=%s"%(envAcc["MEDCOUPLINGHOME"]),"-DKERNEL_ROOT_DIR=%s"%fakeKernelDir,
493 '-DPYTHON_ROOT_DIR=%s'%(envAcc["PYTHONHOME"]),'-DHDF5_ROOT_DIR=%s'%(envAcc["HDF5HOME"]),
494 '-DPYTHON_EXECUTABLE=%s/bin/python%s'%(envAcc["PYTHONHOME"],envAcc["PYTHON_VERSION"]),
495 '-DPYTHON_INCLUDE_DIR=%s'%(envAcc["PYTHON_INCLUDE"]),'-DPARAVIEW_QT_VERSION=5','-DQT_VERSION=5','-DSALOME_GUI_BUILD_WITH_QT5=ON','-DSALOME_INSTALL_SCRIPT_SCRIPTS=%s'%topInstallDir,
496 '-DPYTHON_LIBRARY=%s/lib/libpython%s.so'%(envAcc["PYTHONHOME"],envAcc["PYTHON_VERSION"])],False)
497 accumulateEnv(installDir,pattern,envAcc)
499 envFile=os.path.abspath(os.path.join(topInstallDir,"environment.sh"))
501 f.write(generateFileEnv(envAcc)) ; f.flush() ; del f
502 print("Env file generated : %s"%envFile)
504 generateRuntimeEnviron()