sbsv2/raptor/python/raptor_xml.py
changeset 625 a1925fb7753a
parent 616 24e4ef208cca
child 674 37ee82a83d43
equal deleted inserted replaced
624:f70b728ea30c 625:a1925fb7753a
   334 
   334 
   335 			if name:
   335 			if name:
   336 				aContainers[parent.tagName] = name
   336 				aContainers[parent.tagName] = name
   337 
   337 
   338 			self.__GetElementContainers(parent, aContainers)
   338 			self.__GetElementContainers(parent, aContainers)
   339 	
   339 
   340 	def __ProcessSystemModelMetaElement(self, aElement):
   340 	def __ProcessSystemModelMetaElement(self, aElement):
   341 		# stub method - may deal with metadata elements at some point in the future
   341 		# stub method - may deal with metadata elements at some point in the future
   342 		return	
   342 		return
   343 
   343 
   344 	def __ProcessSystemModelElement(self, aElement):
   344 	def __ProcessSystemModelElement(self, aElement):
   345 		"""Search for XML <unit/> elements with 'bldFile' attributes and resolve concrete bld.inf locations
   345 		"""Search for XML <unit/> elements with 'bldFile' attributes and resolve concrete bld.inf locations
   346 		with an appreciation of different schema versions."""
   346 		with an appreciation of different schema versions."""
   347 
   347 
   351 			return self.__ProcessSystemModelMetaElement(aElement)
   351 			return self.__ProcessSystemModelMetaElement(aElement)
   352 
   352 
   353 		# The effective "layer" is the item whose parent does not have an id (or name in 2.x and earlier)
   353 		# The effective "layer" is the item whose parent does not have an id (or name in 2.x and earlier)
   354 		if not aElement.parentNode.hasAttribute(self.__IdAttribute) :
   354 		if not aElement.parentNode.hasAttribute(self.__IdAttribute) :
   355 			currentLayer = aElement.getAttribute(self.__IdAttribute)
   355 			currentLayer = aElement.getAttribute(self.__IdAttribute)
   356 			
   356 
   357 			if not self.__LayerDetails.has_key(currentLayer):
   357 			if not self.__LayerDetails.has_key(currentLayer):
   358 				self.__LayerDetails[currentLayer] = []
   358 				self.__LayerDetails[currentLayer] = []
   359 
   359 
   360 			if not currentLayer in self.__LayerList:
   360 			if not currentLayer in self.__LayerList:
   361 				self.__LayerList.append(currentLayer)
   361 				self.__LayerList.append(currentLayer)
   387 				if self.__Version['MAJOR'] < 3:
   387 				if self.__Version['MAJOR'] < 3:
   388 					# absolute paths are not changed by root var in 1.x and 2.x
   388 					# absolute paths are not changed by root var in 1.x and 2.x
   389 					if not group.isAbsolute() and bldInfRoot:
   389 					if not group.isAbsolute() and bldInfRoot:
   390 						group = generic_path.Join(bldInfRoot, group)
   390 						group = generic_path.Join(bldInfRoot, group)
   391 				else:
   391 				else:
   392 					# all paths are changed by root var in 3.x
   392 					# relative paths for v3
   393 					if bldInfRoot:
   393 					if not group.isAbsolute():
       
   394 						group = generic_path.Join(generic_path.Join(self.__SystemDefinitionFile).Dir(),group)
       
   395 					# absolute paths for v3
       
   396 					# are relative to bldInfRoot if set, or relative to the drive root otherwise
       
   397 					elif bldInfRoot:
   394 						group = generic_path.Join(bldInfRoot, group)
   398 						group = generic_path.Join(bldInfRoot, group)
   395 
   399 
   396 				bldinf = generic_path.Join(group, "bld.inf").FindCaseless()
   400 				bldinf = generic_path.Join(group, "bld.inf").FindCaseless()
   397 
   401 
   398 				if bldinf == None:
   402 				if bldinf == None: