1 # -*- coding: utf-8 -*-
3 Ce module sert à construire les distributions d'EFICAS pour SEP
4 en fonction du tag CVS courant
5 Les distributions sont :
6 - un tar.gz pour UNIX ne contenant pas mxTextTools
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 5- Aller dans le répertoire Eficas_export
14 6- Executer le script sdist.py
16 Ce qui a pour effet de creer un repertoire dist contenant la distribution
17 et de la copier dans le répertoire indiqué par dir_download s'il est accessible
20 import os,shutil,glob,sys
23 nom_distrib="QTEficasSEP_V1_0"
24 path_distrib=os.path.join("dist",nom_distrib)
25 dir_download= "/home/eficas/WWW/telechargement/eficas"
28 if os.path.isdir('dist'):shutil.rmtree('dist')
30 copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL','NEWS'])
32 copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
33 copyfiles('../InterfaceQT4',os.path.join(path_distrib,'InterfaceQT4'),['*.py','faqs.txt'])
34 copyfiles('../UiQT4',os.path.join(path_distrib,'UiQT4'),['*.ui','makefile'])
35 copyfiles('../Sous_epaisseur',os.path.join(path_distrib,'Sous_epaisseur'),['*.py','*.ini'])
36 copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
37 copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
38 copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py'])
39 copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
41 copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py'])
42 copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*'])
43 copyfiles('.',os.path.join(path_distrib,'AIDE','fichiers'),['INSTALL','NEWS'])
44 copyfiles('../Editeur',os.path.join(path_distrib,'AIDE','fichiers'),['faqs.txt'])
45 # ______________________
47 copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
48 os.system("rm -rf .././convert/Parserv5 ")
49 os.system("rm -rf .././convert/convert_asterv5.py ")
50 copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
51 copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif'])
52 copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.png'])
53 copyfiles('../Editeur/Patrons/',os.path.join(path_distrib,'Editeur','Patrons'),['*.com*'])
55 copyfiles('../Noyau',os.path.join(path_distrib,'Noyau'),['*.py'])
56 copyfiles('../Validation',os.path.join(path_distrib,'Validation'),['*.py'])
59 tarball= maketarball('dist',nom_distrib,nom_distrib)
61 shutil.copy(tarball,dir_download)
63 print "Repertoire de download inconnu : ",dir_download
67 def make_dir(dir_cible):
68 if type(dir_cible) is not types.StringType:
69 raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
70 head,tail=os.path.split(dir_cible)
72 while head and tail and not os.path.isdir(head):
73 head,tail=os.path.split(head)
77 head = os.path.join(head, d)
78 if not os.path.isdir(head):os.mkdir(head)
81 def copyfiles(dir_origin,dir_cible,listfiles):
82 if not os.path.isdir(dir_cible):make_dir(dir_cible)
83 for glob_files in listfiles:
84 for file in glob.glob(os.path.join(dir_origin,glob_files)):
85 shutil.copy(file,dir_cible)
88 def maketarball(dir_trav,dir_cible,nom_tar):
92 os.system("tar -cf "+nom_tar+".tar "+dir_cible)
93 os.system("gzip -f9 "+nom_tar+".tar ")
95 return os.path.join(dir_trav,nom_tar+".tar.gz")