# HG changeset patch # User Jon Chatten # Date 1289573376 0 # Node ID 37ee82a83d43725c95619ab24a800e91d13af304 # Parent 7ae5f757318bc2cb26552fe263b85dc603eed425 sbs version 2.15.3 diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/RELEASE-NOTES.html --- a/sbsv2/raptor/RELEASE-NOTES.html Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/RELEASE-NOTES.html Fri Nov 12 14:49:36 2010 +0000 @@ -6,6 +6,33 @@

Release Notes for Symbian Build System v2

+

version 2.15.3

+ +

Engineering Changes

+ + +

Defect Fixes

+ +

version 2.15.2

Engineering Changes

diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/bin/gethost.sh --- a/sbsv2/raptor/bin/gethost.sh Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/bin/gethost.sh Fri Nov 12 14:49:36 2010 +0000 @@ -1,7 +1,7 @@ #!/bin/bash -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2006-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" @@ -25,20 +25,29 @@ getopts de OPT -if [[ "${OSTYPE}" =~ "linux" ]]; then +if [[ "${OSTYPE}" =~ "linux" || "${HOSTPLATFORM}" =~ "linux" ]]; then ARCH=$(uname -i) LIBC=$(echo /lib/libc-* | sed -r 's#.*/libc-([0-9]*)\.([0-9]*)(\.([0-9]*))?.so#libc\1_\2#') HOSTPLATFORM="linux ${ARCH} ${LIBC}" - if [ "$LIBC" == "libc2_3" ]; then - HOSTPLATFORM_DIR="linux-${ARCH}" - else - HOSTPLATFORM_DIR="linux-${ARCH}-${LIBC}" + # The 32-bit platform is often compatible in the sense that + # a) 32-bit programs can run on the 64-bit OS. + # b) a 64-bit OS can tell the compiler to create 32-bit executables. + + ARCH32="i386" + + # deal with ubuntu/debian: + if [ "$ARCH" == "unknown" ]; then + ARCH32="${ARCH}" fi + + HOSTPLATFORM_DIR="linux-${ARCH}-${LIBC}" + HOSTPLATFORM32_DIR="linux-${ARCH32}-${LIBC}" elif [[ "$OS" == "Windows_NT" ]]; then HOSTPLATFORM="win 32" HOSTPLATFORM_DIR="win32" + HOSTPLATFORM32_DIR="win32" else HOSTPLATFORM=unknown HOSTPLATFORM_DIR=unknown @@ -46,6 +55,7 @@ if [ "$OPT" == "e" ]; then echo "export HOSTPLATFORM_DIR=$HOSTPLATFORM_DIR" + echo "export HOSTPLATFORM32_DIR=$HOSTPLATFORM32_DIR" echo "export HOSTPLATFORM='$HOSTPLATFORM'" elif [ "$OPT" == "d" ]; then echo "$HOSTPLATFORM_DIR" diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/bin/sbs --- a/sbsv2/raptor/bin/sbs Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/bin/sbs Fri Nov 12 14:49:36 2010 +0000 @@ -21,96 +21,11 @@ if [ -z "$SBS_HOME" ] ; then temp=$0 SBS_HOME=$(cd ${temp%/*} && echo $PWD) - export SBS_HOME=${SBS_HOME%/bin} -fi - -# Ensure that the host type is set for Raptor: -eval $($SBS_HOME/bin/gethost.sh -e) - -if [ -z "$HOSTPLATFORM" ]; then - echo "Error: HOSTPLATFORM could not be determined." 1>&2 - exit 1 -fi - -if [ ! -d "$SBS_HOME/$HOSTPLATFORM_DIR" ]; then -cat 1>&2 <&2 + exit 1 +fi + +if [ ! -d "$SBS_HOME/$HOSTPLATFORM_DIR" ]; then +cat 1>&2 <&2 - exit 1 -fi - -if [ ! -d "$SBS_HOME/$HOSTPLATFORM_DIR" ]; then -cat 1>&2 < + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/gcc.xml --- a/sbsv2/raptor/lib/config/gcc.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/gcc.xml Fri Nov 12 14:49:36 2010 +0000 @@ -15,6 +15,7 @@ + @@ -28,15 +29,11 @@ - - + - + @@ -59,10 +56,11 @@ - + + - + @@ -79,8 +77,13 @@ - - + + + + + + + @@ -90,6 +93,7 @@ + @@ -100,6 +104,7 @@ + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/gcc_x86.xml --- a/sbsv2/raptor/lib/config/gcc_x86.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/gcc_x86.xml Fri Nov 12 14:49:36 2010 +0000 @@ -26,6 +26,7 @@ + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/gcce.xml --- a/sbsv2/raptor/lib/config/gcce.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/gcce.xml Fri Nov 12 14:49:36 2010 +0000 @@ -21,6 +21,7 @@ + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/interfaces.xml --- a/sbsv2/raptor/lib/config/interfaces.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/interfaces.xml Fri Nov 12 14:49:36 2010 +0000 @@ -39,6 +39,9 @@ + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/locations.xml --- a/sbsv2/raptor/lib/config/locations.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/locations.xml Fri Nov 12 14:49:36 2010 +0000 @@ -9,12 +9,14 @@ + - + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/rvct.xml --- a/sbsv2/raptor/lib/config/rvct.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/rvct.xml Fri Nov 12 14:49:36 2010 +0000 @@ -20,6 +20,7 @@ + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/variants.xml --- a/sbsv2/raptor/lib/config/variants.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/variants.xml Fri Nov 12 14:49:36 2010 +0000 @@ -9,10 +9,15 @@ + - - - + + + + + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/config/x86.xml --- a/sbsv2/raptor/lib/config/x86.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/config/x86.xml Fri Nov 12 14:49:36 2010 +0000 @@ -12,7 +12,10 @@ - + + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/base.xml --- a/sbsv2/raptor/lib/flm/base.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/base.xml Fri Nov 12 14:49:36 2010 +0000 @@ -100,7 +100,7 @@ - + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/build.flm --- a/sbsv2/raptor/lib/flm/build.flm Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/build.flm Fri Nov 12 14:49:36 2010 +0000 @@ -1,4 +1,4 @@ -# 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" @@ -34,13 +34,13 @@ define doexports PP_EXPORTS:: $(call startrule,makefile_generation_exports) \ - $(SBS) --toolcheck=off --export-only $(component_list) $(config_list) -f- -m $(MAKEFILE_PATH).exports $(CLI_OPTIONS) \ + $(SBS) --toolcheck=off --export-only $(pp_system_definition) $(config_list) -f- -m $(MAKEFILE_PATH).exports $(CLI_OPTIONS) \ $(call endrule,makefile_generation_exports) CLEANTARGETS:=$$(CLEANTARGETS) $(MAKEFILE_PATH).exports endef -# Generate makefiles for particular bldinf +# Generate makefiles for a particular system definition # $(1) = source target source target...... define generate_makefiles @@ -48,7 +48,7 @@ $(MAKEFILE_PATH): $(COMPONENT_PATHS) $(if $(DOEXPORT),| PP_EXPORTS ) $(call startrule,makefile_generation) \ - $(SBS) --noexport --toolcheck=off -n $(CLI_OPTIONS) $(component_list) $(config_list) -m $$@ -f- \ + $(SBS) --noexport --toolcheck=off -n $(CLI_OPTIONS) $(pp_system_definition) $(config_list) -m $$@ -f- \ $(call endrule,makefile_generation) CLEANTARGETS:=$$(CLEANTARGETS) $(MAKEFILE_PATH) @@ -57,9 +57,10 @@ # Create config list for commands config_list:=$(addprefix -c ,$(CONFIGS)) -component_list:=$(addprefix -b ,$(COMPONENT_PATHS)) +pp_system_definition:=-s $(PP_SYSTEM_DEFINITION) $(if $(FLMDEBUG),$(info build.flm: configlist: $(config_list))) +$(if $(FLMDEBUG),$(info build.flm: pp_system_definition file in use: $(pp_system_definition))) # Do exports only if asked. This doesn't work brilliantly in emake # since exports are often duplicated in some components - leads to conflicts diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/build.xml --- a/sbsv2/raptor/lib/flm/build.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/build.xml Fri Nov 12 14:49:36 2010 +0000 @@ -4,7 +4,7 @@ - + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/e32abiv2.flm --- a/sbsv2/raptor/lib/flm/e32abiv2.flm Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/e32abiv2.flm Fri Nov 12 14:49:36 2010 +0000 @@ -371,8 +371,8 @@ # If unfrozen, .lib files are based on the .def file generated by the final postlink $(IMPORTLIBTARGETVERSIONED_LIB): $(if $(EXPORTUNFROZEN),$(E32TARGET),$(PREPPEDDEFFILE)) $(call startrule,importlibversioned_abiv1) \ - if [ -f "$(EPOCROOT)/epoc32/tools/def2dll.pl" -a -f "$(if $(EXPORTUNFROZEN),$(call dblquote,$(GENERATED_DEFFILE)),$(PREPPEDDEFFILE))" ]; then \ - $(PERL) $(EPOCROOT)/epoc32/tools/def2dll.pl \ + if [ -f "$(if $(EXPORTUNFROZEN),$(call dblquote,$(GENERATED_DEFFILE)),$(PREPPEDDEFFILE))" ]; then \ + $(DEF2DLLTOOL) \ --path=$(IMPORTLIBPATH) \ --bldpath=$(INTERMEDIATEPATH) \ --import=$(notdir $(basename $(IMPORTLIBTARGETVERSIONED_LIB))) \ @@ -384,7 +384,7 @@ ifeq ($(EXPLICITVERSION),) $(IMPORTLIBTARGET_LIB): $(IMPORTLIBTARGETVERSIONED_LIB) $(call startrule,importlibtarget_abiv1) \ - if [ -f $(EPOCROOT)/epoc32/tools/def2dll.pl ]; then $(GNUCP) "$$<" "$$@" ; fi \ + $(GNUCP) "$$<" "$$@" \ $(call endrule,importlibtarget_abiv1) endif endef @@ -448,7 +448,7 @@ --definput=$$(call dblquote,$(DEFFILE)) \ --dump=a $(if $(POSTLINKER_SUPPORTS_ASMTYPE),$(POSTLINKER_ASM_OPTION),) \ --output=$(call dblquote,$(EXPTARGETASMFILE)) && \ - $(ASM) $(TARGET_ARCH_OPTION) $(AAPCS_OPTION) $(ASM_OUTPUT_OPTION) $$(call dblquote, $$@) $(EXPTARGETASMFILE) \ + $(ASM) $(ASM_FLAGS) $(TARGET_ARCH_OPTION) $(AAPCS_OPTION) $(ASM_OUTPUT_OPTION) $$(call dblquote, $$@) $(EXPTARGETASMFILE) \ $(call endrule,expgen) endef diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/globals.mk --- a/sbsv2/raptor/lib/flm/globals.mk Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/globals.mk Fri Nov 12 14:49:36 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" @@ -34,7 +34,9 @@ TOOLPLATFORMDIR:= else DOTEXE:= -TOOLPLATFORMDIR:=/$(HOSTPLATFORM_DIR) + +# For the time being tools are all 32-bit +TOOLPLATFORMDIR:=/$(HOSTPLATFORM32_DIR) endif # addglobal(GlobalTargetName) diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/resource.flm --- a/sbsv2/raptor/lib/flm/resource.flm Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/resource.flm Fri Nov 12 14:49:36 2010 +0000 @@ -43,7 +43,6 @@ else RSCDIR:=$(subst //,/,$(EPOCROOT)/epoc32/data) endif -RESBASE:=$(RSCDIR)/$(TARGET_lower) # Ensure that RELEASABLES and CLEANTARGETS cannot expand indefinitely in successive calls to this flm: CLEANTARGETS:= @@ -64,7 +63,7 @@ endif # we create intermediate .rpp and .d files -INTERBASE_TMP:=$(OUTPUTPATH)/$(TARGET_lower)_$(notdir $(basename $(SOURCE))) +INTERBASE_TMP:=$(OUTPUTPATH)/$(TARGET_var)_$(notdir $(basename $(SOURCE))) LANGUAGES:=$(LANGUAGES:SC=sc) # ensure that we don't ever have to worry about case consistency w.r.t languages or get confused into thinking that SC!=sc (which it is) LANGUAGES:=$(call uniq,$(LANGUAGES)) # remove any duplicates from the list (usually the result of multiple LANG lists both in and out of START RESOURCE blocks) @@ -167,7 +166,7 @@ # invoke the macro that creates targets for building resources, once per language # For sc we generate $(INTERBASE_TMP).rsc and define LANGUAGE_SC and LANGUAGE_sc. - $(foreach L,$(LANGUAGES),$(eval $(call resource.build,$(INTERBASE_TMP).r$(L),$(L),$(TARGET_lower).r$(L)))) + $(foreach L,$(LANGUAGES),$(eval $(call resource.build,$(INTERBASE_TMP).r$(L),$(L),$(TARGET_var).r$(L)))) DEPENDFILE:=$(wildcard $(DEPENDFILENAME)) @@ -186,7 +185,7 @@ # We tried to copy after running rcomp itself but we still need these # targets for the sake of dependencies or, for example, if someone # merely adds a new copy when the resource is up-to-date - $(foreach L,$(LANGUAGES),$(eval $(call resource.makecopies,$(INTERBASE_TMP).r$(L),$(TARGET_lower).r$(L)))) + $(foreach L,$(LANGUAGES),$(eval $(call resource.makecopies,$(INTERBASE_TMP).r$(L),$(TARGET_var).r$(L)))) endif else @@ -194,7 +193,7 @@ # HEADERONLY was specified # GUARD:=TARGET_$(call sanitise,$(INTERBASE_TMP))_rsg - $(if $(FLMDEBUG),$(info resource.flm: Headeronly $(INTERBASE_TMP) $(TARGET_lower).rsg LANGUAGES:=$(LANGUAGES))) + $(if $(FLMDEBUG),$(info resource.flm: Headeronly $(INTERBASE_TMP) $(TARGET_var).rsg LANGUAGES:=$(LANGUAGES))) ifeq ($($(GUARD)),) $(GUARD):=1 diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/romfile.mk --- a/sbsv2/raptor/lib/flm/romfile.mk Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/romfile.mk Fri Nov 12 14:49:36 2010 +0000 @@ -13,12 +13,11 @@ # Description: # -EPOC_ROOT:=$(patsubst %/,%,$(EPOCROOT)) -TOBLDINF:=$(dir $(subst :,,$(subst $(EPOC_ROOT)/,,$(COMPONENT_META)))) +TOBLDINF:=$(dir $(subst :,,$(subst $(EPOCROOT)/,,$(COMPONENT_META)))) ifeq ($(ROMFILE_$(call sanitise,$(TOBLDINF)$(TARGET).$(REQUESTEDTARGETEXT))),) ROMFILE_$(call sanitise,$(TOBLDINF)$(TARGET).$(REQUESTEDTARGETEXT)):=1 - ROMDIR:=$(EPOC_ROOT)/epoc32/rom/$(TOBLDINF) + ROMDIR:=$(EPOCROOT)/epoc32/rom/$(TOBLDINF) # Default values ROMFILETYPE:=file @@ -82,10 +81,10 @@ # Add 'TEST' to the .iby filename ROMTEST:=test ifeq ($(TEST_OPTION),BOTH) - DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).auto.bat test/$(MODULE).auto.bat"\n"data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).manual.bat test/$(MODULE).manual.bat" + DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).auto.bat test/$(VARIANTPLATFORM).auto.bat"\n"data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).manual.bat test/$(VARIANTPLATFORM).manual.bat" else ifneq ($(TEST_OPTION),NONE) - DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TEST_OPTION).bat test/$(MODULE).$(TEST_OPTION).bat" + DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TEST_OPTION).bat test/$(VARIANTPLATFORM).$(TEST_OPTION).bat" endif endif endif @@ -132,7 +131,7 @@ ROMFILE:: $(call startrule,rombuild) \ $(GNUMKDIR) -p $(ROMDIR) \ - $(if $(ROMFILE_CREATED_$(TOBLDINF)),,&& echo -e "// $(subst $(EPOC_ROOT)/,,$(ROMFILENAME))\n//\n$(DATATEXT)" > $(ROMFILENAME)) \ + $(if $(ROMFILE_CREATED_$(TOBLDINF)),,&& echo -e "// $(subst $(EPOCROOT)/,,$(ROMFILENAME))\n//\n$(DATATEXT)" > $(ROMFILENAME)) \ $(if $(BUILDROMTARGET),&& echo "$(ROMFILETYPE)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT) $(1)$(ROMDECORATIONS)" >> $(ROMFILENAME)) \ $(if $(RAMTARGET),&& echo "$(ROMFILETYPE_RAM)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT) $(ROMPATH_RAM)$(ROMFILE_RAM)$(ROMDECORATIONS_RAM)" >> $(ROMFILENAME)) \ $(call endrule,buildromfiletarget) diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/standard.xml --- a/sbsv2/raptor/lib/flm/standard.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/standard.xml Fri Nov 12 14:49:36 2010 +0000 @@ -41,7 +41,7 @@ - + @@ -88,6 +88,7 @@ + @@ -112,6 +113,7 @@ + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/tools.xml --- a/sbsv2/raptor/lib/flm/tools.xml Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/tools.xml Fri Nov 12 14:49:36 2010 +0000 @@ -22,6 +22,9 @@ + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/lib/flm/tools2exe.flm --- a/sbsv2/raptor/lib/flm/tools2exe.flm Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/lib/flm/tools2exe.flm Fri Nov 12 14:49:36 2010 +0000 @@ -44,14 +44,19 @@ include $(FLMHOME)/tools2common.flm ## Static libraries +STATICLIBS:= ifneq ($(STATICLIBRARY),) STATICLIBS:=$(patsubst %,$(RELEASEPATH)/lib%.a,$(STATICLIBRARY)) -LLIBS:=$(OPT.L)"$(RELEASEPATH)" $(patsubst %,$(OPT.l)%,$(STATICLIBRARY)) -# +endif + +ifneq ($(STLPORTLIBRARY),) +STATICLIBS:=$(STATICLIBS) $(STLPORTBINDIR)/lib$(STLPORTLIBRARY).a +endif + +# System dynamic libraries (e.g. pthreads) +LLIBS:= ifneq ($(SYSTEMLIBS),) -LLIBS:=$(LLIBS) $(patsubst %,$(OPT.l)%,$(SYSTEMLIBS)) -endif -# +LLIBS:=$(patsubst %,$(OPT.l)%,$(SYSTEMLIBS)) endif ## Link executable @@ -59,7 +64,7 @@ define tools2linkexe $(EXETARGET): $(OBJECTFILES) $(STATICLIBS) $(call startrule,tools2linkexe) \ - $(LINKER) $(CFLAGS) $(LFLAGS) $(OPT.O)"$(EXETARGET)" $(call dblquote,$(OBJECTFILES)) $(LLIBS) $(LINKER_OPTIONS) \ + $(LINKER) $(CFLAGS) $(LFLAGS) $(OPT.O)"$(EXETARGET)" $(call dblquote,$(OBJECTFILES)) $(STATICLIBS) $(LLIBS) $(LINKER_OPTIONS) \ $(if $(SAVESPACE),; $(GNURM) -rf $(OUTPUTPATH); true,) \ $(call endrule,tools2linkexe) diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/notes/filter_exes.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/notes/filter_exes.txt Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,42 @@ +Use the filter_exes filter to generate a set of files listing the executables +created in a build. A separate file will be created for each layer name and +each configuration containing executable files. The filter can be run on an +existing log file as follows: + +sbs_filter --filter=filter_exes < logfile +where 'logfile' is the name of the logfile you want to analyse. + +By default it will create the files in the current directory, named +'_.txt' e.g. 'layerone_armv5_urel.txt'. If layers are not in +use (e.g. the build was not based on a system definition) the layer name used +will be 'nolayer' - e.g. 'nolayer_armv5_udeb.txt'. + +The location for output files can be overridden using the 'output' argument. +To limit its operation to specified layers or configs, the 'layer' and 'config' +arguments can be supplied, multiple times if necessary: + +sbs_filter --filter=filter_exes[output=mydir,layer=layerone,layer=layertwo,config=armv5_urel] < logfile + +This will search for executables generated from either 'layerone' or 'layertwo' +components which were also build for armv5_urel. The filter will record an +executable if it matches any of the layers specified and also was built for any +of the configs specified. + +The files contain a list of filenames with no paths and no other information, +for example: + +HelloWorld.exe +Dummy.exe +epoc.exe +[...] + +A file will only be produced if there are any filenames to go into it. The +filter will report on any files that have been created e.g: + +Wrote 242 file(s) into layerone_armv5_urel.txt +Write 45 file(s) into layertwo_armv5_urel.txt + +Note that argument names may be abbreviated e.g. + +sbs_filter --filter=filter_exes[o=mydir,l=layerone,c=armv5_urel] < logfile + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/notes/lowercasing_for_resource.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/notes/lowercasing_for_resource.txt Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,16 @@ +Raptor used to generate resource rsg files in lowercase, regardless what was specified +in mmp file. That was incompatible with qmake-generated meta data, and caused build errors +for Qt projects in Linux. + +So Raptor is changed to generate rsg files case sensitively according to mmp files. +That could cause build errors on Linux if the case in meta data did not match the real case, +and people should fix case issues in their source code and metadata, and keep case consistent. + +Because this change could stop people building their code, option "--use-rsg-casefolding" +is provided for temparary use, which tolerates case issues so people could continue to build +their code on Linux before they fixed all of them. However, they should not use this option +as a permanent work around. + +Usage: By default resource files are not case folding, to enable it use option "--use-rsg-casefolding" + +This does not affect build on Windows. diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/notes/per_component_flm.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/notes/per_component_flm.txt Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,20 @@ +It is possible to specify an interface (and therefore an FLM) to be used +for each component (bld.inf) in a build in addition to the normal target +FLMs used to create the binaries. + +This is done by setting the variable "INTERFACE.component" in the build +configuration to the name of the required interface. + +Operations can then be performed on a per-component basis. An example of +how to use this can be seen in the test file, + +$SBS_HOME/test/smoke_suite/flm_extension.py + +which uses the following files to set-up and perform a "documenting" build, + +$SBS_HOME/test/smoke_suite/test_resources/docs/docs_build.xml +$SBS_HOME/test/smoke_suite/test_resources/docs/component.flm +$SBS_HOME/test/smoke_suite/test_resources/docs/target.flm + +By default the variable "INTERFACE.component" is set to "" and no extra FLM +is included. diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/notes/tools_env_vars.txt --- a/sbsv2/raptor/notes/tools_env_vars.txt Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/notes/tools_env_vars.txt Fri Nov 12 14:49:36 2010 +0000 @@ -7,19 +7,44 @@ SBS_EPOCTOOLS Directory for epoc32 tools; defaults to $EPOCROOT/epoc32/tools Changes the default locations for all of the following tools. SBS_CHECKLIB Full path to checklib program +SBS_DEF2DLL perl, followed by full path to def2dll.pl SBS_EFREEZE perl, followed by full path to efreeze.pl SBS_ELF2E32 Full path to elf2e32 program +SBS_GENDEF perl, followed by full path to gendef.pl +SBS_MAKEDEF perl, followed by full path to makedef.pl +SBS_PETRAN perl, followed by full path to petran.pl SBS_PREPDEF perl, followed by full path to prepdef.pl SBS_RCOMP Full path to rcomp program +SBS_SYMLOOKUPUTIL perl, followed by full path to sym_lkup_util.pl SBS_TRANASM perl, followed by full path to tranasm.pl -SBS_MAKEDEF perl, followed by full path to makedef.pl -SBS_PETRAN perl, followed by full path to petran.pl -SBS_SYMLOOKUPUTIL perl, followed by full path to sym_lkup_util.pl + +SBS_GCC_BIN Linux only: full path to GCC and associated tools +SBS_MINGW_LINUX_BIN Linux only: location of MINGW tools for Linux-hosted + cross-compilation of Win32 tools2 targets SBS_SLASHBIN Linux only: location of /bin, i.e. an alternative location for GCC and associated tools SBS_USRBIN Linux only: location of /usr/bin, i.e. an alternative location for Gnu tools such as the Core Utils +SBS_STLPORTINCDIR Location of STLport headers files (tools2 builds only) +SBS_STLPORTBINDIR Location of STLport library (tools2 builds only). + Assumes that there is a "rel" and "deb" directory + immediately under this directory containing the + STLport library (release and debug version + respectively). +SBS_STLPORTINCDIR_WIN32 Location of STLport headers files for Linux-hosted + cross-compilation of Win32 tools2 targets. Only + applicable when using the "win32" variant, + i.e. "tools2.win32" +SBS_STLPORTBINDIR_WIN32 Location of STLport library for Linux-hosted + cross-compilation of Win32 tools2 targets. Only + applicable when using the "win32" variant, + i.e. "tools2.win32". + Assumes that there is a "rel" and "deb" directory + immediately under this directory containing the + STLport library (release and debug version + respectively). + In the case Perl scripts (.pl files), "perl" can be replaced with the full path to the perl program. @@ -28,6 +53,7 @@ CHECKLIB EFREEZE ELF2E32 +GENDEF MAKEDEF PETRAN PREPDEF @@ -35,3 +61,4 @@ TRANASM which are no longer in use. + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/filter_interface.py --- a/sbsv2/raptor/python/filter_interface.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/filter_interface.py Fri Nov 12 14:49:36 2010 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2006-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" @@ -36,6 +36,53 @@ def formatWarning(self, message): return "sbs: warning: " + message + "\n" + def parseNamedParams(self, names, params): + ''' Match named parameters e.g. ['a=b','c=d'] against a list of expected + names. Allow for abbreviations. + ''' + r = {} + + # Shorten all the names so they match abbreviations + shortnames = [] + + for name in names: + shortname = "" + conflict = True + while len(shortname) tag in {1} recipe for {2}".format(name, self.formatData('name'), self.formatData('target')))) + + def endElement(self, name): + if name == "recipe": + if not self.inRecipe: + self.error(RaptorLogNotValid("Extra recipe close tag")) + else: + if not self.handleRecipe(): + self.error(RaptorLogNotValid('Handling of {0} recipe for {1} failed'.format(self.formatData('name'), self.formatData('target')))) + self.inRecipe = False + + self.__delData(self.recipeData|self.statusData|self.timeData) + self.text="" + + def characters(self, char): + if self.inRecipe: + self.text += char + + def error(self, exception): + "the parse found an error which is (possibly) recoverable" + pass + + def fatalError(self, exception): + "the parser thinks an error occurred which should stop everything" + pass + + def warning(self, exception): + "the parser found something to complain about that might not matter" + pass + + # Private methods + def __setHashElements(self, fro, to, keys): + for key in keys: + if fro.has_key(key): + to[key] = fro[key] + + def __delData(self, keys): + for key in keys: + if self.__dict__.has_key(key): + del self.__dict__[key] # the end diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/filter_list.py --- a/sbsv2/raptor/python/filter_list.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/filter_list.py Fri Nov 12 14:49:36 2010 +0000 @@ -116,9 +116,16 @@ # if the filter exists and is a valid filter use it if f.lower() in filterdict: if params: - self.filters.append(filterdict[f.lower()](params)) + try: + self.filters.append(filterdict[f.lower()](params)) + except TypeError: + raise ValueError("requested filter does not take any parameters") else: - self.filters.append(filterdict[f.lower()]()) + try: + self.filters.append(filterdict[f.lower()]()) + except TypeError: + # Claims to need parameters - pass in an empty list + self.filters.append(filterdict[f.lower()]([])) else: # record missing filters unfound.append(f) @@ -132,12 +139,17 @@ else: self.out=[] for filter in self.filters: - if filter.open(raptor_instance): + try: + ok = filter.open(raptor_instance) + except Exception, e: + sys.stderr.write(filter.formatError(str(e))) + ok = False + + if ok: self.out.append(filter) else: sys.stderr.write(str(raptor.name) + \ ": error: Cannot open filter: %s\n" % str(filter)) - ok = False if self.out == []: sys.stderr.write(str(raptor.name) + \ diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/plugins/filter_exes.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/python/plugins/filter_exes.py Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,112 @@ +# +# 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 to write out a list of executable files built per sysdef layer + +import filter_interface +import sys +import os.path +import os + +class Filter_EXEs(filter_interface.PerRecipeFilter): + def __init__(self, params): + super(Filter_EXEs, self).__init__() + + try: + params = self.parseNamedParams(['layer','config','output'],params) + # e.g. ['layer=a','config=armv5_udeb','config=armv5_urel'] + except ValueError: + raise ValueError("All parameters to the Filter_EXEs filter must be labelled. Valid labels are 'layer','config' and 'output'.") + else: + self.layers = params['layer'] + self.configs = params['config'] + output = params['output'] + if len(output) > 1: + raise ValueError("Only one 'output' parameter to the Filter_EXEs filter is permissible.") + if len(output) > 0: + self.output = output[0] + + if not os.path.isdir(self.output): + os.makedirs(self.output) + + self.unmatchedlayers = self.layers[:] # [:] = Shallow copy, not ref + self.unmatchedconfigs = self.configs[:] + self.fileswritten = {} + + def handleRecipe(self): + if (self.name == 'linkandpostlink' or self.name == 'win32simplelink') and self.target.endswith('.exe'): + if ((len(self.configs) == 0 or (self.config in self.configs)) and + (len(self.layers) == 0 or (self.layer in self.layers))): + layer = self.formatData('layer') or 'nolayer' + config = self.formatData('config') or 'noconfig' + filename = "{0}_{1}.txt".format(layer,config) + try: + filename = os.path.join(self.output, filename) + except AttributeError: + pass # No output path to join + + if not filename in self.fileswritten: + newfilename = filename + if os.path.exists(filename): + # Oops - file already exists + index = 2 # Start with .txt2 + while os.path.exists(filename+str(index)): + index += 1 + newfilename = filename+str(index) + file = open(newfilename,"w") + self.fileswritten[filename] = (newfilename, 1, file) + else: + (realfilename, num, file) = self.fileswritten[filename] + self.fileswritten[filename] = (realfilename, num+1, file) + + file.write(os.path.basename(self.target)+"\n") + + try: + self.unmatchedlayers.remove(self.layer) + except ValueError: + # Already removed + pass + try: + self.unmatchedconfigs.remove(self.config) + except ValueError: + # Already removed + pass + return True + + def summary(self): + if len(self.layers) > 0: + for layer in self.unmatchedlayers: + self.info("Layer '{0}' did not match any EXEs\n".format(layer)) + if len(self.configs) > 0: + for config in self.unmatchedconfigs: + self.info("Config '{0}' did not match any EXEs\n".format(config)) + for (filename, num, file) in self.fileswritten.values(): + file.close() + self.info("Wrote {0} file(s) into {1}\n".format(num, filename) ) + + def error(self,exception): + sys.stderr.write(self.formatError(str(exception))) + + def fatalError(self,exception): + for (realfilename, num,file) in self.fileswritten.values(): + file.close() + + raise(exception) + + def warning(self,exception): + sys.stderr.write(str(exception)) + + def info(self, text): + sys.stdout.write(text) + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/plugins/filter_html.py --- a/sbsv2/raptor/python/plugins/filter_html.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/plugins/filter_html.py Fri Nov 12 14:49:36 2010 +0000 @@ -827,4 +827,4 @@ self.text = "" self.time = 0.0 -# the end \ No newline at end of file +# the end diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/plugins/filter_terminal.py --- a/sbsv2/raptor/python/plugins/filter_terminal.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/plugins/filter_terminal.py Fri Nov 12 14:49:36 2010 +0000 @@ -24,6 +24,7 @@ import os.path import re + class Recipe(object): """State machine that parses a recipe """ @@ -100,7 +101,6 @@ Recipe.recipes.append(FreezeRecipe) - class FilterTerminal(filter_interface.Filter): attribute_re = re.compile("([a-z][a-z0-9]*)='([^']*)'",re.I) @@ -221,15 +221,23 @@ end = text.rfind("<") self.err_count += 1 if not self.analyseonly: - sys.stderr.write(str(raptor.name) + ": error: %s\n" \ - % text[(start + 1):end]) + m = FilterTerminal.attribute_re.findall(text, 0, start) + component = "" + for i in m: + if i[0] == 'bldinf': + component = " (component " + i[1] + ")" + sys.stderr.write(self.formatError(text[(start + 1):end] + component)) elif text.startswith("") end = text.rfind("<") self.warn_count += 1 if not self.analyseonly: - sys.stdout.write(str(raptor.name) + ": warning: %s\n" \ - % text[(start + 1):end]) + m = FilterTerminal.attribute_re.findall(text, 0, start) + component = "" + for i in m: + if i[0] == 'bldinf': + component = " (component " + i[1] + ")" + sys.stdout.write(self.formatWarning(text[(start + 1):end] + component)) elif text.startswith(" 0: + self.FatalError("Build stopped because the following requested configurations are incomplete or invalid: {0}".format(", ".join(tool_problems))) return tools_ok - - def GatherSysModelLayers(self, systemModel, systemDefinitionRequestedLayers): """Return a list of lists of components to be built. diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/raptor_cli.py --- a/sbsv2/raptor/python/raptor_cli.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/raptor_cli.py Fri Nov 12 14:49:36 2010 +0000 @@ -167,6 +167,12 @@ "off" - Parse bld.infs serially """) +parser.add_option("--use-rsg-casefolding", action="store_true", dest="resource_rsg_casefolding", + help="""This option should not be used permanently to work around case issues on Linux. Case issues need to be fixed and this option should only be used before that has been done. + + Generate resource rsg files in lowercase regardless what is specified in mmp file. + """) + parser.add_option("-v","--version",action="store_true",dest="version", help="Print the version number and exit.") @@ -245,6 +251,7 @@ 'source_target' : Raptor.AddSourceTarget, 'command_file' : CommandFile, 'parallel_parsing' : Raptor.SetParallelParsing, + 'resource_rsg_casefolding' : Raptor.SetRsgCaseFolding, 'version' : Raptor.PrintVersion } diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/raptor_make.py --- a/sbsv2/raptor/python/raptor_make.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/raptor_make.py Fri Nov 12 14:49:36 2010 +0000 @@ -76,6 +76,8 @@ inOutput = False buildid = "" + duration = "unknown" + availability = "unknown" for line in af: line = line.rstrip("\n\r") @@ -186,16 +188,19 @@ # console output is lost. The annotation file has a copy of this # output in the "parse" job and it turns out to be uncorrupted. self.copyLogFromAnnoFile = (evaluator.Get("copylogfromannofile") == "true") - self.annoFileName = None + self.emakeCm = (len([opt for opt in self.raptor.makeOptions if opt.startswith("--emake-cm")]) > 0) + self.annoFileName = None # store the anno file name if self.copyLogFromAnnoFile: - for o in self.raptor.makeOptions: - self.annoFileName = string_following("--emake-annofile=", o) - if self.annoFileName: - self.raptor.Info("annofile: " + o) - - if not self.annoFileName: - self.raptor.Info("Cannot copy log from annotation file as no annotation filename was specified via the option --mo=--emake-annofile=") + try: + self.annoFileName = string_following("--emake-annofile=", [opt for opt in self.raptor.makeOptions if opt.startswith("--emake-annofile")][0]) + self.raptor.Info("annofile: " + self.annoFileName) + except IndexError, bad_index: + cannot_use_anno_msg = "Cannot copy log from annotation file as no annotation filename was specified via the option --mo=--emake-annofile=" + if self.emakeCm: + self.raptor.Error(cannot_use_anno_msg) # Only an error if requested use of cm + else: + self.raptor.Info(cannot_use_anno_msg) self.copyLogFromAnnoFile = False # buffering @@ -284,6 +289,7 @@ HOSTPLATFORM:=%s HOSTPLATFORM_DIR:=%s +HOSTPLATFORM32_DIR:=%s OSTYPE:=%s FLMHOME:=%s SHELL:=%s @@ -298,6 +304,7 @@ """ % ( raptor.name, raptor_version.fullversion(), " ".join(raptor.hostplatform), raptor.hostplatform_dir, + raptor.hostplatform32_dir, self.raptor.filesystem, str(self.raptor.systemFLM), self.shellpath, @@ -482,7 +489,7 @@ guard = "guard_" + hash # generate the call to the FLM - if iface is not None: + if iface is not None and not dupe: makefileset.addCall(spec.name, config.name, iface.name, useAllInterfaces, iface.GetFLMIncludePath(self.raptor.cache), parameters, guard) # recursive includes diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/raptor_meta.py --- a/sbsv2/raptor/python/raptor_meta.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/raptor_meta.py Fri Nov 12 14:49:36 2010 +0000 @@ -1440,7 +1440,12 @@ self.__debug("Set REQUESTEDTARGETEXT to " + self.__TARGETEXT.lower()) self.BuildVariant.AddOperation(raptor_data.Set("TARGET", self.__TARGET)) - self.BuildVariant.AddOperation(raptor_data.Set("TARGET_lower", lowercase_TARGET)) + # case folding: case insensitive for resources + if self.__Raptor.doCaseFolding_rsg: + self.BuildVariant.AddOperation(raptor_data.Set("TARGET_var", lowercase_TARGET)) + else: + self.BuildVariant.AddOperation(raptor_data.Set("TARGET_var", self.__TARGET)) + if lowercase_TARGET != self.__TARGET: self.__debug("TARGET is not lowercase: '%s' - might cause BC problems." % self.__TARGET) elif varname=='TARGETTYPE': @@ -1448,7 +1453,7 @@ self.__targettype=toks[1] if self.__targettype.lower() == "none": self.BuildVariant.AddOperation(raptor_data.Set("TARGET", "")) - self.BuildVariant.AddOperation(raptor_data.Set("TARGET_lower","")) + self.BuildVariant.AddOperation(raptor_data.Set("TARGET_var","")) self.BuildVariant.AddOperation(raptor_data.Set("REQUESTEDTARGETEXT", "")) self.BuildVariant.AddOperation(raptor_data.Set(varname,toks[1].lower())) @@ -1785,9 +1790,14 @@ target = source.File().rsplit(".", 1)[0] # remove the extension variant.AddOperation(raptor_data.Set("TARGET", target)) - variant.AddOperation(raptor_data.Set("TARGET_lower", target.lower())) - - header = target.lower() + ".rsg" # filename policy + + if self.__Raptor.doCaseFolding_rsg: + variant.AddOperation(raptor_data.Set("TARGET_var", target.lower())) + header = target.lower() + ".rsg" + else: + variant.AddOperation(raptor_data.Set("TARGET_var", target)) + header = target + ".rsg" + variant.AddOperation(raptor_data.Set("HEADER", header)) if sysRes: @@ -1915,10 +1925,16 @@ target = self.__current_resource.rsplit("/",1)[-1] target = target.rsplit(".",1)[0] self.__currentResourceVariant.AddOperation(raptor_data.Set("TARGET", target)) - self.__currentResourceVariant.AddOperation(raptor_data.Set("TARGET_lower", target.lower())) + + if self.__Raptor.doCaseFolding_rsg: + self.__currentResourceVariant.AddOperation(raptor_data.Set("TARGET_var", target.lower())) + self.__current_resource_header = target.lower() + ".rsg" + else: + self.__currentResourceVariant.AddOperation(raptor_data.Set("TARGET_var", target)) + self.__current_resource_header = target + ".rsg" + self.__headerspecified = False self.__headeronlyspecified = False - self.__current_resource_header = target.lower() + ".rsg" return "OK" @@ -1935,8 +1951,14 @@ if varname == "TARGET": target_withext = varvalue.rsplit("/\\",1)[-1] target = target_withext.rsplit(".",1)[0] - self.__current_resource_header = target.lower() + ".rsg" - self.__currentResourceVariant.AddOperation(raptor_data.Set("TARGET_lower", target.lower())) + + if self.__Raptor.doCaseFolding_rsg: + self.__current_resource_header = target.lower() + ".rsg" + self.__currentResourceVariant.AddOperation(raptor_data.Set("TARGET_var", target.lower())) + else: + self.__current_resource_header = target + ".rsg" + self.__currentResourceVariant.AddOperation(raptor_data.Set("TARGET_var", target)) + self.__debug("Set resource "+varname+" to " + target) self.__currentResourceVariant.AddOperation(raptor_data.Set(varname,target)) if varname == "TARGETPATH": @@ -2007,7 +2029,7 @@ self.__currentBitmapVariant = raptor_data.Variant(name = toks[1].replace('.','_')) # Use BMTARGET and BMTARGET_lower because that prevents - # confusion with the TARGET and TARGET_lower of our parent MMP + # confusion with the TARGET and TARGET_var of our parent MMP # when setting the OUTPUTPATH. This in turn allows us to # not get tripped up by multiple mbms being generated with # the same name to the same directory. @@ -2360,9 +2382,9 @@ self.BuildVariant.AddOperation(raptor_data.Set("DEBUGGABLE", self.__debuggable)) if self.__explicitversion: - self.BuildVariant.AddOperation(raptor_data.Append("UNIQUETARGETPATH","$(TARGET_lower)_$(VERSIONHEX)_$(REQUESTEDTARGETEXT)",'/')) + self.BuildVariant.AddOperation(raptor_data.Append("UNIQUETARGETPATH","$(TARGET_var)_$(VERSIONHEX)_$(REQUESTEDTARGETEXT)",'/')) else: - self.BuildVariant.AddOperation(raptor_data.Append("UNIQUETARGETPATH","$(TARGET_lower)_$(REQUESTEDTARGETEXT)",'/')) + self.BuildVariant.AddOperation(raptor_data.Append("UNIQUETARGETPATH","$(TARGET_var)_$(REQUESTEDTARGETEXT)",'/')) # Put the list of sourcefiles in with one Set operation - saves memory # and performance over using multiple Append operations. @@ -2586,6 +2608,7 @@ flm_export_dir = evaluator.CheckedGet("FLM_EXPORT_DIR") detail['FLM_EXPORT_DIR'] = generic_path.Path(flm_export_dir) detail['CACHEID'] = flm_export_dir + detail['INTERFACE.component'] = evaluator.Get('INTERFACE.component') if raptor_utilities.getOSPlatform().startswith("win"): detail['PLATMACROS'] = evaluator.CheckedGet("PLATMACROS.WINDOWS") else: @@ -2646,7 +2669,7 @@ + detail['PLATFORM'] \ + detail['PLATMACROS'] - # Keep a short version of the key for use in filenames. + # Keep a short version of the key for use in filenames. uniq = hashlib.md5() uniq.update(key) @@ -2840,14 +2863,10 @@ def ModuleName(self,aBldInfPath): """Calculate the name of the ROM/emulator batch files that run the tests""" - def LeftPortionOf(pth,sep): - """ Internal function to return portion of str that is to the left of sep. - The split is case-insensitive.""" - length = len((pth.lower().split(sep.lower()))[0]) - return pth[0:length] - - modulePath = LeftPortionOf(LeftPortionOf(os.path.dirname(aBldInfPath), "group"), "ongoing") - moduleName = os.path.basename(modulePath.strip("/")) + epocroot = str(self.ExportPlatforms[0]['EPOCROOT']) + modulePath = os.path.dirname(aBldInfPath).replace(epocroot, '', 1).lower().replace('group', '') + # Only join the last 3 folder names in case the path is very long + moduleName = '_'.join([i for i in modulePath.split('/') if i][-3:]) # Ensure that ModuleName does not return blank, if the above calculation determines # that moduleName is blank @@ -2902,6 +2921,11 @@ # remember what component this spec node comes from for later specNode.component = component + # if there is a per-component interface for this platform + # then set it for this spec node. + if bp['INTERFACE.component']: + specNode.SetInterface(bp['INTERFACE.component']) + # 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))) diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/raptor_version.py --- a/sbsv2/raptor/python/raptor_version.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/raptor_version.py Fri Nov 12 14:49:36 2010 +0000 @@ -19,7 +19,7 @@ # # both of these are done automatically by the installer builder. -version=(2,15,2,"ISODATE","symbian build system","CHANGESET") +version=(2,15,3,"ISODATE","symbian build system","CHANGESET") def numericversion(): """Raptor version string""" diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/python/raptor_xml.py --- a/sbsv2/raptor/python/raptor_xml.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/python/raptor_xml.py Fri Nov 12 14:49:36 2010 +0000 @@ -173,10 +173,19 @@ class SystemModel(object): """A representation of the SystemModel section of a Symbian system_definition.xml file.""" - def __init__(self, aLogger, aSystemDefinitionFile, aSystemDefinitionBase): + def __init__(self, aLogger, aSystemDefinitionFile = None, aSystemDefinitionBase = None, aDoRead = True): self.__Logger = aLogger - self.__SystemDefinitionFile = aSystemDefinitionFile.GetLocalString() - self.__SystemDefinitionBase = aSystemDefinitionBase.GetLocalString() + + if aSystemDefinitionFile: + self.__SystemDefinitionFile = aSystemDefinitionFile.GetLocalString() + else: + self.__SystemDefinitionFile = generic_path.Path('undefined').GetLocalString() + + if aSystemDefinitionBase: + self.__SystemDefinitionBase = aSystemDefinitionBase.GetLocalString() + else: + self.__SystemDefinitionBase = generic_path.Path('undefined').GetLocalString() + self.__Version = {'MAJOR':0,'MID':0,'MINOR':0} self.__IdAttribute = "name" self.__ComponentRoot = "" @@ -188,12 +197,13 @@ self.__DOM = None self.__SystemDefinitionElement = None - if self.__Read(): - if self.__Validate(): - self.__Parse() + if aDoRead: + if self.__Read(): + if self.__Validate(): + self.__Parse() - if self.__DOM: - self.__DOM.unlink() + if self.__DOM: + self.__DOM.unlink() def HasLayer(self, aLayer): return aLayer in self.__LayerList @@ -201,6 +211,24 @@ def GetLayerNames(self): return self.__LayerList + def AddComponent(self, aComponent): + '''Add a dummy component, sufficient for the purposes of + writing a new system definition file. Argument is a Raptor + Component object. + ''' + layername = aComponent.layername + if layername == '': + raise Exception("Can't add a component ("+str(aComponent.bldinf_filename)+") without a layer name to a system defintion file") + containers = {'layer':layername,'component':aComponent.componentname} + component = SystemModelComponent(aComponent.bldinf_filename, layername, containers, self.__SystemDefinitionFile, self.__SystemDefinitionBase, self.__Version) + + if not layername in self.__LayerList: + self.__LayerList.append(layername) + + if not self.__LayerDetails.has_key(layername): + self.__LayerDetails[layername] = [] + self.__LayerDetails[layername].append(component) + def GetLayerComponents(self, aLayer): if not self.HasLayer(aLayer): self.__Logger.Error("System Definition layer \"%s\" does not exist in %s", aLayer, self.__SystemDefinitionFile) @@ -226,7 +254,6 @@ components.extend(self.GetLayerComponents(layer)) return components - def DumpLayerInfo(self, aLayer): if self.HasLayer(aLayer): self.__Logger.Info("Found %d bld.inf references in layer \"%s\"", len(self.GetLayerComponents(aLayer)), aLayer) @@ -238,6 +265,45 @@ count = len(self.GetLayerNames())) self.__Logger.InfoDiscovery(object_type = "bld.inf references", count = len(self.GetAllComponents())) + + def Write(self, aFilename): + """Write out a system definition that can be used to create an + identical SystemModel object. + Note it isn't guaranteed to be a valid system definition - just one + that will unserialise to an object identical to this one + """ + impl = xml.dom.minidom.getDOMImplementation() + self.__DOM = impl.createDocument(None, "SystemDefinition", None) + self.__SystemDefinitionElement = self.__DOM.documentElement + self.__DOM.insertBefore(self.__DOM.createComment('This document is generated by Raptor. Please do not edit.'),self.__SystemDefinitionElement) + self.__SystemDefinitionElement.setAttribute('name','MCL') + self.__SystemDefinitionElement.setAttribute('schema','2.0.0') + systemModelNode = self.__DOM.createElement('systemModel') + self.__SystemDefinitionElement.appendChild(systemModelNode) + for layer in self.__LayerList: + if len(self.__LayerDetails[layer]) == 0: + continue + if layer == '': + self.__Logger.Error("Can't write out layer with no name to "+aFilename) + else: + layerNode = self.__DOM.createElement('layer') + layerNode.setAttribute('name',layer) + systemModelNode.appendChild(layerNode) + for component in self.__LayerDetails[layer]: + componentNode = self.__DOM.createElement('component') + componentNode.setAttribute('name',component.GetContainerName('component')) + layerNode.appendChild(componentNode) + path = str(component) + unitNode = self.__DOM.createElement('unit') + unitNode.setAttribute('bldFile',path) + componentNode.appendChild(unitNode) + + # Record that we haven't stripped the file names off our bld.infs + self.__SystemDefinitionElement.setAttribute('fullbldinfs','True') + + self.__DOM.writexml(open(aFilename,"w"),newl="\n",indent="",addindent="\t") + + self.__DOM.unlink() def __Read(self): if not os.path.exists(self.__SystemDefinitionFile): @@ -273,6 +339,12 @@ self.__Version['MID'] = int(version.group('MID')) self.__Version['MINOR'] = int(version.group('MINOR')) + self.__fullbldinfs = None + if self.__SystemDefinitionElement.hasAttribute('fullbldinfs'): + # Lower case it since we're not evil + if self.__SystemDefinitionElement.getAttribute('fullbldinfs').lower() == 'true': + self.__fullbldinfs = 1 + if self.__Version['MAJOR'] == 1 and self.__Version['MID'] > 2: self.__ComponentRoot = self.__SystemDefinitionBase elif self.__Version['MAJOR'] == 2 or self.__Version['MAJOR'] == 3: @@ -382,27 +454,31 @@ self.__Logger.Error("Cannot resolve \'root\' attribute value \"%s\" in %s", rootValue, self.__SystemDefinitionFile) return - group = generic_path.Path(bldFileValue) + bldinfval = generic_path.Path(bldFileValue) if self.__Version['MAJOR'] < 3: # absolute paths are not changed by root var in 1.x and 2.x - if not group.isAbsolute() and bldInfRoot: - group = generic_path.Join(bldInfRoot, group) + if not bldinfval.isAbsolute() and bldInfRoot: + bldinfval = generic_path.Join(bldInfRoot, bldinfval) else: # relative paths for v3 - if not group.isAbsolute(): - group = generic_path.Join(generic_path.Join(self.__SystemDefinitionFile).Dir(),group) + if not bldinfval.isAbsolute(): + bldinfval = generic_path.Join(generic_path.Join(self.__SystemDefinitionFile).Dir(),bldinfval) # absolute paths for v3 # are relative to bldInfRoot if set, or relative to the drive root otherwise elif bldInfRoot: - group = generic_path.Join(bldInfRoot, group) - - bldinf = generic_path.Join(group, "bld.inf").FindCaseless() + bldinfval = generic_path.Join(bldInfRoot, bldinfval) + + if self.__fullbldinfs: + bldinf = bldinfval.FindCaseless() + else: + bldinf = generic_path.Join(bldinfval, "bld.inf").FindCaseless() if bldinf == None: # recording layers containing non existent bld.infs - bldinfname = group.GetLocalString() - bldinfname = bldinfname+'/'+'bld.inf' + bldinfname = bldinfval.GetLocalString() + if not self.__fullbldinfs: + bldinfname = bldinfname+'/'+'bld.inf' layer = self.__GetEffectiveLayer(aElement) if not layer in self.__MissingBldInfs: self.__MissingBldInfs[layer]=[] diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/common/raptor_tests.py --- a/sbsv2/raptor/test/common/raptor_tests.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/common/raptor_tests.py Fri Nov 12 14:49:36 2010 +0000 @@ -27,7 +27,10 @@ sys.path.append(os.environ["SBS_HOME"]+"/python") from raptor_meta import BldInfFile -logDir = "$(EPOCROOT)/epoc32/build/smoketestlogs" +if 'SMOKETESTLOGS' in os.environ: + logDir = os.environ['SMOKETESTLOGS'] +else: + logDir = "$(EPOCROOT)/epoc32/build/smoketestlogs" debug_mode_active = False diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/armv5_testcode.py --- a/sbsv2/raptor/test/smoke_suite/armv5_testcode.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/armv5_testcode.py Fri Nov 12 14:49:36 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" @@ -31,9 +31,9 @@ "$(EPOCROOT)/epoc32/release/armv5/udeb/simple_test_auto.exe", "$(EPOCROOT)/epoc32/release/armv5/udeb/simple_test_manual.exe", "$(EPOCROOT)/epoc32/include/testexportheader.h", - "$(EPOCROOT)/epoc32/data/z/test/simple_test/armv5.auto.bat", - "$(EPOCROOT)/epoc32/data/z/test/simple_test/armv5.manual.bat" + "$(EPOCROOT)/epoc32/data/z/test/smoke_suite_test_resources_simple_test/armv5.auto.bat", + "$(EPOCROOT)/epoc32/data/z/test/smoke_suite_test_resources_simple_test/armv5.manual.bat" ] - t.mustmatch = [".*/epoc32/data/z/test/simple_test/armv5.auto.bat.*"] + t.mustmatch = [".*/epoc32/data/z/test/smoke_suite_test_resources_simple_test/armv5.auto.bat.*"] t.run() return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/armv7_testcode.py --- a/sbsv2/raptor/test/smoke_suite/armv7_testcode.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/armv7_testcode.py Fri Nov 12 14:49:36 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" @@ -31,9 +31,9 @@ "$(EPOCROOT)/epoc32/release/armv7/udeb/simple_test_auto.exe", "$(EPOCROOT)/epoc32/release/armv7/udeb/simple_test_manual.exe", "$(EPOCROOT)/epoc32/include/testexportheader.h", - "$(EPOCROOT)/epoc32/data/z/test/simple_test/armv7.auto.bat", - "$(EPOCROOT)/epoc32/data/z/test/simple_test/armv7.manual.bat" + "$(EPOCROOT)/epoc32/data/z/test/smoke_suite_test_resources_simple_test/armv7.auto.bat", + "$(EPOCROOT)/epoc32/data/z/test/smoke_suite_test_resources_simple_test/armv7.manual.bat" ] - t.mustmatch = [".*/epoc32/data/z/test/simple_test/armv7.auto.bat.*"] + t.mustmatch = [".*/epoc32/data/z/test/smoke_suite_test_resources_simple_test/armv7.auto.bat.*"] t.run() return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/bad_config.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/bad_config.py Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,41 @@ +# +# 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.name="bad_config" + + t.description = """Checks that if you give an incomplete (unbuildable) configuration that raptor complains nicely without a traceback.""" + + t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c arm.v5.rvct4_0 -c arm.v5.rvct2_2" # missing "urel" or "udeb" + t.targets = [ + ] + t.mustmatch = [ + "sbs: error: arm.v5.rvct2_2 is a bad configuration: Unset variable '.*' used in spec 'none' with config 'none'", + "sbs: error: arm.v5.rvct4_0 is a bad configuration: Unset variable '.*' used in spec 'none' with config 'none'", + "sbs: error: Build stopped because the following requested configurations are incomplete or invalid: arm.v5.rvct2_2, arm.v5.rvct4_0" + ] + t.mustnotmatch = [ + ".*Traceback.*", + ".*UninitialisedVariableException.*" + ] + t.errors = 3 + t.returncode = 1 + + t.run() + return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/custom_dll.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/custom_dll.py Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,34 @@ +# +# 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.name = "custom_dll" + t.usebash = True + t.command = "SBS_ELF2E32=$SBS_HOME/test/smoke_suite/test_resources/custom_dll/elf2e32/windows/elf2e32.exe sbs -b smoke_suite/test_resources/custom_dll/bld.inf -c armv5 --configpath=$SBS_HOME/test/smoke_suite/test_resources/custom_dll/config" + t.targets = [ + "$(EPOCROOT)/epoc32/release/armv5/lib/customdll.dso", + "$(EPOCROOT)/epoc32/release/armv5/lib/customdll{000a0000}.dso", + "$(EPOCROOT)/epoc32/release/armv5/udeb/customdll.dll", + "$(EPOCROOT)/epoc32/release/armv5/udeb/customdll.dll.map", + "$(EPOCROOT)/epoc32/release/armv5/urel/customdll.dll", + "$(EPOCROOT)/epoc32/release/armv5/urel/customdll.dll.map" + ] + # Windows-only until we know about a suitable linux version of the post-linker + t.run("windows") + return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/dependencies.py --- a/sbsv2/raptor/test/smoke_suite/dependencies.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/dependencies.py Fri Nov 12 14:49:36 2010 +0000 @@ -44,7 +44,7 @@ "$(EPOCROOT)/epoc32/tools/dependency.exe" ] linuxTargets = [ - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/dependency", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/dependency", "$(EPOCROOT)/epoc32/tools/dependency" ] @@ -68,7 +68,7 @@ if t.result == AntiTargetSmokeTest.SKIP: hostPlatform = "linux" hostPlatformTargets = genericTargets + linuxTargets - hostPlatformOffset = "$(HOSTPLATFORM_DIR)/" + hostPlatformOffset = "$(HOSTPLATFORM32_DIR)/" t.targets = hostPlatformTargets t.run(hostPlatform) @@ -129,7 +129,7 @@ buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment('smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_" # use one long bash command so that we can capture # the output in a way that isn't messed up with all the ordering confused. - t.command = " mkdir -p $(EPOCROOT)/epoc32/build/smoketestlogs ; { sleep 1 ; set -x ; \ + t.command = " echo \"making directory for logfile ${SBSLOGFILE}\" ; mkdir -p `dirname ${SBSLOGFILE} 2>/dev/null` ; { sleep 1 ; set -x ; \ touch smoke_suite/test_resources/dependencies/dependency.cpp; \ echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> %s/armv5/urel/dependency.o.d ; \ echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> %s/winscw/urel/dependency.o.d ;\ diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_single_file.py --- a/sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_single_file.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_single_file.py Fri Nov 12 14:49:36 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" @@ -27,8 +27,9 @@ t.command = "sbs -b smoke_suite/test_resources/simple_gui/Bld.inf -c armv5 -c winscw" t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [ "helloworld_exe/helloworld.mbm_bmconvcommands", - "helloworld_exe/helloworld_HelloWorld.rsc.rpp", - "helloworld_exe/helloworld_HelloWorld.rsc.d", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.rpp", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.d", "helloworld_exe/armv5/udeb/HelloWorld_Application.o", "helloworld_exe/armv5/udeb/HelloWorld_Application.o.d", "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o", @@ -91,13 +92,11 @@ "helloworld_exe/winscw/urel/helloworld_UID_.o", "helloworld_exe/winscw/urel/helloworld_UID_.o.d", "helloworld_exe/winscw/urel/helloworld_urel_objects.lrf", - "helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.rpp", - "helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.d" + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc", + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.rpp", + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d" ]) - t.run() - if t.result == SmokeTest.FAIL: - result = SmokeTest.FAIL # Ensure we don't clean up from the previous build in any subsequent runs t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', []) @@ -120,10 +119,7 @@ t.mustnotmatch = [ ".*recipe name='(win32simplelink|postlink|link)'.*" ] - t.run() - if t.result == SmokeTest.FAIL: - result = SmokeTest.FAIL # Attempt separate source and resource file compile where nothing should be done t.id = "0089c" @@ -136,14 +132,10 @@ t.mustnotmatch = [ ".*recipe name='(resourcecompile|win32compile2object|compile|win32simplelink|postlink|link)'.*" ] - t.run() - if t.result == SmokeTest.FAIL: - result = SmokeTest.FAIL t.id = "89" t.name = "exe_armv5_winscw_single_file" t.description = """Builds a component and tests single file compilation for straight source and resource files""" - t.result = result t.print_result() return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/filter_exes.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/filter_exes.py Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,74 @@ +# +# 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: +# Test for the filter_exes filter + +from raptor_tests import AntiTargetSmokeTest + +def run(): + t = AntiTargetSmokeTest() + t.description = "Test the filter_exes filter" + + log = "< smoke_suite/test_resources/logexamples/filter_exes.log" + + t.usebash = True + t.name = "filter_exes_all_exes" + t.id = "999a" + t.command = "sbs_filter --filter=filter_exes[] "+log+" -f ${SBSLOGFILE} -m ${SBSMAKEFILE} && cat one_armv5_urel.txt" + t.mustmatch = [ "Wrote 1 file\(s\) into one_armv5_urel\.txt", + "Wrote 1 file\(s\) into two_winscw_udeb\.txt", + "^one\.exe$" ] + t.targets = [ "one_armv5_urel.txt", + "two_winscw_udeb.txt" ] + t.antitargets = [ "ignore_armv5_udeb.txt", + "ignore_armv5_urel.txt" ] + t.run() + + t.name = "filter_exes_by_layer" + t.id = "999b" + t.usebash = False + t.command = "sbs_filter --filter=filter_exes[layer=two] "+log + t.mustmatch = [ "Wrote 1 file\(s\) into two_winscw_udeb\.txt" ] + t.mustnotmatch = [ "Wrote 1 file\(s\) into one_armv5_urel\.txt" ] + t.targets = [ "two_winscw_udeb.txt" ] + t.antitargets = [ "ignore_armv5_udeb.txt", + "ignore_armv5_urel.txt", + "one_armv5_urel.txt" ] + t.run() + + t.name = "filter_exes_by_config" + t.id = "999c" + t.command = "sbs_filter --filter=filter_exes[config=armv5_urel] "+log + t.mustmatch = [ "Wrote 1 file\(s\) into one_armv5_urel\.txt" ] + t.mustnotmatch = [ "Wrote 1 file\(s\) into two_winscw_udeb\.txt" ] + t.targets = [ "one_armv5_urel.txt" ] + t.antitargets = [ "ignore_armv5_udeb.txt", + "ignore_armv5_urel.txt", + "two_winscw_udeb.txt" ] + t.run() + + t.clean() + + t.name = "filter_exes_specified_output" + t.id = "999d" + t.command = "sbs_filter --filter=filter_exes[output=$(EPOCROOT)/epoc32/build/filter_exes_test] "+log + t.mustmatch = [ "Wrote 1 file\(s\) into .*epoc32/build/filter_exes_test[/\\\\]one_armv5_urel\.txt", + "Wrote 1 file\(s\) into .*epoc32/build/filter_exes_test[/\\\\]two_winscw_udeb\.txt" ] + t.targets = [ "$(EPOCROOT)/epoc32/build/filter_exes_test/one_armv5_urel.txt", + "$(EPOCROOT)/epoc32/build/filter_exes_test/two_winscw_udeb.txt"] + t.run() + + t.id = "999" + t.name = "filter_exes" + return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/flm_extension.py --- a/sbsv2/raptor/test/smoke_suite/flm_extension.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/flm_extension.py Fri Nov 12 14:49:36 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" @@ -14,18 +14,48 @@ # Description: # -from raptor_tests import SmokeTest +from raptor_tests import SmokeTest, ReplaceEnvs def run(): t = SmokeTest() - t.id = "20" - t.name = "flm_extension" - t.command = "sbs -b " + \ - "smoke_suite/test_resources/simple_extension/flm_bld.inf -c armv5" + + t.name = "exported_flm_extension" + t.command = "sbs -b smoke_suite/test_resources/simple_extension/flm_bld.inf -c armv5" t.targets = [ "$(EPOCROOT)/epoc32/build/flm_test_1_2", "$(EPOCROOT)/epoc32/tools/makefile_templates/tools/flm_export.xml", "$(EPOCROOT)/epoc32/tools/makefile_templates/tools/flm_export.flm" ] t.run() + + t.name = "per_component_flm" + t.usebash = True + t.command = "sbs --configpath=test/smoke_suite/test_resources/docs" + \ + " -b smoke_suite/test_resources/simple_dll/bld.inf" + \ + " -b smoke_suite/test_resources/simple_lib/bld.inf" + \ + " -b smoke_suite/test_resources/tools2/bld.inf" + \ + " -c armv5.documentation -c tools2.documentation -f-" + t.targets = [ + "$(EPOCROOT)/epoc32/docs/simple_dll.txt", + "$(EPOCROOT)/epoc32/docs/CreateStaticDLL.mmp", + + "$(EPOCROOT)/epoc32/docs/simple_lib.txt", + "$(EPOCROOT)/epoc32/docs/simple.mmp", + + "$(EPOCROOT)/epoc32/docs/tools2.txt", + "$(EPOCROOT)/epoc32/docs/tool_exe.mmp", + "$(EPOCROOT)/epoc32/docs/tool_lib1.mmp", + "$(EPOCROOT)/epoc32/docs/tool_lib2.mmp" + ] + t.mustmatch = [ + "simple_dll.txt uses " + ReplaceEnvs(t.targets[1]), + "simple_lib.txt uses " + ReplaceEnvs(t.targets[3]), + "tools2.txt uses " + ReplaceEnvs(t.targets[5]) + " " + \ + ReplaceEnvs(t.targets[6]) + " " + \ + ReplaceEnvs(t.targets[7]) + ] + t.run() + + t.name = "flm_extension" + t.print_result() return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/gui_whatlog.py --- a/sbsv2/raptor/test/smoke_suite/gui_whatlog.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/gui_whatlog.py Fri Nov 12 14:49:36 2010 +0000 @@ -32,10 +32,10 @@ "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm", - "$(EPOCROOT)/epoc32/include/helloworld.rsg", - "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.rsc", + "$(EPOCROOT)/epoc32/include/HelloWorld.rsg", + "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/HelloWorld.rsc", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map", "$(EPOCROOT)/epoc32/release/winscw/udeb/helloworld.exe", @@ -46,8 +46,8 @@ ] t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [ "helloworld_exe/helloworld.mbm_bmconvcommands", - "helloworld_exe/helloworld_HelloWorld.rsc.rpp", - "helloworld_exe/helloworld_HelloWorld.rsc.d", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.rpp", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.d", "helloworld_exe/armv5/udeb/HelloWorld_Application.o", "helloworld_exe/armv5/udeb/HelloWorld_Application.o.d", "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o", @@ -108,27 +108,27 @@ "helloworld_exe/winscw/urel/helloworld_UID_.dep", "helloworld_exe/winscw/urel/helloworld_UID_.o", "helloworld_exe/winscw/urel/helloworld_UID_.o.d", - "helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.d" + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d" ]) t.stdout = [ "", "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm", - "$(EPOCROOT)/epoc32/include/helloworld.rsg", - "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/helloworld_reg.rsc", + "$(EPOCROOT)/epoc32/include/HelloWorld.rsg", + "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/HelloWorld_reg.rsc", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map", "", "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm", - "$(EPOCROOT)/epoc32/include/helloworld.rsg", - "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/helloworld_reg.rsc", + "$(EPOCROOT)/epoc32/include/HelloWorld.rsg", + "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/HelloWorld_reg.rsc", "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe", "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe.map", "", diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/mmp_select.py --- a/sbsv2/raptor/test/smoke_suite/mmp_select.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/mmp_select.py Fri Nov 12 14:49:36 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" @@ -30,10 +30,10 @@ "$(EPOCROOT)/epoc32/release/winscw/urel/HelloWorld.exe" ] t.addbuildtargets('smoke_suite/test_resources/basics/helloworld/Bld.inf', [ - "helloworld_exe/armv5/udeb/HelloWorld.o", - "helloworld_exe/armv5/urel/HelloWorld.o", - "helloworld_exe/winscw/udeb/HelloWorld.o", - "helloworld_exe/winscw/urel/HelloWorld.o" + "HelloWorld_exe/armv5/udeb/HelloWorld.o", + "HelloWorld_exe/armv5/urel/HelloWorld.o", + "HelloWorld_exe/winscw/udeb/HelloWorld.o", + "HelloWorld_exe/winscw/urel/HelloWorld.o" ]) t.run() return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/parallel_parsing.py --- a/sbsv2/raptor/test/smoke_suite/parallel_parsing.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/parallel_parsing.py Fri Nov 12 14:49:36 2010 +0000 @@ -22,7 +22,7 @@ result = SmokeTest.PASS description = """This test covers parallel parsing.""" - command = "cd $(SBS_HOME)/test/smoke_suite/test_resources/pp/ && sbs --command=$(SBS_HOME)/test/smoke_suite/test_resources/pp/ppbldinf_commandfile -c armv5 -c winscw --pp=on --noexport -m ${SBSMAKEFILE} -f - | grep recipe " + command = "mkdir -p $(EPOCROOT)/epoc32/build && cd $(SBS_HOME)/test/smoke_suite/test_resources/pp/ && sbs --command=$(SBS_HOME)/test/smoke_suite/test_resources/pp/ppbldinf_commandfile -c armv5 -c winscw --pp=on --noexport -m ${SBSMAKEFILE} -f - | grep recipe " mmpcount = 10 # how many mmps in this parallel parsing test diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/query_cli.py --- a/sbsv2/raptor/test/smoke_suite/query_cli.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/query_cli.py Fri Nov 12 14:49:36 2010 +0000 @@ -141,7 +141,7 @@ if t.onWindows: t2 = "tools2" else: - t2 = raptor_tests.ReplaceEnvs("tools2/$(HOSTPLATFORM_DIR)") + t2 = raptor_tests.ReplaceEnvs("tools2/$(HOSTPLATFORM32_DIR)") t.mustmatch_singleline = [ "", diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/resource.py --- a/sbsv2/raptor/test/smoke_suite/resource.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/resource.py Fri Nov 12 14:49:36 2010 +0000 @@ -27,22 +27,23 @@ "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm", - "$(EPOCROOT)/epoc32/include/helloworld.rsg", - "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/helloworld_reg.rsc" + "$(EPOCROOT)/epoc32/include/HelloWorld.rsg", + "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/HelloWorld_reg.rsc" ] t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [ "helloworld_exe/helloworld.mbm_bmconvcommands", - "helloworld_exe/helloworld_HelloWorld.rsc.rpp", - "helloworld_exe/helloworld_HelloWorld.rsc.d", - "helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.rpp", - "helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.d"]) + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.rpp", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.d", + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.rpp", + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d" + ]) t.mustnotmatch = ["HelloWorld.rss.* warning: trigraph"] @@ -91,7 +92,7 @@ "onelang_/onelang_onelang_sc.rsg.rpp", "testresource_/testresource_testresource.rsc.rpp"]) - t.command = "sbs -b smoke_suite/test_resources/resource/group/bld.inf -c armv5_urel -c winscw_urel reallyclean ; sbs --no-depend-generate -j 16 -b smoke_suite/test_resources/resource/group/bld.inf -c armv5_urel -c winscw_urel -f ${SBSLOGFILE} -m ${SBSMAKEFILE} && grep 'epoc32.include.test[^ ]*.rsg' %s && { X=`md5sum $(EPOCROOT)/epoc32/release/winscw/urel/z/resource/anotherresource/testresource.rsc` && Y=`md5sum $(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.rsc` && [ \"${X%% *}\" != \"${Y%% *}\" ] ; } && wc -l %s " % (res_depfile, res_depfile) + t.command = "sbs -b smoke_suite/test_resources/resource/group/bld.inf -c armv5_urel -c winscw_urel reallyclean ; sbs --no-depend-generate -j 16 -b smoke_suite/test_resources/resource/group/bld.inf -c armv5_urel -c winscw_urel -f ${SBSLOGFILE} -m ${SBSMAKEFILE} && grep 'epoc32.include.test[^ ]*.rsg' %s && { X=`md5sum $(EPOCROOT)/epoc32/release/winscw/urel/z/resource/anotherresource/testresource.rsc` && Y=`md5sum $(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.rsc` && [ \"${X%% *}\" != \"${Y%% *}\" ] ; } && wc -l %s " % (res_depfile, res_depfile) t.mustnotmatch = [] @@ -137,6 +138,28 @@ t.mustmatch = [] t.run() + + t.id = "30d" + t.name = "resource_rsg_casefolding_fail" + t.command = "sbs -b smoke_suite/test_resources/resource/rsg_casefolding/bld.inf RESOURCE" + t.targets = [] + + t.warnings = 1 + t.errors = 3 + t.returncode = 1 + t.run("linux") + + t.id = "30e" + t.name = "resource_rsg_casefolding_pass" + t.command = "sbs -b smoke_suite/test_resources/resource/rsg_casefolding/bld.inf --use-rsg-casefolding RESOURCE" + t.targets = [] + + t.warnings = 0 + t.errors = 0 + t.returncode = 0 + t.run("linux") + + t.name = 'resource' t.print_result() return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/romfile.py --- a/sbsv2/raptor/test/smoke_suite/romfile.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/romfile.py Fri Nov 12 14:49:36 2010 +0000 @@ -39,8 +39,8 @@ t.targets = [ "$(EPOCROOT)/epoc32/rom/src/ongoing/group/romfile/armv5test.iby", - "$(EPOCROOT)/epoc32/data/z/test/src/armv5.auto.bat", - "$(EPOCROOT)/epoc32/data/z/test/src/armv5.manual.bat" + "$(EPOCROOT)/epoc32/data/z/test/src_ongoing_romfile/armv5.auto.bat", + "$(EPOCROOT)/epoc32/data/z/test/src_ongoing_romfile/armv5.manual.bat" ] # Check the content of the generated .iby file. @@ -49,8 +49,8 @@ r".*// epoc32/rom/src/ongoing/group/romfile/armv5test\.iby\n.*", # The batch files that are added by the build system. - r".*\ndata=/epoc32/data/z/test/src/armv5\.auto\.bat test/src\.auto\.bat\n.*", - r".*\ndata=/epoc32/data/z/test/src/armv5\.manual\.bat test/src\.manual\.bat\n.*", + r".*\ndata=/epoc32/data/z/test/src_ongoing_romfile/armv5\.auto\.bat test/armv5\.auto\.bat\n.*", + r".*\ndata=/epoc32/data/z/test/src_ongoing_romfile/armv5\.manual\.bat test/armv5\.manual\.bat\n.*", # Some normal files. r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_rand\.exe\s+sys/bin/t_rand\.exe\n.*", @@ -86,8 +86,8 @@ t.mustmatch = [ # Check whatlog output includes batch files and .iby file r".*/epoc32/rom/src/ongoing/group/romfile/armv5test.iby.*", - r".*/epoc32/data/z/test/src/armv5.auto.bat.*", - r".*/epoc32/data/z/test/src/armv5.manual.bat.*" + r".*/epoc32/data/z/test/src_ongoing_romfile/armv5.auto.bat.*", + r".*/epoc32/data/z/test/src_ongoing_romfile/armv5.manual.bat.*" ] t.mustnotmatch = [] t.run() diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/sbs_with_nonexisting_bldinf.py --- a/sbsv2/raptor/test/smoke_suite/sbs_with_nonexisting_bldinf.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/sbs_with_nonexisting_bldinf.py Fri Nov 12 14:49:36 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" @@ -18,11 +18,23 @@ def run(): t = SmokeTest() - t.id = "80" + t.name = "sbs_with_nonexisting_bldinf" t.description = "Test if sbs generates warning if invoked without bld.inf specified i.e. using default bld.inf which doesn't exist" t.command = "mkdir ${EPOCROOT}/emptydir; rm ${EPOCROOT}/emptydir/*; cd ${EPOCROOT}/emptydir; sbs -f ${SBSLOGFILE} -m {SBSMAKEFILE}" t.usebash = True t.warnings = 1 t.run() + + t.name = "sbs_with_nonexisting_bldinf_cli" + t.description = "Test if sbs generates an error if invoked with a bad -b option" + t.command = "sbs -b none.inf" + t.usebash = False + t.errors = 1 + t.warnings = 0 + t.returncode = 1 + t.mustmatch = ["sbs: error: build info file does not exist \(component .*none.inf\)"] + t.run() + + t.print_result() return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/sysdef_layers.py --- a/sbsv2/raptor/test/smoke_suite/sysdef_layers.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/sysdef_layers.py Fri Nov 12 14:49:36 2010 +0000 @@ -14,23 +14,25 @@ # Description: # -from raptor_tests import SmokeTest +from raptor_tests import AntiTargetSmokeTest def run(): - t = SmokeTest() - t.id = "48" + 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 = AntiTargetSmokeTest() + t.id = "48a" t.name = "sysdef_layers" 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.command = command 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", "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm", - "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/include/helloworld.rsg", + "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/include/HelloWorld.rsg", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.sym", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map", @@ -39,16 +41,18 @@ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.map", "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/udeb/helloworld.exe", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/HelloWorld.rsc", "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe", "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe.map", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/HelloWorld.rsc", ] t.addbuildtargets('smoke_suite/test_resources/sysdef/build_gen_source/bld.inf', [ - "helloworld_/helloworld_HelloWorld.rsc.rpp" + "HelloWorld_/HelloWorld_HelloWorld.rsc.rpp", + "HelloWorld_/HelloWorld_HelloWorld.rsc", + "HelloWorld_/HelloWorld_HelloWorld.rsc.d" ]) t.addbuildtargets('smoke_suite/test_resources/sysdef/dependent/bld.inf', [ "helloworld_exe/armv5/udeb/HelloWorld_Application.o", @@ -75,11 +79,21 @@ "helloworld_exe/winscw/urel/HelloWorld_Main.o", "helloworld_exe/winscw/urel/helloworld.UID.CPP", "helloworld_exe/winscw/urel/helloworld_UID_.o", - "helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.rpp" + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.rpp", + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d" ]) t.countmatch = [ ["", 33], ["", 3] ] t.run() + + t.id = "48b" + t.name = "sysdef_layers_pp" + t.description = "Test system definition layer building and logging with parallel processing on" + t.command = command + " --pp on" + t.run() + + t.id = "48" + t.name = "sysdef_layers" return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/bld.inf Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,26 @@ +/* +* 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: +* Component description file +* +*/ + + +PRJ_PLATFORMS +ARMV5 ARMV6 ARMV7 WINSCW ARMV5SMP X86 + +PRJ_MMPFILES + +customdll.mmp +customlib.mmp diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/config/postlinker.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/config/postlinker.xml Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,9 @@ + + + + + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdll.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdll.cpp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,65 @@ +/* +* 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: +* This program creates a custom dll. +* +*/ + + +#include "customdll.h" +#include + +// construct/destruct + +#if !defined(__ARMCC_4__) and !defined(__X86__) +extern "C" void __ARM_switch8(); + +void sbs_test() + { + __ARM_switch8(); + } +#endif + +EXPORT_C CCustomDll* CCustomDll::NewLC(CConsoleBase& aConsole, const TDesC& aString) + { + CCustomDll* self=new (ELeave) CCustomDll(aConsole); + CleanupStack::PushL(self); + self->ConstructL(aString); + return self; + } + +CCustomDll::~CCustomDll() // destruct - virtual, so no export + { + delete iString; + } + +EXPORT_C void CCustomDll::ShowMessage() + { + _LIT(KFormat1,"%S\n"); + iConsole.Printf(KFormat1, iString); // notify completion + } + +// constructor support +// don't export these, because used only by functions in this DLL, eg our NewLC() + +CCustomDll::CCustomDll(CConsoleBase& aConsole) // first-phase C++ constructor + : iConsole(aConsole) + { + } + +void CCustomDll::ConstructL(const TDesC& aString) // second-phase constructor + { + iString=aString.AllocL(); // copy given string into own descriptor + } + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdll.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdll.h Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,42 @@ +/* +* 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: +* +*/ + + + +#include + + +class CCustomDll : public CBase + { +public: + // Construction + IMPORT_C static CCustomDll* NewLC(CConsoleBase& aConsole, const TDesC& aString); + // Destructor - virtual and class not intended + // for derivation, so not exported + ~CCustomDll(); + // general functions - exported + IMPORT_C void ShowMessage(); +private: + // C++ constructor - not exported; + // implicitly called from NewLC() + CCustomDll(CConsoleBase& aConsole); + // 2nd phase construction, called by NewLC() + void ConstructL(const TDesC& aString); // second-phase constructor +private: + CConsoleBase& iConsole; // Use the console (but not owned) + HBufC* iString; // Allocated container for string data (destructor destroys) + }; diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdll.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdll.mmp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,44 @@ +/* +* 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: +* Custom DLL - a DLL that exports functions from a static library +*/ + +TARGET customdll.dll +TARGETTYPE dll + +STATICLIBRARY customlib.lib + +UID 0xE800004C +CAPABILITY All -TCB + +ALWAYS_BUILD_AS_ARM +VENDORID 0x70000001 + +SOURCEPATH . + +USERINCLUDE . +APP_LAYER_SYSTEMINCLUDE_SYMBIAN + +LIBRARY euser.lib + +EPOCALLOWDLLDATA + +#if defined(X86GCC) + deffile ./customdllx86gcc.def +#else + deffile ./customdllarm.def +#endif +nostrictdef + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdllarm.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customdllarm.def Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,3 @@ +EXPORTS + _Z3foov @ 1 NONAME + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customlib.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customlib.cpp Fri Nov 12 14:49:36 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: +* This program creates a static library +*/ + + +void foo() + { + return; + } + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customlib.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/customlib.mmp Fri Nov 12 14:49:36 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: +* +*/ + +TARGET customlib.lib +TARGETTYPE lib + +SOURCEPATH . +SOURCE customlib.cpp + +SYSTEMINCLUDE /epoc32/include diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/elf2e32/readme.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/elf2e32/readme.txt Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,11 @@ +This directory contains a version of elf2e32 patched for the --asm option (a result of the Symbian Foundation 'GCC Surge'. + +The linux folder is a placeholder until a patched elf2e32 is available (making this test Windows only). + +At the time of writing information on the GCC Surge was available here: + +http://developer.symbian.org/wiki/GCC_SURGE + +The patched elf2e32 was taken from here: + +http://cdn.symbian.org/SF_builds/symbian4/builds/FCL/symbian4_FCL.single.732/zips/zip_of_zips.7z diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/elf2e32/windows/elf2e32.exe Binary file sbsv2/raptor/test/smoke_suite/test_resources/custom_dll/elf2e32/windows/elf2e32.exe has changed diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/docs/component.flm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/docs/component.flm Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,31 @@ + +# put all files in a specific docs folder +# +EPOCDOCS:=$(EPOCROOT)/epoc32/docs +$(call makepath,$(EPOCDOCS)) + +# this test produces a text file per component (which lists all the +# .mmp files in the component). +# +# define a macro to create the target name from COMPONENT_META so that +# the target.flm can use it to work out which target to add dependencies to. +# +# use a shorter name for the component (the name of the directory +# which contains the bld.inf file) for portability of the tests only. +# +define component_target +$(EPOCDOCS)/$(lastword $(subst /, ,$(dir $1))).txt +endef + +DOCTARGET:=$(call component_target,$(COMPONENT_META)) + +ALL:: $(DOCTARGET) + +# Script to generate the per-component file. The special "make" variable $^ +# contains the list of prerequisites. +# +SCRIPT:=echo $(DOCTARGET) uses $$(sort $$^) > $(DOCTARGET) + +# Create a recipe to execute the script. +# +$(call raptor_recipe,doc_component,$(DOCTARGET),,$(SCRIPT)) diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/docs/docs_build.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/docs/docs_build.xml Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/docs/target.flm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/docs/target.flm Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,30 @@ + +# Put all files in a specific docs folder. +# +EPOCDOCS:=$(EPOCROOT)/epoc32/docs +$(call makepath,$(EPOCDOCS)) + +# Generate the name of the target for our component. We are going to +# add dependencies to it in this FLM. +# +DOCTARGET:=$(call component_target,$(COMPONENT_META)) + +# This test also produces a text file per project (which simply lists the +# target name and target type) to show how per-target data can be fed back +# up to the per-component target. +# +# By making the per-target files into prerequisites of the per-component +# target we ensure that the per-component target has access to the full list +# of per-target files. +# +MMPTARGET:=$(EPOCDOCS)/$(notdir $(PROJECT_META)) + +$(DOCTARGET): $(MMPTARGET) + +# Script to generate the per-target file. +# +SCRIPT:=echo "$(TARGET) $(TARGETTYPE)" > $(MMPTARGET) + +# Create a recipe to execute the script. +# +$(call raptor_recipe,doc_target,$(MMPTARGET),,$(SCRIPT)) \ No newline at end of file diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/logexamples/filter_exes.log --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/logexamples/filter_exes.log Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,6 @@ + + + + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/DISTRIBUTION.policy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/DISTRIBUTION.policy Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,2 @@ +Category G +OSD: Reference/Test Tools diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.h Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,110 @@ +/* +* Copyright (c) 2000-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: +* +*/ + +#ifndef __HELLOWORLD_H +#define __HELLOWORLD_H + +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include "HelloWorld.hrh" + + + +//////////////////////////////////////////////////////////////////////// +// +// CExampleApplication +// +//////////////////////////////////////////////////////////////////////// + +class CExampleApplication : public CEikApplication + { +private: + // Inherited from class CApaApplication + CApaDocument* CreateDocumentL(); + TUid AppDllUid() const; + }; + +//////////////////////////////////////////////////////////////////////// +// +// CExampleAppView +// +//////////////////////////////////////////////////////////////////////// +class CExampleAppView : public CCoeControl + { +public: + static CExampleAppView* NewL(const TRect& aRect); + CExampleAppView(); + ~CExampleAppView(); + void ConstructL(const TRect& aRect); + +private: + // Inherited from CCoeControl + void Draw(const TRect& /*aRect*/) const; + +private: + HBufC* iExampleText; + }; + + +//////////////////////////////////////////////////////////////////////// +// +// CExampleAppUi +// +//////////////////////////////////////////////////////////////////////// +class CExampleAppUi : public CEikAppUi + { +public: + void ConstructL(); + ~CExampleAppUi(); + +private: + // Inherirted from class CEikAppUi + void HandleCommandL(TInt aCommand); + +private: + CCoeControl* iAppView; + }; + + +//////////////////////////////////////////////////////////////////////// +// +// CExampleDocument +// +//////////////////////////////////////////////////////////////////////// +class CExampleDocument : public CEikDocument + { +public: + static CExampleDocument* NewL(CEikApplication& aApp); + CExampleDocument(CEikApplication& aApp); + void ConstructL(); +private: + // Inherited from CEikDocument + CEikAppUi* CreateAppUiL(); + }; + + +#endif + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.hrh Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,26 @@ +/* +* Copyright (c) 2000-2009 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: +* +*/ + + + +enum TExampleMenuCommands + { + EExampleItem0 = 200, + EExampleItem1, + EExampleItem2 + }; + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.mmp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2000-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 helloworld_rsg_casefolding.exe +TARGETTYPE exe +UID 0x100039CE 0xE800005A +VENDORID 0x70000001 + +SOURCEPATH . +SOURCE HelloWorld_Main.cpp +SOURCE HelloWorld_Application.cpp +SOURCE HelloWorld_Document.cpp +SOURCE HelloWorld_AppUi.cpp +SOURCE HelloWorld_AppView.cpp + +USERINCLUDE . +APP_LAYER_SYSTEMINCLUDE_SYMBIAN + +START RESOURCE HelloWorld.rss +HEADER +TARGETPATH /resource/apps +end + +START RESOURCE HelloWorld_reg.rss +TARGETPATH /private/10003a3f/apps +DEPENDS helloworld.rsg +END + + +LIBRARY euser.lib apparc.lib cone.lib eikcore.lib gdi.lib + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.pkg Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,48 @@ +; +; Copyright (c) 2009 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: +; +; +; Basic install file for HelloWorld application +; + +; List of languages supported. +; Here, only UK English is supported. +&EN + +; List of localised vendor names. +; Here, only UK English version is specified. +%{"Symbian Software Ltd."} + +; Single, non-localised (global) vendor name. +:"Symbian Software Ltd." + +; Installation header. +; Only specifies one component name as we only support English. +; The UID is the package UID - this is not the same as the app's UID, +; which is specified in HelloWorld.mmp. + +#{"Hello World"},(0xE8000091),1,0,0 + +; Four files to install for the minimal application +"HelloWorld.exe"-"!:\sys\bin\HelloWorld.exe" +"HelloWorld.rsc"-"!:\resource\apps\HelloWorld.rsc" +"HelloWorld.mbm" - "!:\resource\apps\HelloWorld.mbm" +"HelloWorld_reg.rsc" - "!:\private\10003a3f\import\apps\HelloWorld_reg.rsc" + +; Required files +; None + +; Component .sis files +; None diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld.rss Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,83 @@ +/* +* Copyright (c) 1997-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: +* +*/ + + +NAME HEWO + +#include +#include +#include + +#include "HelloWorld.hrh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE EIK_APP_INFO + { + hotkeys=r_example_hotkeys; + menubar=r_example_menubar; + } + +RESOURCE HOTKEYS r_example_hotkeys + { + control= + { + HOTKEY { command=EEikCmdExit; key='e'; } + }; + } + +RESOURCE MENU_BAR r_example_menubar + { + titles= + { + MENU_TITLE { menu_pane=r_example_first_menu; txt="HelloWld"; } + }; + } + +RESOURCE MENU_PANE r_example_first_menu + { + items= + { + MENU_ITEM { command=EExampleItem0; txt="Item 0"; }, + MENU_ITEM { command=EExampleItem1; txt="Item 1"; }, + MENU_ITEM { command=EExampleItem2; txt="Item 2"; }, + MENU_ITEM { command=EEikCmdExit; txt="Close"; } + }; + } + + +RESOURCE TBUF r_example_text_Hello { buf="Hello World!"; } +RESOURCE TBUF r_example_text_Item0 { buf="Item 0"; } +RESOURCE TBUF r_example_text_Item1 { buf="Item 1"; } +RESOURCE TBUF r_example_text_Item2 { buf="Item 2"; } +RESOURCE TBUF r_example_text_Item3 { buf="This string generates a trigraph warning if not suppressed: ID3?????????"; } + +RESOURCE LOCALISABLE_APP_INFO r_lai + { + short_caption = "HW"; + caption_and_icon = + { + CAPTION_AND_ICON_INFO + { + caption = "helloworld"; + number_of_icons = 3; // each icon must be a bitmap/mask pair + icon_file = "z:\\resource\\apps\\helloworld.mbm"; + } + }; + } diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_AppUi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_AppUi.cpp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,81 @@ +/* +* Copyright (c) 2000-2009 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: +* HelloWorld_CExampleAppUi.cpp +* +*/ + + +#include "HelloWorld.h" + +// The second phase constructor of the application UI class. +// The application UI creates and owns the one and only view. +// +void CExampleAppUi::ConstructL() + { + // BaseConstructL() completes the UI framework's + // construction of the App UI. + BaseConstructL(); + // Create the single application view in which to + // draw the text "Hello World!", passing into it + // the rectangle available to it. + iAppView = CExampleAppView::NewL(ClientRect()); + } + + +// The app Ui owns the two views and is. +// therefore, responsible for destroying them +// +CExampleAppUi::~CExampleAppUi() + { + delete iAppView; + } + + +// Called by the UI framework when a command has been issued. +// In this example, a command can originate through a +// hot-key press or by selection of a menu item. +// The command Ids are defined in the .hrh file +// and are 'connected' to the hot-key and menu item in the +// resource file. +// Note that the EEikCmdExit is defined by the UI +// framework and is pulled in by including eikon.hrh +// +void CExampleAppUi::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + // Just issue simple info messages to show that + // the menu items have been selected + case EExampleItem0: + iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM0); + break; + + + case EExampleItem1: + iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM1); + break; + + case EExampleItem2: + iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM2); + break; + // Exit the application. The call is + // implemented by the UI framework. + + case EEikCmdExit: + Exit(); + break; + } + } + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_AppView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_AppView.cpp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,106 @@ +/* +* Copyright (c) 2000-2009 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: +* HelloWorld_CExampleAppView.cpp +* +*/ + + +#include "HelloWorld.h" + +// +// Constructor for the view. +// +CExampleAppView::CExampleAppView() + { + } + + +// Static NewL() function to start the standard two +// phase construction. +// +CExampleAppView* CExampleAppView::NewL(const TRect& aRect) + { + CExampleAppView* self = new(ELeave) CExampleAppView(); + CleanupStack::PushL(self); + self->ConstructL(aRect); + CleanupStack::Pop(); + return self; + } + + +// +// Destructor for the view. +// +CExampleAppView::~CExampleAppView() + { + delete iExampleText; + } + + +// Second phase construction. +// +void CExampleAppView::ConstructL(const TRect& aRect) + { + // Fetch the text from the resource file. + iExampleText = iEikonEnv->AllocReadResourceL(R_EXAMPLE_TEXT_HELLO); + // Control is a window owning control + CreateWindowL(); + // Extent of the control. This is + // the whole rectangle available to application. + // The rectangle is passed to us from the application UI. + SetRect(aRect); + // At this stage, the control is ready to draw so + // we tell the UI framework by activating it. + ActivateL(); + } + + +// Drawing the view - in this example, +// consists of drawing a simple outline rectangle +// and then drawing the text in the middle. +// We use the Normal font supplied by the UI. +// +// In this example, we don't use the redraw +// region because it's easier to redraw to +// the whole client area. +// +void CExampleAppView::Draw(const TRect& /*aRect*/) const + { + // Window graphics context + CWindowGc& gc = SystemGc(); + // Area in which we shall draw + TRect drawRect = Rect(); + // Font used for drawing text + const CFont* fontUsed; + + // Start with a clear screen + gc.Clear(); + // Draw an outline rectangle (the default pen + // and brush styles ensure this) slightly + // smaller than the drawing area. + drawRect.Shrink(10,10); + gc.DrawRect(drawRect); + // Use the title font supplied by the UI + fontUsed = iEikonEnv->TitleFont(); + gc.UseFont(fontUsed); + // Draw the text in the middle of the rectangle. + TInt baselineOffset=(drawRect.Height() - fontUsed->HeightInPixels())/2; + gc.DrawText(*iExampleText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0); + // Finished using the font + gc.DiscardFont(); + } + + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_Application.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_Application.cpp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2000-2009 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: +* HelloWorld_CExampleApplication.cpp +* +*/ + + +#include "HelloWorld.h" + +const TUid KUidHelloWorld = { 0xE800005A }; + +// The function is called by the UI framework to ask for the +// application's UID. The returned value is defined by the +// constant KUidHelloWorlde and must match the second value +// defined in the project definition file. +// +TUid CExampleApplication::AppDllUid() const + { + return KUidHelloWorld; + } + +// This function is called by the UI framework at +// application start-up. It creates an instance of the +// document class. +// +CApaDocument* CExampleApplication::CreateDocumentL() + { + return new (ELeave) CExampleDocument(*this); + } + + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_Document.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_Document.cpp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2000-2009 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: +* HelloWorld_CExampleDocument.cpp +* +*/ + + +#include "HelloWorld.h" + +// The constructor of the document class just passes the +// supplied reference to the constructor initialisation list. +// The document has no real work to do in this application. +// +CExampleDocument::CExampleDocument(CEikApplication& aApp) + : CEikDocument(aApp) + { + } + + +// This is called by the UI framework as soon as the +// document has been created. It creates an instance +// of the ApplicationUI. The Application UI class is +// an instance of a CEikAppUi derived class. +// +CEikAppUi* CExampleDocument::CreateAppUiL() + { + return new(ELeave) CExampleAppUi; + } diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_Main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_Main.cpp Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,61 @@ +/* +* Copyright (c) 2000-2009 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: +* +*/ + + + +#include "HelloWorld.h" + +// The entry point for the application code. It creates +// an instance of the CApaApplication derived +// class, CExampleApplication. +// + +#if defined(EKA2) + +#include +LOCAL_C CApaApplication* NewApplication() + { + return new CExampleApplication; + } + +GLDEF_C TInt E32Main() + { + return EikStart::RunApplication(NewApplication); + } + +#endif + +#if defined(__WINS__) && !defined(EKA2) +// This function is required by all Symbian OS DLLs. In this +// example, it does nothing. + +EXPORT_C CApaApplication* NewApplication() + { + return new CExampleApplication; + } + +GLDEF_C TInt E32Dll(TDllReason) + { + return KErrNone; + } + +EXPORT_C TInt WinsMain(TDesC* aCmdLine) + { + return EikStart::RunApplication(NewApplication, aCmdLine); + } + +#endif diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_reg.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/HelloWorld_reg.rss Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,29 @@ +/* +* 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" +* 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: +* +*/ +#include +#include + +UID2 KUidAppRegistrationResourceFile +UID3 0xE800005A // application UID + +RESOURCE APP_REGISTRATION_INFO + { + app_file = "HelloWorld"; + localisable_resource_file = "\\resource\\apps\\HelloWorld"; + localisable_resource_id = R_LAI; + } + diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/rsg_casefolding/bld.inf Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,22 @@ +/* +* Copyright (c) 2000-2009 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_MMPFILES + +HelloWorld.mmp diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/simple_gui/HelloWorld.h --- a/sbsv2/raptor/test/smoke_suite/test_resources/simple_gui/HelloWorld.h Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_gui/HelloWorld.h Fri Nov 12 14:49:36 2010 +0000 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2000-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" @@ -28,7 +28,7 @@ #include -#include +#include #include "HelloWorld.hrh" diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/simple_gui/HelloWorld_reg.rss --- a/sbsv2/raptor/test/smoke_suite/test_resources/simple_gui/HelloWorld_reg.rss Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_gui/HelloWorld_reg.rss Fri Nov 12 14:49:36 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" @@ -15,7 +15,7 @@ * */ #include -#include +#include UID2 KUidAppRegistrationResourceFile UID3 0xE800005A // application UID diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/sysdef/dependent/HelloWorld.h --- a/sbsv2/raptor/test/smoke_suite/test_resources/sysdef/dependent/HelloWorld.h Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/sysdef/dependent/HelloWorld.h Fri Nov 12 14:49:36 2010 +0000 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2000-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" @@ -28,7 +28,7 @@ #include -#include +#include #include "HelloWorld.hrh" diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/test_resources/sysdef/dependent/HelloWorld_reg.rss --- a/sbsv2/raptor/test/smoke_suite/test_resources/sysdef/dependent/HelloWorld_reg.rss Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/sysdef/dependent/HelloWorld_reg.rss Fri Nov 12 14:49:36 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" @@ -15,7 +15,7 @@ * */ #include -#include +#include UID2 KUidAppRegistrationResourceFile UID3 0xE800005A // application UID diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/toolcheck.py --- a/sbsv2/raptor/test/smoke_suite/toolcheck.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/toolcheck.py Fri Nov 12 14:49:36 2010 +0000 @@ -20,13 +20,13 @@ def run(): t = SmokeTest() t.id = "0092a" - t.name = "toolcheck" t.description = """Test toolcheck works properly, with 3 options: on, off and forced. TOOL1 3 4 and 5 are expected to fail and 2 to pass""" result = SmokeTest.PASS toolcheckDir = os.environ["SBS_HOME"].replace("\\","/") + "/test/smoke_suite/test_resources/toolcheck" # toolcheck ON + t.name = "toolcheck_on" t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -n --configpath=" + toolcheckDir + \ " -c default.toolcheck --toolcheck=on" @@ -40,12 +40,13 @@ ".*TOOLCHECK2.*", ".*TOOLCHECK6.*" ] - t.errors = 4 + t.errors = 7 t.returncode = 1 t.run() if t.result == SmokeTest.FAIL: result = SmokeTest.FAIL + t.name = "toolcheck_off" # toolcheck OFF t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -n --configpath=" + toolcheckDir + \ " -c default.toolcheck --toolcheck=off" @@ -66,6 +67,7 @@ result = SmokeTest.FAIL # force toolcheck + t.name = "toolcheck_force" t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -n --configpath=" + toolcheckDir + \ " -c default.toolcheck --toolcheck=forced" @@ -80,7 +82,7 @@ ".*TOOLCHECK2.*", ".*TOOLCHECK6.*" ] - t.errors = 4 + t.errors = 16 t.returncode = 1 t.run() if t.result == SmokeTest.FAIL: diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/tools2.py --- a/sbsv2/raptor/test/smoke_suite/tools2.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/tools2.py Fri Nov 12 14:49:36 2010 +0000 @@ -51,27 +51,27 @@ if t.result == SmokeTest.SKIP: t.targets = [ - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/tool_exe", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib1.a", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib2.a", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/tool_exe", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib1.a", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib2.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/deb/tool_exe", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/deb/libtool_lib1.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/deb/libtool_lib2.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/tool_exe", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/libtool_lib1.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/libtool_lib2.a", "$(EPOCROOT)/epoc32/tools/tool_exe" ] t.addbuildtargets("smoke_suite/test_resources/tools2/bld.inf", [ - "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_b.o", - "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_a.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_b.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_a.o", - "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_b.o", - "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_a.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_a.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_b.o", - "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_a.o", - "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_b.o", - "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_b.o", - "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_a.o" + "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib1_b.o", + "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib1_a.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib2_b.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib2_a.o", + "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib1_b.o", + "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib1_a.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib2_a.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib2_b.o", + "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_exe_a.o", + "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_exe_b.o", + "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_exe_b.o", + "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_exe_a.o" ]) t.run("linux") # tools2 output is platform dependent diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/tools2_cross_compilation.py --- a/sbsv2/raptor/test/smoke_suite/tools2_cross_compilation.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/tools2_cross_compilation.py Fri Nov 12 14:49:36 2010 +0000 @@ -27,8 +27,8 @@ t.targets = [ "$(EPOCROOT)/epoc32/release/tools2/deb/pdrtran.exe", "$(EPOCROOT)/epoc32/release/tools2/rel/pdrtran.exe", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/pdrtran", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/pdrtran", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/deb/pdrtran", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/pdrtran", "$(EPOCROOT)/epoc32/tools/pdrtran.exe", "$(EPOCROOT)/epoc32/tools/pdrtran" ] @@ -47,20 +47,20 @@ "pdrtran_/pdrtran_exe/tools2/rel/READER.o", "pdrtran_/pdrtran_exe/tools2/rel/RECORD.o", "pdrtran_/pdrtran_exe/tools2/rel/STRNG.o", - "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/PDRTRAN.o", - "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/LEXICAL.o", - "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/PDRREADR.o", - "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/PDRRECRD.o", - "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/READER.o", - "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/RECORD.o", - "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/STRNG.o", - "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/PDRTRAN.o", - "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/LEXICAL.o", - "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/PDRREADR.o", - "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/PDRRECRD.o", - "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/READER.o", - "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/RECORD.o", - "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/STRNG.o" + "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/PDRTRAN.o", + "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/LEXICAL.o", + "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/PDRREADR.o", + "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/PDRRECRD.o", + "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/READER.o", + "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/RECORD.o", + "pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/STRNG.o", + "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/PDRTRAN.o", + "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/LEXICAL.o", + "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/PDRREADR.o", + "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/PDRRECRD.o", + "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/READER.o", + "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/RECORD.o", + "pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/STRNG.o" ]) t.run("linux") @@ -76,12 +76,12 @@ "$(EPOCROOT)/epoc32/release/tools2/rel/tool_exe.exe", "$(EPOCROOT)/epoc32/release/tools2/rel/libtool_lib1.a", "$(EPOCROOT)/epoc32/release/tools2/rel/libtool_lib2.a", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/tool_exe", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib1.a", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib2.a", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/tool_exe", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib1.a", - "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib2.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/deb/tool_exe", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/deb/libtool_lib1.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/deb/libtool_lib2.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/tool_exe", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/libtool_lib1.a", + "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/libtool_lib2.a", "$(EPOCROOT)/epoc32/tools/tool_exe.exe", "$(EPOCROOT)/epoc32/tools/tool_exe" ] @@ -98,18 +98,18 @@ "tool_exe_exe/tool_exe_exe/tools2/rel/tool_exe_b.o", "tool_exe_exe/tool_exe_exe/tools2/deb/tool_exe_b.o", "tool_exe_exe/tool_exe_exe/tools2/deb/tool_exe_a.o", - "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_b.o", - "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_a.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_b.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_a.o", - "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_b.o", - "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_a.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_a.o", - "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_b.o", - "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_a.o", - "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_b.o", - "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_b.o", - "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_a.o" + "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib1_b.o", + "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib1_a.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib2_b.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_lib2_a.o", + "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib1_b.o", + "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib1_a.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib2_a.o", + "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_lib2_b.o", + "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_exe_a.o", + "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM32_DIR)/tool_exe_b.o", + "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_exe_b.o", + "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM32_DIR)/tool_exe_a.o" ]) t.run("linux") diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/tracecompiler_general.py --- a/sbsv2/raptor/test/smoke_suite/tracecompiler_general.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/tracecompiler_general.py Fri Nov 12 14:49:36 2010 +0000 @@ -14,11 +14,10 @@ # Description: # -from raptor_tests import SmokeTest from raptor_tests import AntiTargetSmokeTest def run(): - t = SmokeTest() + t = AntiTargetSmokeTest() t.description = "Testcases (ID 0101a - 0101d) test trace compiler" # General test for trace compiler, which generates # 1. trace headers like Traces.h @@ -43,31 +42,31 @@ "$(EPOCROOT)/epoc32/include/platform/symbiantraces/autogen/testTC_0x1000008d_TraceDefinitions.h" ] t.addbuildtargets('smoke_suite/test_resources/tracecompiler/testTC/group/bld.inf', [ - "testtc_dll/armv5/udeb/wlanhwinit.o", - "testtc_dll/armv5/udeb/wlanhwinit.o.d", - "testtc_dll/armv5/udeb/wlanhwinitmain.o", - "testtc_dll/armv5/udeb/wlanhwinitmain.o.d", - "testtc_dll/armv5/udeb/wlanhwinitpermparser.o", - "testtc_dll/armv5/udeb/wlanhwinitpermparser.o.d", - "testtc_dll/armv5/udeb/testTC_udeb_objects.via", - "testtc_dll/armv5/udeb/testTC{000a0000}.def", - "testtc_dll/armv5/urel/wlanhwinit.o", - "testtc_dll/armv5/urel/wlanhwinit.o.d", - "testtc_dll/armv5/urel/wlanhwinitmain.o", - "testtc_dll/armv5/urel/wlanhwinitmain.o.d", - "testtc_dll/armv5/urel/wlanhwinitpermparser.o", - "testtc_dll/armv5/urel/wlanhwinitpermparser.o.d", - "testtc_dll/armv5/urel/testTC_urel_objects.via", - "testtc_dll/armv5/urel/testTC{000a0000}.def", - "testtc_dll/tracecompile_testTC_dll_1000008d.done" + "testTC_dll/armv5/udeb/wlanhwinit.o", + "testTC_dll/armv5/udeb/wlanhwinit.o.d", + "testTC_dll/armv5/udeb/wlanhwinitmain.o", + "testTC_dll/armv5/udeb/wlanhwinitmain.o.d", + "testTC_dll/armv5/udeb/wlanhwinitpermparser.o", + "testTC_dll/armv5/udeb/wlanhwinitpermparser.o.d", + "testTC_dll/armv5/udeb/testTC_udeb_objects.via", + "testTC_dll/armv5/udeb/testTC{000a0000}.def", + "testTC_dll/armv5/urel/wlanhwinit.o", + "testTC_dll/armv5/urel/wlanhwinit.o.d", + "testTC_dll/armv5/urel/wlanhwinitmain.o", + "testTC_dll/armv5/urel/wlanhwinitmain.o.d", + "testTC_dll/armv5/urel/wlanhwinitpermparser.o", + "testTC_dll/armv5/urel/wlanhwinitpermparser.o.d", + "testTC_dll/armv5/urel/testTC_urel_objects.via", + "testTC_dll/armv5/urel/testTC{000a0000}.def", + "testTC_dll/tracecompile_testTC_dll_1000008d.done" ]) t.run() # General CLEAN test for trace compiler outputs - t = AntiTargetSmokeTest() t.id = "101b" t.name = "TC_general_CLEAN" - t.command = "sbs -b smoke_suite/test_resources/tracecompiler/testTC/group/bld.inf -c armv5.tracecompiler CLEAN" + t.command = "sbs -b smoke_suite/test_resources/tracecompiler/testTC/group/bld.inf -c armv5.tracecompiler CLEAN" + t.targets = [] t.antitargets = [ "$(SBS_HOME)/test/smoke_suite/test_resources/tracecompiler/testTC/traces/wlanhwinitTraces.h", "$(SBS_HOME)/test/smoke_suite/test_resources/tracecompiler/testTC/traces/wlanhwinitmainTraces.h", @@ -78,7 +77,6 @@ ]) t.run() - t = SmokeTest() t.id = "101c" t.name = "TC_bv_path" t.command = "sbs -b smoke_suite/test_resources/tracecompiler/TC_featurevariant/group/bld.inf -c armv5.tracecompiler" @@ -93,21 +91,21 @@ "$(EPOCROOT)/epoc32/include/platform/symbiantraces/autogen/HelloWorld_0xe78a5aa3_TraceDefinitions.h" ] t.addbuildtargets('smoke_suite/test_resources/tracecompiler/TC_featurevariant/group/bld.inf', [ - "helloworld_exe/armv5/udeb/HelloWorld.o", - "helloworld_exe/armv5/udeb/HelloWorld.o.d", - "helloworld_exe/armv5/udeb/HelloWorld_udeb_objects.via", - "helloworld_exe/armv5/urel/HelloWorld.o", - "helloworld_exe/armv5/urel/HelloWorld.o.d", - "helloworld_exe/armv5/urel/HelloWorld_urel_objects.via", - "helloworld_exe/tracecompile_HelloWorld_exe_e78a5aa3.done" + "HelloWorld_exe/armv5/udeb/HelloWorld.o", + "HelloWorld_exe/armv5/udeb/HelloWorld.o.d", + "HelloWorld_exe/armv5/udeb/HelloWorld_udeb_objects.via", + "HelloWorld_exe/armv5/urel/HelloWorld.o", + "HelloWorld_exe/armv5/urel/HelloWorld.o.d", + "HelloWorld_exe/armv5/urel/HelloWorld_urel_objects.via", + "HelloWorld_exe/tracecompile_HelloWorld_exe_e78a5aa3.done" ]) + t.antitargets = [] t.run() # 101d-101f test trace compiler auto mechanism, which is used to avoid wasting time on source # containing no osttraces. # Trace compiler only runs when there are osttraces code in source. Raptor decides this by # checking whether there is a "traces" or "traces_" folder in USERINCLUDE in a mmp file. - t = SmokeTest() t.id = "101d" t.name = "TC_autorun1" # Run - USERINCLUDE ../traces_autorun1 @@ -122,9 +120,9 @@ "test_/armv5/urel/test.o", "test_/tracecompile_test_exe_00000001.done" ]) + t.antitargets = [] # Currently unnecessary, but helps the code be robust t.run() - t = AntiTargetSmokeTest() t.id = "101e" t.name = "TC_autorun2" # No run - USERINCLUDE ./tracesnotmatch @@ -140,12 +138,12 @@ "test_/armv5/udeb/test.o", "test_/armv5/urel/test.o", ]) + t.antitargets = [] # Currently unnecessary, but helps the code be robust t.addbuildantitargets('smoke_suite/test_resources/tracecompiler/TC_autorun/bld.inf', [ "test_/tracecompile_test_exe_00000001.done" ]) t.run() - t = AntiTargetSmokeTest() t.id = "101f" t.name = "TC_autorun3" # No run - no UID @@ -161,6 +159,7 @@ "test_/armv5/udeb/test.o", "test_/armv5/urel/test.o", ]) + t.antitargets = [] t.addbuildantitargets('smoke_suite/test_resources/tracecompiler/TC_autorun/bld.inf', [ "test_/tracecompile_test_exe_00000001.done" ]) @@ -168,7 +167,6 @@ # Test trace compiler doesn't run when it is switched off # Trace compiler switch is off by default. To turn it on use variant ".tracecompiler". - t = AntiTargetSmokeTest() t.id = "101g" t.name = "TC_switch_off" t.command = "sbs -b smoke_suite/test_resources/tracecompiler/TC_autorun/bld.inf -c armv5.tracecompiler" + \ @@ -182,6 +180,7 @@ "test_/armv5/udeb/test.o", "test_/armv5/urel/test.o" ]) + t.antitargets = [] t.addbuildantitargets('smoke_suite/test_resources/tracecompiler/TC_autorun/bld.inf', [ "test_/tracecompile_test_exe_00000001.done" ]) diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/whatlog_cache.py --- a/sbsv2/raptor/test/smoke_suite/whatlog_cache.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/whatlog_cache.py Fri Nov 12 14:49:36 2010 +0000 @@ -33,7 +33,7 @@ # Build something using the .whatlog variant. Take the build log and give it to sbsv2cache.py, deducing # the location of the generated cache file from the verbose output. If generated, dump the cache file to # STDOUT so we can validate the content in this test script. Clean up when finished. - t.command = """sbs -b smoke_suite/test_resources/simple_gui/Bld.inf -f ${SBSLOGFILE} -m ${SBSMAKEFILE} -c armv5.whatlog -c winscw.whatlog + t.command = """sbs -b smoke_suite/test_resources/simple_gui/Bld.inf -f ${SBSLOGFILE} -m ${SBSMAKEFILE} -c armv5.whatlog -c winscw.whatlog CACHEFILE=`%s $SBS_HOME/bin/sbsv2cache.py -v -s -o $EPOCROOT/epoc32/build/abldcache -l $SBSLOGFILE | sed -n \'s#Creating: ##p\'` if [ -n \"${CACHEFILE:+x}\" ]; then cat $CACHEFILE @@ -44,13 +44,13 @@ "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm", "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm", - "$(EPOCROOT)/epoc32/include/helloworld.rsg", - "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.rsc", - "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/helloworld_reg.rsc", - "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/helloworld_reg.rsc", + "$(EPOCROOT)/epoc32/include/HelloWorld.rsg", + "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/HelloWorld.rsc", + "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/HelloWorld_reg.rsc", + "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/HelloWorld_reg.rsc", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe", "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map", "$(EPOCROOT)/epoc32/release/winscw/udeb/helloworld.exe", @@ -61,8 +61,8 @@ ] t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [ "helloworld_exe/helloworld.mbm_bmconvcommands", - "helloworld_exe/helloworld_HelloWorld.rsc.rpp", - "helloworld_exe/helloworld_HelloWorld.rsc.d", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.rpp", + "HelloWorld_exe/HelloWorld_HelloWorld.rsc.d", "helloworld_exe/armv5/udeb/HelloWorld_Application.o", "helloworld_exe/armv5/udeb/HelloWorld_Application.o.d", "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o", @@ -123,19 +123,19 @@ "helloworld_exe/winscw/urel/helloworld_UID_.dep", "helloworld_exe/winscw/urel/helloworld_UID_.o", "helloworld_exe/winscw/urel/helloworld_UID_.o.d", - "helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.d" + "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d" ]) t.countmatch = [ ["\$self->{abldcache}->{.*\\\\test\\\\smoke_suite\\\\test_resources\\\\simple_gui target (armv5|winscw) (udeb|urel) -what\'} =", 4], - [".*\'.*\\\\\\\\epoc32\\\\\\\\data\\\\\\\\z\\\\\\\\private\\\\\\\\10003a3f\\\\\\\\apps\\\\\\\\helloworld_reg.rsc\'", 4], + [".*\'.*\\\\\\\\epoc32\\\\\\\\data\\\\\\\\z\\\\\\\\private\\\\\\\\10003a3f\\\\\\\\apps\\\\\\\\HelloWorld_reg.rsc\'", 4], [".*\'.*\\\\\\\\epoc32\\\\\\\\data\\\\\\\\z\\\\\\\\resource\\\\\\\\apps\\\\\\\\helloworld.mbm\'", 4], - [".*\'.*\\\\\\\\epoc32\\\\\\\\data\\\\\\\\z\\\\\\\\resource\\\\\\\\apps\\\\\\\\helloworld.rsc\'", 4], - [".*\'.*\\\\\\\\epoc32\\\\\\\\include\\\\\\\\helloworld.rsg\'", 4], + [".*\'.*\\\\\\\\epoc32\\\\\\\\data\\\\\\\\z\\\\\\\\resource\\\\\\\\apps\\\\\\\\HelloWorld.rsc\'", 4], + [".*\'.*\\\\\\\\epoc32\\\\\\\\include\\\\\\\\HelloWorld.rsg\'", 4], [".*\'.*\\\\\\\\epoc32\\\\\\\\release\\\\\\\\(armv5|winscw)\\\\\\\\(udeb|urel)\\\\\\\\helloworld.exe\'",4], [".*\'.*\\\\\\\\epoc32\\\\\\\\release\\\\\\\\(armv5|winscw)\\\\\\\\(udeb|urel)\\\\\\\\helloworld.exe.map\'", 3], - [".*\'.*\\\\\\\\epoc32\\\\\\\\release\\\\\\\\winscw\\\\\\\\(udeb|urel)\\\\\\\\z\\\\\\\\private\\\\\\\\10003a3f\\\\\\\\apps\\\\\\\\helloworld_reg.rsc\'", 2], + [".*\'.*\\\\\\\\epoc32\\\\\\\\release\\\\\\\\winscw\\\\\\\\(udeb|urel)\\\\\\\\z\\\\\\\\private\\\\\\\\10003a3f\\\\\\\\apps\\\\\\\\HelloWorld_reg.rsc\'", 2], [".*\'.*\\\\\\\\epoc32\\\\\\\\release\\\\\\\\winscw\\\\\\\\(udeb|urel)\\\\\\\\z\\\\\\\\resource\\\\\\\\apps\\\\\\\\helloworld.mbm\'", 2], - [".*\'.*\\\\\\\\epoc32\\\\\\\\release\\\\\\\\winscw\\\\\\\\(udeb|urel)\\\\\\\\z\\\\\\\\resource\\\\\\\\apps\\\\\\\\helloworld.rsc\'", 2], + [".*\'.*\\\\\\\\epoc32\\\\\\\\release\\\\\\\\winscw\\\\\\\\(udeb|urel)\\\\\\\\z\\\\\\\\resource\\\\\\\\apps\\\\\\\\HelloWorld.rsc\'", 2], ["\$self->{abldcache}->{\'plats\'} =", 1], [".*\'ARMV5\'", 1], [".*\'WINSCW\'", 1] diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/smoke_suite/xml_invalid_chars.py --- a/sbsv2/raptor/test/smoke_suite/xml_invalid_chars.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/smoke_suite/xml_invalid_chars.py Fri Nov 12 14:49:36 2010 +0000 @@ -45,9 +45,9 @@ if t.result == SmokeTest.PASS: - print "Testing validity of XML..." + log = t.logfile() + print ("Testing validity of XML file " + log) - log = "$(EPOCROOT)/epoc32/build/smoketestlogs/xml_invalid_chars.log" logfile = open(ReplaceEnvs(log), "r") try: diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/unit_suite/filter_interface_unit.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/unit_suite/filter_interface_unit.py Fri Nov 12 14:49:36 2010 +0000 @@ -0,0 +1,156 @@ +# +# 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: +# +# Unit tests for the filter_interface module + +import unittest +import filter_interface +import sys + +# No point testing the Filter interface - it's fully abstract + +class TestFilterInterface(unittest.TestCase): + def testSAXFilter(self): + # Areas for improvement: + # - Test non-well formed XML + # - Test all error cases (error, fatalError, warning) + class testFilter(filter_interface.FilterSAX): + def __init__(self): + super(testFilter,self).__init__() + self.failed = False + self.seendoc = False + self.startcount = 2 + self.endcount = 2 + self.charcount = 14 + + def startDocument(self): + if self.seendoc: + self.failed = True + sys.stdout.write('FAIL: Nested document elements') + self.seendoc = True + + def startElement(self, name, attributes): + self.startcount -= 1 + + if self.startcount < 0: + self.failed = True + # Report the number of excessive start elements + sys.stdout.write('FAIL: Seen {0} too many start elements'.format(0-self.startcount)) + + def endElement(self, name): + self.endcount -= 1 + + if self.endcount < 0: + self.failed = True + # Report the number of excessive end elements + sys.stdout.write('FAIL: Seen {0} too many end elements'.format(0-self.endcount)) + + def endDocument(self): + if not self.seendoc: + self.failed = True + self.stdout.write('FAIL: Not in a document at doc end') + self.seendoc = False + + def characters(self, char): + self.charcount -= len(char) + + if self.charcount < 0: + self.failed = True + # Report the number of excessive characters + sys.stdout.write('FAIL: Seen {0} too many characters'.format(0-self.charcount)) + + def finish(self): + # if self.seendoc: + # self.failed = True + # sys.stdout.write('FAIL: Still in a doc at end') + if self.startcount > 0: + # Already tested to see if it's less than 0 + self.failed = True + sys.stdout.write('FAIL: Not enough start elements') + if self.endcount > 0: + self.failed = True + sys.stdout.write('FAIL: Not enough end elements') + if self.charcount > 0: + self.failed = True + sys.stdout.write('FAIL: Not enough chars') + + + filter = testFilter() + filter.open([]) + self.assertTrue(filter.write("FooTextBarText")) + filter.finish() + self.assertFalse(filter.failed) + + def testPerRecipeFilter(self): + class testFilter(filter_interface.PerRecipeFilter): + recipes = [ { 'name':'recipe1', 'target':'target1', 'host':'host1', 'layer':'layer1', 'component':'component1', 'bldinf':'test1.inf', 'mmp':'test1.mmp', 'config':'winscw_test1', 'platform':'plat1', 'phase':'PHASE1', 'source':'source1', 'prereqs':'prereqs1', 'text':'\nTest text 1\n\n'}, + { 'name':'recipe2', 'target':'target2', 'host':'host2', 'layer':'layer2', 'component':'component2', 'bldinf':'test2.inf', 'mmp':'test2.mmp', 'config':'winscw_test2', 'platform':'', 'phase':'PHASE2', 'source':'', 'prereqs':'', 'text':'\nTest text 2\n\n'} ] + + def __init__(self): + super(testFilter,self).__init__() + self.failed = False + + def HandleRecipe(self): + testRecipe = self.recipes[0] + self.recipes = self.recipes[1:] + + for key in testRecipe.keys(): + if not self.__dict__.has_key(key): + self.failed = True + sys.stdout.write('FAIL: self.{0} not set\n'.format(key)) + elif self.__dict__[key] != testRecipe[key]: + self.failed = True + sys.stdout.write('FAIL: {0} != {1}\n'.format(repr(self.__dict__[key]),repr(testRecipe[key]))) + + filter = testFilter() + filter.open([]) + self.assertTrue(filter.write(''' + +sbs: version 99.99.9 [ISODATE symbian build system CHANGESET] + + + + + + + + + + +''')) + self.assertFalse(filter.failed) + +# run all the tests + +from raptor_tests import SmokeTest + +def run(): + t = SmokeTest() + t.id = "999" + t.name = "filter_interface_unit" + + tests = unittest.makeSuite(TestFilterInterface) + result = unittest.TextTestRunner(verbosity=2).run(tests) + + if result.wasSuccessful(): + t.result = SmokeTest.PASS + else: + t.result = SmokeTest.FAIL + + return t diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/unit_suite/raptor_cli_unit.py --- a/sbsv2/raptor/test/unit_suite/raptor_cli_unit.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/unit_suite/raptor_cli_unit.py Fri Nov 12 14:49:36 2010 +0000 @@ -150,6 +150,9 @@ self.pp=onoroff return True + def SetRsgCaseFolding(self, yesOrNo): + return True + def AddProject(self, project): return True diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/unit_suite/raptor_meta_unit.py --- a/sbsv2/raptor/test/unit_suite/raptor_meta_unit.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/unit_suite/raptor_meta_unit.py Fri Nov 12 14:49:36 2010 +0000 @@ -671,7 +671,7 @@ mmpContent = mmpFile.getContent(self.ARMV5) - mmpBackend = raptor_meta.MMPRaptorBackend(None, str(mmpFile.filename), str(bldInfObject.filename)) + mmpBackend = raptor_meta.MMPRaptorBackend(self.raptor, str(mmpFile.filename), str(bldInfObject.filename)) mmpParser = mmpparser.MMPParser(mmpBackend) parseresult = None try: @@ -830,6 +830,7 @@ def DummyMetaReaderInit(self, aRaptor): self._MetaReader__Raptor = aRaptor + self.ExportPlatforms = [] raptor_meta.MetaReader.__init__ = DummyMetaReaderInit @@ -913,20 +914,20 @@ # Test how we resolve known permutations of values given to the .mmp file OPTION_REPLACE keyword mockBackend = raptor_meta.MetaReader(self.raptor) - resultsDictList = [ {"bldinf":"Z:/src/romfile/group/tb92/GROUP/bld.inf", "result":"romfile"}, - {"bldinf":"/src/romfile/group/tb92/GROUP/bld.inf", "result":"romfile"}, - {"bldinf":"Z:/src/romFile/group/tb92/GROUP/another.inf", "result":"romFile"}, - {"bldinf":"X:/src/RoMfile/group/bld.inf", "result":"RoMfile"}, - {"bldinf":"w:/contacts/group/ONgoing/group/bld.inf", "result":"contacts"}, - {"bldinf":"p:/group/bld.inf", "result":"module"}, - {"bldinf":"/group/bld.inf", "result":"module"}, - {"bldinf":"p:/ONGOING/bld.inf", "result":"module"}, - {"bldinf":"/ONGOING/bld.inf", "result":"module"} - ] + resultsDictList = [ {"bldinf":"Z:/src/Romfile/group/tb92/GROUP/bld.inf", 'epocroot': 'Z:', "result":"src_romfile_tb92"}, + {"bldinf":"/home/src/roMfile/group/tb92/GROUP/bld.inf", 'epocroot': '/home', "result":"src_romfile_tb92"}, + {"bldinf":"Z:/src/romFile/tb92/GROUP/another.inf", 'epocroot': 'Z:', "result":"src_romfile_tb92"}, + {"bldinf":"X:/some/path/that/is/much/longer/than/expected/bld.inf", 'epocroot': 'X:', "result":"longer_than_expected"}, + {"bldinf":"w:/contacts/ONgoing/group/bld.inf", 'epocroot': 'w:', "result":"contacts_ongoing"}, + {"bldinf":"p:/group/bld.inf", 'epocroot': 'p:', "result":"module"}, + {"bldinf":"/home/group/bld.inf", 'epocroot': '/home', "result":"module"} + ] for result in resultsDictList: + mockBackend.ExportPlatforms.append({'EPOCROOT': result['epocroot']}) moduleName = mockBackend.ModuleName(result["bldinf"]) self.assertEquals(moduleName, result["result"]) + mockBackend.ExportPlatforms.pop() self.restoreMetaReader() diff -r 7ae5f757318b -r 37ee82a83d43 sbsv2/raptor/test/unit_suite/raptor_xml_unit.py --- a/sbsv2/raptor/test/unit_suite/raptor_xml_unit.py Tue Nov 02 16:54:53 2010 +0800 +++ b/sbsv2/raptor/test/unit_suite/raptor_xml_unit.py Fri Nov 12 14:49:36 2010 +0000 @@ -131,6 +131,44 @@ # Probably redundant, but return local environment (at least its dictionary) to pre-test state os.environ["SOURCEROOT"] = sourceroot + + def testSystemDefinitionWriting(self): + # Test creating a system model not from a file + model = raptor_xml.SystemModel(self.__logger, aDoRead=False) + sbsHome = os.environ["SBS_HOME"] + bldInfDir = os.path.join(sbsHome, "test/smoke_suite/test_resources/sysdef/") + bldinf1 = generic_path.Path(os.path.join(bldInfDir,'metadata_export_pre1/bld.inf')) + bldinf2 = generic_path.Path(os.path.join(bldInfDir,'dependent_on_exports/bld.inf')) + bldinf3 = generic_path.Path(os.path.join(bldInfDir,'metadata_export_pre2/bld.inf')) + model.AddComponent(raptor.Component(bldinf1,'layer1')) + model.AddComponent(raptor.Component(bldinf2,'layer1')) + model.AddComponent(raptor.Component(bldinf3,'layer2')) + self.assertTrue(model.HasLayer('layer2')) + self.assertTrue(len(model.GetLayerNames())==2) + self.__compareFileLists([bldinf1,bldinf2],model.GetLayerComponents('layer1')) + self.__compareFileLists([bldinf3],model.GetLayerComponents('layer2')) + self.__compareFileLists([bldinf1,bldinf2,bldinf3],model.GetAllComponents()) + + # Write out the file + epocroot="/" + if os.environ.has_key('EPOCROOT'): + epocroot = os.environ['EPOCROOT'] + try: + os.mkdir(os.path.join(epocroot,'epoc32/build')) + except OSError: + # Dir already exists? + pass + sysdeffile = os.path.join(epocroot,'epoc32/build/sysdefwrite.xml') + model.Write(sysdeffile) + + # Reload it and rerun the tests + model2 = raptor_xml.SystemModel(self.__logger,generic_path.Path(sysdeffile),"") + self.assertTrue(model2.HasLayer('layer2')) + self.assertTrue(len(model2.GetLayerNames())==2) + self.__compareFileLists([bldinf1,bldinf2],model2.GetLayerComponents('layer1')) + self.__compareFileLists([bldinf3],model2.GetLayerComponents('layer2')) + self.__compareFileLists([bldinf1,bldinf2,bldinf3],model2.GetAllComponents()) + def __compareFileLists (self, aListOne, aListTwo):