@@ -4,8 +4,12 @@ import sys
4
4
import os
5
5
import xml .etree .cElementTree as ET
6
6
from subprocess import call
7
+ from os import walk
8
+ from shutil import copyfile
9
+ import re
7
10
8
11
ESROCOS_YAML = "esrocos.yml"
12
+ ROOT_DIR = os .environ ['AUTOPROJ_CURRENT_ROOT' ]
9
13
10
14
project_name = ""
11
15
SRC_DIR = ""
@@ -73,8 +77,8 @@ print "DONE"
73
77
# ADVERTISE LOCAL DEPS IN LOCAL.AUTOBUILD
74
78
# ADVERTISE REMOTE DEPS IN UNIVERSE PACKAGE SET
75
79
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"
78
82
79
83
try :
80
84
with open (localpath , 'w' ) as localout , open (remotepath , 'w' ) as remoteout :
@@ -103,7 +107,7 @@ print "trying to open existing source.yml"
103
107
104
108
#open universe source.yml
105
109
106
- path = os . environ [ 'AUTOPROJ_CURRENT_ROOT' ] + "/autoproj/remotes/esrocos.universe/source.yml"
110
+ path = ROOT_DIR + "/autoproj/remotes/esrocos.universe/source.yml"
107
111
data = {}
108
112
109
113
try :
@@ -148,11 +152,15 @@ except IOError as err:
148
152
sys .exit ()
149
153
150
154
# AUP
155
+ print "calling aup...\t " ,
156
+ sys .stdout .flush ()
151
157
152
158
aup_arguments = ["autoproj" ,"update" ]
153
159
154
160
call (aup_arguments )
155
161
162
+ print "DONE"
163
+
156
164
# REMOVE OLD FILES AND RESET CHANGES
157
165
158
166
#print "clean tmp files...",
@@ -167,51 +175,69 @@ call(aup_arguments)
167
175
168
176
#print "DONE"
169
177
178
+ # COPY ASN FILES FROM SHARED DIR TO LOCAL INSTALL DIR
170
179
171
- sys . exit ()
180
+ # create hash map of packages to copy from
172
181
173
- # COPY ASN
182
+ deps_map = {}
174
183
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 " ,
176
195
sys .stdout .flush ()
177
196
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 = []
179
201
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 )
185
204
break
186
205
187
- for dirname in d :
188
- f = []
206
+ for dirname in dirs :
189
207
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
190
216
try :
191
217
os .makedirs (INSTALL_DIR + dirname + "/asn" )
192
218
except OSError as err :
193
219
if not err .errno == 17 :
194
220
raise err
195
221
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 :
200
226
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 )
205
228
except IOError as err :
206
229
raise err
207
230
231
+ print "DONE"
232
+
233
+ # COMPILE ASN AND ACN TO MONOLITHIC AADL FILE
234
+
208
235
#getting asn and acn files from folder
209
236
210
237
asn_acn_files = []
211
238
asn_filenames = []
212
239
213
240
for (dirpath , dirnames , filenames ) in walk (SRC_DIR ):
214
- f .extend (filenames )
215
241
for filename in filenames :
216
242
if filename .endswith (".asn" ) or filename .endswith (".acn" ):
217
243
if not filename in asn_filenames :
@@ -221,7 +247,6 @@ for (dirpath, dirnames, filenames) in walk(SRC_DIR):
221
247
print "duplicate: " + filename
222
248
223
249
for (dirpath , dirnames , filenames ) in walk (INSTALL_DIR ):
224
- f .extend (filenames )
225
250
for filename in filenames :
226
251
if filename .endswith (".asn" ) or filename .endswith (".acn" ):
227
252
if not filename in asn_filenames :
0 commit comments