# HG changeset patch # User Jon Chatten # Date 1271252458 -3600 # Node ID 0c5ca7f6d8ae4050dd5c462ae2b08d160674efe3 # Parent 9bebdb95e0de318059c03ca0aae0c2ef90ee8429# Parent 5698eefedfc825e897a1693a6a46dc7890818bb3 merge 2.13.0 from default diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/RELEASE-NOTES.html --- a/sbsv2/raptor/RELEASE-NOTES.html Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/RELEASE-NOTES.html Wed Apr 14 14:40:58 2010 +0100 @@ -6,6 +6,17 @@

Release Notes for Symbian Build System v2

+

next version

+ +

New Features

+ + +

version 2.13.0

New Features

diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/bin/sbs_filter.py --- a/sbsv2/raptor/bin/sbs_filter.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/bin/sbs_filter.py Wed Apr 14 14:40:58 2010 +0100 @@ -1,6 +1,6 @@ #!/usr/bin/python -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# 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 "Symbian Foundation License v1.0" @@ -58,7 +58,7 @@ raptor_params = raptor.BuildStats(the_raptor) # Open the requested plugins using the pluginbox - the_raptor.out.open(raptor_params, the_raptor.filterList.split(','), pbox) + the_raptor.out.open(raptor_params, the_raptor.filterList, pbox) except Exception, e: sys.stderr.write("error: problem while creating filters %s\n" % str(e)) diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/lib/config/make.xml --- a/sbsv2/raptor/lib/config/make.xml Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/lib/config/make.xml Wed Apr 14 14:40:58 2010 +0100 @@ -13,6 +13,9 @@ + + + @@ -70,6 +73,7 @@ + @@ -91,6 +95,7 @@ + diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/lib/config/rvct.xml --- a/sbsv2/raptor/lib/config/rvct.xml Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/lib/config/rvct.xml Wed Apr 14 14:40:58 2010 +0100 @@ -101,6 +101,7 @@ + diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/lib/config/variants.xml --- a/sbsv2/raptor/lib/config/variants.xml Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/lib/config/variants.xml Wed Apr 14 14:40:58 2010 +0100 @@ -142,6 +142,7 @@ + diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/lib/flm/e32abiv2.flm --- a/sbsv2/raptor/lib/flm/e32abiv2.flm Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/lib/flm/e32abiv2.flm Wed Apr 14 14:40:58 2010 +0100 @@ -50,6 +50,11 @@ $(if $(FLMDEBUG),$(info )) +# Enable DELETE_ON_FAILED_COMPILE work around for failed RVCT 2.2 compiles +ifneq ($(DELETE_ON_FAILED_COMPILE),) +RVCT22_DELETE_WORKAROUND:=|| { $$(GNURM) $$@; exit 1; } +endif # ifneq ($(DELETE_ON_FAILED_COMPILE),) + # Strip switch-type parameters # POSTLINKTARGETTYPE:=$(strip $(POSTLINKTARGETTYPE)) @@ -792,7 +797,7 @@ $(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(1).d)) \ $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \ $(if $(MULTIFILE_ENABLED),--multifile $(OUTPUT_OPTION) $(MULTIFILEOBJECT) \ - --via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<)) \ + --via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<)) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \ $(call endrule,compile) ifeq ($(NO_DEPEND_GENERATE),) @@ -851,7 +856,7 @@ $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE))) \ $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE))) \ $(if $(NOHIDEALL),--no_hide_all,) \ - $$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \ + $$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \ $(call endrule,e32cpponly) CLEANTARGETS:=$$(CLEANTARGETS) $(CPPONLYTARGET) @@ -886,7 +891,7 @@ $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE))) \ $(if $(NOHIDEALL),--no_hide_all,) \ $(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \ - $$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \ + $$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \ $(call endrule,e32listing) CLEANTARGETS:=$$(CLEANTARGETS) $(LISTINGTARGET) @@ -981,7 +986,7 @@ $(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS) $(CIADEFS)) $(CPP_LANG_OPTION) \ $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(USERINCLUDE))) \ $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(SYSTEMINCLUDE))) \ - $$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \ + $$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \ $(call endrule,cia2cpp2o) @@ -1007,7 +1012,7 @@ $(e32abiv2_PREFILE): $1 $(PROJECT_META) $(if $(DEPENDFILE),,RESOURCE BITMAP EXPORT) $(call startrule,cia2cpp,,$1) \ $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ - $(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) \ + $(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \ $(if $(NO_DEPEND_GENERATE),,&& $(CC) -M $(e32abiv2_PREFILE_OPTIONS) --depend_format=unix $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) > $(call dblquote,$(e32abiv2_PREFILE).d)) \ $(call endrule,cia2cpp) @@ -1052,12 +1057,12 @@ $(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \ $(CC) $(e32abiv2_asm_OPTIONS) \ $(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \ - $$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \ + $$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \ $(call endrule,asmcompile) ifeq ($(NO_DEPEND_GENERATE),) $(call startrule,asmdependencies) \ $(CC) -M $(subst --no_rtti,,$(e32abiv2_asm_OPTIONS)) --depend_format=unix \ - $(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) \ + $(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \ $(call endrule,asmdependencies) endif diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/lib/flm/globals.mk diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/lib/flm/standard.xml --- a/sbsv2/raptor/lib/flm/standard.xml Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/lib/flm/standard.xml Wed Apr 14 14:40:58 2010 +0100 @@ -74,6 +74,7 @@ + diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/notes/delete_on_failed_compile.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/notes/delete_on_failed_compile.txt Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,7 @@ +In certain circumstances, such as failure to obtain licenses, RVCT 2.2's armcc +program still produces object files whose contents is junk. This causes build +problems later as from Make's point of view those object files are "up to +date" so the build tries to link them. Of course, these attempts at linking +fail and the build is broken. + +This is a work around for that RVCT 2.2 problem. diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/notes/parametric_log_filters.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/notes/parametric_log_filters.txt Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,31 @@ + +It is now possible to pass parameters from the command line into log filters. +This works in the same way for both sbs and sbs_filter commands. + +For example: + +sbs --filters=Foo[param1,param2,param3] + +sbs_filter --filters=Bar[value] < build.log + + +Multiple filters with parameters can be specified if needed, + +sbs --filters=Foo[param1,param2,param3],Bar[value] + + +In the 2.13.0 release there are two filters which take parameters: + +1. sbs_filter --filters=FilterComp[wizard/group] < log + +Here the parameter is (part of) a bld.inf path and the filter only prints +parts of the log which are attributable to the matching component. In the +example above, the log elements from any bld.inf which has "wizard/group" +as part of its path will be printed: normally, passing the full path name +will guarantee that only one component matches. + +2. sbs_filter --filters=FilterTagCounter[info,recipe] < log + +Here the parameters are a list of the element names to count. This is a +simple analysis filter that shows you how many instances of XMl elements +are in a log and how many characters of body text they have. \ No newline at end of file diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/python/filter_list.py --- a/sbsv2/raptor/python/filter_list.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/python/filter_list.py Wed Apr 14 14:40:58 2010 +0100 @@ -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" @@ -19,6 +19,7 @@ import os import sys import raptor +import re import filter_interface import pluginbox import traceback @@ -64,8 +65,24 @@ """Nothing to do for stdout""" return True - - +def SplitList(listString): + """turn a CLI filter string into a list of (class, param) pairs. + + for example, "foo[a,b],bar[c,d]" + + becomes [ ("foo", ["a","b"]) , ("bar", ["c","d"]) ] + """ + matches = re.findall("(\w+)(\[([^\[\]]*)\])?,?", listString) + + pairs = [] + for m in matches: + classname = m[0] + if len(m[2]) > 0: + pairs.append( (classname, m[2].split(",")) ) + else: + pairs.append( (classname, []) ) + return pairs + class FilterList(filter_interface.Filter): def __init__(self): @@ -81,13 +98,19 @@ # Find all the filter plugins self.pbox = pbox possiblefilters = self.pbox.classesof(filter_interface.Filter) + # turn "filternames" into a list of (classname, parameters) pairs + filterCalls = SplitList(filternames) + # look for each filter class in the box unfound = [] self.filters = [] - for f in filternames: + for (f, params) in filterCalls: unfound.append(f) # unfound unless we find it for pl in possiblefilters: if pl.__name__.upper() == f.upper(): - self.filters.append(pl()) + if params: + self.filters.append(pl(params)) + else: + self.filters.append(pl()) unfound = unfound[:-1] if unfound != []: raise ValueError("requested filters not found: %s \ diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/python/plugins/filter_component.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/python/plugins/filter_component.py Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,96 @@ +# +# 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: +# Filter class to print log entries for a selected component +# + +import filter_interface +import sys + +class FilterComp(filter_interface.FilterSAX): + + def __init__(self, params = []): + """parameters to this filter are the path of the bld.inf and some flags. + + The bld.inf path can be a substring of the path to match. For example, + "email" will match an element with bldinf="y:/src/email/group/bld.inf". + + No flags are supported yet; this is for future expansion. + + If no parameters are passed then nothing is printed.""" + self.bldinf = "" + self.flags = "" + + if len(params) > 0: + self.bldinf = params[0] + + if len(params) > 1: + self.flags = params[1] + + super(FilterComp, self).__init__() + + def startDocument(self): + # mark when we are inside an element with bldinf="the selected one" + self.inside = False + # and count nested elements so we can toggle off at the end. + self.nesting = 0 + + def printElementStart(self, name, attributes): + sys.stdout.write("<" + name) + for att,val in attributes.items(): + sys.stdout.write(" " + att + "='" + val + "'") + sys.stdout.write(">") + + def startElement(self, name, attributes): + if self.inside: + self.nesting += 1 + self.printElementStart(name, attributes) + return + + if self.bldinf: + try: + if self.bldinf in attributes["bldinf"]: + self.inside = True + self.nesting = 1 + self.printElementStart(name, attributes) + except KeyError: + pass + + def characters(self, char): + if self.inside: + sys.stdout.write(char) + + def endElement(self, name): + if self.inside: + sys.stdout.write("") + + self.nesting -= 1 + + if self.nesting == 0: + self.inside = False + print + + def endDocument(self): + pass + + def error(self, exception): + print filter_interface.Filter.formatError("FilterComp:" + str(exception)) + + def fatalError(self, exception): + print filter_interface.Filter.formatError("FilterComp:" + str(exception)) + + def warning(self, exception): + print filter_interface.Filter.formatWarning("FilterComp:" + str(exception)) + +# the end diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/python/plugins/filter_tagcount.py --- a/sbsv2/raptor/python/plugins/filter_tagcount.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/python/plugins/filter_tagcount.py Wed Apr 14 14:40:58 2010 +0100 @@ -19,6 +19,13 @@ class FilterTagCounter(filter_interface.FilterSAX): + def __init__(self, params = []): + """parameters to this filter are the names of tags to print. + + If no parameters are passed then all tags are reported.""" + self.interesting = params + super(FilterTagCounter, self).__init__() + def startDocument(self): # for each element name count the number of occurences # and the amount of body text contained. @@ -55,7 +62,8 @@ # report print "\nsummary:" for name,nos in sorted(self.count.items()): - print name, nos[0], nos[1] + if name in self.interesting or len(self.interesting) == 0: + print name, nos[0], nos[1] print "\nparsing:" print "errors =", self.errors diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/python/raptor.py --- a/sbsv2/raptor/python/raptor.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/python/raptor.py Wed Apr 14 14:40:58 2010 +0100 @@ -1057,7 +1057,7 @@ self.raptor_params = BuildStats(self) # Open the requested plugins using the pluginbox - self.out.open(self.raptor_params, self.filterList.split(','), self.pbox) + self.out.open(self.raptor_params, self.filterList, self.pbox) # log header self.out.write("\n") diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/python/raptor_make.py --- a/sbsv2/raptor/python/raptor_make.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/python/raptor_make.py Wed Apr 14 14:40:58 2010 +0100 @@ -158,6 +158,12 @@ self.talonshell = str(evaluator.Get("TALON_SHELL")) self.talontimeout = str(evaluator.Get("TALON_TIMEOUT")) self.talonretries = str(evaluator.Get("TALON_RETRIES")) + + # work around for RVCT 2.2 failed compiles + delete_on_failed_compile_s = evaluator.Get("DELETE_ON_FAILED_COMPILE") + self.delete_on_failed_compile = "" + if delete_on_failed_compile_s is not None and delete_on_failed_compile_s != "": + self.delete_on_failed_compile = "1" # commands self.initCommand = evaluator.Get("initialise") @@ -271,6 +277,7 @@ FLMHOME:=%s SHELL:=%s THIS_FILENAME:=$(firstword $(MAKEFILE_LIST)) +DELETE_ON_FAILED_COMPILE:=%s %s @@ -282,6 +289,7 @@ self.raptor.filesystem, str(self.raptor.systemFLM), self.shellpath, + self.delete_on_failed_compile, talon_settings, self.raptor.systemFLM.Append('globals.mk') ) diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/annofile2log.py --- a/sbsv2/raptor/test/smoke_suite/annofile2log.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/test/smoke_suite/annofile2log.py Wed Apr 14 14:40:58 2010 +0100 @@ -19,7 +19,7 @@ def run(): t = SmokeTest() t.id = "43563" - t.name = "annofile2log_canned" + t.name = "annofile2log" t.description = "test workaround for log corruption from a make engine whose name begins with 'e'" t.usebash = True diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/apply_usecases.py --- a/sbsv2/raptor/test/smoke_suite/apply_usecases.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/test/smoke_suite/apply_usecases.py Wed Apr 14 14:40:58 2010 +0100 @@ -23,7 +23,7 @@ # Introduce LINKER_OPTIONS for tools2 linker t.id = "0108" - t.name = "apply_linker_options" + t.name = "apply_usecases" t.command = "sbs -b smoke_suite/test_resources/apply_usecases/linker_options/bld.inf -c tools2 -f -" t.targets = [ "$(EPOCROOT)/epoc32/release/tools2/rel/test_apply_linkeroptions.exe" diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/clean_readonly.py --- a/sbsv2/raptor/test/smoke_suite/clean_readonly.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/test/smoke_suite/clean_readonly.py Wed Apr 14 14:40:58 2010 +0100 @@ -24,7 +24,7 @@ t = AntiTargetSmokeTest() t.id = "10a" - t.name = "cleanreadonly" + t.name = "clean_readonly" t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c armv5" t.targets = [ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll.sym", diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/delete_on_failed_compile.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/delete_on_failed_compile.py Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,109 @@ +# +# 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: +# + +import os +from raptor_tests import AntiTargetSmokeTest + +def run(): + t = AntiTargetSmokeTest() + t.id = "116" + t.name = "delete_on_failed_compile" + t.description = "Test that object files are not present following a forced failed compile." + + t.usebash = True + base_command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 -k" + + t.id = "116a" # Ensure everything is reallyclean before the test + t.name = "delete_on_failed_compile_reallyclean_01" + t.errors = 0 + t.returncode = 0 + t.antitargets = [ ] + t.command = base_command + " reallyclean" + t.run() + + t.id = "116b" # Object files should *not* be present after this forced failed compile + t.name = "delete_on_failed_compile_build" + t.errors = 0 + t.returncode = 1 + # None of these files should be present + t.addbuildantitargets('smoke_suite/test_resources/simple/bld.inf', + [ "test_/armv5/udeb/test.o", + "test_/armv5/udeb/test1.o", + "test_/armv5/udeb/test2.o", + "test_/armv5/udeb/test3.o", + "test_/armv5/udeb/test4.o", + "test_/armv5/udeb/test5.o", + "test_/armv5/udeb/test6.o", + "test_/armv5/urel/test.o", + "test_/armv5/urel/test1.o", + "test_/armv5/urel/test2.o", + "test_/armv5/urel/test3.o", + "test_/armv5/urel/test4.o", + "test_/armv5/urel/test5.o", + "test_/armv5/urel/test6.o" ]) + sbshome = os.environ["SBS_HOME"].replace("\\","/").rstrip("/") + t.command = base_command.replace("armv5", "armv5.fake_compiler") + \ + " --configpath=%s/test/smoke_suite/test_resources/simple/compilervariants" % sbshome + t.run() + + t.id = "116c" + t.name = "delete_on_failed_compile_reallyclean_02" + t.errors = 0 + t.returncode = 0 + t.antitargets = [] # Remove the list of anti-targets + t.command = base_command + " reallyclean" + t.run() + + t.id = "116d" # Use a redefined make_engine variant - object files *should* be present + t.name = "delete_on_failed_compile_build_redefined_make_engine" + t.errors = 0 + t.returncode = 1 + t.antitargets = [] # Remove the list of anti-targets + # All of these files should be present + t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', + [ "test_/armv5/udeb/test.o", + "test_/armv5/udeb/test1.o", + "test_/armv5/udeb/test2.o", + "test_/armv5/udeb/test3.o", + "test_/armv5/udeb/test4.o", + "test_/armv5/udeb/test5.o", + "test_/armv5/udeb/test6.o", + "test_/armv5/urel/test.o", + "test_/armv5/urel/test1.o", + "test_/armv5/urel/test2.o", + "test_/armv5/urel/test3.o", + "test_/armv5/urel/test4.o", + "test_/armv5/urel/test5.o", + "test_/armv5/urel/test6.o" ]) + + t.command = base_command.replace("armv5", "armv5.fake_compiler") + " -e make_test " \ + + " --configpath=%s/test/smoke_suite/test_resources/simple/compilervariants " % sbshome \ + + " --configpath=%s/test/smoke_suite/test_resources/simple/makevariants" % sbshome + t.run() + + t.id = "116e" + t.name = "delete_on_failed_compile_reallyclean_03" + t.errors = 0 + t.returncode = 0 + t.antitargets = [] # Remove the list of anti-targets + t.targets = [] # Remove the list of targets + t.command = base_command + " reallyclean" + t.run() + + t.id = "116" + t.name = "delete_on_failed_compile" + t.print_result() + return t diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/filter_params.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/filter_params.py Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,140 @@ +# +# 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.description = "Test the passing of parameters to log filters" + + command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5_urel --filters=" + + # no parameters means count all tags + t.name = "filter_params_all_tags" + t.command = command + "FilterTagCounter" + t.mustmatch_singleline = [ + "^info \d+ \d+", + "^whatlog \d+ \d+", + "^clean \d+ \d+" + ] + t.run() + + # empty parameter lists are valid + t.name = "filter_params_all_tags2" + t.command = command + "FilterTagCounter[]" + t.run() + + # parameters mean report only those tags + t.name = "filter_params_info" + t.command = command + "FilterTagCounter[info]" + t.mustmatch_singleline = [ + "^info \d+ \d+" + ] + t.mustnotmatch_singleline = [ + "^whatlog \d+ \d+", + "^clean \d+ \d+" + ] + t.run() + + # multiple parameters are valid + t.name = "filter_params_info_clean" + t.command = command + "FilterTagCounter[info,clean]" + t.mustmatch_singleline = [ + "^info \d+ \d+", + "^clean \d+ \d+" + ] + t.mustnotmatch_singleline = [ + "^whatlog \d+ \d+" + ] + t.run() + + # using the same filter with different parameters is valid + t.name = "filter_params_info_clean2" + t.command = command + "FilterTagCounter[info],FilterTagCounter[clean]" + t.run() + + # using the same filter with the same parameters is valid too + t.name = "filter_params_info_clean3" + t.command = command + "FilterTagCounter[info,clean],FilterTagCounter[info,clean]" + t.run() + + + # parameters must work with the sbs_filter script as well + + command = "sbs_filter --filters=%s < smoke_suite/test_resources/logexamples/filter_component.log" + t.logfileOption = lambda :"" + t.makefileOption = lambda :"" + + # should still work with no parameters + t.name = "sbs_filter_no_params" + t.command = command % "FilterComp" + t.mustmatch_singleline = [ + ] + t.mustnotmatch_singleline = [ + "[<>]" # no elements should be printed at all as no bld.inf is selected + ] + t.run() + + # should work with an empty parameter list + t.name = "sbs_filter_no_params2" + t.command = command % "FilterComp[]" + t.run() + + # with a parameter + t.name = "sbs_filter_one_param" + t.command = command % "FilterComp[email]" + t.stdout = [ + "email error #1", + "email error #2", + "email warning #1", + "email warning #2", + "", + "/epoc32/data/email_1", + "/epoc32/data/email_2", + "", + "", + "+ make_email", + "email was made fine", + "", + "", + "", + " ", + " ", + " fb email", + " ", + " ", + "" + ] + t.mustmatch_singleline = [] + t.mustnotmatch_singleline = [] + t.warnings = 2 + t.errors = 2 + t.run() + + # with multiple filters + t.name = "sbs_filter_multi" + t.command = command % "FilterComp[txt],FilterTagCounter[file,recipe]" + t.stdout = [] + t.mustmatch_singleline = [ "txt", "^file \d+", "^recipe \d+" ] + t.mustnotmatch_singleline = [ "email" ] + t.warnings = 2 + t.errors = 0 + t.run() + + t.name = "filter_params" + t.print_result() + return t diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/output_control.py --- a/sbsv2/raptor/test/smoke_suite/output_control.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/test/smoke_suite/output_control.py Wed Apr 14 14:40:58 2010 +0100 @@ -32,7 +32,7 @@ t = SmokeTest() t.id = "82" - t.name = "output_control_sbs_build_dir" + t.name = "output_control" t.description = "Test building intermediate files into a location other than $EPOCROOT/epoc32/build. Use SBS_BUILD_DIR. environment variable." t.sbs_build_dir = environ['EPOCROOT'].replace("\\","/").rstrip("/") + '/anotherbuilddir' t.environ['SBS_BUILD_DIR'] = t.sbs_build_dir diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/test_resources/logexamples/filter_component.log --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/logexamples/filter_component.log Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,42 @@ + + +email error #1 +email error #2 + +txt warning #1 +txt warning #2 + +email warning #1 +email warning #2 + + +/epoc32/data/email_1 +/epoc32/data/email_2 + + + +/epoc32/data/txt_1 +/epoc32/data/txt_2 + + + ++ make_txt +txt was made fine + + + + ++ make_email +email was made fine + + + + + + + fb email + + + + + \ No newline at end of file diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/test_resources/scripts/delete_on_failed_compile.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/scripts/delete_on_failed_compile.py Wed Apr 14 14:40:58 2010 +0100 @@ -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: +# delete_on_failed_compile.py +# This is a test module for verifying the delete on failed compile +# work around for RVCT 2.2. It creates a dummy object file and +# exits with an error code which should result in object files being deleted. +# It takes the same arguments as armcc, but ignores them all apart from -o. +# + +import sys +import os +import re + +# Parse for -o argument. +objectfile_re = re.compile(".*-o\s(\S*\.(o|pre))\s.*", re.I) +res = objectfile_re.match(" ".join(sys.argv[1:])) + +if res: + objectpath = res.group(1) + print "Found object file %s" % objectpath + objectdirectory = os.path.dirname(objectpath) + + # Make the directory if it doesn't exist + if not os.path.isdir(objectdirectory): + try: + os.makedirs(objectdirectory) + except: + print "Not making directory %s" % objectdirectory + + # Try to write something to the .o file + try: + fh = open(objectpath, "w") + fh.write("Fake object file for delete on failed compile test\n") + fh.close() + except Exception as error: + print "Failed to created object file %s; error was: %s" % (objectfile, str(error)) +else: + print "Failed to determine object filename. Commandline used was: %s" % " ".join(sys.argv[1:]) + +# Always exit with an error +print "Exiting with non-zero exit code." +sys.exit(1) + diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/test_resources/simple/compilervariants/delete_on_failed_compile_compiler_variants.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple/compilervariants/delete_on_failed_compile_compiler_variants.xml Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,8 @@ + + + + + + + + diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/test_resources/simple/makevariants/delete_on_failed_compile_make_variants.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple/makevariants/delete_on_failed_compile_make_variants.xml Wed Apr 14 14:40:58 2010 +0100 @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 5698eefedfc8 -r 0c5ca7f6d8ae sbsv2/raptor/test/smoke_suite/whatcomp.py --- a/sbsv2/raptor/test/smoke_suite/whatcomp.py Wed Apr 14 14:26:41 2010 +0100 +++ b/sbsv2/raptor/test/smoke_suite/whatcomp.py Wed Apr 14 14:40:58 2010 +0100 @@ -67,7 +67,7 @@ t.warnings = warnings t.run() - t.id = "0106a" + t.id = "0106b" t.name = "whatcomp_component_repeated" t.description = """ It is possible for what information about a component to not be grouped @@ -89,5 +89,6 @@ t.run() t.id = "0106" + t.name = "whatcomp" t.print_result() return t