@@ -4,8 +4,12 @@ import sys
44import os
55import xml .etree .cElementTree as ET
66from subprocess import call
7+ from os import walk
8+ from shutil import copyfile
9+ import re
710
811ESROCOS_YAML = "esrocos.yml"
12+ ROOT_DIR = os .environ ['AUTOPROJ_CURRENT_ROOT' ]
913
1014project_name = ""
1115SRC_DIR = ""
@@ -73,8 +77,8 @@ print "DONE"
7377# ADVERTISE LOCAL DEPS IN LOCAL.AUTOBUILD
7478# ADVERTISE REMOTE DEPS IN UNIVERSE PACKAGE SET
7579
76- localpath = os . environ [ 'AUTOPROJ_CURRENT_ROOT' ] + "/autoproj/" + project_name + ".autobuild"
77- remotepath = os . environ [ 'AUTOPROJ_CURRENT_ROOT' ] + "/autoproj/remotes/esrocos.universe/" + project_name + ".autobuild"
80+ localpath = ROOT_DIR + "/autoproj/" + project_name + ".autobuild"
81+ remotepath = ROOT_DIR + "/autoproj/remotes/esrocos.universe/" + project_name + ".autobuild"
7882
7983try :
8084 with open (localpath , 'w' ) as localout , open (remotepath , 'w' ) as remoteout :
@@ -103,7 +107,7 @@ print "trying to open existing source.yml"
103107
104108#open universe source.yml
105109
106- path = os . environ [ 'AUTOPROJ_CURRENT_ROOT' ] + "/autoproj/remotes/esrocos.universe/source.yml"
110+ path = ROOT_DIR + "/autoproj/remotes/esrocos.universe/source.yml"
107111data = {}
108112
109113try :
@@ -148,11 +152,15 @@ except IOError as err:
148152 sys .exit ()
149153
150154# AUP
155+ print "calling aup...\t " ,
156+ sys .stdout .flush ()
151157
152158aup_arguments = ["autoproj" ,"update" ]
153159
154160call (aup_arguments )
155161
162+ print "DONE"
163+
156164# REMOVE OLD FILES AND RESET CHANGES
157165
158166#print "clean tmp files...",
@@ -167,51 +175,69 @@ call(aup_arguments)
167175
168176#print "DONE"
169177
178+ # COPY ASN FILES FROM SHARED DIR TO LOCAL INSTALL DIR
170179
171- sys . exit ()
180+ # create hash map of packages to copy from
172181
173- # COPY ASN
182+ deps_map = {}
174183
175- print "installing shared types...\t " ,
184+ for dep in pkg_deps :
185+ for key in dep :
186+ if not dep [key ]:
187+ try :
188+ match = key .rsplit ('/' ,1 )[- 1 ]
189+ deps_map [match ] = True
190+ except AttributeError :
191+ print "no match"
192+
193+ # walk directories and copy files
194+ print "locally installing shared types...\t " ,
176195sys .stdout .flush ()
177196
178- SHARED_DIR = "../install/types/"
197+ SHARED_TYPES_DIR = ROOT_DIR + "/install/types/"
198+
199+ # walk through each directory in the installed types
200+ dirs = []
179201
180- aadl_files = []
181- d = []
182-
183- for (dirpath , dirnames , filenames ) in walk (SHARED_DIR ):
184- d .extend (dirnames )
202+ for (dirpath , dirnames , filenames ) in walk (SHARED_TYPES_DIR ):
203+ dirs .extend (dirnames )
185204 break
186205
187- for dirname in d :
188- f = []
206+ for dirname in dirs :
189207
208+ # proceed only if dir is the name of a dependency
209+ try :
210+ if not deps_map [dirname ]:
211+ continue
212+ except KeyError :
213+ continue
214+
215+ # create install dir for dependency
190216 try :
191217 os .makedirs (INSTALL_DIR + dirname + "/asn" )
192218 except OSError as err :
193219 if not err .errno == 17 :
194220 raise err
195221
196- for ( dirpath , dirnames , filenames ) in walk ( SHARED_DIR ):
197- f . extend ( filenames )
198-
199- for filename in f :
222+ # walk files in directory
223+
224+ for ( dirpath , dirnames , filenames ) in walk ( SHARED_TYPES_DIR + "/" + dirname + "/asn" ):
225+ for filename in filenames :
200226 try :
201- # print filename
202- # print "from: "+SHARED_DIR+dirname+"/asn/"+filename
203- # print "to: "+INSTALL_DIR+dirname+"/asn/"+filename
204- copyfile (SHARED_DIR + dirname + "/asn/" + filename ,INSTALL_DIR + dirname + "/asn/" + filename )
227+ copyfile (dirpath + "/" + filename ,INSTALL_DIR + dirname + "/asn/" + filename )
205228 except IOError as err :
206229 raise err
207230
231+ print "DONE"
232+
233+ # COMPILE ASN AND ACN TO MONOLITHIC AADL FILE
234+
208235#getting asn and acn files from folder
209236
210237asn_acn_files = []
211238asn_filenames = []
212239
213240for (dirpath , dirnames , filenames ) in walk (SRC_DIR ):
214- f .extend (filenames )
215241 for filename in filenames :
216242 if filename .endswith (".asn" ) or filename .endswith (".acn" ):
217243 if not filename in asn_filenames :
@@ -221,7 +247,6 @@ for (dirpath, dirnames, filenames) in walk(SRC_DIR):
221247 print "duplicate: " + filename
222248
223249for (dirpath , dirnames , filenames ) in walk (INSTALL_DIR ):
224- f .extend (filenames )
225250 for filename in filenames :
226251 if filename .endswith (".asn" ) or filename .endswith (".acn" ):
227252 if not filename in asn_filenames :
0 commit comments