X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=module_generator%2Fastcompo.py;h=224dd67ae043fbe926e385bca50abbc2107a500f;hb=032b3c67203d4aaf5104556aa485547f8085c374;hp=ca9712416e4d61eef4ea849b6285c40227d34242;hpb=fb3dd165f6c55c29f94f3f2fc57ae761205c0da0;p=tools%2Fyacsgen.git diff --git a/module_generator/astcompo.py b/module_generator/astcompo.py index ca97124..224dd67 100644 --- a/module_generator/astcompo.py +++ b/module_generator/astcompo.py @@ -1,4 +1,4 @@ -# Copyright (C) 2009-2014 EDF R&D +# Copyright (C) 2009-2023 EDF # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -26,14 +26,15 @@ """ import re, os, sys -from gener import Component, Invalid, makedirs +from module_generator.gener import Component, Invalid, makedirs -from pyth_tmpl import pyinitEXEService, pyinitCEXEService, pyinitService -import aster_tmpl -from aster_tmpl import asterCEXEService, asterEXEService -from aster_tmpl import asterService, asterEXECompo, asterCEXECompo, asterCompo -from aster_tmpl import comm, make_etude, cexe, exeaster -from aster_tmpl import container, component +from module_generator.pyth_tmpl import pyinitEXEService, pyinitCEXEService, pyinitService +from module_generator import aster_tmpl +from module_generator.aster_tmpl import asterCEXEService, asterEXEService +from module_generator.aster_tmpl import asterService, asterEXECompo, asterCEXECompo, asterCompo +from module_generator.aster_tmpl import comm, make_etude, cexe, exeaster +from module_generator.aster_tmpl import container, component +from module_generator.aster_tmpl import cmake_src_compo_aster, cmake_src_compo_aster_lib class ASTERComponent(Component): """ @@ -60,13 +61,14 @@ class ASTERComponent(Component): exe_path="launch.sh", argv=["-memjeveux","4"]) """ - def __init__(self, name, services=None, libs="", rlibs="", aster_dir="", - python_path=None, argv=None, kind="lib", exe_path=None): + def __init__(self, name, services=None, libs="", rlibs="", aster_dir="", + python_path=None, argv=None, kind="lib", exe_path=None, aster_version_type="stable"): """initialise component attributes""" self.aster_dir = aster_dir self.python_path = python_path or [] self.argv = argv or [] self.exe_path = exe_path + self.aster_version_type = aster_version_type Component.__init__(self, name, services, impl="ASTER", libs=libs, rlibs=rlibs, kind=kind) @@ -99,6 +101,12 @@ class ASTERComponent(Component): if not found: serv.inport.insert(0, ("jdc", "string")) + def libraryName(self): + """ Name of the target library + No library for an aster component + """ + return "" + def getAsterPythonPath(self): """Directory of aster python modules """ @@ -110,20 +118,6 @@ class ASTERComponent(Component): return aster_python_path - def getConfig(self, gen): - """Content of the config.txt file - """ - path_compo=os.path.join(os.path.abspath(gen.module.prefix),'lib', - 'python%s.%s' % (sys.version_info[0], sys.version_info[1]), - 'site-packages','salome','%s_component.py'%self.name) - conf="""ENV_SH | env | - | $ASTER_VERSION_DIR/share/aster/profile.sh -BINELE | bin | - | $ASTER_VERSION_DIR/share/aster/elements -SRCPY | src | - | %s -ARGPYT | exec | - | %s -""" % (self.getAsterPythonPath(), path_compo) - - return conf - def makeCompo(self, gen): """drive the generation of SALOME module files and code files depending on the choosen component kind @@ -132,21 +126,18 @@ ARGPYT | exec | - | %s #on suppose que les composants ASTER sont homogenes (utilisent meme install) gen.aster = self.aster_dir - #get ASTER version - f = os.path.join(self.aster_dir, self.getAsterPythonPath(), 'Accas', 'properties.py') - self.version=(0,0,0) - if os.path.isfile(f): - mydict = {} - execfile(f, mydict) - v,r,p = mydict['version'].split('.') - self.version=(int(v),int(r),int(p)) - if self.kind == "lib": - return {"Makefile.am":gen.makeMakefile(self.getMakefileItems(gen)), + f = self.name+".py" + return {"CMakeLists.txt":cmake_src_compo_aster_lib.substitute(sources=f), filename:self.makeaster(gen)} elif self.kind == "cexe": fdict=self.makecexepath(gen) - d= {"Makefile.am":gen.makeMakefile(self.getMakefileItems(gen)), + sources = self.name + ".py\n " + self.name + "_container.py" + d= {"CMakeLists.txt":cmake_src_compo_aster.substitute( + sources=sources, + module=gen.module.name, + resources=self.name+"_config.txt", + scripts=self.name+".exe"), self.name+".exe":cexe.substitute(compoexe=self.exe_path), filename:self.makecexeaster(gen) } @@ -154,65 +145,37 @@ ARGPYT | exec | - | %s return d elif self.kind == "exe": fdict=self.makeexepath(gen) - d= {"Makefile.am":gen.makeMakefile(self.getMakefileItems(gen)), + sources = self.name + "_module.py\n " + sources = sources + self.name + "_component.py" + d= {"CMakeLists.txt":cmake_src_compo_aster.substitute( + sources=sources, + module=gen.module.name, + resources=self.name+"_config.txt", + scripts=self.name+".exe"), self.name+".exe":exeaster.substitute(compoexe=self.exe_path), self.name+"_module.py":self.makeexeaster(gen) } d.update(fdict) return d - def getMakefileItems(self,gen): - makefileItems={"header":"include $(top_srcdir)/adm_local/make_common_starter.am"} - if self.kind == "lib": - makefileItems["salomepython_PYTHON"]=[self.name+".py"] - elif self.kind == "exe": - makefileItems["salomepython_PYTHON"]=[self.name+"_module.py",self.name+"_component.py"] - if self.version < (10,1,2): - makefileItems["salomepython_PYTHON"].append("E_SUPERV.py") - makefileItems["dist_salomescript_SCRIPTS"]=[self.name+".exe"] - makefileItems["salomeres_DATA"]=[self.name+"_config.txt"] - elif self.kind == "cexe": - makefileItems["salomepython_PYTHON"]=[self.name+".py",self.name+"_container.py"] - if self.version < (10,1,2): - makefileItems["salomepython_PYTHON"].append("E_SUPERV.py") - makefileItems["dist_salomescript_SCRIPTS"]=[self.name+".exe"] - makefileItems["salomeres_DATA"]=[self.name+"_config.txt"] - return makefileItems - - def makeexepath(self, gen): """standalone component: generate files for calculation code""" fdict={} - - if self.version < (10,1,2): - #patch to E_SUPERV.py - fil = open(os.path.join(self.aster_dir, "bibpyt", "Execution", "E_SUPERV.py")) - esuperv = fil.read() - fil.close() - esuperv = re.sub("def Execute\(self\)", "def Execute(self, params)", esuperv) - esuperv = re.sub("j=self.JdC", "self.jdc=j=self.JdC", esuperv) - esuperv = re.sub("\*\*args", "context_ini=params, **args", esuperv) - esuperv = re.sub("def main\(self\)", "def main(self,params={})", esuperv) - esuperv = re.sub("return self.Execute\(\)", "return self.Execute(params)", esuperv) - fdict["E_SUPERV.py"]=esuperv - #use a specific main program (modification of config.txt file) config = "" path_config = os.path.join(self.aster_dir, "config.txt") if os.path.exists(path_config) : - # old aster version - old mechanism kept for compatibility fil = open(path_config) config = fil.read() fil.close() - config = re.sub(" profile.sh", os.path.join(self.aster_dir, "profile.sh"), config) - path=os.path.join(os.path.abspath(gen.module.prefix),'lib', - 'python%s.%s' % (sys.version_info[0], sys.version_info[1]), - 'site-packages','salome','%s_component.py'%self.name) - config = re.sub("Execution\/E_SUPERV.py", path, config) +# config = re.sub(" profile.sh", os.path.join(self.aster_dir, "profile.sh"), config) +# path=os.path.join(os.path.abspath(gen.module.prefix),'lib', +# 'python%s.%s' % (sys.version_info[0], sys.version_info[1]), +# 'site-packages','salome','%s_component.py'%self.name) +# config = re.sub("Execution\/E_SUPERV.py", path, config) else : - # getConfig doesn't work with older versions of aster - config = self.getConfig(gen) + config = "# a completer:%s n'existe pas" % path_config fdict["%s_config.txt" % self.name] = config fdict["%s_component.py" % self.name] = component.substitute(component=self.name) @@ -223,49 +186,24 @@ ARGPYT | exec | - | %s """specific container: generate files""" fdict={} - - if self.version < (10,1,2): - #patch to E_SUPERV.py - fil = open(os.path.join(self.aster_dir, "bibpyt", "Execution", "E_SUPERV.py")) - esuperv = fil.read() - fil.close() - esuperv = re.sub("def Execute\(self\)", "def Execute(self, params)", esuperv) - esuperv = re.sub("j=self.JdC", "self.jdc=j=self.JdC", esuperv) - esuperv = re.sub("\*\*args", "context_ini=params, **args", esuperv) - esuperv = re.sub("def main\(self\)", "def main(self,params={})", esuperv) - esuperv = re.sub("return self.Execute\(\)", "return self.Execute(params)", esuperv) - fdict["E_SUPERV.py"]=esuperv - - #use a specific main program - config = "" - path_config = os.path.join(self.aster_dir, "config.txt") - if os.path.exists(path_config) : - # old aster version - old mechanism kept for compatibility - fil = open(path_config) - config = fil.read() - fil.close() - config = re.sub(" profile.sh", os.path.join(self.aster_dir, "profile.sh"), config) - path=os.path.join(os.path.abspath(gen.module.prefix),'lib', - 'python%s.%s' % (sys.version_info[0], sys.version_info[1]), - 'site-packages','salome','%s_container.py' % self.name) - config = re.sub("Execution\/E_SUPERV.py", path, config) - else : - # getConfig doesn't work with older versions of aster - config = self.getConfig(gen) - fdict["%s_container.py" % self.name] = container - fdict["%s_config.txt" % self.name] = config - return fdict def getImportESuperv(self): - importesuperv="" - if self.version < (10,1,2): - importesuperv="from E_SUPERV import SUPERV" - else : - importesuperv="""sys.path=["%s"]+sys.path + importesuperv=""" +VERS="%s" +import os.path as osp +from asrun.run import AsRunFactory +from asrun.config import AsterConfig + +run = AsRunFactory() +path = run.get_version_path(VERS) +cfg = AsterConfig(osp.join(path, 'config.txt')) +pypath = cfg['REPPY'][0] + +sys.path.insert(0, pypath) from Execution.E_SUPERV import SUPERV -""" % self.getAsterPythonPath() +""" % self.aster_version_type return importesuperv @@ -282,7 +220,7 @@ from Execution.E_SUPERV import SUPERV if typ=="file":continue #files are not passed through service interface params.append(name) if typ == "pyobj": - datas.append('"%s":cPickle.loads(%s)' % (name, name)) + datas.append('"%s":pickle.loads(%s)' % (name, name)) else: datas.append('"%s":%s' % (name, name)) #ajout de l'adresse du composant @@ -296,7 +234,7 @@ from Execution.E_SUPERV import SUPERV if typ=="file":continue #files are not passed through service interface params.append(name) if typ == "pyobj": - datas.append('cPickle.dumps(j.g_context["%s"],-1)'%name) + datas.append('pickle.dumps(j.g_context["%s"],-1)'%name) else: datas.append('j.g_context["%s"]'%name) outparams = ",".join(params) @@ -345,7 +283,7 @@ from Execution.E_SUPERV import SUPERV if typ=="file":continue #files are not passed through service interface params.append(name) if typ == "pyobj": - datas.append('"%s":cPickle.loads(%s)' % (name, name)) + datas.append('"%s":pickle.loads(%s)' % (name, name)) else: datas.append('"%s":%s' % (name, name)) #ajout de l'adresse du composant @@ -358,7 +296,7 @@ from Execution.E_SUPERV import SUPERV for name, typ in serv.outport: params.append(name) if typ == "pyobj": - datas.append('cPickle.dumps(j.g_context["%s"],-1)'%name) + datas.append('pickle.dumps(j.g_context["%s"],-1)'%name) else: datas.append('j.g_context["%s"]'%name) outparams = ",".join(params) @@ -416,7 +354,7 @@ from Execution.E_SUPERV import SUPERV if typ=="file":continue #files are not passed through service interface params.append(name) if typ == "pyobj": - datas.append('"%s":cPickle.loads(%s)' % (name, name)) + datas.append('"%s":pickle.loads(%s)' % (name, name)) else: datas.append('"%s":%s' % (name, name)) #ajout de l'adresse du composant @@ -429,7 +367,7 @@ from Execution.E_SUPERV import SUPERV for name, typ in serv.outport: params.append(name) if typ == "pyobj": - datas.append('cPickle.dumps(j.g_context["%s"],-1)'%name) + datas.append('pickle.dumps(j.g_context["%s"],-1)'%name) else: datas.append('j.g_context["%s"]'%name) outparams = ",".join(params)