Catch-up. fix
authorJon Chatten
Wed, 24 Feb 2010 09:18:04 +0000
branchfix
changeset 264 a888df7554c4
parent 263 27b807b5a1f5 (current diff)
parent 250 019dafe54c23 (diff)
child 265 904ed405cc3f
Catch-up.
--- a/sbsv2/raptor/RELEASE-NOTES.txt	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/RELEASE-NOTES.txt	Wed Feb 24 09:18:04 2010 +0000
@@ -3,11 +3,13 @@
 next version
 
 Defect Fixes:
+- SF Bug 1861 - [Raptor] More helpful console message in case of timeouts
+- SF Bug 1571 - Raptor cannot report error or warning message in wrong implib project
 - DPDEF142718 Incremental rebuild fails if dependent files deleted
   --no-depend-generate added to suppress the generation and processing of dependency files
   .DEFAULT target introduced for all non --no-depend-generate and/or --no-depend-include builds
 - Add support for PLUGIN3 TARGETTYPEs
-
+- Fixing logfile corruption for large GCCXML builds by suppressing zip output
 
 version 2.12.2
 
--- a/sbsv2/raptor/lib/flm/gccxml.flm	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/lib/flm/gccxml.flm	Wed Feb 24 09:18:04 2010 +0000
@@ -71,7 +71,7 @@
 # $(2) list of further variable arguments to group in 150 element calls
 define groupcallin50
 	$(if $2,$1 $(foreach L,$(wordlist 1,50,$2),$(L)),)
-	$(if $2,$(call groupcallin50,$1,$(wordlist 51,$(words $2),$2)),true)
+	$(if $2,$(call groupcallin50,$1,$(wordlist 51,$(words $2),$2)),@true)
 endef
 
 # echos content to a file in groups performing optional search/replace based on passed args
@@ -235,7 +235,7 @@
 # note: the main call here needs to reside outside of start/endrule in order to avoid command line length issues.
 define gccxmlpackage
   $(TEMPGXPARCHIVE): $(MMPXMLFILE) $(SRCXMLFILES) $(DEFFILE)
-	  $$(call groupcallin50,$(ZIP) -j $$@,$$^ $(RFIFILES)) ;
+	  $$(call groupcallin50,@$(ZIP) -j $$@ > /dev/null 2>&1,$$^ $(RFIFILES)) ;
 	  $(call startrule,gccxmlpackage) \
 	  $(GNURM) -f $(GXPARCHIVE) && \
 	  $(GNUCP) $$@ $(GXPARCHIVE) \
--- a/sbsv2/raptor/lib/flm/tracecompiler.mk	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/lib/flm/tracecompiler.mk	Wed Feb 24 09:18:04 2010 +0000
@@ -25,13 +25,16 @@
 TRACE_PRJNAME:=$(TARGET)_$(TARGETTYPE)
 endif
 
-TRACE_DICTIONARY:=$(EPOCROOT)/epoc32/ost_dictionaries/$(TRACE_PRJNAME)_0x$(UID_TC)_Dictionary.xml
-AUTOGEN_HEADER:=$(EPOCROOT)/epoc32/include/internal/SymbianTraces/autogen/$(TRACE_PRJNAME)_0x$(UID_TC)_TraceDefinitions.h
+# initialise (so what output will be correct if we don't actually run the TC)
+TRACE_DICTIONARY:=
+AUTOGEN_HEADER:=
 
 $(if $(FLMDEBUG),$(info <debug>TRACE_PATH = $(TRACE_PATH)</debug>))
 
 # Run trace compiler only if TRACE_PATH exists
 ifneq ($(TRACE_PATH),)
+
+
 TRACE_MARKER:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_PRJNAME)_$(UID_TC).done
 TRACE_HEADERS:=
 
@@ -52,6 +55,9 @@
 ifeq ($(GUARD_$(call sanitise,$(TRACE_MARKER))),)
 GUARD_$(call sanitise,$(TRACE_MARKER)):=1
 
+TRACE_DICTIONARY:=$(EPOCROOT)/epoc32/ost_dictionaries/$(TRACE_PRJNAME)_0x$(UID_TC)_Dictionary.xml
+AUTOGEN_HEADER:=$(EPOCROOT)/epoc32/include/internal/SymbianTraces/autogen/$(TRACE_PRJNAME)_0x$(UID_TC)_TraceDefinitions.h
+
 JAVA_COMMAND:=$(SBS_JAVATC)
 TRACE_COMPILER_PATH:=$(EPOCROOT)/epoc32/tools
 TRACE_COMPILER_START:=-classpath $(TRACE_COMPILER_PATH)/tracecompiler com.nokia.tracecompiler.TraceCompiler
--- a/sbsv2/raptor/python/plugins/filter_terminal.py	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/python/plugins/filter_terminal.py	Wed Feb 24 09:18:04 2010 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2008-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"
@@ -230,6 +230,8 @@
 			# detect the status report from a recipe
 			if text.find('failed') != -1:
 				self.failed = True
+				if text.find("reason='timeout'") != -1:
+					self.timedout = True
 			else:
 				self.failed = False
 			return
@@ -282,6 +284,7 @@
 
 			# This variable holds all recipe information
 			self.failed = False # Recipe status
+			self.timedout = False # Did it Timeout?
 			self.recipeBody = []
 			self.recipelineExceeded = 0
 			return		
@@ -298,16 +301,30 @@
 				
 				if self.failed == True:
 					if not self.analyseonly:
