Resurrect COMPONENT_NAME and LAYER_NAME output in logs when bld.inf files are gathered from system definition files. fix
authorJon Chatten
Wed, 24 Feb 2010 16:04:26 +0000
branchfix
changeset 268 692d9a4eefc4
parent 250 019dafe54c23
child 269 62f7cce721ae
Resurrect COMPONENT_NAME and LAYER_NAME output in logs when bld.inf files are gathered from system definition files. Update tests.
sbsv2/raptor/python/raptor.py
sbsv2/raptor/python/raptor_meta.py
sbsv2/raptor/test/smoke_suite/sysdef_layers.py
--- a/sbsv2/raptor/python/raptor.py	Tue Feb 23 16:57:47 2010 +0000
+++ b/sbsv2/raptor/python/raptor.py	Wed Feb 24 16:04:26 2010 +0000
@@ -238,7 +238,7 @@
 class Component(ModelNode):
 	"""A group of projects or, in symbian-speak, a bld.inf.
 	"""
-	def __init__(self, filename):
+	def __init__(self, filename, layername="", componentname=""):
 		super(Component,self).__init__(filename)
 		# Assume that components are specified in bld.inf files for now
 		# One day that tyranny might end.
@@ -249,21 +249,34 @@
 		self.exportspecs = []
 		self.depfiles = []
 		self.unfurled = False # We can parse this
+		
+		# Extra metadata optionally supplied with system definition file gathered components
+		self.layername = layername
+		self.componentname = componentname
 
 	def AddMMP(self, filename):
 		self.children.add(Project(filename))
 
 
 class Layer(ModelNode):
-	""" 	Some components that should be built togther
+	""" Some components that should be built togther
 		e.g. a Layer in the system definition.
+		
+		Components that come from system definition files can
+		have extra surrounding metadata that we need to pass
+		on for use in log output.
 	"""
 	def __init__(self, name, componentlist=[]):
 		super(Layer,self).__init__(name)
 		self.name = name
 
 		for c in componentlist:
-			self.children.add(Component(c))
+			if isinstance(c, raptor_xml.SystemModelComponent):
+				# this component came from a system_definition.xml
+				self.children.add(Component(c, c.GetContainerName("layer"), c.GetContainerName("component")))
+			else:
+				# this is a plain old bld.inf file from the command-line
+				self.children.add(Component(c))
 
 	def unfurl(self, build):
 		"""Discover the children of this layer. This involves parsing the component MetaData (bld.infs, mmps).
--- a/sbsv2/raptor/python/raptor_meta.py	Tue Feb 23 16:57:47 2010 +0000
+++ b/sbsv2/raptor/python/raptor_meta.py	Wed Feb 24 16:04:26 2010 +0000
@@ -2686,15 +2686,6 @@
 
 		specName = getSpecName(component.bldinf_filename, fullPath=True)
 
-		if isinstance(component.bldinf, raptor_xml.SystemModelComponent):
-			# this component came from a system_definition.xml
-			layer = component.bldinf.GetContainerName("layer")
-			componentName = component.bldinf.GetContainerName("component")
-		else:
-			# this is a plain old bld.inf file from the command-line
-			layer = ""
-			componentName = ""
-
 		# exports are independent of build platform
 		for i,ep in enumerate(self.ExportPlatforms):
 			specNode = raptor_data.Specification(name = specName)
@@ -2705,8 +2696,8 @@
 			# add some basic data in a component-wide variant
 			var = raptor_data.Variant(name='component-wide')
 			var.AddOperation(raptor_data.Set("COMPONENT_META", str(component.bldinf_filename)))
-			var.AddOperation(raptor_data.Set("COMPONENT_NAME", componentName))
-			var.AddOperation(raptor_data.Set("COMPONENT_LAYER", layer))
+			var.AddOperation(raptor_data.Set("COMPONENT_NAME", component.componentname))
+			var.AddOperation(raptor_data.Set("COMPONENT_LAYER", component.layername))
 			specNode.AddVariant(var)
 
 			# add this bld.inf Specification to the export platform
@@ -2737,8 +2728,8 @@
 				# add some basic data in a component-wide variant
 				var = raptor_data.Variant(name='component-wide-settings-' + plat)
 				var.AddOperation(raptor_data.Set("COMPONENT_META",str(component.bldinf_filename)))
-				var.AddOperation(raptor_data.Set("COMPONENT_NAME", componentName))
-				var.AddOperation(raptor_data.Set("COMPONENT_LAYER", layer))
+				var.AddOperation(raptor_data.Set("COMPONENT_NAME", component.componentname))
+				var.AddOperation(raptor_data.Set("COMPONENT_LAYER", component.layername))
 				var.AddOperation(raptor_data.Set("MODULE", modulename))
 				var.AddOperation(raptor_data.Append("OUTPUTPATHOFFSET", outputDir, '/'))
 				var.AddOperation(raptor_data.Append("OUTPUTPATH", outputDir, '/'))
--- a/sbsv2/raptor/test/smoke_suite/sysdef_layers.py	Tue Feb 23 16:57:47 2010 +0000
+++ b/sbsv2/raptor/test/smoke_suite/sysdef_layers.py	Wed Feb 24 16:04:26 2010 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
 # under the terms of the License "Eclipse Public License v1.0"
@@ -20,11 +20,10 @@
 	t = SmokeTest()
 	t.id = "48"
 	t.name = "sysdef_layers"
-	t.description = "Test system_definition.xml layer processing"
-	t.command = 'sbs -s ' + \
-			'smoke_suite/test_resources/sysdef/system_definition_order_layer_test.xml' + \
-			' -l "Metadata Export" -l "Build Generated Source" -l ' + \
-			'"Component with Layer Dependencies" -o'
+	t.usebash = True
+	t.description = "Test system_definition.xml layer processing and log reporting"
+	t.command = 'sbs -f- -s smoke_suite/test_resources/sysdef/system_definition_order_layer_test.xml ' + \
+			'-l "Metadata Export" -l "Build Generated Source" -l "Component with Layer Dependencies" -o'
 	t.targets = [
 		"$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/build_gen_source/exported.inf",
 		"$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/build_gen_source/exported.mmh",
@@ -88,5 +87,9 @@
 		"helloworld_exe/winscw/urel/helloworld_UID_.o",
 		"helloworld_reg_exe/helloworld_reg__private_10003a3f_apps_sc.rpp"
 		])
+	t.countmatch = [
+		["<recipe .*layer='Component with Layer Dependencies' component='dependent'.*>", 43],
+		["<recipe .*layer='Build Generated Source' component='build generated source'.*>", 7]		
+		]
 	t.run()
 	return t