salome.kernel 9.14.0__cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of salome.kernel might be problematic. Click here for more details.

Files changed (400) hide show
  1. salome/bin/salome/IDLparser.py +882 -0
  2. salome/bin/salome/KernelHelpersUseCases +0 -0
  3. salome/bin/salome/NSparam.py +51 -0
  4. salome/bin/salome/ORBConfigFile.py +55 -0
  5. salome/bin/salome/SALOMEDS_Client +0 -0
  6. salome/bin/salome/SALOMEDS_Server +0 -0
  7. salome/bin/salome/SALOME_ConnectionManagerServer +0 -0
  8. salome/bin/salome/SALOME_Container +0 -0
  9. salome/bin/salome/SALOME_ContainerPy.py +397 -0
  10. salome/bin/salome/SALOME_Container_No_NS_Serv +0 -0
  11. salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess +0 -0
  12. salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess_FT +0 -0
  13. salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess_Replay +0 -0
  14. salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess_Replay_FT +0 -0
  15. salome/bin/salome/SALOME_DataScopeServer +0 -0
  16. salome/bin/salome/SALOME_DataScopeServer_SSL +0 -0
  17. salome/bin/salome/SALOME_LauncherServer +0 -0
  18. salome/bin/salome/SALOME_Logger_Server +0 -0
  19. salome/bin/salome/SALOME_ModuleCatalog_Client +0 -0
  20. salome/bin/salome/SALOME_ModuleCatalog_Server +0 -0
  21. salome/bin/salome/SALOME_Registry_Server +0 -0
  22. salome/bin/salome/TestComponentPy.py +71 -0
  23. salome/bin/salome/TestContainer +0 -0
  24. salome/bin/salome/TestContainerManager +0 -0
  25. salome/bin/salome/TestLauncher +0 -0
  26. salome/bin/salome/TestLifeCycleCORBA.py +89 -0
  27. salome/bin/salome/TestLogger +0 -0
  28. salome/bin/salome/TestLogger.py +27 -0
  29. salome/bin/salome/TestModuleCatalog.py +87 -0
  30. salome/bin/salome/Test_LifeCycleCORBA +0 -0
  31. salome/bin/salome/VERSION +3 -0
  32. salome/bin/salome/addToKillList.py +35 -0
  33. salome/bin/salome/app-quickstart.py +288 -0
  34. salome/bin/salome/appli/.bashrc +50 -0
  35. salome/bin/salome/appli/extra.env.d/001.py +39 -0
  36. salome/bin/salome/appli/python_test_driver.py +148 -0
  37. salome/bin/salome/appli/salome +193 -0
  38. salome/bin/salome/appli/salome_instance.py +31 -0
  39. salome/bin/salome/appli/salome_test_driver.py +150 -0
  40. salome/bin/salome/appli/salome_test_driver_gui.py +82 -0
  41. salome/bin/salome/appli_clean.sh +53 -0
  42. salome/bin/salome/appli_gen.py +606 -0
  43. salome/bin/salome/dummyexe_loggerTraceCollector +0 -0
  44. salome/bin/salome/envSalome.py +59 -0
  45. salome/bin/salome/killSalome.py +48 -0
  46. salome/bin/salome/killSalomeWithPort.py +56 -0
  47. salome/bin/salome/prepare_generating_doc.py +104 -0
  48. salome/bin/salome/pythonpath_reduction.py +184 -0
  49. salome/bin/salome/runConsole.py +39 -0
  50. salome/bin/salome/runIDLparser +58 -0
  51. salome/bin/salome/runRemote.py +101 -0
  52. salome/bin/salome/runSalome.py +30 -0
  53. salome/bin/salome/runSalomeNoServer.py +24 -0
  54. salome/bin/salome/runSalomeOld.py +36 -0
  55. salome/bin/salome/runSalomeOnDemand.py +41 -0
  56. salome/bin/salome/salomeContext.py +36 -0
  57. salome/bin/salome/salome_process_attach +44 -0
  58. salome/bin/salome/salome_process_launcher +58 -0
  59. salome/bin/salome/setenv.py +32 -0
  60. salome/bin/salome/showNS.py +33 -0
  61. salome/bin/salome/test/kernel/ArgvKeeper/CTestTestfile.cmake +31 -0
  62. salome/bin/salome/test/kernel/ArgvKeeper/TestArgvKeeper +0 -0
  63. salome/bin/salome/test/kernel/ArgvKeeper/test_ArgvKeeper.py +34 -0
  64. salome/bin/salome/test/kernel/CTestTestfile.cmake +49 -0
  65. salome/bin/salome/test/kernel/Container/CTestTestfile.cmake +29 -0
  66. salome/bin/salome/test/kernel/Container/testProxy.py +291 -0
  67. salome/bin/salome/test/kernel/Container/testcontainer.py +106 -0
  68. salome/bin/salome/test/kernel/KernelHelpers/CTestTestfile.cmake +31 -0
  69. salome/bin/salome/test/kernel/KernelHelpers/KernelHelpersUnitTests.hxx +58 -0
  70. salome/bin/salome/test/kernel/KernelHelpers/TestKernelHelpers +0 -0
  71. salome/bin/salome/test/kernel/KernelHelpers/TestKernelHelpers.py +55 -0
  72. salome/bin/salome/test/kernel/Launcher/CTestTestfile.cmake +43 -0
  73. salome/bin/salome/test/kernel/Launcher/TestSSLAttached.py +110 -0
  74. salome/bin/salome/test/kernel/Launcher/launcher_use_case.py +65 -0
  75. salome/bin/salome/test/kernel/Launcher/testCrashProofContainer.py +423 -0
  76. salome/bin/salome/test/kernel/Launcher/testPerfLogManager1.py +382 -0
  77. salome/bin/salome/test/kernel/Launcher/test_launcher.py +674 -0
  78. salome/bin/salome/test/kernel/Launcher/test_stress.sh +45 -0
  79. salome/bin/salome/test/kernel/Launcher_SWIG/CTestTestfile.cmake +30 -0
  80. salome/bin/salome/test/kernel/Launcher_SWIG/test_swig_launcher.py +706 -0
  81. salome/bin/salome/test/kernel/LifeCycleCORBA/CTestTestfile.cmake +27 -0
  82. salome/bin/salome/test/kernel/LifeCycleCORBA/LifeCycleCORBATest.hxx +105 -0
  83. salome/bin/salome/test/kernel/LifeCycleCORBA/TestLifeCycleCORBA +0 -0
  84. salome/bin/salome/test/kernel/LifeCycleCORBA/TestLifeCycleCORBA.py +93 -0
  85. salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/CTestTestfile.cmake +40 -0
  86. salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/CatalogResources_resource.xml +15 -0
  87. salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/LifeCycleCORBA_SWIGTest.py +217 -0
  88. salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/SALOME_TestComponentPy.py +49 -0
  89. salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/TestLifeCycleCORBA_SWIG.py +100 -0
  90. salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/testcontainermanager.py +88 -0
  91. salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/testresourcemanager.py +155 -0
  92. salome/bin/salome/test/kernel/NamingService/CTestTestfile.cmake +28 -0
  93. salome/bin/salome/test/kernel/NamingService/NamingServiceTest.hxx +169 -0
  94. salome/bin/salome/test/kernel/NamingService/TestNamingService +0 -0
  95. salome/bin/salome/test/kernel/NamingService/TestNamingService.py +64 -0
  96. salome/bin/salome/test/kernel/SALOMEDS/CTestTestfile.cmake +27 -0
  97. salome/bin/salome/test/kernel/SALOMEDS/SALOMEDSTest.hxx +192 -0
  98. salome/bin/salome/test/kernel/SALOMEDS/TestSALOMEDS +0 -0
  99. salome/bin/salome/test/kernel/SALOMEDS/TestSALOMEDS.py +55 -0
  100. salome/bin/salome/test/kernel/SALOMEDSImpl/CTestTestfile.cmake +27 -0
  101. salome/bin/salome/test/kernel/SALOMEDSImpl/SALOMEDSImplTest.hxx +51 -0
  102. salome/bin/salome/test/kernel/SALOMEDSImpl/TestSALOMEDSImpl +0 -0
  103. salome/bin/salome/test/kernel/SALOMEDSImpl/TestSALOMEDSImpl.py +55 -0
  104. salome/bin/salome/test/kernel/SALOMELocalTrace/CTestTestfile.cmake +27 -0
  105. salome/bin/salome/test/kernel/SALOMELocalTrace/SALOMELocalTraceTest.hxx +59 -0
  106. salome/bin/salome/test/kernel/SALOMELocalTrace/TestSALOMELocalTrace +0 -0
  107. salome/bin/salome/test/kernel/SALOMELocalTrace/TestSALOMELocalTrace.py +40 -0
  108. salome/bin/salome/test/kernel/SALOMETraceCollector/CTestTestfile.cmake +27 -0
  109. salome/bin/salome/test/kernel/SALOMETraceCollector/SALOMETraceCollectorTest.hxx +51 -0
  110. salome/bin/salome/test/kernel/SALOMETraceCollector/TestSALOMETraceCollector +0 -0
  111. salome/bin/salome/test/kernel/SALOMETraceCollector/TestSALOMETraceCollector.py +57 -0
  112. salome/bin/salome/test/kernel/UnitTests/CTestTestfile.cmake +28 -0
  113. salome/bin/salome/test/kernel/UnitTests/UnitTests +0 -0
  114. salome/bin/salome/test/kernel/UnitTests/UnitTests.py +89 -0
  115. salome/bin/salome/test/kernel/Utils/CTestTestfile.cmake +27 -0
  116. salome/bin/salome/test/kernel/Utils/TestUtils +0 -0
  117. salome/bin/salome/test/kernel/Utils/TestUtils.py +55 -0
  118. salome/bin/salome/test/kernel/Utils/UtilsTest.hxx +58 -0
  119. salome/bin/salome/test/kernel/lib/libLifeCycleCORBATest.so +0 -0
  120. salome/bin/salome/test/kernel/lib/libNamingServiceTest.so +0 -0
  121. salome/bin/salome/test/kernel/lib/libSALOMEDSImplTest.so +0 -0
  122. salome/bin/salome/test/kernel/lib/libSALOMEDSTest.so +0 -0
  123. salome/bin/salome/test/kernel/lib/libSALOMELocalTraceTest.so +0 -0
  124. salome/bin/salome/test/kernel/lib/libSALOMETraceCollectorTest.so +0 -0
  125. salome/bin/salome/test/kernel/lib/libSalomeKernelHelpersTest.so +0 -0
  126. salome/bin/salome/test/kernel/lib/libUtilsTest.so +0 -0
  127. salome/bin/salome/testDF +0 -0
  128. salome/bin/salome/testDS +0 -0
  129. salome/bin/salome/virtual_salome.py +38 -0
  130. salome/bin/salome/waitContainers.py +82 -0
  131. salome/bin/salome/waitNS.py +31 -0
  132. salome/kernel/ArgvKeeper.py +132 -0
  133. salome/kernel/Calcium_Ports_idl.py +645 -0
  134. salome/kernel/DSC_Engines_idl.py +443 -0
  135. salome/kernel/Engines/__init__.py +24 -0
  136. salome/kernel/Engines__POA/__init__.py +24 -0
  137. salome/kernel/Help.py +141 -0
  138. salome/kernel/KernelBasis.py +463 -0
  139. salome/kernel/KernelContainer.py +81 -0
  140. salome/kernel/KernelDS.py +87 -0
  141. salome/kernel/KernelLauncher.py +117 -0
  142. salome/kernel/KernelLogger.py +75 -0
  143. salome/kernel/KernelModuleCatalog.py +76 -0
  144. salome/kernel/KernelSDS.py +92 -0
  145. salome/kernel/KernelServices.py +105 -0
  146. salome/kernel/LifeCycleCORBA.py +92 -0
  147. salome/kernel/Logger_idl.py +89 -0
  148. salome/kernel/NSTEST/__init__.py +13 -0
  149. salome/kernel/NSTEST__POA/__init__.py +13 -0
  150. salome/kernel/NSparam_impl.py +50 -0
  151. salome/kernel/NamingService.py +365 -0
  152. salome/kernel/ORBConfigFile_impl.py +102 -0
  153. salome/kernel/Palm_Ports_idl.py +162 -0
  154. salome/kernel/PortManager.py +259 -0
  155. salome/kernel/Ports/Calcium_Ports/__init__.py +13 -0
  156. salome/kernel/Ports/Palm_Ports/__init__.py +13 -0
  157. salome/kernel/Ports/__init__.py +18 -0
  158. salome/kernel/Ports__POA/Calcium_Ports/__init__.py +13 -0
  159. salome/kernel/Ports__POA/Palm_Ports/__init__.py +13 -0
  160. salome/kernel/Ports__POA/__init__.py +18 -0
  161. salome/kernel/PyInterp.py +99 -0
  162. salome/kernel/Registry/__init__.py +13 -0
  163. salome/kernel/Registry__POA/__init__.py +13 -0
  164. salome/kernel/SALOME/__init__.py +19 -0
  165. salome/kernel/SALOMEDS/__init__.py +14 -0
  166. salome/kernel/SALOMEDS_Attributes_idl.py +2288 -0
  167. salome/kernel/SALOMEDS__POA/__init__.py +14 -0
  168. salome/kernel/SALOMEDS_idl.py +1590 -0
  169. salome/kernel/SALOMEWrappedStdType.py +383 -0
  170. salome/kernel/SALOME_Comm_idl.py +1045 -0
  171. salome/kernel/SALOME_CommonTypes_idl.py +69 -0
  172. salome/kernel/SALOME_ComponentPy.py +338 -0
  173. salome/kernel/SALOME_Component_idl.py +962 -0
  174. salome/kernel/SALOME_Container.py +242 -0
  175. salome/kernel/SALOME_ContainerHelper.py +840 -0
  176. salome/kernel/SALOME_ContainerManager_idl.py +236 -0
  177. salome/kernel/SALOME_DriverPy.py +86 -0
  178. salome/kernel/SALOME_Embedded_NamingService.py +41 -0
  179. salome/kernel/SALOME_Embedded_NamingService_ClientPy.py +59 -0
  180. salome/kernel/SALOME_Embedded_NamingService_idl.py +125 -0
  181. salome/kernel/SALOME_Exception_idl.py +75 -0
  182. salome/kernel/SALOME_ExternalServerLauncher_idl.py +199 -0
  183. salome/kernel/SALOME_GenericObj_idl.py +154 -0
  184. salome/kernel/SALOME_GlobalsImpl.py +38 -0
  185. salome/kernel/SALOME_Launcher_idl.py +327 -0
  186. salome/kernel/SALOME_Locker_idl.py +185 -0
  187. salome/kernel/SALOME_LogManager.py +103 -0
  188. salome/kernel/SALOME_LogManager_idl.py +348 -0
  189. salome/kernel/SALOME_Logger/__init__.py +13 -0
  190. salome/kernel/SALOME_Logger__POA/__init__.py +13 -0
  191. salome/kernel/SALOME_MPIObject_idl.py +100 -0
  192. salome/kernel/SALOME_ModuleCatalog/__init__.py +13 -0
  193. salome/kernel/SALOME_ModuleCatalog__POA/__init__.py +13 -0
  194. salome/kernel/SALOME_ModuleCatalog_idl.py +624 -0
  195. salome/kernel/SALOME_NamingServicePy.py +313 -0
  196. salome/kernel/SALOME_PACOExtension_idl.py +292 -0
  197. salome/kernel/SALOME_ParamPorts_idl.py +102 -0
  198. salome/kernel/SALOME_Parametric_idl.py +154 -0
  199. salome/kernel/SALOME_Ports_idl.py +347 -0
  200. salome/kernel/SALOME_PyNode.py +1557 -0
  201. salome/kernel/SALOME_PyNode_idl.py +387 -0
  202. salome/kernel/SALOME_Registry_idl.py +155 -0
  203. salome/kernel/SALOME_ResourcesManager_idl.py +215 -0
  204. salome/kernel/SALOME_SDS_idl.py +1181 -0
  205. salome/kernel/SALOME_Session_idl.py +214 -0
  206. salome/kernel/SALOME_TYPES/__init__.py +14 -0
  207. salome/kernel/SALOME_TYPES__POA/__init__.py +14 -0
  208. salome/kernel/SALOME_TestComponent_idl.py +121 -0
  209. salome/kernel/SALOME_TestModuleCatalog/__init__.py +13 -0
  210. salome/kernel/SALOME_TestModuleCatalog__POA/__init__.py +13 -0
  211. salome/kernel/SALOME_TestModuleCatalog_idl.py +194 -0
  212. salome/kernel/SALOME_Trace.py +96 -0
  213. salome/kernel/SALOME_Types_idl.py +81 -0
  214. salome/kernel/SALOME__POA/__init__.py +19 -0
  215. salome/kernel/SALOME_utilities.py +63 -0
  216. salome/kernel/SalomeSDSClt.py +552 -0
  217. salome/kernel/TestKiller.py +76 -0
  218. salome/kernel/Utils_Identity.py +93 -0
  219. salome/kernel/_ArgvKeeper.so +0 -0
  220. salome/kernel/_KernelBasis.so +0 -0
  221. salome/kernel/_KernelContainer.so +0 -0
  222. salome/kernel/_KernelDS.so +0 -0
  223. salome/kernel/_KernelLauncher.so +0 -0
  224. salome/kernel/_KernelLogger.so +0 -0
  225. salome/kernel/_KernelModuleCatalog.so +0 -0
  226. salome/kernel/_KernelSDS.so +0 -0
  227. salome/kernel/_KernelServices.so +0 -0
  228. salome/kernel/_NamingService.so +0 -0
  229. salome/kernel/_calcium.so +0 -0
  230. salome/kernel/_libNOTIFICATION.so +0 -0
  231. salome/kernel/_libSALOME_Comm.so +0 -0
  232. salome/kernel/_libSALOME_LifeCycleCORBA.so +0 -0
  233. salome/kernel/_pylauncher.so +0 -0
  234. salome/kernel/addToKillList_impl.py +127 -0
  235. salome/kernel/batchmode_salome.py +295 -0
  236. salome/kernel/calcium.py +866 -0
  237. salome/kernel/dsccalcium.py +98 -0
  238. salome/kernel/iparameters.py +255 -0
  239. salome/kernel/kernel_test.py +114 -0
  240. salome/kernel/killSalomeWithPort_impl.py +518 -0
  241. salome/kernel/killSalome_impl.py +94 -0
  242. salome/kernel/launchConfigureParser.py +1234 -0
  243. salome/kernel/launcher_proxy.py +122 -0
  244. salome/kernel/libNOTIFICATION.py +119 -0
  245. salome/kernel/libSALOME_Comm.py +85 -0
  246. salome/kernel/libSALOME_LifeCycleCORBA.py +232 -0
  247. salome/kernel/main.py +8 -0
  248. salome/kernel/nameserver.py +134 -0
  249. salome/kernel/nstest_idl.py +129 -0
  250. salome/kernel/omnipatch.py +136 -0
  251. salome/kernel/orbmodule.py +246 -0
  252. salome/kernel/parseConfigFile.py +261 -0
  253. salome/kernel/pylauncher.py +883 -0
  254. salome/kernel/runConsole_impl.py +224 -0
  255. salome/kernel/runSalomeCommon.py +418 -0
  256. salome/kernel/runSalomeNoServer_impl.py +48 -0
  257. salome/kernel/runSalomeOld_impl.py +603 -0
  258. salome/kernel/runSalomeOnDemand_impl.py +72 -0
  259. salome/kernel/runSalome_impl.py +341 -0
  260. salome/kernel/runSession.py +360 -0
  261. salome/kernel/runTests.py +90 -0
  262. salome/kernel/salome/__init__.py +646 -0
  263. salome/kernel/salome/kernel/__init__.py +111 -0
  264. salome/kernel/salome/kernel/datamodeler.py +363 -0
  265. salome/kernel/salome/kernel/deprecation.py +165 -0
  266. salome/kernel/salome/kernel/diclookup.py +137 -0
  267. salome/kernel/salome/kernel/enumerate.py +232 -0
  268. salome/kernel/salome/kernel/logconfig.py +27 -0
  269. salome/kernel/salome/kernel/logger.py +290 -0
  270. salome/kernel/salome/kernel/parametric/__init__.py +26 -0
  271. salome/kernel/salome/kernel/parametric/compo_utils.py +137 -0
  272. salome/kernel/salome/kernel/parametric/pyscript_utils.py +135 -0
  273. salome/kernel/salome/kernel/parametric/study_exchange_vars.py +285 -0
  274. salome/kernel/salome/kernel/pyunittester.py +184 -0
  275. salome/kernel/salome/kernel/services.py +267 -0
  276. salome/kernel/salome/kernel/studyedit.py +637 -0
  277. salome/kernel/salome/kernel/syshelper.py +116 -0
  278. salome/kernel/salome/kernel/termcolor.py +239 -0
  279. salome/kernel/salome/kernel/testdata.py +159 -0
  280. salome/kernel/salome/kernel/threadhelper.py +385 -0
  281. salome/kernel/salome/kernel/uiexception.py +121 -0
  282. salome/kernel/salome/kernel/unittester.py +89 -0
  283. salome/kernel/salomeContextUtils.py +353 -0
  284. salome/kernel/salomeContext_impl.py +731 -0
  285. salome/kernel/salome_ComponentGUI.py +92 -0
  286. salome/kernel/salome_genericobj.py +44 -0
  287. salome/kernel/salome_iapp.py +206 -0
  288. salome/kernel/salome_instance_impl.py +109 -0
  289. salome/kernel/salome_kernel_utils.py +88 -0
  290. salome/kernel/salome_notebook.py +183 -0
  291. salome/kernel/salome_psutil.py +94 -0
  292. salome/kernel/salome_pynode.py +74 -0
  293. salome/kernel/salome_study.py +347 -0
  294. salome/kernel/salome_test.py +56 -0
  295. salome/kernel/salome_utils.py +563 -0
  296. salome/kernel/salome_version.py +164 -0
  297. salome/kernel/searchFreePort.py +130 -0
  298. salome/kernel/server.py +154 -0
  299. salome/kernel/setenv_impl.py +240 -0
  300. salome/kernel/version_and_config.py +24 -0
  301. salome/share/salome/resources/kernel/Anita semi square.ttf +0 -0
  302. salome/share/salome/resources/kernel/CatalogModulePersonnel.xml_skel +24 -0
  303. salome/share/salome/resources/kernel/CatalogResources.xml +4 -0
  304. salome/share/salome/resources/kernel/KERNELCatalog.xml +102 -0
  305. salome/share/salome/resources/kernel/SALOMEDS_Resources +10 -0
  306. salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_MPI_LAN.py +19 -0
  307. salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_MPI_MPICH.py +18 -0
  308. salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_MPI_OPENMPI.py +21 -0
  309. salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_NO_MPI.py +25 -0
  310. salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_REMOTE.py +108 -0
  311. salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_REMOTE_OLD.py +115 -0
  312. salome/share/salome/resources/kernel/ScriptsTemplate/script_parameters.py +25 -0
  313. salome/share/salome/resources/kernel/app-template/CMakeLists.txt +125 -0
  314. salome/share/salome/resources/kernel/app-template/LICENCE +504 -0
  315. salome/share/salome/resources/kernel/app-template/README +0 -0
  316. salome/share/salome/resources/kernel/app-template/doc/CMakeLists.txt +31 -0
  317. salome/share/salome/resources/kernel/app-template/doc/README +1 -0
  318. salome/share/salome/resources/kernel/app-template/doc/conf.py.in +197 -0
  319. salome/share/salome/resources/kernel/app-template/doc/index.rst +14 -0
  320. salome/share/salome/resources/kernel/app-template/doc/intro.rst +4 -0
  321. salome/share/salome/resources/kernel/app-template/doc/link.rst +4 -0
  322. salome/share/salome/resources/kernel/app-template/resources/CMakeLists.txt +36 -0
  323. salome/share/salome/resources/kernel/app-template/resources/SalomeApp.xml.in +30 -0
  324. salome/share/salome/resources/kernel/app-template/resources/about.png +0 -0
  325. salome/share/salome/resources/kernel/app-template/resources/app_icon.png +0 -0
  326. salome/share/salome/resources/kernel/app-template/resources/app_logo.png +0 -0
  327. salome/share/salome/resources/kernel/app-template/resources/doc/CMakeLists.txt +27 -0
  328. salome/share/salome/resources/kernel/app-template/resources/doc/README +1 -0
  329. salome/share/salome/resources/kernel/app-template/resources/doc/sample.pdf +0 -0
  330. salome/share/salome/resources/kernel/app-template/resources/icon_about.png +0 -0
  331. salome/share/salome/resources/kernel/app-template/resources/splash.png +0 -0
  332. salome/share/salome/resources/kernel/app-template/src/CMakeLists.txt +22 -0
  333. salome/share/salome/resources/kernel/app-template/src/resources/CMakeLists.txt +34 -0
  334. salome/share/salome/resources/kernel/app-template/src/resources/LightApp_images.ts +23 -0
  335. salome/share/salome/resources/kernel/app-template/src/resources/LightApp_msg_en.ts +35 -0
  336. salome/share/salome/resources/kernel/app-template/src/resources/LightApp_msg_fr.ts +35 -0
  337. salome/share/salome/resources/kernel/app-template/src/resources/LightApp_msg_ja.ts +35 -0
  338. salome/share/salome/resources/kernel/app-template/src/tests/CMakeLists.txt +29 -0
  339. salome/share/salome/resources/kernel/app-template/src/tests/README +1 -0
  340. salome/share/salome/resources/kernel/app-template/src/tests/helloWorld.py +1 -0
  341. salome/share/salome/resources/kernel/background.png +0 -0
  342. salome/share/salome/resources/kernel/channel.cfg +278 -0
  343. salome/share/salome/resources/kernel/testLauncher.xml +10 -0
  344. salome.kernel-9.14.0.dist-info/METADATA +24 -0
  345. salome.kernel-9.14.0.dist-info/RECORD +399 -0
  346. salome.kernel-9.14.0.dist-info/WHEEL +6 -0
  347. salome.kernel-9.14.0.dist-info/entry_points.txt +2 -0
  348. salome.kernel.libs/libArgvKeeper-822351d5.so +0 -0
  349. salome.kernel.libs/libCOS4-b4544fb9.so.2.5 +0 -0
  350. salome.kernel.libs/libCOSDynamic4-618dbb1d.so.2.5 +0 -0
  351. salome.kernel.libs/libCalciumC-91a70951.so +0 -0
  352. salome.kernel.libs/libDF-281cc999.so +0 -0
  353. salome.kernel.libs/libLauncher-d5172385.so +0 -0
  354. salome.kernel.libs/libLauncherWrapHelper-b990b914.so +0 -0
  355. salome.kernel.libs/libOpUtil-b4b3b9b6.so +0 -0
  356. salome.kernel.libs/libRegistry-e24daafb.so +0 -0
  357. salome.kernel.libs/libResourcesManager-f4ef9548.so +0 -0
  358. salome.kernel.libs/libSALOMEBasics-f4d874ac.so +0 -0
  359. salome.kernel.libs/libSALOMELocalTrace-a3992e5b.so +0 -0
  360. salome.kernel.libs/libSALOMELog-55805468.so +0 -0
  361. salome.kernel.libs/libSalomeCalcium-781cb934.so +0 -0
  362. salome.kernel.libs/libSalomeCatalog-5b91a229.so +0 -0
  363. salome.kernel.libs/libSalomeCommunication-6013ebb8.so +0 -0
  364. salome.kernel.libs/libSalomeContainer-decf499e.so +0 -0
  365. salome.kernel.libs/libSalomeContainerServer-9c26efb9.so +0 -0
  366. salome.kernel.libs/libSalomeDS-fb6237e6.so +0 -0
  367. salome.kernel.libs/libSalomeDSCContainer-9aba4abc.so +0 -0
  368. salome.kernel.libs/libSalomeDSCSuperv-cb0c82c4.so +0 -0
  369. salome.kernel.libs/libSalomeDSCSupervBasic-5e119792.so +0 -0
  370. salome.kernel.libs/libSalomeDSClient-cfd124a5.so +0 -0
  371. salome.kernel.libs/libSalomeDSImpl-b0ca6717.so +0 -0
  372. salome.kernel.libs/libSalomeDatastream-755ff3cb.so +0 -0
  373. salome.kernel.libs/libSalomeGenericObj-2571fdbd.so +0 -0
  374. salome.kernel.libs/libSalomeHDFPersist-97851d0e.so +0 -0
  375. salome.kernel.libs/libSalomeIDLKernel-2eb1ed8e.so +0 -0
  376. salome.kernel.libs/libSalomeKernelHelpers-ac8d226c.so +0 -0
  377. salome.kernel.libs/libSalomeLauncher-773b54ed.so +0 -0
  378. salome.kernel.libs/libSalomeLifeCycleCORBA-3e113d61.so +0 -0
  379. salome.kernel.libs/libSalomeLoggerServer-973d3d94.so +0 -0
  380. salome.kernel.libs/libSalomeNS-d87194d5.so +0 -0
  381. salome.kernel.libs/libSalomeNotification-83bfb2ff.so +0 -0
  382. salome.kernel.libs/libSalomeORB-07883efb.so +0 -0
  383. salome.kernel.libs/libSalomePalm-b748443e.so +0 -0
  384. salome.kernel.libs/libSalomeResourcesManager-5a7077a0.so +0 -0
  385. salome.kernel.libs/libSalomeSDS-cc7aada7.so +0 -0
  386. salome.kernel.libs/libSalomeTestComponentEngine-ae724ce1.so +0 -0
  387. salome.kernel.libs/libTOOLSDS-82342bb4.so +0 -0
  388. salome.kernel.libs/libbatch-6b5b319f.so +0 -0
  389. salome.kernel.libs/libboost_atomic-489c2d94.so.1.81.0 +0 -0
  390. salome.kernel.libs/libboost_filesystem-e610b554.so.1.81.0 +0 -0
  391. salome.kernel.libs/libboost_system-4a7650ea.so.1.81.0 +0 -0
  392. salome.kernel.libs/libcppunit-1-17e77af1.12.so.1.0.0 +0 -0
  393. salome.kernel.libs/libhdf5-60e81d69.so.103.0.0 +0 -0
  394. salome.kernel.libs/liblzma-004595ca.so.5.2.2 +0 -0
  395. salome.kernel.libs/libomniDynamic4-9edc765d.so.2.5 +0 -0
  396. salome.kernel.libs/libomniORB4-4725824d.so.2.5 +0 -0
  397. salome.kernel.libs/libomnithread-99f9d0d3.so.4.1 +0 -0
  398. salome.kernel.libs/libwith_loggerTraceCollector-7ed0f3a0.so +0 -0
  399. salome.kernel.libs/libwith_loggerTraceCollector.so +0 -0
  400. salome.kernel.libs/libxml2-3998bec4.so.2.9.1 +0 -0