-						sys.stderr.write("\n FAILED %s for %s: %s\n" % \
+						reason=""
+						if self.timedout:
+							reason="(timeout)"
+
+						sys.stderr.write("\n FAILED %s %s for %s: %s\n" % \
 								(self.recipe_dict['name'],
+								reason,
 								self.recipe_dict['config'],
 								self.recipe_dict['name_to_user']))
 	
 						mmppath = generic_path.Path(self.recipe_dict['mmp']).From(generic_path.CurrentDir()).GetShellPath()
-						sys.stderr.write("  mmp: %s\n" % mmppath)
-						for L in self.recipeBody:
-							if not L.startswith('+'):
-								sys.stdout.write("   %s\n" % L.rstrip())
+						if mmppath is not "":
+							sys.stderr.write("  mmp: %s\n" % mmppath)
+						if self.timedout:
+							sys.stderr.write( \
+"""    Timeouts may be due to network related issues (e.g. license servers),
+    tool bugs or abnormally large components. TALON_TIMEOUT can be adjusted 
+    in the make engine configuration if required.  Make engines may have 
+    their own timeouts that Raptor cannot influence
+""")
+						else:
+							for L in self.recipeBody:
+								if not L.startswith('+'):
+									sys.stdout.write("   %s\n" % L.rstrip())
 					self.err_count += 1
 				else:
 					r = Recipe.factory(self.recipe_dict['name'], "".join(self.recipeBody))
--- a/sbsv2/raptor/python/raptor_meta.py	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/python/raptor_meta.py	Wed Feb 24 09:18:04 2010 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2007-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"
@@ -2177,6 +2177,9 @@
 		self.BuildVariant.AddOperation(raptor_data.Set("DEFFILEKEYWORD", deffile_keyword))
 		self.__debug("Set DEFFILEKEYWORD to '%s'",deffile_keyword)
 
+		# If target type is "implib" it must have a def file
+		self.checkImplibDefFile(resolvedDefFile)
+
 		# if this target type has a default TARGETPATH other than "" for
 		# resources then we need to add that default to all resources which
 		# do not explicitly set the TARGETPATH themselves.
@@ -2268,6 +2271,14 @@
 		"""Target type in lower case - the standard format"""
 		return self.__targettype.lower()
 
+	def checkImplibDefFile(self, defFile):
+		"""Project with target type implib must have DEFFILE defined 
+		explicitly or implicitly, otherwise it is an error
+		""" 
+		if self.getTargetType() == 'implib' and defFile == '':
+			self.__Raptor.Error("No DEF File for IMPLIB target type in " + \
+							self.__currentMmpFile, bldinf=self.__bldInfFilename)
+
 	def resolveDefFile(self, aTARGET, aBuildPlatform):
 		"""Returns a fully resolved DEFFILE entry depending on .mmp file location and TARGET, DEFFILE and NOSTRICTDEF
 		entries in the .mmp file itself (where appropriate).
--- a/sbsv2/raptor/schema/build/log/1_0.xsd	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/schema/build/log/1_0.xsd	Wed Feb 24 09:18:04 2010 +0000
@@ -3,7 +3,7 @@
 
 	<xsd:annotation>
 		<xsd:documentation xml:lang="en">
-			Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+			Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 			All rights reserved.
 			This component and the accompanying materials are made available
 			uunder the terms of the License "Eclipse Public License v1.0"
@@ -60,7 +60,8 @@
 					<xsd:attribute name="name" type="xsd:string"/>
 					<xsd:attribute name="project" type="xsd:string"/>
 					<xsd:attribute name="component" type="xsd:string"/>
-					<xsd:attribute name="forcesuccess" type="xsd:string"/>
+					<xsd:attribute name="flags" type="xsd:string"/>
+					<xsd:attribute name="reason" type="xsd:string"/>
 				</xsd:complexType>
 			</xsd:element>
 		</xsd:sequence>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_nodef.py	Wed Feb 24 09:18:04 2010 +0000
@@ -0,0 +1,55 @@
+#
+# Copyright (c) 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+	t = SmokeTest()
+	
+	t.id = "71a"
+	t.name = "implib_implicit_def"
+	t.command = "sbs -b smoke_suite/test_resources/simple_implib/nodef/group/bld.inf" \
+			+ " -p implib_implicit_def.mmp"
+	t.targets = [
+		"$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def.dso",
+		"$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def{000a0000}.dso",
+		"$(EPOCROOT)/epoc32/release/winscw/udeb/implib_implicit_def.lib"
+		]
+	t.run("linux")
+	if t.result == SmokeTest.SKIP:
+		t.targets.extend([
+			"$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def.lib",
+			"$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def{000a0000}.lib"
+			])
+		t.run("windows")
+
+	t.id = "71b"
+	t.name = "implib_no_def"
+	t.command = "sbs -b smoke_suite/test_resources/simple_implib/nodef/group/bld.inf" \
+			+ " -p implib_no_def.mmp"
+	t.targets = []
+	t.mustmatch = [
+		"No DEF File for IMPLIB target type in"	
+		]
+	t.errors = 2 # 1 for winscw and 1 for armv5
+	t.returncode = 1
+	t.run()
+
+	t.id = "71"
+	t.name = "implib_nodef"
+	t.print_result()
+
+	return t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/nodef/bwins/implib_implicit_def.def	Wed Feb 24 09:18:04 2010 +0000
@@ -0,0 +1,5 @@
+EXPORTS
+; NEW:
+	?NewLC@CMessenger@@SAPAV1@AAVCConsoleBase@@ABVTDesC16@@@Z @ 1 NONAME ; public: static class CMessenger * __cdecl CMessenger::NewLC(class CConsoleBase &,class TDesC16 const &)
+	?ShowMessage@CMessenger@@QAEXXZ @ 2 NONAME ; public: void __thiscall CMessenger::ShowMessage(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/nodef/eabi/implib_implicit_def.def	Wed Feb 24 09:18:04 2010 +0000
@@ -0,0 +1,6 @@
+EXPORTS
+	_ZN10CMessenger11ShowMessageEv @ 1 NONAME
+	_ZN10CMessenger5NewLCER12CConsoleBaseRK7TDesC16 @ 2 NONAME
+	_ZTI10CMessenger @ 3 NONAME ; #<TI>#
+	_ZTV10CMessenger @ 4 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/nodef/group/bld.inf	Wed Feb 24 09:18:04 2010 +0000
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+PRJ_PLATFORMS
+WINSCW ARMV5 ARMV5SMP
+
+PRJ_MMPFILES
+implib_no_def.mmp
+implib_implicit_def.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/nodef/group/implib_implicit_def.mmp	Wed Feb 24 09:18:04 2010 +0000
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+TARGET        implib_implicit_def.lib
+TARGETTYPE    implib
+  
+NOSTRICTDEF
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/nodef/group/implib_no_def.mmp	Wed Feb 24 09:18:04 2010 +0000
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+TARGET        implib_no_def.lib
+TARGETTYPE    implib
+
+NOSTRICTDEF
+
--- a/sbsv2/raptor/test/smoke_suite/timeout.py	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/test/smoke_suite/timeout.py	Wed Feb 24 09:18:04 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"
@@ -21,9 +21,7 @@
 	t = SmokeTest()
 	t.description = "test that long commands time out and get retried"
 	
-	exitCode = "15"
-	if t.onWindows:
-		exitCode = "128" # why are they different?
+	exitCode = "128"
 
 	t.id = "60a"
 	t.name = "timeout"
@@ -31,7 +29,7 @@
 	t.command = "sbs -b smoke_suite/test_resources/timeout/bld.inf -f-"
 
 	t.mustmatch = [
-		"status exit='failed' code='" + exitCode + "' attempt='1'",
+		"status exit='failed' code='" + exitCode + "' attempt='1' *reason='timeout'",
 	]
 	t.errors = -1
 	t.returncode = 1
@@ -43,9 +41,9 @@
 	t.command = "sbs -b smoke_suite/test_resources/timeout/bld.inf -t 3 -f-"
 
 	t.mustmatch = [
-		"status exit='retry' code='" + exitCode + "' attempt='1'",
-		"status exit='retry' code='" + exitCode + "' attempt='2'",
-		"status exit='failed' code='" + exitCode + "' attempt='3'",
+		"status exit='retry' code='" + exitCode + "' attempt='1' *reason='timeout'",
+		"status exit='retry' code='" + exitCode + "' attempt='2' *reason='timeout'",
+		"status exit='failed' code='" + exitCode + "' attempt='3' *reason='timeout'",
 	]
 	t.errors = -1
 	t.returncode = 1
--- a/sbsv2/raptor/util/talon/process.c	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/util/talon/process.c	Wed Feb 24 09:18:04 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"
@@ -176,11 +176,15 @@
 		p->returncode = WEXITSTATUS(status);
 		DEBUG(("process exited normally \n"));
 	} else {
-		p->causeofdeath = PROC_SOMEODDDEATH;
-		if (WIFSIGNALED(status))
-			p->returncode = WTERMSIG(status);
-		else
+		if (p->causeofdeath == PROC_TIMEOUTDEATH)
 			p->returncode = 128;
+		else {	
+			p->causeofdeath = PROC_SOMEODDDEATH;
+			if (WIFSIGNALED(status))
+				p->returncode = WTERMSIG(status);
+			else
+				p->returncode = 128;
+		}
 		DEBUG(("process terminated \n"));
 	}
 	
--- a/sbsv2/raptor/util/talon/talon.c	Wed Feb 24 06:33:29 2010 +0000
+++ b/sbsv2/raptor/util/talon/talon.c	Wed Feb 24 09:18:04 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"
@@ -38,7 +38,7 @@
 
 #define TALON_ATTEMPT_STRMAX 32
 #define RECIPETAG_STRMAX 2048
-#define STATUS_STRMAX 100
+#define STATUS_STRMAX 120
 
 #define TALONDELIMITER '|'
 #define VARNAMEMAX 100
@@ -549,14 +549,18 @@
 
 			if (dotagging) 
 			{
-				char *forcesuccessstr = force_success == 0 ? "" : " forcesuccess='FORCESUCCESS'";
+				char *flagsstr = force_success == 0 ? "" : " flags='FORCESUCCESS'";
+				char *reasonstr = "" ;
+
+				if (p->causeofdeath == PROC_TIMEOUTDEATH)
+					reasonstr = " reason='timeout'";
 
 				if (p->returncode != 0)
 				{
 					char *exitstr = retries > 0 ? "retry" : "failed";
-					snprintf(status, STATUS_STRMAX - 1, "\n<status exit='%s' code='%d' attempt='%d'%s />", exitstr, p->returncode, attempt, forcesuccessstr );
+					snprintf(status, STATUS_STRMAX - 1, "\n<status exit='%s' code='%d' attempt='%d'%s%s />", exitstr, p->returncode, attempt, flagsstr, reasonstr );
 				} else {
-					snprintf(status, STATUS_STRMAX - 1, "\n<status exit='ok' attempt='%d'%s />", attempt, forcesuccessstr );
+					snprintf(status, STATUS_STRMAX - 1, "\n<status exit='ok' attempt='%d'%s%s />", attempt, flagsstr, reasonstr );
 				}
 				status[STATUS_STRMAX-1] = '\0';
 	
Binary file sbsv2/raptor/win32/bin/talon.exe has changed