1 # -*- coding: utf-8 -*-
3 Ce module sert à construire les distributions de versions alpha d'EFICAS en fonction
4 du tag CVS courant (Vx_yaz). Une version alpha est une version dont toutes les fonctionnalités
5 ne sont pas implémentées. On utilise pour ces versions, les packages Noyau Validation Cata et Macro
7 Les distributions sont :
8 - un tar.gz pour UNIX ne contenant pas mxTextTools
9 - un zip pour Windows contenant mx TextTools préinstallé
10 L'utilisation de ce module est la suivante :
11 1- Se mettre dans un répertoire de travail
12 2- Configurer son environnement pour utiliser le référentiel CVS EFICAS
13 3- Exporter les sources d'Eficas par la commande :
14 cvs export -r TAG -d Eficas_export EficasV1_2
15 ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_3a1)
16 4- Aller dans le répertoire Eficas_export
17 4- Executer le script alphasdist.py
19 Ce qui a pour effet de creer un repertoire dist contenant les 2 distributions
20 et de les copier dans le répertoire indiqué par dir_download s'il est accessible
23 import os,shutil,glob,sys
26 version="$Name: $"[7:-2] or 'Test1_4'
27 # ==========Path du noyau local ====================
29 # ============================================================
30 nom_distrib="Eficas"+version+"AsterSTA7"
31 path_distrib=os.path.join("dist",nom_distrib)
32 path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools"
33 dir_download= "/home/eficas/WWW/telechargement/eficas"
36 if os.path.isdir('dist'):shutil.rmtree('dist')
38 copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL'])
40 copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
41 copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
42 copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
43 copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py'])
44 copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
45 copyfiles('Cata/Macro',os.path.join(path_distrib,'Aster','Cata','Macro'),['*.py'])
46 copyfiles('Cata/pre74',os.path.join(path_distrib,'Aster','Cata','pre74'),['*.py'])
47 copyfiles('Cata/cataSTA5',os.path.join(path_distrib,'Aster','Cata','cataSTA5'),['*.py'])
48 copyfiles('Cata/cataSTA6',os.path.join(path_distrib,'Aster','Cata','cataSTA6'),['*.py'])
49 copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py'])
50 copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*'])
51 copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py',
56 copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
57 copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py'])
59 copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
61 copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif'])
63 copyfiles(os.path.join(path_Noyau,'Noyau'),os.path.join(path_distrib,'Noyau'),['*.py'])
64 copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py'])
65 copyfiles('../Aster/Cata',os.path.join(path_distrib,'Aster','Cata'),['*.py',
68 copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py'])
69 copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py'])
71 tarball= maketarball('dist',nom_distrib,nom_distrib)
73 shutil.copy(tarball,dir_download)
75 print "Repertoire de download inconnu : ",dir_download
78 shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools'))
80 print "Impossible de recuperer mxTextTools : ",dir_download
83 zipfile= makezipfile('dist',nom_distrib,nom_distrib)
85 shutil.copy(zipfile,dir_download)
87 print "Repertoire de download inconnu : ",dir_download
89 def make_dir(dir_cible):
90 if type(dir_cible) is not types.StringType:
91 raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
92 head,tail=os.path.split(dir_cible)
94 while head and tail and not os.path.isdir(head):
95 head,tail=os.path.split(head)
99 head = os.path.join(head, d)
100 if not os.path.isdir(head):os.mkdir(head)
103 def copyfiles(dir_origin,dir_cible,listfiles):
104 if not os.path.isdir(dir_cible):make_dir(dir_cible)
105 for glob_files in listfiles:
106 for file in glob.glob(os.path.join(dir_origin,glob_files)):
107 shutil.copy(file,dir_cible)
109 def maketarball(dir_trav,dir_cible,nom_tar):
113 os.system("tar -cf "+nom_tar+".tar "+dir_cible)
114 os.system("gzip -f9 "+nom_tar+".tar ")
116 return os.path.join(dir_trav,nom_tar+".tar.gz")
118 def makezipfile(dir_trav,dir_cible,nom_tar):
121 os.system("zip -rq "+nom_tar+".zip "+dir_cible)
123 return os.path.join(dir_trav,nom_tar+".zip")