Salome HOME
no hard-coded absolute path
[tools/pvdeliv.git] / scripts / BuildSalomeMini.py
1 #! /usr/bin/env python
2
3 import os,subprocess,sys,re,datetime,shutil,glob
4
5 install_base_directory=os.path.dirname(os.path.abspath(__file__))
6
7 local_archives_path=os.path.join(install_base_directory,"archives")
8
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")
15
16 salome_git_repo="https://git.salome-platform.org/gitpub"
17
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"))
23
24 python_version_short="2.7"
25 python_version_long="2.7.10"
26 swig_version="2.0.8"
27 paraview_version="5.0"
28
29 rootDir="SalomeMini"
30
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
35 #PYTHON_VERSION=2.7
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
42
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')
60   file.close()
61   pass
62
63 paraCompFlag="-j8"
64 cfgOut="config_out.txt"
65 cfgErr="config_err.txt"
66 compOut="compile_out.txt"
67 compErr="compile_err.txt"
68 okFlag=".install_ok"
69
70 def cmake_Environ(installDir,envAcc):
71   pathAdd=[os.path.join(installDir,"bin")]
72   addEnv(envAcc,"PATH",pathAdd)
73   pass
74
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"])
84   pass
85
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)
93   pass
94
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)
100   pass
101
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")
109   pass
110
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
119   pass
120
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
132   pass
133
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)
147   pass
148
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)
154   pass
155
156 ####################
157
158 def addEnv(dico,key,val):
159   if key not in dico.keys():
160     dico[key]=val
161   else:
162     dico[key]+=val
163
164 class AutoChdir:
165     def __init__(self,dn):
166         os.chdir(dn)
167     def __del__(self):
168         os.chdir("..")
169
170 def extractSrcFromArchive(srcLoc,srcDir,pattern):
171     tmpDir="tmp"
172     zz=AutoChdir(srcDir)
173     if os.path.exists(tmpDir):
174       assert(False)
175     os.mkdir(tmpDir)
176     srcDN=None
177     ret=None
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]
182         else:
183           myCmd=["tar","xfj",srcLoc]
184         print "Command: ", " ".join(myCmd)
185         p=subprocess.Popen(myCmd,cwd=tmpDir,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
186         p.communicate()
187         assert(p.returncode==0)
188         #
189         li=os.listdir(tmpDir)
190         assert(len(li)==1)
191         li=filter(lambda x: pattern.lower() in x.lower(),li)
192         assert(len(li)==1)
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)
200         else:
201           shutil.move(unzipDir,os.getcwd())
202           os.rmdir(tmpDir)
203         pass
204     else:
205         assert(False)
206     #for elt in os.listdir(os.getcwd()):
207     #    print datetime.date.fromtimestamp(os.stat(elt).st_ctime)
208     #    pass
209     return ret
210
211 def extractSrcFromGit(gitLoc,srcDir,pattern):
212     zz=AutoChdir(srcDir)
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)
220       p.communicate()
221       assert(p.returncode==0)
222     else:
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)
225     p.communicate()
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)
229       p.communicate()
230       assert(p.returncode==0)
231     return ret
232
233
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)
240     else:
241       raise Exception("Unrecognized localization of source : %s"%srcLoc)
242
243 def computeEnv(envAcc,withDft=True):
244     import os,copy
245     if withDft:
246       d=copy.deepcopy(os.environ)
247       for k in os.environ.keys():
248         if k not in envAcc.keys():
249           del d[k]
250     else:
251       d={}
252     for k in envAcc.keys():
253       l=[]
254       if k in d.keys():
255         l=d[k].split(os.pathsep)
256       tmp=envAcc[k]
257       if not isinstance(tmp,list):
258         tmp=[tmp]
259       l=tmp+l
260       if k!="PYTHONSTARTUP":
261         d[k]=os.pathsep.join(l)
262       else:
263         d[k]=l[-1]
264     #
265     if "PATH" not in d.keys():
266       d["PATH"]=os.environ["PATH"]
267     return d
268
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):
275         if forceRebuild:
276             shutil.rmtree(myBuildDir)
277         else:
278             if not os.path.exists(os.path.join(myBuildDir,okFlag)):
279               shutil.rmtree(myBuildDir)
280               os.mkdir(myBuildDir)
281             else:
282               print("For \"%s\" : Do nothing !"%srcDir)
283               return myBuildDir,myInstallDir,False
284     else:
285         os.mkdir(myBuildDir)
286     return myBuildDir,myInstallDir,True
287
288 def compilePart1(p,buildDir):
289     a,b=p.communicate()
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)
293
294 def compilePart2(envAcc,buildDir,splitInstall):
295     print("make in %s"%(buildDir))
296     if not splitInstall:
297       p=subprocess.Popen(["make",paraCompFlag,"install"],cwd=buildDir,env=computeEnv(envAcc),stdout=subprocess.PIPE,stderr=subprocess.PIPE)
298       a,b=p.communicate()
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)
302     else:
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)
313       pass
314     f=file(os.path.join(buildDir,okFlag),"w") ; f.write(str(datetime.datetime.now())) ; f.flush()
315     pass
316
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:
320       return myInstallDir
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)
326     return myInstallDir
327
328 def compileOld(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild):
329     return compileOldCommon(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild,False)
330
331 def compileVeryOld(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild):
332     return compileOldCommon(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild,True)
333
334 def compileNew(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild):
335     myBuildDir,myInstallDir,shouldContinue=compilePart0(envAcc,srcDir,topBuildDir,topInstallDir,addCfgParam,forceRebuild)
336     if not shouldContinue:
337       return myInstallDir
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)
343     return myInstallDir
344
345 def accumulateEnv(installDir,pattern,envAcc):
346   """ envAcc out parameter"""
347   zeAccumulator=eval("%s_Environ"%pattern)
348   zeAccumulator(installDir,envAcc)
349   pass
350
351 def generateInlineEnv(envAcc):
352   d=computeEnv(envAcc)
353   return "env "+" ".join(["%s=%s"%(k,d[k]) for k in d.keys()])
354
355
356 def generateFileEnv(envAcc):
357   d=computeEnv(envAcc)
358   return "\n".join(["export %s=\"%s\""%(k,d[k]) for k in d.keys()])
359
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")
367   os.mkdir(distDir)
368   shutil.copytree(os.path.join(guiSrcDir,"adm_local","cmake_files"),os.path.join(distDir,"cmake_files"))
369   return os.path.abspath(zeKernelFake)
370
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)
376
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)
384 """
385   linesToAdd1="""IF (NOT SALOME_GUI_BUILD_WITH_QT5)
386   FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui QtXml QtHelp)
387 ELSE()
388   FIND_PACKAGE(SalomeQt5 REQUIRED)
389 ENDIF()
390 """
391   #
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)
403
404 ########### FINI LA PARLOTE !
405
406 if not os.path.exists(rootDir):
407     os.mkdir(rootDir)
408
409 zz=AutoChdir(rootDir)
410 envAcc={}
411
412 topSrcDir="src"
413 topBuildDir="build"
414 topInstallDir="install"
415 for d in [topSrcDir,topBuildDir,topInstallDir]:
416     if not os.path.exists(d):
417         os.mkdir(d)
418
419 #
420 pattern="cmake"
421 srcDir=extractSrc(topSrcDir,pattern)
422 installDir=compileOld(envAcc,srcDir,topBuildDir,topInstallDir,[],False)
423 accumulateEnv(installDir,pattern,envAcc)
424 #
425 pattern="python"
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)
429 #
430 pattern="hdf5"
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)
435 #
436 pattern="swig"
437 srcDir=extractSrc(topSrcDir,pattern)
438 installDir=compileVeryOld(envAcc,srcDir,topBuildDir,topInstallDir,["--without-pcre","--without-octave"],False)
439 accumulateEnv(installDir,pattern,envAcc)
440 #
441 pattern="qt"
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)
445 #
446 pattern="med"
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)
450 #
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
458 #
459 pattern="paraview"
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)
483 #
484 pattern="gui"
485 srcDir=extractSrc(topSrcDir,pattern)
486 fakeKernelDir=bidouilleForCMake(topSrcDir,srcDir)
487 #
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)
498 # END
499 envFile=os.path.abspath(os.path.join(topInstallDir,"environment.sh"))
500 f=file(envFile,"w")
501 f.write(generateFileEnv(envAcc)) ; f.flush() ; del f
502 print("Env file generated : %s"%envFile)
503
504 generateRuntimeEnviron()