From 5cdde6e62f8100702e879bfad827f20ca71c1d7c Mon Sep 17 00:00:00 2001 From: eficas <> Date: Wed, 4 Sep 2002 17:04:17 +0000 Subject: [PATCH] correction pb reuse dans Build_sd et ajout alphasdist.py --- Aster/alphasdist.py | 120 +++++++++++++++++++++++++++++++++++++++++++ Ihm/I_ETAPE.py | 1 + Ihm/I_MACRO_ETAPE.py | 1 + 3 files changed, 122 insertions(+) create mode 100644 Aster/alphasdist.py diff --git a/Aster/alphasdist.py b/Aster/alphasdist.py new file mode 100644 index 00000000..8095a873 --- /dev/null +++ b/Aster/alphasdist.py @@ -0,0 +1,120 @@ +""" + Ce module sert à construire les distributions de versions alpha d'EFICAS en fonction + du tag CVS courant (Vx_yaz). Une version alpha est une version dont toutes les fonctionnalités + ne sont pas implémentées. On utilise pour ces versions, les packages Noyau Validation Cata et Macro + locaux. + Les distributions sont : + - un tar.gz pour UNIX ne contenant pas mxTextTools + - un zip pour Windows contenant mx TextTools préinstallé + L'utilisation de ce module est la suivante : + 1- Se mettre dans un répertoire de travail + 2- Configurer son environnement pour utiliser le référentiel CVS EFICAS + 3- Exporter les sources d'Eficas par la commande : + cvs export -r TAG -d Eficas_export EficasV1_2 + ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_3a1) + 4- Aller dans le répertoire Eficas_export + 4- Executer le script alphasdist.py + python alphasdist.py + Ce qui a pour effet de creer un repertoire dist contenant les 2 distributions + et de les copier dans le répertoire indiqué par dir_download s'il est accessible + +""" +import os,shutil,glob,sys +import types + +version="$Name: $"[7:-2] or 'Test1_3' +# ==========Path du noyau local ==================== +path_Noyau=".." +# ============================================================ +nom_distrib="Eficas"+version+"AsterSTA6" +path_distrib=os.path.join("dist",nom_distrib) +path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools" +dir_download= "/home/eficas/WWW/telechargement/eficas" + +def main(): + if os.path.isdir('dist'):shutil.rmtree('dist') + + copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL']) + + copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt']) + copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py']) + copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py']) + copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py']) + copyfiles('../Macro',os.path.join(path_distrib,'Macro'),['*.py']) + copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py']) + copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE/fichiers'),['*']) + copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py', + 'editeur.ini', + 'eficas_aster.py', + ]) + copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py']) + copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py']) + + copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py']) + + copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif']) + + copyfiles(os.path.join(path_Noyau,'Noyau'),os.path.join(path_distrib,'Noyau'),['*.py']) + copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py']) + copyfiles('../Aster/Cata',os.path.join(path_distrib,'Aster','Cata'),['*.py', + ]) + + copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py']) + copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py']) + + tarball= maketarball('dist',nom_distrib,nom_distrib) + try: + shutil.copy(tarball,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + + try: + shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools')) + except: + print "Impossible de recuperer mxTextTools : ",dir_download + sys.exit(1) + + zipfile= makezipfile('dist',nom_distrib,nom_distrib) + try: + shutil.copy(zipfile,dir_download) + except: + print "Repertoire de download inconnu : ",dir_download + +def make_dir(dir_cible): + if type(dir_cible) is not types.StringType: + raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible` + head,tail=os.path.split(dir_cible) + tails=[tail] + while head and tail and not os.path.isdir(head): + head,tail=os.path.split(head) + tails.insert(0, tail) + + for d in tails: + head = os.path.join(head, d) + if not os.path.isdir(head):os.mkdir(head) + + +def copyfiles(dir_origin,dir_cible,listfiles): + if not os.path.isdir(dir_cible):make_dir(dir_cible) + for glob_files in listfiles: + for file in glob.glob(os.path.join(dir_origin,glob_files)): + shutil.copy(file,dir_cible) + +def maketarball(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + print prev + os.chdir(dir_trav) + os.system("tar -cf "+nom_tar+".tar "+dir_cible) + os.system("gzip -f9 "+nom_tar+".tar ") + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".tar.gz") + +def makezipfile(dir_trav,dir_cible,nom_tar): + prev=os.getcwd() + os.chdir(dir_trav) + os.system("zip -rq "+nom_tar+".zip "+dir_cible) + os.chdir(prev) + return os.path.join(dir_trav,nom_tar+".zip") + +main() + diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index dfebffa2..85dc9a33 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -355,6 +355,7 @@ class ETAPE(I_MCCOMPO.MCCOMPO): # meme en cas d'erreur et reporter l'emission du message d'erreur a la phase de validation if not self.isvalid(sd='non') : return else:self.state='undetermined' + self.sdnom=nom try: if self.parent: sd= self.parent.create_sdprod(self,nom) diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index 59ddb8e9..e2aa3f89 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -194,6 +194,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE): # CCAR : meme modification que dans I_ETAPE if not self.isvalid(sd='non') : return else:self.state='undetermined' + self.sdnom=nom try: # On positionne la macro self en tant que current_step pour que les # étapes créées lors de l'appel à sd_prod et à op_init aient la macro -- 2.39.2