salome.kernel 9.14.0__cp39-cp39-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.
- salome/bin/salome/IDLparser.py +882 -0
- salome/bin/salome/KernelHelpersUseCases +0 -0
- salome/bin/salome/NSparam.py +51 -0
- salome/bin/salome/ORBConfigFile.py +55 -0
- salome/bin/salome/SALOMEDS_Client +0 -0
- salome/bin/salome/SALOMEDS_Server +0 -0
- salome/bin/salome/SALOME_ConnectionManagerServer +0 -0
- salome/bin/salome/SALOME_Container +0 -0
- salome/bin/salome/SALOME_ContainerPy.py +397 -0
- salome/bin/salome/SALOME_Container_No_NS_Serv +0 -0
- salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess +0 -0
- salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess_FT +0 -0
- salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess_Replay +0 -0
- salome/bin/salome/SALOME_Container_No_NS_Serv_OutProcess_Replay_FT +0 -0
- salome/bin/salome/SALOME_DataScopeServer +0 -0
- salome/bin/salome/SALOME_DataScopeServer_SSL +0 -0
- salome/bin/salome/SALOME_LauncherServer +0 -0
- salome/bin/salome/SALOME_Logger_Server +0 -0
- salome/bin/salome/SALOME_ModuleCatalog_Client +0 -0
- salome/bin/salome/SALOME_ModuleCatalog_Server +0 -0
- salome/bin/salome/SALOME_Registry_Server +0 -0
- salome/bin/salome/TestComponentPy.py +71 -0
- salome/bin/salome/TestContainer +0 -0
- salome/bin/salome/TestContainerManager +0 -0
- salome/bin/salome/TestLauncher +0 -0
- salome/bin/salome/TestLifeCycleCORBA.py +89 -0
- salome/bin/salome/TestLogger +0 -0
- salome/bin/salome/TestLogger.py +27 -0
- salome/bin/salome/TestModuleCatalog.py +87 -0
- salome/bin/salome/Test_LifeCycleCORBA +0 -0
- salome/bin/salome/VERSION +3 -0
- salome/bin/salome/addToKillList.py +35 -0
- salome/bin/salome/app-quickstart.py +288 -0
- salome/bin/salome/appli/.bashrc +50 -0
- salome/bin/salome/appli/extra.env.d/001.py +39 -0
- salome/bin/salome/appli/python_test_driver.py +148 -0
- salome/bin/salome/appli/salome +193 -0
- salome/bin/salome/appli/salome_instance.py +31 -0
- salome/bin/salome/appli/salome_test_driver.py +150 -0
- salome/bin/salome/appli/salome_test_driver_gui.py +82 -0
- salome/bin/salome/appli_clean.sh +53 -0
- salome/bin/salome/appli_gen.py +606 -0
- salome/bin/salome/dummyexe_loggerTraceCollector +0 -0
- salome/bin/salome/envSalome.py +59 -0
- salome/bin/salome/killSalome.py +48 -0
- salome/bin/salome/killSalomeWithPort.py +56 -0
- salome/bin/salome/prepare_generating_doc.py +104 -0
- salome/bin/salome/pythonpath_reduction.py +184 -0
- salome/bin/salome/runConsole.py +39 -0
- salome/bin/salome/runIDLparser +58 -0
- salome/bin/salome/runRemote.py +101 -0
- salome/bin/salome/runSalome.py +30 -0
- salome/bin/salome/runSalomeNoServer.py +24 -0
- salome/bin/salome/runSalomeOld.py +36 -0
- salome/bin/salome/runSalomeOnDemand.py +41 -0
- salome/bin/salome/salomeContext.py +36 -0
- salome/bin/salome/salome_process_attach +44 -0
- salome/bin/salome/salome_process_launcher +58 -0
- salome/bin/salome/setenv.py +32 -0
- salome/bin/salome/showNS.py +33 -0
- salome/bin/salome/test/kernel/ArgvKeeper/CTestTestfile.cmake +31 -0
- salome/bin/salome/test/kernel/ArgvKeeper/TestArgvKeeper +0 -0
- salome/bin/salome/test/kernel/ArgvKeeper/test_ArgvKeeper.py +34 -0
- salome/bin/salome/test/kernel/CTestTestfile.cmake +49 -0
- salome/bin/salome/test/kernel/Container/CTestTestfile.cmake +29 -0
- salome/bin/salome/test/kernel/Container/testProxy.py +291 -0
- salome/bin/salome/test/kernel/Container/testcontainer.py +106 -0
- salome/bin/salome/test/kernel/KernelHelpers/CTestTestfile.cmake +31 -0
- salome/bin/salome/test/kernel/KernelHelpers/KernelHelpersUnitTests.hxx +58 -0
- salome/bin/salome/test/kernel/KernelHelpers/TestKernelHelpers +0 -0
- salome/bin/salome/test/kernel/KernelHelpers/TestKernelHelpers.py +55 -0
- salome/bin/salome/test/kernel/Launcher/CTestTestfile.cmake +43 -0
- salome/bin/salome/test/kernel/Launcher/TestSSLAttached.py +110 -0
- salome/bin/salome/test/kernel/Launcher/launcher_use_case.py +65 -0
- salome/bin/salome/test/kernel/Launcher/testCrashProofContainer.py +423 -0
- salome/bin/salome/test/kernel/Launcher/testPerfLogManager1.py +382 -0
- salome/bin/salome/test/kernel/Launcher/test_launcher.py +674 -0
- salome/bin/salome/test/kernel/Launcher/test_stress.sh +45 -0
- salome/bin/salome/test/kernel/Launcher_SWIG/CTestTestfile.cmake +30 -0
- salome/bin/salome/test/kernel/Launcher_SWIG/test_swig_launcher.py +706 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA/CTestTestfile.cmake +27 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA/LifeCycleCORBATest.hxx +105 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA/TestLifeCycleCORBA +0 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA/TestLifeCycleCORBA.py +93 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/CTestTestfile.cmake +40 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/CatalogResources_resource.xml +15 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/LifeCycleCORBA_SWIGTest.py +217 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/SALOME_TestComponentPy.py +49 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/TestLifeCycleCORBA_SWIG.py +100 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/testcontainermanager.py +88 -0
- salome/bin/salome/test/kernel/LifeCycleCORBA_SWIG/testresourcemanager.py +155 -0
- salome/bin/salome/test/kernel/NamingService/CTestTestfile.cmake +28 -0
- salome/bin/salome/test/kernel/NamingService/NamingServiceTest.hxx +169 -0
- salome/bin/salome/test/kernel/NamingService/TestNamingService +0 -0
- salome/bin/salome/test/kernel/NamingService/TestNamingService.py +64 -0
- salome/bin/salome/test/kernel/SALOMEDS/CTestTestfile.cmake +27 -0
- salome/bin/salome/test/kernel/SALOMEDS/SALOMEDSTest.hxx +192 -0
- salome/bin/salome/test/kernel/SALOMEDS/TestSALOMEDS +0 -0
- salome/bin/salome/test/kernel/SALOMEDS/TestSALOMEDS.py +55 -0
- salome/bin/salome/test/kernel/SALOMEDSImpl/CTestTestfile.cmake +27 -0
- salome/bin/salome/test/kernel/SALOMEDSImpl/SALOMEDSImplTest.hxx +51 -0
- salome/bin/salome/test/kernel/SALOMEDSImpl/TestSALOMEDSImpl +0 -0
- salome/bin/salome/test/kernel/SALOMEDSImpl/TestSALOMEDSImpl.py +55 -0
- salome/bin/salome/test/kernel/SALOMELocalTrace/CTestTestfile.cmake +27 -0
- salome/bin/salome/test/kernel/SALOMELocalTrace/SALOMELocalTraceTest.hxx +59 -0
- salome/bin/salome/test/kernel/SALOMELocalTrace/TestSALOMELocalTrace +0 -0
- salome/bin/salome/test/kernel/SALOMELocalTrace/TestSALOMELocalTrace.py +40 -0
- salome/bin/salome/test/kernel/SALOMETraceCollector/CTestTestfile.cmake +27 -0
- salome/bin/salome/test/kernel/SALOMETraceCollector/SALOMETraceCollectorTest.hxx +51 -0
- salome/bin/salome/test/kernel/SALOMETraceCollector/TestSALOMETraceCollector +0 -0
- salome/bin/salome/test/kernel/SALOMETraceCollector/TestSALOMETraceCollector.py +57 -0
- salome/bin/salome/test/kernel/UnitTests/CTestTestfile.cmake +28 -0
- salome/bin/salome/test/kernel/UnitTests/UnitTests +0 -0
- salome/bin/salome/test/kernel/UnitTests/UnitTests.py +89 -0
- salome/bin/salome/test/kernel/Utils/CTestTestfile.cmake +27 -0
- salome/bin/salome/test/kernel/Utils/TestUtils +0 -0
- salome/bin/salome/test/kernel/Utils/TestUtils.py +55 -0
- salome/bin/salome/test/kernel/Utils/UtilsTest.hxx +58 -0
- salome/bin/salome/test/kernel/lib/libLifeCycleCORBATest.so +0 -0
- salome/bin/salome/test/kernel/lib/libNamingServiceTest.so +0 -0
- salome/bin/salome/test/kernel/lib/libSALOMEDSImplTest.so +0 -0
- salome/bin/salome/test/kernel/lib/libSALOMEDSTest.so +0 -0
- salome/bin/salome/test/kernel/lib/libSALOMELocalTraceTest.so +0 -0
- salome/bin/salome/test/kernel/lib/libSALOMETraceCollectorTest.so +0 -0
- salome/bin/salome/test/kernel/lib/libSalomeKernelHelpersTest.so +0 -0
- salome/bin/salome/test/kernel/lib/libUtilsTest.so +0 -0
- salome/bin/salome/testDF +0 -0
- salome/bin/salome/testDS +0 -0
- salome/bin/salome/virtual_salome.py +38 -0
- salome/bin/salome/waitContainers.py +82 -0
- salome/bin/salome/waitNS.py +31 -0
- salome/kernel/ArgvKeeper.py +132 -0
- salome/kernel/Calcium_Ports_idl.py +645 -0
- salome/kernel/DSC_Engines_idl.py +443 -0
- salome/kernel/Engines/__init__.py +24 -0
- salome/kernel/Engines__POA/__init__.py +24 -0
- salome/kernel/Help.py +141 -0
- salome/kernel/KernelBasis.py +463 -0
- salome/kernel/KernelContainer.py +81 -0
- salome/kernel/KernelDS.py +87 -0
- salome/kernel/KernelLauncher.py +117 -0
- salome/kernel/KernelLogger.py +75 -0
- salome/kernel/KernelModuleCatalog.py +76 -0
- salome/kernel/KernelSDS.py +92 -0
- salome/kernel/KernelServices.py +105 -0
- salome/kernel/LifeCycleCORBA.py +92 -0
- salome/kernel/Logger_idl.py +89 -0
- salome/kernel/NSTEST/__init__.py +13 -0
- salome/kernel/NSTEST__POA/__init__.py +13 -0
- salome/kernel/NSparam_impl.py +50 -0
- salome/kernel/NamingService.py +365 -0
- salome/kernel/ORBConfigFile_impl.py +102 -0
- salome/kernel/Palm_Ports_idl.py +162 -0
- salome/kernel/PortManager.py +259 -0
- salome/kernel/Ports/Calcium_Ports/__init__.py +13 -0
- salome/kernel/Ports/Palm_Ports/__init__.py +13 -0
- salome/kernel/Ports/__init__.py +18 -0
- salome/kernel/Ports__POA/Calcium_Ports/__init__.py +13 -0
- salome/kernel/Ports__POA/Palm_Ports/__init__.py +13 -0
- salome/kernel/Ports__POA/__init__.py +18 -0
- salome/kernel/PyInterp.py +99 -0
- salome/kernel/Registry/__init__.py +13 -0
- salome/kernel/Registry__POA/__init__.py +13 -0
- salome/kernel/SALOME/__init__.py +19 -0
- salome/kernel/SALOMEDS/__init__.py +14 -0
- salome/kernel/SALOMEDS_Attributes_idl.py +2288 -0
- salome/kernel/SALOMEDS__POA/__init__.py +14 -0
- salome/kernel/SALOMEDS_idl.py +1590 -0
- salome/kernel/SALOMEWrappedStdType.py +383 -0
- salome/kernel/SALOME_Comm_idl.py +1045 -0
- salome/kernel/SALOME_CommonTypes_idl.py +69 -0
- salome/kernel/SALOME_ComponentPy.py +338 -0
- salome/kernel/SALOME_Component_idl.py +962 -0
- salome/kernel/SALOME_Container.py +242 -0
- salome/kernel/SALOME_ContainerHelper.py +840 -0
- salome/kernel/SALOME_ContainerManager_idl.py +236 -0
- salome/kernel/SALOME_DriverPy.py +86 -0
- salome/kernel/SALOME_Embedded_NamingService.py +41 -0
- salome/kernel/SALOME_Embedded_NamingService_ClientPy.py +59 -0
- salome/kernel/SALOME_Embedded_NamingService_idl.py +125 -0
- salome/kernel/SALOME_Exception_idl.py +75 -0
- salome/kernel/SALOME_ExternalServerLauncher_idl.py +199 -0
- salome/kernel/SALOME_GenericObj_idl.py +154 -0
- salome/kernel/SALOME_GlobalsImpl.py +38 -0
- salome/kernel/SALOME_Launcher_idl.py +327 -0
- salome/kernel/SALOME_Locker_idl.py +185 -0
- salome/kernel/SALOME_LogManager.py +103 -0
- salome/kernel/SALOME_LogManager_idl.py +348 -0
- salome/kernel/SALOME_Logger/__init__.py +13 -0
- salome/kernel/SALOME_Logger__POA/__init__.py +13 -0
- salome/kernel/SALOME_MPIObject_idl.py +100 -0
- salome/kernel/SALOME_ModuleCatalog/__init__.py +13 -0
- salome/kernel/SALOME_ModuleCatalog__POA/__init__.py +13 -0
- salome/kernel/SALOME_ModuleCatalog_idl.py +624 -0
- salome/kernel/SALOME_NamingServicePy.py +313 -0
- salome/kernel/SALOME_PACOExtension_idl.py +292 -0
- salome/kernel/SALOME_ParamPorts_idl.py +102 -0
- salome/kernel/SALOME_Parametric_idl.py +154 -0
- salome/kernel/SALOME_Ports_idl.py +347 -0
- salome/kernel/SALOME_PyNode.py +1557 -0
- salome/kernel/SALOME_PyNode_idl.py +387 -0
- salome/kernel/SALOME_Registry_idl.py +155 -0
- salome/kernel/SALOME_ResourcesManager_idl.py +215 -0
- salome/kernel/SALOME_SDS_idl.py +1181 -0
- salome/kernel/SALOME_Session_idl.py +214 -0
- salome/kernel/SALOME_TYPES/__init__.py +14 -0
- salome/kernel/SALOME_TYPES__POA/__init__.py +14 -0
- salome/kernel/SALOME_TestComponent_idl.py +121 -0
- salome/kernel/SALOME_TestModuleCatalog/__init__.py +13 -0
- salome/kernel/SALOME_TestModuleCatalog__POA/__init__.py +13 -0
- salome/kernel/SALOME_TestModuleCatalog_idl.py +194 -0
- salome/kernel/SALOME_Trace.py +96 -0
- salome/kernel/SALOME_Types_idl.py +81 -0
- salome/kernel/SALOME__POA/__init__.py +19 -0
- salome/kernel/SALOME_utilities.py +63 -0
- salome/kernel/SalomeSDSClt.py +552 -0
- salome/kernel/TestKiller.py +76 -0
- salome/kernel/Utils_Identity.py +93 -0
- salome/kernel/_ArgvKeeper.so +0 -0
- salome/kernel/_KernelBasis.so +0 -0
- salome/kernel/_KernelContainer.so +0 -0
- salome/kernel/_KernelDS.so +0 -0
- salome/kernel/_KernelLauncher.so +0 -0
- salome/kernel/_KernelLogger.so +0 -0
- salome/kernel/_KernelModuleCatalog.so +0 -0
- salome/kernel/_KernelSDS.so +0 -0
- salome/kernel/_KernelServices.so +0 -0
- salome/kernel/_NamingService.so +0 -0
- salome/kernel/_calcium.so +0 -0
- salome/kernel/_libNOTIFICATION.so +0 -0
- salome/kernel/_libSALOME_Comm.so +0 -0
- salome/kernel/_libSALOME_LifeCycleCORBA.so +0 -0
- salome/kernel/_pylauncher.so +0 -0
- salome/kernel/addToKillList_impl.py +127 -0
- salome/kernel/batchmode_salome.py +295 -0
- salome/kernel/calcium.py +866 -0
- salome/kernel/dsccalcium.py +98 -0
- salome/kernel/iparameters.py +255 -0
- salome/kernel/kernel_test.py +114 -0
- salome/kernel/killSalomeWithPort_impl.py +518 -0
- salome/kernel/killSalome_impl.py +94 -0
- salome/kernel/launchConfigureParser.py +1234 -0
- salome/kernel/launcher_proxy.py +122 -0
- salome/kernel/libNOTIFICATION.py +119 -0
- salome/kernel/libSALOME_Comm.py +85 -0
- salome/kernel/libSALOME_LifeCycleCORBA.py +232 -0
- salome/kernel/main.py +8 -0
- salome/kernel/nameserver.py +134 -0
- salome/kernel/nstest_idl.py +129 -0
- salome/kernel/omnipatch.py +136 -0
- salome/kernel/orbmodule.py +246 -0
- salome/kernel/parseConfigFile.py +261 -0
- salome/kernel/pylauncher.py +883 -0
- salome/kernel/runConsole_impl.py +224 -0
- salome/kernel/runSalomeCommon.py +418 -0
- salome/kernel/runSalomeNoServer_impl.py +48 -0
- salome/kernel/runSalomeOld_impl.py +603 -0
- salome/kernel/runSalomeOnDemand_impl.py +72 -0
- salome/kernel/runSalome_impl.py +341 -0
- salome/kernel/runSession.py +360 -0
- salome/kernel/runTests.py +90 -0
- salome/kernel/salome/__init__.py +646 -0
- salome/kernel/salome/kernel/__init__.py +111 -0
- salome/kernel/salome/kernel/datamodeler.py +363 -0
- salome/kernel/salome/kernel/deprecation.py +165 -0
- salome/kernel/salome/kernel/diclookup.py +137 -0
- salome/kernel/salome/kernel/enumerate.py +232 -0
- salome/kernel/salome/kernel/logconfig.py +27 -0
- salome/kernel/salome/kernel/logger.py +290 -0
- salome/kernel/salome/kernel/parametric/__init__.py +26 -0
- salome/kernel/salome/kernel/parametric/compo_utils.py +137 -0
- salome/kernel/salome/kernel/parametric/pyscript_utils.py +135 -0
- salome/kernel/salome/kernel/parametric/study_exchange_vars.py +285 -0
- salome/kernel/salome/kernel/pyunittester.py +184 -0
- salome/kernel/salome/kernel/services.py +267 -0
- salome/kernel/salome/kernel/studyedit.py +637 -0
- salome/kernel/salome/kernel/syshelper.py +116 -0
- salome/kernel/salome/kernel/termcolor.py +239 -0
- salome/kernel/salome/kernel/testdata.py +159 -0
- salome/kernel/salome/kernel/threadhelper.py +385 -0
- salome/kernel/salome/kernel/uiexception.py +121 -0
- salome/kernel/salome/kernel/unittester.py +89 -0
- salome/kernel/salomeContextUtils.py +353 -0
- salome/kernel/salomeContext_impl.py +731 -0
- salome/kernel/salome_ComponentGUI.py +92 -0
- salome/kernel/salome_genericobj.py +44 -0
- salome/kernel/salome_iapp.py +206 -0
- salome/kernel/salome_instance_impl.py +109 -0
- salome/kernel/salome_kernel_utils.py +88 -0
- salome/kernel/salome_notebook.py +183 -0
- salome/kernel/salome_psutil.py +94 -0
- salome/kernel/salome_pynode.py +74 -0
- salome/kernel/salome_study.py +347 -0
- salome/kernel/salome_test.py +56 -0
- salome/kernel/salome_utils.py +563 -0
- salome/kernel/salome_version.py +164 -0
- salome/kernel/searchFreePort.py +130 -0
- salome/kernel/server.py +154 -0
- salome/kernel/setenv_impl.py +240 -0
- salome/kernel/version_and_config.py +24 -0
- salome/share/salome/resources/kernel/Anita semi square.ttf +0 -0
- salome/share/salome/resources/kernel/CatalogModulePersonnel.xml_skel +24 -0
- salome/share/salome/resources/kernel/CatalogResources.xml +4 -0
- salome/share/salome/resources/kernel/KERNELCatalog.xml +102 -0
- salome/share/salome/resources/kernel/SALOMEDS_Resources +10 -0
- salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_MPI_LAN.py +19 -0
- salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_MPI_MPICH.py +18 -0
- salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_MPI_OPENMPI.py +21 -0
- salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_LOCAL_NO_MPI.py +25 -0
- salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_REMOTE.py +108 -0
- salome/share/salome/resources/kernel/ScriptsTemplate/SALOME_CM_REMOTE_OLD.py +115 -0
- salome/share/salome/resources/kernel/ScriptsTemplate/script_parameters.py +25 -0
- salome/share/salome/resources/kernel/app-template/CMakeLists.txt +125 -0
- salome/share/salome/resources/kernel/app-template/LICENCE +504 -0
- salome/share/salome/resources/kernel/app-template/README +0 -0
- salome/share/salome/resources/kernel/app-template/doc/CMakeLists.txt +31 -0
- salome/share/salome/resources/kernel/app-template/doc/README +1 -0
- salome/share/salome/resources/kernel/app-template/doc/conf.py.in +197 -0
- salome/share/salome/resources/kernel/app-template/doc/index.rst +14 -0
- salome/share/salome/resources/kernel/app-template/doc/intro.rst +4 -0
- salome/share/salome/resources/kernel/app-template/doc/link.rst +4 -0
- salome/share/salome/resources/kernel/app-template/resources/CMakeLists.txt +36 -0
- salome/share/salome/resources/kernel/app-template/resources/SalomeApp.xml.in +30 -0
- salome/share/salome/resources/kernel/app-template/resources/about.png +0 -0
- salome/share/salome/resources/kernel/app-template/resources/app_icon.png +0 -0
- salome/share/salome/resources/kernel/app-template/resources/app_logo.png +0 -0
- salome/share/salome/resources/kernel/app-template/resources/doc/CMakeLists.txt +27 -0
- salome/share/salome/resources/kernel/app-template/resources/doc/README +1 -0
- salome/share/salome/resources/kernel/app-template/resources/doc/sample.pdf +0 -0
- salome/share/salome/resources/kernel/app-template/resources/icon_about.png +0 -0
- salome/share/salome/resources/kernel/app-template/resources/splash.png +0 -0
- salome/share/salome/resources/kernel/app-template/src/CMakeLists.txt +22 -0
- salome/share/salome/resources/kernel/app-template/src/resources/CMakeLists.txt +34 -0
- salome/share/salome/resources/kernel/app-template/src/resources/LightApp_images.ts +23 -0
- salome/share/salome/resources/kernel/app-template/src/resources/LightApp_msg_en.ts +35 -0
- salome/share/salome/resources/kernel/app-template/src/resources/LightApp_msg_fr.ts +35 -0
- salome/share/salome/resources/kernel/app-template/src/resources/LightApp_msg_ja.ts +35 -0
- salome/share/salome/resources/kernel/app-template/src/tests/CMakeLists.txt +29 -0
- salome/share/salome/resources/kernel/app-template/src/tests/README +1 -0
- salome/share/salome/resources/kernel/app-template/src/tests/helloWorld.py +1 -0
- salome/share/salome/resources/kernel/background.png +0 -0
- salome/share/salome/resources/kernel/channel.cfg +278 -0
- salome/share/salome/resources/kernel/testLauncher.xml +10 -0
- salome.kernel-9.14.0.dist-info/METADATA +24 -0
- salome.kernel-9.14.0.dist-info/RECORD +399 -0
- salome.kernel-9.14.0.dist-info/WHEEL +6 -0
- salome.kernel-9.14.0.dist-info/entry_points.txt +2 -0
- salome.kernel.libs/libArgvKeeper-822351d5.so +0 -0
- salome.kernel.libs/libCOS4-b4544fb9.so.2.5 +0 -0
- salome.kernel.libs/libCOSDynamic4-618dbb1d.so.2.5 +0 -0
- salome.kernel.libs/libCalciumC-a61b99a1.so +0 -0
- salome.kernel.libs/libDF-281cc999.so +0 -0
- salome.kernel.libs/libLauncher-09c39914.so +0 -0
- salome.kernel.libs/libLauncherWrapHelper-5ee25ab2.so +0 -0
- salome.kernel.libs/libOpUtil-8d37ccc8.so +0 -0
- salome.kernel.libs/libRegistry-e4a63a9e.so +0 -0
- salome.kernel.libs/libResourcesManager-f4ef9548.so +0 -0
- salome.kernel.libs/libSALOMEBasics-f4d874ac.so +0 -0
- salome.kernel.libs/libSALOMELocalTrace-a3992e5b.so +0 -0
- salome.kernel.libs/libSALOMELog-55805468.so +0 -0
- salome.kernel.libs/libSalomeCalcium-6800d8d0.so +0 -0
- salome.kernel.libs/libSalomeCatalog-96c5b2bc.so +0 -0
- salome.kernel.libs/libSalomeCommunication-451307b4.so +0 -0
- salome.kernel.libs/libSalomeContainer-d4557377.so +0 -0
- salome.kernel.libs/libSalomeContainerServer-372d46c2.so +0 -0
- salome.kernel.libs/libSalomeDS-34cd5abf.so +0 -0
- salome.kernel.libs/libSalomeDSCContainer-ee0cf498.so +0 -0
- salome.kernel.libs/libSalomeDSCSuperv-f529bca5.so +0 -0
- salome.kernel.libs/libSalomeDSCSupervBasic-e6a3b4cf.so +0 -0
- salome.kernel.libs/libSalomeDSClient-dc9947bb.so +0 -0
- salome.kernel.libs/libSalomeDSImpl-cb508584.so +0 -0
- salome.kernel.libs/libSalomeDatastream-755ff3cb.so +0 -0
- salome.kernel.libs/libSalomeGenericObj-3ccf0028.so +0 -0
- salome.kernel.libs/libSalomeHDFPersist-69945ed0.so +0 -0
- salome.kernel.libs/libSalomeIDLKernel-2eb1ed8e.so +0 -0
- salome.kernel.libs/libSalomeKernelHelpers-1514c9e0.so +0 -0
- salome.kernel.libs/libSalomeLauncher-f5fc4b7e.so +0 -0
- salome.kernel.libs/libSalomeLifeCycleCORBA-69902a7b.so +0 -0
- salome.kernel.libs/libSalomeLoggerServer-3668e9ae.so +0 -0
- salome.kernel.libs/libSalomeNS-a03a7eba.so +0 -0
- salome.kernel.libs/libSalomeNotification-66efcfbd.so +0 -0
- salome.kernel.libs/libSalomeORB-f304f4df.so +0 -0
- salome.kernel.libs/libSalomePalm-4204405e.so +0 -0
- salome.kernel.libs/libSalomeResourcesManager-fd411949.so +0 -0
- salome.kernel.libs/libSalomeSDS-896ae3bb.so +0 -0
- salome.kernel.libs/libSalomeTestComponentEngine-9899af25.so +0 -0
- salome.kernel.libs/libTOOLSDS-db8e8629.so +0 -0
- salome.kernel.libs/libbatch-6b5b319f.so +0 -0
- salome.kernel.libs/libboost_atomic-489c2d94.so.1.81.0 +0 -0
- salome.kernel.libs/libboost_filesystem-e610b554.so.1.81.0 +0 -0
- salome.kernel.libs/libboost_system-4a7650ea.so.1.81.0 +0 -0
- salome.kernel.libs/libcppunit-1-17e77af1.12.so.1.0.0 +0 -0
- salome.kernel.libs/libhdf5-60e81d69.so.103.0.0 +0 -0
- salome.kernel.libs/liblzma-004595ca.so.5.2.2 +0 -0
- salome.kernel.libs/libomniDynamic4-9edc765d.so.2.5 +0 -0
- salome.kernel.libs/libomniORB4-4725824d.so.2.5 +0 -0
- salome.kernel.libs/libomnithread-99f9d0d3.so.4.1 +0 -0
- salome.kernel.libs/libwith_loggerTraceCollector-6b94c51b.so +0 -0
- salome.kernel.libs/libwith_loggerTraceCollector.so +0 -0
- 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
|
+
#
|