3 import os,sys,shutil,glob
5 from salome_misc import AutoChdir
6 from salome_config import read_config_file, initialize, update_config_file
7 from salome_check_version import check_gcc_version
8 from salome_download import extractSrc, download_archives
9 from salome_build_options import *
10 from salome_compile import compileOld, compileVeryOld, compileNew
11 from salome_environ import accumulateEnv, generateFileEnv
13 current_directory=os.path.dirname(os.path.abspath(__file__))
15 def __init(envAcc={}, paraview_version=None):
17 filename=os.path.join(current_directory, "SalomeMiniConfig.cfg")
18 config=read_config_file(filename)
20 config["paraview_version"] = paraview_version[0]
21 config["paraview_git_version"] = paraview_version[1]
22 update_config_file(filename, {"paraview_version": paraview_version[0], "paraview_git_version":paraview_version[1]})
23 # Check system prerequisites
24 check_gcc_version(config["gcc_version_min"], envAcc)
26 download_archives(current_directory, config)
32 def __patchCMakeLists(topSrcDir,srcDir):
33 realSrcDirSrc=os.path.join(srcDir,'src','Plugins','MEDReader')
34 destReal=os.path.join(topSrcDir,'MEDReader')
35 if os.path.exists(destReal):
36 shutil.rmtree(destReal)
37 shutil.copytree(realSrcDirSrc,destReal)
38 linesToAdd0="""LIST(APPEND CMAKE_MODULE_PATH "${CONFIGURATION_ROOT_DIR}/cmake")
40 linesToAdd1="""INCLUDE(UseQtExt)
42 linesToAdd2="""IF (NOT SALOME_GUI_BUILD_WITH_QT5)
43 FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui QtXml QtHelp)
45 FIND_PACKAGE(SalomeQt5 REQUIRED)
49 cmakeToPatch=os.path.join(destReal,"CMakeLists.txt")
50 assert(os.path.exists(cmakeToPatch))
51 f=file(cmakeToPatch) ; lines=f.readlines()
53 pos0=filter(lambda (x,y): "INCLUDE(SalomeMacros)" in y,enumerate(lines))
54 assert(len(pos0)==1) ; pos0=pos0[0]
55 lines=lines[0:pos0[0]]+[linesToAdd0]+lines[pos0[0]:]
57 pos1=filter(lambda (x,y): "INCLUDE(SalomeSetupPlatform)" in y,enumerate(lines))
58 assert(len(pos1)==1) ; pos1=pos1[0]
59 lines=lines[0:pos1[0]+1]+[linesToAdd1]+lines[pos1[0]+1:]
61 pos2=filter(lambda (x,y): "FIND_PACKAGE(SalomeMEDFile REQUIRED)" in y,enumerate(lines))
62 assert(len(pos2)==1) ; pos2=pos2[0]
63 lines=lines[0:pos2[0]+1]+[linesToAdd2]+lines[pos2[0]+1:]
65 f=file(cmakeToPatch,"w") ; f.writelines(lines)
66 return os.path.abspath(destReal)
69 def __let_us_go(paraview_version=None):
71 config=__init(paraview_version=paraview_version)
75 if not os.path.exists(rootDir):
82 topInstallDir="install"
83 for d in [topSrcDir,topBuildDir,topInstallDir]:
84 if not os.path.exists(d):
90 srcDir=extractSrc(topSrcDir,pattern,config)
91 installDir=compileOld(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,[],False)
92 accumulateEnv(installDir,pattern,config,envAcc)
95 srcDir=extractSrc(topSrcDir,pattern,config)
96 installDir=compileOld(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
97 get_python_build_options(),False)
98 accumulateEnv(installDir,pattern,config,envAcc)
101 srcDir=extractSrc(topSrcDir,pattern,config)
102 installDir=compileNew(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
103 get_hdf5_build_options(),False)
104 accumulateEnv(installDir,pattern,config,envAcc)
107 srcDir=extractSrc(topSrcDir,pattern,config)
108 installDir=compileVeryOld(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
109 get_swig_build_options(),False)
110 accumulateEnv(installDir,pattern,config,envAcc)
113 srcDir=extractSrc(topSrcDir,pattern,config)
114 installDir=compileVeryOld(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
115 get_qt_build_options(),False)
116 accumulateEnv(installDir,pattern,config,envAcc)
119 srcDir=extractSrc(topSrcDir,pattern,config)
120 installDir=compileOld(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
121 get_med_build_options(envAcc),False)
122 accumulateEnv(installDir,pattern,config,envAcc)
125 srcDir=extractSrc(topSrcDir,pattern,config)
126 accumulateEnv(srcDir,pattern,config,envAcc)
128 pattern="medcoupling"
129 srcDir=extractSrc(topSrcDir,pattern,config)
130 installDir=compileNew(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
131 get_medcoupling_build_options(envAcc),False)
132 accumulateEnv(installDir,pattern,config,envAcc)
135 srcDir=extractSrc(topSrcDir,pattern,config)
136 installDir=compileNew(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
137 get_paraview_build_options(envAcc),False)
138 accumulateEnv(installDir,pattern,config,envAcc)
140 pattern="paravis"# for MEDReader
141 srcDir=extractSrc(topSrcDir,pattern,config)
142 srcDir=__patchCMakeLists(topSrcDir,srcDir)# change Reference for source
143 installDir=compileNew(topSrcDir,pattern,config,envAcc,srcDir,topBuildDir,topInstallDir,
144 get_paravis_build_options(envAcc,topInstallDir),False)
145 accumulateEnv(installDir,pattern,config,envAcc)
149 envFile=os.path.abspath(os.path.join(topInstallDir,"environment.sh"))
151 f.write(generateFileEnv(envAcc)) ; f.flush() ; del f
152 print("Env file generated : %s"%envFile)
157 Usage: %s [--with-paraview-version=number,sha1]\n
158 Use option --with-paraview-version to build a specific paraview version. Give the
159 version number (e.g. 5.1) and a git sha1.
163 if __name__ == "__main__":
164 if len(sys.argv) not in [1,2]:
165 print __usage(sys.argv[0])
168 paraview_version = None
169 if len(sys.argv) == 2:
170 if sys.argv[1].startswith("--with-paraview-version="):
172 number,sha1 = sys.argv[1].split("=")[1].split(",")
173 paraview_version = (number.strip(),sha1.strip())
175 print "Syntax error in paraview version"
176 print __usage(sys.argv[0])
179 print __usage(sys.argv[0])
182 __let_us_go(paraview_version)