1 # -*- coding: utf-8 -*-
3 Ce module sert à construire les distributions d'EFICAS en fonction
5 Les distributions sont :
6 - un tar.gz pour UNIX ne contenant pas mxTextTools
7 - un zip pour Windows contenant mx TextTools préinstallé
8 L'utilisation de ce module est la suivante :
9 1- Se mettre dans un répertoire de travail
10 2- Configurer son environnement pour utiliser le référentiel CVS EFICAS
11 3- Exporter les sources d'EficasV1 par la commande :
12 cvs export -r TAG -d Eficas_export EficasV1
13 ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1)
14 4- Copier le répertoire fourni par Aster (ACCAS6.2.0) au meme niveau que Eficas_export
15 5- Aller dans le répertoire Eficas_export
16 6- Executer le script sdist.py
18 Ce qui a pour effet de creer un repertoire dist contenant les 2 distributions
19 et de les copier dans le répertoire indiqué par dir_download s'il est accessible
22 import os,shutil,glob,sys
25 version="$Name: V7_main $"[7:-2] or 'Test1_4'
26 # ==========Path du noyau fourni par Aster====================
27 path_Noyau="../../AccasAster"
28 # ============================================================
29 nom_distrib="Eficas"+version
30 path_distrib=os.path.join("dist",nom_distrib)
31 path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools"
32 dir_download= "/home/eficas/WWW/telechargement/eficas"
35 if os.path.isdir('dist'):shutil.rmtree('dist')
37 copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL','NEWS'])
39 copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
40 copyfiles('../InterfaceTK',os.path.join(path_distrib,'InterfaceTK'),['*.py','faqs.txt'])
41 copyfiles('../InterfaceQT4',os.path.join(path_distrib,'InterfaceQT4'),['*.py'])
42 copyfiles('../UiQT4',os.path.join(path_distrib,'UiQT4'),['*.ui','makefile'])
43 copyfiles('../Traducteur',os.path.join(path_distrib,'Traducteur'),['*.py'])
44 copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
45 copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
46 copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py'])
47 copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
49 copyfiles('../Aide',os.path.join(path_distrib,'Aide'),['*_ASTER.adp'])
50 copyfiles('../Aide/fichiers_ASTER',os.path.join(path_distrib,'Aide','fichiers_ASTER'),['*'])
52 copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py'])
53 copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*'])
54 copyfiles('.',os.path.join(path_distrib,'AIDE','fichiers'),['INSTALL','NEWS'])
55 copyfiles('../Editeur',os.path.join(path_distrib,'AIDE','fichiers'),['faqs.txt'])
57 copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py',
64 'configuration_ASTER.py',
70 # Les Catalogues, Macros, Materiaux et SD
71 # copyfiles('Cata/Utilitai',os.path.join(path_distrib,'Aster','Cata','Utilitai'),['*.py'])
72 # copyfiles('Cata/pre74',os.path.join(path_distrib,'Aster','Cata','pre74'),['*.py'])
74 #copyfiles('Cata/cataSTA6',os.path.join(path_distrib,'Aster','Cata','cataSTA6'),['*.py'])
75 #copyfiles('Cata/cataSTA6/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA6','Macro'),['*.py'])
77 #copyfiles('Cata/cataSTA7',os.path.join(path_distrib,'Aster','Cata','cataSTA7'),['*.py'])
78 #copyfiles('Cata/cataSTA7/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA7','Macro'),['*.py'])
79 #copyfiles('Cata/cataSTA7/materiau',os.path.join(path_distrib,'Aster','Cata','cataSTA7/materiau'),['README.py'])
81 copyfiles('Cata/cataSTA8',os.path.join(path_distrib,'Aster','Cata','cataSTA8'),['*.py'])
82 copyfiles('Cata/cataSTA8/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA8/Macro'),['*.py'])
83 copyfiles('Cata/cataSTA8/materiau',os.path.join(path_distrib,'Aster','Cata','cataSTA8/materiau'),['README.py'])
85 copyfiles('Cata/cataSTA9',os.path.join(path_distrib,'Aster','Cata','cataSTA9'),['*.py'])
86 copyfiles('Cata/cataSTA9/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA9/Macro'),['*.py'])
87 copyfiles('Cata/cataSTA9/materiau',os.path.join(path_distrib,'Aster','Cata','cataSTA9/materiau'),['README.py'])
88 copyfiles('Cata/cataSTA9/SD',os.path.join(path_distrib,'Aster','Cata','cataSTA9/SD'),['*.py'])
90 copyfiles('Cata/cataSTA10',os.path.join(path_distrib,'Aster','Cata','cataSTA10'),['*.py'])
91 copyfiles('Cata/cataSTA10/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA10/Macro'),['*.py'])
92 #copyfiles('Cata/cataSTA10/materiau',os.path.join(path_distrib,'Aster','Cata','cataSTA10/materiau'),['README.py'])
93 copyfiles('Cata/cataSTA10/SD',os.path.join(path_distrib,'Aster','Cata','cataSTA10/SD'),['*.py'])
95 copyfiles('Cata',os.path.join(path_distrib,'Aster','Cata'),['*9c_clefs_docu'])
96 copyfiles('../Aster/Cata',os.path.join(path_distrib,'Aster'),['aster.py',])
98 # ______________________
100 copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
101 copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py'])
102 copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
103 copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif','*.png'])
104 copyfiles('../Editeur/Patrons',os.path.join(path_distrib,'Editeur','Patrons'),['*.com*'])
105 copyfiles('../Editeur/Patrons/ASTER',os.path.join(path_distrib,'Editeur','Patrons','ASTER'),['*.com*'])
107 copyfiles(os.path.join(path_Noyau,'Noyau'),os.path.join(path_distrib,'Noyau'),['*.py'])
108 copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py'])
109 copyfiles(os.path.join(path_Noyau,'Accas'),os.path.join(path_distrib,'Aster'),['properties.py'])
110 copyfiles(os.path.join(path_Noyau,'Cata'),os.path.join(path_distrib,'Aster','Cata'),['__init__.py',])
111 copyfiles(os.path.join(path_Noyau,'Macro'),os.path.join(path_distrib,'Aster','Cata','cataSTA9','Macro'),['.py'])
112 #os.system("mv "+path_distrib+"/Aster/Cata/cata_STA9.py "+path_distrib+"/Aster/Cata/cataSTA9/cata.py")
114 copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py'])
115 copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py'])
116 copyfiles('../Pmw',os.path.join(path_distrib,'Pmw'),['*.py'])
117 copyfiles('../Pmw/Pmw_1_2',os.path.join(path_distrib,'Pmw','Pmw_1_2'),['*.py'])
118 copyfiles('../Pmw/Pmw_1_2/lib',os.path.join(path_distrib,'Pmw','Pmw_1_2','lib'),['*.py','Pmw.def'])
121 tarball= maketarball('dist',nom_distrib,nom_distrib)
123 shutil.copy(tarball,dir_download)
125 print "Repertoire de download inconnu : ",dir_download
127 shutil.copy('prefs.py.win',os.path.join(path_distrib,'Aster','prefs.py'))
128 shutil.copy('editeur.ini.win',os.path.join(path_distrib,'Aster','editeur.ini'))
131 shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools'))
133 print "Impossible de recuperer mxTextTools : ",dir_download
136 zipfile= makezipfile('dist',nom_distrib,nom_distrib)
138 shutil.copy(zipfile,dir_download)
140 print "Repertoire de download inconnu : ",dir_download
142 def make_dir(dir_cible):
143 if type(dir_cible) is not types.StringType:
144 raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
145 head,tail=os.path.split(dir_cible)
147 while head and tail and not os.path.isdir(head):
148 head,tail=os.path.split(head)
149 tails.insert(0, tail)
152 head = os.path.join(head, d)
153 if not os.path.isdir(head):os.mkdir(head)
156 def copyfiles(dir_origin,dir_cible,listfiles):
157 if not os.path.isdir(dir_cible):make_dir(dir_cible)
158 for glob_files in listfiles:
159 for file in glob.glob(os.path.join(dir_origin,glob_files)):
160 shutil.copy(file,dir_cible)
163 def maketarball(dir_trav,dir_cible,nom_tar):
167 os.system("tar -cf "+nom_tar+".tar "+dir_cible)
168 os.system("gzip -f9 "+nom_tar+".tar ")
170 return os.path.join(dir_trav,nom_tar+".tar.gz")
172 def makezipfile(dir_trav,dir_cible,nom_tar):
175 os.system("zip -rq "+nom_tar+".zip "+dir_cible)
177 return os.path.join(dir_trav,nom_tar+".zip")