Salome HOME
ajout des fichiers necessaires pour la construction de la distrib Aster
[tools/eficas.git] / Aster / sdist.py
1 """
2      Ce module sert à construire les distributions d'EFICAS en fonction
3      du tag CVS courant
4      Les distributions sont :
5       - un tar.gz pour UNIX ne contenant pas mxTextTools
6       - un zip pour Windows contenant mx TextTools préinstallé
7      L'utilisation de ce module est la suivante :
8       1- Se mettre dans un répertoire de travail
9       2- Configurer son environnement pour utiliser le référentiel CVS EFICAS
10       3- Exporter les sources d'EficasV1 par la commande :
11             cvs export -r TAG -d Eficas_export EficasV1
12          ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1)
13       4- Copier le répertoire fourni par Aster (ACCAS6.2.0) au meme niveau que Eficas_export
14       5- Aller dans le répertoire Eficas_export
15       6- Executer le script sdist.py
16              python sdist.py
17          Ce qui a pour effet de creer un repertoire dist contenant les 2 distributions
18          et de les copier dans le répertoire indiqué par dir_download s'il est accessible
19
20 """
21 import os,shutil,glob,sys
22 import types
23
24 version="$Name:  $"[7:-2] or 'Test'
25
26 path_Noyau="../../../Tutorial/Superv"
27 nom_distrib="Eficas"+version+"AsterSTA6"
28 path_distrib=os.path.join("dist",nom_distrib)
29 path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools"
30 dir_download= "/home/eficas/WWW/telechargement/eficas"
31
32 def main():
33    if os.path.isdir('dist'):shutil.rmtree('dist')
34
35    copyfiles('.',path_distrib,['README','LICENSE.TERMS','INSTALL'])
36
37    copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
38    copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
39    copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
40    copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
41    copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py',
42                                                             'editeur.ini',
43                                                             'eficas_aster.py',
44                                                            ])
45    copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
46    copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py'])
47
48    copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
49
50    copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif'])
51
52    copyfiles(os.path.join(path_Noyau,'Noyau'),os.path.join(path_distrib,'Noyau'),['*.py'])
53    copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py'])
54    copyfiles(os.path.join(path_Noyau,'Cata'),os.path.join(path_distrib,'Aster','Cata'),['*.py',
55                                                                                        ])
56
57    copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py'])
58    copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py'])
59
60    tarball= maketarball('dist',nom_distrib,nom_distrib)
61    try:
62       shutil.copy(tarball,dir_download)
63    except:
64       print "Repertoire de download inconnu : ",dir_download
65
66    try:
67       shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools'))
68    except:
69       print "Impossible de recuperer mxTextTools : ",dir_download
70       sys.exit(1)
71
72    zipfile= makezipfile('dist',nom_distrib,nom_distrib)
73    try:
74       shutil.copy(zipfile,dir_download)
75    except:
76       print "Repertoire de download inconnu : ",dir_download
77
78 def make_dir(dir_cible):
79    if type(dir_cible) is not types.StringType:
80       raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
81    head,tail=os.path.split(dir_cible)
82    tails=[tail]
83    while head and tail and not os.path.isdir(head):
84       head,tail=os.path.split(head)
85       tails.insert(0, tail)
86
87    for d in tails:
88       head = os.path.join(head, d)
89       if not os.path.isdir(head):os.mkdir(head)
90
91
92 def copyfiles(dir_origin,dir_cible,listfiles):
93    if not os.path.isdir(dir_cible):make_dir(dir_cible)
94    for glob_files in listfiles:
95       for file in glob.glob(os.path.join(dir_origin,glob_files)):
96          shutil.copy(file,dir_cible)
97
98 def maketarball(dir_trav,dir_cible,nom_tar):
99    prev=os.getcwd()
100    print prev
101    os.chdir(dir_trav)
102    os.system("tar -cf "+nom_tar+".tar "+dir_cible)
103    os.system("gzip -f9 "+nom_tar+".tar ")
104    os.chdir(prev)
105    return os.path.join(dir_trav,nom_tar+".tar.gz")
106
107 def makezipfile(dir_trav,dir_cible,nom_tar):
108    prev=os.getcwd()
109    os.chdir(dir_trav)
110    os.system("zip -rq "+nom_tar+".zip "+dir_cible)
111    os.chdir(prev)
112    return os.path.join(dir_trav,nom_tar+".zip")
113
114 main()
115