@@ -0,0 +1,1234 @@
1
+ # -*- coding: iso-8859-1 -*-
2
+ # Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE
3
+ #
4
+ # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5
+ # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6
+ #
7
+ # This library is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation; either
10
+ # version 2.1 of the License, or (at your option) any later version.
11
+ #
12
+ # This library is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ # Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public
18
+ # License along with this library; if not, write to the Free Software
19
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ #
21
+ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22
+ #
23
+
24
+ import argparse
25
+ import glob
26
+ import os
27
+ import re
28
+ import sys
29
+ import xml.sax
30
+
31
+ from .salome_utils import verbose, getPortNumber, getHomeDir
32
+
33
+
34
+ # names of tags in XML configuration file
35
+ doc_tag = "document"
36
+ sec_tag = "section"
37
+ par_tag = "parameter"
38
+ import_tag = "import"
39
+
40
+ # names of attributes in XML configuration file
41
+ nam_att = "name"
42
+ val_att = "value"
43
+
44
+ # certain values in XML configuration file ("launch" section)
45
+ lanch_nam = "launch"
46
+ help_nam = "help"
47
+ gui_nam = "gui"
48
+ splash_nam = "splash"
49
+ logger_nam = "logger"
50
+ xterm_nam = "xterm"
51
+ file_nam = "file"
52
+ portkill_nam = "portkill"
53
+ killall_nam = "killall"
54
+ modules_nam = "modules"
55
+ embedded_nam = "embedded"
56
+ standalone_nam = "standalone"
57
+ key_nam = "key"
58
+ terminal_nam = "terminal"
59
+ interp_nam = "interp"
60
+ except_nam = "noexcepthandler"
61
+ terminal_nam = "terminal"
62
+ pinter_nam = "pinter"
63
+ batch_nam = "batch"
64
+ test_nam = "test"
65
+ play_nam = "play"
66
+ lang_nam = "language"
67
+ gdb_session_nam = "gdb_session"
68
+ ddd_session_nam = "ddd_session"
69
+ valgrind_session_nam = "valgrind_session"
70
+ shutdown_servers_nam = "shutdown_servers"
71
+ foreground_nam = "foreground"
72
+ wake_up_session_nam = "wake_up_session"
73
+ launcher_only_nam = "launcher_only"
74
+ launcher_nam = "launcher"
75
+
76
+ # values in XML configuration file giving specific module parameters (<module_name> section)
77
+ # which are stored in opts with key <module_name>_<parameter> (eg SMESH_plugins)
78
+ plugins_nam = "plugins"
79
+
80
+ # values passed as arguments, NOT read from XML config file, but set from within this script
81
+ appname_nam = "appname"
82
+ port_nam = "port"
83
+ useport_nam = "useport"
84
+ salomecfgname = "salome"
85
+ salomeappname = "SalomeApp"
86
+ script_nam = "pyscript"
87
+ verbosity_nam = "verbosity"
88
+ on_demand_nam = "on_demand"
89
+
90
+ # possible choices for the "embedded" and "standalone" parameters
91
+ embedded_choices = [ "registry", "study", "moduleCatalog", "cppContainer", "SalomeAppEngine" ]
92
+ standalone_choices = [ "registry", "study", "moduleCatalog", "cppContainer"]
93
+
94
+ # values of boolean type (must be '0' or '1').
95
+ # xml_parser.boolValue() is used for correct setting
96
+ boolKeys = ( gui_nam, splash_nam, logger_nam, file_nam, xterm_nam, portkill_nam, killall_nam, except_nam, pinter_nam, shutdown_servers_nam, launcher_only_nam, on_demand_nam )
97
+ intKeys = ( interp_nam, )
98
+ strKeys = ( launcher_nam )
99
+
100
+ # values of list type
101
+ listKeys = ( embedded_nam, key_nam, modules_nam, standalone_nam, plugins_nam )
102
+
103
+ ###
104
+ # Get the application version
105
+ # Uses GUI_ROOT_DIR (or KERNEL_ROOT_DIR in batch mode) +/bin/salome/VERSION file
106
+ ###
107
+ def version():
108
+ try:
109
+ filename = None
110
+ root_dir = os.environ.get( 'KERNEL_ROOT_DIR', '' ) # KERNEL_ROOT_DIR or "" if not found
111
+ version_file = os.path.join(root_dir, 'bin', 'salome', 'VERSION')
112
+ if root_dir and os.path.exists( version_file ):
113
+ filename = version_file
114
+ root_dir = os.environ.get( 'GUI_ROOT_DIR', '' ) # GUI_ROOT_DIR "" if not found
115
+ version_file = os.path.join(root_dir, 'bin', 'salome', 'VERSION')
116
+ if root_dir and os.path.exists( version_file ):
117
+ filename = version_file
118
+ if filename:
119
+ with open(filename, "r") as f:
120
+ v = f.readline() # v = "THIS IS SALOME - SALOMEGUI VERSION: 3.0.0"
121
+ match = re.search( r':\s+([a-zA-Z0-9.]+)\s*$', v )
122
+ if match :
123
+ return match.group( 1 )
124
+ except Exception:
125
+ pass
126
+ return ''
127
+
128
+ ###
129
+ # Calculate and return configuration file unique ID
130
+ # For example: for SALOME version 3.1.0a1 the id is 300999701
131
+ ###
132
+ def version_id(fname):
133
+ major = minor = release = dev1 = dev2 = 0
134
+ vers = fname.split(".")
135
+ if len(vers) > 0:
136
+ try:
137
+ major = int(vers[0])
138
+ except ValueError:
139
+ # If salome version given is DEV, the call to int('DEV') will fail with
140
+ # a ValueError exception
141
+ pass
142
+ try:
143
+ if len(vers) > 1: minor = int(vers[1])
144
+ except ValueError:
145
+ # If salome version given is 7.DEV, the call to int('DEV') will fail with
146
+ # a ValueError exception
147
+ pass
148
+ if len(vers) > 2:
149
+ mr = re.search(r'^([0-9]+)([A-Z]|RC)?([0-9]*)',vers[2], re.I)
150
+ if mr:
151
+ release = int(mr.group(1))
152
+ if mr.group(2):
153
+ tag = mr.group(2).strip().lower()
154
+ if tag == "rc":
155
+ dev1 = 49 # release candidate
156
+ elif tag:
157
+ dev1 = ord(tag)-ord('a')+1
158
+ pass
159
+ if mr.group(3):
160
+ dev2 = int(mr.group(3).strip())
161
+ pass
162
+ pass
163
+ dev = dev1 * 100 + dev2
164
+ ver = major
165
+ ver = ver * 100 + minor
166
+ ver = ver * 100 + release
167
+ ver = ver * 10000
168
+ if dev > 0: ver = ver - dev
169
+ return ver
170
+
171
+ ###
172
+ # Get default user configuration file name
173
+ # For SALOME, it is:
174
+ # - on Linux: ~/.config/salome/SalomeApprc[.<version>]
175
+ # - on Windows: ~/SalomeApp.xml[.<version>]
176
+ # where <version> is an optional version number
177
+ ###
178
+ def defaultUserFile(appname=salomeappname, cfgname=salomecfgname):
179
+ v = version()
180
+ filetmpl = sys.platform == "win32" and "{0}.xml.{1}" or "{0}rc.{1}"
181
+ paths = []
182
+ paths.append(getHomeDir())
183
+ paths.append(".config")
184
+ if cfgname: paths.append(cfgname)
185
+ paths.append(filetmpl.format(appname, v))
186
+ return os.path.join(*paths)
187
+
188
+ ###
189
+ # Get user configuration file name
190
+ ###
191
+ def userFile(appname, cfgname):
192
+ # get app version
193
+ v = version()
194
+ if not v: return None # unknown version
195
+
196
+ # get default user file name
197
+ filename = defaultUserFile(appname, cfgname)
198
+ if not filename: return None # default user file name is bad
199
+
200
+ # check that default user file exists
201
+ if os.path.exists(filename): return filename # user file is found
202
+
203
+ # otherwise try to detect any appropriate user file
204
+
205
+ # ... calculate default version id
206
+ id0 = version_id(v)
207
+ if not id0: return None # bad version id -> can't detect appropriate file
208
+
209
+ # ... get all existing user preferences files
210
+ filetmpl1 = sys.platform == "win32" and "{0}.xml.*" or "{0}rc.*"
211
+ filetmpl2 = sys.platform == "win32" and filetmpl1 or "." + filetmpl1
212
+ files = []
213
+ if cfgname:
214
+ # Since v6.6.0 - in ~/.config/salome directory, without dot prefix
215
+ files += glob.glob(os.path.join(getHomeDir(), ".config", cfgname, filetmpl1.format(appname)))
216
+ # Since v6.5.0 - in ~/.config/salome directory, dot-prefixed (backward compatibility)
217
+ if filetmpl2 and filetmpl2 != filetmpl1:
218
+ files += glob.glob(os.path.join(getHomeDir(), ".config", cfgname, filetmpl2.format(appname)))
219
+ pass
220
+ # old style (before v6.5.0) - in ~ directory, dot-prefixed
221
+ if filetmpl2 and filetmpl2 != filetmpl1:
222
+ files += glob.glob(os.path.join(getHomeDir(), filetmpl2.format(appname)))
223
+ pass
224
+
225
+ # ... loop through all files and find most appropriate file (with closest id)
226
+ appr_id = -1
227
+ appr_file = ""
228
+ for f in files:
229
+ ff = os.path.basename( f )
230
+ if sys.platform == "win32":
231
+ match = re.search( r'^{0}\.xml\.([a-zA-Z0-9.]+)$'.format(appname), ff )
232
+ else:
233
+ match = re.search( r'^\.?{0}rc\.([a-zA-Z0-9.]+)$'.format(appname), ff )
234
+ if match:
235
+ ver = version_id(match.group(1))
236
+ if not ver: continue # bad version id -> skip file
237
+ if appr_id < 0 or abs(appr_id-id0) > abs(ver-id0):
238
+ appr_id = ver
239
+ appr_file = f
240
+ pass
241
+ elif abs(appr_id-id0) == abs(ver-id0):
242
+ if not os.path.basename(f).startswith("."): appr_file = f
243
+ pass
244
+ pass
245
+ pass
246
+ return appr_file
247
+
248
+ # --
249
+
250
+ def process_containers_params( standalone, embedded ):
251
+ # 1. filter inappropriate containers names
252
+ if standalone is not None:
253
+ standalone = [x for x in standalone if x in standalone_choices]
254
+ if embedded is not None:
255
+ embedded = [x for x in embedded if x in embedded_choices]
256
+
257
+ # 2. remove containers appearing in 'standalone' parameter from the 'embedded'
258
+ # parameter --> i.e. 'standalone' parameter has higher priority
259
+ if standalone is not None and embedded is not None:
260
+ embedded = [x for x in embedded if x not in standalone]
261
+
262
+ # 3. return corrected parameters values
263
+ return standalone, embedded
264
+
265
+ # -----------------------------------------------------------------------------
266
+
267
+ ###
268
+ # XML reader for launch configuration file usage
269
+ ###
270
+
271
+ section_to_skip = ""
272
+
273
+ class xml_parser:
274
+ def __init__(self, fileName, _opts, _importHistory):
275
+ #warning _importHistory=[] is NOT good: is NOT empty,reinitialized after first call
276
+ if verbose(): print("Configure parser: processing %s ..." % fileName)
277
+ self.fileName = os.path.abspath(fileName)
278
+ self.importHistory = _importHistory
279
+ self.importHistory.append(self.fileName)
280
+ self.space = []
281
+ self.opts = _opts
282
+ self.section = section_to_skip
283
+ parser = xml.sax.make_parser()
284
+ parser.setContentHandler(self)
285
+ parser.parse(fileName)
286
+ standalone, embedded = process_containers_params( self.opts.get( standalone_nam ),
287
+ self.opts.get( embedded_nam ) )
288
+ if standalone is not None:
289
+ self.opts[ standalone_nam ] = standalone
290
+ if embedded is not None:
291
+ self.opts[ embedded_nam ] = embedded
292
+ pass
293
+
294
+ def boolValue( self, item):
295
+ strloc = item
296
+ if isinstance(strloc, str):
297
+ strloc = strloc.encode().strip()
298
+ if isinstance(strloc, bytes):
299
+ strlow = strloc.decode().lower()
300
+ if strlow in ("1", "yes", "y", "on", "true", "ok"):
301
+ return True
302
+ elif strlow in ("0", "no", "n", "off", "false", "cancel"):
303
+ return False
304
+ return strloc
305
+ pass
306
+
307
+ def intValue( self, item):
308
+ strloc = item
309
+ if isinstance(strloc, str):
310
+ strloc = strloc.encode().strip()
311
+ if isinstance(strloc, bytes):
312
+ strlow = strloc.decode().lower()
313
+ if strlow in ("1", "yes", "y", "on", "true", "ok"):
314
+ return 1
315
+ elif strlow in ("0", "no", "n", "off", "false", "cancel"):
316
+ return 0
317
+ else:
318
+ return int(strloc.decode())
319
+ return strloc
320
+ pass
321
+
322
+ def strValue( self, item):
323
+ strloc = item
324
+ try:
325
+ if isinstance( strloc, str):
326
+ strloc = strloc.strip()
327
+ else:
328
+ if isinstance( strloc, bytes):
329
+ strloc = strloc.decode().strip()
330
+ except Exception:
331
+ pass
332
+ return strloc
333
+
334
+ def startElement(self, name, attrs):
335
+ self.space.append(name)
336
+ self.current = None
337
+
338
+ # if we are importing file
339
+ if self.space == [doc_tag, import_tag] and nam_att in attrs.getNames():
340
+ self.importFile( attrs.getValue(nam_att) )
341
+
342
+ # if we are analyzing "section" element and its "name" attribute is
343
+ # either "launch" or module name -- set section_name
344
+ if self.space == [doc_tag, sec_tag] and nam_att in attrs.getNames():
345
+ section_name = attrs.getValue( nam_att )
346
+ if section_name in [lanch_nam, lang_nam]:
347
+ self.section = section_name # launch section
348
+ elif modules_nam in self.opts and \
349
+ section_name in self.opts[ modules_nam ]:
350
+ self.section = section_name # <module> section
351
+ else:
352
+ self.section = section_to_skip # any other section
353
+ pass
354
+
355
+ # if we are analyzing "parameter" elements - children of either
356
+ # "section launch" or "section "<module>"" element, then store them
357
+ # in self.opts assiciative array (key = [<module>_ + ] value of "name" attribute)
358
+ elif self.section != section_to_skip and \
359
+ self.space == [doc_tag, sec_tag, par_tag] and \
360
+ nam_att in attrs.getNames() and \
361
+ val_att in attrs.getNames():
362
+ nam = attrs.getValue( nam_att )
363
+ val = attrs.getValue( val_att )
364
+ if self.section == lanch_nam: # key for launch section
365
+ key = nam
366
+ else: # key for <module> section
367
+ key = self.section + "_" + nam
368
+ key = self.strValue( key )
369
+ if nam in boolKeys:
370
+ self.opts[key] = self.boolValue( val ) # assign boolean value: 0 or 1
371
+ elif nam in intKeys:
372
+ self.opts[key] = self.intValue( val ) # assign integer value
373
+ elif nam in strKeys:
374
+ self.opts[key] = val # assign value
375
+ elif nam in listKeys:
376
+ self.opts[key] = [ self.strValue( a ) for a in re.split( "[:;,]", val ) ] # assign list value: []
377
+ else:
378
+ self.opts[key] = self.strValue( val ) # string value
379
+ pass
380
+ pass
381
+
382
+ def endElement(self, name):
383
+ self.space.pop()
384
+ self.current = None
385
+ if self.section != section_to_skip and name == sec_tag:
386
+ self.section = section_to_skip
387
+ pass
388
+
389
+ def characters(self, content):
390
+ pass
391
+
392
+ def processingInstruction(self, target, data):
393
+ pass
394
+
395
+ def setDocumentLocator(self, locator):
396
+ pass
397
+
398
+ def startDocument(self):
399
+ self.read = None
400
+ pass
401
+
402
+ def endDocument(self):
403
+ self.read = None
404
+ pass
405
+
406
+ def importFile(self, fname):
407
+ # get absolute name
408
+ if os.path.isabs (fname) :
409
+ absfname = fname
410
+ else:
411
+ absfname = os.path.join(os.path.dirname(self.fileName), fname)
412
+
413
+ # check existing and registry file
414
+ for ext in ["", ".xml", ".XML"] :
415
+ if os.path.exists(absfname + ext) :
416
+ absfname += ext
417
+ if absfname in self.importHistory :
418
+ if verbose(): print("Configure parser: Warning : file %s is already imported" % absfname)
419
+ return # already imported
420
+ break
421
+ pass
422
+ else:
423
+ if verbose(): print("Configure parser: Error : file %s does not exist" % absfname)
424
+ return
425
+
426
+ # importing file
427
+ try:
428
+ # copy current options
429
+ import copy
430
+ opts = copy.deepcopy(self.opts)
431
+ # import file
432
+ imp = xml_parser(absfname, opts, self.importHistory)
433
+ # merge results
434
+ for key in imp.opts:
435
+ if key not in self.opts:
436
+ self.opts[key] = imp.opts[key]
437
+ pass
438
+ pass
439
+ pass
440
+ except Exception:
441
+ if verbose(): print("Configure parser: Error : can not read configuration file %s" % absfname)
442
+ pass
443
+
444
+
445
+ # -----------------------------------------------------------------------------
446
+
447
+ booleans = {'1': True , 'yes': True , 'y': True , 'on' : True , 'true' : True , 'ok' : True,
448
+ '0': False, 'no' : False, 'n': False, 'off': False, 'false': False, 'cancel' : False}
449
+
450
+ boolean_choices = list(booleans.keys())
451
+
452
+
453
+ class CheckEmbeddedAction(argparse.Action):
454
+ def __call__(self, parser, namespace, value, option_string=None):
455
+ assert value is not None
456
+ if namespace.embedded:
457
+ embedded = [a for a in re.split("[:;,]", namespace.embedded) if a.strip()]
458
+ else:
459
+ embedded = []
460
+ if namespace.standalone:
461
+ standalone = [a for a in re.split("[:;,]", namespace.standalone) if a.strip()]
462
+ else:
463
+ standalone = []
464
+ vals = [a for a in re.split("[:;,]", value) if a.strip()]
465
+ for v in vals:
466
+ if v not in embedded_choices:
467
+ raise argparse.ArgumentError("option %s: invalid choice: %r (choose from %s)"
468
+ % (self.dest, v, ", ".join(map(repr, embedded_choices))))
469
+ if v not in embedded:
470
+ embedded.append(v)
471
+ if v in standalone:
472
+ del standalone[standalone.index(v)]
473
+ pass
474
+ namespace.embedded = ",".join(embedded)
475
+ namespace.standalone = ",".join(standalone)
476
+ pass
477
+
478
+
479
+ class CheckStandaloneAction(argparse.Action):
480
+ def __call__(self, parser, namespace, value, option_string=None):
481
+ assert value is not None
482
+ if namespace.embedded:
483
+ embedded = [a for a in re.split("[:;,]", namespace.embedded) if a.strip()]
484
+ else:
485
+ embedded = []
486
+ if namespace.standalone:
487
+ standalone = [a for a in re.split("[:;,]", namespace.standalone) if a.strip()]
488
+ else:
489
+ standalone = []
490
+ vals = [a for a in re.split("[:;,]", value) if a.strip()]
491
+ for v in vals:
492
+ if v not in standalone_choices:
493
+ raise argparse.ArgumentError("option %s: invalid choice: %r (choose from %s)"
494
+ % (self.dest, v, ", ".join(map(repr, standalone_choices))))
495
+ if v not in standalone:
496
+ standalone.append(v)
497
+ if v in embedded:
498
+ del embedded[embedded.index(v)]
499
+ pass
500
+ namespace.embedded = ",".join(embedded)
501
+ namespace.standalone = ",".join(standalone)
502
+
503
+
504
+ class StoreBooleanAction(argparse.Action):
505
+ def __call__(self, parser, namespace, value, option_string=None):
506
+ if isinstance(value, bytes):
507
+ value = value.decode()
508
+ if isinstance(value, str):
509
+ try:
510
+ value_conv = booleans[value.strip().lower()]
511
+ setattr(namespace, self.dest, value_conv)
512
+ except KeyError:
513
+ raise argparse.ArgumentError(
514
+ "option %s: invalid boolean value: %s (choose from %s)"
515
+ % (self.dest, value, boolean_choices))
516
+ else:
517
+ setattr(namespace, self.dest, value)
518
+
519
+
520
+ def CreateOptionParser(exeName=None):
521
+
522
+ if not exeName:
523
+ exeName = "%(prog)s"
524
+
525
+ a_usage = """%s [options] [STUDY_FILE] [PYTHON_FILE [args] [PYTHON_FILE [args]...]]
526
+ Python file arguments, if any, must be comma-separated (without blank characters) and prefixed by "args:" (without quotes), e.g. myscript.py args:arg1,arg2=val,...
527
+ """ % exeName
528
+ version_str = "Salome %s" % version()
529
+ pars = argparse.ArgumentParser(usage=a_usage)
530
+
531
+ # Version
532
+ pars.add_argument('-v', '--version', action='version', version=version_str)
533
+
534
+ # GUI/Terminal. Default: GUI
535
+ help_str = "Launch without GUI (in the terminal mode)."
536
+ pars.add_argument("-t",
537
+ "--terminal",
538
+ action="store_false",
539
+ dest="gui",
540
+ help=help_str)
541
+
542
+ help_str = "Launch in Batch Mode. (Without GUI on batch machine)"
543
+ pars.add_argument("-b",
544
+ "--batch",
545
+ action="store_true",
546
+ dest="batch",
547
+ help=help_str)
548
+
549
+ help_str = "Launch in GUI mode [default]."
550
+ pars.add_argument("-g",
551
+ "--gui",
552
+ action="store_true",
553
+ dest="gui",
554
+ help=help_str)
555
+
556
+ # Show Desktop (only in GUI mode). Default: True
557
+ help_str = "1 to activate GUI desktop [default], "
558
+ help_str += "0 to not activate GUI desktop (Session_Server starts, but GUI is not shown). "
559
+ help_str += "Ignored in the terminal mode."
560
+ pars.add_argument("-d",
561
+ "--show-desktop",
562
+ metavar="<1/0>",
563
+ action=StoreBooleanAction,
564
+ dest="desktop",
565
+ help=help_str)
566
+ help_str = "Do not activate GUI desktop (Session_Server starts, but GUI is not shown). "
567
+ help_str += "The same as --show-desktop=0."
568
+ pars.add_argument("-o",
569
+ "--hide-desktop",
570
+ action="store_false",
571
+ dest="desktop",
572
+ help=help_str)
573
+
574
+ # Use logger or log-file. Default: nothing.
575
+ help_str = "Redirect messages to the CORBA collector."
576
+ pars.add_argument("-l",
577
+ "--logger",
578
+ action="store_const", const="CORBA",
579
+ dest="log_file",
580
+ help=help_str)
581
+ help_str = "Redirect messages to the <log-file>"
582
+ pars.add_argument("-f",
583
+ "--log-file",
584
+ metavar="<log-file>",
585
+ dest="log_file",
586
+ help=help_str)
587
+
588
+ # Use gui-log-file for specific user actions in GUI. Default: nothing.
589
+ help_str = "Log specific user actions in GUI to <gui_log_file>"
590
+ pars.add_argument("--gui-log-file",
591
+ metavar="<gui_log_file>",
592
+ dest="gui_log_file",
593
+ help=help_str)
594
+
595
+ # Configuration XML file. Default: see defaultUserFile() function
596
+ help_str = "Parse application settings from the <file> "
597
+ help_str += "instead of default %s" % defaultUserFile()
598
+ pars.add_argument("-r",
599
+ "--resources",
600
+ metavar="<file>",
601
+ dest="resources",
602
+ help=help_str)
603
+
604
+ # Use own xterm for each server. Default: False.
605
+ help_str = "Launch each SALOME server in own xterm console"
606
+ pars.add_argument("-x",
607
+ "--xterm",
608
+ action="store_true",
609
+ dest="xterm",
610
+ help=help_str)
611
+
612
+ # Modules. Default: Like in configuration files.
613
+ help_str = "SALOME modules list (where <module1>, <module2> are the names "
614
+ help_str += "of SALOME modules which should be available in the SALOME session)"
615
+ pars.add_argument("-m",
616
+ "--modules",
617
+ metavar="<module1,module2,...>",
618
+ action="append",
619
+ dest="modules",
620
+ help=help_str)
621
+
622
+ # Embedded servers. Default: Like in configuration files.
623
+ help_str = "CORBA servers to be launched in the Session embedded mode. "
624
+ help_str += "Valid values for <serverN>: %s " % ", ".join( embedded_choices )
625
+ help_str += "[by default the value from the configuration files is used]"
626
+ pars.add_argument("-e",
627
+ "--embedded",
628
+ metavar="<server1,server2,...>",
629
+ action=CheckEmbeddedAction,
630
+ dest="embedded",
631
+ help=help_str)
632
+
633
+ # Standalone servers. Default: Like in configuration files.
634
+ help_str = "CORBA servers to be launched in the standalone mode (as separate processes). "
635
+ help_str += "Valid values for <serverN>: %s " % ", ".join( standalone_choices )
636
+ help_str += "[by default the value from the configuration files is used]"
637
+ pars.add_argument("-s",
638
+ "--standalone",
639
+ metavar="<server1,server2,...>",
640
+ action=CheckStandaloneAction,
641
+ dest="standalone",
642
+ help=help_str)
643
+
644
+ # Kill with port. Default: False.
645
+ help_str = "Kill SALOME with the current port"
646
+ pars.add_argument("-p",
647
+ "--portkill",
648
+ action="store_true",
649
+ dest="portkill",
650
+ help=help_str)
651
+
652
+ # Kill all. Default: False.
653
+ help_str = "Kill all running SALOME sessions"
654
+ pars.add_argument("-k",
655
+ "--killall",
656
+ action="store_true",
657
+ dest="killall",
658
+ help=help_str)
659
+
660
+ # Additional python interpreters. Default: 0.
661
+ help_str = "The number of additional external python interpreters to run. "
662
+ help_str += "Each additional python interpreter is run in separate "
663
+ help_str += "xterm session with properly set SALOME environment"
664
+ pars.add_argument("-i",
665
+ "--interp",
666
+ metavar="<N>",
667
+ type=int,
668
+ dest="interp",
669
+ help=help_str)
670
+
671
+ # Splash. Default: True.
672
+ help_str = "1 to display splash screen [default], "
673
+ help_str += "0 to disable splash screen. "
674
+ help_str += "This option is ignored in the terminal mode. "
675
+ help_str += "It is also ignored if --show-desktop=0 option is used."
676
+ pars.add_argument("-z",
677
+ "--splash",
678
+ metavar="<1/0>",
679
+ action=StoreBooleanAction,
680
+ dest="splash",
681
+ help=help_str)
682
+
683
+ # Catch exceptions. Default: True.
684
+ help_str = "1 (yes,true,on,ok) to enable centralized exception handling [default], "
685
+ help_str += "0 (no,false,off,cancel) to disable centralized exception handling."
686
+ pars.add_argument("-c",
687
+ "--catch-exceptions",
688
+ metavar="<1/0>",
689
+ action=StoreBooleanAction,
690
+ dest="catch_exceptions",
691
+ help=help_str)
692
+
693
+ # Print free port and exit
694
+ help_str = "Print free port and exit"
695
+ pars.add_argument("--print-port",
696
+ action="store_true",
697
+ dest="print_port",
698
+ help=help_str)
699
+
700
+ # launch only omniNames and Launcher server
701
+ help_str = "launch only omniNames and Launcher server"
702
+ pars.add_argument("--launcher_only",
703
+ action="store_true",
704
+ dest="launcher_only",
705
+ help=help_str)
706
+
707
+ # machine and port where is the Launcher
708
+ help_str = "machine and port where is the Launcher. Usage: "
709
+ help_str += "--launcher=machine:port"
710
+ pars.add_argument("--launcher",
711
+ metavar="<=machine:port>",
712
+ type=str,
713
+ dest="launcher",
714
+ help=help_str)
715
+
716
+ # Do not relink ${HOME}/.omniORB_last.cfg
717
+ help_str = "Do not save current configuration ${HOME}/.omniORB_last.cfg"
718
+ pars.add_argument("--nosave-config",
719
+ action="store_false",
720
+ dest="save_config",
721
+ help=help_str)
722
+
723
+ # Launch with interactive python console. Default: False.
724
+ help_str = "Launch with interactive python console."
725
+ pars.add_argument("--pinter",
726
+ action="store_true",
727
+ dest="pinter",
728
+ help=help_str)
729
+
730
+ # Print Naming service port into a user file. Default: False.
731
+ help_str = "Print Naming Service Port into a user file."
732
+ pars.add_argument("--ns-port-log",
733
+ metavar="<ns_port_log_file>",
734
+ dest="ns_port_log_file",
735
+ help=help_str)
736
+
737
+ # Write/read test script file with help of TestRecorder. Default: False.
738
+ help_str = "Write/read test script file with help of TestRecorder."
739
+ pars.add_argument("--test",
740
+ metavar="<test_script_file>",
741
+ dest="test_script_file",
742
+ help=help_str)
743
+
744
+ # Reproducing test script with help of TestRecorder. Default: False.
745
+ help_str = "Reproducing test script with help of TestRecorder."
746
+ pars.add_argument("--play",
747
+ metavar="<play_script_file>",
748
+ dest="play_script_file",
749
+ help=help_str)
750
+
751
+ # gdb session
752
+ help_str = "Launch session with gdb"
753
+ pars.add_argument("--gdb-session",
754
+ action="store_true",
755
+ dest="gdb_session",
756
+ help=help_str)
757
+
758
+ # ddd session
759
+ help_str = "Launch session with ddd"
760
+ pars.add_argument("--ddd-session",
761
+ action="store_true",
762
+ dest="ddd_session",
763
+ help=help_str)
764
+
765
+
766
+ # valgrind session
767
+ help_str = "Launch session with valgrind $VALGRIND_OPTIONS"
768
+ pars.add_argument("--valgrind-session",
769
+ action="store_true",
770
+ dest="valgrind_session",
771
+ help=help_str)
772
+
773
+ # shutdown-servers. Default: False.
774
+ help_str = "1 to shutdown standalone servers when leaving python interpreter, "
775
+ help_str += "0 to keep the standalone servers as daemon [default]. "
776
+ help_str += "This option is only useful in batchmode "
777
+ help_str += "(terminal mode or without showing desktop)."
778
+ pars.add_argument("-w",
779
+ "--shutdown-servers",
780
+ metavar="<1/0>",
781
+ action=StoreBooleanAction,
782
+ dest="shutdown_servers",
783
+ help=help_str)
784
+
785
+ # foreground. Default: True.
786
+ help_str = "0 and runSalome exits after have launched the gui, "
787
+ help_str += "1 to launch runSalome in foreground mode [default]."
788
+ pars.add_argument("--foreground",
789
+ metavar="<1/0>",
790
+ action=StoreBooleanAction,
791
+ dest="foreground",
792
+ help=help_str)
793
+
794
+ # wake up session
795
+ help_str = "Wake up a previously closed session. "
796
+ help_str += "The session object is found in the naming service pointed by the variable OMNIORB_CONFIG. "
797
+ help_str += "If this variable is not set, the last configuration is taken. "
798
+ pars.add_argument("--wake-up-session",
799
+ action="store_true",
800
+ dest="wake_up_session", default=False,
801
+ help=help_str)
802
+
803
+ # server launch mode
804
+ help_str = "Mode used to launch server processes (daemon or fork)."
805
+ pars.add_argument("--server-launch-mode",
806
+ metavar="<server_launch_mode>",
807
+ choices=["daemon", "fork"],
808
+ dest="server_launch_mode",
809
+ help=help_str)
810
+
811
+ # use port
812
+ help_str = "Preferable port SALOME to be started on. "
813
+ help_str += "If specified port is not busy, SALOME session will start on it; "
814
+ help_str += "otherwise, any available port will be searched and used."
815
+ pars.add_argument("--port",
816
+ metavar="<port>",
817
+ type=int,
818
+ dest="use_port",
819
+ help=help_str)
820
+
821
+ # Language
822
+ help_str = "Force application language. By default, a language specified in "
823
+ help_str += "the user's preferences is used."
824
+ pars.add_argument("-a",
825
+ "--language",
826
+ dest="language",
827
+ help=help_str)
828
+
829
+ # Verbosity
830
+ help_str = "Level of verbosity"
831
+ pars.add_argument("-V",
832
+ "--verbose",
833
+ metavar="<2/1/0>",
834
+ dest="verbosity",
835
+ default="0",
836
+ help=help_str)
837
+
838
+ # On demand
839
+ help_str = "Use installed salome on-demand extensions."
840
+ help_str += "0 to run without salome extensions [default], "
841
+ help_str += "1 to run only installed salome extensions. "
842
+ pars.add_argument("--on-demand",
843
+ dest="on_demand",
844
+ metavar="<0/1>",
845
+ action=StoreBooleanAction,
846
+ default=False,
847
+ help=help_str)
848
+
849
+
850
+ # Positional arguments (hdf file, python file)
851
+ pars.add_argument("arguments", nargs=argparse.REMAINDER)
852
+
853
+ return pars
854
+
855
+ # -----------------------------------------------------------------------------
856
+
857
+ ###
858
+ # Get the environment
859
+ ###
860
+
861
+ # this attribute is obsolete
862
+ args = {}
863
+ #def get_env():
864
+ #args = []
865
+ def get_env(appname=salomeappname, cfgname=salomecfgname, exeName=None, keepEnvironment=True):
866
+ ###
867
+ # Collect launch configuration files:
868
+ # - The environment variable "<appname>Config" (SalomeAppConfig) which can
869
+ # define a list of directories (separated by ':' or ';' symbol) is checked
870
+ # - If the environment variable "<appname>Config" is not set, only
871
+ # ${GUI_ROOT_DIR}/share/salome/resources/gui is inspected
872
+ # - ${GUI_ROOT_DIR}/share/salome/resources/gui directory is always inspected
873
+ # so it is not necessary to put it in the "<appname>Config" variable
874
+ # - The directories which are inspected are checked for files "<appname?salomeappname>.xml"
875
+ # (SalomeApp.xml) which define SALOME configuration
876
+ # - These directories are analyzed beginning from the last one in the list,
877
+ # so the first directory listed in "<appname>Config" environment variable
878
+ # has higher priority: it means that if some configuration options
879
+ # is found in the next analyzed configuration file - it will be replaced
880
+ # - The last configuration file which is parsed is user configuration file
881
+ # situated in the home directory (if it exists):
882
+ # * ~/.config/salome/.<appname>rc[.<version>]" for Linux (e.g. ~/.config/salome/.SalomeApprc.6.4.0)
883
+ # * ~/<appname>.xml[.<version>] for Windows (e.g. ~/SalomeApp.xml.6.4.0)
884
+ # - Command line options have the highest priority and replace options
885
+ # specified in configuration file(s)
886
+ ###
887
+ global args
888
+ config_var = appname+'Config'
889
+
890
+ ############################
891
+ # parse command line options
892
+ pars = CreateOptionParser(exeName=exeName)
893
+ cmd_opts = pars.parse_args(sys.argv[1:])
894
+ ############################
895
+
896
+ # check KERNEL_ROOT_DIR
897
+ kernel_root_dir = os.environ.get("KERNEL_ROOT_DIR", None)
898
+ if kernel_root_dir is None and not cmd_opts.on_demand:
899
+ print("""
900
+ For each SALOME module, the environment variable <moduleN>_ROOT_DIR must be set.
901
+ KERNEL_ROOT_DIR is mandatory.
902
+ """)
903
+ sys.exit(1)
904
+
905
+ # Process --print-port option
906
+ if cmd_opts.print_port:
907
+ from .searchFreePort import searchFreePort
908
+ searchFreePort({})
909
+ print("port:%s"%(os.environ['NSPORT']))
910
+
911
+ try:
912
+ from . import PortManager
913
+ PortManager.releasePort(os.environ['NSPORT'])
914
+ except ImportError:
915
+ pass
916
+
917
+ sys.exit(0)
918
+ pass
919
+
920
+ # set resources variable SalomeAppConfig if it is not set yet
921
+ dirs = []
922
+ if os.getenv(config_var):
923
+ if sys.platform == 'win32':
924
+ dirs += re.split(os.pathsep, os.getenv(config_var))
925
+ else:
926
+ dirs += re.split('[;|:]', os.getenv(config_var))
927
+
928
+ if not keepEnvironment and not cmd_opts.on_demand:
929
+ if os.getenv("GUI_ROOT_DIR") and os.path.isdir(os.getenv("GUI_ROOT_DIR")):
930
+ gui_resources_dir = os.path.join(os.getenv("GUI_ROOT_DIR"),'share','salome','resources','gui')
931
+ if os.path.isdir(gui_resources_dir):
932
+ dirs.append(gui_resources_dir)
933
+ pass
934
+ else:
935
+ kernel_resources_dir = os.path.join(os.getenv("KERNEL_ROOT_DIR"),'bin','salome','appliskel')
936
+ if os.getenv("KERNEL_ROOT_DIR") and os.path.isdir( kernel_resources_dir ):
937
+ dirs.append(kernel_resources_dir)
938
+ pass
939
+ os.environ[config_var] = os.pathsep.join(dirs)
940
+
941
+ dirs.reverse() # reverse order, like in "path" variable - FILO-style processing
942
+
943
+ try:
944
+ dirs.remove('') # to remove empty dirs if the variable terminate by ":" or if there are "::" inside
945
+ except Exception:
946
+ pass
947
+
948
+ _opts = {} # associative array of options to be filled
949
+
950
+ # parse SalomeApp.xml files in directories specified by SalomeAppConfig env variable
951
+ for directory in dirs:
952
+ filename = os.path.join(directory, appname + '.xml')
953
+ if not os.path.exists(filename):
954
+ if verbose(): print("Configure parser: Warning : can not find configuration file %s" % filename)
955
+ else:
956
+ try:
957
+ p = xml_parser(filename, _opts, [])
958
+ _opts = p.opts
959
+ except Exception:
960
+ if verbose(): print("Configure parser: Error : can not read configuration file %s" % filename)
961
+ pass
962
+
963
+ # parse user configuration file
964
+ # It can be set via --resources=<file> command line option
965
+ # or is given from default location (see defaultUserFile() function)
966
+ # If user file for the current version is not found the nearest to it is used
967
+ user_config = cmd_opts.resources
968
+ if not user_config:
969
+ user_config = userFile(appname, cfgname)
970
+ if verbose(): print("Configure parser: user configuration file is", user_config)
971
+ if not user_config or not os.path.exists(user_config):
972
+ if verbose(): print("Configure parser: Warning : can not find user configuration file")
973
+ else:
974
+ try:
975
+ p = xml_parser(user_config, _opts, [])
976
+ _opts = p.opts
977
+ except Exception:
978
+ if verbose(): print('Configure parser: Error : can not read user configuration file')
979
+ user_config = ""
980
+
981
+ args = _opts
982
+
983
+ args['user_config'] = user_config
984
+ # print("User Configuration file: ", args['user_config'])
985
+
986
+ # set default values for options which are NOT set in config files
987
+ for aKey in listKeys:
988
+ if aKey not in args:
989
+ args[aKey] = []
990
+
991
+ for aKey in boolKeys:
992
+ if aKey not in args:
993
+ args[aKey] = 0
994
+
995
+ if args[file_nam]:
996
+ afile = args[file_nam]
997
+ args[file_nam] = [afile]
998
+
999
+ args[appname_nam] = appname
1000
+
1001
+ # get the port number
1002
+ my_port = getPortNumber()
1003
+
1004
+ args[port_nam] = my_port
1005
+
1006
+ ####################################################
1007
+ # apply command-line options to the arguments
1008
+ # each option given in command line overrides the option from xml config file
1009
+ #
1010
+ # Options: gui, desktop, log_file, resources,
1011
+ # xterm, modules, embedded, standalone,
1012
+ # portkill, killall, interp, splash,
1013
+ # catch_exceptions, pinter
1014
+
1015
+ # GUI/Terminal, Desktop, Splash, STUDY_HDF
1016
+ args["session_gui"] = False
1017
+ args[batch_nam] = False
1018
+ args["study_hdf"] = None
1019
+ args["gui_log_file"] = None
1020
+ if cmd_opts.gui is not None:
1021
+ args[gui_nam] = cmd_opts.gui
1022
+ if cmd_opts.batch is not None:
1023
+ args[batch_nam] = True
1024
+
1025
+ if ( not os.getenv("GUI_ROOT_DIR") or not os.path.isdir(os.getenv("GUI_ROOT_DIR")) ) and not cmd_opts.on_demand:
1026
+ args[gui_nam] = False
1027
+
1028
+ if args[gui_nam]:
1029
+ args["session_gui"] = True
1030
+ if cmd_opts.desktop is not None:
1031
+ args["session_gui"] = cmd_opts.desktop
1032
+ args[splash_nam] = cmd_opts.desktop
1033
+ if args["session_gui"]:
1034
+ if cmd_opts.splash is not None:
1035
+ args[splash_nam] = cmd_opts.splash
1036
+ else:
1037
+ args["session_gui"] = False
1038
+ args[splash_nam] = False
1039
+
1040
+ # Logger/Log file
1041
+ if cmd_opts.log_file is not None:
1042
+ if cmd_opts.log_file == 'CORBA':
1043
+ args[logger_nam] = True
1044
+ else:
1045
+ args[file_nam] = [cmd_opts.log_file]
1046
+
1047
+ # GUI Log file
1048
+ if os.environ.get("GUI_LOG_FILE") is not None:
1049
+ args["gui_log_file"] = os.environ["GUI_LOG_FILE"]
1050
+
1051
+ if cmd_opts.gui_log_file is not None:
1052
+ args["gui_log_file"] = cmd_opts.gui_log_file
1053
+
1054
+ # Naming Service port log file
1055
+ if cmd_opts.ns_port_log_file is not None:
1056
+ args["ns_port_log_file"] = cmd_opts.ns_port_log_file
1057
+
1058
+ # Study files
1059
+ for arg in cmd_opts.arguments:
1060
+ file_extension = os.path.splitext(arg)[-1]
1061
+ if file_extension == ".hdf" and not args["study_hdf"]:
1062
+ args["study_hdf"] = arg
1063
+
1064
+ # Python scripts
1065
+ from .salomeContextUtils import getScriptsAndArgs, ScriptAndArgs
1066
+ args[script_nam] = getScriptsAndArgs(cmd_opts.arguments)
1067
+ if args[gui_nam] and args["session_gui"]:
1068
+ new_args = []
1069
+ for sa_obj in args[script_nam]: # args[script_nam] is a list of ScriptAndArgs objects
1070
+ script = re.sub(r'^python. *\s+', r'', sa_obj.script)
1071
+ new_args.append(ScriptAndArgs(script=script, args=sa_obj.args, out=sa_obj.out))
1072
+ #
1073
+ args[script_nam] = new_args
1074
+
1075
+ args[verbosity_nam] = cmd_opts.verbosity
1076
+ args[on_demand_nam] = cmd_opts.on_demand
1077
+
1078
+ # xterm
1079
+ if cmd_opts.xterm is not None:
1080
+ args[xterm_nam] = cmd_opts.xterm
1081
+
1082
+ # Modules
1083
+ if cmd_opts.modules is not None:
1084
+ args[modules_nam] = []
1085
+ listlist = cmd_opts.modules
1086
+ for listi in listlist:
1087
+ args[modules_nam] += re.split( "[:;,]", listi)
1088
+ else:
1089
+ # if --modules (-m) command line option is not given
1090
+ # try SALOME_MODULES environment variable
1091
+ if os.getenv( "SALOME_MODULES" ):
1092
+ args[modules_nam] = re.split( "[:;,]", os.getenv( "SALOME_MODULES" ) )
1093
+ pass
1094
+
1095
+ # Embedded
1096
+ if cmd_opts.embedded is not None:
1097
+ args[embedded_nam] = [a for a in re.split( "[:;,]", cmd_opts.embedded ) if a.strip()]
1098
+
1099
+ # Standalone
1100
+ if cmd_opts.standalone is not None:
1101
+ args[standalone_nam] = [a for a in re.split( "[:;,]", cmd_opts.standalone ) if a.strip()]
1102
+
1103
+ # Normalize the '--standalone' and '--embedded' parameters
1104
+ standalone, embedded = process_containers_params( args.get( standalone_nam ),
1105
+ args.get( embedded_nam ) )
1106
+ if standalone is not None:
1107
+ args[ standalone_nam ] = standalone
1108
+ if embedded is not None:
1109
+ args[ embedded_nam ] = embedded
1110
+
1111
+ # Kill
1112
+ if cmd_opts.portkill is not None: args[portkill_nam] = cmd_opts.portkill
1113
+ if cmd_opts.killall is not None: args[killall_nam] = cmd_opts.killall
1114
+
1115
+ # Interpreter
1116
+ if cmd_opts.interp is not None:
1117
+ args[interp_nam] = cmd_opts.interp
1118
+
1119
+ # Exceptions
1120
+ if cmd_opts.catch_exceptions is not None:
1121
+ args[except_nam] = not cmd_opts.catch_exceptions
1122
+
1123
+ # Relink config file
1124
+ if cmd_opts.save_config is not None:
1125
+ args['save_config'] = cmd_opts.save_config
1126
+
1127
+ # Interactive python console
1128
+ if cmd_opts.pinter is not None:
1129
+ args[pinter_nam] = cmd_opts.pinter
1130
+
1131
+ # Gdb session in xterm
1132
+ if cmd_opts.gdb_session is not None:
1133
+ args[gdb_session_nam] = cmd_opts.gdb_session
1134
+
1135
+ # Ddd session in xterm
1136
+ if cmd_opts.ddd_session is not None:
1137
+ args[ddd_session_nam] = cmd_opts.ddd_session
1138
+
1139
+ # valgrind session
1140
+ if cmd_opts.valgrind_session is not None:
1141
+ args[valgrind_session_nam] = cmd_opts.valgrind_session
1142
+
1143
+ # Shutdown servers
1144
+ if cmd_opts.shutdown_servers is None:
1145
+ args[shutdown_servers_nam] = 0
1146
+ else:
1147
+ args[shutdown_servers_nam] = cmd_opts.shutdown_servers
1148
+ pass
1149
+
1150
+ # Launcher only
1151
+ if cmd_opts.launcher_only is not None:
1152
+ args[launcher_only_nam] = cmd_opts.launcher_only
1153
+
1154
+ # machine and port where is the Launcher
1155
+ if cmd_opts.launcher is not None:
1156
+ args[launcher_nam] = cmd_opts.launcher
1157
+
1158
+ # Foreground
1159
+ if cmd_opts.foreground is None:
1160
+ args[foreground_nam] = 1
1161
+ else:
1162
+ args[foreground_nam] = cmd_opts.foreground
1163
+ pass
1164
+
1165
+ # wake up session
1166
+ if cmd_opts.wake_up_session is not None:
1167
+ args[wake_up_session_nam] = cmd_opts.wake_up_session
1168
+
1169
+ # disable signals handling
1170
+ if args[except_nam] == 1:
1171
+ os.environ["NOT_INTERCEPT_SIGNALS"] = "1"
1172
+ pass
1173
+
1174
+ # now modify SalomeAppConfig environment variable
1175
+ # to take into account the SALOME modules
1176
+ if not args[on_demand_nam]:
1177
+ if os.getenv(config_var):
1178
+ if os.sys.platform == 'win32':
1179
+ dirs = re.split('[;]', os.environ[config_var] )
1180
+ else:
1181
+ dirs = re.split('[;|:]', os.environ[config_var] )
1182
+
1183
+ for module in args[modules_nam]:
1184
+ if module not in ["KERNEL", "GUI", ""] and os.getenv("{0}_ROOT_DIR".format(module)):
1185
+ d1 = os.path.join(os.getenv("{0}_ROOT_DIR".format(module)),"share","salome","resources",module.lower())
1186
+ d2 = os.path.join(os.getenv("{0}_ROOT_DIR".format(module)),"share","salome","resources")
1187
+ #if os.path.exists( "%s/%s.xml"%(d1, appname) ):
1188
+ if os.path.exists( os.path.join(d1,"{0}.xml".format(salomeappname)) ):
1189
+ dirs.append( d1 )
1190
+ #elif os.path.exists( "%s/%s.xml"%(d2, appname) ):
1191
+ elif os.path.exists( os.path.join(d2,"{0}.xml".format(salomeappname)) ):
1192
+ dirs.append( d2 )
1193
+ else:
1194
+ # print("* '"+m+"' should be deleted from ",args[modules_nam])
1195
+ pass
1196
+
1197
+ # Test
1198
+ if cmd_opts.test_script_file is not None:
1199
+ args[test_nam] = []
1200
+ filename = cmd_opts.test_script_file
1201
+ args[test_nam] += re.split( "[:;,]", filename )
1202
+
1203
+ # Play
1204
+ if cmd_opts.play_script_file is not None:
1205
+ args[play_nam] = []
1206
+ filename = cmd_opts.play_script_file
1207
+ args[play_nam] += re.split( "[:;,]", filename )
1208
+
1209
+ # Server launch command
1210
+ if cmd_opts.server_launch_mode is not None:
1211
+ args["server_launch_mode"] = cmd_opts.server_launch_mode
1212
+
1213
+ # Server launch command
1214
+ if cmd_opts.use_port is not None:
1215
+ min_port = 2810
1216
+ max_port = min_port + 100
1217
+ if cmd_opts.use_port not in range(min_port, max_port+1):
1218
+ print("Error: port number should be in range [%d, %d])" % (min_port, max_port))
1219
+ sys.exit(1)
1220
+ args[useport_nam] = cmd_opts.use_port
1221
+
1222
+ if cmd_opts.language is not None:
1223
+ langs = args["language_languages"] if "language_languages" in args else []
1224
+ if cmd_opts.language not in langs:
1225
+ print("Error: unsupported language: %s" % cmd_opts.language)
1226
+ sys.exit(1)
1227
+ args[lang_nam] = cmd_opts.language
1228
+
1229
+ # return arguments
1230
+ if not keepEnvironment:
1231
+ os.environ[config_var] = os.pathsep.join(dirs)
1232
+
1233
+ # print("Args: ", args)
1234
+ return args