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,341 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: iso-8859-1 -*-
3
+ # Copyright (C) 2022-2024 CEA, EDF, OPEN CASCADE
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
+ #
19
+ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20
+ #
21
+
22
+ ## @package runSalome
23
+ # \brief Module that provides services to launch SALOME
24
+ #
25
+
26
+ import sys, os, string, glob, time, pickle, re
27
+ import setenv
28
+ from .server import process_id, Server
29
+ import json
30
+ import subprocess
31
+ from salome.kernel.salomeContextUtils import ScriptAndArgsObjectEncoder
32
+ import runSalomeNoServer
33
+ from salome.kernel import runSalomeCommon
34
+ import platform
35
+ from salome.kernel.launchConfigureParser import verbosity_nam, on_demand_nam
36
+ import logging
37
+ logger = logging.getLogger()
38
+
39
+ # -----------------------------------------------------------------------------
40
+
41
+ from killSalome import killAllPorts
42
+
43
+ def kill_salome(args):
44
+ """
45
+ Kill servers from previous SALOME executions, if needed;
46
+ depending on args 'killall' or 'portkill', kill all executions,
47
+ or only execution on the same CORBA port
48
+ """
49
+
50
+ if args['killall']:
51
+ killAllPorts()
52
+ #
53
+ # -----------------------------------------------------------------------------
54
+
55
+ def startGUI(clt):
56
+ """Salome Session Graphic User Interface activation"""
57
+ from . import Engines
58
+ from . import SALOME
59
+ from . import SALOMEDS
60
+ from . import SALOME_ModuleCatalog
61
+ from . import SALOME_Session_idl
62
+ session=clt.waitNS("/Kernel/Session",SALOME.Session)
63
+ session.GetInterface()
64
+
65
+ # -----------------------------------------------------------------------------
66
+
67
+ def startSalome(args, modules_list, modules_root_dir):
68
+ """Launch all SALOME servers requested by args"""
69
+ init_time = os.times()
70
+
71
+ logger.debug("startSalome : {} ".format(args))
72
+
73
+ ior_fakens_filename = None
74
+
75
+ # Launch Session Server (to show splash ASAP)
76
+ #
77
+
78
+ if args["gui"] and not args['launcher_only']:
79
+ mySessionServ = runSalomeNoServer.NoSessionServer(args,args['modules'],modules_root_dir)
80
+ mySessionServ.setpath(modules_list,modules_root_dir)
81
+ mySessionServ.run()
82
+ ior_fakens_filename = mySessionServ.iorfakens
83
+ logger.debug("Rendez-vous file for to retrieve IOR of session is \"{}\"".format(ior_fakens_filename))
84
+
85
+ end_time = os.times()
86
+
87
+ #
88
+ # Wait until Session Server is registered in naming service
89
+ #
90
+ logger.debug("Start SALOME, elapsed time : %5.1f seconds"% (end_time[4] - init_time[4]))
91
+
92
+ #
93
+ # additional external python interpreters
94
+ #
95
+ nbaddi=0
96
+
97
+ try:
98
+ if 'interp' in args:
99
+ nbaddi = args['interp']
100
+ except Exception:
101
+ import traceback
102
+ traceback.print_exc()
103
+ logger.error("-------------------------------------------------------------")
104
+ logger.error("-- to get an external python interpreter:runSalome --interp=1")
105
+ logger.error("-------------------------------------------------------------")
106
+
107
+ logger.debug("additional external python interpreters: {}".format(nbaddi))
108
+ if nbaddi:
109
+ for i in range(nbaddi):
110
+ anInterp=runSalomeCommon.InterpServer(args)
111
+ anInterp.run()
112
+
113
+ # set PYTHONINSPECT variable (python interpreter in interactive mode)
114
+ if args['pinter']:
115
+ os.environ["PYTHONINSPECT"]="1"
116
+ try:
117
+ import readline
118
+ except ImportError:
119
+ pass
120
+
121
+ return ior_fakens_filename
122
+
123
+ # -----------------------------------------------------------------------------
124
+
125
+ def useSalome(args, modules_list, modules_root_dir):
126
+ """
127
+ Launch all SALOME servers requested by args,
128
+ save list of process, give info to user,
129
+ show registered objects in Naming Service.
130
+ """
131
+ global process_id
132
+ ior_fakens_filename = None
133
+ try:
134
+ ior_fakens_filename = startSalome(args, modules_list, modules_root_dir)
135
+ except Exception:
136
+ import traceback
137
+ traceback.print_exc()
138
+ logger.error("--- Error during Salome launch ---")
139
+
140
+ # print(process_id)
141
+
142
+ from addToKillList import addToKillList
143
+ from killSalomeWithPort import getPiDict
144
+
145
+ filedict = getPiDict(args['port'])
146
+ for pid, cmd in list(process_id.items()):
147
+ addToKillList(pid, cmd, args['port'])
148
+ pass
149
+
150
+ logger.debug("""
151
+ Saving of the dictionary of Salome processes in %s
152
+ To kill SALOME processes from a console (kill all sessions from all ports):
153
+ python killSalome.py
154
+ To kill SALOME from the present interpreter, if it is not closed :
155
+ killLocalPort() --> kill this session
156
+ (use CORBA port from args of runSalome)
157
+ givenPortKill(port) --> kill a specific session with given CORBA port
158
+ killAllPorts() --> kill all sessions
159
+
160
+ runSalome, with --killall option, starts with killing
161
+ the processes resulting from the previous execution.
162
+ """%filedict)
163
+
164
+ return ior_fakens_filename
165
+
166
+ def execScript(script_path):
167
+ print('executing', script_path)
168
+ sys.path.insert(0, os.path.realpath(os.path.dirname(script_path)))
169
+ exec(compile(open(script_path).read(), script_path, 'exec'),globals())
170
+ del sys.path[0]
171
+
172
+ # -----------------------------------------------------------------------------
173
+
174
+ def main(exeName=None):
175
+ """Salome launch as a main application"""
176
+ keep_env = not os.getenv('SALOME_PLEASE_SETUP_ENVIRONMENT_AS_BEFORE')
177
+ args, modules_list, modules_root_dir = setenv.get_config(exeName=exeName, keepEnvironment=keep_env)
178
+ runSalomeCommon.setVerbose(args[verbosity_nam])
179
+
180
+ kill_salome(args)
181
+ # --
182
+
183
+ # Setup extension's env in salome on demand case
184
+ if args[on_demand_nam]:
185
+ import runSalomeOnDemand
186
+ runSalomeOnDemand.set_ext_env()
187
+ # Reset up module_list and modules_root_dir, if we dont want to define SalomeAppConfig on salome.py.
188
+ # We must remove the "else" on "if os.sys.platform == 'win32':" in launcheConfigureParser.py too.
189
+ args, _, __ = setenv.get_config(exeName=exeName, keepEnvironment=keep_env)
190
+
191
+ setenv.set_env(args, modules_list, modules_root_dir, keepEnvironment=keep_env)
192
+ ior_fakens_filename = useSalome(args, modules_list, modules_root_dir)
193
+ # Management of -t <script.py>
194
+ toimport = []
195
+ env = os.environ
196
+ if 'gui' in args and 'session_gui' in args:
197
+ if not args['gui'] or not args['session_gui']:
198
+ if 'study_hdf' in args:
199
+ toopen = args['study_hdf']
200
+ if toopen:
201
+ os.environ["PATH_TO_STUDY_FILE_TO_INITIATE"] = toopen
202
+ logger.debug("An input Study has been specified {} -> pass it with PATH_TO_STUDY_FILE_TO_INITIATE env var".format(toopen))
203
+ if 'pyscript' in args:
204
+ toimport = args['pyscript']
205
+ from salome.kernel.salomeContextUtils import formatScriptsAndArgs
206
+ from salome.kernel.addToKillList_impl import addToKillList
207
+ command = formatScriptsAndArgs(toimport, escapeSpaces=True)
208
+ if command:
209
+ logger.debug("Launching following shell command : {}".format(str(command)))
210
+ proc = subprocess.Popen(command, shell=True, env = env)
211
+ addToKillList(proc.pid, command)
212
+ res = proc.wait()
213
+ if res: sys.exit(1)
214
+ return args, ior_fakens_filename
215
+
216
+ # -----------------------------------------------------------------------------
217
+
218
+ def foreGround(args, ior_fakens_filename):
219
+ # --
220
+ import os
221
+ gui_detected = False
222
+ dt = 0.1
223
+ nbtot = 200
224
+ nb = 0
225
+ if ior_fakens_filename is None:
226
+ logger.warn("No file set to host IOR of the fake naming server")
227
+ return
228
+ if not os.path.exists(ior_fakens_filename):
229
+ logger.warn("No file {} set to host IOR of the fake naming server does not exit !")
230
+ return
231
+ import CORBA
232
+ #import Engines
233
+ from . import SALOME
234
+ from time import sleep
235
+ orb = CORBA.ORB_init([''], CORBA.ORB_ID)
236
+ ior_fakens = None
237
+ session = None
238
+ while True:
239
+ try:
240
+ ior_fakens = orb.string_to_object(open(ior_fakens_filename).read())
241
+ session = orb.string_to_object(ior_fakens.Resolve("/Kernel/Session").decode())
242
+ except Exception:
243
+ pass
244
+ if ( session is not None ) and (not CORBA.is_nil(session)):
245
+ try:
246
+ os.remove(ior_fakens_filename)
247
+ logger.debug("File {} has been removed".format(ior_fakens_filename))
248
+ except:
249
+ pass
250
+ logger.debug("Session in child process has been found ! yeah ! {}".format(str(session)))
251
+ break
252
+ sleep(dt)
253
+ nb += 1
254
+ logger.debug("Unfortunately Session not found into {} : Sleep and retry. {}/{}".format(ior_fakens_filename,nb,nbtot))
255
+ if nb == nbtot:
256
+ break
257
+
258
+ if session is None:
259
+ logger.debug("Couldn't find /Kernel/Session in the child process. Return.")
260
+ return
261
+
262
+ nb = 0
263
+ # --
264
+ # Wait until gui is arrived
265
+ # tmax = nbtot * dt
266
+ # --
267
+ session_pid = None
268
+ while 1:
269
+ try:
270
+ status = session.GetStatSession()
271
+ gui_detected = status.activeGUI
272
+ session_pid = session.getPID()
273
+ logger.debug("Process of the session under monitoring {}".format(session_pid))
274
+ except Exception:
275
+ pass
276
+ if gui_detected:
277
+ break
278
+ sleep(dt)
279
+ nb += 1
280
+ if nb == nbtot:
281
+ break
282
+ pass
283
+ # --
284
+ if not gui_detected:
285
+ logger.debug("Couldn't find active GUI in the current session. Return.")
286
+ return
287
+ # --
288
+ from .salome_utils import getPortNumber
289
+ port = getPortNumber()
290
+ # --
291
+ dt = 1.0
292
+ try:
293
+ while 1:
294
+ try:
295
+ status = session.GetStatSession()
296
+ assert status.activeGUI
297
+ except Exception:
298
+ logger.debug("Process of the session under monitoring {} has vanished !".format(session_pid))
299
+ break
300
+ from time import sleep
301
+ sleep(dt)
302
+ pass
303
+ pass
304
+ except KeyboardInterrupt:
305
+ logger.debug("Keyboard requested : killing all process attached to port {}".format(port))
306
+ finally:
307
+ from killSalomeWithPort import killProcessSSL
308
+ killProcessSSL(port,[session_pid])
309
+ return
310
+ #
311
+
312
+ def runSalome():
313
+ args, ior_fakens_filename = main()
314
+ # --
315
+ test = args['gui'] and args['session_gui']
316
+ test = test and not args[on_demand_nam]
317
+ test = test or args['wake_up_session']
318
+ # --
319
+ # The next test covers the --pinter option or if var PYTHONINSPECT is set
320
+ # --
321
+ test = test and not os.environ.get('PYTHONINSPECT')
322
+ # --
323
+ # The next test covers the python -i $KERNEL_ROOT_DIR/bin/salome/runSalome.py case
324
+ # --
325
+ try:
326
+ from ctypes import POINTER, c_int, cast, pythonapi
327
+ iflag_ptr = cast(pythonapi.Py_InteractiveFlag, POINTER(c_int))
328
+ test = test and not iflag_ptr.contents.value
329
+ except Exception:
330
+ pass
331
+ # --
332
+ # test = test and os.getenv("SALOME_TEST_MODE", "0") != "1"
333
+ test = test and args['foreground']
334
+ # --
335
+ if test:
336
+ from time import sleep
337
+ sleep(3.0)
338
+ foreGround(args, ior_fakens_filename)
339
+ pass
340
+ pass
341
+ #
@@ -0,0 +1,360 @@
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 os
25
+ import sys
26
+ from optparse import OptionParser
27
+ from .NSparam_impl import getNSparams
28
+ import socket
29
+ import subprocess
30
+ import re
31
+ from pathlib import Path
32
+ from .salomeContextUtils import getScriptsAndArgs, formatScriptsAndArgs, getShortAndExtraArgs
33
+ from .salome_utils import getUserName, getShortHostName
34
+
35
+ # Use to display newlines (\n) in epilog
36
+ class MyParser(OptionParser):
37
+ def format_epilog(self, formatter):
38
+ return self.epilog
39
+ #
40
+
41
+ class SessionParameters:
42
+ def __init__(self, mode, port, machine, user, directory):
43
+ self.mode = mode
44
+ self.port = port
45
+ self.machine = machine
46
+ self.user = user
47
+ self.directory = directory
48
+ #
49
+ def __repr__(self):
50
+ msg = "\n# Session Parameters:\n"
51
+ msg += " * mode: %s\n"%self.mode
52
+ msg += " * port: %s\n"%self.port
53
+ msg += " * machine: %s\n"%self.machine
54
+ msg += " * user: %s\n"%self.user
55
+ msg += " * directory: %s\n"%self.directory
56
+ return msg
57
+ #
58
+ #
59
+
60
+ def configureSession(args=None, exe=None):
61
+ if args is None:
62
+ args = []
63
+ if exe:
64
+ usage = "Usage: %s [options] [command] [-- <extra>]"%exe
65
+ else:
66
+ usage = "Usage: %prog [options] [command] [-- <extra>]"
67
+ epilog = """\n
68
+ If command is not given a shell is opened; else execute the given command.\n
69
+ * Command may be an executable script or program, either identified by its
70
+ full path or located in a directory pointed by a system variable (e.g.
71
+ PATH).\n
72
+ * Command may also be a series of Python scripts with arguments:
73
+ [PYTHON_FILE [args] [PYTHON_FILE [args]...]]
74
+ Python file arguments, if any, must be comma-separated (without blank
75
+ characters) and prefixed by "args:" keyword (without quotes).
76
+ For example:
77
+ salome shell hello.py add.py args:1,2 hello.py args:you
78
+ will successively say hello, add 1+2, and say hello to you.\n
79
+ The double dash (--) syntax indicates an extra command to be run "as is". It
80
+ allows calling a extern program or system command with options and
81
+ arguments, using the syntax: -- <program> [options] [arguments].
82
+ For example:
83
+ salome shell -- ls -l *.py
84
+ salome shell -- python -tt hello.py
85
+ \n
86
+ If PORT and MACHINE are not given, try to connect to the last active session
87
+ on the local machine.
88
+ If PORT and MACHINE are given, try to connect to the remote session associated
89
+ with PORT on MACHINE.
90
+ If MACHINE is not given, try to connect to the session associated to PORT on
91
+ the local machine.
92
+ If PORT is not given, try to connect to the remote session associated to port
93
+ 2810 on MACHINE.\n
94
+ If MACHINE is remote, the following options MUST be provided:
95
+ * DIRECTORY: The full path to the salome command on remote machine.
96
+ * USER: The user on the computer to connect to.\n
97
+ In case of remote call, syntax "out:res1,res2,..." can be used to get results
98
+ from remote machine.
99
+ For example:
100
+ salome shell -m remotemachine -p 2810 -u myself -d /full/path/to/salome
101
+ concatenate.py args:file1.txt,file2.txt out:result.txt
102
+ User "myself" connects to remotemachine to run the script concatenate.py in
103
+ a SALOME session on port 2810; the script takes two input parameters and
104
+ produces one result file.\n
105
+ """
106
+ parser = MyParser(usage=usage, epilog=epilog)
107
+ parser.add_option("-p", "--port", metavar="<port>", default=0,
108
+ action="store", type="string", dest="port",
109
+ help="The port to connect to."
110
+ )
111
+ parser.add_option("-m", "--machine", metavar="<machine>", default=0,
112
+ action="store", type="string", dest="host",
113
+ help="The machine to connect to."
114
+ )
115
+ parser.add_option('-d', '--directory', dest="directory", default=None,
116
+ help="[Remote mode] The full path to the salome command on remote machine."
117
+ )
118
+ parser.add_option('-u', '--user', dest="user", default=None,
119
+ help="[Remote mode] The user on the computer to connect to."
120
+ )
121
+
122
+ parser.add_option('-l', '--launcher', dest="launcher", default=None,
123
+ help="[Remote mode] The machine and the port to connect to."
124
+ )
125
+
126
+ short_args, extra_args = getShortAndExtraArgs(args)
127
+ try:
128
+ (options, args) = parser.parse_args(short_args)
129
+ except Exception as e:
130
+ print(e)
131
+ return None, []
132
+
133
+ port = options.port
134
+ host = options.host
135
+ launcher = options.launcher
136
+ if launcher is not None:
137
+ pos = launcher.find(":")
138
+ if pos != -1:
139
+ host = launcher[0:pos]
140
+ port = launcher[pos+1:]
141
+
142
+ # :GLITCH: this code defines specific environment variables (OMNIORB_CONFIG, NSPORT,
143
+ # NSHOST) which are later used by other modules. Working, but not really "safe"...
144
+ if not port:
145
+ if not host:
146
+ # neither MACHINE nor PORT are given
147
+ # --- set omniORB configuration to current session if any
148
+ omniorbUserPath = os.environ['OMNIORB_USER_PATH']
149
+ fileOmniConfig = omniorbUserPath + '/.omniORB_' + getUserName() + '_last.cfg'
150
+ if os.path.isfile(fileOmniConfig):
151
+ os.environ['OMNIORB_CONFIG'] = fileOmniConfig
152
+ # --- set environment variables for port and hostname of NamingService
153
+ host, port = getNSparams()
154
+ try:
155
+ # keep short name for host, for a correct comparison with getShortHostName() later
156
+ host=host.split('.')[0]
157
+ except Exception:
158
+ pass
159
+ else:
160
+ # No running session
161
+ host = "no_host"
162
+ port = "no_port"
163
+ else:
164
+ # only MACHINE is given
165
+ port = '2810'
166
+ _writeConfigFile(port, host)
167
+ #
168
+ else:
169
+ if not host:
170
+ # only PORT is given
171
+ host = getShortHostName()
172
+ # both MACHINE and PORT are given
173
+ _writeConfigFile(port, host)
174
+ #
175
+ os.environ['NSPORT'] = port
176
+ os.environ['NSHOST'] = host
177
+
178
+ # determine running mode, that is either 'local' or 'remote'
179
+ here = getShortHostName()
180
+ mode = "local"
181
+ if host != here and host != "localhost" and host != "no_host" and launcher is None:
182
+ mode="remote"
183
+ pass
184
+ params = SessionParameters(mode, port, host, options.user, options.directory)
185
+ return params, args+extra_args
186
+ #
187
+
188
+ # --- set the OMNIORB_CONFIG file and environment relative to this run of SALOME
189
+ def _writeConfigFile(port, host):
190
+ path = os.environ['OMNIORB_USER_PATH']
191
+ kwargs = {'with_username' : getUserName()}
192
+
193
+ from ORBConfigFile import writeORBConfigFile
194
+ [ filename, msgSize ] = writeORBConfigFile(path, host, port, kwargs)
195
+
196
+ os.environ['OMNIORB_CONFIG'] = filename
197
+ #
198
+
199
+ # command looks like a Bash command-line:
200
+ # script1.py [args] ; script2.py [args] ; ...
201
+ def __runLocalSession(command):
202
+ if command:
203
+ sep = ";"
204
+ if sys.platform == "win32":
205
+ sep= "&"
206
+ command = command.split(sep)
207
+ outmsg = []
208
+ errmsg = []
209
+ for cmd in command:
210
+ single_cmd = cmd.strip().split(' ')
211
+ any_error = False
212
+ error_code = 1
213
+ try:
214
+ proc = subprocess.Popen(single_cmd)
215
+ (stdoutdata, stderrdata) = proc.communicate() # Wait for process to terminate
216
+ if stdoutdata:
217
+ outmsg.append(stdoutdata)
218
+ if stderrdata:
219
+ errmsg.append(stderrdata)
220
+
221
+ if proc.returncode != 0:
222
+ any_error = True
223
+ error_code = proc.returncode
224
+ except Exception:
225
+ any_error = True
226
+ pass
227
+
228
+ if any_error:
229
+ errmsg.append("Error raised when executing command: %s\n"%cmd)
230
+ if outmsg:
231
+ sys.stdout.write("".join(outmsg))
232
+ if errmsg:
233
+ sys.stderr.write("".join(errmsg))
234
+ sys.exit(error_code)
235
+
236
+ return 0
237
+ else:
238
+ absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH','')
239
+ if sys.platform == "win32":
240
+ cmd = ["cmd", "/K", "set PROMPT=[SALOME] $P$G"]
241
+ else:
242
+ bashrc = Path( absoluteAppliPath ) / "bin" / "salome" / "appli" / ".bashrc"
243
+ cmd = ["/bin/bash", "--rcfile", bashrc.as_posix() ]
244
+ proc = subprocess.Popen(cmd, shell=False, close_fds=True)
245
+ proc.communicate()
246
+ return proc.returncode
247
+ #
248
+
249
+ def __copyFiles(user, machine, script, infiles, outfiles):
250
+ """Modify script, copy files to remote computer and return lists of copied files."""
251
+
252
+ namescript = os.path.basename(script)
253
+ import getpass
254
+ logname = getpass.getuser()
255
+ tmp_script = "/tmp/%s_%s_%s" % (logname, os.getpid(), namescript)
256
+ with open(script, 'r') as fscript:
257
+ script_text = fscript.read()
258
+
259
+ list_infiles = []
260
+ list_outfiles = []
261
+ n = 0
262
+ for infile in infiles:
263
+ # generate a temporary file name
264
+ namefile = os.path.basename(infile)
265
+ tmp_file = "/tmp/%s_%s_i%s_%s" % (logname, os.getpid(), n, namefile)
266
+
267
+ # modify the salome script
268
+ script_text = re.sub(infile, tmp_file, script_text)
269
+
270
+ # copy the infile to the remote server
271
+ cmd = "scp %s %s@%s:%s" % (infile, user, machine, tmp_file)
272
+ print("[ SCP ]", cmd)
273
+ os.system(cmd)
274
+
275
+ list_infiles.append(tmp_file)
276
+ n = n + 1
277
+ #
278
+ n = 0
279
+ for outfile in outfiles:
280
+ # generate a temporary file name
281
+ namefile = os.path.basename(outfile)
282
+ tmp_file = "/tmp/%s_%s_o%s_%s" % (logname, os.getpid(), n, namefile)
283
+
284
+ # modify the salome script
285
+ script_text = re.sub(outfile, tmp_file, script_text)
286
+
287
+ list_outfiles.append(tmp_file)
288
+ n = n + 1
289
+ #
290
+
291
+ with open(tmp_script,'w') as fscript:
292
+ fscript.write(script_text)
293
+
294
+ # copy the salome script on the remote server
295
+ cmd = "scp %s %s@%s:%s" % (tmp_script, user, machine, tmp_script)
296
+ print("[ SCP ]", cmd)
297
+ os.system(cmd)
298
+
299
+ return list_infiles, list_outfiles, tmp_script
300
+ #
301
+
302
+ # sa_obj is a ScriptAndArgs object (from salomeContextUtils)
303
+ def __runRemoteSession(sa_obj, params):
304
+ if not params.user:
305
+ print("ERROR: The user login on remote machine MUST be given.")
306
+ return 1
307
+ if not params.directory:
308
+ print("ERROR: The remote directory MUST be given.")
309
+ return 1
310
+
311
+ # sa_obj.script may be 'python script.py' --> only process .py file
312
+ header = " ".join(sa_obj.script.split()[:-1])
313
+ script = sa_obj.script.split()[-1]
314
+
315
+ tmp_in, tmp_out, tmp_script = __copyFiles(params.user, params.machine, script, sa_obj.args or [], sa_obj.out or [])
316
+
317
+ # execute command on the remote SALOME application
318
+ command = "%s/salome shell" % (params.directory)
319
+ if params.port:
320
+ command += " -p %s "%params.port
321
+ command += " %s %s args:%s"%(header, tmp_script, ",".join(tmp_in))
322
+ # salome shell command must run in a login shell because of module function
323
+ command = "ssh %s@%s -t 'bash -l -c \"%s\"'" % (params.user, params.machine, command)
324
+ print('[ SSH ] ' + command)
325
+ os.system(command)
326
+
327
+ # Get remote files and clean
328
+ temp_files = tmp_in + tmp_out + [tmp_script]
329
+
330
+ # get the outfiles
331
+ for outfile in (sa_obj.out or []):
332
+ remote_outfile = tmp_out.pop(0)
333
+ command = "scp %s@%s:%s %s" %(params.user, params.machine, remote_outfile, outfile)
334
+ print("[ SCP ] " + command)
335
+ os.system(command)
336
+
337
+ # clean temporary files
338
+ command = "ssh %s@%s \\rm -f %s" % (params.user, params.machine, " ".join(temp_files))
339
+ print('[ SSH ] ' + command)
340
+ os.system(command)
341
+ os.remove(tmp_script)
342
+
343
+ return 0
344
+ #
345
+
346
+ def runSession(params, args):
347
+ scriptArgs = getScriptsAndArgs(args)
348
+
349
+ if params.mode == "local":
350
+ command = formatScriptsAndArgs(scriptArgs)
351
+ return __runLocalSession(command)
352
+
353
+ elif params.mode == "remote":
354
+ any_error = 0
355
+ for sa_obj in scriptArgs:
356
+ ok = __runRemoteSession(sa_obj, params)
357
+ if not ok:
358
+ any_error = 1
359
+ return any_error
360
+ #