From: CEA Support SALOME Date: Mon, 29 Jun 2015 14:05:53 +0000 (+0200) Subject: update according recent changes in CMake macros X-Git-Tag: V7_6_0p2~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=cb102058652f22df9746ad786d5b082cdfedb33b;p=tools%2FSALOME.git update according recent changes in CMake macros --- diff --git a/CMakeLists.txt b/CMakeLists.txt index a01b77b..ab6fa02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,7 +69,12 @@ SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR} CACHE PATH "Path to the Salome GUI") IF(EXISTS ${GUI_ROOT_DIR}) LIST(APPEND CMAKE_MODULE_PATH "${GUI_ROOT_DIR}/adm_local/cmake_files") FIND_PACKAGE(SalomeGUI REQUIRED) - FULL_GUI(TRUE) # check whether GUI builded in full mode and with CORBA + SALOME_GUI_WITH_CORBA() #remove this line if you don't need GUI module builded with CORBA + #remove unnecessary options from this list (see SALOME_GUI_MODE() macro description) + SALOME_GUI_MODE(SALOME_USE_SALOMEOBJECT SALOME_USE_OCCVIEWER SALOME_USE_VTKVIEWER SALOME_USE_PYCONSOLE + OPTIONAL SALOME_USE_PLOT2DVIEWER SALOME_USE_GLVIEWER SALOME_USE_GRAPHICSVIEW + SALOME_USE_QXGRAPHVIEWER SALOME_USE_PVVIEWER SALOME_USE_PYVIEWER + ) ADD_DEFINITIONS(${GUI_DEFINITIONS}) INCLUDE_DIRECTORIES(${GUI_INCLUDE_DIRS}) ELSE(EXISTS ${GUI_ROOT_DIR}) diff --git a/resources/about.png b/resources/about.png index 3430427..dfdc7e6 100644 Binary files a/resources/about.png and b/resources/about.png differ diff --git a/resources/app_logo.png b/resources/app_logo.png index 85c2727..df849dc 100644 Binary files a/resources/app_logo.png and b/resources/app_logo.png differ diff --git a/resources/splash.png b/resources/splash.png index 3430427..dfdc7e6 100644 Binary files a/resources/splash.png and b/resources/splash.png differ diff --git a/src/resources/LightApp_msg_en.ts b/src/resources/LightApp_msg_en.ts index f14c88c..c0733e3 100644 --- a/src/resources/LightApp_msg_en.ts +++ b/src/resources/LightApp_msg_en.ts @@ -17,7 +17,7 @@ APP_VERSION - V7.5.1 + Vmaster ABOUT_LICENSE @@ -25,7 +25,7 @@ ABOUT_VERSION - Version 7.5.1 + Version master ABOUT_TITLE diff --git a/src/resources/LightApp_msg_fr.ts b/src/resources/LightApp_msg_fr.ts index b6d3440..3a9e749 100644 --- a/src/resources/LightApp_msg_fr.ts +++ b/src/resources/LightApp_msg_fr.ts @@ -17,7 +17,7 @@ APP_VERSION - V7.5.1 + Vmaster ABOUT_LICENSE @@ -25,7 +25,7 @@ ABOUT_VERSION - Version 7.5.1 + Version master ABOUT_TITLE diff --git a/src/resources/LightApp_msg_ja.ts b/src/resources/LightApp_msg_ja.ts index e9abbb9..7c4f98a 100644 --- a/src/resources/LightApp_msg_ja.ts +++ b/src/resources/LightApp_msg_ja.ts @@ -17,7 +17,7 @@ APP_VERSION - V7.5.1 + Vmaster ABOUT_LICENSE @@ -25,7 +25,7 @@ ABOUT_VERSION - Version 7.5.1 + Version master ABOUT_TITLE diff --git a/src/salomeContext.py b/src/salomeContext.py index 384db9b..545e929 100755 --- a/src/salomeContext.py +++ b/src/salomeContext.py @@ -33,8 +33,6 @@ import platform from salomeContextUtils import SalomeContextException def usage(): - #exeName = os.path.splitext(os.path.basename(__file__))[0] - msg = '''\ Usage: salome [command] [options] [--config=] @@ -51,14 +49,13 @@ Commands: test Run SALOME tests. info Display some information about SALOME help Show this message - coffee Yes! SALOME can also make coffee!! If no command is given, default to start. Command options: ================ Use salome --help to show help on command ; available for commands: - start, shell, test. + start, shell, connect, test, info. --config= ========================== @@ -239,13 +236,16 @@ class SalomeContext: See usage for details on commands. """ def _startSalome(self, args): + import os + import sys try: - import os + from setenv import add_path absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH') - import sys path = os.path.realpath(os.path.join(absoluteAppliPath, "bin", "salome")) - if not path in sys.path: - sys.path[:0] = [path] + add_path(path, "PYTHONPATH") + path = os.path.realpath(os.path.join(absoluteAppliPath, "bin", "salome", "appliskel")) + add_path(path, "PYTHONPATH") + except: pass @@ -330,7 +330,9 @@ class SalomeContext: sys.path[:0] = pythonpath # - def _runAppli(self, args=[]): + def _runAppli(self, args=None): + if args is None: + args = [] # Initialize SALOME environment sys.argv = ['runSalome'] + args import setenv @@ -360,7 +362,9 @@ class SalomeContext: return proc.communicate() # - def _runSession(self, args=[]): + def _runSession(self, args=None): + if args is None: + args = [] sys.argv = ['runSession'] + args import runSession params, args = runSession.configureSession(args, exe="salome shell") @@ -372,18 +376,21 @@ class SalomeContext: return runSession.runSession(params, args) # - def _runConsole(self, args=[]): + def _runConsole(self, args=None): + if args is None: + args = [] # Initialize SALOME environment - sys.argv = ['runConsole'] + args + sys.argv = ['runConsole'] import setenv setenv.main(True) - cmd = ["python", "-c", "import runConsole\nrunConsole.connect()" ] - proc = subprocess.Popen(cmd, shell=False, close_fds=True) - return proc.communicate() + import runConsole + return runConsole.connect(args) # - def _kill(self, args=[]): + def _kill(self, args=None): + if args is None: + args = [] ports = args if not ports: print "Port number(s) not provided to command: salome kill " @@ -420,7 +427,9 @@ class SalomeContext: pass # - def _runTests(self, args=[]): + def _runTests(self, args=None): + if args is None: + args = [] sys.argv = ['runTests'] import setenv setenv.main(True) @@ -429,9 +438,35 @@ class SalomeContext: return runTests.runTests(args, exe="salome test") # - def _showInfo(self, unused=None): - print "Running with python", platform.python_version() - self._runAppli(["--version"]) + def _showInfo(self, args=None): + if args is None: + args = [] + + usage = "Usage: salome info [options]" + epilog = """\n +Display some information about SALOME.\n +Available options are: + -p,--ports Show list of busy ports (running SALOME instances). + -v,--version Show running SALOME version. + -h,--help Show this message. +""" + if not args: + args = ["--version"] + + if "-h" in args or "--help" in args: + print usage + epilog + return + + if "-p" in args or "--ports" in args: + import PortManager + ports = PortManager.getBusyPorts() + print "SALOME instances are running on ports:", ports + if ports: + print "Last started instance on port %s"%ports[-1] + + if "-v" in args or "--version" in args: + print "Running with python", platform.python_version() + self._runAppli(["--version"]) # def _usage(self, unused=None): diff --git a/src/salomeContextUtils.py b/src/salomeContextUtils.py index 12cd3a6..de561cf 100755 --- a/src/salomeContextUtils.py +++ b/src/salomeContextUtils.py @@ -61,18 +61,14 @@ def __getConfigFileNamesDefault(): return __listDirectory(envdDir) # -def getConfigFileNames(args, checkExistence=False): - # special case: configuration files are provided by user - # Search for command-line argument(s) --config=file1,file2,..., filen - # Search for command-line argument(s) --config=dir1,dir2,..., dirn - configOptionPrefix = "--config=" - configArgs = [ str(x) for x in args if str(x).startswith(configOptionPrefix) ] +def __getEnvironmentFileNames(args, optionPrefix, checkExistence): + # special case: extra configuration/environment files are provided by user + # Search for command-line argument(s) =file1,file2,..., filen + # Search for command-line argument(s) =dir1,dir2,..., dirn + configArgs = [ str(x) for x in args if str(x).startswith(optionPrefix) ] - if len(configArgs) == 0: - return __getConfigFileNamesDefault(), args, [] - - args = [ x for x in args if not x.startswith(configOptionPrefix) ] - allLists = [ x.replace(configOptionPrefix, '') for x in configArgs ] + args = [ x for x in args if not x.startswith(optionPrefix) ] + allLists = [ x.replace(optionPrefix, '') for x in configArgs ] configFileNames = [] unexisting = [] @@ -91,6 +87,105 @@ def getConfigFileNames(args, checkExistence=False): return configFileNames, args, unexisting # +def __validate_pair(ob): + try: + if not (len(ob) == 2): + #print "Unexpected result:", ob + raise ValueError + except: + return False + return True +# +def __get_environment_from_batch_command(env_cmd, initial=None): + """ + Take a command (either a single command or list of arguments) + and return the environment created after running that command. + Note that if the command must be a batch file or .cmd file, or the + changes to the environment will not be captured. + + If initial is supplied, it is used as the initial environment passed + to the child process. + """ + #if not isinstance(env_cmd, (list, tuple)): + # env_cmd = [env_cmd] + # construct the command that will alter the environment + #env_cmd = subprocess.list2cmdline(env_cmd) + # create a tag so we can tell in the output when the proc is done + tag = 'Done running command' + # construct a command to do accomplish this + cmd = '{env_cmd} && echo "{tag}"'.format(**vars()) + + # launch the process + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, env=initial, shell=True) + # parse the output sent to stdout + lines = proc.stdout + # consume whatever output occurs until the tag is reached + #consume(itertools.takewhile(lambda l: tag not in l, lines)) + # define a way to handle each KEY=VALUE line + handle_line = lambda l: l.rstrip().split('=',1) + # parse key/values into pairs + #pairs = map(handle_line, lines) + pairs = [] + cpt = 0 + while True: + line = lines.readline() + cpt = cpt+1 + if tag in line or cpt > 1000: + break + if line: + pairs.append(line.rstrip().split('=',1)) + # make sure the pairs are valid + valid_pairs = filter(__validate_pair, pairs) + # construct a dictionary of the pairs + result = dict(valid_pairs) + # let the process finish + proc.communicate() + return result +# +def __subtract(ref, dic): + result = {} + for key,val in ref.items(): + if not dic.has_key(key): + result[key] = val + else: + # compare values types + if (type(dic[key]) != type(val)): + result[key] = val + else: + # compare values + if isinstance(val, basestring): + tolist1 = dic[key].split(os.pathsep) + tolist2 = val.split(os.pathsep) + diff = list(set(tolist2)-set(tolist1)) + if diff: + result[key] = os.pathsep.join(diff) + else: + result[key] = val + + return result +# + +def getConfigFileNames(args, checkExistence=False): + configOptionPrefix = "--config=" + configArgs = [ str(x) for x in args if str(x).startswith(configOptionPrefix) ] + if len(configArgs) == 0: + configFileNames, unexist1 = __getConfigFileNamesDefault(), [] + else: + # get configuration filenames + configFileNames, args, unexist1 = __getEnvironmentFileNames(args, configOptionPrefix, checkExistence) + + # get extra environment + extraEnvFileNames, args, unexist2 = __getEnvironmentFileNames(args, "--extra_env=", checkExistence) + before = __get_environment_from_batch_command("env") + after = {} + for filename in extraEnvFileNames: + after.update(__get_environment_from_batch_command(filename)) + pass + + extraEnv = __subtract(after,before) + return configFileNames, extraEnv, args, unexist1+unexist2 +# + def __getScriptPath(scriptName, searchPathList): scriptName = os.path.expanduser(scriptName) if os.path.isabs(scriptName): @@ -133,7 +228,9 @@ class ScriptAndArgsObjectEncoder(json.JSONEncoder): return json.JSONEncoder.default(self, obj) # -def getShortAndExtraArgs(args=[]): +def getShortAndExtraArgs(args=None): + if args is None: + args = [] try: pos = args.index("--") # raise a ValueError if not found short_args = args[:pos] @@ -147,7 +244,9 @@ def getShortAndExtraArgs(args=[]): # # Return an array of ScriptAndArgs objects -def getScriptsAndArgs(args=[], searchPathList=None): +def getScriptsAndArgs(args=None, searchPathList=None): + if args is None: + args = [] short_args, extra_args = getShortAndExtraArgs(args) args = short_args