# HG changeset patch
# User jjkang
# Date 1277285279 -28800
# Node ID 22486c9c7b151ce9b2f704f6bf380f4c5de07f2e
# Parent 360bd6b351362446dbb9e0e4bac7c639a99a5f27
raptor v2.14.0
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/RELEASE-NOTES.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/RELEASE-NOTES.html Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,919 @@
+
+
+Release Notes for Symbian Build System v2
+
+
+
+Release Notes for Symbian Build System v2
+
+version 2.14.0
+
+New Features
+
+
+Defect Fixes
+
+
+
+version 2.13.0
+
+New Features
+
+
+Defect Fixes
+
+
+DPDEF143018 - Raptor doesn't handle spaces in GCCE installation directory correctly
+DPDEF143101 - GCC-E isn't tested as part of the tool checking mechanism
+DPDEF141195 - Raptor doesn't handle spaces in tool paths
+ SF Bug 2172 - [Raptor] Resource builds warn on encountering trigraph-like strings
+ SF Bug 2308 - [Raptor] PLUGIN3 TARGETTYPEs don't set resource output offsets correctly
+Fix: in copylogfromannofile mode, ensure that the build id and duration are included in the log. These are not critical but are useful
+Fix: remove unnecessary empty lines in log output in copylogfromannofile mode
+ SF Bug 1939 - [Raptor] PAGED keyword in MMP files should imply byte pair compressed
+DPDEF144648 - Raptor failed to build tools_deb objects under Windows XP
+ SF Bug 2134 - [Raptor] Raptor does not pass overridden make variables into its makefiles
+Fix : do not allow data to be paged implicitly
+ SF Bug 2302 - sbs_filter refers to python.exe in win32/python264/
+Fix : Makefile Parse Performance in Resource stage is poor. Large size of included dependency files is a factor. In --no-depend-generate mode, create dependency files which only refer to other rsg/mbg files that are yet to be built - store no other dependencies.
+Fix : ensure that FLMDEBUG is empty by default
+
+
+
+
+version 2.12.5
+
+Defect Fixes:
+- Fix: Workaround for emake engine log corruption when clockskew errors occur (annofile2log).
+ Allow Raptor to obtain log from emake annotation file where it is uncorrupted. A new
+ Make engine option "copylogfromannofile" enables/disables this mode for emake. If this option is disabled
+ or if no annotation file is specified for the build then Raptor reads logs directly as normal.
+- SF Bug 2125 - [Raptor] - tracecompiler what output incorrect if mmp basename contains '.' e.g. fred.prd.mmp
+- SF Bug 2191 - [Raptor] - When forcesuccess is enabled, exit status for a failed recipe is "retry" but should be "failed"
+- Fix: extend tracecompiler tests to Linux
+- Fix: Amendment to SF Bug 1511 fix - removal of blanked DEFFILE keyword from e32abiv2ani.flm
+- Fix: improve robustness to bad -c options
+
+
+version 2.12.4
+
+Defect Fixes:
+- SF Bug 2113 - [Raptor] what/check filters can assign files to the wrong components
+- SF Bug 2081 - [Raptor] - Exported file executable permissions not maintained (linux)
+- Fix: host attribute in recipes was blank in windows, windows cluster builds.
+- SF Bug 1912 - Raptor should take python from the path [if not set with SBS_PYTHON or bundled with Raptor]
+- SF Bug 2042 - [Raptor] component field empty in recipe
+- SF Bug 2007 - [Raptor] GCCE 4.4.1 builds require 4.3.1 and 4.3.2 SBS_GCCE???BIN env vars etc.
+- SF Bug 2000 - [Raptor] Talon fails when installed in a path containing the string '-c' (windows only)
+- SF Bug 1861 - [Raptor] More helpful console message in case of timeouts
+- SF Bug 1571 - Raptor cannot report error or warning message in wrong implib project
+- DPDEF142718 Incremental rebuild fails if dependent files deleted
+ --no-depend-generate added to suppress the generation and processing of dependency files
+ .DEFAULT target introduced for all non --no-depend-generate and/or --no-depend-include builds
+- Add support for PLUGIN3 TARGETTYPEs
+- Fixing logfile corruption for large GCCXML builds by suppressing zip output
+- Stop copying .bmp files to epoc32/localisation and fix the "what" reporting
+
+
+version 2.12.3
+
+Defect Fixes:
+- Don't print trace "what" information if we do not run the trace compiler.
+
+
+version 2.12.2
+
+Defect Fixes:
+- SF Bug 1569 - excessive recompilation in incremental tracecompiler builds
+- Better error messages for make-engine selection.
+ e.g. "sbs -e arm" will now produce a useful error message rather than
+ a traceback. "arm" is a real variant but it's not a make engine. In
+ the past sbs would have tried to use it and would have failed with a
+ complicated traceback. Also doesn't traceback for non-existent make engines.
+- sbs_filter chose wrong embedded default python version. Set to 2.6.4 now.
+- FilterCheck did not check files when run from sbs_filter
+- Remove old references to python 2.5.2
+- Escape filenames with special XML characters inside <member> tags
+
+
+version 2.12.1
+
+Defect Fixes:
+- SF Bug 1494 - sbs --what does not report Trace Compiler output
+- sbs -c winscw.tracecompiler uses wrong UID and doesn't generate traces
+- SF Bug 1519 - Raptor output files may contain unescaped left angle brackets as XML character data
+
+
+version 2.12.0
+
+New Features:
+- New 'Patchable Constants' target type: TARGETTYPE pdll
+- Combine Linking and Postlinking into a single step - performance improvement.
+- Support exit codes from next version of the trace compiler which will issue them
+- New sbs_filter script and batchfile to ease the use of sbs_filter.py.
+ Allows filters to be executed over a log after a build has been done.
+ e.g.
+
+ sbs_filter --filters=FilterWhat < logfile.log
+
+ (This runs a "--what" without regenerating any makefiles or reparsing
+ the matadata.)
+- New (beta) FilterWhatComp filter. Simulates abld log output for
+ use with parse_what.pl for packing up zips by component. Whatcomp output
+ uses the incoming epocroot value. i.e. if epocroot is relative then so is
+ the what output. e.g. if EPOCROOT=\ then the output will be of the form:
+
+ "\epoc32\release\armv5\...."
+
+ If it's "..\myepocroot" then the output will be:
+
+ "..\myepocroot\epoc32\release\armv5".
+
+ If it's absolute then the what output will also be absolute.
+- New FilterCheck filter. This can be used with sbs_filter to perform the
+ equivalent of --check using the log output from a build. It is more
+ efficient than --check because the metadata is not parsed and no makefiles
+ are generated. e.g.
+
+ sbs_filter --filters=FilterCheck < logfile.log
+
+- New (beta) graphical build visualisation tool (bin/timelines.py).
+ Requires pygame and PyOpenGL. e.g.
+
+ python timelines.py < filename.log
+
+- New (beta) log analyser (recipestats.py) for recording the total time spent
+ in each type of recipe in the build. e.g.
+
+ python recipestats.py < filename.log > stats.csv
+
+ The output is in CSV format.
+
+Defect Fixes:
+- fix for ARM9E + ARMV5 pre-processing confusion
+- SF bug 1606: template_ext.flm wrongly creates dependencies to OTHER_CFG targets
+- SF bug 1570: Adding then removing a capability can produce incorrect
+ result: e.g. ALL TCB -TCB becomes ALL -TCB but it should be just ALL
+
+Other Changes:
+- Default to using Python 2.6.4 on windows (no change in compatibility with
+ older versions of Python).
+
+
+version 2.11.3
+
+Defect Fixes:
+DPDEF142616 Raptor: Variables can be set unnecessarily prior to TEM execution
+Fix for: filter terminal flags up when recipe truncated
+SF bug 170: invalid XML output when a zip file is missing
+SF bug 518: unpaged keyword in mmp files is not parsed properly
+
+
+version 2.11.2
+
+Defect Fixes:
+DPDEF143176 raptor does not respect STDCPP mmp file keyword
+
+
+version 2.11.1
+
+Other Changes:
+GCCE 4.4.1 variant added
+Restored python 2.4 compatibility
+Minor TOOLS2 --what corrections
+Retain Linux execute permissions on unpacked :zip archives
+Prototype of extended timing API added
+Option --noexport added for parallel parsing
+Made --noexport and --export-only mutually exclusive
+SBS_PYTHONPATH insulates sbs from the global PYTHONPATH
+Removed spurious bracket in e32abiv2textnotifier2
+More robust to multiple import library definitions
+
+
+version 2.11.0
+
+New Features:
+Parallel parsing of meta-data
+New keyword APPLY for MMP files
+SAX filter plugin base-class
+
+Defect Fixes:
+DPDEF142895 Raptor does the wrong thing with the ARMFPU keyword
+DPDEF143020 The savespace variant overrides elf2e32's return code
+DPDEF143046 BYTEPAIRCOMPRESSTARGET and INFLATECOMPRESSTARGET not in FLM interface
+Improved error reporting for --check and --what
+
+
+version 2.10.2
+
+Defect Fixes:
+DPDEF142958 regression - ARMV6 and __ARMV6__ are not defined for armv6_urel builds
+DPDEF142730 Raptor crashes with improper VERSION syntax
+DPDEF142928 RVCT 4.0: Linker error when the MMP files modifies the --cpu option
+
+
+version 2.10.1
+
+Defect Fixes:
+DPDEF142666 Cannot remove frozen exports from EABI DEF file in SBSv2
+DPDEF142745 OPTION_REPLACE problems with RVCT 4.0
+DPDEF140622 feature variant configuration file with non exist file set to 'FEATURELISTFILES'
+DPDEF141195 Raptor doesn't handle spaces in tool paths
+DPDEF142616 Raptor: Variables can be set unnecessarily prior to TEM execution
+DPDEF142455 Disable warning L6780W for certain components
+DPDEF142447 GCC-E: Raptor compiles CIA files as Thumb
+DPDEF142448 GCC-E: Raptor tries to build ABIV1 import libraries
+DPDEF142451 GCC-E: Raptor treats C files as C++ files.
+
+
+version 2.10.0
+
+New Features:
+Support for GCCE compiler
+More efficient Feature Variation support
+
+
+version 2.9.3
+
+Defect Fixes:
+DPDEF142166 Raptor sometimes invokes checklib.exe with incorrect parameters
+DPDEF141354 EXPORTUNFROZEN fails in target builds if .savespace is applied
+DPDEF141533 Inconsistent log output
+DPDEF141604 file winscw.auto.bat is released two times
+DPDEF141787 Raptor treats EFREEZE info message as warnings
+
+Other Changes:
+talon can read commands from a temporary file as well as with -c
+
+
+version 2.9.2
+
+Defect Fixes:
+DPDEF141531 Incorrect RVCT variables passed to TEM
+DPDEF141837 Some problems with dependency (.d) files
+DEF140258 Aborting SBSv2 mid-build often leads to corrupt .d files which prevent rebuilds
+DPDEF142049 Garbage in the Raptor log file
+DPDEF141954 Raptor: "tools" config static libraries can have incorrect compilation macros
+DPDEF141974 Raptor: "tools" builds can fail when done in combination with "tools2" builds
+
+Other Changes:
+Static libraries cannot be feature variant
+Option --no-depend-include for very big builds
+
+
+version 2.9.1
+
+Defect Fixes:
+DPDEF141503 RMTPClient::StartTransport Panic when using emulated test tranport plugin
+DPDEF141688 ARMV6 builds with SBSv2 have problems with missing DEF files
+
+
+version 2.9.0
+
+New Features:
+Talon shell to reduce memory usage and improve stability.
+Support for RVCT 4.0 advanced features.
+Optionally use SBS_CYGWIN, SBS_MINGW and SBS_PYTHON to locate tools.
+Makefile to build host tools on Linux.
+Single-file compilation for IDE integration.
+Splitlog and CheckSource filters.
+
+Defect Fixes:
+DPDEF141523 Raptor links kernel-side components to scppnwdl.dso
+DPDEF141418 Raptor turns echo on
+DPDEF141495 Raptor doesn't deal correctly with SOURECEPATH beginning with '/'
+DPDEF141388 raptor inserts epoc32\include at start of systeminclude path
+
+
+version 2.8.6
+
+DPDEF135505 Some TEMs have race conditions for simultaneous urel and udeb. cp fails.
+DPDEF141498 If make crashes, Raptor exits with 0 errors
+DPDEF141071 Raptor: GCCXML build does not support the VAR2 TARGETTYPE
+DPDEF140816 STDCPP keyword in mmp file not interpreted by gccxml tool chain
+DPDEF137727 [Raptor Rollout] Raptor fails to build certain .mbg and .rsg files
+DPDEF137494 SBSv2: preprocessor warnings and errors might cause invalid XML in log
+DPDEF140731 Missing dependency files when building from clean
+DPDEF140540 [System Build]: Changes of Raptor cause 94_331 build failed
+DPDEF141129 raptor generates unknown origin file
+
+Other Changes:
+Fix to support trace compiler switch
+Better message for duplicate objects, states which file overrides which.
+Refactor to avoid "defects" of missing OS variants.
+
+
+version 2.8.5
+
+Defect Fixes:
+DPDEF141102 SBS doesn't set the paging attribute of excutables correctly
+DPDEF140731 Missing dependency files when building from clean
+DPDEF135620 Workaround for broken static libraries
+
+
+version 2.8.4
+
+Defect Fixes:
+DPDEF140839 RComp crashes if it's built with sbs
+DPDEF140929 OPTION GCCE in MMP files generates a build warning
+DPDEF135436 SBSv2 - Python traceback when illegal characters appear on command line
+
+
+version 2.8.3
+
+Defect Fixes:
+DPDEF139904 Raptor: .def file FREEZE attempted for ARMV5 when it shouldn't be
+DPDEF140589 Raptor: .def file FREEZE attempted for WINSCW when it shouldn't be
+DPDEF140456 Raptor build error with -c tools_rel
+DPDEF139759 Raptor warning regarding EXPORTSUNFROZEN is ambiguous
+DPDEF135436 SBSv2 - Python traceback when illegal characters appear on command line
+INC140156 SBSv2 crashes when build QtWebkit for ARMV5
+
+Other Changes:
+Add <info> to show which variant.hrh file is used.
+Replaced the corrupted awk.exe in cygwin distro.
+Fix previous trace compiler auto run mechanism.
+ROMFILE improvements.
+
+
+version 2.8.2
+
+Defect Fixes:
+DPDEF140540 [System Build]: Changes of Raptor cause 94_331 build failed
+
+Other Changes:
+Tolerate XML schema 1_0 files where possible.
+Treat system definition schema 1.[3-9] files the same as schema 1.4 files.
+Remove checksource and its python site-packages.
+
+
+version 2.8.1
+
+Defect Fixes:
+DPDEF140165 SBS error when creating info.xml on component base_omaph2
+DPDEF132996 Location of generated auto.bat files is inconsistent
+
+Other Changes:
+Feature variant "ln -f" fails intermittently in parallel builds.
+Traceback when "group" elements are redefined in XML.
+Trace compiler should run automatically if a trace path exists.
+Need a workaround for Carbide Missing SDK problem.
+
+
+version 2.8.0
+
+New Features:
+XML schema 2.0 with new alias and group elements.
+
+Removed:
+XML config element (use var instead).
+XML .first and .last mechanism (use alias or group instead).
+
+Defect Fixes:
+DPDEF140082 SBS cause env to dirty state
+DPDEF138565 SBSV2 doesn't define the correct macros for ARMV6
+DPDEF139950 SBSv2 Filter Handling not Robust enough - bad filters stop build.
+DEF139686 [TCL Build] coredumpserver compile warnings in DP00458
+
+
+version 2.7.2
+
+Defect Fixes:
+DPDEF139420 Raptor config does not correctly handle mifconv causing resource build errors
+DPDEF138679 Raptor does not create a DEFFILE when building for winscw_urel
+DPDEF139692 SBSV2: 'virtual memory exhausted' when building multiple variants
+DPDEF136321 SBSv2: Zip exports not cleaned
+INC139622 OPTION_REPLACE does not work properly in SBSv2
+
+Other Changes:
+Added utility.prebuilt FLM.
+
+
+version 2.7.1
+
+Defect Fixes:
+DPDEF138366 [T15379] Raptor raise some warnings when build Coredumpserver
+DPDEF139405 SBSV2: Trace compilation fails with large numbers of files.
+DPDEF139572 SBSV2: Changes to '--cpu' option syntax breaks existing MMP files.
+DPDEF139456 Toolcheck file is not created if EPOCROOT is \
+DPDEF133766 Poor SBSv2 reallyclean performance
+DPDEF135780 SBSV2: REALLYCLEAN is not cleaning all files
+
+
+version 2.7.0
+
+New Features:
+DS.1744 Recognize LINKEROPTION in MMP file
+DS.1744 Compiled objects on local filesystem (SBS_BUILD_DIR)
+
+Partial Deliveries:
+DS.1744 CheckSource in Raptor
+
+Defect Fixes:
+DPDEF138293 Carbide: Raptor doesn't resolve variant.cfg entries starting with "\" correctly
+
+
+version 2.6.5
+
+Defect Fixes:
+DPDEF138930 Raptor needs to change to match new trace compiler interface
+
+
+version 2.6.4
+
+Defect Fixes:
+DPDEF138527 [TCL Build] Miss tracecompiler.mk and exclude group for Raptor export
+DPDEF138484 Raptor uses wrong guard causing trace compiler ignores some projects.
+DPDEF138720 BV product folders have missing map files
+DPDEF138721 Raptor uses wrong lib when mmp keyword FIRSTLIB presents.
+DPDEF138053 SBSv2: tools platform: tools not installed by the time they need to be used.
+DPDEF138164 Carbide: Raptor crashes on unrecognised buildinfo.txt content
+DPDEF138296 SBSV2 disables all TOOLS2 compiler warnings
+DPDEF138329 Raptor generates marker file for trace compiler when it's not done
+DPDEF138352 SBSv2: rollout - unsplit EC makefiles not generating correct deps 4 missing .mbg
+DPDEF138480 SBSv2: rollout. Created files sometimes have insufficient permissions on Windows
+DPDEF137511 SBSv2 doesn't behave correctly with the default paging policy
+
+
+version 2.6.3
+
+Defect Fixes:
+DPDEF133508 Number of errors is counted wrong
+DPDEF138098 UID issue in Trace Compiler for Raptor
+DPDEF138296 SBSV2 disables all TOOLS2 compiler warnings
+
+
+version 2.6.2
+
+Defect Fixes:
+DPDEF135330 Raptor Rollout: bangalore messaging winscw udeb test code
+DPDEF137726 Missing mscvr_readme.txt from the SBSv2 drop
+DPDEF137739 SBSv2: rollout - .cia object files can conflict with .cpp object files
+
+
+version 2.6.1
+
+Defect Fixes:
+DPDEF137239 raptor does not include the msvcr71 runtime library
+DPDEF137489 BV builds try and write generated .s files in the wrong directory
+
+
+version 2.6.0
+
+New Features:
+DS.1542 SBSv2 generates Open System Trace dictionaries
+DS.1629 Resource autodependencies
+
+
+version 2.5.5
+
+Defect Fixes:
+DPINC137379 Emulator: Cursor is missing on emulator buttons
+DPDEF133640 SBSv2 usrt3_1.lib is missing from epocroot/epoc32/release/armv5/
+
+
+version 2.5.4
+
+Defect Fixes:
+DPDEF136719 Raptor: sbsv2cache.py cache file generation fails with very large log files
+DPDEF136715 On Linux the shipped python 2.5.2 is not found
+DPDEF132996 SBSv2 doesn't generate AUTO.BAT file
+DPDEF136382 SBSv2: explicit dll versioning not supported on arm platforms
+DPDEF135843 [Raptor Rollout] Raptor does not support OPTION_REPLACE ARMASM/OPTION ARMASM
+DPDEF136693 makesis fails when multiple instances are run concurrently with the same target
+
+
+version 2.5.3
+
+Defect Fixes:
+DPDEF136162 Raptor: resource dependencies require metadata workarounds
+DPDEF128288 SBSv2 does not fully support build target customization.
+DPDEF132880 BV builds cannot find system static libraries
+DPDEF133835 SBSv2 cannot build for ARMV6 or ARM9E
+
+
+version 2.5.2
+
+Defect Fixes:
+DPDEF135983 cpp-raptor crashes if source code contains builtin macro __FILE__
+DPDEF133808 Raptor does not support OPTION --no_rtti with mixed assembly/C++ projects
+DPDEF135577 SBSv2: rollout - TOOLS/TOOLS2 exes sometimes not executable or writable.
+
+
+version 2.5.1
+
+Defect Fixes:
+DPDEF135258 createvmap.py script can hang in BV builds
+DPDEF135385 warnings in RunModeDebugger in M04816vFuture with ARMV7
+
+
+version 2.5.0
+
+New Features:
+DS.1568 User defined configuration file location(s)
+
+
+version 2.4.3
+
+Defect Fixes:
+DPDEF134322 SBSV2 uses the wrong library when building STDCPP targets
+DPDEF132923 SBSv2 freeze don't add Vtable and RTTI information into def file for arm dll
+DPDEF133775 SBSv2: ARMFPU is not passed to compiler
+DPDEF134023 case inconsistency with libOpenVG.lib
+
+Other Changes:
+MINOR_CHANGE updated all copyright notices for SF delivery
+MINOR_CHANGE added vtb91sf variant for SF Timebox 9:1 builds
+MINOR_CHANGE added vtb92sf variant for SF Timebox 9:2 builds
+
+
+version 2.4.2
+
+Defect Fixes:
+DPDEF133820 Raptor Rollout: EXPORTUNFROZEN processing incorrect in ARMV5 builds
+DPDEF132033 Raptor picks up the wrong bld.inf macros when building for RVCT 3.1
+DPDEF133772 SBSv2: console log includes some winscw warnings that should be suppressed
+
+
+version 2.4.1
+
+Defect Fixes:
+DPDEF133639 Raptor Rollout:TEF test server doesn't start under SBSv2 - OK with abld
+DEF133255 [System Build]: Error in compiling NaviEngine Unistore on ARMV7 M04816 vFuture
+DPDEF127973 Freeze fails with SBSv2 under some environments
+
+
+version 2.4.0
+
+New Features:
+DS.1475 Pluggable Log Summariser
+DS.1476 Use FLMs from the source tree
+
+Defect Fixes:
+DPDEF133417 SBSv2: tmp mounting errors on startup
+
+
+version 2.3.3
+
+Defect Fixes:
+DPDEF130261 sbs does not support explicit option to version keyword
+DPDEF130598 sbs does not provide debug and nodebug variants
+DPDEF131630 Raptor smoke tests break when EPOCROOT=\ on Windows
+DPDEF132898 no TEM nbl2.lib dependencies for armv7
+DPDEF133035 SBSv2 - Tools2 build does not include -m32 option. Stlport flm also doesn't.
+DPDEF133176 SBSv2 ignores compillation error for "unidentified identifier" for winscw build
+
+
+version 2.3.2
+
+Other Changes:
+MINOR_CHANGE added vtb92 variant for Timebox 9:2 builds
+
+
+version 2.3.1
+
+Defect Fixes:
+DPDEF132374 SBSv2: Directory creation can fail leading to build errors
+DPDEF132070 SBSv2: stlport 5.2 build fails - library generated to wrong directory
+DPDEF128378 SBSv2 help for global targets only shown when a target is given
+DPDEF129634 ALWAYS_BUILD_AS_ARM does not suppress __MARM_THUMB__ with SBSv2
+
+
+version 2.3.0
+
+New Features:
+DS.1424 Support for ARMV5SMP platform
+
+Defect Fixes:
+DPDEF129804 SBSv2 crashes when there are double \\ in prj_mmpfiles in bld.inf
+DPDEF130892 SBSv2: Reallyclean fails on TEM files
+DPDEF131619 SBSv2: ABIv1 .lib files aren't generated for -c armv5 -c armv5.smp
+DPDEF131637 SBSv2: stlport can fail to build under Cygwin - "/tmp no such directory"
+DPDEF131891 [System Build]: Errors in GT stage in Build M04774 vfuture
+
+
+version 2.2.9
+
+Defect Fixes:
+DPDEF129804 SBSv2 crashes when there are double \\ in prj_mmpfiles in bld.inf
+DPDEF131637 SBSv2: stlport can fail to build under Cygwin - "/tmp no such directory"
+DPDEF130892 SBSv2: Reallyclean fails on TEM files
+
+
+version 2.2.8
+
+Defect Fixes:
+DPDEF130569 .lib files for SSM targets build with different name compared to abld
+DPDEF130571 libxml2 component contains GCCXML build errors
+DPDEF131312 SBSv2 - DEBUGGABLE_UDEBONLY not supported by SBSv2 (Raptor)
+
+
+version 2.2.7
+
+Defect Fixes:
+DPDEF130533 SBSv2 fails to run when installed from SITK
+DPDEF130452 Some rcomp warnings need to be disabled
+DPDEF130286 SBSv2: sbs freezes during CLEAN and REALLYCLEAN operations.
+DPDEF127973 Freeze fails with SBSv2 under some environments
+DPDEF128455 Error during freeze with SBSv2
+DPDEF127149 SBSv2 TEM/extension makefile build doesn't support the .savespace variant
+
+
+version 2.2.6
+
+Defect Fixes:
+DPDEF130008 SBSv2 should recognize these new keywords: SMPSAFE, PAGEDCODE, PAGEDDATA, UN...
+DPDEF127887 Current directory wrong when executing extension makefiles in SBSv2
+DPDEF128915 CCheckEnv ERROR: CBRPatch: Absent file
+DPDEF127675 Raptor does not process stringtables correctly when HEADERONLY is on
+DPDEF127878 give wrong mmp filename for -p option should cause error in SBSv2
+
+Other Changes:
+Uses cygwin instead of msys for improved stability.
+Includes python 2.5.2 instead of using py2exe.
+
+
+version 2.2.5
+
+Defect Fixes:
+DEF127329 OMAP H4 Unistore2 Failure in Raptor 9.5 GT build
+DPDEF128632 SBSv2 : bld.inf ':zip' exports don't maintain timestamps, with an e32 impact
+DPDEF127399 SBSv2 -p [filename].mmp options also builds .mk files
+
+
+version 2.2.4
+
+Defect Fixes:
+DPDEF129187 SBSv2: ABIv1 .lib files are required (again)
+
+
+version 2.2.3
+
+Defect Fixes:
+DPDEF128916 C Standard Library failed on cia2cpp2o armv5 with 1
+DPDEF128503 sbs 2.2.0 produce malformed xml log on Linux with pvmgmake
+DPDEF127604 SIS registry panics at startup on emulator if SWI is built with SBS
+DPDEF128690 SBSv2 generates error when using emake on REALLYCLEAN target
+
+Other Changes:
+MINOR_CHANGE log summariser updated to deal with errors starting "make.exe: ***"
+
+
+version 2.2.2
+
+Defect Fixes:
+DPDEF127497 SBSv2 does not clean when -k or other switch is used with abld wrapper
+DPDEF127829 'cannot open Meta file' warning with SBSv2
+DPDEF127371 abld -v not working correctly through sbsv2
+DPDEF127555 SBSv2 doesn't do "romfile"
+
+Other Changes:
+MINOR_CHANGE made the default number of jobs 4
+
+
+version 2.2.1
+
+Defect Fixes:
+DPDEF128498 SBS creates paths with extra slashes which can cause problems
+
+Other Changes:
+MINOR_CHANGE Removed temporary ABIv1 .lib generation
+MINOR_CHANGE Added monty test data to the test folder
+
+
+version 2.2.0
+
+New Features:
+DS.1347 SBSv2 Compiler Selection
+DS.1348 SBSv2 allow mixed slashes
+
+Defect Fixes:
+DPDEF127904 SBSv2 : recent installdefaultcommdb has broken the 9.4 build
+DPDEF128022 SBSv2: Unrecognised Keyword ['romtarget some_file.dll'] warnings
+DPDEF127815 SBSv2: PAGED and EPOCCALLDLLENTRYPOINTS keywords not supported
+DPDEF127890 SBSv2: TARGETPATH in mmps (also resources, bitmaps) must cope with backslashes
+DPDEF128229 SBSv2: some command invocations can fail, but could be "re-tried"
+
+
+version 2.1.10
+
+Defect Fixes:
+DPDEF126662 Intermittent networking_dhcp compilation failure in Raptor build GT phase
+DPDEF127799 SBSv2: zip and unzip commands not found in some builds
+DPDEF127665 ARMV7 libraries have wrong link order in Raptor
+
+
+version 2.1.9
+
+Defect Fixes:
+DPDEF127498 SBSv2: importlibversioned_abiv1 intermittently fails in ARMV5 builds
+DPDEF125483 CDB breaks due to Attribute values not matching expected values
+DPDEF126335 Intermittent GT errors due to "make" not being found on the PATH
+DPDEF127562 SBSv2 will not unzip the same file into more than one location
+DPDEF127626 SBSv2: sed version on windows is out of date
+
+
+version 2.1.8
+
+Defect Fixes:
+DPDEF125478 CDB breaks caused by file path/name mismatch
+DPDEF125145 Incorrect file access permissions for sbs v2.0.14 in Linux distribution
+DPDEF126126 Intermittent "Segmentation fault" error in Raptor GT phase
+DPDEF124836 SBSv2 cannot build just a single .mmp file from a bld.inf file
+DPDEF126675 Performance regression in SBSv2 python frontend caused by regex usage,
+DPDEF126790 groupin10 is not used in artarget_func
+DPDEF125639 TEM variables are reported incorrectly when building TEM for ARMV7
+DPDEF124273 abld help is ugly and hard to read
+DPDEF126614 "Virtual memory exhausted. Stop" error when building with SBSV2
+
+
+version 2.1.7
+
+Defect Fixes:
+DPDEF124290 SBS -e pvmgmake -j 12 on Linux produces malformed xml log files
+DPDEF126241 SBSv2 : SECURE_DATA error when building uiklaf toolkit in TechView
+DPDEF126328 Performance regression and related excessive memory usage in daily Raptor builds
+
+
+version 2.1.6
+
+Defect Fixes:
+DPDEF125740 SBSv2: Builds can hang during the GT stage in Windows builds when using "-j x"
+DPDEF125145 Incorrect file access permissions for sbs v2.0.14 in Linux distribution
+
+
+version 2.1.5
+
+Defect Fixes:
+DPDEF125812 There is no user created init.xml configuration file
+
+
+version 2.1.4
+
+Defect Fixes:
+DPDEF124680 Raptor builds hang at "tools2" compilation phase
+DPDEF125304 Raptor crashes when running abld
+
+
+version 2.1.3
+
+Defect Fixes:
+DPDEF125394 sbs_2.1.0_(RC1) Building complete OS gives armasm errors on Windows
+DPDEF122556 GT0367: CLEANEXPORT target is not cleaning files with a space in them
+DPDEF124691 Raptor should ignore the new SMPSAFE keyword
+DPDEF125031 SBSv2 Stringtable build fails when EXPORTPATH specified
+
+
+version 2.1.2
+
+Change Requests:
+CR1413 Support for different toolchains to be called by SBSv1 and SBSv2
+
+
+version 2.1.1
+
+Defect Fixes:
+DEF124748 GCCXML errors in Raptor related to missing arm lib files
+DEF124756 Raptor build : Orphan files reported in CBR phase
+DEF124758 Raptor build CBR errors due to missing ".a" files
+DEF124573 CDB breaks in Raptor build due to missing header,dll and lib files
+
+
+version 2.1.0
+
+Change Requests:
+CR1479 Add Armv7 support into SBSv2
+
+Defect Fixes:
+DEF124543 Raptor does not handle the STDCPP keyword correctly
+DEF124515 GT0367: 'bldmake plat' should now show ARMV7
+
+
+version 2.0.14
+
+Defect Fixes:
+DEF124705 CBR errors in raptor builds due to missing rpp files
+DEF120328 SBS v2.0 configuration files cannot be validated
+INC124096 Long list of MMP macros causes crashdump with .s files
+DEF124702 GT0367: Semaphores need altering to correct possible hangs (on Linux)
+
+
+version 2.0.13
+
+Defect Fixes:
+DEF123653 SBS -j 16 on Windows produces malformed xml log files
+
+
+version 2.0.12
+
+Defect Fixes:
+DEF123987 Raptor does not build a lot of .lib files for ARMV5
+DEF123981 SBSv2 doesn't generate DSO when EXPORTUNFROZEN is specified.
+
+
+version 2.0.11
+
+Defect Fixes:
+DEF123988 SBSv2 does not produce rpp files
+DEF123766 SBSv2 log output does not match the specification
+DEF122781 GT0367: 'bldmake bldfiles' output not going to stdout
+DEF122885 GT0367: Need to stop sbs -abld functioning on Linux
+DEF123354 GT0367: Incorrect output if the number of jobs provided is invalid
+
+
+version 2.0.10
+
+Defect Fixes:
+DEF123984 SBSv2 generates more warnings than abld
+DEF124139 GT0367: SBS causes a Python Traceback when a system_definition.xml error occurs
+DEF123601 SBSv2 : Python traceback error is reported when try to build systemtest code
+DEF123916 SBSv2 : "tools" build warns about overrides when "OPTION MSVC /w" in .mmp files
+
+
+version 2.0.9
+
+Defect Fixes:
+PDEF124028 .GXP files not getting created when built for GCCXML target
+DEF123653 SBS -j 16 on Windows produces malformed xml log files
+DEF123586 dso file is not remade when def file changes
+DEF122541 SBSv2 -what should report resource files
+DEF123265 Incorrect file access permissions for sbs v2.0.7 in Linux dist
+DEF123317 SBSv2 -what got error for whatexports if too much exports
+DEF123439 SBSv2 : Exports not performed in total before .mmp processing in sysdef builds
+DEF123552 STLport doesn't build with Raptor on Linux
+DEF123260 GT0367: Circular references in config files not handled
+
+
+version 2.0.8
+
+Defect Fixes:
+DEF122930 SBSv2:Target type exexp giving errors while building for winscw
+DEF123028 Raptor generating double slashes in command files
+DEF123048 SBSv2: build with -k (keep-going) stops when export makefile has a failure.
+DEF123069 False 'missing mmp file' errors reported by SBSv2
+DEF122472 SBSv2 doesn't report content of unpacked zip files
+DEF122534 SBSv2 -what should not report .sym files
+DEF123181 SBSv2: Failure of one export in python aborts remaining exports for bld.inf
+DEF123289 SBSv2 : Netcards doesn't build for "tools" in an SBSv2 build
+DEF123418 SBSV2: stlport build can fail with "no rule to make target"
+DEF123084 SBSv2: exits with an exception if -c option specifies non-existent configuration
+INC122876 Electric Accelerator build fails with Raptor
+
+
+version 2.0.7
+
+Defect Fixes:
+DEF122784 Large MMP files and GNUMAKEFILE causes shell to crash
+DEF122760 Problems with bmconv command files preventing bitmap generation?
+DEF122803 SBSv2 - Freeze doesnt work properly for OE target types
+DEF122833 SBSV2 Performance is poor with -j16 using the GNU Make engine
+DEF122535 GT0367: Invalid system_definition.xml causes SBSv2 layering crash
+DEF122570 SBSv2 : certain "-m" values cause a crash at makefile generation
+DEF122604 Errors in GT only build using sbsv2 on Windows
+DEF122796 Wrong default value for PVMGMAKE in make.xml
+DEF122783 SBSv2 WINSCW builds can produce incorrectly linked executables under emake
+DEF122785 log summariser crashes if errors contain % characters
+DEF122870 SBSv2 assembling .s files fails.
+DEF120473 Enable Windows and Linux Tools to Cohabit
+DEF121826 Pre-include HRH file directory from variant.cfg fails for template extension mak
+DEF121907 Raptor crashes when exporting zip file that already exists
+DEF122523 SBSv2 Logging output affected by bash version on Linux
+DEF122788 SBSv2: We don't ensure correct version of Make for TEMs and for use in FLMs
+
+
+version 2.0.6
+
+The first release of SBSv2 in the SITK.
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/bin/depcrunch.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/depcrunch.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,111 @@
+#
+# 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:
+# Minimise the dependencies in a C preprocessor dependency file to
+# those that CPP could not find. Then add in an assumption about
+# where to find them. Output is assumed to be relevant to only one target
+# even if multiple dep files are analysed.
+#
+
+import sys
+from optparse import OptionParser
+import re
+
+class NoTargetException(Exception):
+ pass
+
+def depcrunch(file,extensions,assume):
+ target_pattern = r"^\s*(\S+):\s+"
+ target_re = re.compile(target_pattern)
+ # Not the use of (?i) in the following expression. re.I seems to cause re.findall
+ # to not actually find all files matching the extension whereas (?i) provides
+ # case insensitivity at the right point and it works. Really don't understand this.
+ extension_pattern = r"\s([^/ \t]+\.((?i)" + "|".join([t for t in extensions]) + r"))\b"
+ extension_re = re.compile(extension_pattern)
+
+ target = None
+
+ deps = []
+
+ # Read through the dependencies.
+ for l in file:
+ l = l.replace("\\","/").rstrip("\n\r")
+
+ # Look out for the target name if
+ # we have not found it yet
+ if not target:
+ t = target_re.match(l)
+ if t:
+ target = t.groups()[0]
+
+ # Look for prerequisites matching the
+ # extensions. There may be one or more on
+ # the same line as the target name.
+ # Don't use re.I - somehow prevents
+ # all but one match in a line which may have several files
+ m = extension_re.findall(l)
+ if m:
+ deps.extend([d[0] for d in m])
+
+ if not target:
+ raise NoTargetException()
+
+ if len(deps) > 0:
+ print "%s: \\" % target
+ for d in deps[:-1]:
+ print " %s \\" % (assume + "/" + d)
+ print " %s " % (assume + "/" + deps[-1])
+
+
+
+
+## Command Line Interface ####################################################
+
+parser = OptionParser(prog = "depcrunch",
+ usage = "%prog [-h | options] []")
+
+parser.add_option("-e", "--extensions",
+ action="store", dest="extensions", type='string', help="comma separated list of file extensions of missing files to keep in the crunched dep file.")
+
+parser.add_option("-a", "--assume",
+ action="store", dest="assume", type='string', help="when cpp reports missing dependencies, assume that they are in this directory")
+
+(options, args) = parser.parse_args()
+
+
+if not options.extensions:
+ parser.error("you must specify a comma-separated list of file extensions with the -e option.")
+ sys.exit(1)
+
+if not options.assume:
+ parser.error("you must specify an 'assumed directory' for correcting missing dependencies with the -a option.")
+ sys.exit(1)
+
+depfilename="stdin"
+if len(args) > 0:
+ depfilename=args[0]
+ file = open(depfilename,"r")
+else:
+ file = sys.stdin
+try:
+ depcrunch(file,options.extensions.split(","), options.assume)
+except NoTargetException,e:
+ sys.stderr.write("Target name not found in dependency file\n");
+ sys.exit(2)
+
+
+if file != sys.stdin:
+ file.close()
+
+sys.exit(0)
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/bin/recipestats.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/recipestats.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,176 @@
+#!/usr/bin/env python
+#
+# 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"
+# 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:
+#
+# display summary information about recipes from raptor logs
+# e.g. total times and so on.
+
+import time
+import __future__
+
+
+
+
+class RecipeStats(object):
+ def __init__(self, name, count, time):
+ self.name=name
+ self.count=count
+ self.time=time
+
+ def add(self, duration):
+ self.time += duration
+
+class BuildStats(object):
+ STAT_OK = 0
+
+
+ def __init__(self):
+ self.stats = {}
+ self.failcount = 0
+ self.failtime = 0.0
+ self.failtypes = {}
+ self.retryfails = 0
+ self.hosts = {}
+
+ def add(self, starttime, duration, name, status, host, phase):
+ if status != BuildStats.STAT_OK:
+ self.failcount += 1
+ if name in self.failtypes:
+ self.failtypes[name] += 1
+ else:
+ self.failtypes[name] = 1
+
+ if status == 128:
+ self.retryfails += 1
+ return
+
+ if name in self.stats:
+ r = self.stats[name]
+ r.add(duration)
+ else:
+ self.stats[name] = RecipeStats(name,1,duration)
+
+ hp=host
+ if hp in self.hosts:
+ self.hosts[hp] += 1
+ else:
+ self.hosts[hp] = 1
+
+ def recipe_csv(self):
+ s = '"name", "time", "count"\n'
+ l = sorted(self.stats.values(), key= lambda r: r.time, reverse=True)
+ for r in l:
+ s += '"%s",%s,%d\n' % (r.name, str(r.time), r.count)
+ return s
+
+ def hosts_csv(self):
+ s='"host","recipecount"\n'
+ hs = self.hosts
+ for h in sorted(hs.keys()):
+ s += '"%s",%d\n' % (h,hs[h])
+ return s
+
+
+import sys
+import re
+import os
+from optparse import OptionParser # for parsing command line parameters
+
+def main():
+ recipe_re = re.compile(".*[0-9]+)')?.*")
+ phase_re = re.compile(".*Making.*?([^\.]+\.[^\.]+) ")
+
+ parser = OptionParser(prog = "recipestats",
+ usage = """%prog --help [-b] [-f ]""")
+
+ parser.add_option("-b","--buildhosts",action="store_true",dest="buildhosts_flag",
+ help="Lists which build hosts were active in each invocation of the build engine and how many recipes ran on each.", default = False)
+ parser.add_option("-f","--logfile",action="store",dest="logfilename", help="Read from the file, not stdin", default = None)
+
+
+ (options, stuff) = parser.parse_args(sys.argv[1:])
+
+ if options.logfilename is None:
+ f = sys.stdin
+ else:
+ f = open(options.logfilename,"r")
+
+ st = BuildStats()
+
+
+ alternating = 0
+ start_time = 0.0
+
+ phase=None
+ for l in f:
+ l2 = l.rstrip("\n\r")
+
+ rm = recipe_re.match(l2)
+
+ if rm is not None:
+ (rname,host) = rm.groups()
+ continue
+
+ pm = phase_re.match(l2)
+
+ if pm is not None:
+ if phase is not None:
+ if options.buildhosts_flag:
+ print('"%s"\n' % phase)
+ print(st.hosts_csv())
+ st.hosts = {}
+ phase = pm.groups()[0]
+ continue
+
+ tm = time_re.match(l2)
+ if tm is not None:
+ try:
+ s = float(tm.groups()[0])
+ elapsed = float(tm.groups()[1])
+
+ if start_time == 0.0:
+ start_time = s
+
+ s -= start_time
+
+ continue
+ except ValueError, e:
+ raise Exception("Parse problem: float conversion on these groups: %s\n%s" %(str(tm.groups()), str(e)))
+ else:
+ if l2.find(" 1:
+ print "usage:", sys.argv[0], "(The log data is read from stdin)"
+ sys.exit(0)
+
+whatlogRE = re.compile(" repeat
+ if source == otherSource and bldinf != otherBldinf:
+ # only interested in the number for now
+ repeats += 1
+
+ # different source but same destination => conflict
+ if source != otherSource:
+ conflict = (source, destination, bldinf, otherSource, otherBldinf)
+ tcilfnoc = (otherSource, destination, otherBldinf, source, bldinf)
+
+ if conflict in conflicts or tcilfnoc in conflicts:
+ # seen this conflict before
+ pass
+ else:
+ print "CONFLICT:", destination, \
+ "FROM", source, \
+ "IN", bldinf, \
+ "AND FROM", otherSource, \
+ "IN", otherBldinf
+ conflicts.append(conflict)
+ else:
+ sources[source] = [destination, bldinf]
+ destinations[destination] = [source, bldinf]
+
+# now check for destinations which were also sources => chains
+for destination in destinations:
+ if destination in sources:
+ (nextDestination, inf2) = sources[destination]
+ (source, inf1) = destinations[destination]
+ print "CHAIN:", source, \
+ "TO", destination, \
+ "IN", inf1, \
+ "THEN TO", nextDestination, \
+ "IN", inf2
+ chains += 1
+
+# print a summary
+print "Total exports = ", len(destinations.keys())
+print "Chained exports = ", chains
+print "Repeated exports = ", repeats
+print "Conflicting exports = ", len(conflicts)
+
+# return the error code
+if conflicts:
+ sys.exit(1)
+sys.exit(0)
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/bin/sbs_env.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/sbs_env.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,83 @@
+@REM
+@REM Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+@REM This component and the accompanying materials are made available
+@REM under the terms of the License "Eclipse Public License v1.0"
+@REM which accompanies this distribution, and is available
+@REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@REM
+@REM Initial Contributors:
+@REM Nokia Corporation - initial contribution.
+@REM
+@REM Contributors:
+@REM
+@REM Description:
+@REM
+
+@SET HOSTPLATFORM=win 32
+@SET HOSTPLATFORM_DIR=win32
+
+@REM Automatically find SBS_HOME if it is not set
+@IF NOT "%SBS_HOME%"=="" GOTO foundhome
+@SET RAPTORBINDIR=%~dp0
+@SET WD=%CD%
+@CD /d %RAPTORBINDIR%\..
+@SET SBS_HOME=%CD%
+@CD /d %WD%
+:foundhome
+
+@REM The python and PYTHONPATH used by Raptor are determined by, in order of precedence:
+@REM 1. the SBS_PYTHON and SBS_PYTHONPATH environment variables (if set)
+@REM 2. the python shipped locally with Raptor (if present)
+@REM 3. the python on the system PATH and the PYTHONPATH set in the system environment
+
+@SET __LOCAL_PYTHON__=%SBS_HOME%\win32\python264\python.exe
+@IF NOT "%SBS_PYTHON%"=="" GOTO sbspython
+@IF EXIST %__LOCAL_PYTHON__% GOTO localpython
+@SET __PYTHON__=python.exe
+@GOTO sbspythonpath
+
+:sbspython
+@SET __PYTHON__=%SBS_PYTHON%
+@GOTO sbspythonpath
+
+:localpython
+@SET __PYTHON__=%__LOCAL_PYTHON__%
+@SET SBS_PYTHON=%__PYTHON__%
+@SET PYTHONPATH=
+
+:sbspythonpath
+@IF NOT "%SBS_PYTHONPATH%"=="" SET PYTHONPATH=%SBS_PYTHONPATH%
+
+@REM Use the mingw set by the environment if possible
+@SET __MINGW__=%SBS_MINGW%
+@IF "%__MINGW__%"=="" SET __MINGW__=%SBS_HOME%\win32\mingw
+
+@REM Tell CYGWIN not to map unix security attributes to windows to
+@REM prevent raptor from potentially creating read-only files.
+@REM Assume Cygwin 1.5 CLI.
+@SET __MOUNTOPTIONS__=-u
+@SET __UMOUNTOPTIONS__=-u
+@SET CYGWIN=nontsec nosmbntsec
+
+@REM If SBS_CYGWIN17 is set, we are using Cygwin 1.7, so change the mount/umount
+@REM options to the 1.7 CLI and set SBS_CYGWIN to the value of SBS_CYGWIN17
+@IF NOT "%SBS_CYGWIN17%" == "" SET CYGWIN=nodosfilewarning && SET "SBS_CYGWIN=%SBS_CYGWIN17%" && SET __MOUNTOPTIONS__=-o noacl -o user && SET __UMOUNTOPTIONS__=
+
+@REM Use the Cygwin set by the environment (from SBS_CYGWIN or SBS_CYGWIN17) if possible
+@SET __CYGWIN__=%SBS_CYGWIN%
+@IF "%__CYGWIN__%"=="" SET __CYGWIN__=%SBS_HOME%\win32\cygwin
+
+@REM Add to the search path
+@REM (make sure that we don't get into trouble if there are Path and PATH variables)
+@SET PATH_TEMP=%__MINGW__%\bin;%__CYGWIN__%\bin;%SBS_HOME%\win32\bin;%PATH%
+@SET PATH=
+@SET PATH=%PATH_TEMP%
+@SET PATH_TEMP=
+
+@REM Make sure that /tmp is not set incorrectly for sbs.
+@umount %__UMOUNTOPTIONS__% /tmp >NUL 2>NUL
+@mount %__MOUNTOPTIONS__% %TEMP% /tmp >NUL 2>NUL
+@umount %__UMOUNTOPTIONS__% / >NUL 2>NUL
+@mount %__MOUNTOPTIONS__% %__CYGWIN__% / >NUL 2>NUL
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/bin/sbs_filter
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/sbs_filter Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,91 @@
+#!/bin/bash
+# Copyright (c) 2007-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:
+# raptor script
+# add mingw to the PATH if we are running Cygwin on Windows
+#
+
+# If SBS_HOME is not set in the environment then work it out
+# from the path to this batch file
+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
+ echo "Check your SBS_HOME environment variable." 1>&2
+fi
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/bin/sbs_filter.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/sbs_filter.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,24 @@
+@rem
+@rem Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+@SETLOCAL
+@CALL "%~dp0\sbs_env.bat"
+
+@REM Run with all the arguments.
+@bash %SBS_HOME%\bin\sbs_filter %*
+
+@ENDLOCAL
+@cmd /c exit /b %ERRORLEVEL%
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/bin/sbs_filter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/sbs_filter.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,88 @@
+#!/usr/bin/python
+
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+import os
+import sys
+import traceback
+
+# intercept the -h option
+if "-h" in sys.argv or "--help" in sys.argv:
+ print "usage:", sys.argv[0], "[sbs options]"
+ print " The log data is read from stdin."
+ print " Type 'sbs -h' for a list of sbs options."
+ sys.exit(0)
+
+# get the absolute path to this script
+script = os.path.abspath(sys.argv[0])
+
+# add the Raptor python directory to the PYTHONPATH
+sys.path.append(os.path.join(os.path.dirname(script), "..", "python"))
+
+# now we should be able to find the raptor modules
+import raptor
+import pluginbox
+
+# make sure that HOSTPLATFORM is set
+if not "HOSTPLATFORM" in os.environ:
+ sys.stderr.write("HOSTPLATFORM is not set ... try running gethost.sh\n")
+ sys.exit(1)
+
+if not "HOSTPLATFORM_DIR" in os.environ:
+ sys.stderr.write("HOSTPLATFORM_DIR is not set ... try running gethost.sh\n")
+ sys.exit(1)
+
+# construct a Raptor object from our command-line (less the name of this script)
+the_raptor = raptor.Raptor.CreateCommandlineBuild(sys.argv[1:])
+
+# from Raptor.OpenLog()
+try:
+ # Find all the raptor plugins and put them into a pluginbox.
+ if not the_raptor.systemPlugins.isAbsolute():
+ the_raptor.systemPlugins = the_raptor.home.Append(the_raptor.systemPlugins)
+
+ pbox = pluginbox.PluginBox(str(the_raptor.systemPlugins))
+ raptor_params = raptor.BuildStats(the_raptor)
+
+ # Open the requested plugins using the pluginbox
+ the_raptor.out.open(raptor_params, the_raptor.filterList, pbox)
+
+except Exception, e:
+ sys.stderr.write("error: problem while creating filters %s\n" % str(e))
+ traceback.print_exc()
+ sys.exit(1)
+
+# read stdin a line at a time and pass it to the Raptor object
+try:
+ line = " "
+ while line:
+ line = sys.stdin.readline()
+ the_raptor.out.write(line)
+except Exception,e:
+ sys.stderr.write("error: problem while filtering: %s\n" % str(e))
+ traceback.print_exc()
+ sys.exit(1)
+
+
+# Print the summary (this can't return errors)
+the_raptor.out.summary()
+
+if not the_raptor.out.close():
+ the_raptor.errorCode = 2
+
+# return the error code
+sys.exit(the_raptor.errorCode)
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/bin/timelines.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/timelines.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,224 @@
+#
+# Copyright (c) 2007-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:
+#
+# Raptor log visualisation program. Takes a raptor log as standard input
+# and displays timelines that represent build progress and
+# how much actual parallelism there is in the build.
+# This program requires the pygame and PyOpenGL modules.
+
+from OpenGL.GL import *
+from OpenGL.GLU import *
+import pygame
+from pygame.locals import *
+import time
+
+class Timeline(object):
+ """A bar representing a number of recipes which were executed in
+ time sequence. There is no guarantee about what host but in
+ theory they could have been executed on the same host."""
+
+ globalmax = 2.0
+
+ def __init__(self,ylevel):
+ self.maxtime = 0.0
+ self.recipes = []
+ self.ylevel = ylevel
+
+ def append(self, recipe):
+ "" add this recipe to this timeline if it happens after the latest recipe already in the timeline ""
+ if recipe.starttime + recipe.duration > self.maxtime:
+ self.maxtime = recipe.starttime + recipe.duration
+ if self.maxtime > Timeline.globalmax:
+ Timeline.globalmax = self.maxtime
+ else:
+ pass
+
+ self.recipes.append(recipe)
+
+ def draw(self):
+ glLoadIdentity()
+ self.xscale = 4.0 / Timeline.globalmax
+
+ glTranslatef(-2.0, -1.5, -6.0)
+ count = 0
+ for r in self.recipes:
+ if count % 2 == 0:
+ coloff=0.8
+ else:
+ coloff = 1.0
+
+ count += 1
+ r.draw(self.xscale, self.ylevel, coloff)
+
+class Recipe(object):
+ """Represents a task completed in a raptor build.
+ Drawn as a colour-coded bar with different
+ colours for the various recipe types."""
+ STAT_OK = 0
+ colours = {
+ 'compile': (0.5,0.5,1.0),
+ 'compile2object': (0.5,0.5,1.0),
+ 'win32compile2object': (0.5,0.5,1.0),
+ 'tools2linkexe': (0.5,1.0,0.5),
+ 'link': (0.5,1.0,0.5),
+ 'linkandpostlink': (0.5,1.0,0.5),
+ 'win32stageonelink': (0.5,1.0,0.5),
+ 'tools2lib': (0.5,1.0,1.0),
+ 'win32stagetwolink': (1.0,0.1,1.0),
+ 'postlink': (1.0,0.5,1.0)
+ }
+
+ def __init__(self, starttime, duration, name, status):
+ self.starttime = starttime
+ self.duration = duration
+ self.status = status
+ self.colour = (1.0, 1.0, 1.0)
+ if name in Recipe.colours:
+ self.colour = Recipe.colours[name]
+ else:
+ self.colour = (1.0,1.0,1.0)
+ self.name = name
+
+ def draw(self, scale, ylevel, coloff):
+ if self.status == Recipe.STAT_OK:
+ glColor4f(self.colour[0]*coloff, self.colour[1]*coloff, self.colour[2]*coloff,0.2)
+ else:
+ glColor4f(1.0*coloff, 0.6*coloff, 0.6*coloff,0.2)
+
+
+ x = self.starttime * scale
+ y = ylevel
+ x2 = x + self.duration * scale
+ y2 = ylevel + 0.2
+ glBegin(GL_QUADS)
+ glVertex3f(x, y, 0)
+ glVertex3f(x, y2, 0)
+ glVertex3f(x2, y2, 0)
+ glVertex3f(x2, y, 0)
+ glEnd()
+
+
+def resize((width, height)):
+ if height==0:
+ height=1
+ glViewport(0, 0, width, height)
+ glMatrixMode(GL_PROJECTION)
+ glLoadIdentity()
+ gluPerspective(45, 1.0*width/height, 0.1, 100.0)
+ glMatrixMode(GL_MODELVIEW)
+ glLoadIdentity()
+
+def init():
+ glShadeModel(GL_SMOOTH)
+ glClearColor(0.0, 0.0, 0.0, 0.0)
+ glClearDepth(1.0)
+ glEnable(GL_DEPTH_TEST)
+ glDepthFunc(GL_LEQUAL)
+ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
+
+
+import sys
+import re
+
+def main():
+
+ video_flags = OPENGL|DOUBLEBUF
+
+ pygame.init()
+ pygame.display.set_mode((800,600), video_flags)
+
+ resize((800,600))
+ init()
+
+ frames = 0
+ ticks = pygame.time.get_ticks()
+
+
+ lines = 4
+ timelines = []
+ ylevel = 0.0
+ for i in xrange(0,4):
+ ylevel += 0.6
+ timelines.append(Timeline(ylevel))
+
+ f = sys.stdin
+
+ recipe_re = re.compile(".* newdiff:
+ dest_timeline = t
+ olddiff = newdiff
+ tnum += 1
+
+ dest_timeline.append(Recipe(s, elapsed, rname, status))
+ event = pygame.event.poll()
+ if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
+ break
+
+ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
+ for t in timelines:
+ t.draw()
+ pygame.display.flip()
+
+ frames = frames+1
+
+ print "fps: %de" % ((frames*1000)/(pygame.time.get_ticks()-ticks))
+ event = pygame.event.wait()
+
+
+if __name__ == '__main__': main()
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/lib/flm/e32abiv2pdll.flm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/lib/flm/e32abiv2pdll.flm Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,61 @@
+# 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:
+# ARMv5 PDLL ABIv2 Function Like Makefile (FLM)
+# Build an e32 PDLL (Patchable constants DLL)
+#
+#
+
+ifeq ($(TARGETTYPE),pdll)
+include $(FLMHOME)/e32abiv2defaults.mk
+
+# What we need to build a DLL
+ifeq ($(NOEXPORTLIBRARY),)
+IMPORTLIBRARYREQUIRED:=1
+endif
+POSTLINKDEFFILE:=$(DEFFILE)
+SUPPORT_FREEZE:=1
+
+# Default Linker settings for this target type
+LINKER_ENTRYPOINT_LIBDEP:=$(STATIC_RUNTIME_DIR)/edll.lib
+LINKER_ENTRYPOINT_SETTING:=$(LINKER_ENTRY_OPTION)=_E32Dll $(LINKER_ENTRYPOINT_DECORATION)$(LINKER_SEPARATOR)$(call dblquote,$(STATIC_RUNTIME_DIR)/edll.lib$(LINKER_ENTRYPOINT_ADORNMENT))
+
+ifeq ("$(NEED_ENTRYPOINT_LIBRARY)","True")
+LINKER_ENTRYPOINT_SETTING:=$(LINKER_ENTRYPOINT_SETTING) $(LINKER_ENTRYPOINT_LIBDEP)
+endif
+
+LINKER_STUB_LIBRARY:=$(STATIC_RUNTIME_DIR)/edllstub.lib
+STATIC_RUNTIME_LIB:=$(USER_STATIC_RUNTIME_LIB)
+
+
+# Default Postlinker settings
+CANHAVEEXPORTS:=1
+POSTLINKTARGETTYPE:=DLL
+POSTLINKFILETYPE:=dll
+DOPOSTLINK:=1
+CANIGNORENONCALLABLE:=1
+
+# Use the general EABI FLM
+# We are appending to CDEFS but we don't want this to affect
+# other invocations so we are going to save it on a stack
+# and restore it afterwards
+$(call vsave,CDEFS)
+CDEFS:=$(CDEFS) __DLL__
+include $(FLMHOME)/e32abiv2.flm
+$(call vrestore)
+
+else
+$(error e32abiv2pdll.flm called with wrong TARGETTYPE (should be 'pdll' but is '$(TARGETTYPE)'))
+endif
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/lib/flm/run.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/lib/flm/run.mk Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,39 @@
+.PHONY:: ALL
+ALL:: # Default target
+
+HOSTPLATFORM:=win 32
+HOSTPLATFORM_DIR:=win32
+OSTYPE:=cygwin
+FLMHOME:=E:/wip2/lib/flm
+SHELL:=E:/wip2/win32/cygwin/bin/sh.exe
+
+
+USE_TALON:=
+
+
+
+include E:/wip2/lib/flm/globals.mk
+
+# dynamic default targets
+
+# call E:/wip2/lib/flm/config/default.flm
+SBS_SPECIFICATION:=Symbian.config.default
+SBS_CONFIGURATION:=armv5_urel
+
+EPOCROOT:=E:/wip2/test/epocroot
+ELF2E32:=E:/wip2/test/epocroot/epoc32/tools/elf2e32.exe
+WHATLOG:=
+include E:/wip2/lib/flm/config/default.flm
+
+
+component_paths:=$(SBS_HOME)/test/smoke_suite/test_resources/simple/bld.inf|c:/make_test/a.mk \
+$(SBS_HOME)/test/smoke_suite/test_resources/simple_dll/bld.inf|c:/make_test/b.mk \
+$(SBS_HOME)/test/smoke_suite/test_resources/simple/always_build_as_arm_bld.inf|c:/make_test/c.mk \
+$(SBS_HOME)/test/smoke_suite/test_resources/simple/debuggable_bld.inf|c:/make_test/d.mk \
+$(SBS_HOME)/test/smoke_suite/test_resources/simple_export/bld.inf|c:/make_test/e.mk
+
+configs:=armv5 armv7
+
+cli_options:=-d
+
+include build.flm
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/lib/flm/win32pdll.flm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/lib/flm/win32pdll.flm Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,34 @@
+# 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:
+# WINSCW PDLL Function Like Makefile (FLM)
+# Build an emulator PDLL
+#
+#
+
+ifeq ($(TARGETTYPE),pdll)
+
+BASE_TYPE:=dll
+CW_STATIC_RUNTIME:=1
+FIRST_STATLIB:=
+FIXED_EXPORT:=
+SUPPORTS_IMPORT_LIBRARY:=1
+SYSTEM_TARGET:=0
+UID2_DEFAULT:=
+
+# Use the general win32 FLM
+include $(FLMHOME)/win32.flm
+
+else
+$(error $winp32dll.flm called with wrong TARGETTYPE (should be 'dll' but is '$(TARGETTYPE)'))
+endif
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/license.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/license.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,8 @@
+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".
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/abiv1_implibs.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/abiv1_implibs.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,14 @@
+
+The ABIv1 toolchain was deprecated in Symbian OS 9.4 but the build system
+continued to generate both ABIv1 (.lib) import libraries and ABIv2 (.dso)
+import libraries for convenience during the transition to ABIv2.
+
+This change now turns off the generation of ABIv1 import libraries by
+default but makes support switchable on a kit-by-kit basis. To turn on
+ABIv1 import library generation, add the following setting to the
+root.changes variant in epoc32/sbs_config/os_properties.xml
+
+
+
+An example properties file is available in the examples/os_properties.xml
+file distributed within the Raptor installation.
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/cross_compiling_tools.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/cross_compiling_tools.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,7 @@
+
+To build tools for Windows and Linux, on Linux, use
+
+sbs -c tools2.win32 -c tools2
+
+You will also need the mingw32 package, for the cross-compiler.
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/cygwin_1_7.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/cygwin_1_7.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,17 @@
+
+Starting with Raptor 2.13.0, it is also possible to use Cygwin 1.7 instead of
+Cygwin 1.5. Some work was necessary to add support for Cygwin 1.7 due to a
+change in command line interface in some of the Cygwin tools.
+
+Due to this change in the command line interface, we have had to introduce the
+SBS_CYGWIN17 environment variable whose value should be the root directory of
+the Cygwin 1.7 installation. We hope this is temporary and that we can remove
+this at some point. The following bullet points indicate the order of
+precedence of the SBS_CYGWIN and SBS_CYGWIN17 environment variables.
+
+* SBS_CYGWIN set, SBS_CYGWIN17 unset: assume Cygwin 1.5 is being used
+* SBS_CYGWIN set, SBS_CYGWIN17 set: assume Cygwin 1.7 is being used
+* SBS_CYGWIN unset, SBS_CYGWIN17 set: assume Cygwin 1.7 is being used
+
+You will get errors if you set SBS_CYGWIN to be the root of a Cygwin 1.7
+installation directory and if SBS_CYGWIN17 is not defined correctly.
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/delete_on_failed_compile.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/delete_on_failed_compile.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,7 @@
+In certain circumstances, such as failure to obtain licenses, RVCT 2.2's armcc
+program still produces object files whose contents is junk. This causes build
+problems later as from Make's point of view those object files are "up to
+date" so the build tries to link them. Of course, these attempts at linking
+fail and the build is broken.
+
+This is a work around for that RVCT 2.2 problem.
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/epocnestedexceptions.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/epocnestedexceptions.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,10 @@
+
+Qt needs to be able to have more than one active exception object, even when
+OOM (out-of-memory).
+
+A detailed overview of the solution can be found at
+http://wikis.in.nokia.com/Toolchain/QtExceptionHandling
+
+In short, we add a new MMP flag keyword - EPOCNESTEDEXCEPTIONS. When this
+keyword is specified, a different static run-time library is used.
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/featurevariantsafe.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/featurevariantsafe.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,12 @@
+
+By default, .mmp files that include FEATUREVARIANT will generate binaries for
+both "normal", non-binary variant, build configurations and binary variant
+build configurations.
+
+In order to ensure that only invariant binaries are created for invariant
+build configurations, and variant binaries for variant build configurations,
+the optional setting FEATUREVARIANTSAFE can be used. FEATUREVARIANTSAFE can be
+set via an os_properties.xml file and, when set, variant binaries will no
+longer be created for invariant build configurations.
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/localresourcecopying.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/localresourcecopying.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,24 @@
+Resources were copied using make rules. This is sensible in local
+machine builds but non-optimal in cluster builds. It is entirely IO
+bound so that instead of benefitting from running on the cluster it
+simply creates more IO as files need to be transferred over the network,
+possibly multiple times.
+
+This change introduces the tag to the log which the frontend
+reads in a new "default" filter called FilterCopyFile. Thus the python
+frontend does the copying rather than the cluster build engine.
+
+This happens at the end of each invocation of the build engine or "stage".
+Since resources are built in their own stage, the copying is completed
+before build tasks in the other stages require them. The copied files
+are not needed in the resource stage itself.
+
+The filter uses tags to determine when a stage
+is finished and this requires that the timing feature be switched on
+permanently.
+
+The format of the tag is:
+dest_filename1 dest_filename2 ...
+
+Spaces may not be used in filenames. The sequence "%20" may be used
+instead.
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/parametric_log_filters.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/parametric_log_filters.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,31 @@
+
+It is now possible to pass parameters from the command line into log filters.
+This works in the same way for both sbs and sbs_filter commands.
+
+For example:
+
+sbs --filters=Foo[param1,param2,param3]
+
+sbs_filter --filters=Bar[value] < build.log
+
+
+Multiple filters with parameters can be specified if needed,
+
+sbs --filters=Foo[param1,param2,param3],Bar[value]
+
+
+In the 2.13.0 release there are two filters which take parameters:
+
+1. sbs_filter --filters=FilterComp[wizard/group] < log
+
+Here the parameter is (part of) a bld.inf path and the filter only prints
+parts of the log which are attributable to the matching component. In the
+example above, the log elements from any bld.inf which has "wizard/group"
+as part of its path will be printed: normally, passing the full path name
+will guarantee that only one component matches.
+
+2. sbs_filter --filters=FilterTagCounter[info,recipe] < log
+
+Here the parameters are a list of the element names to count. This is a
+simple analysis filter that shows you how many instances of XMl elements
+are in a log and how many characters of body text they have.
\ No newline at end of file
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/query_cli.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/query_cli.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,18 @@
+
+A new --query command-line option allows other tools to easily read raptor's
+configuration data without having to understand exactly how raptor config
+files work.
+
+For example, all the valid build aliases which can be used to build with
+the -c option can be obtained using:
+
+sbs --query=aliases
+
+All the known product variants can be obtained using:
+
+sbs --query=products
+
+And the details of a particular configuration can be found using:
+
+sbs --query=config[armv5_urel.n8]
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/system_definition_v3.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/system_definition_v3.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,8 @@
+
+System Definition version 3 Support
+
+This is only prototype support for testing the reading of single
+"package" files. The implementation was submitted by Bob Rosenberg
+and has been regression tested by the Raptor team. Testing on real
+sysdef files is being carried out by the Symbian Foundation.
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/notes/tcomsupport.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/notes/tcomsupport.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,42 @@
+New Trace Compiler
+-------------------
+
+Raptor supports an updated version of the Trace Compiler which has
+an improved command-line interface that allows Raptor to specify the
+directory in which trace data should be written. This allows MMPs to
+implement a new convention for where trace files are stored.
+
+The new convention prevents clashes where building the same
+source file for different MMPs would previously have resulted in two
+build tasks trying to create the same trace file (header/dictionary).
+This caused build slowdowns and also made the trace data inaccurate.
+
+The standard for this directory is that the last two elements of the
+path should be
+
+ traces/traces__
+
+e.g.
+
+ traces/traces_euser_dll
+
+The new trace compiler also creates "autogen" headers in a new location
+under epoc32/include/platform rather than epoc32/include/internal.
+
+Trace Headers Directory can now also be in SYSTEMINCLUDEs
+----------------------------------------------------------
+
+Some teams were having trouble getting qmake to generate MMPs with
+USERINCLUDEs set. So they were specifying the trace header directory in
+their SYTEMINCLUDEs. This change causes Raptor to look for the traces
+directory in bot SYSTEMINCLUDES and USERINCLUDES.
+
+
+Create Trace Directories During Makefile Parse
+-----------------------------------------------
+
+Some build engines consider it a "clash" when two jobs attempt to make the
+same directory. This change causes some important trace output directories
+to be created during makefile parsing which removes the (small) possibility
+that they would clash during the build part.
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_broken.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_broken.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,48 @@
+#
+# 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:
+# Example of a Filter class using the SAX parser base class
+#
+
+import filter_interface
+
+class FilterBroken(filter_interface.FilterSAX):
+
+ def startDocument(self):
+ self.first = True
+
+ def startElement(self, name, attributes):
+ pass
+
+ def characters(self, char):
+ pass
+
+ def endElement(self, name):
+ pass
+
+ def endDocument(self):
+ pass
+
+ def error(self, exception):
+ pass
+
+ def fatalError(self, exception):
+ if self.first:
+ print "fatal error:", str(exception)
+ self.first = False
+
+ def warning(self, exception):
+ pass
+
+# the end
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_bz2log.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_bz2log.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,88 @@
+# 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:
+# Compress the full Raptor log file using the BZip2 algorithm, maximum compression.
+#
+#
+
+import os
+import sys
+import raptor
+import filter_interface
+import bz2
+
+class StringListCompressor(object):
+ def __init__(self, complevel=5, filename="file.log.bz2"):
+ self.compressor = bz2.BZ2Compressor(complevel)
+ self.stringlist = []
+ self.outputopenedok = False
+ self.filename = filename
+ try:
+ self.fh = open(self.filename, "wb")
+ self.outputopenedok = True
+ except:
+ self.outputopenedok = False
+
+ def write(self, data):
+ if self.outputopenedok:
+ compresseddata = self.compressor.compress(data)
+ self.fh.write(compresseddata)
+
+ def __del__(self):
+ if self.outputopenedok:
+ compresseddata = self.compressor.flush()
+ self.fh.write(compresseddata)
+ self.fh.close()
+
+class Bz2log(filter_interface.Filter):
+ def __init__(self):
+ self.__inRecipe = False
+ self.compressor = None
+
+ def open(self, raptor_instance):
+ """Open a log file for the various I/O methods to write to."""
+
+ if raptor_instance.logFileName == None:
+ self.out = sys.stdout # Default to stdout if no log file is given
+ else:
+ logname = str(raptor_instance.logFileName.path.replace("%TIME", raptor_instance.timestring))
+
+ # Ensure that filename has the right extension; append ".bz2" if required
+ if not logname.lower().endswith(".bz2"):
+ logname += ".bz2"
+
+ try:
+ dirname = str(raptor_instance.logFileName.Dir())
+ if dirname and not os.path.isdir(dirname):
+ os.makedirs(dirname)
+ except:
+ self.formatError("cannot create directory %s", dirname)
+ return False
+
+ # Use highest compression level 9 which corresponds to a 900KB dictionary
+ self.compressor = StringListCompressor(9, logname)
+ if not self.compressor.outputopenedok:
+ self.out = None
+ self.formatError("failed to initialise compression routines." )
+ return False
+ return True
+
+ def write(self, data):
+ """Write data compressed log"""
+ if self.compressor:
+ self.compressor.write(data)
+ return True
+
+ def close(self):
+ """Close the log file"""
+ return True
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_check.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_check.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+#
+# 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:
+# Filter class for doing --what and --check operations
+#
+
+import os
+import sys
+import re
+import filter_interface
+import filter_what
+
+class FilterCheck(filter_what.FilterWhat):
+
+ def __init__(self):
+ super(filter_what.FilterWhat,self).__init__()
+ self.check = True
+ self.path_prefix_to_strip = None
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_checkcomp.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_checkcomp.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,70 @@
+#
+# 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:
+# Filter class for doing a Check operation but also prints component information.
+#
+
+import os
+import sys
+import re
+import filter_interface
+import filter_what
+
+class FilterCheckComp(filter_what.FilterWhat):
+
+ def __init__(self):
+ super(FilterCheckComp, self).__init__()
+ self.check = True
+
+ def write(self, text):
+ "process some log text"
+ ok = True
+
+ for line in text.splitlines():
+ ok = filter_what.FilterWhat.write(self, line)
+ if not ok:
+ break
+ self.ok = ok
+ return self.ok
+
+ def start_bldinf(self, bldinf):
+ dir = None
+ if "win" in self.buildparameters.platform:
+ dir = os.path.dirname(bldinf.replace("/","\\"))
+ dir = os.path.splitdrive(dir)[1]
+ else:
+ dir = os.path.dirname(bldinf)
+
+ self.outfile.write("=== %s == %s\n" % (dir, dir))
+ self.outfile.write("=== check == %s\n" % (dir))
+ self.outfile.write("-- sbs_filter --filters=FilterCheckComp\n++ Started at Thu Feb 11 10:05:19 2010\nChdir %s\n" % dir)
+
+ def end_bldinf(self):
+ self.outfile.write("++ Finished at Thu Feb 11 10:05:20 2010\n")
+
+ def close(self):
+ self.outfile.write("++ Finished at Thu Feb 11 10:05:20 2010\n")
+ self.outfile.write("=== check finished Thu Feb 11 10:05:20 2010\n")
+
+ def open(self, build_parameters):
+ t = filter_what.FilterWhat.open(self, build_parameters)
+ if t:
+ self.outfile.write("\n===-------------------------------------------------\n")
+ self.outfile.write("=== check\n")
+ self.outfile.write("===-------------------------------------------------\n")
+ self.outfile.write("=== check started Thu Feb 11 10:02:21 2010\n")
+
+ self.path_prefix_to_strip = os.path.abspath(build_parameters.epocroot)
+ self.path_prefix_to_add_on = build_parameters.incoming_epocroot
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_component.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_component.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,96 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Filter class to print log entries for a selected component
+#
+
+import filter_interface
+import sys
+
+class FilterComp(filter_interface.FilterSAX):
+
+ def __init__(self, params = []):
+ """parameters to this filter are the path of the bld.inf and some flags.
+
+ The bld.inf path can be a substring of the path to match. For example,
+ "email" will match an element with bldinf="y:/src/email/group/bld.inf".
+
+ No flags are supported yet; this is for future expansion.
+
+ If no parameters are passed then nothing is printed."""
+ self.bldinf = ""
+ self.flags = ""
+
+ if len(params) > 0:
+ self.bldinf = params[0]
+
+ if len(params) > 1:
+ self.flags = params[1]
+
+ super(FilterComp, self).__init__()
+
+ def startDocument(self):
+ # mark when we are inside an element with bldinf="the selected one"
+ self.inside = False
+ # and count nested elements so we can toggle off at the end.
+ self.nesting = 0
+
+ def printElementStart(self, name, attributes):
+ sys.stdout.write("<" + name)
+ for att,val in attributes.items():
+ sys.stdout.write(" " + att + "='" + val + "'")
+ sys.stdout.write(">")
+
+ def startElement(self, name, attributes):
+ if self.inside:
+ self.nesting += 1
+ self.printElementStart(name, attributes)
+ return
+
+ if self.bldinf:
+ try:
+ if self.bldinf in attributes["bldinf"]:
+ self.inside = True
+ self.nesting = 1
+ self.printElementStart(name, attributes)
+ except KeyError:
+ pass
+
+ def characters(self, char):
+ if self.inside:
+ sys.stdout.write(char)
+
+ def endElement(self, name):
+ if self.inside:
+ sys.stdout.write("" + name + ">")
+
+ self.nesting -= 1
+
+ if self.nesting == 0:
+ self.inside = False
+ print
+
+ def endDocument(self):
+ pass
+
+ def error(self, exception):
+ print filter_interface.Filter.formatError("FilterComp:" + str(exception))
+
+ def fatalError(self, exception):
+ print filter_interface.Filter.formatError("FilterComp:" + str(exception))
+
+ def warning(self, exception):
+ print filter_interface.Filter.formatWarning("FilterComp:" + str(exception))
+
+# the end
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_copyfile.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_copyfile.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,92 @@
+#
+# Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Filter class for copying files in serial in python. This
+# is important in cluster builds where file copying is
+# very inefficient.
+# The one-to-many tag is searched for and copy
+# instructions are built up in a hash table.
+# destfilename1 destfilename2 . . . .destfilenameN
+# destinations must be full filenames not directories.
+#
+# This filter monitors build progress
+# via the tags and flushes copies as build
+# stages end (e.g. after resource so resources are ready for the next stage)
+#
+
+import os
+import sys
+import tempfile
+import filter_interface
+import shutil
+import generic_path
+import stat
+from raptor_utilities import copyfile
+
+class FilterCopyFile(filter_interface.Filter):
+
+ def open(self, params):
+ "initialise"
+
+ self.ok = True
+
+ self.files = {}
+
+ return self.ok
+
+
+ def write(self, text):
+ "process some log text"
+
+ for line in text.splitlines():
+ if line.startswith("",source_start)+1:line.find(" ")].split(" ")
+
+ if source in self.files:
+ self.files[source].update(destinations)
+ else:
+ self.files[source] = set(destinations)
+ elif line.startswith("%s" % str(e)
+ self.files = {}
+
+
+
+ def close(self):
+ "nop"
+
+
+ return self.ok
+
+# the end
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_tagcount.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_tagcount.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,82 @@
+#
+# Copyright (c) 2008-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:
+# Example of a Filter class using the SAX parser base class
+#
+
+import filter_interface
+
+class FilterTagCounter(filter_interface.FilterSAX):
+
+ def __init__(self, params = []):
+ """parameters to this filter are the names of tags to print.
+
+ If no parameters are passed then all tags are reported."""
+ self.interesting = params
+ super(FilterTagCounter, self).__init__()
+
+ def startDocument(self):
+ # for each element name count the number of occurences
+ # and the amount of body text contained.
+ self.names = []
+ self.count = {}
+ self.errors = 0
+ self.fatals = 0
+ self.warns = 0
+
+ def startElement(self, name, attributes):
+ if name == "buildlog":
+ # print out the attributes of the "top" element
+ print "version:"
+ for a,v in attributes.items():
+ print a, "=", v
+
+ # push name onto the stack of names and increment the count
+ self.names.append(name)
+ if name in self.count:
+ self.count[name][0] += 1
+ else:
+ self.count[name] = [1, 0] # occurs, characters
+
+ def characters(self, char):
+ # these are for the current element
+ current = self.names[-1]
+ self.count[current][1] += len(char)
+
+ def endElement(self, name):
+ # pop the name off the stack
+ self.names.pop()
+
+ def endDocument(self):
+ # report
+ print "\nsummary:"
+ for name,nos in sorted(self.count.items()):
+ if name in self.interesting or len(self.interesting) == 0:
+ print name, nos[0], nos[1]
+
+ print "\nparsing:"
+ print "errors =", self.errors
+ print "fatals =", self.fatals
+ print "warnings =", self.warns
+
+ def error(self, exception):
+ self.errors += 1
+
+ def fatalError(self, exception):
+ self.fatals += 1
+
+ def warning(self, exception):
+ self.warns += 1
+
+# the end
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_timing.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_timing.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,121 @@
+#
+# 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:
+# Base Class for defining filter classes
+# All filter classes that get defined should derive from this base class
+#
+
+import errno
+import filter_interface
+import os
+import raptor
+import raptor_timing
+import sys
+
+class FilterTiming(filter_interface.Filter):
+ """
+ Writes a logfile containing the timings for each Raptor process
+ """
+
+ def open(self, raptor_instance):
+ """
+ Open a log file with the same name as the Raptor log file, with
+ '.timings' appended. This will contain only 'progress'
+ timing tags from the Raptor output
+ Parameters:
+ raptor_instance - Raptor
+ Instance of Raptor. FilterList usually passes in a cut-down
+ version of Raptor containing only a few attributes
+ """
+ self.raptor = raptor_instance
+ self.logFileName = self.raptor.logFileName
+ # insert the time into the log file name
+ if self.logFileName:
+ self.path = (self.logFileName.path.replace("%TIME",
+ self.raptor.timestring) + ".timings")
+
+ try:
+ dirname = str(self.raptor.logFileName.Dir())
+ if dirname and not os.path.isdir(dirname):
+ os.makedirs(dirname)
+ except os.error, e:
+ if e.errno != errno.EEXIST:
+ sys.stderr.write("%s : error: cannot create directory " +
+ "%s\n" % (raptor.name, dirname))
+ return False
+ try:
+ self.out = open(str(self.path), "w")
+ except:
+ self.out = None
+ sys.stderr.write("%s : error: cannot write log %s\n" %\
+ (raptor.name, self.path))
+ return False
+ self.start_times = {}
+ self.all_durations = []
+ self.namespace_written = False
+ self.open_written = False
+ return True
+
+
+ def write(self, text):
+ """
+ Write out any tags with a 'progress_' tagName
+ """
+ if "\n")
+
+
+ def close(self):
+ """
+ Close the logfile
+ """
+ try:
+ self.out.close
+ return True
+ except:
+ self.out = None
+ return False
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/plugins/filter_whatcomp.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/plugins/filter_whatcomp.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,56 @@
+#
+# 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:
+# Filter class for doing --what and --check operations
+#
+
+import os
+import sys
+import re
+import filter_interface
+import filter_what
+
+class FilterWhatComp(filter_what.FilterWhat):
+
+ def __init__(self):
+ super(FilterWhatComp, self).__init__()
+
+ def write(self, text):
+ "process some log text"
+ ok = True
+
+ for line in text.splitlines():
+ ok = filter_what.FilterWhat.write(self, line)
+ if not ok:
+ break
+
+ self.ok = ok
+ return self.ok
+
+ def start_bldinf(self,bldinf):
+ if "win" in self.buildparameters.platform:
+ dir = os.path.dirname(bldinf.replace("/","\\"))
+ else:
+ dir = os.path.dirname(bldinf)
+
+ self.outfile.write("-- abld -w \nChdir %s \n" % dir)
+
+ def end_bldinf(self):
+ self.outfile.write("++ Finished\n")
+
+ def open(self, build_parameters):
+ t = filter_what.FilterWhat.open(self, build_parameters)
+ self.path_prefix_to_strip = os.path.abspath(build_parameters.epocroot)
+ self.path_prefix_to_add_on = build_parameters.incoming_epocroot
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/raptor_api.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/raptor_api.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,221 @@
+#
+# 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:
+#
+# raptor_api module
+#
+# Python API for Raptor. External code should interact with Raptor via this
+# module only, as it is the only programatic interface considered public. The
+# command line --query option is also implemented using this module.
+
+# constants
+ALL = 1
+
+# objects
+
+class Reply(object):
+ """object to return values from API calls.
+ """
+ def __init__(self, text=""):
+ self.text = text
+
+ def __str__(self):
+ name = type(self).__name__.lower()
+
+ string = "<" + name
+ children = []
+ longend = False
+
+ for attribute,value in self.__dict__.items():
+ if attribute != "text":
+ if isinstance(value, Reply):
+ children.append(value)
+ else:
+ string += " %s='%s'" % (attribute, value)
+
+ if children or self.text:
+ string += ">"
+ longend = True
+
+ if self.text:
+ string += self.text
+
+ if children:
+ string += "\n"
+
+ for c in children:
+ string += str(c)
+
+ if longend:
+ string += "%s>\n" % name
+ else:
+ string += "/>\n"
+
+ return string
+
+class Alias(Reply):
+ def __init__(self, name, meaning):
+ super(Alias,self).__init__()
+ self.name = name
+ self.meaning = meaning
+
+class Config(Reply):
+ def __init__(self, fullname, outputpath):
+ super(Config,self).__init__()
+ self.fullname = fullname
+ self.outputpath = outputpath
+
+class Product(Reply):
+ def __init__(self, name):
+ super(Product,self).__init__()
+ self.name = name
+
+import generic_path
+import raptor
+import raptor_data
+import re
+
+class Context(object):
+ """object to contain state information for API calls.
+
+ For example,
+
+ api = raptor_api.Context()
+ val = api.getaliases("X")
+ """
+ def __init__(self, initialiser=None):
+ # this object has a private Raptor object that can either be
+ # passed in or created internally.
+
+ if initialiser == None:
+ self.__raptor = raptor.Raptor()
+ else:
+ self.__raptor = initialiser
+
+ def stringquery(self, query):
+ """turn a string into an API call and execute it.
+
+ This is a convenience method for "lazy" callers.
+
+ The return value is also converted into a well-formed XML string.
+ """
+
+ if query == "aliases":
+ aliases = self.getaliases()
+ return "".join(map(str, aliases)).strip()
+
+ elif query == "products":
+ variants = self.getproducts()
+ return "".join(map(str, variants)).strip()
+
+ elif query.startswith("config"):
+ match = re.match("config\[(.*)\]", query)
+ if match:
+ config = self.getconfig(match.group(1))
+ return str(config).strip()
+ else:
+ raise BadQuery("syntax error")
+
+ raise BadQuery("unknown query")
+
+ def getaliases(self, type=""):
+ """extract all aliases of a given type.
+
+ the default type is "".
+ to get all aliases pass type=ALL
+ """
+ aliases = []
+
+ for a in self.__raptor.cache.aliases.values():
+ if type == ALL or a.type == type:
+ # copy the members we want to expose
+ aliases.append( Alias(a.name, a.meaning) )
+
+ return aliases
+
+ def getconfig(self, name):
+ """extract the values for a given configuration.
+
+ 'name' should be an alias or variant followed optionally by a
+ dot-separated list of variants. For example "armv5_urel" or
+ "armv5_urel.savespace.vasco".
+ """
+ names = name.split(".")
+ if names[0] in self.__raptor.cache.aliases:
+ x = self.__raptor.cache.FindNamedAlias(names[0])
+
+ if len(names) > 1:
+ fullname = x.meaning + "." + ".".join(names[1:])
+ else:
+ fullname = x.meaning
+
+ elif names[0] in self.__raptor.cache.variants:
+ fullname = name
+
+ else:
+ raise BadQuery("'%s' is not an alias or a variant" % names[0])
+
+ # create an evaluator for the named configuration
+ tmp = raptor_data.Alias("tmp")
+ tmp.SetProperty("meaning", fullname)
+
+ units = tmp.GenerateBuildUnits(self.__raptor.cache)
+ evaluator = self.__raptor.GetEvaluator(None, units[0])
+
+ # get the outputpath
+ # this is messy as some configs construct the path inside the FLM
+ # rather than talking it from the XML: usually because of some
+ # conditional logic... but maybe some refactoring could avoid that.
+ releasepath = evaluator.Get("RELEASEPATH")
+ if not releasepath:
+ raise BadQuery("could not get RELEASEPATH for config '%s'" % name)
+
+ variantplatform = evaluator.Get("VARIANTPLATFORM")
+ varianttype = evaluator.Get("VARIANTTYPE")
+ featurevariantname = evaluator.Get("FEATUREVARIANTNAME")
+
+ platform = evaluator.Get("TRADITIONAL_PLATFORM")
+
+ if platform == "TOOLS2":
+ outputpath = releasepath
+ else:
+ if not variantplatform:
+ raise BadQuery("could not get VARIANTPLATFORM for config '%s'" % name)
+
+ if featurevariantname:
+ variantplatform += featurevariantname
+
+ if not varianttype:
+ raise BadQuery("could not get VARIANTTYPE for config '%s'" % name)
+
+ outputpath = str(generic_path.Join(releasepath, variantplatform, varianttype))
+
+ return Config(fullname, outputpath)
+
+ def getproducts(self):
+ """extract all product variants."""
+
+ variants = []
+
+ for v in self.__raptor.cache.variants.values():
+ if v.type == "product":
+ # copy the members we want to expose
+ variants.append( Product(v.name) )
+
+ return variants
+
+class BadQuery(Exception):
+ pass
+
+# end of the raptor_api module
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/raptor_buildplatform.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/raptor_buildplatform.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,158 @@
+#
+# 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:
+# Classes, methods and regex available for use in log filters
+#
+
+# This particular file is preliminary and under development.
+
+class BuildPlatform(object):
+ """ A build platform is a set of configurations which share
+ the same metadata. In other words, a set of configurations
+ for which the bld.inf and MMP files pre-process to exactly
+ the same text."""
+
+ def __init__(self, build):
+ evaluator = build.GetEvaluator(None, buildConfig)
+ self.selfform= evaluator.CheckedGet("TRADITIONAL_PLATFORM")
+ epocroot = evaluator.CheckedGet("EPOCROOT")
+ self.epocroot = generic_path.Path(epocroot)
+
+ sbs_build_dir = evaluator.CheckedGet("SBS_BUILD_DIR")
+ self.sbs_build_dir = generic_path.Path(sbs_build_dir)
+ flm_export_dir = evaluator.CheckedGet("FLM_EXPORT_DIR")
+ self.flm_export_dir = generic_path.Path(flm_export_dir)
+ self.cacheid = flm_export_dir
+ if raptor_utilities.getOSPlatform().startswith("win"):
+ self.platmacros = evaluator.CheckedGet( "PLATMACROS.WINDOWS")
+ else:
+ self.platmacros = evaluator.CheckedGet( "PLATMACROS.LINUX")
+
+
+ # is this a feature variant config or an ordinary variant
+ fv = evaluator.Get("FEATUREVARIANTNAME")
+ if fv:
+ variantHdr = evaluator.CheckedGet("VARIANT_HRH")
+ variantHRH = generic_path.Path(variantHdr)
+ self.isfeaturevariant = True
+ else:
+ variantCfg = evaluator.CheckedGet("VARIANT_CFG")
+ variantCfg = generic_path.Path(variantCfg)
+ if not variantCfg in variantCfgs:
+ # get VARIANT_HRH from the variant.cfg file
+ varCfg = getVariantCfgDetail(self.epocroot, variantCfg)
+ variantCfgs[variantCfg] = varCfg['VARIANT_HRH']
+ # we expect to always build ABIv2
+ if not 'ENABLE_ABIV2_MODE' in varCfg:
+ build.Warn("missing flag ENABLE_ABIV2_MODE in %s file. ABIV1 builds are not supported.",
+ str(variantCfg))
+ variantHRH = variantCfgs[variantCfg]
+ self.isfeaturevariant = False
+
+ self.variant_hrh = variantHRH
+ build.Info("'%s' uses variant hrh file '%s'", buildConfig.name, variantHRH)
+ self.systeminclude = evaluator.CheckedGet("SYSTEMINCLUDE")
+
+
+ # find all the interface names we need
+ ifaceTypes = evaluator.CheckedGet("INTERFACE_TYPES")
+ interfaces = ifaceTypes.split()
+
+ for iface in interfaces:
+ detail[iface] = evaluator.CheckedGet("INTERFACE." + iface)
+
+ # not test code unless positively specified
+ self.testcode = evaluator.CheckedGet("TESTCODE", "")
+
+ # make a key that identifies this platform uniquely
+ # - used to tell us whether we have done the pre-processing
+ # we need already using another platform with compatible values.
+
+ key = str(self.variant_hrh) \
+ + str(self.epocroot) \
+ + self.systeminclude \
+ + self.platform
+
+ # Keep a short version of the key for use in filenames.
+ uniq = hashlib.md5()
+ uniq.update(key)
+
+ plat.key = key
+ plat.key_md5 = "p_" + uniq.hexdigest()
+ del uniq
+
+ def __hash__(self):
+ return hash(self.platform) + hash(self.epocroot) + hash(self.variant_hrh) + hash(self.systeminclude) + hash(self.testcode)
+
+ def __cmp__(self,other):
+ return cmp(self.hash(), other.hash())
+
+
+ @classmethod
+ def fromConfigs(configsToBuild, build):
+ """ Group the list of configurations into "build platforms"."""
+ platforms = Set()
+
+ for buildConfig in configsToBuild:
+ # get everything we need to know about the configuration
+ plat = BuildPlatform(build = build)
+
+ # compare this configuration to the ones we have already seen
+
+ # Is this an unseen export platform?
+ # concatenate all the values we care about in a fixed order
+ # and use that as a signature for the exports.
+ items = ['EPOCROOT', 'VARIANT_HRH', 'SYSTEMINCLUDE', 'TESTCODE', 'export']
+ export = ""
+ for i in items:
+ if i in detail:
+ export += i + str(detail[i])
+
+ if export in exports:
+ # add this configuration to an existing export platform
+ index = exports[export]
+ self.ExportPlatforms[index]['configs'].append(buildConfig)
+ else:
+ # create a new export platform with this configuration
+ exports[export] = len(self.ExportPlatforms)
+ exp = copy.copy(detail)
+ exp['PLATFORM'] = 'EXPORT'
+ exp['configs'] = [buildConfig]
+ self.ExportPlatforms.append(exp)
+
+ # Is this an unseen build platform?
+ # concatenate all the values we care about in a fixed order
+ # and use that as a signature for the platform.
+ items = ['PLATFORM', 'EPOCROOT', 'VARIANT_HRH', 'SYSTEMINCLUDE', 'TESTCODE']
+ if raptor_utilities.getOSPlatform().startswith("win"):
+ items.append('PLATMACROS.WINDOWS')
+ else:
+ items.append('PLATMACROS.LINUX')
+
+ items.extend(interfaces)
+ platform = ""
+ for i in items:
+ if i in detail:
+ platform += i + str(detail[i])
+
+ if platform in platforms:
+ # add this configuration to an existing build platform
+ index = platforms[platform]
+ BuildPlatforms[index]['configs'].append(buildConfig)
+ else:
+ # create a new build platform with this configuration
+ platforms[platform] = len(self.BuildPlatforms)
+ plat.configs = [buildConfig]
+ BuildPlatforms.append(detail)
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/python/raptor_timing.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/python/raptor_timing.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,168 @@
+#
+# 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:
+# timings API
+# This API can be used to start and stop timings in order to measure performance
+#
+import time
+
+class Timing(object):
+
+ @classmethod
+ def discovery_string(cls, object_type, count):
+ """
+ Returns a tag that can be used to show what is about to be
+ "processed"
+ Parameters:
+ object_type - string
+ Type of object that is about to be "processed" in this task
+ count - int
+ Number of objects of input "object_type" are about to be
+ "processed"
+ Returns:
+ string
+ XML tag in the format that can be printed directly to a
+ Raptor log
+ """
+ return " \n"
+
+
+ @classmethod
+ def start_string(cls, object_type, task, key):
+ """
+ Returns a tag that can be used to show what is being "processed"
+ and the time it started
+ Parameters:
+ object_type - string
+ Type of object that is being "processed" in this task
+ task - string
+ What is being done with the object being "processed"
+ key - string
+ Unique identifier for the object being "processed"
+ Returns:
+ string
+ XML tag in the format that can be printed directly to a
+ Raptor log
+ """
+ return " \n"
+
+
+ @classmethod
+ def end_string(cls, object_type, task, key):
+ """
+ Returns a tag that can be used to show what was being "processed"
+ and the time it finished
+ Parameters:
+ object_type - string
+ Type of object that was being "processed" in this task
+ task - string
+ What was being done with the object being "processed"
+ key - string
+ Unique identifier for the object that was "processed"
+ Returns:
+ string
+ XML tag in the format that can be printed directly to a
+ Raptor log
+ """
+ return " \n"
+
+
+ @classmethod
+ def custom_string(cls, tag = "duration", object_type = "all", task = "all",
+ key = "all", time = 0.0):
+ """
+ Returns a custom tag in the 'progress' tag format
+
+ Parameters:
+ tag - string
+ String to be used for the tag
+ object_type - string
+ Type of object that was being "processed" in this task
+ task - string
+ What was being done with the object being "processed"
+ key - string
+ Unique identifier for the object that was "processed"
+ time - float
+ The time to be included in the tag
+ Returns:
+ string
+ XML tag in the format that can be printed directly to a
+ Raptor log
+ """
+ time_string = "time"
+ if tag == "duration":
+ time_string = "duration"
+ return " \n"
+
+
+ @classmethod
+ def extract_values(cls, source):
+ """
+ Takes, as input, a single tag of the format returned by one of the
+ above progress functions. Will extract the attributes and
+ return them as a dictionary. Returns an empty dictionary {}
+ if the tag name is not recognised or there is a parse error
+ Parameters:
+ source - string
+ The input string from which extracted attributes are
+ required
+ Returns:
+ dictionary
+ Dictionary containing the attributes extracted from the
+ input string. Returns an empty dictionary {} if the
+ tag name is not recognised or there is a parse error
+ NB: This function will not work correctly if the 'source' variable
+ contains multiple tags
+ """
+ import re
+
+ attributes = {}
+
+ try:
+ match = re.match(re.compile(".*object_type='(?P.*?)'"),
+ source)
+ attributes["object_type"] = match.group("object_type")
+ except AttributeError, e:
+ print e
+ attributes["object_type"] = ""
+ try:
+ match = re.match(re.compile(".*task='(?P.*?)'"), source)
+ attributes["task"] = match.group("task")
+ except AttributeError, e:
+ print e
+ attributes["task"] = ""
+ try:
+ match = re.match(re.compile(".*key='(?P.*?)'"), source)
+ attributes["key"] = match.group("key")
+ except AttributeError:
+ attributes["key"] = ""
+ try:
+ match = re.match(re.compile(".*time='(?P.*?)'"), source)
+ attributes["time"] = match.group("time")
+ except AttributeError:
+ attributes["time"] = ""
+ try:
+ match = re.match(re.compile(".*count='(?P.*?)'"), source)
+ attributes["count"] = match.group("count")
+ except AttributeError:
+ attributes["count"] = ""
+
+ return attributes
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/System_Definition.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/System_Definition.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/cluster/README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/cluster/README Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,24 @@
+
+Testing a Cluster to See if it is Correctly Configured
+--------------------------------------------------------
+
+The tests in this directory can be seen only as examples of how to test a cluster. They would have to be customised before use on any particular cluster.
+
+The tests here are aimed at:
+
+1) Testing that the configuration of each nodes and that services such as NIS,DNS and NTP are configured.
+ This requires that logins for the current user work on all nodes.
+2) Checking that raptor-relevant software is installed and that the compiler can obtain licenses.
+3) Testing that PVM is installed and will run without crashing (solves a problem that has occurred in the past).
+4) Tests that PVM can run commands on all nodes.
+
+
+Typically one would run headtest.sh which performs the tests relating to items 1-3. It causes "nodetest.sh" to be run on all nodes.
+
+e.g.
+ ./headtest.sh node1 node2 node3
+
+pvmtest.sh can be used to check that pvm is working by running the compiler on each node via pvm.
+ ./pvmtest node1 node2 node3
+
+None of these tests is automatic - one must simply observe the output.
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/cluster/headtest.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/cluster/headtest.sh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# Copyright (c) 2007-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:
+#
+
+# Test all nodes in a cluster
+# arguments are the list of nodes.
+
+NODELIST="$@"
+
+(
+echo "Date and time check:"
+echo " The numbers following each hostname are the date and time in seconds"
+echo " They should all be the same otherwise make errors may occur during builds."
+echo " "`hostname`' '`date +%s`
+for i in $NODELIST; do
+ ssh $i 'echo " "`hostname`' '`date +%s`'&
+done
+)
+
+
+
+for i in $NODELIST; do
+ ssh $i "NODELIST=\"$NODELIST\" $SBS_HOME/test/cluster/nodetest.sh"
+done
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/cluster/nodetest.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/cluster/nodetest.sh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# Copyright (c) 2007-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:
+#
+
+TESTUSER="$@"
+LOCALTOOLS_HOME=/opt/symbian
+
+
+echo
+hostname
+echo
+ypwhich
+mount | grep home
+ls -ld /home/$TESTUSER
+
+ls -l $LOCALTOOLS_HOME/a616/ARM/RVCT/Programs/2.2/308/linux-pentium/armcc
+ls -l $LOCALTOOLS_HOME/make-pvm-381/pvmgmake
+ls -l $LOCALTOOLS_HOME/pvm3/bin/LINUX/pvmgmake_pvm
+ls -l $LOCALTOOLS_HOME/pvm3/bin/LINUX/pvmgmake_avg
+
+$LOCALTOOLS_HOME/pvm3/bin/LINUX/pvmgmake_pvm
+#$LOCALTOOLS_HOME/pvm3/bin/LINUX/pvmgmake_avg
+
+
+$LOCALTOOLS_HOME/a616/ARM/RVCT/Programs/2.2/308/linux-pentium/armcc 2>&1 | grep ARM
+
+#connectivity
+for i in $NODELIST; do
+ echo "Pinging $i"
+ ping -c 1 $i| grep "bytes from"
+done
+
+echo "---------------------------------------------------------------------------"
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/cluster/pvmtest.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/cluster/pvmtest.sh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Copyright (c) 2007-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:
+#
+
+# Test all nodes in a cluster
+# arguments are the list of nodes.
+
+NODELIST="$@"
+
+for i in $NODELIST; do
+ ssh $i "ls -l /tmp/pvm.$UID"
+done
+
+for i in $NODELIST; do
+ (
+ echo "spawn -($i) -> /bin/hostname"
+ echo "spawn -($i) -> $PVM_ROOT/bin/LINUX/pvmgmake_pvm"
+ echo "quit"
+ ) | pvm
+done
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/common/raptor_tests.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/common/raptor_tests.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,697 @@
+#
+# 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:
+#
+
+# run the smoke tests
+
+import os
+import re
+import stat
+import sys
+import subprocess
+import traceback
+from shutil import rmtree
+
+sys.path.append(os.environ["SBS_HOME"]+"/python")
+from raptor_meta import BldInfFile
+
+logDir = "$(EPOCROOT)/epoc32/build/smoketestlogs"
+
+debug_mode_active = False
+
+# Environment #################################################################
+
+# On MYS there is USERNAME but not USER
+if 'USER' not in os.environ:
+ os.environ['USER'] = os.environ['USERNAME']
+
+def activate_debug():
+ """
+ Activate debug-mode remotely
+ """
+ global debug_mode_active
+ debug_mode_active = True
+
+# Determine the OS version in the epocroot we're testing
+# since some tests expect different outcomes for 9.4 and 9.5
+def getsymbianversion():
+ epocroot = os.environ['EPOCROOT']
+ b = open (epocroot+"/epoc32/data/buildinfo.txt","r")
+ binfo = " ".join(b.readlines())
+ vmatch = (re.compile("v(9\.[0-9])")).search(binfo)
+ if vmatch:
+ osversion = vmatch.group(1)
+ else:
+ osversion = '9.4'
+ return osversion
+
+envRegex = re.compile("\$\((.+?)\)")
+fixEnvironment = ['EPOCROOT', 'SBS_HOME', 'SBS_CYGWIN', 'SBS_MINGW', 'SBS_PYTHON']
+
+def ReplaceEnvs(item):
+
+ envs = envRegex.findall(item)
+
+ for e in set(envs):
+ try:
+ val = os.environ[e]
+ if e in fixEnvironment:
+ # Raptor "fixes up" EPOCROOT etc. so we must do the same:
+ # add the drive letter (make absolute)
+ val = os.path.abspath(val)
+ # use forward slashes
+ val = val.replace("\\", "/")
+ # remove trailing slashes
+ val = val.rstrip("/")
+ item = item.replace("$(" + e + ")", val)
+ except KeyError:
+ print e, "is not set in the environment"
+ raise ValueError
+
+ return item
+
+# Utility functions ###########################################################
+
+
+
+def where(input_file):
+ """Search for 'input_file' in the system path"""
+ locations = []
+ if sys.platform.startswith("win"):
+ if not input_file.lower().endswith(".exe"):
+ input_file += ".exe"
+ for current_file in [loop_number + "\\" + input_file for loop_number in
+ os.environ["PATH"].split(";")]:
+ try:
+ stat = os.stat(current_file)
+ locations.append(current_file)
+ except OSError, error:
+ pass
+ else:
+ whichproc = subprocess.Popen(args=["which", input_file],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ shell=False,
+ universal_newlines=True)
+ output = whichproc.stdout.readlines()
+ whichproc.wait()
+
+ if len(output) > 0:
+ locations.append(output[0:(len(output) - 1)])
+
+ if len(locations) == 0:
+ print "Error: " + input_file + " not defined in PATH environment variable"
+ else:
+ return locations[0]
+
+def clean_epocroot():
+ """
+ This method walks through epocroot and cleans every file and folder that is
+ not present in the manifest file
+ """
+ epocroot = os.path.abspath(os.environ['EPOCROOT']).replace('\\','/')
+ print "Cleaning Epocroot: %s" % epocroot
+ all_files = {} # dictionary to hold all files
+ folders = [] # holds all unique folders in manifest
+ host_platform = os.environ["HOSTPLATFORM_DIR"]
+ try:
+ mani = "$(EPOCROOT)/manifest"
+ manifest = open(ReplaceEnvs(mani), "r")
+ le = len(epocroot)
+ for line in manifest:
+ line = line.replace("$(HOSTPLATFORM_DIR)", host_platform)
+ line = line.replace("./", epocroot+"/").rstrip("\n")
+ all_files[line] = True
+ # This bit makes a record of unique folders into a list
+ pos = line.rfind("/", le)
+ while pos > le: # Look through the parent folders
+ f = line[:pos]
+ if f not in folders:
+ folders.append(f)
+ pos = line.rfind("/", le, pos)
+
+
+ # This algorithm walks through epocroot and handles files and folders
+ walkpath = "$(EPOCROOT)"
+ for (root, dirs, files) in os.walk(ReplaceEnvs(walkpath), topdown =
+ False):
+ if root.find(".hg") != -1:
+ continue
+
+ # This loop handles all files
+ for name in files:
+ name = os.path.join(root, name).replace("\\", "/")
+
+ if name not in all_files:
+ try:
+ os.remove(name)
+ except:
+ # chmod to rw and try again
+ try:
+ os.chmod(name, stat.S_IRWXU)
+ os.remove(name)
+ except:
+ print "\nEPOCROOT-CLEAN ERROR:"
+ print (sys.exc_type.__name__ + ":"), \
+ sys.exc_value
+ if sys.exc_type.__name__ != "WindowsError":
+ print traceback.print_tb(sys.exc_traceback)
+
+ # This loop handles folders
+ for name in dirs:
+ if name.find(".hg") != -1:
+ continue
+
+ name = os.path.join(root, name).replace("\\", "/")
+ if name not in all_files and name not in folders:
+ # Remove the folder fully with no errors if full
+ try:
+ rmtree(ReplaceEnvs(name))
+ except:
+ print "\nEPOCROOT-CLEAN ERROR:"
+ print (sys.exc_type.__name__ + ":"), \
+ sys.exc_value
+ if sys.exc_type.__name__ != "WindowsError":
+ print traceback.print_tb(sys.exc_traceback)
+ except IOError,e:
+ print e
+
+ print "Epocroot Cleaned"
+
+def fix_id(input_id):
+ return input_id.zfill(4)
+
+
+def grep(file, string):
+ return
+
+
+# Test classes ################################################################
+
+class SmokeTest(object):
+ """Base class for Smoke Test objects.
+
+ Each test is defined (minimally) by,
+ 1) an ID number as a string
+ 2) a name
+ 3) a raptor command-line
+ 4) some parameters to check the command results against
+
+ The run() method will,
+ 1) delete all the listed target files
+ 2) execute the raptor command
+ 3) check that the test results match the test parameters
+ 4) count the warnings and errors reported
+ """
+
+ PASS = "pass"
+ FAIL = "fail"
+ SKIP = "skip"
+
+ def __init__(self):
+
+ self.id = "0"
+ self.name = "smoketest"
+ self.description = ""
+ self.command = "sbs --do_what_i_want"
+ self.targets = []
+ self.missing = 0
+ self.warnings = 0
+ self.errors = 0
+ self.exceptions = 0
+ self.returncode = 0
+
+ self.onWindows = sys.platform.startswith("win")
+
+ # These variables are for tests that treat the text as a list of lines. In
+ # particular, "." will not match end-of-line. This means that, for example,
+ # "abc.*def" will only match if "abc" and "def" appear on the same line.
+ self.mustmatch = []
+ self.mustnotmatch = []
+ self.mustmatch_singleline = []
+ self.mustnotmatch_singleline = []
+
+ # These variables are for tests that treat the text as a single string of
+ # characters. The pattern "." will match anything, including end-of-line.
+ self.mustmatch_multiline = []
+ self.mustnotmatch_multiline = []
+
+ self.countmatch = []
+
+ self.outputok = True
+ self.usebash = False
+ self.failsbecause = None
+ self.result = SmokeTest.SKIP
+ self.environ = {} # Allow tests to set the environment in which commands run.
+ self.sbs_build_dir = "$(EPOCROOT)/epoc32/build"
+
+ def run(self, platform = "all"):
+ previousResult = self.result
+ self.id = fix_id(self.id)
+ try:
+ if self.runnable(platform):
+
+ if not self.pretest():
+ self.result = SmokeTest.FAIL
+
+ elif not self.test():
+ self.result = SmokeTest.FAIL
+
+ elif not self.posttest():
+ self.result = SmokeTest.FAIL
+
+ else:
+ self.result = SmokeTest.PASS
+ else:
+ self.skip(platform)
+ except Exception, e:
+ print e
+ self.result = SmokeTest.FAIL
+
+ # print the result of this run()
+ self.print_result(internal = True)
+
+ # if a previous run() failed then the overall result is a FAIL
+ if previousResult == SmokeTest.FAIL:
+ self.result = SmokeTest.FAIL
+
+ def print_result(self, value = "", internal = False):
+ # the test passed :-)
+
+ result = self.result
+
+ string = ""
+ if not internal:
+ string += "\n" + self.name + ": "
+
+ if value:
+ print string + value
+ else:
+ if result == SmokeTest.PASS:
+ string += "PASSED"
+ elif result == SmokeTest.FAIL:
+ string += "FAILED"
+
+ print string
+
+ def runnable(self, platform):
+ # can this test run on this platform?
+ if platform == "all":
+ return True
+
+ isWin = self.onWindows
+ wantWin = platform.startswith("win")
+
+ return (isWin == wantWin)
+
+ def skip(self, platform):
+ print "\nSKIPPING:", self.name, "for", platform
+
+ def logfileOption(self):
+ return "-f " + self.logfile();
+
+ def logfile(self):
+ return logDir + "/" + self.name + ".log"
+
+ def makefileOption(self):
+ return "-m " + self.makefile();
+
+ def makefile(self):
+ return logDir + "/" + self.name + ".mk"
+
+ def removeFiles(self, files):
+ for t in files:
+ tgt = os.path.normpath(ReplaceEnvs(t))
+
+ if os.path.exists(tgt):
+ try:
+ os.chmod(tgt, stat.S_IRWXU)
+ if os.path.isdir(tgt):
+ rmtree(tgt)
+ else:
+ os.remove(tgt)
+ except OSError:
+ print "Could not remove", tgt, "before the test"
+ return False
+ return True
+
+
+ def clean(self):
+ # remove all the target files
+
+ # flatten any lists first (only 1 level of flattenening expected)
+ # these indicate alternative files - one of them will exist after a build
+ removables = []
+ for i in self.targets:
+ if type(i) is not list:
+ removables.append(i)
+ else:
+ removables.extend(i)
+
+ return self.removeFiles(removables)
+
+ def pretest(self):
+ # what to do before the test runs
+
+ print "\nID:", self.id
+ print "TEST:", self.name
+
+ return self.clean()
+
+ def test(self):
+ # run the actual test
+
+ # put the makefile and log in $EPOCROOT/build/smoketestlogs
+ if self.usebash:
+ command = ReplaceEnvs(self.command)
+ else:
+ command = ReplaceEnvs(self.command +
+ " " + self.makefileOption() +
+ " " + self.logfileOption())
+
+ print "COMMAND:", command
+
+
+ # Any environment settings specific to this test
+ shellenv = os.environ.copy()
+ for ev in self.environ:
+ shellenv[ev] = self.environ[ev]
+
+ if self.usebash:
+ shellpath = shellenv['PATH']
+
+ if 'SBS_SHELL' in os.environ:
+ BASH = os.environ['SBS_SHELL']
+ else:
+ if self.onWindows:
+ if 'SBS_CYGWIN' in shellenv:
+ BASH = ReplaceEnvs("$(SBS_CYGWIN)/bin/bash.exe")
+ else:
+ BASH = ReplaceEnvs("$(SBS_HOME)/win32/cygwin/bin/bash.exe")
+ else:
+ BASH = ReplaceEnvs("$(SBS_HOME)/$(HOSTPLATFORM_DIR)/bin/bash")
+
+ if self.onWindows:
+ if 'SBS_CYGWIN' in shellenv:
+ shellpath = ReplaceEnvs("$(SBS_CYGWIN)/bin") + ";" + shellpath
+ else:
+ shellpath = ReplaceEnvs("$(SBS_HOME)/win32/cygwin/bin") + ";" + shellpath
+
+ shellenv['SBSMAKEFILE']=ReplaceEnvs(self.makefile())
+ shellenv['SBSLOGFILE']=ReplaceEnvs(self.logfile())
+ shellenv['PATH']=shellpath
+ shellenv['PYTHON_HOME'] = ""
+ shellenv['CYGWIN']="nontsec nosmbntsec"
+
+ p = subprocess.Popen(args=[BASH, '-c', command],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ env=shellenv,
+ shell=False,
+ universal_newlines=True)
+
+ (std_out, std_err) = p.communicate()
+
+ self.output = std_out + std_err
+ else:
+ p = subprocess.Popen(command,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ env=shellenv,
+ shell=True,
+ universal_newlines=True)
+
+ (std_out, std_err) = p.communicate()
+
+ self.output = std_out + std_err
+
+ if debug_mode_active:
+ print self.output
+
+ if p.returncode != self.returncode:
+ print "RETURN: got", p.returncode, "expected", self.returncode
+ return False
+
+ return True
+
+ def posttest(self):
+ # what to do after the test has run
+
+ # count the targets that got built
+ found = 0
+ missing = []
+ for t in self.targets:
+ if type(t) is not list:
+ target_alternatives=[t]
+
+ found_flag = False
+ for alt in target_alternatives:
+ tgt = os.path.normpath(ReplaceEnvs(alt))
+ if os.path.exists(tgt):
+ found_flag = True
+ break
+ if found_flag:
+ found += 1
+ else:
+ missing.append(tgt)
+
+ # count the errors and warnings
+ warn = 0
+ error = 0
+ exception = 0
+ lines = self.output.split("\n")
+
+ for line in lines:
+ if line.find("sbs: warning:") != -1 or line.find("/.sbs_init.xml")
+parser.add_option("--what-failed", action = "store_true", dest = "what_failed",
+ help = "Re-run all the tests that failed in the previous test run")
+parser.add_option("--clean", action = "store_true", dest = "clean",
+ help = "Clean EPOCROOT after each test is run")
+
+
+(options, args) = parser.parse_args()
+
+# Check for --what-failed and override '-s' and '-t' (including flagless regex)
+if options.what_failed:
+ try:
+ what_failed_file = open("what_failed", "r")
+ what_failed = what_failed_file.readline()
+ what_failed_file.close()
+ print "Running: run " + what_failed
+
+ first = what_failed.find('"')
+ second = what_failed.find('"', (first + 1))
+ options.suite = what_failed[(first + 1):second]
+
+ first = what_failed.find('"', (second + 1))
+ second = what_failed.find('"', (first + 1))
+ options.tests = what_failed[(first + 1):second]
+ except:
+ # If no file exists, nothing failed, so run as usual
+ pass
+
+# Allow flagless test regex
+if (options.tests == None) and (len(args) > 0):
+ options.tests = args[len(args) - 1]
+
+if options.upload != None:
+ if options.branch != None:
+ if options.branch == "m":
+ branch = "master"
+ elif options.branch == "f":
+ branch = "fix"
+ elif options.branch == "w":
+ branch = "wip"
+ else:
+ branch = options.branch
+ else:
+ print "Warning: Test branch not set - Use " + \
+ "'-b [master|fix|wip]'\n Using default of 'Fix'..."
+ branch = "fix"
+
+if options.debug_mode:
+ raptor_tests.activate_debug()
+
+
+# Set $HOME environment variable for finding a custom .sbs_init.xml
+if options.test_home != None:
+ home_dir = options.test_home
+ if home_dir in os.listdir("./custom_options"):
+ os.environ["HOME"] = os.environ["SBS_HOME"] + "/test/custom_options/" \
+ + home_dir + "/"
+ else:
+ print "Warning: Path to custom .sbs_init.xml file not found (" + \
+ home_dir + ")\nUsing defaults..."
+ options.test_home = None
+
+
+def format_milliseconds(microseconds):
+ """ format a microsecond time in milliseconds """
+ milliseconds = (microseconds / 1000)
+ if milliseconds == 0:
+ return "000"
+ elif milliseconds < 10:
+ return "00" + str(milliseconds)
+ elif milliseconds < 100:
+ return "0" + str(milliseconds)
+ return milliseconds
+
+
+
+class TestRun(object):
+ """Represents any series of tests"""
+ def __init__(self):
+ self.test_set = []
+ self.failed_tests = []
+ self.error_tests = []
+ self.pass_total = 0
+ self.fail_total = 0
+ self.skip_total = 0
+ self.exception_total = 0
+ self.test_total = 0
+ # For --what-failed:
+ self.suites_failed = []
+ self.tests_failed = []
+
+ def aggregate(self, atestrun):
+ """ Aggregate other test results into this one """
+ self.test_set.append(atestrun)
+ self.test_total += len(atestrun.test_set)
+
+ def show(self):
+ for test_set in self.test_set:
+ print "\n\n" + str(test_set.suite_dir) + ":\n"
+
+ # If a suite has failed/erroneous tests, add it to what_failed
+ if (test_set.fail_total + test_set.exception_total) > 0:
+ self.suites_failed.append(test_set.suite_dir)
+
+ if len(test_set.test_set) < 1:
+ print "No tests run"
+ else:
+ print "PASSED: " + str(test_set.pass_total)
+ print "FAILED: " + str(test_set.fail_total)
+ if test_set.skip_total > 0:
+ print "SKIPPED: " + str(test_set.skip_total)
+ if test_set.exception_total > 0:
+ print "EXCEPTIONS: " + str(test_set.exception_total)
+
+ if test_set.fail_total > 0:
+ print "\nFAILED TESTS:"
+
+ # Add each failed test to what_failed and print it
+ for test in test_set.failed_tests:
+ self.tests_failed.append("^" + test + ".py")
+ print "\t", test
+
+ if test_set.exception_total > 0:
+ print "\nERRONEOUS TESTS:"
+
+ # Add each erroneous test to what_failed and print it
+ for test in test_set.error_tests:
+ first = test.find("'")
+ second = test.find("'", (first + 1))
+ self.tests_failed.append("^" +
+ test[(first + 1):second] + ".py")
+ print "\t", test
+
+ def what_failed(self):
+ "Create the file for --what-failed if there were failing tests"
+ if len(self.suites_failed) > 0:
+ self.what_failed = open("what_failed", "w")
+ # Add the suites and tests to the file as command-line options
+ self.what_failed.write('-s "')
+ loop_number = 0
+ for suite in self.suites_failed:
+ loop_number += 1
+ self.what_failed.write(suite)
+
+ # If this is not the last suite, prepare to add another
+ if loop_number < len(self.suites_failed):
+ self.what_failed.write("|")
+
+ self.what_failed.write('" -t "')
+ loop_number = 0
+ for test in self.tests_failed:
+ loop_number += 1
+ self.what_failed.write(test)
+
+ # If this is not the last test, prepare to add another
+ if loop_number < len(self.tests_failed):
+ self.what_failed.write("|")
+ self.what_failed.write('"')
+ self.what_failed.close()
+
+ else:
+ # If there were no failing tests this time, remove any previous file
+ try:
+ os.remove("what_failed")
+ except:
+ try:
+ os.chmod("what_failed", stat.S_IRWXU)
+ os.remove("what_failed")
+ except:
+ pass
+
+
+class Suite(TestRun):
+ """A test suite"""
+
+ python_file_regex = re.compile("(.*)\.py$", re.I)
+
+ def __init__(self, dir, parent):
+ TestRun.__init__(self)
+ self.suite_dir = dir
+
+ # Upload directory (if set)
+ self.upload_location = parent.upload_location
+
+ # Regex for searching for tests
+
+ self.test_file_regex = parent.test_file_regex
+ self.test_pattern = parent.testpattern
+
+
+ def run(self):
+ """run the suite"""
+
+ self.time_stamp = datetime.datetime.now()
+ self.results = {}
+ self.start_times = {}
+ self.end_times = {}
+
+ print "\n\nRunning " + str(self.suite_dir) + "..."
+
+ # Iterate through all files in specified directory
+ for test in os.listdir(self.suite_dir):
+ # Only check '*.py' files
+ name_match = self.python_file_regex.match(test)
+ if name_match is not None:
+ if self.test_file_regex is not None:
+ # Each file that matches -t input is imported if any
+ name_match = self.test_file_regex.match(test)
+ else:
+ name_match = 1
+ if name_match is not None:
+ import_name = test[:-3]
+ try:
+ self.test_set.append(imp.load_source(import_name,
+ (raptor_tests.ReplaceEnvs(self.suite_dir
+ + "/" + test))))
+ except:
+ print "\n", (sys.exc_type.__name__ + ":"), \
+ sys.exc_value, "\n", \
+ traceback.print_tb(sys.exc_traceback)
+
+ test_number = 0
+ test_total = len(self.test_set)
+ if test_total < 1:
+ print "No tests in suite "+self.suite_dir+" matched by specification '"+self.test_pattern+"' (regex: /.*"+self.test_pattern+".*/)\n";
+ # Run each test, capturing all its details and its results
+ for test in self.test_set:
+ test_number += 1
+ # Save start/end times and save in dictionary for TMS
+ start_time = datetime.datetime.now()
+ try:
+ test_number_text = "\n\nTEST " + str(test_number) + "/" + \
+ str(test_total) + ":"
+
+ if self.fail_total > 0:
+ test_number_text += " So far " + str(self.fail_total) + \
+ " FAILED"
+ if self.exception_total > 0:
+ test_number_text += " So far " + str(self.exception_total) + \
+ " ERRONEOUS"
+
+ print test_number_text
+
+ test_object = test.run()
+
+ end_time = datetime.datetime.now()
+
+ # Add leading 0s
+ test_object.id = raptor_tests.fix_id(test_object.id)
+
+ # No millisecond function, so need to use microseconds/1000
+ start_milliseconds = start_time.microsecond
+ end_milliseconds = end_time.microsecond
+
+ # Add trailing 0's if required
+ start_milliseconds = \
+ format_milliseconds(start_milliseconds)
+ end_milliseconds = \
+ format_milliseconds(end_milliseconds)
+
+ self.start_times[test_object.id] = \
+ start_time.strftime("%H:%M:%S:" +
+ str(start_milliseconds))
+ self.end_times[test_object.id] = \
+ end_time.strftime("%H:%M:%S:" + \
+ str(end_milliseconds))
+
+ run_time = (end_time - start_time)
+
+ run_time_seconds = (str(run_time.seconds) + "." + \
+ str(format_milliseconds(run_time.microseconds)))
+ print ("RunTime: " + run_time_seconds + "s")
+ # Add to pass/fail count and save result to dictionary
+ if test_object.result == raptor_tests.SmokeTest.PASS:
+ self.pass_total += 1
+ self.results[test_object.id] = "Passed"
+ elif test_object.result == raptor_tests.SmokeTest.FAIL:
+ self.fail_total += 1
+ self.results[test_object.id] = "Failed"
+ self.failed_tests.append(test_object.name)
+ elif test_object.result == raptor_tests.SmokeTest.SKIP:
+ self.skip_total += 1
+ # Clean epocroot after running each test if --clean option is specified
+ if options.clean:
+ print "\nCLEANING TEST RESULTS..."
+ raptor_tests.clean_epocroot()
+
+ except:
+ print "\nTEST ERROR:"
+ print (sys.exc_type.__name__ + ":"), \
+ sys.exc_value, "\n", \
+ traceback.print_tb(sys.exc_traceback)
+ self.exception_total += 1
+ self.error_tests.append(str(self.test_set[test_number - 1]))
+
+
+ if self.upload_location != None:
+ self.create_csv()
+
+ end_time_stamp = datetime.datetime.now()
+
+ runtime = end_time_stamp - self.time_stamp
+ seconds = (str(runtime.seconds) + "." + \
+ str(format_milliseconds(runtime.microseconds)))
+ if options.upload:
+ self.create_tri(seconds)
+
+ print ("\n" + str(self.suite_dir) + " RunTime: " + seconds + "s")
+
+ def create_csv(self):
+ """
+ This method will create a CSV file with the smoke test's output
+ in order to successfully upload results to TMS QC
+ """
+
+ # This sorts the dictionaries by their key values (Test IDs)
+ id_list = run_tests.sort_dict(self.results)
+
+ self.test_file_name = (self.suite_dir + "_" + \
+ self.time_stamp.strftime("%Y-%m-%d_%H-%M-%S") + "_" +
+ branch + "_results.csv")
+ # This is the path for file-creation on the server. Includes
+ self.test_path = (self.upload_location + "/csv/" + self.suite_dir + "/"
+ + self.test_file_name)
+
+ try:
+
+ if not os.path.isdir(self.upload_location + "/csv/" +
+ self.suite_dir):
+ os.makedirs(self.upload_location + "/csv/" + self.suite_dir)
+
+ csv_file = \
+ open(raptor_tests.ReplaceEnvs(os.path.normpath(self.test_path)),
+ "w")
+ csv_file.write("TestCaseID,StartTime,EndTime,Result\n")
+
+ for test_id in id_list:
+ csv_file.write("PCT-SBSV2-" + self.suite_dir + "-" + test_id + \
+ "," + str(self.start_times[test_id]) + "," + \
+ str(self.end_times[test_id]) + "," + \
+ self.results[test_id] + "\n")
+ csv_file.close()
+
+ except OSError, e:
+ print "SBS_TESTS: Error:", e
+
+
+ def create_tri(self, overall_seconds):
+ """
+ This method will create a TRI (xml) file containing the location of the
+ CSV file in order to successfully upload results to TMS QC
+ """
+ # Path for the tri file
+ tri_path = (self.upload_location + "/new/" + self.suite_dir + \
+ "_" + self.time_stamp.strftime("%Y-%m-%d_%H-%M-%S") + ".xml")
+ run_name_timestamp = self.time_stamp.strftime(self.suite_dir + \
+ "%Y-%m-%d_%H-%M-%S")
+ date_time_timestamp = self.time_stamp.strftime("%d.%m.%Y %H:%M:%S")
+ test_set_name = "Root\\Product Creation Tools\\Regression\\" + \
+ "SBS v2 (Raptor)\\" + self.suite_dir + "_"
+ if sys.platform.startswith("win"):
+ test_set_name += ("WinXP_" + branch)
+ else:
+ test_set_name += ("Linux_" + branch)
+
+ # /mnt/ -> // Fixes the difference in paths for lon-rhdev mounts vs. win
+ if not sys.platform.startswith("win"):
+ if self.test_path.startswith("/mnt/"):
+ self.test_path = self.test_path.replace("mnt", "", 1)
+
+ try:
+ tri_file = \
+ open(raptor_tests.ReplaceEnvs(os.path.normpath(tri_path)), \
+ "w")
+ tri_file.write(
+ "\n" + \
+ "\t\n\t\t" + \
+ run_name_timestamp + \
+ "\n\t \n" + \
+ "\t\n" + \
+ "\t\tSBSv2 (Non-SITK)\n" + \
+ "\t \n" + \
+ "\t\n\t\t" + \
+ date_time_timestamp + \
+ "\n\t \n" + \
+ "\t\n\t\t" + \
+ overall_seconds + \
+ "\n\t \n" + \
+ '\t\n' + \
+ "\t\t\n\t\t\t" + \
+ self.test_path + \
+ "\n\t\t \n" + \
+ "\t \n" + \
+ " ")
+ tri_file.close()
+ print "Tests uploaded to '" + self.upload_location + "' (" + \
+ branch + ")"
+ except OSError, e:
+ print "SBS_TESTS: Error:", e
+
+class SuiteRun(TestRun):
+ """ Represents a 'run' of a number of test suites """
+
+ def __init__(self, suitepattern = None, testpattern = None,
+ upload_location = None):
+ TestRun.__init__(self)
+
+ # Add common directory to list of paths to search for modules
+ sys.path.append(raptor_tests.ReplaceEnvs("$(SBS_HOME)/test/common"))
+
+
+ if suitepattern:
+ self.suite_regex = re.compile(".*" + suitepattern + ".*", re.I)
+ else:
+ self.suite_regex = re.compile(".*\_suite$", re.I)
+
+ if testpattern:
+ self.test_file_regex = re.compile(".*" + testpattern + ".*",
+ re.I)
+ else:
+ self.test_file_regex = None
+
+ self.suitepattern = suitepattern
+ self.testpattern = testpattern
+ self.upload_location = upload_location
+
+
+
+ def run_tests(self):
+ """
+ Run all the tests in the specified suite (directory)
+ """
+
+ suites = []
+ for dir in os.listdir("."):
+ name_match = self.suite_regex.match(dir)
+ # Each folder that matches the suite pattern will be looked into
+ # Also checks to make sure the found entry is actually a directory
+ if name_match is not None and os.path.isdir(dir):
+ s = Suite(dir, self)
+ s.run()
+ self.aggregate(s)
+ suites.append(dir)
+
+ # Print which options were used
+ if options.test_home == None:
+ options_dir = "defaults)"
+ else:
+ options_dir = "'" + options.test_home + "' options file)"
+ print "\n(Tests run using %s" %options_dir
+
+ # Summarise the entire test run
+ if self.suitepattern and (len(suites) < 1):
+ print "\nNo suites matched specification '" + self.suitepattern + \
+ "'\n"
+ else:
+ print "Overall summary (%d suites, %d tests):" \
+ %(len(suites), self.test_total)
+ self.show()
+ self.what_failed()
+
+
+ def sort_dict(self, input_dict):
+ """
+ This method sorts values in a dictionary
+ """
+ keys = input_dict.keys()
+ keys.sort()
+ return keys
+
+
+# Make SBS_HOME, EPOCROOT have uppercase drive letters to match os.getcwd() and
+# thus stop all those insane test problems which result from one being uppercase
+# and the other lowercase
+
+if sys.platform.startswith("win"):
+ sh = os.environ['SBS_HOME']
+ if sh[1] == ':':
+ os.environ['SBS_HOME'] = sh[0].upper() + sh[1:]
+ er = os.environ['EPOCROOT']
+ if er[1] == ':':
+ os.environ['EPOCROOT'] = er[0].upper() + er[1:]
+
+# Clean epocroot before running tests
+raptor_tests.clean_epocroot()
+run_tests = SuiteRun(suitepattern = options.suite, testpattern = options.tests,
+ upload_location = options.upload)
+run_tests.run_tests()
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/abiv1kit/os_properties.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/abiv1kit/os_properties.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/api.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/api.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/apply_test_variants.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/apply_test_variants.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/arm.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/arm.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/default.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/default.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/interface.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/interface.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/os_properties.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/os_properties.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/config/user.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/config/user.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun01/makefiles_testrun01.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun01/makefiles_testrun01.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun01/testrig01.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun01/testrig01.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\yiluzhu\CBR\m04710\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;%SBS_HOME%\win32\msys\bin;%PATH%
+
+@REM Generate the makefiles using case "all" ...
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (100 500 1000 2500 5000 10000 15000 20000 25000) DO (
+FOR %%d in (50 100) DO (
+python makemakefile.py -t %%i -d %%d -m makefile_%%c_%%i_targets_%%d_divisions.mk)))
+
+@REM Run mingw32-make with various values of j
+FOR %%j in (100 250 500 1000) DO (
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (500 1000 2500 5000 10000 15000 20000 25000) DO (
+FOR %%d in (50 100) DO (
+make -j %%j -f makefile_%%c_%%i_targets_%%d_divisions.mk > makefile_%%c_%%i_targets_%%d_divisions_jobs_%%j.log 2>&1))))
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun02/makefiles_testrun02.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun02/makefiles_testrun02.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun02/testrig02.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun02/testrig02.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\yiluzhu\CBR\m04710\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;%SBS_HOME%\win32\msys\bin;%PATH%
+
+@REM Generate the makefiles using case "all" ...
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (100 200 500 750 1000 1250 1500 1750 2000 2250 2500) DO (
+FOR %%d in (50 100) DO (
+python makemakefile.py -t %%i -d %%d -m makefile_%%c_%%i_targets_%%d_divisions.mk)))
+
+@REM Run mingw32-make with various values of j
+FOR %%j in (10 25 50 75 100 250) DO (
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (100 200 500 750 1000 1250 1500 1750 2000 2250 2500) DO (
+FOR %%d in (50 100) DO (
+make -j %%j -f makefile_%%c_%%i_targets_%%d_divisions.mk > makefile_%%c_%%i_targets_%%d_divisions_jobs_%%j.log 2>&1))))
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun03/makefiles_testrun03.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun03/makefiles_testrun03.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun03/testrig03.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun03/testrig03.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\yiluzhu\CBR\m04710\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;%SBS_HOME%\win32\msys\bin;%PATH%
+
+@REM Run mingw32-make with various values of j
+FOR /L %%r in (1,1,100) DO (
+FOR %%j in (50 100) DO (
+FOR %%f IN (makefile_env_1000_targets_50_divisions.mk makefile_env_1000_targets_100_divisions.mk) DO (
+make -j %%j -f %%f > %%f_jobs_%%j_run_%%r.log 2>&1
+)
+)
+)
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun04/makefiles_testrun04.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun04/makefiles_testrun04.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun04/testrig04.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun04/testrig04.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\danieljacobs\msystest\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;%SBS_HOME%\win32\msys\bin;%PATH%
+
+@REM Generate the makefiles using case "all" ...
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (100 750 1500 1750 2500) DO (
+FOR %%d in (50 100) DO (
+python makemakefile.py -t %%i -d %%d -c %%c -m makefile_%%c_%%i_targets_%%d_divisions.mk)))
+
+@REM Run mingw32-make with various values of j
+FOR %%j in (10 25 50 75 100 250) DO (
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (100 750 1500 1750 2500) DO (
+FOR %%d in (50 100) DO (
+make -j %%j -f makefile_%%c_%%i_targets_%%d_divisions.mk > makefile_%%c_%%i_targets_%%d_divisions_jobs_%%j.log 2>&1))))
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun05/makefiles_testrun05.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun05/makefiles_testrun05.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun05/testrig05.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun05/testrig05.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\yiluzhu\CBR\m04710\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;D:\danieljacobs\msystest\cygwin\bin;%PATH%
+
+@REM Run mingw32-make with various values of j
+FOR /L %%r in (1,1,100) DO (
+FOR %%j in (50 100) DO (
+FOR %%f IN (makefile_env_1000_targets_50_divisions.mk makefile_env_1000_targets_100_divisions.mk) DO (
+make -j %%j -f %%f > %%f_jobs_%%j_run_%%r.log 2>&1
+)
+)
+)
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun06/makefiles_testrun06.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun06/makefiles_testrun06.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun06/testrig06.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun06/testrig06.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,26 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\danieljacobs\msystest\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;D:\danieljacobs\msystest\cygwin\bin;%PATH%
+
+@REM Run mingw32-make with various values of j
+FOR %%j in (10 25 50 75 100 250) DO (
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (100 750 1500 1750 2500) DO (
+FOR %%d in (50 100) DO (
+make -j %%j -f makefile_%%c_%%i_targets_%%d_divisions.mk > makefile_%%c_%%i_targets_%%d_divisions_jobs_%%j.log 2>&1))))
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun07/makefiles_testrun07.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun07/makefiles_testrun07.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun07/testrig07.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun07/testrig07.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\danieljacobs\msystest\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;D:\danieljacobs\msystest\cygwin\bin;%PATH%
+
+@REM Run mingw32-make with various values of j
+FOR /L %%r in (1,1,100) DO (
+FOR %%j in (50 100) DO (
+FOR %%f IN (makefile_env_1000_targets_50_divisions.mk makefile_env_1000_targets_100_divisions.mk) DO (
+make -j %%j -f %%f > %%f_jobs_%%j_run_%%r.log 2>&1
+)
+)
+)
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun08/makefiles_testrun08.zip
Binary file sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun08/makefiles_testrun08.zip has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun08/testrig08.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/GeneratedMakefiles/TestRun08/testrig08.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,26 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+ECHO junk_file: this file is the dummy file to be used in the cp-testing. > junk_file
+SET SBS_HOME=D:\danieljacobs\msystest\raptor
+SET PATH=%SBS_HOME%\win32\mingw\bin;D:\danieljacobs\msystest\cygwin\bin;%PATH%
+
+@REM Run mingw32-make with various values of j
+FOR %%j in (10 25 50 75 100 250) DO (
+FOR %%c IN (all env echo cp sed) DO (
+FOR %%i IN (100 750 1500 1750 2500) DO (
+FOR %%d in (50 100) DO (
+make -j %%j -f makefile_%%c_%%i_targets_%%d_divisions.mk > makefile_%%c_%%i_targets_%%d_divisions_jobs_%%j.log 2>&1))))
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/HowTo.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/HowTo.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,96 @@
+HowTo.txt - Copyright 2008 Symbian Software Ltd.
+
+This document describes how to use this test suite for stress-testing Linux-emulation type systems on Windows.
+
+Structure of tests
+==================
+
+The Linux emulation layer tests are structured as follows:
+
+LinuxEmulationLayerStressTests\HowTo.txt (this file)
+LinuxEmulationLayerStressTests\makemakefile.py (described below)
+LinuxEmulationLayerStressTests\mingw.tar.bz2
+LinuxEmulationLayerStressTests\msys.tar.bz2
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun01\makefiles_testrun01.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun01\testrig01.bat
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun02\makefiles_testrun02.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun02\testrig02.bat
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun03\makefiles_testrun03.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun03\testrig03.bat
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun04\makefiles_testrun04.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun04\testrig04.bat
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun05\makefiles_testrun05.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun05\testrig05.bat
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun06\makefiles_testrun06.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun06\testrig06.bat
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun07\makefiles_testrun07.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun07\testrig07.bat
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun08\makefiles_testrun08.zip
+LinuxEmulationLayerStressTests\GeneratedMakefiles\TestRun08\testrig08.bat
+LinuxEmulationLayerStressTests\src\msys-sed-4.1.5-src.tar.gz
+
+Each test run has its makefiles preserved in the corresponding zip file (e.g. makefiles_testrun01.zip).
+
+The testrigNN.bat are very basic batch scripts that do not take any parameters. They are simply there as a
+bootstrap to
+
+1) Set the PATH to contain either MSYS's or Cygwin's bin folder (but not both!)
+2) Set the PATH to contain MinGW's bin folder (for MinGW's make)
+3) Generate the makefiles in a number of for-loops (optional)
+4) Run the make over the makefiles in a number of for-loops
+
+In future, if any of these batch files are re-used, it will be necessary to adjust them so that
+they set the PATH environment variable correctly to contain the place where MSYS or Cygwin
+was unzipped. Then decide if you wish to generate further makefiles using the Python script,
+or if it's just enough to run the existing makefiles.
+
+For convenience, both MSYS and Cygwin are provided in the files
+
+LinuxEmulationLayerStressTests\mingw.tar.bz2
+LinuxEmulationLayerStressTests\msys.tar.bz2
+
+These are the versions that were tested and were shipped with SBSv2. Simply untar to a convenient
+location and update the batch files bootstraps to add these to your PATH.
+
+makemakefile.py
+===============
+
+This script, as its name suggests, makes a range of makefiles. Use the command
+
+python makemakefile.py -h
+
+to see a list of available options. At time of writing, the usage help is as follows:
+
+Usage: makemakefile.py [options]
+
+Options:
+ -h, --help show this help message and exit
+ -t TARGETS, --targets=TARGETS
+ Number of main (or "level1") targets to generate -
+ these are the targets that actually perform some
+ simulated actions.
+ -d DIVISIONS, --divisions=DIVISIONS
+ The number of "level2" targets. Each level2 target
+ will depend on t/d level1 targets. This makes makefile
+ generation more logical.
+ -m MAKEFILE, --makefile=MAKEFILE
+ Name of makefile to generate. If blank, makefile is
+ printed to STDOUT.
+ -c CASE, --case=CASE Type of commands to use in each rule. Default is
+ "all"; other options are "env", "echo", "cp" and "sed"
+
+
+
+The -t option specifies total the number of makefile targets. This should be a positive integer.
+
+The -d option specifies total the number of subdivisions of the makefile targets into level1/level2 targets.
+This should be a positive integer.
+
+The makefiles are structured in such as way, so that the dependency tree has three levels. The aim is to
+introduce some complexity into the makefile's dependency tree rather than just having a "flat" dependency tree.
+The top level in the dependency tree contains only one target called "main"; below this are the level2 targets
+which are all prerequisites of main; lastly are the level1 targets which split into groups and each group is
+the set of prerequisites for a level2 target.
+
+The size of these groups of level1 targets is <= DIVISIONS depending if DIVISIONS divides into TARGETS exactly or not.
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/makemakefile.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/core_utils/makemakefile.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,152 @@
+#
+# 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:
+#
+#! python
+
+import optparse
+import sys
+
+def writeline(line, filehandle):
+ """Assumes filehandle has a write method and that line is a string;
+ Calls the filehandle's write method with line as an argument. Note:
+ filehandle can be STDOUT or STDERR or a real file. The client code
+ should take care of the creation of the filehandle object"""
+ print >> filehandle, line,
+
+def info(arg, filehandle):
+ writeline("# INFO: " + str(arg), filehandle)
+
+def warning(arg, filehandle):
+ writeline("# WARNING: " + str(arg), filehandle)
+
+def error(arg, filehandle):
+ writeline("# ERROR: " + str(arg), filehandle)
+
+# Get the command line options
+parser = optparse.OptionParser()
+parser.add_option("-t", "--targets", type="int", dest="targets",
+ help="Number of main (or \"level1\") targets to generate - these are the targets " + \
+ "that actually perform some simulated actions.")
+parser.add_option("-d", "--divisions", type="int", dest="divisions",
+ help="The number of \"level2\" targets. Each level2 target will depend on " + \
+ "t/d level1 targets. This makes makefile generation more logical.")
+parser.add_option("-m", "--makefile", dest="makefile",
+ help="Name of makefile to generate. If blank, makefile is printed to STDOUT.")
+parser.add_option("-c", "--case", dest="case",
+ help="Type of commands to use in each rule. Default is \"all\"; other options are " + \
+ "\"env\", \"echo\", \"cp\" and \"sed\"")
+
+(options, args) = parser.parse_args()
+
+makefile = options.makefile
+makefilefh = None
+# Open the makefile if possible. Note, all info, warnings and errors
+# will appear in the makefile as comments.
+if makefile != None:
+ try:
+ makefilefh = open(makefile, "w")
+ except:
+ makefile = None
+ makefilefh = None
+ error("Failed to open " + makefile + ". STDOUT will be used instead.", makefilefh)
+
+info("Auto-generated makefile for stress-testing.\n\n", makefilefh)
+
+if options.targets == None:
+ error("Missing option \"targets\". Please ensure you have specified the number of targets required.\n\n", makefilefh)
+ sys.exit(2)
+
+if options.divisions == None:
+ info("Missing option \"divisions\". Defaulting to 1.\n\n", makefilefh)
+ options.divisions = 1
+
+# Commands to use in the main "worker" rules
+command_env = "echo Echoing PATH from $@ in a subshell; (echo PATH=$$PATH;)"
+command_echo_1 = "echo This is rule $@; echo PATH=$$PATH && echo TMP=$$TMP;"
+command_echo_2 = "echo Echoing PATH from $@ in a subshell; (echo PATH=$$PATH;)"
+command_echo_3 = "echo Echoing PATH from $@ in a subshell; (echo Another subshell; (echo PATH=$$PATH;))"
+command_cp_1 = "cp -f junk_file junk_file_copy_1_$@"
+command_cp_2 = "cp -f junk_file junk_file_copy_2_$@"
+command_cp_3 = "cp -f junk_file junk_file_copy_3_$@"
+command_cp_4 = "cp -f junk_file junk_file_copy_4_$@"
+command_sed_1 = "echo asdfsdf-----asdfasdfasdf-.txt | sed 's!.*-----!!g';"
+command_sed_2 = "echo 'ssss:33 x' | sed 's!.*:[0-9][0-9] *!!g'"
+
+# Default command list
+command_list = []
+
+if options.case == "env":
+ command_list = [command_env]
+elif options.case == "echo":
+ command_list = [command_echo_1, command_echo_2, command_echo_3]
+elif options.case == "cp":
+ command_list = [command_cp_1, command_cp_2, command_cp_3, command_cp_4]
+elif options.case == "sed":
+ command_list = [command_sed_1, command_sed_2]
+elif options.case in ["all", None]:
+ command_list = [command_env,
+ command_echo_1, command_echo_2, command_echo_3,
+ command_cp_1, command_cp_2, command_cp_3, command_cp_4,
+ command_sed_1, command_sed_2]
+else:
+ error("Unknown option for \"case\" option: %s. Reverting to defaults..." % (options.case), makefilefh)
+ command_list = [command_env,
+ command_echo_1, command_echo_2, command_echo_3,
+ command_cp_1, command_cp_2, command_cp_3, command_cp_4,
+ command_sed_1, command_sed_2]
+
+# Clean command to delete all the junk copy files
+clean = "rm -f junk_file_copy_*"
+
+total_targets = options.targets
+divisions = options.divisions
+quotient = total_targets/divisions
+remainder = total_targets - quotient*divisions
+
+writeline("main:", makefilefh)
+for i in range(divisions):
+ writeline("level_2_rule_%09d " % (i), makefilefh)
+writeline("\n\n", makefilefh)
+
+for i in range(divisions):
+ writeline("level_2_rule_%09d: " % (i), makefilefh)
+ for j in range(quotient):
+ writeline("level_1_rule_%09d " % (j + i*quotient), makefilefh)
+ writeline("\n\n", makefilefh)
+
+# Generate extra rule for the "remainder" targets
+if remainder > 0:
+ writeline("main:", makefilefh)
+ writeline("level_2_rule_%09d " % (divisions), makefilefh)
+ writeline("\n\n", makefilefh)
+ writeline("level_2_rule_%09d: " % (divisions), makefilefh)
+ for j in range(total_targets - remainder,total_targets):
+ writeline("level_1_rule_%09d " % (j), makefilefh)
+ writeline("\n\n", makefilefh)
+
+# Generate the level_1_rules - these are the ones that actually
+# execute commands.
+for i in range(total_targets):
+ writeline("level_1_rule_%09d: \n" % (i), makefilefh)
+ for command in command_list:
+ writeline("\t" + command + "\n", makefilefh)
+ writeline("\n\n", makefilefh)
+
+writeline("clean:\n", makefilefh)
+writeline("\t" + clean + "\n", makefilefh)
+writeline("\n", makefilefh)
+
+if makefile != None:
+ makefilefh.close()
\ No newline at end of file
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/mingw.tar.bz2
Binary file sbsv2/raptor/test/core_utils/mingw.tar.bz2 has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/msys.tar.bz2
Binary file sbsv2/raptor/test/core_utils/msys.tar.bz2 has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/core_utils/src/msys-sed-4.1.5-src.tar.gz
Binary file sbsv2/raptor/test/core_utils/src/msys-sed-4.1.5-src.tar.gz has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/1quarter.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/1quarter.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/2quarter.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/2quarter.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/all_nocompsupp.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/all_nocompsupp.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,387 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/allexport.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/allexport.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,788 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/allexport2.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/allexport2.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,389 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/little.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/little.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/preexport.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/preexport.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/syslib0.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/syslib0.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/syslib1.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/syslib1.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/envelope/syslib2.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/envelope/syslib2.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/logging/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/logging/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_MMPFILES
+simple.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/logging/simple.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/logging/simple.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,29 @@
+/*
+* 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:
+*
+*/
+
+TARGET test
+TARGETTYPE EXE
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+SOURCE test.cpp
+MACRO TEST_MACRO_THAT_DOES_NOTHING
+EPOCSTACKSIZE 8192
+EPOCHEAPSIZE 0x5000 65535
+EPOCPROCESSPRIORITY low
+capability TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/logging/test.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/logging/test.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,37 @@
+/*
+* 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:
+*
+*/
+#include "e32def.h" // intentional include
+
+char test[]="Simple test";
+
+TInt test1();
+TInt test2();
+TInt test3();
+TInt test4();
+TInt test5();
+TInt test6();
+
+TInt E32Main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
+ test6();
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/config/empty_cfg.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/config/empty_cfg.cfg Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,10 @@
+# test_hrh.hrh (based on Symbian_OS_v9.3.cfg)
+#
+# Copyright (c) Symbian Software Ltd 2004-2006. All rights reserved.
+#
+# This file gives the location of the file that specifies
+# configuration options for Symbian OS 9.3
+#
+# The following is a path relative to %EPOCROOT%
+#
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/config/invalid_cfg.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/config/invalid_cfg.cfg Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,10 @@
+# test_hrh.hrh (based on Symbian_OS_v9.3.cfg)
+#
+# Copyright (c) Symbian Software Ltd 2004-2006. All rights reserved.
+#
+# This file gives the location of the file that specifies
+# configuration options for Symbian OS 9.3
+#
+# The following is a path relative to %EPOCROOT%
+#
+metadata\include\missing_hrh.hrh
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/config/test_cfg.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/config/test_cfg.cfg Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,10 @@
+# test_hrh.hrh (based on Symbian_OS_v9.3.cfg)
+#
+# Copyright (c) Symbian Software Ltd 2004-2006. All rights reserved.
+#
+# This file gives the location of the file that specifies
+# configuration options for Symbian OS 9.3
+#
+# The following is a path relative to %EPOCROOT%
+#
+metadata\include\test_hrh.hrh
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/include/subdir/test_hrh_include.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/include/subdir/test_hrh_include.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+// test_hrh_include.h
+
+#ifndef TEST_HRH_INCLUDE
+#define TEST_HRH_INCLUDE
+#endif
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/include/test_hrh.hrh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/include/test_hrh.hrh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,1224 @@
+/*
+* Copyright (c) 2006-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:
+* test_hrh.hrh (base on Symbian_OS_v9.4.hrh)
+*
+*/
+
+#include
+
+
+/**
+@publishedAll
+
+EKA2
+
+If EKA2 is defined, assume Kernel Architecture 2.
+If EKA2 is not defined, assume Kernel Architecture 1
+
+Kernel Architecture 2 is a defining property of the Cedar platform.
+Kernel Architecture 1 is a defining property of the Beech platform.
+*/
+#ifndef EKA2
+#define EKA2
+#endif
+
+/**
+@publishedAll
+@deprecated
+@since 8.0
+
+SYMBIAN_CRYPTO
+
+*/
+#define SYMBIAN_CRYPTO
+
+/**
+@publishedAll
+
+__CNF_FORMAT_V2__
+
+If __CNF_FORMAT_V2__ is defined, assume that Epoccnf.pl generates
+files in version 2 of the CNF format, and that both versions 1
+and 2 of this file format can be read by Conarc.
+If __CNF_FORMAT_V2__ is not defined, assume that Epoccnf.pl
+generates files in version 1 of the CNF format, and that only
+version 1 of this file format can be read by Conarc.
+*/
+#define __CNF_FORMAT_V2__
+
+/**
+@publishedAll
+@deprecated
+@since 8.0
+
+__KEYSTORE_API_V2__
+
+*/
+#define __KEYSTORE_API_V2__
+
+/**
+@publishedAll
+
+__BLUETOOTH_API_V2__
+
+If __BLUETOOTH_API_V2__ is defined assume that version 2 of the bluetooth
+subsystem will be built. This is binary compatible with version 1 for all
+published-all APIs but is not source compatible. Users of classes defined
+in BTDevice.h and BTManClient.h may need to make source changes.
+
+The BTRegistry.dll is removed, users should link instead against BTManClient.lib.
+The APIs provided by that DLL were classified as published-partner.
+
+@see CBTDevice
+@see SGL.GT172.103 - Bluetooth Compatibility Specification
+
+If __BLUETOOTH_API_V2__ is not defined then version 1 of the bluetooth subsystem
+will be built.
+
+*/
+#define __BLUETOOTH_API_V2__
+
+
+/**
+@publishedAll
+
+__OBEX_USER_DEFINED_HEADERS__
+
+If __OBEX_USER_DEFINED_HEADERS__ is defined then the new API support for extended Headers will be available.
+This new support includes USER DEFINED HEADERS and the COUNT header.
+If this functionality is compiled out then the old API is available as before.
+For more information on see documents shown below.
+
+@see SGL.GT171.097 - Obex Header Extension how to
+@see SGL.GT171.095 - Obex Extension Design Document
+*/
+#define __OBEX_USER_DEFINED_HEADERS__
+
+
+/**
+@publishedAll
+
+__HIDE_IPC_V1__
+
+If __HIDE_IPC_V1__ is defined then the deprecated insecure IPC APIs will be removed from various Symbian OS header files. Classes affected include CSession, CServer, RMessage and RMessageptr.
+
+For more information see the document listed below.
+
+@see SMG.SM0005.004 - Platform Security Development for Zephyr
+@see CSession
+@see CServer
+@see RMessage
+@see RMessagePtr
+*/
+#define __HIDE_IPC_V1__
+
+
+/**
+@internalAll
+
+DO_NOT_USE_THIS_MACRO
+
+If DO_NOT_USE_THIS_MACRO is defined, assume the Cedar platform.
+If DO_NOT_USE_THIS_MACRO is not defined, assume the Beech platform.
+
+This macro was originally introduced as a stopgap measure, to
+identify differences between Symbian OS v7.0s and Symbian OS v8.0b
+which were not specifically to do with the change from Kernel
+Architecture 1 to Kernel Architecture 2.
+
+This macro will be deprecated when a suitable alternative is provided.
+*/
+
+#ifndef DO_NOT_USE_THIS_MACRO
+#define DO_NOT_USE_THIS_MACRO
+#endif
+
+/**
+@publishedAll
+
+__CONDITIONS_SCHEDULES_VALID__
+
+If __CONDITIONS_SCHEDULES_VALID__ is defined then the Task Scheduler component
+supports creating persistent schedules based on a set of conditions and a
+timeout. The schedule is run when either all the conditions are met or the
+timeout is reached.
+
+This functionality is part of PREQ694 - PREQ 694 - Automatic sending of SMS on
+network reconnection.
+*/
+
+#define __CONDITIONS_SCHEDULES_VALID__
+
+
+/**
+@publishedAll
+
+__JAVACUSTOMINSTALL__
+
+If __JAVACUSTOMINSTALL__ is defined then an additional UI callback is made after MIDlet
+installation has succeeded or failed. This callback is intended for information only and the
+information passed can be licensee customised. The intention would be that the device user
+can use this information to diagnose install problems in conjunction with network operators.
+If this #define is not present then the callback is not present and is not called.
+For more information on see documents shown below.
+
+@see SGL.GT0188.253 CDMA Java MIDlet Installer Component Design
+*/
+#define __JAVACUSTOMINSTALL__
+
+/**
+@publishedAll
+
+__UI_FRAMEWORKS_V2__
+
+If __UI_FRAMEWORKS_V2__ is defined then PlatSec aware UI Frameworks API's will be available.
+The following frameworks will be affected:
+
+Applications
+File Recognizers
+Data Recognizers
+Notifiers
+Control Panel Plugins
+Feps
+App-initialization (CEikLibrary)
+Converters
+Error-Resolving
+*/
+#define __UI_FRAMEWORKS_V2__
+#define SYMBIAN_HIDE_UI_FRAMEWORKS_V1
+#define SYMBIAN_REMOVE_UI_FRAMEWORKS_V1
+
+/**
+@publishedAll
+
+__BLUETOOTH_HCI_ALLOWS_AFH__
+
+If __BLUETOOTH_HCI_ALLOWS_AFH__ is defined the HCI interface will require the Adaptive Frequency Hopping CHCIBase pure virtual functions to be implemented in any derived class in Licensee produced host controller interface (HCI) code.
+If this is not defined no AFH commands may be sent to the host controller, and no AFH events will be received from the host controller.
+The APIs provided by the HCI DLL were classified as published-partner.
+
+@see CHCIBase
+@see MHCIEventObserver
+
+*/
+#define __BLUETOOTH_HCI_ALLOWS_AFH__
+
+/**
+@publishedAll
+
+__MESSAGING_API_V2__
+
+If __MESSAGING_API_V2__ is defined then new functionality
+is available within the Messaging sub-system to support a
+platform secured OS, e.g. the Attachment API.
+*/
+#define __MESSAGING_API_V2__
+#define __HIDE_MESSAGING_API_V1__
+#define __REMOVE_MESSAGING_API_V1__
+
+/**
+@internalAll
+
+__BC_FUTURE_PROOFING__
+
+Support for the implementation of PREQ743 "Introduction of interface
+robustness patterns to support future binary compatibility".
+*/
+#define __BC_FUTURE_PROOFING__
+
+/**
+@publishedAll
+
+__SECURE_DATA__
+
+When __SECURE_DATA__ is defined, public read-only files are
+assumed to be in their data-caged locations. The presence of
+this #define does not imply that data-caging is enforced, and
+does not imply that binaries have been relocated to sys\bin.
+
+This #define supports PREQ537 "Platform security - file system layout".
+*/
+#define __SECURE_DATA__
+
+/**
+@publishedPartner
+
+__SECURE_BIN__
+
+When __SECURE_BIN__ is defined, executable files stored as
+"data" in the XIP ROM are assumed to be in their data-caged
+locations. The presence of this #define does not imply that
+data-caging is enforced, and does not imply that binaries have
+been relocated to sys\bin.
+
+This #define supports PREQ537 "Platform security - file system layout".
+*/
+#define __SECURE_BIN__
+
+/**
+@publishedAll
+
+__SECURE_TELEPHONY__
+
+If __SECURE_TELEPHONY__ is defined, all Platform Security functionality
+within the Telephony subsystem will be enabled.
+If __SECURE_TELEPHONY__ is not defined, no Platform Security functionality
+within the Telephony subsystem is enabled.
+*/
+#define __SECURE_TELEPHONY__
+
+/**
+@publishedAll
+
+SYMBIAN_NETWORKING_PLATSEC
+
+If SYMBIAN_NETWORKING_PLATSEC is defined, additional platform security
+related functionality in enabled in the Comms-Infras and Networking
+subsystems (e.g. API policing).
+*/
+#define SYMBIAN_NETWORKING_PLATSEC
+
+/**
+@publishedAll
+
+__WATCHER_API_V2__
+
+If __WATCHER_API_V2__ is defined then the
+watcher framework supports ECOM watcher plugins.
+*/
+#define __WATCHER_API_V2__
+/**
+@publishedAll
+
+SYMBIAN_COREAPPS_API_V2
+
+If SYMBIAN_COREAPPS_API_V2 is defined then new functionality is available within
+the Core Apps sub-system (Contacts Model, Agenda Model and World Server) to
+support a platform secured OS.
+*/
+#define SYMBIAN_COREAPPS_API_V2
+
+
+/**
+@publishedAll
+
+SYMBIAN_COREAPPS_PLUGIN_API_V2
+
+If SYMBIAN_COREAPPS_PLUGIN_API_V2 is defined then Ecom solely is used as loading
+mechanism.The legacy plugin loading mechanism is used otherwise.
+*/
+#define SYMBIAN_COREAPPS_PLUGIN_API_V2
+
+/**
+@PublishedPartner
+
+SYMBIAN_SECURE_DBMS
+
+When SYMBIAN_SECURE_DBMS is defined, support for secure
+shared databases is enabled within DBMS.
+When not defined, all secure-shared-database-specific APIs
+take the form of dummy implementations which return KErrNone.
+*/
+#define SYMBIAN_SECURE_DBMS
+
+/**
+@publishedPartner
+
+__SECURE_SOFTWARE_INSTALL__
+
+When __SECURE_SOFTWARE_INSTALL__ is defined, the Software
+Install APIs are replaced with versions appropriate to
+the Secure Platform.
+
+This #define supports PREQ56 "Software install enhancements"
+*/
+#define __SECURE_SOFTWARE_INSTALL__
+
+/**
+@publishedAll
+
+__SECURITY_PLATSEC_ARCH__
+
+If this macro is defined, then platform security aware security services
+APIs will be present. This includes architectural changes to several
+components.
+
+If this macro is not defined, the original version (since 8.0) of the
+security services APIs will be present.
+
+The following components are affected:
+ cryptotokens
+ certman
+ filetokens
+
+*/
+#define __SECURITY_PLATSEC_ARCH__
+
+/**
+@publishedAll
+
+SYMBIAN_SECURE_ECOM
+
+When SYMBIAN_SECURE_ECOM is not defined, ECOM plugins are discovered by
+searching for DLLs in System\libs\plugins, and inferring the name of
+the resource file from the UID3 of the DLL.
+
+When SYMBIAN_SECURE_ECOM is defined, ECOM plugins will also be discovered
+by searching for resource files in \Resource\Plugins, and inferring the
+name of the DLL from the name of the resource file. When platform security
+is fully enforced, only this new style of discovery will work.
+
+@see common\generic\syslibs\documentation\syslibs_functional_specification.doc
+*/
+#define SYMBIAN_SECURE_ECOM
+
+/**
+@publishedAll
+
+SYMBIAN_SECURITY_CAF_RFILE_HANDLE
+
+If SYMBIAN_SECURITY_CAF_RFILE_HANDLE is defined then it enables the Content Access
+Framework to read from files passed to it as an open RFile handles instead of CAF
+opening the file itself. This allows files stored in a data caged directory to be
+read by CAF.
+
+*/
+#define SYMBIAN_SECURITY_CAF_RFILE_HANDLE
+
+/**
+@publishedPartner
+
+SYMBIAN_C32ROOT_API_V2
+
+Strengthens the C32Root API and extends it to include
+configuration of queue length for bindings.
+
+This #define supports PREQ318.
+*/
+#define SYMBIAN_C32ROOT_API_V2
+
+/**
+@publishedPartner
+
+SYMBIAN_ESOCK_V3
+
+If SYMBIAN_ESOCK_V3 is defined, the socket server allows protocol
+families to run in individual threads to protect one protocol family
+from the behaviour of another. The allocation of protocol families to
+threads is determined by a naming convention on the ESK files.
+
+This #define supports PREQ318.
+*/
+#define SYMBIAN_ESOCK_V3
+
+/**
+@publishedPartner
+
+SYMBIAN_UIKON_UNIFICATION
+
+When SYMBIAN_UIKON_UNIFICATION is defined, the existing
+CEikSrvAppUiBase class is replaced with a customisable class
+provided by the System GUI.
+
+This #define supports PREQ819 and PREQ826
+*/
+#define SYMBIAN_UIKON_UNIFICATION
+
+/**
+@publishedPartner
+@released 9.0
+
+SYMBIAN_NETWORKING_RSUBCONNECTION
+
+If SYMBIAN_NETWORKING_RSUBCONNECTION is defined, the RQosChannel API is
+removed, and the RSubConnection API exported by ESOCK must be used instead.
+
+This #define supports PREQ 26.
+*/
+#define SYMBIAN_NETWORKING_RSUBCONNECTION
+
+/**
+@publishedAll
+
+SYMBIAN_UI_FRAMEWORKS_CONTROL_API_V2
+
+If SYMBIAN_UI_FRAMEWORKS_CONTROL_API_V2 is defined then
+the following additional features will be available in CONE.
+1) Functions to set and get the background of a control.
+2) Functions to add components to a compound control in a simpler way.
+3) Hooks for the support of layout managers.
+4) A component that will provide fonts and cache them for easier use
+ of these fonts by controls.
+
+@see CCoeControl
+*/
+#define SYMBIAN_UI_FRAMEWORKS_CONTROL_API_V2
+
+/**
+@publishedPartner
+
+SYMBIAN_SECURE_MIDLET_INSTALL
+
+If SYMBIAN_SECURE_MIDLET_INSTALL is defined then the Java MIDlet
+Installer supports installation under Platform Security policies,
+using the interface published by security\JavaMIDletInstaller.
+
+If SYMBIAN_SECURE_MIDLET_INSTALL is not defined then Java MIDlet
+installation is achieved through the security\appinst interfaces.
+*/
+#define SYMBIAN_SECURE_MIDLET_INSTALL
+
+/**
+@publishedAll
+
+__SECURE_BACKUP__
+
+If __SECURE_BACKUP__ is defined, the Secure Backup server replaces
+the use of SCRemFs for backup and restore, changing the backup protocol.
+Applications which have private data need to provide additional backup
+registration files, and may use Publish & Subscribe to receive
+notification of backup requests.
+
+This #define supports PREQ716 - Provide support for secure backup and
+restore for licensee PC Connectivity software
+*/
+#define __SECURE_BACKUP__
+
+/**
+@published All
+
+SYMBIAN_COMMS_REPOSITORY
+
+Comms data is now stored in the Central Repository rather than the DBMS server.
+A new module, CommsDat.dll, replaces Commdb.dll as the interface for comms data stored on a device.
+CommsDat has a different API to Commdb, but provides equivalent functionality.
+There is no longer an SQL API for access to Comms Data.
+Commdb tools have been migrated for use with CommsDat
+Commdb is deprecated and should not be used, though it remains as a temporary BC shim on top of CommsDat.
+*/
+#define SYMBIAN_COMMS_REPOSITORY
+
+/**
+@publishedAll
+
+__HIDE_WATCHER_API_V1__
+
+Hides support APIs for loading non-ECOM watcher plugins. Non-ECOM watcher
+plugins are still loaded. The associated define __REMOVE_WATCHER_API_V1__
+removes the implementation of the support APIs.
+
+Assumes that __WATCHER_API_V2__ has been defined.
+*/
+#define __HIDE_WATCHER_API_V1__
+#define __REMOVE_WATCHER_API_V1__
+
+/**
+@publishedAll
+
+SYMBIAN_NETWORKING_REMOVE_RGENERIC
+
+If this macro is defined the deprecated APIs RGenericAgent,
+RNif, RNifMonitor and Nifman are removed. All of these APIs,
+exported by NIFMAN, have been deprecated and replaced by
+the RConnection API exported by ESOCK.
+
+@see Break request BR1070
+*/
+#define SYMBIAN_NETWORKING_REMOVE_RGENERIC
+
+/**
+@publishedPartner
+
+SYMBIAN_IGNORE_BIN_TARGETPATH
+
+When SYMBIAN_IGNORE_BIN_TARGETPATH is defined the TARGETPATH keyword in MMP files is ignored for executables.
+Executables for the emulator instead get built to the default location.
+e.g. \epoc32\release\winscw\udeb
+*/
+#define SYMBIAN_IGNORE_BIN_TARGETPATH
+
+/**
+@publishedAll
+
+SYMBIAN_HIDE_COREAPPS_API_V1
+
+If SYMBIAN_HIDE_COREAPPS_API_V1 is defined then the insecure CoreApps APIs
+will be removed from various Symbian OS header files. Components affected are
+Contacts Model, Agenda Model and World Server.
+
+The related define SYMBIAN_REMOVE_COREAPPS_API_V1 removes the underlying implementations,
+causing a binary compatibility break to match the source compatibility break.
+*/
+#define SYMBIAN_HIDE_COREAPPS_API_V1
+#define SYMBIAN_REMOVE_COREAPPS_API_V1
+
+/**
+@publishedAll
+
+__SECURE_API__
+
+Hides unsecure APIs. Many of these have been replaced by Secure variants
+but some are no longer available in a Secure platform.
+
+e.g.
+
+@see User::RenameThread
+@see User::CommandLine
+
+*/
+#define __SECURE_API__
+#define SYMBIAN_REMOVE_INSECURE_API
+
+/**
+@publishedPartner
+@since 8.1
+
+SYMBIAN_BLUETOOTH_REQUIRES_HCI_FLUSH_COMPLETE_EVENT
+
+If this is defined, the MHCIEventObserver class must implement
+the FlushCompleteEvent virtual function, which will be used by
+the link manager to send Flush Complete events up to the stack.
+If this macro is not defined, Flush Complete events will be discarded.
+
+@see MHCIEventObserver
+@see CHCIFacade
+*/
+#define SYMBIAN_BLUETOOTH_REQUIRES_HCI_FLUSH_COMPLETE_EVENT
+
+/**
+@publishedPartner
+
+SYMBIAN_FONT_METRICS_V2
+
+If this is defined, then classes which derive from COpenFont (usually
+these are part of a font rasterizer implementation) must set the
+protected member variables:
+iFontAscentOfCapitals
+iFontAscentIncAccents
+iFontDescent
+iFontLineGap
+to appropriate values during the creation of a font.
+If this macro is not defined then these member variables do not exist.
+
+@see COpenFont
+*/
+#define SYMBIAN_FONT_METRICS_V2
+
+/**
+@publishedPartner
+
+SYMBIAN_GRAPHICS_ALPHA_SUPPORT_V1
+
+When SYMBIAN_GRAPHICS_ALPHA_SUPPORT_V1 is defined a new EColor16MA
+display mode is available, having an alpha channel. The alpha support
+is tailored to the needs of wserv server-side, although some alpha
+support will also be available to client applications.
+
+This #define supports PREQ915.
+*/
+#define SYMBIAN_GRAPHICS_ALPHA_SUPPORT_V1
+
+/**
+@publishedPartner
+
+SYMBIAN_TELEPHONY_IMS
+
+If SYMBIAN_TELEPHONY_IMS is defined then IMS related APIs are included
+in Telephony components.
+
+This #define supports PREQ61.
+*/
+#define SYMBIAN_TELEPHONY_IMS
+
+/**
+@internalComponent
+
+__LEAVE_EQUALS_THROW__
+
+If __LEAVE_EQUALS_THROW__ is defined, User::Leave() and TRAP() are
+implemented in terms of C++ exceptions where the compiler supports this.
+If __LEAVE_EQUALS_THROW__ is not defined, the legacy Symbian exception
+mechanism is used instead.
+
+Support for C++ exceptions by the compiler is indicated by the
+internal macro __SUPPORT_CPP_EXCEPTIONS__ supplied by the tools.
+Where this macro is not present, __LEAVE_EQUALS_THROW__ is automatically
+undefined.
+
+This macro supports PREQ519 "Implement User::Leave() in terms of throw()".
+*/
+#define __LEAVE_EQUALS_THROW__
+
+/**
+@publishedPartner
+
+SYMBIAN_CAF_V2
+
+The SYMBIAN_CAF_V2 flag indicates the CAF API v2 is present.
+CAF v2 supports files containing multiple content objects, which requires
+a change of API for CAF agents: agents written for CAF v1 will not compile
+against CAF v2. See BR.1219.2 for migration information.
+
+This #define supports PREQ780.
+*/
+#define SYMBIAN_CAF_V2
+
+/**
+@publishedAll
+
+SYMBIAN_MDF_API_V2
+
+This macro selects the Symbian OS 9.x phase of development in
+the Media Device Framework API, including changes to enable
+MDF Video Decoder Hardware devices to support applications,
+streaming and demux.
+
+@see CMMFVideoPlayHwDevice
+*/
+#define SYMBIAN_MDF_API_V2
+
+/**
+SYMBIAN_GENERIC_SYSTEM_STARTUP
+
+@publishedPartner
+
+This #define enables the generic start-up architecture in
+which the System Starter process is responsible for the
+controlled startup of the system.
+
+The #define supports PREQ808 and PREQ809.
+*/
+#define SYMBIAN_GENERIC_SYSTEM_STARTUP
+
+/**
+SYMBIAN_STAGED_SYSTEM_STARTUP
+
+@publishedPartner
+
+When SYMBIAN_STAGED_SYSTEM_STARTUP is defined, the staged
+start-up architecture has been introduced into the OS and
+'Start-up State Aware' components can make use of the
+architecture.
+
+This #define supports PREQ 810.
+*/
+#define SYMBIAN_STAGED_SYSTEM_STARTUP
+
+/**
+SYMBIAN_TIMEZONE_SUPPORT_V1
+
+@publishedAll
+
+When SYMBIAN_TIMEZONE_SUPPORT_V1 is defined the App-services TzClient.dll
+module (and accompanying import library) is made available for client
+application use.
+
+This #define supports PREQ663
+*/
+#define SYMBIAN_TIMEZONE_SUPPORT_V1
+
+/**
+SYMBIAN_ECAM_CHUNKAPI
+
+@publishedAll
+@released
+
+Specifies that an extended API will be used in the multimedia
+camera interface. This has a v2 observer which allows camera data
+to be returned without buffer copy, and also allows clients to set
+camera access priority
+
+@see CCamera
+@see MCameraObserver2
+
+This #define supports PREQ799.
+*/
+#define SYMBIAN_ECAM_CHUNKAPI
+
+/**
+@publishedAll
+
+SYMBIAN_SECURE_PUBLISH_AND_SUBSCRIBE
+
+If this macro is defined, then the Bluetooth stack reconfigures to take
+advantage of security mechanisms in Publish and Subscribe. Any other
+components requiring reconfiguration to make use of Publish and Subscribe
+can also use this macro.
+
+*/
+#define SYMBIAN_SECURE_PUBLISH_AND_SUBSCRIBE
+
+/**
+@publishedAll
+
+SYMBIAN_MMF_AUTOPAUSE_RESUME
+
+This #define enables extra features in the MMF APIs for auto pause
+and resume of audio streams.
+*/
+#define SYMBIAN_MMF_AUTOPAUSE_RESUME
+
+/**
+@publishedPartner
+
+SYMBIAN_BLUETOOTH_ESCO_ENABLED
+
+Enable support for Bluetooth eSCO synchronous links.
+Defining this macro extends the interface to CHCIBase to support
+the Synchronous connection commands added in Bluetooth 1.2.
+*/
+#define SYMBIAN_BLUETOOTH_ESCO_ENABLED
+
+/**
+SYMBIAN_ROM_STATIC_PLUGIN_INFORMATION
+
+@publishedPartner
+
+This macro enables a consolidation phase in the ROM building
+process to generate additional metadata for each ROM drive.
+The metadata describes the content and structure of the ROM
+conveniently filtered for any component that requires it.
+
+Components supply metadata with the "spidata" BUILDROM keyword.
+
+This macro supports PREQ806 and other requirements that
+eliminate run-time scanning of ROM content.
+*/
+#define SYMBIAN_ROM_STATIC_PLUGIN_INFORMATION
+
+/**
+@publishedPartner
+
+SYMBIAN_BOOKMARK_DATABASE
+
+The Bookmark Database is an API used to provide system-wide
+storage and management functionality for URI bookmarks.
+If defined, this macro indicates that the Bookmark Database
+API is present in the platform.
+*/
+#define SYMBIAN_BOOKMARK_DATABASE
+
+/**
+@publishedAll
+
+SYMBIAN_ASSUME_SECURE_DATA
+
+When this macro is defined, all data files are assumed to be in their secure
+locations, and all code which provided backward compatibility for the
+insecure locations is removed. For example, ICL extended resource files
+will not be loaded from System\Libs\Plugins, only from \Resource\ICL.
+
+This macro only makes sense if __SECURE_DATA__ is defined.
+*/
+#define SYMBIAN_ASSUME_SECURE_DATA
+
+/**
+@publishedPartner
+
+SYMBIAN_SWI_POST_INSTALL_REVOCATION
+
+When SYMBIAN_SWI_POST_INSTALL_REVOCATION is defined,
+support for the SWI post install revocation service is enabled.
+
+This #define supports PREQ919
+*/
+#define SYMBIAN_SWI_POST_INSTALL_REVOCATION
+
+/**
+@publishedAll
+
+SYMBIAN_REMOVE_TRIVIAL_ENCRYPTION
+
+This macro removes the trivial encryption APIs that are exported by EUSER.
+
+See BR1320 for more details
+
+*/
+#define SYMBIAN_REMOVE_TRIVIAL_ENCRYPTION
+
+/**
+@publishedPartner
+
+SYMBIAN_FLEXIBLE_ALARM
+
+When this macro is defined, Calendar Interim API, Alarm server and UIKON
+Alert Server will support additional functionality.
+- Extra data can be attached to calendar alarm and allow UI app
+to retrieve the associated data.
+- The Alarm server can send multiple expired alarms to Alert Server without
+waiting for the previous alarm acknowledged first
+- A Resource file can be used to configure alarm play intervals and durations,
+or to disable alarm sound control.
+
+This #define supports PREQ1118
+*/
+#define SYMBIAN_FLEXIBLE_ALARM
+
+/**
+@publishedPartner
+
+SYMBIAN_C32_SERCOMMS_V2
+
+Description:
+If SYMBIAN_C32_SERCOMMS_V2 is defined, the Comms Server allows grouped CSYs
+to get loaded into individual threads in order to avoid CSY blocking.
+The allocation of CSYs to threads is determined by naming convention from
+the configurator/INI file.
+
+This #define supports PREQ890
+*/
+//#define SYMBIAN_C32_SERCOMMS_V2
+
+/**
+@publishedPartner
+
+SYMBIAN_SMS_REL6_SUPPORT
+
+SMS Release 6 support is defined in the 3GPP specifications
+(3GPP TS 23.040 V6.5.0 and 3GPP TS 23.038 V6.1.0).
+If defined, this macro indicates that Symbian OS SMS APIs
+shall support Release 6 functionality.
+*/
+#define SYMBIAN_SMS_REL6_SUPPORT
+
+/**
+@publishedPartner
+
+SYMBIAN_HCI_API_V2
+
+If SYMBIAN_HCI_API_V2 is defined then the HCI APIs provided in PREQ750
+(Bluetooth HCI improvements) will be required for use by a version 2
+Bluetooth Stack and a version 2 HCI. These APIs are neither binary nor
+source compatible with the previous version 1 HCI APIs. Both the original
+version 1 Bluetooth stack and HCI, and the new version 2 Bluetooth stack
+and HCI will be built, but both rombuild and the emulator will be
+configured to use the version 2 binaries. The version 2 HCI will support
+all commands and events listed in Bluetooth v2.0 specification.
+
+If SYMBIAN_HCI_API_V2 is not defined then only the version 1 Bluetooth
+stack and HCI will be built and used by rombuild and the emulator.
+The version 1 HCI supports most but NOT all commands and events listed
+in Bluetooth v2.0 specification.
+
+See BR1613 for more information.
+*/
+//#define SYMBIAN_HCI_API_V2
+
+/**
+@publishedPartner
+
+SYMBIAN_NETWORKING_UMTSR5
+
+If SYMBIAN_NETWORKING_UMTSR5 is defined support for the QoS
+and IMS parameters introduced by Release 5 of the 3GPP
+specification will be enabled. This involves a BC break in
+TContextConfig - see BR1582.1 for details.
+
+@see TContextConfig
+
+This #define supports PREQ192 and PREQ635.
+*/
+#define SYMBIAN_NETWORKING_UMTSR5
+
+/**
+@publishedPartner
+
+SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+If SYMBIAN_NETWORKING_3GPPDEFAULTQOS is defined, support
+for QoS modification on the default PDP context will be
+enabled via the RSubconnection API.
+
+This #define supports PREQ870.
+*/
+#define SYMBIAN_NETWORKING_3GPPDEFAULTQOS
+
+/**
+@publishedAll
+
+SYMBIAN_NETWORKING_WIFI
+
+If SYMBIAN_NETWORKING_WIFI is defined the following WiFi
+functionality is enabled:
+1) New WiFi components can be built.
+2) WiFi specific CommsDat tables are enabled.
+
+This #define supports PREQ719 and PREQ1054.
+*/
+#define SYMBIAN_NETWORKING_WIFI
+
+/**
+@internalTechnology
+
+SYMBIAN_COMMSDEBUGUTILITY_V2
+
+If SYMBIAN_COMMSDEBUGUTILITY_V2 is defined then COMSDBGUTIL.DLL
+becomes a thin layer over the System Tracer. Users of CCFLogIf class
+have to migrate to use the __FLOG macros instead.
+
+This change also affects the way that CommsDebugUtility logging is
+controlled, and the format of the logs produced. See BR1632 and BR1715.
+*/
+//#define SYMBIAN_COMMSDEBUGUTILITY_V2
+
+/**
+@publishedPartner
+
+SYMBIAN_LFFS_SIBLEY_NORFLASH
+
+If SYMBIAN_LFFS_SIBLEY_NORFLASH is defined support for LFFS on
+Intel Sibley NOR flash is enabled.
+
+This #define supports PREQ912 and involves a BC break in the
+parameter list for DMediaDriverFlash::Caps() - see BR1680 for details.
+*/
+//#define SYMBIAN_LFFS_SIBLEY_NORFLASH
+
+/**
+@publishedAll
+
+SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+If SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY is defined
+then the comms-infras framework supports the management plane
+with the RCommsManager API providing support for connection
+selection, bearer mobility and other functionality.
+
+This #define supports PREQ 1060.
+*/
+//#define SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+/**
+@publishedPartner
+
+SYMBIAN_NETWORKING_IPSEC_IKE_V2
+
+If SYMBIAN_NETWORKING_IPSEC_IKE_V2 is defined, IPSEC will
+be able to support Internet Key Exchange version 2 in
+addition to IKE v1. This involves a change in the size of
+the TPfkeyMsgBase class - see BR1736.1.
+
+Actual support for IKE v2 will depend on the provision
+of a suitable plugin to the Key Management Daemon.
+
+This #define supports PREQ1223.
+*/
+#define SYMBIAN_NETWORKING_IPSEC_IKE_V2
+
+/**
+@publishedPartner
+
+SYMBIAN_PKCS12
+
+If SYMBIAN_PKCS12 is defined, the PKCS#12 Key Derivation
+Algorithm is supplied.
+
+This #define supports PREQ1054.
+*/
+#define SYMBIAN_PKCS12
+
+/**
+@publishedAll
+
+SYMBIAN_CNTMODEL_V2
+
+If SYMBIAN_CNTMODEL_V2 is defined, clients of the
+Contacts Model can exploit the efficiency improvements
+introduced by PREQ811, e.g. efficient use of transactions.
+
+This #define supports PREQ811
+*/
+#define SYMBIAN_CNTMODEL_V2
+
+/**
+@publishedAll
+
+SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS
+
+If SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS is defined, new
+APIs are provided in cone.lib and ws32.lib which allow
+applications to draw to multiple displays simultaneously and
+react to a change of the active display.
+
+This #define supports PREQ1227
+
+@see CCoeEnv::ScreenDevice
+@see CScreenItem
+*/
+//#define SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS
+
+/**
+@publishedPartner
+
+SYMBIAN_CENTREP_NOC
+
+If SYMBIAN_CENTREP_NOC is defined, the Central Repository
+includes Notify-Only Client Optimization. This will cause
+repositories to be unloaded after a timeout even if the
+connection is still open.
+
+This #define supports PREQ1228.
+*/
+#define SYMBIAN_CENTREP_NOC
+
+/**
+@publishedAll
+
+SYMBIAN_VARIABLE_BITRATE_CODEC
+
+If SYMBIAN_VARIABLE_BITRATE_CODEC is defined then
+CMMFSwCodecWrapper based audio hardware devices in the
+Multimedia Framework (MMF) can support variable bitrate codecs.
+
+@see CMMFSwCodecWrapper
+*/
+#define SYMBIAN_VARIABLE_BITRATE_CODEC
+
+/**
+@publishedAll
+
+SYMBIAN_SWTRACER_V1
+
+When defined, the new System Wide Tracer APIs are available.
+
+@see SWT::RTracer
+
+This #define supports PREQ505
+*/
+//#define SYMBIAN_SWTRACER_V1
+
+/**
+@publishedPartner
+
+SYMBIAN_TELEPHONY_USAT5
+
+If SYMBIAN_TELEPHONY_USAT5 is defined then support for 3GPP
+Release 5 (U)SAT will be enabled.
+
+@see RSat::TCallControlV5
+
+This #define supports PREQ1234.
+*/
+#define SYMBIAN_TELEPHONY_USAT5
+
+/**
+@publishedAll
+
+SYMBIAN_MULTIMEDIA_CODEC_API
+
+If SYMBIAN_MULTIMEDIA_CODEC_API is defined then support is
+available for PREQ1024 delivered Processing Unit or
+OpenMAX based codecs and Multimedia hardware devices.
+*/
+#define SYMBIAN_MULTIMEDIA_CODEC_API
+
+/**
+@publishedAll
+
+SYMBIAN_CURB_SYSTEMSERVER_PRIORITIES
+
+If SYMBIAN_CURB_SYSTEMSERVER_PRIORITIES is defined, threads at
+priority SystemServer/More (i.e. process priorities EPriorityFileServer,
+EPriorityWindowServer or EPrioritySupervisor with relative thread priority
+EPriorityMore) are mapped to absolute priority 23, equal to the highest
+priority available to normal applications. This lowers the Window Server
+and File Server priorities so application threads can timeslice with them,
+benefitting audio and other pseudo real-time applications.
+
+If SYMBIAN_CURB_SYSTEMSERVER_PRIORITIES is not defined, these system server
+priorities remain at 24, preempting all normal user application threads.
+
+This #define supports PREQ955, and BR1821.
+*/
+#define SYMBIAN_CURB_SYSTEMSERVER_PRIORITIES
+
+/**
+@publishedPartner
+
+SYMBIAN_APPARC_APPINFO_CACHE
+
+If SYMBIAN_APPARC_APPINFO_CACHE is defined then apparc creates
+a file of application information on the first boot, which is
+used during subsequent boots for application information.
+*/
+#define SYMBIAN_APPARC_APPINFO_CACHE
+
+/**
+@publishedAll
+
+SYMBIAN_ENABLE_MMF_MULTISCREEN_SUPPORT
+
+If SYMBIAN_ENABLE_MMF_MULTISCREEN_SUPPORT is defined then
+the Multimedia Framework (MMF) can support video playback on
+a secondary display. The default screen will be the screen
+number in the cone environment.
+
+@see CVideoPlayerUtility
+*/
+#define SYMBIAN_ENABLE_MMF_MULTISCREEN_SUPPORT
+
+/**
+@publishedAll
+
+SYMBIAN_USE_MMF_RUF_RECOGNIZER
+
+If SYMBIAN_USE_MMF_RUF_RECOGNIZER is defined, the MMF recognizer is able to
+recognize formats such as MPEG4, MPEG2, AAC and Divx.
+*/
+#define SYMBIAN_USE_MMF_RUF_RECOGNIZER
+
+/**
+@publishedAll
+
+SYMBIAN_NETWORKING_EAP
+
+If SYMBIAN_NETWORKING_EAP is defined the following
+functionality is affected:
+1) Generic EAP-Framework Components built
+2) Generic Support EAP-MSCHAPv2, PEAPv0, EAP-TTLS, EAP-TLS, EAP-SIM and EAP-AKA enabled
+3) WiFi specific EAP Framework and EAP Methods not built
+
+This #define supports PREQ1623.
+*/
+//#define SYMBIAN_NETWORKING_EAP
+
+/**
+@publishedAll
+
+SYMBIAN_EXTENDED_COMPOSITE_FILESYSTEM
+
+If SYMBIAN_EXTENDED_COMPOSITE_FILESYSTEM is defined, the Composite
+File System allows more than one ROFS partition to be included in
+the composite Z: drive.
+
+This #define supports PREQ1085
+*/
+#define SYMBIAN_EXTENDED_COMPOSITE_FILESYSTEM
+
+/**
+@publishedPartner
+
+SYMBIAN_SUPPORT_LINKED_FONTS
+
+If SYMBIAN_SUPPORT_LINKED_FONTS is defined then APIs are provided
+to create 'linked' font instances which combine glyph sets from
+multiple existing font glyph sets.
+
+@see CLinkedTypefaceElement
+@see CLinkedTypefaceSpecification
+
+This #define supports PREQ1431.
+*/
+#define SYMBIAN_SUPPORT_LINKED_FONTS
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/bad_lone_end.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/bad_lone_end.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+/*
+* 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 failure in PRJ_EXTENSIONS by processing for ARMV5 and
+// test for failure in PRJ_TESTEXTENSIONS by processing for WINSCW
+
+#ifdef EABI
+
+PRJ_EXTENSIONS
+// an END without a START
+END
+
+#else
+
+PRJ_TESTEXTENSIONS
+// an END without a START
+END
+
+#endif
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/default_plats.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/default_plats.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,21 @@
+/*
+* Copyright (c) 2006-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_PLATFORMS
+DEFAULT
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/default_plats_minus_plat.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/default_plats_minus_plat.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 2006-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_PLATFORMS
+DEFAULT -WINSCW
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/exports.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/exports.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,46 @@
+/*
+* 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:
+*
+*/
+PRJ_EXPORTS
+export1.h // %EPOCROOT%epoc32\include\export1.h
+export2.h export_test/export2.h // %EPOCROOT%epoc32\include\export_test\export2.h
+export3.h ../export_test/export3.h // %EPOCROOT%epoc32\export_test\export3.h
+export4.h /export_test_abs/export4.h // \export_test_abs\export4.h
+export5.h /epoc32/export_test_abs/export5.h // %EPOCROOT%epoc32\export_test_abs\export5.h
+export6.h |../export_test_rel/\export6.h // ..\export_test_rel\export6.h
+export7.h |/export_test_rel/export7.h // .\export_test_rel\export7.h
+export8.h |export_test_rel/export8.h // .\export_test_rel\export8.h
+:zip export9.zip // %EPOCROOT%
+:zip export10.zip export_test // %EPOCROOT%export_test
+:zip export11.zip /export_test // \export_test
+:zip export12.zip /epoc32/export_test // %EPOCROOT%epoc32\export_test
+export13.rsc z:/resource/app/export13.rsc // %EPOCROOT%epoc32\data\z\resource\app\export13.rsc
+
+PRJ_TESTEXPORTS
+testexport1.h // .\testexport1.h (as exports over itself!)
+testexport2.h export_test_rel/testexport2.h // .\export_test_rel\testexport2.h
+testexport3.h ../export_test_rel/testexport3.h // ..\export_test_rel\testexport3.h
+testexport4.h /export_test_abs/testexport4.h // \export_test_abs\testexport4.h
+testexport5.h /epoc32/export_test_abs/testexport5.h // %EPOCROOT%epoc32\export_test_abs\testexport5.h
+testexport6.h |../export_test_rel/testexport6.h // ..\export_test_rel\testexport6.h
+testexport7.h |/export_test_rel/testexport7.h // .\export_test_rel\testexport7.h
+testexport8.h |export_test_rel/testexport8.h // .\export_test_rel\testexport8.h
+:zip testexport9.zip // %EPOCROOT%
+:zip testexport10.zip export_test // %EPOCROOT%export_test
+:zip testexport11.zip /export_test // \export_test
+:zip testexport12.zip /epoc32/export_test // %EPOCROOT%epoc32\export_test
+testexport13.rsc z:/resource/app/testexport13.rsc // %EPOCROOT%epoc32\data\z\resource\app\testexport13.rsc
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/extensions.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/extensions.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,66 @@
+/*
+* 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:
+*
+*/
+PRJ_EXTENSIONS
+
+START EXTENSION test/dummyextension1
+ TARGET dummyoutput1.exe
+ SOURCES dummysource11.cpp dummysource12.cpp dummysource13.cpp
+ DEPENDENCIES dummylib11.lib dummylib12.lib
+ TOOL dummytool1.exe
+ OPTION option11 option11value
+ OPTION option12 $(MAKE_VAR)
+END
+
+START EXTENSION test/dummyextension2
+ TARGET dummyoutput2.exe
+ SOURCES dummysource21.cpp dummysource22.cpp dummysource23.cpp
+ DEPENDENCIES dummylib21.lib dummylib22.lib
+ TOOL dummytool2.exe
+ OPTION option21 option21value
+ OPTION option22 $(MAKE_VAR)
+END
+
+// Note that variable prefixed TEMs are supported only for Raptor testing
+START EXTENSION $(SBS_HOME)/test/dummyextension3
+ TARGET dummyoutput3.exe
+ SOURCES dummysource31.cpp dummysource32.cpp dummysource33.cpp
+ DEPENDENCIES dummylib31.lib dummylib32.lib
+ TOOL dummytool3.exe
+ OPTION option31 option31value
+ OPTION option32 $(MAKE_VAR)
+END
+
+
+PRJ_TESTEXTENSIONS
+
+START EXTENSION test/dummytestextension1
+ TARGET dummytestoutput1.exe
+ SOURCES dummytestsource11.cpp dummytestsource12.cpp dummytestsource13.cpp
+ DEPENDENCIES dummytestlib11.lib dummytestlib12.lib
+ TOOL dummytesttool1.exe
+ OPTION optiontest11 optiontest11value
+ OPTION optiontest12 $(MAKE_VAR)
+END
+
+START EXTENSION test/dummytestextension2
+ TARGET dummytestoutput2.exe
+ SOURCES dummytestsource21.cpp dummytestsource22.cpp dummytestsource23.cpp
+ DEPENDENCIES dummytestlib21.lib dummytestlib22.lib
+ TOOL dummytesttool2.exe
+ OPTION optiontest21 optiontest21value
+ OPTION optiontest22 $(MAKE_VAR)
+END
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/includes/dir1/dir2/up_dir.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/includes/dir1/dir2/up_dir.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+*
+*/
+// up_dir.inf
+
+#include "../../dir3/down_dir.inf"
+
+PRJ_EXPORTS
+up_dir_export_source.h up_dir_export_destination.h
+
+PRJ_MMPFILES
+up_dir.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/includes/dir3/down_dir.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/includes/dir3/down_dir.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,23 @@
+/*
+* 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:
+*
+*/
+// down_dir.inf
+
+PRJ_EXPORTS
+down_dir_export_source.h down_dir_export_destination.h
+
+PRJ_MMPFILES
+down_dir.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/includes/top_level.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/includes/top_level.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+*
+*/
+// top_level.inf
+
+#include "dir1/dir2/up_dir.inf"
+
+PRJ_EXPORTS
+top_level_export_source.h top_level_export_destination.h
+
+PRJ_MMPFILES
+top_level.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/multiple_plats.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/multiple_plats.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,21 @@
+/*
+* Copyright (c) 2006-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_PLATFORMS
+ARMV5 WINSCW TOOLS
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/no_plats.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/no_plats.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 2006-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_PLATFORMS
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/no_prj_platforms.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/no_prj_platforms.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,18 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/bld.infs/single_plat.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/single_plat.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,21 @@
+/*
+* Copyright (c) 2006-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_PLATFORMS
+ARMV5
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/includes/dir1/dir2/up_dir.mmh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/includes/dir1/dir2/up_dir.mmh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,23 @@
+/*
+* 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:
+*
+*/
+// up_dir.mmh
+
+SOURCEPATH .
+SOURCE up_dir.cpp
+
+#include "../../dir3/down_dir.mmh"
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/includes/dir3/down_dir.mmh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/includes/dir3/down_dir.mmh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,21 @@
+/*
+* 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:
+*
+*/
+// down_dir.mmh
+
+SOURCEPATH .
+SOURCE down_dir.cpp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/includes/top_level.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/includes/top_level.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,20 @@
+/*
+* 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:
+*
+*/
+// top_level.inf
+
+PRJ_MMPFILES
+top_level.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/includes/top_level.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/includes/top_level.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,24 @@
+/*
+* 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:
+*
+*/
+// top_level.mmp
+
+TARGET dummy.exe
+TARGETTYPE EXE
+SOURCE top_level.cpp
+
+#include "dir1/dir2/up_dir.mmh"
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/test_mmps/autotest.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/test_mmps/autotest.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET dummy.exe
+TARGETTYPE EXE
+SOURCE top_level.cpp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/test_mmps/ignoretest.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/test_mmps/ignoretest.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET dummy.exe
+TARGETTYPE EXE
+SOURCE top_level.cpp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/test_mmps/manualtest.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/test_mmps/manualtest.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET dummy.exe
+TARGETTYPE EXE
+SOURCE top_level.cpp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/test_mmps/supporttest.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/test_mmps/supporttest.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET dummy.exe
+TARGETTYPE EXE
+SOURCE top_level.cpp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/project/mmps/test_mmps/test_mmps.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/project/mmps/test_mmps/test_mmps.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2006-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_TESTMMPFILES
+autotest.mmp
+manualtest.mmp manual
+supporttest.mmp support
+ignoretest.mmp ignore
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/system/system_definition_1.3.1.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/system/system_definition_1.3.1.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/system/system_definition_1.4.1.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/system/system_definition_1.4.1.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/system/system_definition_1.5.1.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/system/system_definition_1.5.1.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/system/system_definition_2.0.0.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/system/system_definition_2.0.0.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/system/system_definition_3.0.0.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/system/system_definition_3.0.0.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/system/system_definition_multi_layers.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/system/system_definition_multi_layers.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/metadata/system/system_definition_nover.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/metadata/system/system_definition_nover.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/oe_linking_against_se_lib/group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/oe_linking_against_se_lib/group/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 1999-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_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_MMPFILES
+test_oeexe.mmp
+
+// end
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/oe_linking_against_se_lib/group/test_oeexe.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/oe_linking_against_se_lib/group/test_oeexe.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2006-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:
+* t_oeexe.mmp
+*
+*/
+
+
+TARGET test_oeexe.exe
+TARGETTYPE stdexe
+romtarget
+ramtarget sys/bin/
+SOURCEPATH ..
+
+// Emulator images have different export data
+#ifdef WINS
+SOURCE test_oeexe_wins.cpp
+#else
+SOURCE test_oeexe.cpp
+#endif
+
+LIBRARY euser.lib t_oedll.lib
+
+// Standard Symbian Library Created by Simple_lib\simple.mmp
+STATICLIBRARY etest.lib
+
+SYSTEMINCLUDE /epoc32/include ..
+VENDORID 0x70000001
+capability all -TCB
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/oe_linking_against_se_lib/test_oedll.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/oe_linking_against_se_lib/test_oedll.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,74 @@
+/*
+* 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:
+* CreateStaticDLL.h*
+*/
+
+
+
+
+
+
+#include
+
+extern "C" {
+
+extern int IMPORT_C myfoo();
+
+}
+
+
+
+IMPORT_C int bar();
+
+class CMessenger : public CBase
+
+ {
+
+public:
+
+ // Construction
+
+ IMPORT_C static CMessenger* NewLC(CConsoleBase& aConsole, const TDesC& aString);
+
+ // Destructor - virtual and class not intended
+
+ // for derivation, so not exported
+
+ ~CMessenger();
+
+ // general functions - exported
+
+ IMPORT_C void ShowMessage();
+
+private:
+
+ // C++ constructor - not exported;
+
+ // implicitly called from NewLC()
+
+ CMessenger(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 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/oe_linking_against_se_lib/test_oeexe.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/oe_linking_against_se_lib/test_oeexe.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+
+/**
+
+Overview:
+
+ Tests it is possible to retrieve the 0th ordinal from exes and dlls
+
+ that are marked as having named symbol export data. This is loaded
+
+ as non-XIP so loader fixups of 0th ordinal imports can be tested
+
+
+
+API Information:
+
+ RProcess, RLibrary
+
+
+
+Details:
+
+ - Test reading 0th ordinal from a dll which has a E32EpocExpSymInfoHdr
+
+ struct at the 0th ordinal and verify the contents of the header
+
+ - Test attempts to get the 0th ordinal from a dll without the named symbol
+
+ data returns NULL
+
+ - Test reading the named symbol data from an exe that contains a
+
+ E32EpocExpSymInfoHdr struct at the 0th ordinal and verify the contents
+
+ - Test import fixups has correctly fixed up the 0th ordinal of the static
+
+ dependencies to this stdexe
+
+ - Test NULL is returned when attempting to read the 0th ordinal of
+
+ an exe that doesn't contain a E32EpocExpSymInfoHdr
+
+
+
+Platforms/Drives/Compatibility:
+
+ All
+
+
+
+Assumptions/Requirement/Pre-requisites:
+
+
+
+
+
+Failures and causes:
+
+
+
+
+
+Base Port information:
+
+
+
+*/
+
+#include
+
+#include
+
+#include
+
+#include
+
+
+
+RTest test(_L("T_OEEXPORT"));
+
+
+
+// This is defined as LOCAL_D(static) to ensure that tools allow static symbol in stdexe/dlls
+
+// as this was not always the case.
+
+LOCAL_D void VerifyHdr(E32EpocExpSymInfoHdr& aExpectedHdr, E32EpocExpSymInfoHdr &aReadHdr)
+
+ {
+
+ test(aExpectedHdr.iSize == aReadHdr.iSize);
+
+ test(aExpectedHdr.iFlags == aReadHdr.iFlags);
+
+ test(aExpectedHdr.iSymCount == aReadHdr.iSymCount);
+
+ test(aExpectedHdr.iSymbolTblOffset == aReadHdr.iSymbolTblOffset);
+
+ test(aExpectedHdr.iStringTableSz == aReadHdr.iStringTableSz);
+
+ test(aExpectedHdr.iStringTableOffset == aReadHdr.iStringTableOffset);
+
+ test(aExpectedHdr.iDllCount == aReadHdr.iDllCount);
+
+ test(aExpectedHdr.iDepDllZeroOrdTableOffset == aReadHdr.iDepDllZeroOrdTableOffset);
+
+ }
+
+
+
+TInt E32Main()
+
+ {
+
+ test.Title();
+
+
+
+ test.Start(_L("Test retrieving 0th ordinal and therefore named symbol export data"));
+
+
+
+ E32EpocExpSymInfoHdr tmpHdr;
+
+ E32EpocExpSymInfoHdr *readHdr;
+
+ RLibrary library;
+
+
+
+ // The values for the header of the dll with a 0th ordinal
+
+ tmpHdr.iSize = 0x1a4;
+
+ tmpHdr.iFlags = 0x0;
+
+ tmpHdr.iSymCount = 0xc;
+
+ tmpHdr.iSymbolTblOffset = 0x1c;
+
+ tmpHdr.iStringTableSz = 0x134;
+
+ tmpHdr.iStringTableOffset = 0x64;
+
+ tmpHdr.iDllCount = 0x3;
+
+ tmpHdr.iDepDllZeroOrdTableOffset = 0x198;
+
+ test(library.Load(_L("t_oedll.dll")) == KErrNone);
+
+ test.Next(_L("Attempt to retrieve named symbol data from t_oedll.dll"));
+
+ readHdr = (E32EpocExpSymInfoHdr*)library.Lookup(0);
+
+ test(readHdr!=NULL);
+
+ test.Next(_L("Verify export data of t_oedll.dll at the 0th ordinal is that expected"));
+
+ VerifyHdr(tmpHdr, *readHdr);
+
+ library.Close();
+
+
+
+ test.Next(_L("Verify lookup on dll without oe export data returns NULL"));
+
+ test(library.Load(_L("t_dll1.dll")) == KErrNone);
+
+ readHdr = (E32EpocExpSymInfoHdr*)library.Lookup(0);
+
+ test(readHdr == NULL);
+
+ library.Close();
+
+
+
+ // The values for the header of the exe of the current process with a 0th ordinal
+
+ tmpHdr.iSize = 0x48;
+
+ tmpHdr.iFlags = 0x0;
+
+ tmpHdr.iSymCount = 0x2;
+
+ tmpHdr.iSymbolTblOffset = 0x1c;
+
+ tmpHdr.iStringTableSz = 0x14;
+
+ tmpHdr.iStringTableOffset = 0x28;
+
+ tmpHdr.iDllCount = 0x3;
+
+ tmpHdr.iDepDllZeroOrdTableOffset = 0x3c;
+
+ test.Next(_L("Attempt to retrieve named symbol data from current process"));
+
+ readHdr = (E32EpocExpSymInfoHdr*)(RProcess::ExeExportData());
+
+ test(readHdr!=NULL);
+
+ test.Next(_L("Verify export data at th 0th ordinal of this exe is that expected"));
+
+
+
+//#define PRINT_ZEROTH
+
+#ifdef PRINT_ZEROTH
+
+ test.Printf(_L("iSize=%08x;iFlags=%08x;iSymCount=%08x;iSymbolTblOffset=%08x\n"),readHdr->iSize,readHdr->iFlags,readHdr->iSymCount,readHdr->iSymbolTblOffset);
+
+ test.Printf(_L("iStringTableSz=%08x,iStringTableOffset=%08x,iDllCount=%08x,iDepDllZeroOrdTableOffset=%08x\n"), readHdr->iStringTableSz, readHdr->iStringTableOffset,readHdr->iDllCount,readHdr->iDepDllZeroOrdTableOffset);
+
+#endif
+
+ VerifyHdr(tmpHdr, *readHdr);
+
+
+
+ test.Next(_L("Verify static dependency t_oedll1 has been fixed up correctly"));
+
+ test(myfoo()==0x1234);
+
+
+
+ // Get the 0th ordinal data from the dependency t_oedll1 and verify it
+
+ readHdr=(E32EpocExpSymInfoHdr *)((TUint32)readHdr+readHdr->iDepDllZeroOrdTableOffset);
+
+ TUint32 readHdrEnd = (TUint32)readHdr + 12;
+
+ // This stdexe only links one stddll so the only non-NULL entry in iDepDllZeroOrdTable
+
+ // should point to 0th ordinal of t_oedll1
+
+ while (*(TUint32*)readHdr == NULL && (TUint32)readHdr < readHdrEnd)
+
+ {
+
+ readHdr=(E32EpocExpSymInfoHdr *)(((TUint32*)readHdr)+1);
+
+ }
+
+
+
+#ifdef PRINT_ZEROTH
+
+ test.Printf(_L("iSize=%08x;iFlags=%08x;iSymCount=%08x;iSymbolTblOffset=%08x\n"),(*(E32EpocExpSymInfoHdr**)readHdr)->iSize,(*(E32EpocExpSymInfoHdr**)readHdr)->iFlags,(*(E32EpocExpSymInfoHdr**)readHdr)->iSymCount,(*(E32EpocExpSymInfoHdr**)readHdr)->iSymbolTblOffset);
+
+ test.Printf(_L("iStringTableSz=%08x,iStringTableOffset=%08x,iDllCount=%08x,iDepDllZeroOrdTableOffset=%08x\n"), (*(E32EpocExpSymInfoHdr**)readHdr)->iStringTableSz, (*(E32EpocExpSymInfoHdr**)readHdr)->iStringTableOffset,(*(E32EpocExpSymInfoHdr**)readHdr)->iDllCount,(*(E32EpocExpSymInfoHdr**)readHdr)->iDepDllZeroOrdTableOffset);
+
+#endif
+
+
+
+ tmpHdr.iSize = 0x1a4;
+
+ tmpHdr.iFlags = 0x0;
+
+ tmpHdr.iSymCount = 0xc;
+
+ tmpHdr.iSymbolTblOffset = 0x1c;
+
+ tmpHdr.iStringTableSz = 0x134;
+
+ tmpHdr.iStringTableOffset = 0x64;
+
+ tmpHdr.iDllCount = 0x3;
+
+ tmpHdr.iDepDllZeroOrdTableOffset = 0x198;
+
+ VerifyHdr(tmpHdr,**(E32EpocExpSymInfoHdr**)readHdr);
+
+
+
+ test.End();
+
+ return KErrNone;
+
+ }
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/oe_linking_against_se_lib/test_oeexe_wins.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/oe_linking_against_se_lib/test_oeexe_wins.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+
+/**
+
+Overview:
+
+ Emulator version that tests it is possible to retrieve the 0th
+
+ ordinal from exes and dlls that are marked as having named
+
+ symbol export data.
+
+
+
+API Information:
+
+ RProcess, RLibrary
+
+
+
+Details:
+
+ - Test reading 0th ordinal from a dll which has a E32EmulExpSymInfoHdr
+
+ struct at the 0th ordinal and verify the contents of the header
+
+ - Test NULL is returned on attempts to get the 0th ordinal from a
+
+ dll without the named symbol data
+
+ - Test reading the named symbol data from an exe that contains a
+
+ E32EmulExpSymInfoHdr struct at the 0th ordinal and verify the contents
+
+ - Test NULL is returned when attempting to read the 0th ordinal of
+
+ an exe that doesn't contain a E32EmulExpSymInfoHdr
+
+
+
+Platforms/Drives/Compatibility:
+
+ All
+
+
+
+Assumptions/Requirement/Pre-requisites:
+
+
+
+
+
+Failures and causes:
+
+
+
+
+
+Base Port information:
+
+
+
+*/
+
+#include
+
+#include
+
+#include
+
+#include
+
+
+
+RTest test(_L("T_OEEXPORT"));
+
+
+
+LOCAL_D void VerifyHdr(E32EmulExpSymInfoHdr& aExpectedHdr, E32EmulExpSymInfoHdr &aReadHdr)
+
+ {
+
+ test(aExpectedHdr.iSymCount == aReadHdr.iSymCount);
+
+ test(aExpectedHdr.iDllCount == aReadHdr.iDllCount);
+
+ }
+
+
+
+TInt E32Main()
+
+ {
+
+ test.Title();
+
+
+
+ test.Start(_L("Test retrieving 0th ordinal and therefore named symbol export data"));
+
+
+
+ E32EmulExpSymInfoHdr tmpHdr;
+
+ E32EmulExpSymInfoHdr *readHdr;
+
+ RLibrary library;
+
+
+
+ // The values for the header of the dll with a 0th ordinal
+
+ tmpHdr.iSymCount = 0x0;
+
+ tmpHdr.iDllCount = 0x3;
+
+ test(library.Load(_L("t_oedll.dll")) == KErrNone);
+
+ test.Next(_L("Attempt to retrieve named symbol data from t_oedll.dll"));
+
+ readHdr = (E32EmulExpSymInfoHdr*)library.Lookup(0);
+
+ test(readHdr!=NULL);
+
+//#define PRINT_ZEROTH
+
+#ifdef PRINT_ZEROTH
+
+ test.Printf(_L("iSymCount=%08x;iDllCounts=%08x\n"),readHdr->iSymCount,readHdr->iDllCount);
+
+#endif
+
+ test.Next(_L("Verify export data of t_oedll.dll is that expected"));
+
+ VerifyHdr(tmpHdr, *readHdr);
+
+ library.Close();
+
+
+
+ test.Next(_L("Verify lookup on dll without oe export data returns NULL"));
+
+ test(library.Load(_L("t_dll1.dll")) == KErrNone);
+
+ readHdr = (E32EmulExpSymInfoHdr*)library.Lookup(0);
+
+ test(readHdr == NULL);
+
+ library.Close();
+
+
+
+ // The values for the header of the exe of the current process with a 0th ordinal
+
+ tmpHdr.iSymCount = 0x3;
+
+ tmpHdr.iDllCount = 0x5;
+
+ test.Next(_L("Attempt to retrieve named symbol data from current process"));
+
+ readHdr = (E32EmulExpSymInfoHdr*)(RProcess::ExeExportData());
+
+ test(readHdr!=NULL);
+
+ test.Next(_L("Verify export data 0th ordinal data of this exe is that expected"));
+
+#ifdef PRINT_ZEROTH
+
+ test.Printf(_L("iSymCount=%08x;iDllCounts=%08x;\n"),readHdr->iSymCount,readHdr->iDllCount);
+
+#endif
+
+ VerifyHdr(tmpHdr, *readHdr);
+
+
+
+/*
+
+On Emulator can't examine fixups & depdencies via export data as data not included
+
+in E32EmulExpSymInfoHdr. This is all handled by the MS loader.
+
+
+
+*/
+
+ test.End();
+
+ return KErrNone;
+
+ }
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/retirement/metadep.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/retirement/metadep.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,50 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "71"
+ t.name = "metadep"
+ t.description = """Tests metadata dependency generation. Changes
+ to bld.infs and mmps can be detected."""
+ t.usebash = True
+ t.command = """export SBSLOGFILE SBSMAKEFILE; bash smoke_suite/test_resources/metadep.sh 2>&1"""
+
+ t.targets = [
+ ]
+
+ t.mustmatch_multiline = [
+""".*Step 1 .*no warnings or errors.*
+sbs: build log in.*
+\+ sleep 1.*
+.*make -rf .*epoc32/build/metadata_all.mk.*
+.*make.*epoc32/build/metadata_all.mk. is up to date.*
+Step 2 .*
+.*RE-RUNNING SBS with previous parameters.*
+Step 3 .*
+.*RE-RUNNING SBS with previous parameters.*
+.*RE-RUNNING SBS with previous parameters.*"""
+ ]
+ t.mustnotmatch_multiline = [
+"""RE-RUNNING SBS with previous parameters.*
+RE-RUNNING SBS with previous parameters.*
+RE-RUNNING SBS with previous parameters.*
+RE-RUNNING SBS with previous parameters.*"""
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/run
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/run Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,59 @@
+#!/bin/bash
+# Copyright (c) 2007-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:
+# Test Suite execution file for linux
+#
+
+# 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."
+ exit 1
+fi
+
+if [ "$OSTYPE" == "cygwin" ]; then
+
+ SBS_HOME=${SBS_HOME//\\//}
+
+ __CYGWIN__=${SBS_CYGWIN:-$SBS_HOME/$HOSTPLATFORM_DIR/cygwin}
+ __PYTHON__=${SBS_PYTHON:-$SBS_HOME/$HOSTPLATFORM_DIR/python264/python.exe}
+
+ # Unify paths.
+
+ u="$__CYGWIN__/bin/cygpath.exe -m"
+
+ SBS_HOME=$($u "$SBS_HOME")
+ EPOCROOT=$($u "$EPOCROOT")
+
+ __PYTHON__=$($u "$__PYTHON__")
+else
+ LD_LIBRARY_PATH=$SBS_HOME/$HOSTPLATFORM_DIR/bv/lib:$LD_LIBRARY_PATH
+
+ export PATH LD_LIBRARY_PATH
+ __PYTHON__=python
+fi
+
+# Call run_tests.py with the arguments
+TEST_SUITE_PY="$SBS_HOME/test/common/run_tests.py"
+
+if [ -e "$TEST_SUITE_PY" ]; then
+ # run the source version
+ $__PYTHON__ -tt "$TEST_SUITE_PY" "$@"
+elif [ -e "$TEST_SUITE_PY"c ]; then
+ # run the compiled version
+ $__PYTHON__ -tt "$TEST_SUITE_PY"c "$@"
+else
+ echo "Cannot run Test Suite - $TEST_SUITE_PY not found" 1>&2
+fi
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/run.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/run.bat Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,29 @@
+@rem
+@rem Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+@SETLOCAL
+@CALL %SBS_HOME%\bin\sbs_env.bat
+
+@SET __TEST_SUITE__=%~dp0common\run_tests.pyc
+@SET __TEST_SUITE_PY__=%~dp0common\run_tests.py
+
+@REM If the Python source exists, use it. Else use the byte-compiled Python code
+@IF EXIST %__TEST_SUITE_PY__% SET __TEST_SUITE__=%__TEST_SUITE_PY__%
+
+@REM Then run the test suite with all the arguments
+@%__PYTHON__% -tt %__TEST_SUITE__% %*
+
+@ENDLOCAL
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/simple/test_dbg.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/simple/test_dbg.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+*
+*/
+#include "e32def.h" // intentional include
+
+char test[]="Simple debuggable test";
+
+TInt E32Main()
+{
+
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/annofile2log.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/annofile2log.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,39 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "43563"
+ t.name = "annofile2log"
+ t.description = "test workaround for log corruption from a make engine whose name begins with 'e'"
+
+ t.usebash = True
+ t.errors = 0
+ t.returncode = 0
+ t.exceptions = 0
+ t.command = 'cd smoke_suite/test_resources/annofile2log && ( FROMANNO="`mktemp`" ; bzip2 -dc scrubbed_ncp_dfs_resource.anno.bz2 | python testanno2log.py >"${FROMANNO}" && FROMSTDOUT="`mktemp`"; bzip2 -dc scrubbed_ncp_dfs_resource.stdout.bz2 > "${FROMSTDOUT}" && diff -wB "${FROMANNO}" "${FROMSTDOUT}"; RET=$? ; rm "${FROMANNO}" "${FROMSTDOUT}"; exit $RET )'
+
+ t.mustmatch_multiline = [
+ "^ *.?"
+ ]
+
+
+ t.run()
+
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/apply_usecases.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/apply_usecases.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,38 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.description = "This testcase tests specific cases of using APPLY"
+ t.usebash = True
+
+ # Introduce LINKER_OPTIONS for tools2 linker
+ t.id = "0108"
+ t.name = "apply_usecases"
+ t.command = "sbs -b smoke_suite/test_resources/apply_usecases/linker_options/bld.inf -c tools2 -f -"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/tools2/rel/test_apply_linkeroptions.exe"
+ ]
+ t.addbuildtargets("smoke_suite/test_resources/apply_usecases/linker_options/bld.inf", [
+ "test_apply_linkeroptions_/test_apply_linkeroptions_exe/tools2/deb/test_apply_linkeroptions.o",
+ "test_apply_linkeroptions_/test_apply_linkeroptions_exe/tools2/rel/test_apply_linkeroptions.o"
+ ])
+ t.mustmatch = ["-lwsock32"]
+ t.run("windows")
+
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/armv5_asmtest.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/armv5_asmtest.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,55 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "16"
+ t.name = "armv5_asmtest"
+ t.command = "sbs -b smoke_suite/test_resources/asmtest/bld.inf -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/asmtest.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/asmtest.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/asmtest.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/asmtest.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/asmtest.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/asmtest.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/asmtest/bld.inf', [
+ "asmtest_/armv5/udeb/asmtest_udeb_objects.via",
+ "asmtest_/armv5/udeb/testassembler.o.d",
+ "asmtest_/armv5/udeb/testassembler.o",
+ "asmtest_/armv5/udeb/testassembler.o",
+ "asmtest_/armv5/udeb/testcia_.o",
+ "asmtest_/armv5/udeb/testcia_.cpp",
+ "asmtest_/armv5/udeb/testcia_.pre",
+ "asmtest_/armv5/udeb/testcia_.pre.d",
+ "asmtest_/armv5/udeb/testasm.o.d",
+ "asmtest_/armv5/udeb/testasm.o",
+ "asmtest_/armv5/urel/asmtest_urel_objects.via",
+ "asmtest_/armv5/urel/testassembler.o.d",
+ "asmtest_/armv5/urel/testassembler.o",
+ "asmtest_/armv5/urel/testassembler.o",
+ "asmtest_/armv5/urel/testcia_.o",
+ "asmtest_/armv5/urel/testcia_.cpp",
+ "asmtest_/armv5/urel/testcia_.pre",
+ "asmtest_/armv5/urel/testcia_.pre.d",
+ "asmtest_/armv5/urel/testasm.o.d",
+ "asmtest_/armv5/urel/testasm.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/armv5_stringtable.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/armv5_stringtable.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "26"
+ t.name = "armv5_stringtable"
+ t.command = "sbs -b smoke_suite/test_resources/simple_stringtable/bld.inf" \
+ + " -c armv5 EXPORT"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/strconsts.h"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_stringtable/bld.inf', [
+ "stringtabletest_/strconsts.h",
+ "stringtabletest_/strconsts.cpp"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/armv5_testcode.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/armv5_testcode.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,39 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "28"
+ t.name = "armv5_testcode"
+ t.command = "sbs -b smoke_suite/test_resources/simple_test/bld.inf -c " + \
+ "armv5.test -f - "
+
+ # Don't allow -f to be appended
+ t.logfileOption = lambda :""
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/urel/simple_test_auto.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/simple_test_manual.exe",
+ "$(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"
+ ]
+ t.mustmatch = [".*/epoc32/data/z/test/simple_test/armv5.auto.bat.*"]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/armv7_asmtest.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/armv7_asmtest.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,55 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "17"
+ t.name = "armv7_asmtest"
+ t.command = "sbs -b smoke_suite/test_resources/asmtest/bld.inf -c armv7"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/asmtest.exe",
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/asmtest.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/asmtest.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/asmtest.exe",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/asmtest.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/asmtest.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/asmtest/bld.inf', [
+ "asmtest_/armv7/udeb/asmtest_udeb_objects.via",
+ "asmtest_/armv7/udeb/testassembler.o.d",
+ "asmtest_/armv7/udeb/testassembler.o",
+ "asmtest_/armv7/udeb/testassembler.o",
+ "asmtest_/armv7/udeb/testcia_.o",
+ "asmtest_/armv7/udeb/testcia_.cpp",
+ "asmtest_/armv7/udeb/testcia_.pre",
+ "asmtest_/armv7/udeb/testcia_.pre.d",
+ "asmtest_/armv7/udeb/testasm.o.d",
+ "asmtest_/armv7/udeb/testasm.o",
+ "asmtest_/armv7/urel/asmtest_urel_objects.via",
+ "asmtest_/armv7/urel/testassembler.o.d",
+ "asmtest_/armv7/urel/testassembler.o",
+ "asmtest_/armv7/urel/testassembler.o",
+ "asmtest_/armv7/urel/testcia_.o",
+ "asmtest_/armv7/urel/testcia_.cpp",
+ "asmtest_/armv7/urel/testcia_.pre",
+ "asmtest_/armv7/urel/testcia_.pre.d",
+ "asmtest_/armv7/urel/testasm.o.d",
+ "asmtest_/armv7/urel/testasm.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/armv7_stringtable.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/armv7_stringtable.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "27"
+ t.name = "armv7_stringtable"
+ t.command = "sbs -b smoke_suite/test_resources/simple_stringtable/bld.inf" \
+ + " -c armv7 EXPORT"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/strconsts.h"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_stringtable/bld.inf', [
+ "stringtabletest_/strconsts.h",
+ "stringtabletest_/strconsts.cpp"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/armv7_testcode.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/armv7_testcode.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,39 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "29"
+ t.name = "armv7_testcode"
+ t.command = "sbs -b smoke_suite/test_resources/simple_test/bld.inf -c " + \
+ "armv7.test -f - "
+
+ # Don't allow -f to be appended
+ t.logfileOption = lambda :""
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv7/urel/simple_test_auto.exe",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/simple_test_manual.exe",
+ "$(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"
+ ]
+ t.mustmatch = [".*/epoc32/data/z/test/simple_test/armv7.auto.bat.*"]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/bitmap.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/bitmap.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,42 @@
+#
+# 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:
+# Component description file
+#
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "8"
+ t.name = "bitmap"
+ t.description = "This step is for testing BITMAP keyword and MIFCONV support for s60"
+ t.usebash = True
+ t.command = "sbs -b smoke_suite/test_resources/bitmap/bld.inf BITMAP && grep -ir 'MIFCONV_TEST:=1' $(EPOCROOT)/epoc32/build"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/testbitmap.mbg",
+ "$(EPOCROOT)/epoc32/data/z/resource/apps/testbitmap.mBm",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/test/mifconv.xml",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/test/mifconv.flm"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/bitmap/bld.inf', [
+ "testbitmap_dll/testbitmap.mBm_bmconvcommands"
+ ])
+ t.mustmatch = [
+ ".*Makefile(_all)?.bitmap:MIFCONV_TEST:=1.*"
+ ]
+ t.mustnotmatch = [
+ ".*Makefile(_all)?.default:MIFCONV_TEST.*"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/capability_arm.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/capability_arm.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,76 @@
+#
+# 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
+import sys
+
+def run():
+ t = SmokeTest()
+ t.usebash = True
+
+
+ if sys.platform.startswith("win"):
+ elf2e32 = "$(EPOCROOT)/epoc32/tools/elf2e32.exe"
+ else:
+ elf2e32 = "$(EPOCROOT)/epoc32/tools/elf2e32"
+
+ description = """This test attempts to check that an exe gets the capabilities that we requested. It's ARM specific since it uses elf2e32. Tries to demonstrate capabilties being turned off then on in the mmp."""
+ command = "sbs -b smoke_suite/test_resources/simple/capability.inf -c %s -m ${SBSMAKEFILE} -f ${SBSLOGFILE} && " + \
+ elf2e32 + " --dump=s --e32input=$(EPOCROOT)/epoc32/release/armv5/urel/test_capability.exe"
+ targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test_capability.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test_capability.exe.map"
+ ]
+ buildtargets = [
+ ]
+ mustmatch = [
+ "\s*Secure ID: 10003a5c$",
+ "\s*Vendor ID: 00000000$",
+ "\s*Capabilities: 00000000 000fffbf$",
+ "\s*CommDD$",
+ "\s*PowerMgmt$",
+ "\s*MultimediaDD$",
+ "\s*ReadDeviceData$",
+ "\s*WriteDeviceData$",
+ "\s*TrustedUI$",
+ "\s*DiskAdmin$",
+ "\s*NetworkControl$",
+ "\s*AllFiles$",
+ "\s*SwEvent$",
+ "\s*NetworkServices$",
+ "\s*LocalServices$",
+ "\s*ReadUserData$",
+ "\s*WriteUserData$",
+ "\s*Location$",
+ "\s*SurroundingsDD$",
+ "\s*UserEnvironment$",
+ "\s*TCB$"
+ ]
+ mustnotmatch = [
+ "DRM"
+ ]
+ warnings = 0
+
+ t.id = "0107"
+ t.name = "capability_arm"
+ t.description = description
+ t.command = command % "arm.v5.urel.gcce4_4_1"
+ t.targets = targets
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.warnings = warnings
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/clean_readonly.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/clean_readonly.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,72 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest
+import os
+import stat
+
+def run():
+
+ # build something; make it read-only; then try and clean it
+
+ t = AntiTargetSmokeTest()
+ t.id = "10a"
+ t.name = "clean_readonly"
+ t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll"
+ ]
+ t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf",
+ [
+ "createstaticdll_dll/armv5/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/armv5/urel/CreateStaticDLL.o"
+ ])
+ t.run()
+ setupOK = (t.result != AntiTargetSmokeTest.FAIL)
+
+ # This particular file createstaticdll.dll is changed to be readonly to test
+ # if sbs CLEAN command actually gets rid of read only files
+ fileForClean = os.environ['EPOCROOT'] + "/epoc32/release/armv5/urel/createstaticdll.dll"
+ if os.path.exists(fileForClean):
+ os.chmod(fileForClean, stat.S_IREAD)
+
+ t.id = "10"
+ t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c armv5 CLEAN"
+ t.targets = []
+ t.antitargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll"
+ ]
+ t.addbuildantitargets("smoke_suite/test_resources/simple_dll/bld.inf",
+ [
+ "createstaticdll_dll/armv5/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/armv5/urel/CreateStaticDLL.o"
+ ])
+ t.run()
+
+ if not setupOK:
+ t.result = AntiTargetSmokeTest.FAIL
+
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/cli_makevar_override.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/cli_makevar_override.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,38 @@
+#
+# 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:
+#
+
+# Checks that functionality for overriding makefile varaibles at the command no longer works
+# The mechanism for dealing with this was removed as the fix for SF bug 2134
+# On the CLI, "something=something" is now treated as a target rather than a variable assignment
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.name = "cli_makevar_overide"
+ t.id = "0117"
+ t.description = "Attempt to override a makefile var at the command line."
+ t.usebash = True
+
+ t.command = "sbs -b smoke_suite/test_resources/basics/helloworld/Bld.inf REALLYCLEAN -m ${SBSMAKEFILE} -f ${SBSLOGFILE} HOSTPLATFORM_DIR=unlikelydir"
+
+ t.mustmatch = ["sbs: warning: CLEAN, CLEANEXPORT and a REALLYCLEAN should not be combined with other targets as the result is unpredictable"]
+
+ t.warnings = 1
+ t.run()
+
+ return t
+
\ No newline at end of file
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/commandfile.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/commandfile.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,38 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "4"
+ t.name = "commandfile"
+ t.command = "sbs " \
+ + "--command=smoke_suite/test_resources/simple/commands-v7.txt " \
+ + "-c armv7_udeb"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/armv7/udeb/test.o",
+ "test_/armv7/urel/test.o"
+ ])
+ t.run()
+ return t
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/commandline.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/commandline.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,38 @@
+#
+# 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:
+# General commandline option handling tests which aren't appropriate as unit tests.
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "85a"
+ t.name = "commandline_nodefaults"
+ t.description = """Test that raptor complains if you run it without specifying any components and there is no default bld.inf or system definition in the current directory."""
+ t.usebash = True
+
+ t.command = """
+ TMPDIR="build/commandline_testdefaults";
+ cd $(EPOCROOT)/epoc32 && rm -rf "$TMPDIR" 2>/dev/null; mkdir -p "$TMPDIR" && cd "$TMPDIR" &&
+ sbs ${SBSLOGFILE} -n ; rm -rf "$TMPDIR"
+ """
+
+ t.mustmatch = [".*warning: No default bld.inf or system definition.*found.* "]
+ t.warnings = 1
+ t.run()
+
+ t.id = "0085"
+ t.name = "commandline"
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/configpath.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/configpath.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,103 @@
+#
+# 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:
+#
+
+import os
+import os.path
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.logfileOption = lambda :""
+ t.id = "0074a"
+ t.name = "configpath"
+ t.description = """Test --configpath option for sbs. Specify two remote
+ locations and use the variants in those folders along with ones in
+ each of the default folders."""
+
+ # the variants here affect compile steps so we only need to see a single compile
+ # to know whether the variant is doing its thing or not.
+ t.addbuildtargets("smoke_suite/test_resources/simple/bld.inf",
+ ["test_/armv5/udeb/test.o"])
+
+ result = SmokeTest.PASS
+
+ # the extra config folders are
+ # smoke_suite/test_resources/configpathtest/v{2,3}
+ sbshome = os.environ["SBS_HOME"].replace("\\","/")
+
+ aFolder = sbshome + "/test/smoke_suite/test_resources/configpathtest/v2"
+ bFolder = sbshome + "/test/smoke_suite/test_resources/configpathtest/v3"
+
+ common = "sbs -b smoke_suite/test_resources/simple/bld.inf " + \
+ "-c armv5.configpathtest1.configpathtest2.configpathtest3"
+
+ # run the command using the built-in default systemConfig
+ t.command = common + " --configpath=" + aFolder + os.pathsep + bFolder + \
+ " -f -"
+
+ t.mustmatch = [
+ ".*armv5_udeb.configpathtest1.configpathtest2.configpathtest3.*",
+ ".*armv5_urel.configpathtest1.configpathtest2.configpathtest3.*",
+ ".*Duplicate variant 'configpathtest3'.*",
+ ".*-DTESTPASSED.*",
+ ".*-DOSVARIANT95WASAPPLIED.*"
+ ]
+ t.mustnotmatch = [
+ ".*sbs: error: Unknown variant.*",
+ ".*-DTESTFAILED.*"
+ ]
+ # Duplicate variant is Info not Warn
+ t.warnings = 0
+ t.run()
+
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ # run the command again using a systemConfig from $HOME/.sbs_init.xml
+ # and the configpath as two separate options.
+ t.usebash = True
+ homedir = sbshome + "/test/smoke_suite/test_resources/configpathtest/home"
+ t.command = "export HOME=" + homedir + "; " + common + \
+ " --configpath=" + aFolder + " --configpath=" + bFolder + " -f -"
+ t.id = "0074b"
+ t.mustmatch = [
+ ".*armv5_udeb.configpathtest1.configpathtest2.configpathtest3.*",
+ ".*armv5_urel.configpathtest1.configpathtest2.configpathtest3.*",
+ ".*Duplicate variant 'configpathtest3'.*"
+ ]
+ t.mustnotmatch = [
+ ".*sbs: error: Unknown variant.*"
+ ]
+ t.run()
+
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ # Clean
+ t.mustmatch = []
+ t.targets = []
+ t.id = "0074c"
+ t.name = "CLEAN"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
+ "REALLYCLEAN"
+ t.run() # Does not contribute to results
+
+ t.id = "74"
+ t.name = "configpath"
+ t.result = result
+ t.print_result()
+ return t
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/defs_armv5.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/defs_armv5.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,41 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "21"
+ t.name = "defs_armv5"
+ t.command = "sbs -b smoke_suite/test_resources/defs/group/bld.inf -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/deftest.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/deftest.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/deftest{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/deftest.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/deftest.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/deftest.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/deftest.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/deftest.dll.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/defs/group/bld.inf', [
+ "deftest_/armv5/udeb/deftest_udeb_objects.via",
+ "deftest_/armv5/udeb/test.o",
+ "deftest_/armv5/urel/deftest_urel_objects.via",
+ "deftest_/armv5/urel/test.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/defs_armv7.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/defs_armv7.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,41 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "22"
+ t.name = "defs_armv7"
+ t.command = "sbs -b smoke_suite/test_resources/defs/group/bld.inf -c armv7"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/deftest.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/deftest.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/deftest{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/deftest.dso",
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/deftest.dll",
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/deftest.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/deftest.dll",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/deftest.dll.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/defs/group/bld.inf', [
+ "deftest_/armv7/udeb/deftest_udeb_objects.via",
+ "deftest_/armv7/udeb/test.o",
+ "deftest_/armv7/urel/deftest_urel_objects.via",
+ "deftest_/armv7/urel/test.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/delete_on_failed_compile.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/delete_on_failed_compile.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,109 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+import os
+from raptor_tests import AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.id = "116"
+ t.name = "delete_on_failed_compile"
+ t.description = "Test that object files are not present following a forced failed compile."
+
+ t.usebash = True
+ base_command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 -k"
+
+ t.id = "116a" # Ensure everything is reallyclean before the test
+ t.name = "delete_on_failed_compile_reallyclean_01"
+ t.errors = 0
+ t.returncode = 0
+ t.antitargets = [ ]
+ t.command = base_command + " reallyclean"
+ t.run()
+
+ t.id = "116b" # Object files should *not* be present after this forced failed compile
+ t.name = "delete_on_failed_compile_build"
+ t.errors = 0
+ t.returncode = 1
+ # None of these files should be present
+ t.addbuildantitargets('smoke_suite/test_resources/simple/bld.inf',
+ [ "test_/armv5/udeb/test.o",
+ "test_/armv5/udeb/test1.o",
+ "test_/armv5/udeb/test2.o",
+ "test_/armv5/udeb/test3.o",
+ "test_/armv5/udeb/test4.o",
+ "test_/armv5/udeb/test5.o",
+ "test_/armv5/udeb/test6.o",
+ "test_/armv5/urel/test.o",
+ "test_/armv5/urel/test1.o",
+ "test_/armv5/urel/test2.o",
+ "test_/armv5/urel/test3.o",
+ "test_/armv5/urel/test4.o",
+ "test_/armv5/urel/test5.o",
+ "test_/armv5/urel/test6.o" ])
+ sbshome = os.environ["SBS_HOME"].replace("\\","/").rstrip("/")
+ t.command = base_command.replace("armv5", "armv5.fake_compiler") + \
+ " --configpath=%s/test/smoke_suite/test_resources/simple/compilervariants" % sbshome
+ t.run()
+
+ t.id = "116c"
+ t.name = "delete_on_failed_compile_reallyclean_02"
+ t.errors = 0
+ t.returncode = 0
+ t.antitargets = [] # Remove the list of anti-targets
+ t.command = base_command + " reallyclean"
+ t.run()
+
+ t.id = "116d" # Use a redefined make_engine variant - object files *should* be present
+ t.name = "delete_on_failed_compile_build_redefined_make_engine"
+ t.errors = 0
+ t.returncode = 1
+ t.antitargets = [] # Remove the list of anti-targets
+ # All of these files should be present
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf',
+ [ "test_/armv5/udeb/test.o",
+ "test_/armv5/udeb/test1.o",
+ "test_/armv5/udeb/test2.o",
+ "test_/armv5/udeb/test3.o",
+ "test_/armv5/udeb/test4.o",
+ "test_/armv5/udeb/test5.o",
+ "test_/armv5/udeb/test6.o",
+ "test_/armv5/urel/test.o",
+ "test_/armv5/urel/test1.o",
+ "test_/armv5/urel/test2.o",
+ "test_/armv5/urel/test3.o",
+ "test_/armv5/urel/test4.o",
+ "test_/armv5/urel/test5.o",
+ "test_/armv5/urel/test6.o" ])
+
+ t.command = base_command.replace("armv5", "armv5.fake_compiler") + " -e make_test " \
+ + " --configpath=%s/test/smoke_suite/test_resources/simple/compilervariants " % sbshome \
+ + " --configpath=%s/test/smoke_suite/test_resources/simple/makevariants" % sbshome
+ t.run()
+
+ t.id = "116e"
+ t.name = "delete_on_failed_compile_reallyclean_03"
+ t.errors = 0
+ t.returncode = 0
+ t.antitargets = [] # Remove the list of anti-targets
+ t.targets = [] # Remove the list of targets
+ t.command = base_command + " reallyclean"
+ t.run()
+
+ t.id = "116"
+ t.name = "delete_on_failed_compile"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/depcrunch_test.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/depcrunch_test.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,46 @@
+#
+# 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.usebash = True
+
+ t.description = "Test that dependency crunching for resource dependency files produces expected output"
+
+ t.id = "43562999"
+ t.name = "depcrunch"
+ t.command = "python $SBS_HOME/bin/depcrunch.py --extensions mbg,rsg --assume EPOCROOT < smoke_suite/test_resources/depcrunch/dep2.rpp.d"
+ t.mustmatch_multiline = [
+ r"EPOCROOT/epoc32/build/resource/c_98665870f0168225/dependentresource_/dependentresource_dependentresource_sc.rpp: \\\n"+
+ r" EPOCROOT/testresource1.mbg \\\n"+
+ r" EPOCROOT/testresource2.rsg \\\n"+
+ r" EPOCROOT/testresource3.rsg \\\n"+
+ r" EPOCROOT/testresource4.mbg \\\n"+
+ r" EPOCROOT/testresource5.rsg \\\n"+
+ r" EPOCROOT/testresource6.mbg \\\n"+
+ r" EPOCROOT/testresource7.rsg \\\n"+
+ r" EPOCROOT/testresource8.mbg \\\n"+
+ r" EPOCROOT/testresource9.rsg \n"
+ ]
+ t.run()
+
+
+ t.print_result()
+
+ return t
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dependencies.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dependencies.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,194 @@
+#
+# 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 AntiTargetSmokeTest
+from raptor_meta import BldInfFile
+import os
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.usebash = True
+
+ genericTargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dependency.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dependency.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dependency.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dependency.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/dependency.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/dependency.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/dependency.exe",
+ "$(EPOCROOT)/epoc32/include/dependency.rsg",
+ "$(EPOCROOT)/epoc32/data/z/resource/apps/dependency.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/dependency.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/dependency.rsc",
+ "$(EPOCROOT)/epoc32/include/main.rsg",
+ "$(EPOCROOT)/epoc32/data/z/resource/apps/main.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/main.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/main.rsc"
+ ]
+ windowsTargets = [
+ "$(EPOCROOT)/epoc32/release/tools2/rel/dependency.exe",
+ "$(EPOCROOT)/epoc32/tools/dependency.exe"
+ ]
+ linuxTargets = [
+ "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/dependency",
+ "$(EPOCROOT)/epoc32/tools/dependency"
+ ]
+
+ # Set general host platform specifics from first test run, but assume Windows initially
+ hostPlatform = "windows"
+ hostPlatformTargets = genericTargets + windowsTargets
+ hostPlatformOffset = ""
+
+ t.id = "0098a"
+ t.name = "baseline_build"
+ t.description = "Build a component with source and resource files that are dependent on header files exported in the build"
+ t.command = """
+ cp smoke_suite/test_resources/dependencies/src/dependency1.cpp smoke_suite/test_resources/dependencies/dependency.cpp
+ cp smoke_suite/test_resources/dependencies/src/dependency1.rss smoke_suite/test_resources/dependencies/dependency.rss
+ sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
+ t.mustnotmatch = [
+ "Missing dependency detected: .* "
+ ]
+ t.targets = hostPlatformTargets
+ t.run(hostPlatform)
+ if t.result == AntiTargetSmokeTest.SKIP:
+ hostPlatform = "linux"
+ hostPlatformTargets = genericTargets + linuxTargets
+ hostPlatformOffset = "$(HOSTPLATFORM_DIR)/"
+ t.targets = hostPlatformTargets
+ t.run(hostPlatform)
+
+ # Ensure we don't clean up from the previous build in the following two tests
+ t.targets = []
+
+ # Core expected outcome for the following two tests
+ t.mustmatch = [
+ ".*recipe name='compile' target='.*dependency\.o'",
+ ".*recipe name='win32compile2object' target='.*dependency\.o'",
+ ".*recipe name='compile2object' target='.*dependency\.o'",
+ ".*recipe name='resourcecompile' target='.*dependency\.rsc'"
+ ]
+ t.countmatch = [
+ [".*recipe name='compile'", 2],
+ [".*recipe name='win32compile2object'", 2],
+ [".*recipe name='compile2object'", 1],
+ [".*recipe name='resourcecompile'", 1]
+ ]
+
+
+ t.id = "0098b"
+ t.name ="touched_header_dependencies"
+ t.description = "Touch the exported header files and check that only the related source and resource files are re-built"
+ t.command = """
+ sleep 1
+ touch $(EPOCROOT)/epoc32/include/dependency.h
+ touch $(EPOCROOT)/epoc32/include/dependency.rh
+ sbs -f- -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
+ t.run()
+
+
+ t.id = "0098c"
+ t.name ="redundant_header_dependencies"
+ t.description = """
+ Build the component again, but manipulate it so that (a) it no longer has a dependency on the exported header files and
+ (b) the header files have been removed and (c) the header files are no longer exported. Check that only the related source
+ and resource files are re-built"""
+ t.command = """
+ cp smoke_suite/test_resources/dependencies/src/dependency2.cpp smoke_suite/test_resources/dependencies/dependency.cpp
+ cp smoke_suite/test_resources/dependencies/src/dependency2.rss smoke_suite/test_resources/dependencies/dependency.rss
+ rm -rf $(EPOCROOT)/epoc32/include/dependency.h
+ rm -rf $(EPOCROOT)/epoc32/include/dependency.rh
+ sbs -f- --noexport -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
+ t.mustnotmatch = []
+ # Note that the resource build does not exhibit a missing dependency as its dependency files are generated in a separate stage where
+ # the target file isn't actually a target of that stage
+ t.mustmatch.extend([
+ "Missing dependency detected: .*/epoc32/include/dependency.h "
+ ])
+ t.warnings = 1
+ t.run()
+
+
+ t.id = "0098d"
+ t.name ="invalid_dependency_files"
+ t.description = "Invalidate dependency files, then make sure we can clean and re-build successfully"
+ buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment('smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
+ t.command = """
+ sleep 1
+ touch smoke_suite/test_resources/dependencies/dependency.cpp
+ echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> """+buildLocation+"""/armv5/urel/dependency.o.d
+ echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> """+buildLocation+"""/winscw/urel/dependency.o.d
+ echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> """+buildLocation+"""/dependency_exe/tools2/rel/"""+hostPlatformOffset+"""dependency.o.d
+ echo INVALIDATE_RESOURCE_DEPENDENCY_FILE >> """+buildLocation+"""/dependency__resource_apps_sc.rpp.d
+ sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel
+ sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel clean
+ sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
+ t.mustmatch = []
+ t.countmatch = []
+ t.warnings = 0
+ t.errors = 1 # We expect an error from the first build due to the deliberate dependency file corruption
+ t.targets = hostPlatformTargets
+ t.run(hostPlatform)
+
+
+ t.id = "0098e"
+ t.name ="no_depend_include"
+ t.description = "Invalidate dependency files in order to confirm they aren't processed when --no-depend-include is used"
+ buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment('smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
+ t.command = """
+ sleep 1
+ touch smoke_suite/test_resources/dependencies/dependency.cpp
+ echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> """+buildLocation+"""/armv5/urel/dependency.o.d
+ echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> """+buildLocation+"""/winscw/urel/dependency.o.d
+ echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> """+buildLocation+"""/dependency_exe/tools2/rel/"""+hostPlatformOffset+"""dependency.o.d
+ sbs --no-depend-include -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
+ t.errors = 0
+ t.targets = hostPlatformTargets
+ t.run(hostPlatform)
+
+
+ t.id = "0098f"
+ t.name ="no_depend_generate"
+ t.description = "Invalidate and remove dependency files in order to confirm they are neither included nor re-generated when --no-depend-generate is used"
+ buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment('smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
+ t.command = """
+ sleep 1
+ touch smoke_suite/test_resources/dependencies/dependency.cpp
+ touch smoke_suite/test_resources/dependencies/main.cpp
+ echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> """+buildLocation+"""/armv5/urel/dependency.o.d
+ echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> """+buildLocation+"""/winscw/urel/dependency.o.d
+ echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> """+buildLocation+"""/dependency_exe/tools2/rel/"""+hostPlatformOffset+"""dependency.o.d
+ sbs --no-depend-generate -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
+ t.antitargets = [
+ buildLocation+"/armv5/urel/main.o.d",
+ buildLocation+"/armv5/udeb/main.o.d",
+ buildLocation+"/winscw/urel/main.o.d",
+ buildLocation+"/winscw/udeb/main.o.d",
+ buildLocation+"/dependency_exe/tools2/rel/"+hostPlatformOffset+"main.o.d"
+ ]
+ t.targets = hostPlatformTargets
+ t.run(hostPlatform)
+
+ # clean-up
+ os.remove("smoke_suite/test_resources/dependencies/dependency.cpp")
+ os.remove("smoke_suite/test_resources/dependencies/dependency.rss")
+
+ t.id = "98"
+ t.name = "dependencies"
+ t.print_result()
+ return t
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dll_armv5.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dll_armv5.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,87 @@
+#
+# 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 AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.usebash = True
+
+ command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c %s -f-"
+ maintargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll"
+ ]
+ abiv1libtargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.lib"
+ ]
+ buildtargets = [
+ "createstaticdll_dll/armv5/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/armv5/urel/CreateStaticDLL.o"
+ ]
+ mustmatch = [
+ r".*\busrt\d_\d\.lib\b.*",
+ r".*\bscppnwdl\.dso\b.*"
+ ]
+ mustnotmatch = [
+ ".*ksrt.*"
+ ]
+
+ # Note that ABIv1 import libraries are only generated for RVCT-based armv5
+ # builds on Windows if the kit asks for it (off by default)
+
+ t.id = "0009a"
+ t.name = "dll_armv5_rvct"
+ t.command = command % "armv5"
+ t.targets = maintargets[:] # Shallow, as we optionally extend later and then re-use
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/bld.inf', buildtargets)
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.run()
+
+ t.id = "0009b"
+ t.name = "dll_armv5_rvct_abiv1"
+ t.command += " --configpath=test/config/abiv1kit"
+ t.targets.extend(abiv1libtargets)
+ t.run("windows")
+
+ t.id = "0009c"
+ t.name = "dll_armv5_clean"
+ t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c armv5 clean"
+ t.targets = []
+ t.mustmatch = []
+ t.mustnotmatch = []
+ t.run()
+
+ t.id = "0009d"
+ t.name = "dll_armv5_gcce"
+ t.command = command % "gcce_armv5"
+ t.targets = maintargets
+ t.antitargets = abiv1libtargets
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/bld.inf', buildtargets)
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.run()
+
+ t.id = "9"
+ t.name = "dll_armv5"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dll_armv5_smp.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dll_armv5_smp.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,44 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.name = "dll_armv5_smp"
+ t.id = "63"
+ t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c " + \
+ "armv5 -c armv5.smp"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv5smp/udeb/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5smp/urel/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5smp/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv5smp/urel/createstaticdll.dll"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/bld.inf', [
+ "createstaticdll_dll/armv5/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/armv5/urel/CreateStaticDLL.o",
+ "createstaticdll_dll/armv5smp/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/armv5smp/urel/CreateStaticDLL.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dll_armv5_winscw_freeze.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dll_armv5_winscw_freeze.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,109 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+from raptor_tests import where
+
+def run():
+ t = SmokeTest()
+ t.id = "0012a"
+ t.name = "dll_armv5_winscw_freeze"
+ t.description = """Builds a component with unfrozen exports from clean,
+ followed by a FREEZE, a further CLEAN and then a check that new .def
+ files are present. The PERL environment variable is set to the absolute
+ Perl path in order to test a known issue with the execution of tools
+ such as efreeze under Cygwin when multiple arguments are listed.
+ Part b tests whether removing an export works when using the variant;
+ remove_freeze"""
+ t.usebash = True
+
+ perl_location = where("perl")
+
+ t.command = """
+sbs -b smoke_suite/test_resources/unfrozen/freeze.inf -p unfrozensymbols_for_freeze.mmp -c armv5 -c winscw CLEAN > /dev/null &&
+export PERL="%s" &&
+sbs -b smoke_suite/test_resources/unfrozen/freeze.inf -p unfrozensymbols_for_freeze.mmp -c armv5 -c winscw > /dev/null &&
+sbs -b smoke_suite/test_resources/unfrozen/freeze.inf -p unfrozensymbols_for_freeze.mmp -c armv5_urel -c winscw_urel FREEZE -m ${SBSMAKEFILE} -f ${SBSLOGFILE}
+""" % perl_location
+
+ t.targets = [
+ "smoke_suite/test_resources/unfrozen/frozen/bwins/frozenu.def",
+ "smoke_suite/test_resources/unfrozen/frozen/eabi/frozenu.def"
+ ]
+
+ t.warnings = 2
+ t.run()
+
+
+ t.id = "0012b"
+ t.name = "armv5_re-freeze_with_removed_export"
+
+ t.command = "sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
+ + " -p frozen_with_removed_export.mmp -c armv5_urel ;" \
+ + " sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
+ + " -p frozen_with_removed_export.mmp FREEZE" \
+ + " -c armv5_urel.remove_freeze" \
+ + " -m ${SBSMAKEFILE} -f ${SBSLOGFILE} &&" \
+ + " grep -ir '_ZN10CMessenger11ShowMessageEv @ 1 NONAME ABSENT' $(SBS_HOME)/test/smoke_suite/test_resources/unfrozen/frozen/eabi/frozenu.def"
+
+ t.targets = []
+ t.mustmatch = [
+ "_ZN10CMessenger11ShowMessageEv @ 1 NONAME ABSENT"
+ ]
+ t.warnings = 0
+ t.errors = 1
+
+ t.run()
+
+
+ t.id = "0012c"
+ t.name = "winscw_re-freeze_with_removed_export"
+
+ t.command = "sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
+ + " -p frozen_with_removed_export.mmp -c winscw_urel ;" \
+ + " sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
+ + " -p frozen_with_removed_export.mmp FREEZE" \
+ + " -c winscw_urel.remove_freeze" \
+ + " -m ${SBSMAKEFILE} -f ${SBSLOGFILE} &&" \
+ + " grep -ir '?ShowMessage@CMessenger@@QAEXXZ @ 3 NONAME ABSENT' $(SBS_HOME)/test/smoke_suite/test_resources/unfrozen/frozen/bwins/frozenu.def"
+
+ t.mustmatch = [
+ "\?ShowMessage@CMessenger@@QAEXXZ @ 3 NONAME ABSENT"
+ ]
+
+ t.run()
+
+
+ t.id = "0012d"
+ t.name = "efreeze_info"
+
+ t.command = "sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
+ + " -p unfrozensymbols_for_freeze.mmp -c winscw freeze"
+
+ t.mustmatch = [
+ "EFREEZE: DEF file up to date"
+ ]
+ t.warnings = 0
+ t.errors = 0
+
+ t.run()
+
+
+ t.id = "12"
+ t.name = "dll_armv5_winscw_freeze"
+ t.print_result()
+ return t
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dll_armv6.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dll_armv6.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,68 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+
+ rootcommand = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf"
+ targets = [
+ "$(EPOCROOT)/epoc32/release/armv6/udeb/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv6/urel/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv6/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv6/urel/createstaticdll.dll"
+ ]
+ antitargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.lib"
+ ]
+ buildtargets = [
+ "createstaticdll_dll/armv6/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/armv6/urel/CreateStaticDLL.o",
+ "createstaticdll_dll/armv6/udeb/armv6_specific.o",
+ "createstaticdll_dll/armv6/urel/armv6_specific.o"
+ ]
+
+ t.id = "0097a"
+ t.name = "dll_armv6_rvct"
+ t.command = rootcommand + " -c armv6"
+ t.targets = targets
+ t.antitargets = antitargets
+ t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf", buildtargets)
+ t.run()
+
+ t.id = "0097b"
+ t.name = "dll_armv6_clean"
+ t.command = rootcommand + " -c armv6 clean"
+ t.targets = []
+ t.antitargets = []
+ t.run()
+
+ t.id = "0097c"
+ t.name = "dll_armv6_gcce"
+ t.command = rootcommand + " -c arm.v6.udeb.gcce4_3_2 -c arm.v6.urel.gcce4_3_2"
+ t.targets = targets
+ t.antitargets = antitargets
+ t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf", buildtargets)
+ t.run()
+
+ t.id = "97"
+ t.name = "dll_armv6"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dll_armv7.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dll_armv7.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,61 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+
+ rootcommand = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf"
+ targets = [
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/createstaticdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/createstaticdll.dll"
+ ]
+ buildtargets = [
+ "createstaticdll_dll/armv7/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/armv7/urel/CreateStaticDLL.o",
+ "createstaticdll_dll/armv7/udeb/armv7_specific.o",
+ "createstaticdll_dll/armv7/urel/armv7_specific.o"
+ ]
+
+ t.id = "0011a"
+ t.name = "dll_armv7_rvct"
+ t.command = rootcommand + " -c armv7"
+ t.targets = targets
+ t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf", buildtargets)
+ t.run()
+
+ t.id = "0011b"
+ t.name = "dll_armv7_clean"
+ t.command = rootcommand + " -c armv7 clean"
+ t.targets = []
+ t.run()
+
+ t.id = "0011c"
+ t.name = "dll_armv7_gcce"
+ t.command = rootcommand + " -c arm.v7.udeb.gcce4_3_2 -c arm.v7.urel.gcce4_3_2"
+ t.targets = targets
+ t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf", buildtargets)
+ t.run()
+
+ t.id = "11"
+ t.name = "dll_armv7"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dll_winscw.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dll_winscw.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,39 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "34"
+ t.name = "dll_winscw"
+ t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c winscw"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/createstaticdll.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/createstaticdll.dll.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/bld.inf', [
+ "createstaticdll_dll/winscw/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/winscw/udeb/createstaticdll.UID.CPP",
+ "createstaticdll_dll/winscw/udeb/createstaticdll_UID_.o",
+ "createstaticdll_dll/winscw/urel/CreateStaticDLL.o",
+ "createstaticdll_dll/winscw/urel/createstaticdll.UID.CPP",
+ "createstaticdll_dll/winscw/urel/createstaticdll_UID_.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/dll_winscw_win32resource.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/dll_winscw_win32resource.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,44 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "78"
+ t.name = "dll_winscw_win32resource"
+ t.description = """Test the construction of a custom WINSCW DLL containing Windows resources specified by win32_resource."""
+ t.command = "sbs -b smoke_suite/test_resources/simple_dll/win32resource/bld.inf -c winscw"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/createstaticdll.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/createstaticdll.dll",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/createstaticdll.dll.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/win32resource/bld.inf', [
+ "createstaticdll_dll/winscw/udeb/CreateStaticDLL.o",
+ "createstaticdll_dll/winscw/udeb/createstaticdll.UID.CPP",
+ "createstaticdll_dll/winscw/udeb/createstaticdll_UID_.o",
+ "createstaticdll_dll/winscw/udeb/gui.res",
+ "createstaticdll_dll/winscw/udeb/gui.res.d",
+ "createstaticdll_dll/winscw/urel/CreateStaticDLL.o",
+ "createstaticdll_dll/winscw/urel/createstaticdll.UID.CPP",
+ "createstaticdll_dll/winscw/urel/createstaticdll_UID_.o",
+ "createstaticdll_dll/winscw/urel/gui.res",
+ "createstaticdll_dll/winscw/urel/gui.res.d",
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/emulated_drives.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/emulated_drives.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "42"
+ t.name = "emulated_drives"
+ t.command = "sbs -b " + \
+ "smoke_suite/test_resources/emulated_drives_export/bld.inf EXPORT"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/data/c/private/10001234/policy/emulated_drives_export2.mbm",
+ "$(EPOCROOT)/epoc32/winscw/c/private/10001234/policy/emulated_drives_export2.mbm",
+ "$(EPOCROOT)/epoc32/data/z/private/10001234/policy/emulated_drives_export1.mbm",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10001234/policy/emulated_drives_export1.mbm",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10001234/policy/emulated_drives_export1.mbm"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv5.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv5.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,141 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.usebash = True
+ result = SmokeTest.PASS
+
+ description = """This test is testing 2 states of keywords, DEBUGGABLE on its own and with DEBUGGABLE_UDEBONLY together; in their mmp's
+ make a new mmp change the target so that it generates another exe, and search together with that exe name when testing second test"""
+ command = "sbs -b smoke_suite/test_resources/simple/bld.inf -b smoke_suite/test_resources/simple/debuggable_bld.inf -c %s -m ${SBSMAKEFILE} -f ${SBSLOGFILE} && " + \
+ "grep -i '.*elf2e32.*--debuggable.*' ${SBSLOGFILE};"
+ targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/debuggable.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/debuggable.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/debuggable.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/debuggable.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/debuggable.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/debuggable.exe.map"
+ ]
+ buildtargets = [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o",
+ "test_/armv5/udeb/test.o.d",
+ "test_/armv5/udeb/test3.o.d",
+ "test_/armv5/udeb/test4.o.d",
+ "test_/armv5/udeb/test5.o.d",
+ "test_/armv5/udeb/test1.o.d",
+ "test_/armv5/udeb/test6.o.d",
+ "test_/armv5/udeb/test2.o.d",
+ "test_/armv5/udeb/test3.o",
+ "test_/armv5/udeb/test4.o",
+ "test_/armv5/udeb/test5.o",
+ "test_/armv5/udeb/test1.o",
+ "test_/armv5/udeb/test6.o",
+ "test_/armv5/udeb/test2.o",
+ "test_/armv5/urel/test.o.d",
+ "test_/armv5/urel/test3.o.d",
+ "test_/armv5/urel/test4.o.d",
+ "test_/armv5/urel/test5.o.d",
+ "test_/armv5/urel/test1.o.d",
+ "test_/armv5/urel/test6.o.d",
+ "test_/armv5/urel/test2.o.d",
+ "test_/armv5/urel/test3.o",
+ "test_/armv5/urel/test4.o",
+ "test_/armv5/urel/test5.o",
+ "test_/armv5/urel/test1.o",
+ "test_/armv5/urel/test6.o",
+ "test_/armv5/urel/test2.o",
+ "test_/armv5/udeb/test_udeb_objects.via",
+ "test_/armv5/urel/test_urel_objects.via"
+ ]
+ mustmatch = [
+ ".*elf2e32.*urel.*test.exe.*--debuggable.*",
+ ".*elf2e32.*udeb.*test.exe.*--debuggable.*",
+ ".*elf2e32.*udeb.*debuggable.exe.*--debuggable.*"
+ ]
+ mustnotmatch = [
+ ".*elf2e32.*urel.*debuggable.exe.*--debuggable.*"
+ ]
+ warnings = 1
+
+ t.id = "0001a"
+ t.name = "exe_armv5_rvct"
+ t.description = description
+ t.command = command % "armv5"
+ t.targets = targets
+ t.addbuildtargets("smoke_suite/test_resources/simple/bld.inf", buildtargets)
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.warnings = warnings
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ t.id = "0001b"
+ t.name = "exe_armv5_clean"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 clean"
+ t.targets = []
+ t.mustmatch = []
+ t.mustnotmatch = []
+ t.warnings = 0
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "0001c"
+ t.name = "exe_armv5_gcce"
+ t.command = command % "gcce_armv5"
+ t.targets = targets
+ t.addbuildtargets("smoke_suite/test_resources/simple/bld.inf", buildtargets)
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.warnings = warnings
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ # Test for the Check Filter to ensure that it reports
+ # missing files properly when used from sbs_filter.py:
+ import os
+ abs_epocroot = os.path.abspath(os.environ["EPOCROOT"])
+ t.id = "0001d"
+ t.command = "rm $(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map; sbs_filter --filters=FilterCheck < ${SBSLOGFILE}"
+ t.targets = []
+ t.mustmatch = ["MISSING:[ ]+" + abs_epocroot.replace("\\","\\\\") + ".epoc32.release.armv5.udeb.test\.exe\.map.*"]
+ t.mustnotmatch = []
+ t.warnings = 1
+ t.returncode = 2
+ t.run()
+
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+ t.id = "1"
+ t.name = "exe_armv5"
+ t.result = result
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv5_filtered.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv5_filtered.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,44 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "2"
+ t.name = "exe_armv5_filtered"
+ t.description = "Run exe_armv5 with a customised filter. Will create then" \
+ + " remove filter file"
+ t.usebash = True
+ t.command = "cp -f smoke_suite/test_resources/filter_test/testfilter.py ../python/plugins/testfilter.py " \
+ "&& chmod 600 ../python/plugins/testfilter.py " \
+ "&& sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 --filters=TestFilter " \
+ "&& rm -f ../python/plugins/testfilter.py*"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o"
+ ])
+ t.mustmatch = [
+ ".*Test Passed!.*"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv5_smp.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv5_smp.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,42 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "62"
+ t.name = "exe_armv5_smp"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 -c" \
+ + " armv5.smp"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5smp/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5smp/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5smp/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5smp/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o",
+ "test_/armv5smp/udeb/test.o",
+ "test_/armv5smp/urel/test.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_check.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_check.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,76 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+import re
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "6"
+ t.name = "exe_armv5_winscw_check"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 -c winscw --check"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe.map"
+ ]
+ t.missing = 7
+ t.returncode = 1
+ t.stdout = [
+ # armv5 artefacts
+ "MISSING: $(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "MISSING: $(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "MISSING: $(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "MISSING: $(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ # winscw artefacts
+ "MISSING: $(EPOCROOT)/epoc32/release/winscw/udeb/test.exe",
+ "MISSING: $(EPOCROOT)/epoc32/release/winscw/urel/test.exe",
+ "MISSING: $(EPOCROOT)/epoc32/release/winscw/urel/test.exe.map"
+ ]
+ t.run()
+
+ t.id = "6a"
+ t.name = "exe_armv5_winscw_check_error"
+ t.command = "sbs -b no/such/bld.inf --check"
+ t.targets = []
+ t.missing = 0
+ t.errors = 2
+ t.returncode = 1
+ t.regexlinefilter = re.compile("^NEVER") # no literal stdout matching
+ t.stdout = []
+ t.mustmatch = [
+ "sbs: error:.*build info file does not exist",
+ "sbs: error: no CHECK information found",
+ ]
+ t.run()
+
+ t.id = "6b"
+ t.name = "exe_armv5_winscw_what_error"
+ t.command = "sbs -b no/such/bld.inf --what"
+ t.mustmatch = [
+ "sbs: error:.*build info file does not exist",
+ "sbs: error: no WHAT information found",
+ ]
+ t.run()
+
+ t.id = "6"
+ t.name = "exe_armv5_winscw_check"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_plus_clean.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_plus_clean.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,102 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest, AntiTargetSmokeTest
+
+def run():
+ result = SmokeTest.PASS
+
+ t = SmokeTest()
+ t.id = "0005a"
+ t.name = "exe_armv5_winscw"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
+ "-c winscw"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o",
+ "test_/winscw/udeb/test.o",
+ "test_/winscw/udeb/test_UID_.o",
+ "test_/winscw/udeb/test.UID.CPP",
+ "test_/winscw/urel/test.o",
+ "test_/winscw/urel/test_UID_.o",
+ "test_/winscw/urel/test.UID.CPP"
+ ])
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ "Check that CLEAN removes built files"
+ c = AntiTargetSmokeTest()
+ c.id = "0005b"
+ c.name = "exe_armv5_winscw_clean"
+ c.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
+ "-c winscw CLEAN"
+ c.antitargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe.map"
+ ]
+ c.addbuildantitargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o",
+ "test_/winscw/udeb/test.o",
+ "test_/winscw/udeb/test_UID_.o",
+ "test_/winscw/udeb/test.UID.CPP",
+ "test_/winscw/urel/test.o",
+ "test_/winscw/urel/test_UID_.o",
+ "test_/winscw/urel/test.UID.CPP"
+ ])
+ c.run()
+ if c.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ "Rebuild"
+ t.id = "0005c"
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ "Check that REALLYCLEAN removes built files"
+ c.id = "0005d"
+ c.name = "exe_armv5_winscw_reallyclean"
+ c.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
+ "-c winscw REALLYCLEAN"
+ c.run()
+ if c.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "5"
+ t.name = "exe_armv5_winscw_plus_clean"
+ t.result = result
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_single_file.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_single_file.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,149 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ result = SmokeTest.PASS
+
+ t = SmokeTest()
+ t.name = "exe_armv5_winscw_single_file_baseline_build"
+
+ # Build component
+ t.id = "0089a"
+ 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_sc.rpp",
+ "helloworld_exe/helloworld_HelloWorld_sc.rpp.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_Application.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Application.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppView.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppView.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_Document.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Document.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_Main.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Main.o.d",
+ "helloworld_exe/armv5/udeb/helloworld_udeb_objects.via",
+ "helloworld_exe/armv5/urel/HelloWorld_Application.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Application.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_AppUi.o",
+ "helloworld_exe/armv5/urel/HelloWorld_AppUi.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_AppView.o",
+ "helloworld_exe/armv5/urel/HelloWorld_AppView.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_Document.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Document.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_Main.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Main.o.d",
+ "helloworld_exe/armv5/urel/helloworld_urel_objects.via",
+ "helloworld_exe/winscw/udeb/helloworld.UID.CPP",
+ "helloworld_exe/winscw/udeb/HelloWorld_Application.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_Application.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Application.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppUi.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppView.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppView.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppView.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_Document.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_Document.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Document.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_Main.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_Main.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Main.o.d",
+ "helloworld_exe/winscw/udeb/helloworld_udeb_objects.lrf",
+ "helloworld_exe/winscw/udeb/helloworld_UID_.dep",
+ "helloworld_exe/winscw/udeb/helloworld_UID_.o",
+ "helloworld_exe/winscw/udeb/helloworld_UID_.o.d",
+ "helloworld_exe/winscw/urel/helloworld.UID.CPP",
+ "helloworld_exe/winscw/urel/HelloWorld_Application.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_Application.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Application.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_AppUi.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_AppUi.o",
+ "helloworld_exe/winscw/urel/HelloWorld_AppUi.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_AppView.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_AppView.o",
+ "helloworld_exe/winscw/urel/HelloWorld_AppView.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_Document.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_Document.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Document.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_Main.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_Main.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Main.o.d",
+ "helloworld_exe/winscw/urel/helloworld_UID_.dep",
+ "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_sc.rpp",
+ "helloworld_reg_exe/helloworld_reg_HelloWorld_reg_sc.rpp.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', [])
+ t.targets = []
+ t.usebash = True
+
+ # Touch both a straight source and a resource file and confirm we can recompile in isolation without additional impact
+ t.id = "0089b"
+ t.name = "exe_armv5_winscw_single_file_touch_rebuild"
+ t.command = """
+ sleep 1
+ touch smoke_suite/test_resources/simple_gui/HelloWorld_Document.cpp
+ touch smoke_suite/test_resources/simple_gui/HelloWorld.rss
+ sbs -f - --source-target=smoke_suite/test_resources/simple_gui/HelloWorld_Document.cpp --source-target=smoke_suite/test_resources/simple_gui/HelloWorld.rss -b smoke_suite/test_resources/simple_gui/Bld.inf"""
+ t.countmatch = [
+ [".*recipe name='resource(preprocess|header|compile)'", 3],
+ [".*recipe name='compile'.*", 2],
+ [".*recipe name='win32compile2object'.*", 2]
+ ]
+ 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"
+ t.name = "exe_armv5_winscw_single_file_notouch_rebuild"
+ t.command = "sbs -f - --source-target=smoke_suite/test_resources/simple_gui/HelloWorld_Document.cpp --source-target=smoke_suite/test_resources/simple_gui/HelloWorld.rss -b smoke_suite/test_resources/simple_gui/Bld.inf"
+ t.mustmatch = []
+ t.countmatch = [
+ [".*make.*Nothing to be done for.*SOURCETARGET_.*", 10]
+ ]
+ t.mustnotmatch = [
+ ".*recipe name='(resourcepreprocess|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 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_what.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv5_winscw_what.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,37 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "7"
+ t.name = "exe_armv5_winscw_what"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
+ "-c winscw --what"
+ t.stdout = [
+ # armv5 artefacts
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ # winscw artefacts
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe.map"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_armv7.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_armv7.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,35 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "3"
+ t.name = "exe_armv7"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv7"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/armv7/udeb/test.o",
+ "test_/armv7/urel/test.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_checksource.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_checksource.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,40 @@
+#
+# 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:
+#
+
+# NB - the checksource filter can find the same problem twice
+# So the count of 5 errors here is not actually accurate (AFAIK there are only 4)
+
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "88"
+ t.name = "exe_checksource"
+ t.description = "Build a exe with a checksource filter"
+ t.usebash = True
+
+ bldinf = "smoke_suite/test_resources/checksource/helloworld/bld.inf"
+ cmd1 = "sbs -b %s REALLYCLEAN -m ${SBSMAKEFILE} -f ${SBSLOGFILE}" % bldinf
+ cmd2 = "sbs -b %s --filter=FilterCheckSource -m ${SBSMAKEFILE} -f ${SBSLOGFILE}" % bldinf
+ cmd3 = "grep -i '.*checksource errors found.*' ${SBSLOGFILE}"
+ t.command = cmd1 + " && " + cmd2 + " && " + cmd3
+
+ t.mustmatch_singleline = ["[1-9] checksource errors found"]
+
+ t.returncode = 1
+ t.run("windows")
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/exe_winscw.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/exe_winscw.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,45 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "33"
+ t.name = "exe_winscw"
+ t.usebash = True
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c winscw -m ${SBSMAKEFILE} -f ${SBSLOGFILE}; grep -E \"mwldsym2\" ${SBSLOGFILE}"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/winscw/udeb/test.o",
+ "test_/winscw/udeb/test_.o",
+ "test_/winscw/udeb/test_UID_.o",
+ "test_/winscw/udeb/test.UID.CPP",
+ "test_/winscw/urel/test.o",
+ "test_/winscw/urel/test_.o",
+ "test_/winscw/urel/test_UID_.o",
+ "test_/winscw/urel/test.UID.CPP"
+ ])
+ # Check that the default operator new library is used
+ t.mustmatch = [
+ '.*mwldsym2.*scppnwdl.lib.*test.exe.*'
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/export.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/export.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,149 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest, AntiTargetSmokeTest
+import os
+
+def run():
+
+ # This .inf file is created for clean_simple_export and
+ # reallyclean_simple_export tests to use so that we can put the
+ # username into the output filenames - which helps a lot when
+ # several people run tests on the same computer (e.g. linux machines)
+ bld = open('smoke_suite/test_resources/simple_export/expbld.inf', 'w')
+ user = os.environ['USER']
+ bld.write("""
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_MMPFILES
+simple.mmp
+
+PRJ_EXPORTS
+#if !defined( WINSCW )
+// Exports conditional on build configuration macros aren't actually supported,
+// but we confirm that we preprocess in the context of an armv5 build when both
+// winscw and armv5 configurations are (implicitly, as there's no "-c" argument)
+// used. This is in order to work around assumptions currently made in the
+// source base.
+simple_exp1.h exported_1.h
+#endif
+simple_exp2.h exported_2.h
+simple_exp3.h exported_3.h
+executable_file executable_file
+"file with a space.doc" "exportedfilewithspacesremoved.doc"
+"file with a space.doc" "exported file with a space.doc"
+
+simple_exp1.h /tmp/%s/ //
+simple_exp2.h \\tmp\\%s/ //
+simple_exp3.h /tmp/%s/simple_exp3.h
+simple_exp4.h //
+
+""" % (user, user, user))
+ bld.close()
+
+
+ t = SmokeTest()
+ t.id = "0023a"
+ t.name = "export"
+ t.command = "sbs -b smoke_suite/test_resources/simple_export/expbld.inf export"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/exported_1.h",
+ "$(EPOCROOT)/epoc32/include/exported_2.h",
+ "$(EPOCROOT)/epoc32/include/exported_3.h",
+ "$(EPOCROOT)/epoc32/include/exportedfilewithspacesremoved.doc",
+ "$(EPOCROOT)/epoc32/include/exported file with a space.doc",
+ "/tmp/$(USER)/simple_exp1.h",
+ "/tmp/$(USER)/simple_exp2.h",
+ "/tmp/$(USER)/simple_exp3.h",
+ "$(EPOCROOT)/epoc32/include/executable_file",
+ "$(EPOCROOT)/epoc32/include/simple_exp4.h"
+ ]
+ t.run()
+
+
+ t = SmokeTest()
+ t.id = "0023a1"
+ t.name = "export"
+ t.usebash = True
+ t.command = "ls -l ${EPOCROOT}/epoc32/include/executable_file"
+ t.mustmatch = [ "^.rwxrwxr.x[\.\+]? .*executable_file.*$" ]
+ t.targets = []
+ t.run("linux")
+ t.usebash = False
+
+
+ # Testing if clean deletes any exports which it is not supposed to
+ t.id = "0023b"
+ t.name = "export_clean"
+ t.command = "sbs -b smoke_suite/test_resources/simple_export/expbld.inf clean"
+ t.mustmatch = []
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/exported_1.h",
+ "$(EPOCROOT)/epoc32/include/exported_2.h",
+ "$(EPOCROOT)/epoc32/include/exported_3.h",
+ "$(EPOCROOT)/epoc32/include/executable_file",
+ "$(EPOCROOT)/epoc32/include/exportedfilewithspacesremoved.doc",
+ "$(EPOCROOT)/epoc32/include/exported file with a space.doc",
+ "/tmp/$(USER)/simple_exp1.h",
+ "/tmp/$(USER)/simple_exp2.h",
+ "/tmp/$(USER)/simple_exp3.h"
+ ]
+ t.run()
+
+
+ t = AntiTargetSmokeTest()
+ t.id = "0023c"
+ t.name = "export_reallyclean"
+ t.command = "sbs -b smoke_suite/test_resources/simple_export/expbld.inf reallyclean"
+ t.antitargets = [
+ '$(EPOCROOT)/epoc32/include/exported_1.h',
+ '$(EPOCROOT)/epoc32/include/exported_2.h',
+ '$(EPOCROOT)/epoc32/include/exported_3.h',
+ "$(EPOCROOT)/epoc32/include/executable_file",
+ '$(EPOCROOT)/epoc32/include/exportedfilewithspacesremoved.doc',
+ '$(EPOCROOT)/epoc32/include/exported file with a space.doc',
+ '/tmp/$(USER)/simple_exp1.h',
+ '/tmp/$(USER)/simple_exp2.h',
+ '/tmp/$(USER)/simple_exp3.h',
+ '$(EPOCROOT)/epoc32/include/simple_exp4.h'
+ ]
+ t.run()
+
+ # Check that the --noexport feature really does prevent exports from happening
+ t = AntiTargetSmokeTest()
+ t.id = "0023d"
+ t.name = "export_noexport"
+ t.command = "sbs -b smoke_suite/test_resources/simple_export/expbld.inf --noexport -n"
+ t.antitargets = [
+ '$(EPOCROOT)/epoc32/include/exported_1.h',
+ '$(EPOCROOT)/epoc32/include/exported_2.h',
+ '$(EPOCROOT)/epoc32/include/exported_3.h',
+ "$(EPOCROOT)/epoc32/include/executable_file",
+ '$(EPOCROOT)/epoc32/include/exportedfilewithspacesremoved.doc',
+ '$(EPOCROOT)/epoc32/include/exported file with a space.doc',
+ '/tmp/$(USER)/simple_exp1.h',
+ '/tmp/$(USER)/simple_exp2.h',
+ '/tmp/$(USER)/simple_exp3.h',
+ '$(EPOCROOT)/epoc32/include/simple_exp4.h'
+ ]
+ t.run()
+
+ t.id = "23"
+ t.name = "export"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/export_multi.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/export_multi.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "81"
+ t.name = "export_multi"
+ t.description = "Test that the export section only gets included once even if all platforms are selected (see DPDEF138366)"
+ # Note I'm not including 'tools' to avoid a dependency on MSVC6
+ # Given this test will not be necessary once the export section is removed from the make files anyway, I'm not too worried.
+ t.command = "sbs -b smoke_suite/test_resources/basics/helloworld/Bld.inf -c winscw -c armv5 -c tools2 -c armv7 -c gccxml EXPORT"
+ t.mustnotmatch = [
+ ".*warning: overriding commands for target.*",
+ ".*warning: ignoring old commands for target.*"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/extension_reallyclean.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/extension_reallyclean.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,43 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.id = "19"
+ t.name = "extension_reallyclean"
+ t.description = "These 2 sets of tests are for testing REALLYCLEAN on TEM" \
+ + " files"
+ t.usebash = True
+ t.command = "sbs -b smoke_suite/test_resources/simple_extension/bld.inf " \
+ + "-c armv5_urel -m ${SBSMAKEFILE} -f ${SBSLOGFILE}; ls " \
+ + "$(EPOCROOT)/epoc32/build/tem_export_test; sbs -b " \
+ + "smoke_suite/test_resources/simple_extension/bld.inf -c " \
+ + "armv5_urel REALLYCLEAN -m ${SBSMAKEFILE}_2 -f ${SBSLOGFILE}_2"
+ t.mustnotmatch = [
+ "ls.*/epoc32/build/tem_export_test: No such file or directory"
+ ]
+ t.antitargets = [
+ "$(EPOCROOT)/epoc32/build/tem_export_test",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/clean.mk",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/clean.meta",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/build.mk",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/build.meta",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/simple_extension.txt"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/extension_whattarget.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/extension_whattarget.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,54 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+import re
+
+def run():
+
+ t = CheckWhatSmokeTest()
+ t.id = "68"
+ t.description = "Test output from WHAT target"
+ t.name = "extension_whattarget"
+ t.command = "sbs -b smoke_suite/test_resources/simple_extension/bld.inf" + \
+ " WHAT -f - -m ${SBSMAKEFILE}"
+ t.regexlinefilter = \
+ re.compile("^<(whatlog|export|build>|resource>|bitmap>)")
+ t.hostossensitive = False
+ t.usebash = True
+ t.targets = [
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/clean.mk",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/clean.meta",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/build.mk",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/build.meta",
+ ]
+ t.stdout = [
+ "",
+ " ",
+ " ",
+ " ",
+ " ",
+ "",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/simple_extension.txt ",
+ "",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/simple_extension.txt ",
+ "",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/simple_extension.txt ",
+ "",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/simple_extension.txt "
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/featurevariants.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/featurevariants.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,422 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest, ReplaceEnvs
+import os
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.usebash = True
+
+ preBuiltTargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dummy.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dummy.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/debfake.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/relfake.lib"
+ ]
+
+ invariantTargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_invariant.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_invariant.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_invariant.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_invariant.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_invariant.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_invariant.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll_invariant.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll_invariant{000a0000}.dso"
+ ]
+
+ variantTargetsDefaultTree = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll_variant2.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/createexe_variant3.exe.sym",
+
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll_variant2.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/createexe_variant3.exe.sym"
+ ]
+
+ variantTargetsProductTrees = [
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant1.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createstaticdll_variant2.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createexe_variant3.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.one/udeb/createexe_variant3.exe.vmap",
+
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant1.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant2.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createstaticdll_variant2.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createexe_variant3.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.one/urel/createexe_variant3.exe.vmap",
+
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant1.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant2.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createstaticdll_variant2.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createexe_variant3.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.two/udeb/createexe_variant3.exe.vmap",
+
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant1.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant2.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createstaticdll_variant2.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createexe_variant3.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.two/urel/createexe_variant3.exe.vmap",
+
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant1.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant2.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createstaticdll_variant2.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createexe_variant3.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.three/udeb/createexe_variant3.exe.vmap",
+
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant1.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant1.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant1.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant1.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant2.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createstaticdll_variant2.dll.vmap",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createexe_variant3.exe",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createexe_variant3.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createexe_variant3.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5.three/urel/createexe_variant3.exe.vmap",
+ ]
+
+ variantTargetsGeneric = [
+ "$(EPOCROOT)/epoc32/data/z/resource/apps/dummy_var1.rsc",
+ "$(EPOCROOT)/epoc32/include/dummy_var1.rsg",
+ "$(EPOCROOT)/epoc32/data/z/resource/apps/dummy_var2.rsc",
+ "$(EPOCROOT)/epoc32/include/dummy_var2.rsg",
+ "$(EPOCROOT)/epoc32/data/z/resource/apps/dummy_var3.rsc",
+ "$(EPOCROOT)/epoc32/include/dummy_var3.rsg",
+ "$(EPOCROOT)/epoc32/data/z/resource/apps/dummy_inv.rsc",
+ "$(EPOCROOT)/epoc32/include/dummy_inv.rsg",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll_variant1.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll_variant1{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll_variant2.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll_variant2{000a0000}.dso"
+ ]
+
+ invariantBuildTargets = [
+ "createstaticdll_invariant_dll/armv5/udeb/CreateStaticDLL_invariant.o",
+ "createstaticdll_invariant_dll/armv5/udeb/CreateStaticDLL_invariant.o.d",
+ "createstaticdll_invariant_dll/armv5/udeb/createstaticdll_invariant_udeb_objects.via",
+ "createstaticdll_invariant_dll/armv5/udeb/createstaticdll_invariant{000a0000}.def",
+ "createstaticdll_invariant_dll/armv5/udeb/createstaticdll_invariant{000a0000}.dso",
+ "createstaticdll_invariant_dll/armv5/urel/CreateStaticDLL_invariant.o",
+ "createstaticdll_invariant_dll/armv5/urel/CreateStaticDLL_invariant.o.d",
+ "createstaticdll_invariant_dll/armv5/urel/createstaticdll_invariant_urel_objects.via",
+ "createstaticdll_invariant_dll/armv5/urel/createstaticdll_invariant{000a0000}.def",
+ "createstaticdll_invariant_dll/armv5/urel/createstaticdll_invariant{000a0000}.dso",
+ "dummy_inv_dll/dummy_inv_dummy_sc.rpp",
+ "dummy_inv_dll/dummy_inv_dummy_sc.rpp.d"
+ ]
+
+ variantBuildTargetsDefaultTree = [
+ "createstaticdll_variant1_dll/armv5/udeb/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5/udeb/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5/udeb/createstaticdll_variant1_udeb_objects.via",
+ "createstaticdll_variant1_dll/armv5/udeb/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5/udeb/createstaticdll_variant1{000a0000}.dso",
+ "createstaticdll_variant1_dll/armv5/urel/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5/urel/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5/urel/createstaticdll_variant1_urel_objects.via",
+ "createstaticdll_variant1_dll/armv5/urel/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5/urel/createstaticdll_variant1{000a0000}.dso",
+
+ "createstaticdll_variant2_dll/armv5/udeb/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5/udeb/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5/udeb/createstaticdll_variant2_udeb_objects.via",
+ "createstaticdll_variant2_dll/armv5/udeb/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5/udeb/createstaticdll_variant2{000a0000}.dso",
+ "createstaticdll_variant2_dll/armv5/urel/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5/urel/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5/urel/createstaticdll_variant2_urel_objects.via",
+ "createstaticdll_variant2_dll/armv5/urel/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5/urel/createstaticdll_variant2{000a0000}.dso",
+
+ "createexe_variant3_exe/armv5/udeb/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5/udeb/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5/udeb/createexe_variant3_udeb_objects.via",
+ "createexe_variant3_exe/armv5/urel/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5/urel/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5/urel/createexe_variant3_urel_objects.via"
+ ]
+
+ variantBuildTargetsProductTrees = [
+ "createstaticdll_variant1_dll/armv5.one/udeb/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5.one/udeb/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5.one/udeb/createstaticdll_variant1_udeb_objects.via",
+ "createstaticdll_variant1_dll/armv5.one/udeb/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5.one/udeb/createstaticdll_variant1{000a0000}.dso",
+ "createstaticdll_variant1_dll/armv5.one/urel/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5.one/urel/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5.one/urel/createstaticdll_variant1_urel_objects.via",
+ "createstaticdll_variant1_dll/armv5.one/urel/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5.one/urel/createstaticdll_variant1{000a0000}.dso",
+
+ "createstaticdll_variant2_dll/armv5.one/udeb/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5.one/udeb/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5.one/udeb/createstaticdll_variant2_udeb_objects.via",
+ "createstaticdll_variant2_dll/armv5.one/udeb/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5.one/udeb/createstaticdll_variant2{000a0000}.dso",
+ "createstaticdll_variant2_dll/armv5.one/urel/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5.one/urel/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5.one/urel/createstaticdll_variant2_urel_objects.via",
+ "createstaticdll_variant2_dll/armv5.one/urel/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5.one/urel/createstaticdll_variant2{000a0000}.dso",
+
+ "createexe_variant3_exe/armv5.one/udeb/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5.one/udeb/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5.one/udeb/createexe_variant3_udeb_objects.via",
+ "createexe_variant3_exe/armv5.one/urel/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5.one/urel/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5.one/urel/createexe_variant3_urel_objects.via",
+
+ "createstaticdll_variant1_dll/armv5.two/udeb/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5.two/udeb/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5.two/udeb/createstaticdll_variant1_udeb_objects.via",
+ "createstaticdll_variant1_dll/armv5.two/udeb/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5.two/udeb/createstaticdll_variant1{000a0000}.dso",
+ "createstaticdll_variant1_dll/armv5.two/urel/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5.two/urel/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5.two/urel/createstaticdll_variant1_urel_objects.via",
+ "createstaticdll_variant1_dll/armv5.two/urel/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5.two/urel/createstaticdll_variant1{000a0000}.dso",
+
+ "createstaticdll_variant2_dll/armv5.two/udeb/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5.two/udeb/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5.two/udeb/createstaticdll_variant2_udeb_objects.via",
+ "createstaticdll_variant2_dll/armv5.two/udeb/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5.two/udeb/createstaticdll_variant2{000a0000}.dso",
+ "createstaticdll_variant2_dll/armv5.two/urel/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5.two/urel/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5.two/urel/createstaticdll_variant2_urel_objects.via",
+ "createstaticdll_variant2_dll/armv5.two/urel/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5.two/urel/createstaticdll_variant2{000a0000}.dso",
+
+ "createexe_variant3_exe/armv5.two/udeb/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5.two/udeb/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5.two/udeb/createexe_variant3_udeb_objects.via",
+ "createexe_variant3_exe/armv5.two/urel/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5.two/urel/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5.two/urel/createexe_variant3_urel_objects.via",
+
+ "createstaticdll_variant1_dll/armv5.three/udeb/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5.three/udeb/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5.three/udeb/createstaticdll_variant1_udeb_objects.via",
+ "createstaticdll_variant1_dll/armv5.three/udeb/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5.three/udeb/createstaticdll_variant1{000a0000}.dso",
+ "createstaticdll_variant1_dll/armv5.three/urel/CreateStaticDLL_variant1.o",
+ "createstaticdll_variant1_dll/armv5.three/urel/CreateStaticDLL_variant1.o.d",
+ "createstaticdll_variant1_dll/armv5.three/urel/createstaticdll_variant1_urel_objects.via",
+ "createstaticdll_variant1_dll/armv5.three/urel/createstaticdll_variant1{000a0000}.def",
+ "createstaticdll_variant1_dll/armv5.three/urel/createstaticdll_variant1{000a0000}.dso",
+
+ "createstaticdll_variant2_dll/armv5.three/udeb/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5.three/udeb/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5.three/udeb/createstaticdll_variant2_udeb_objects.via",
+ "createstaticdll_variant2_dll/armv5.three/udeb/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5.three/udeb/createstaticdll_variant2{000a0000}.dso",
+ "createstaticdll_variant2_dll/armv5.three/urel/CreateStaticDLL_variant2.o",
+ "createstaticdll_variant2_dll/armv5.three/urel/CreateStaticDLL_variant2.o.d",
+ "createstaticdll_variant2_dll/armv5.three/urel/createstaticdll_variant2_urel_objects.via",
+ "createstaticdll_variant2_dll/armv5.three/urel/createstaticdll_variant2{000a0000}.def",
+ "createstaticdll_variant2_dll/armv5.three/urel/createstaticdll_variant2{000a0000}.dso",
+
+ "createexe_variant3_exe/armv5.three/udeb/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5.three/udeb/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5.three/udeb/createexe_variant3_udeb_objects.via",
+ "createexe_variant3_exe/armv5.three/urel/CreateEXE_variant3.o",
+ "createexe_variant3_exe/armv5.three/urel/CreateEXE_variant3.o.d",
+ "createexe_variant3_exe/armv5.three/urel/createexe_variant3_urel_objects.via"
+ ]
+
+ variantBuildTargetsGeneric = [
+ "dummy_var1_dll/dummy_var1_dummy_sc.rpp",
+ "dummy_var1_dll/dummy_var1_dummy_sc.rpp.d",
+ "dummy_var2_dll/dummy_var2_dummy_sc.rpp",
+ "dummy_var2_dll/dummy_var2_dummy_sc.rpp.d",
+ "dummy_var3_exe/dummy_var3_dummy_sc.rpp",
+ "dummy_var3_exe/dummy_var3_dummy_sc.rpp.d"
+ ]
+
+ sbscommand = "sbs -b smoke_suite/test_resources/bv/bld.inf -c armv5 " + \
+ "-c armv5.test_bv_1 -c armv5.test_bv_2 -c armv5.test_bv_3 -f- " + \
+ "--configpath=test/smoke_suite/test_resources/bv/config/variants"
+
+ t.id = "56a"
+ t.description = """Build variant and invariant components.
+ In this default mode of operation, all components build for the non-product armv5 config whereas
+ only variant components build for the armv5.* bv configs."""
+ t.name = "featurevariant_build"
+ t.command = sbscommand
+ t.targets = preBuiltTargets + invariantTargets + variantTargetsGeneric + variantTargetsDefaultTree + variantTargetsProductTrees
+ t.addbuildtargets('smoke_suite/test_resources/bv/bld.inf',
+ invariantBuildTargets + variantBuildTargetsGeneric + variantBuildTargetsDefaultTree + variantBuildTargetsProductTrees
+ )
+ # Test that static libs are linked from the invariant place.
+ t.mustmatch = [
+ "armlink.*epoc32/release/armv5/urel/bv_static_lib.lib",
+ "armlink.*epoc32/release/armv5/udeb/bv_static_lib.lib"
+ ]
+ t.run()
+
+ t.id = "56b"
+ t.description = """Build variant and invariant components using an os_properties.xml that sets FEATUREVARIANTSAFE=1.
+ With FEATUREVARIANTSAFE only invariant components build for the non-product armv5 config and
+ only variant components build for the armv5.* bv configs."""
+ t.name = "featurevariant_build_featurevariantsafe"
+ t.command = sbscommand + " --configpath=test/smoke_suite/test_resources/bv/config/properties"
+ t.targets = preBuiltTargets + invariantTargets + variantTargetsGeneric + variantTargetsProductTrees
+ t.addbuildtargets('smoke_suite/test_resources/bv/bld.inf',
+ invariantBuildTargets + variantBuildTargetsGeneric + variantBuildTargetsProductTrees
+ )
+ t.antitargets = variantTargetsDefaultTree
+ t.addbuildantitargets('smoke_suite/test_resources/bv/bld.inf',
+ variantBuildTargetsDefaultTree
+ )
+ # Test that static libs are linked from the invariant place.
+ t.mustmatch = [
+ "armlink.*epoc32/release/armv5/urel/bv_static_lib.lib",
+ "armlink.*epoc32/release/armv5/udeb/bv_static_lib.lib"
+ ]
+ t.run()
+
+
+ # tests for the createvmap script
+ createvmap = "python $(SBS_HOME)/bin/createvmap.py"
+ vmapfile = "$(EPOCROOT)/epoc32/build/test.vmap"
+ vmap = " -o " + vmapfile
+
+ if 'SBS_BVCPP' in os.environ:
+ bvcpp = " -c " + os.environ['SBS_BVCPP'].replace('\\','/')
+ else:
+ bvcpp = " -c $(SBS_HOME)/$(HOSTPLATFORM_DIR)/bv/bin/cpp"
+ if t.onWindows:
+ bvcpp += ".exe"
+
+ bvdata = "$(SBS_HOME)/test/smoke_suite/test_resources/bv"
+
+ preinc = " -p " + bvdata + "/var1/var1.h"
+ listA = " -f " + bvdata + "/listA.txt"
+ listB = " -f " + bvdata + "/listB.txt"
+ listC = " -f " + bvdata + "/listC.txt"
+ srcWith = " -s " + bvdata + "/with_macros.cpp"
+ srcWithout = " -s " + bvdata + "/without_macros.cpp"
+ badSrc = " -s " + bvdata + "/with_errors.cpp"
+
+ t.id = "56c"
+ t.name = "createvmap exits with an error"
+ t.usebash = True
+ t.command = createvmap
+ t.returncode = 1
+ t.targets = []
+ t.mustmatch = []
+ t.run()
+
+
+ t.id = "56d"
+ t.name = "createvmap shows cpp errors"
+ t.usebash = True
+ t.command = createvmap + vmap + bvcpp + preinc + listA + badSrc
+ t.returncode = 1
+ t.targets = []
+ t.mustmatch = ["#error this code is broken"]
+ t.run()
+
+
+ t.id = "56e"
+ t.name = "createvmap errors on missing feature list"
+ t.usebash = True
+ t.command = createvmap + vmap + bvcpp + preinc + listC + srcWith
+ t.returncode = 1
+ t.targets = []
+ t.mustmatch = ["The feature list '.*listC.txt' does not exist"]
+ t.run()
+
+
+ t.id = "56f"
+ t.name = "createvmap warns on featureless code"
+ t.usebash = True
+ t.command = createvmap + vmap + bvcpp + preinc + listA + srcWithout
+ t.returncode = 0
+ t.targets = [vmapfile]
+ t.mustmatch = ["warning: No feature macros were found in the source"]
+ t.run()
+
+
+ t.id = "56g"
+ t.name = "createvmap creates the right vmap file"
+ t.usebash = True
+ t.command = createvmap + vmap + bvcpp + preinc + listA + listB + srcWith + srcWithout + " && cat " + vmapfile
+ t.returncode = 0
+ t.targets = [vmapfile]
+ t.mustmatch = ["A_1=defined", "B_1000=undefined"]
+ t.run()
+
+
+ # print the overall result
+ t.id = "56"
+ t.name = "featurevariants"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/filter_missing.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/filter_missing.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,60 @@
+#
+# 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:
+#
+
+from raptor_tests import GenericSmokeTest
+
+def run():
+ result = GenericSmokeTest.PASS
+
+ t = GenericSmokeTest()
+ t.id = "0072a"
+ t.name = "filter_missing"
+ t.command = "sbs --filters=NonExistingFilter"
+ t.mustmatch = [
+ ".*requested filters not found.*NonExistingFilter.*"
+ ]
+ t.errors = 1
+ t.returncode = 1
+ t.run()
+ if t.result == GenericSmokeTest.FAIL:
+ result = GenericSmokeTest.FAIL
+
+ t.id = "0072b"
+ t.name = "filter_crashes"
+ t.usebash = True
+ t.command = "cp -f smoke_suite/test_resources/filter_test/testfilter_exceptions.py " \
+ + "$SBS_HOME/python/plugins ; " \
+ + "sbs -n --filters=FilterTestCrash,FilterLogFile,FilterTerminal " \
+ + "-b smoke_suite/test_resources/simple/bld.inf " \
+ + "-m ${SBSMAKEFILE} -f ${SBSLOGFILE} ; " \
+ + "rm -f $SBS_HOME/python/plugins/testfilter_exceptions.py"
+ t.errors = 0
+ t.returncode = 0
+ t.exceptions = 1
+ t.mustmatch = [
+ ".*A test exception in a filter was generated.*",
+ ".*sbs: build log in.*"
+ ]
+
+ t.run()
+ if t.result == GenericSmokeTest.FAIL:
+ result = GenericSmokeTest.FAIL
+
+ t.id = "72"
+ t.name = "filter_missing"
+ t.result = result
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/filter_params.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/filter_params.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,140 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+
+ t = SmokeTest()
+ t.description = "Test the passing of parameters to log filters"
+
+ command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5_urel --filters="
+
+ # no parameters means count all tags
+ t.name = "filter_params_all_tags"
+ t.command = command + "FilterTagCounter"
+ t.mustmatch_singleline = [
+ "^info \d+ \d+",
+ "^whatlog \d+ \d+",
+ "^clean \d+ \d+"
+ ]
+ t.run()
+
+ # empty parameter lists are valid
+ t.name = "filter_params_all_tags2"
+ t.command = command + "FilterTagCounter[]"
+ t.run()
+
+ # parameters mean report only those tags
+ t.name = "filter_params_info"
+ t.command = command + "FilterTagCounter[info]"
+ t.mustmatch_singleline = [
+ "^info \d+ \d+"
+ ]
+ t.mustnotmatch_singleline = [
+ "^whatlog \d+ \d+",
+ "^clean \d+ \d+"
+ ]
+ t.run()
+
+ # multiple parameters are valid
+ t.name = "filter_params_info_clean"
+ t.command = command + "FilterTagCounter[info,clean]"
+ t.mustmatch_singleline = [
+ "^info \d+ \d+",
+ "^clean \d+ \d+"
+ ]
+ t.mustnotmatch_singleline = [
+ "^whatlog \d+ \d+"
+ ]
+ t.run()
+
+ # using the same filter with different parameters is valid
+ t.name = "filter_params_info_clean2"
+ t.command = command + "FilterTagCounter[info],FilterTagCounter[clean]"
+ t.run()
+
+ # using the same filter with the same parameters is valid too
+ t.name = "filter_params_info_clean3"
+ t.command = command + "FilterTagCounter[info,clean],FilterTagCounter[info,clean]"
+ t.run()
+
+
+ # parameters must work with the sbs_filter script as well
+
+ command = "sbs_filter --filters=%s < smoke_suite/test_resources/logexamples/filter_component.log"
+ t.logfileOption = lambda :""
+ t.makefileOption = lambda :""
+
+ # should still work with no parameters
+ t.name = "sbs_filter_no_params"
+ t.command = command % "FilterComp"
+ t.mustmatch_singleline = [
+ ]
+ t.mustnotmatch_singleline = [
+ "[<>]" # no elements should be printed at all as no bld.inf is selected
+ ]
+ t.run()
+
+ # should work with an empty parameter list
+ t.name = "sbs_filter_no_params2"
+ t.command = command % "FilterComp[]"
+ t.run()
+
+ # with a parameter
+ t.name = "sbs_filter_one_param"
+ t.command = command % "FilterComp[email]"
+ t.stdout = [
+ "email error #1 ",
+ "email error #2 ",
+ "email warning #1 ",
+ "email warning #2 ",
+ "",
+ "/epoc32/data/email_1 ",
+ "/epoc32/data/email_2 ",
+ " ",
+ "",
+ "+ make_email",
+ "email was made fine",
+ " ",
+ " ",
+ "",
+ " ",
+ " ",
+ " fb email ",
+ " ",
+ " ",
+ " "
+ ]
+ t.mustmatch_singleline = []
+ t.mustnotmatch_singleline = []
+ t.warnings = 2
+ t.errors = 2
+ t.run()
+
+ # with multiple filters
+ t.name = "sbs_filter_multi"
+ t.command = command % "FilterComp[txt],FilterTagCounter[file,recipe]"
+ t.stdout = []
+ t.mustmatch_singleline = [ "txt", "^file \d+", "^recipe \d+" ]
+ t.mustnotmatch_singleline = [ "email" ]
+ t.warnings = 2
+ t.errors = 0
+ t.run()
+
+ t.name = "filter_params"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/flm_extension.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/flm_extension.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,31 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+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.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()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/gccxml.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/gccxml.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,129 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest, AntiTargetSmokeTest
+
+def run():
+ result = SmokeTest.PASS
+
+ t = SmokeTest()
+ t.id = "0057a"
+ t.name = "gccxml"
+ t.usebash = True
+ t.command = "sbs -b smoke_suite/test_resources/simple_gui/bld.inf " + \
+ "-c gccxml_urel -m ${SBSMAKEFILE} -f ${SBSLOGFILE} && " + \
+ "grep -o 'gcc.*-fpermissive' ${SBSLOGFILE}"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/gccxml/includeheaders.txt",
+ "$(EPOCROOT)/epoc32/release/gccxml/urel/helloworldexe.gxp"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_gui/bld.inf', [
+ "helloworld_exe/gccxml/HelloWorld.mmp.xml",
+ "helloworld_exe/helloworld_HelloWorld_sc.rpp.d",
+ "helloworld_exe/gccxml/HelloWorld.rss.rfi",
+ "helloworld_reg_exe/helloworld_reg_HelloWorld_reg_sc.rpp.d",
+ "helloworld_exe/gccxml/HelloWorld_reg.rss.rfi",
+ "helloworld_exe/gccxml/urel/HelloWorld_Application.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_Application.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppView.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppView.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_Document.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_Document.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_Main.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_Main.xml"
+ ])
+ t.mustmatch = [
+ ".*gcc.*-fpermissive.*"
+ ]
+ # Windows-only until formal delivery of a Linux version of gccxml_cc1plus
+ t.run("windows")
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+ elif t.result == SmokeTest.SKIP:
+ return t
+
+
+ t = AntiTargetSmokeTest()
+ t.id = "0057b"
+ t.name = "gccxml_reallyclean"
+ t.command = "sbs -b smoke_suite/test_resources/simple_gui/bld.inf " + \
+ "-c gccxml_urel REALLYCLEAN"
+ t.antitargets = ["$(EPOCROOT)/epoc32/release/gccxml/urel/helloworldexe.gxp"]
+ t.addbuildantitargets('smoke_suite/test_resources/simple_gui/bld.inf', [
+ "helloworld_exe/gccxml/HelloWorld.mmp.xml",
+ "helloworld_exe/helloworld_HelloWorld_sc.rpp.d",
+ "helloworld_exe/gccxml/HelloWorld.rss.rfi",
+ "helloworld_reg_exe/helloworld_reg_HelloWorld_reg_sc.rpp.d",
+ "helloworld_exe/gccxml/HelloWorld_reg.rss.rfi",
+ "helloworld_exe/gccxml/urel/HelloWorld_Application.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_Application.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppView.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_AppView.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_Document.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_Document.xml",
+ "helloworld_exe/gccxml/urel/HelloWorld_Main.xml.d",
+ "helloworld_exe/gccxml/urel/HelloWorld_Main.xml"
+ ])
+ t.run("windows")
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t = SmokeTest()
+ t.id = "0057c"
+ t.name = "gccxml_var2"
+ t.command = "sbs -b smoke_suite/test_resources/simple_gui/BldVar2.inf " + \
+ "-c gccxml_urel -f -"
+
+ # Don't allow -m or -f to be appended
+ t.logfileOption = lambda :""
+ t.makefileOption = lambda :""
+
+ t.mustmatch = [".*__KERNEL_MODE__.*"]
+ t.errors = 1 # not really VAR2 code, so it wont build cleanly
+ t.returncode = 1
+ t.run("windows")
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t = SmokeTest()
+ t.id = "0057d"
+ t.name = "gccxml_stdcpp"
+ t.command = "sbs -b smoke_suite/test_resources/simple_gui/Bld_stdcpp.inf " + \
+ "-c gccxml_urel -f -"
+
+ # Don't allow -m or -f to be appended
+ t.logfileOption = lambda :""
+ t.makefileOption = lambda :""
+
+ t.mustmatch = [".*__SYMBIAN_STDCPP_SUPPORT__.*"]
+ t.errors = 0 # reset after previous run
+ t.run("windows")
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "57"
+ t.name = "gccxml"
+ t.result = result
+ t.print_result()
+ return t
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/gnumakefile.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/gnumakefile.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,67 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "53"
+ t.name = "gnumakefile"
+ t.command = "sbs -b smoke_suite/test_resources/gnumakefile/bld.inf"
+ t.targets = [
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_bld_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_bld_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_bld_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_bld_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_final_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_final_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_final_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_final_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_lib_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_lib_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_lib_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_lib_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_makmake_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_makmake_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_makmake_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_makmake_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_resource_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_resource_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_resource_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/master_resource_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_bld_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_bld_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_bld_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_bld_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_final_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_final_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_final_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_final_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_lib_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_lib_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_lib_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_lib_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_makmake_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_makmake_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_makmake_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_makmake_WINSCW_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_resource_ARMV5_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_resource_ARMV5_UREL.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_resource_WINSCW_UDEB.txt",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/gnumakefile/slave_resource_WINSCW_UREL.txt"
+ ]
+ t.run("windows") # we don't have make 3.79 on Linux
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/gnumakefile_what.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/gnumakefile_what.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,72 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+import re,os
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "54"
+ t.name = "gnumakefile_what"
+ t.command = "sbs -b smoke_suite/test_resources/gnumakefile/bld.inf --what"
+ componentpath = re.sub(r'\\','/',os.path.abspath("smoke_suite/test_resources/gnumakefile"))
+
+ t.output_expected_only_once = True
+ t.stdout = [
+ # Generated txt files by the gnumakefile
+ componentpath+"/master_bld_ARMV5_UDEB.txt",
+ componentpath+"/master_bld_ARMV5_UREL.txt",
+ componentpath+"/master_bld_WINSCW_UDEB.txt",
+ componentpath+"/master_bld_WINSCW_UREL.txt",
+ componentpath+"/master_final_ARMV5_UDEB.txt",
+ componentpath+"/master_final_ARMV5_UREL.txt",
+ componentpath+"/master_final_WINSCW_UDEB.txt",
+ componentpath+"/master_final_WINSCW_UREL.txt",
+ componentpath+"/master_lib_ARMV5_UDEB.txt",
+ componentpath+"/master_lib_ARMV5_UREL.txt",
+ componentpath+"/master_lib_WINSCW_UDEB.txt",
+ componentpath+"/master_lib_WINSCW_UREL.txt",
+ componentpath+"/master_makmake_ARMV5_UDEB.txt",
+ componentpath+"/master_makmake_ARMV5_UREL.txt",
+ componentpath+"/master_makmake_WINSCW_UDEB.txt",
+ componentpath+"/master_makmake_WINSCW_UREL.txt",
+ componentpath+"/master_resource_ARMV5_UDEB.txt",
+ componentpath+"/master_resource_ARMV5_UREL.txt",
+ componentpath+"/master_resource_WINSCW_UDEB.txt",
+ componentpath+"/master_resource_WINSCW_UREL.txt",
+ componentpath+"/slave_bld_ARMV5_UDEB.txt",
+ componentpath+"/slave_bld_ARMV5_UREL.txt",
+ componentpath+"/slave_bld_WINSCW_UDEB.txt",
+ componentpath+"/slave_bld_WINSCW_UREL.txt",
+ componentpath+"/slave_final_ARMV5_UDEB.txt",
+ componentpath+"/slave_final_ARMV5_UREL.txt",
+ componentpath+"/slave_final_WINSCW_UDEB.txt",
+ componentpath+"/slave_final_WINSCW_UREL.txt",
+ componentpath+"/slave_lib_ARMV5_UDEB.txt",
+ componentpath+"/slave_lib_ARMV5_UREL.txt",
+ componentpath+"/slave_lib_WINSCW_UDEB.txt",
+ componentpath+"/slave_lib_WINSCW_UREL.txt",
+ componentpath+"/slave_makmake_ARMV5_UDEB.txt",
+ componentpath+"/slave_makmake_ARMV5_UREL.txt",
+ componentpath+"/slave_makmake_WINSCW_UDEB.txt",
+ componentpath+"/slave_makmake_WINSCW_UREL.txt",
+ componentpath+"/slave_resource_ARMV5_UDEB.txt",
+ componentpath+"/slave_resource_ARMV5_UREL.txt",
+ componentpath+"/slave_resource_WINSCW_UDEB.txt",
+ componentpath+"/slave_resource_WINSCW_UREL.txt"
+ ]
+ t.run("windows") # we don't have make 3.79 on Linux
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/gnumakefile_whatlog.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/gnumakefile_whatlog.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,123 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+import re, os
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "70"
+ t.name = "gnumakefile_whatlog"
+ t.command = "sbs -b smoke_suite/test_resources/gnumakefile/bld.inf -f - " \
+ "-m ${SBSMAKEFILE} -c armv5.whatlog -c winscw.whatlog"
+ componentpath = re.sub(r'\\','/',os.path.abspath("smoke_suite/test_resources/gnumakefile"))
+ t.regexlinefilter = re.compile("^<(whatlog|build>)")
+ t.hostossensitive = False
+ t.usebash = True
+ t.targets = [
+ componentpath+"/master_bld_ARMV5_UDEB.txt",
+ componentpath+"/master_bld_ARMV5_UREL.txt",
+ componentpath+"/master_bld_WINSCW_UDEB.txt",
+ componentpath+"/master_bld_WINSCW_UREL.txt",
+ componentpath+"/master_final_ARMV5_UDEB.txt",
+ componentpath+"/master_final_ARMV5_UREL.txt",
+ componentpath+"/master_final_WINSCW_UDEB.txt",
+ componentpath+"/master_final_WINSCW_UREL.txt",
+ componentpath+"/master_lib_ARMV5_UDEB.txt",
+ componentpath+"/master_lib_ARMV5_UREL.txt",
+ componentpath+"/master_lib_WINSCW_UDEB.txt",
+ componentpath+"/master_lib_WINSCW_UREL.txt",
+ componentpath+"/master_makmake_ARMV5_UDEB.txt",
+ componentpath+"/master_makmake_ARMV5_UREL.txt",
+ componentpath+"/master_makmake_WINSCW_UDEB.txt",
+ componentpath+"/master_makmake_WINSCW_UREL.txt",
+ componentpath+"/master_resource_ARMV5_UDEB.txt",
+ componentpath+"/master_resource_ARMV5_UREL.txt",
+ componentpath+"/master_resource_WINSCW_UDEB.txt",
+ componentpath+"/master_resource_WINSCW_UREL.txt",
+ componentpath+"/slave_bld_ARMV5_UDEB.txt",
+ componentpath+"/slave_bld_ARMV5_UREL.txt",
+ componentpath+"/slave_bld_WINSCW_UDEB.txt",
+ componentpath+"/slave_bld_WINSCW_UREL.txt",
+ componentpath+"/slave_final_ARMV5_UDEB.txt",
+ componentpath+"/slave_final_ARMV5_UREL.txt",
+ componentpath+"/slave_final_WINSCW_UDEB.txt",
+ componentpath+"/slave_final_WINSCW_UREL.txt",
+ componentpath+"/slave_lib_ARMV5_UDEB.txt",
+ componentpath+"/slave_lib_ARMV5_UREL.txt",
+ componentpath+"/slave_lib_WINSCW_UDEB.txt",
+ componentpath+"/slave_lib_WINSCW_UREL.txt",
+ componentpath+"/slave_makmake_ARMV5_UDEB.txt",
+ componentpath+"/slave_makmake_ARMV5_UREL.txt",
+ componentpath+"/slave_makmake_WINSCW_UDEB.txt",
+ componentpath+"/slave_makmake_WINSCW_UREL.txt",
+ componentpath+"/slave_resource_ARMV5_UDEB.txt",
+ componentpath+"/slave_resource_ARMV5_UREL.txt",
+ componentpath+"/slave_resource_WINSCW_UDEB.txt",
+ componentpath+"/slave_resource_WINSCW_UREL.txt"
+ ]
+ t.stdout = [
+ "",
+ ""+componentpath+"/master_bld_ARMV5_UDEB.txt ",
+ ""+componentpath+"/master_final_ARMV5_UDEB.txt ",
+ ""+componentpath+"/master_lib_ARMV5_UDEB.txt ",
+ ""+componentpath+"/master_makmake_ARMV5_UDEB.txt ",
+ ""+componentpath+"/master_resource_ARMV5_UDEB.txt ",
+ "",
+ ""+componentpath+"/master_bld_ARMV5_UREL.txt ",
+ ""+componentpath+"/master_final_ARMV5_UREL.txt ",
+ ""+componentpath+"/master_lib_ARMV5_UREL.txt ",
+ ""+componentpath+"/master_makmake_ARMV5_UREL.txt ",
+ ""+componentpath+"/master_resource_ARMV5_UREL.txt ",
+ "",
+ ""+componentpath+"/master_bld_WINSCW_UREL.txt ",
+ ""+componentpath+"/master_final_WINSCW_UREL.txt ",
+ ""+componentpath+"/master_lib_WINSCW_UREL.txt ",
+ ""+componentpath+"/master_makmake_WINSCW_UREL.txt ",
+ ""+componentpath+"/master_resource_WINSCW_UREL.txt ",
+ "",
+ ""+componentpath+"/master_bld_WINSCW_UDEB.txt ",
+ ""+componentpath+"/master_final_WINSCW_UDEB.txt ",
+ ""+componentpath+"/master_lib_WINSCW_UDEB.txt ",
+ ""+componentpath+"/master_makmake_WINSCW_UDEB.txt ",
+ ""+componentpath+"/master_resource_WINSCW_UDEB.txt ",
+ "",
+ ""+componentpath+"/slave_bld_ARMV5_UDEB.txt ",
+ ""+componentpath+"/slave_final_ARMV5_UDEB.txt ",
+ ""+componentpath+"/slave_lib_ARMV5_UDEB.txt ",
+ ""+componentpath+"/slave_makmake_ARMV5_UDEB.txt ",
+ ""+componentpath+"/slave_resource_ARMV5_UDEB.txt ",
+ "",
+ ""+componentpath+"/slave_bld_ARMV5_UREL.txt ",
+ ""+componentpath+"/slave_final_ARMV5_UREL.txt ",
+ ""+componentpath+"/slave_lib_ARMV5_UREL.txt ",
+ ""+componentpath+"/slave_makmake_ARMV5_UREL.txt ",
+ ""+componentpath+"/slave_resource_ARMV5_UREL.txt ",
+ "",
+ ""+componentpath+"/slave_bld_WINSCW_UREL.txt ",
+ ""+componentpath+"/slave_final_WINSCW_UREL.txt ",
+ ""+componentpath+"/slave_lib_WINSCW_UREL.txt ",
+ ""+componentpath+"/slave_makmake_WINSCW_UREL.txt ",
+ ""+componentpath+"/slave_resource_WINSCW_UREL.txt ",
+ "",
+ ""+componentpath+"/slave_bld_WINSCW_UDEB.txt ",
+ ""+componentpath+"/slave_final_WINSCW_UDEB.txt ",
+ ""+componentpath+"/slave_lib_WINSCW_UDEB.txt ",
+ ""+componentpath+"/slave_makmake_WINSCW_UDEB.txt ",
+ ""+componentpath+"/slave_resource_WINSCW_UDEB.txt "
+ ]
+ t.run("windows") # we don't have make 3.79 on Linux
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/gui_whatlog.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/gui_whatlog.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,141 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+import re, os
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "66"
+ t.name = "gui_whatlog"
+ t.command = "sbs -b smoke_suite/test_resources/simple_gui/Bld.inf -f - -m" \
+ + " ${SBSMAKEFILE} -c armv5.whatlog -c winscw.whatlog"
+ componentpath = re.sub(r'\\','/',os.path.abspath("smoke_suite/test_resources/simple_gui"))
+ t.regexlinefilter = \
+ re.compile("^<(whatlog|export|build>|resource>|bitmap>)")
+ t.hostossensitive = False
+ t.usebash = True
+ t.targets = [
+ "$(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/release/armv5/udeb/helloworld.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/helloworld.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [
+ "helloworld_exe/helloworld.mbm_bmconvcommands",
+ "helloworld_exe/helloworld_HelloWorld_sc.rpp",
+ "helloworld_exe/helloworld_HelloWorld_sc.rpp.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_Application.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Application.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppView.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppView.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_Document.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Document.o.d",
+ "helloworld_exe/armv5/udeb/HelloWorld_Main.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Main.o.d",
+ "helloworld_exe/armv5/udeb/helloworld_udeb_objects.via",
+ "helloworld_exe/armv5/urel/HelloWorld_Application.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Application.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_AppUi.o",
+ "helloworld_exe/armv5/urel/HelloWorld_AppUi.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_AppView.o",
+ "helloworld_exe/armv5/urel/HelloWorld_AppView.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_Document.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Document.o.d",
+ "helloworld_exe/armv5/urel/HelloWorld_Main.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Main.o.d",
+ "helloworld_exe/armv5/urel/helloworld_urel_objects.via",
+ "helloworld_exe/winscw/udeb/helloworld.UID.CPP",
+ "helloworld_exe/winscw/udeb/HelloWorld_Application.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_Application.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Application.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppUi.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppView.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppView.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppView.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_Document.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_Document.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Document.o.d",
+ "helloworld_exe/winscw/udeb/HelloWorld_Main.dep",
+ "helloworld_exe/winscw/udeb/HelloWorld_Main.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Main.o.d",
+ "helloworld_exe/winscw/udeb/helloworld_UID_.dep",
+ "helloworld_exe/winscw/udeb/helloworld_UID_.o",
+ "helloworld_exe/winscw/udeb/helloworld_UID_.o.d",
+ "helloworld_exe/winscw/urel/helloworld.UID.CPP",
+ "helloworld_exe/winscw/urel/HelloWorld_Application.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_Application.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Application.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_AppUi.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_AppUi.o",
+ "helloworld_exe/winscw/urel/HelloWorld_AppUi.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_AppView.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_AppView.o",
+ "helloworld_exe/winscw/urel/HelloWorld_AppView.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_Document.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_Document.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Document.o.d",
+ "helloworld_exe/winscw/urel/HelloWorld_Main.dep",
+ "helloworld_exe/winscw/urel/HelloWorld_Main.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Main.o.d",
+ "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_sc.rpp.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/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/release/winscw/urel/helloworld.exe ",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe.map ",
+ "",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe ",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.map ",
+ "",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/helloworld.exe ",
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_armv5.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_armv5.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "14"
+ t.name = "implib_armv5"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf" \
+ + " -c armv5 LIBRARY"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_implib/bld.inf', [
+ ['simple_implib_lib/armv5/udeb/simple_implib.prep',
+ 'simple_implib_lib/armv5/urel/simple_implib.prep']
+ ])
+ t.run()
+
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_armv5_smp.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_armv5_smp.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.id = "64"
+ t.name = "implib_armv5_smp"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -c " \
+ + "armv5.smp LIBRARY"
+ # ABIv1 .lib files are not generated on Linux
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso"
+ ]
+ t.run()
+
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_armv5_what.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_armv5_what.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "15"
+ t.name = "implib_armv5_what"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -c " + \
+ "armv5 --what LIBRARY"
+ t.stdout = [
+ '$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso',
+ '$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso'
+ ]
+ t.run()
+
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_armv5_with_armv5_smp.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_armv5_with_armv5_smp.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "65"
+ t.name = "implib_armv5_with_armv5_smp"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -c " \
+ + "armv5 -c armv5.smp LIBRARY"
+ # ABIv1 .lib files are not generated on Linux
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso"
+ ]
+ t.run()
+
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_nodef.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_nodef.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,49 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+
+ t.id = "71a"
+ t.name = "implib_implicit_def"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/nodef/group/bld.inf" \
+ + " -p implib_implicit_def.mmp"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/implib_implicit_def.lib"
+ ]
+ t.run()
+
+ t.id = "71b"
+ t.name = "implib_no_def"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/nodef/group/bld.inf" \
+ + " -p implib_no_def.mmp"
+ t.targets = []
+ t.mustmatch = [
+ "No DEF File for IMPLIB target type in"
+ ]
+ t.errors = 2 # 1 for winscw and 1 for armv5
+ t.returncode = 1
+ t.run()
+
+ t.id = "71"
+ t.name = "implib_nodef"
+ t.print_result()
+
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_whatlog.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_whatlog.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,51 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+import re, os
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "67"
+ t.name = "implib_whatlog"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -f -" \
+ " -m ${SBSMAKEFILE} -c armv5.whatlog -c winscw.whatlog LIBRARY"
+ componentpath = re.sub(r'\\','/',os.path.abspath("smoke_suite/test_resources/simple_implib"))
+ t.regexlinefilter = re.compile("^<(whatlog|build>)")
+ t.hostossensitive = False
+ t.usebash = True
+ # ABIv1 .lib files are not generated on Linux
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/simple_implib.lib"
+ ]
+ t.stdout = [
+ "",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/simple_implib.lib ",
+ "",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/simple_implib.lib ",
+ "",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso ",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso ",
+ "",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso ",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso "
+ ]
+ t.run()
+
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_winscw.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_winscw.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "36"
+ t.name = "implib_winscw"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -c " \
+ + "winscw LIBRARY"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/simple_implib.lib"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_implib/bld.inf', [
+ ["simple_implib/simple_implib_lib/winscw/udeb/simple_implib.prep.def",
+ "simple_implib/simple_implib_lib/winscw/urel/simple_implib.prep.def"]
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/implib_winscw_what.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/implib_winscw_what.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,29 @@
+#
+# 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:
+#
+
+from raptor_tests import CheckWhatSmokeTest
+
+def run():
+ t = CheckWhatSmokeTest()
+ t.id = "37"
+ t.name = "implib_winscw_what"
+ t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -c " \
+ + "winscw --what LIBRARY"
+ t.stdout = [
+ '$(EPOCROOT)/epoc32/release/winscw/udeb/simple_implib.lib'
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/input_validation.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/input_validation.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.description = "Set of tests for commandline option validation e.g. checking that the specified make engine exists"
+
+
+ t.usebash = True
+ t.errors = 1
+ t.returncode = 1
+ t.exceptions = 0
+ base_command = "sbs -b smoke_suite/test_resources/simple/bld.inf -f ${SBSLOGFILE} -m ${SBSMAKEFILE}"
+
+ t.id = "42562a"
+ t.name = "validate_makeengine_nonexist"
+ t.command = base_command + " -e amakeenginethatdoesnotexist"
+ t.mustmatch = ["Unable to use make engine: 'amakeenginethatdoesnotexist' does not appear to be a make engine - no settings found for it"]
+
+ t.run()
+
+ t.id = "43562b"
+ t.mustmatch = ["Unable to use make engine: 'arm' is not a build engine \(it's a variant but it does not extend 'make_engine'"]
+ t.name = "validate_makeengine_is_a_non_makengine_variant"
+ t.command = base_command + " -e arm"
+ t.run()
+
+ # aliases can be of the form name='blah' meaning='x.y.z' i.e. where the alias is for a sequence of variants
+ # this tests that we detect that at least one of these variants has make_engine as a parent
+ # it is possible for one of them not to and we mustn't bomb-out just because of that
+ t.id = "43562c"
+ t.mustmatch = []
+ t.name = "validate_real_dfs_modded_makeengine_alias"
+ t.command = "export HOME=$SBS_HOME/test/custom_options/dfsconfig; " + base_command + " -e dfstestmake -c arm.v5.urel.gcce4_4_1"
+ t.errors = 0
+ t.warnings = 0
+ t.returncode = 0
+ t.run()
+
+ t.id = "43562"
+ t.name = "input_validation"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/kdll_armv5.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/kdll_armv5.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,44 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "0096"
+ t.name = "kdll_armv5"
+ t.usebash = 1
+
+ t.command = "sbs -b smoke_suite/test_resources/simple_kdll/bld.inf -c armv5_urel -f-"
+
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test_kdll.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test_kdll.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test_kdll.dll.sym"
+ ]
+
+ t.mustmatch = [
+ r".*\bksrt\d_\d\.lib\b.*",
+ r".*\bekll\.lib\b.*"
+ ]
+
+ t.mustnotmatch = [
+ r".*usrt.*",
+ r".*scppnwdl.*"
+ ]
+
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/keepgoing.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/keepgoing.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,106 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.description = """Raptor should keep going and build as much as possible with the -k option specified."""
+
+ command = "sbs -b smoke_suite/test_resources/simple/bld.inf -k"
+ config = " --configpath=test/smoke_suite/test_resources/keepgoing"
+ targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.sym"
+ ]
+ buildtargets = [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o",
+ "test_/armv5/udeb/test.o.d",
+ "test_/armv5/udeb/test3.o.d",
+ "test_/armv5/udeb/test4.o.d",
+ "test_/armv5/udeb/test5.o.d",
+ "test_/armv5/udeb/test1.o.d",
+ "test_/armv5/udeb/test6.o.d",
+ "test_/armv5/udeb/test2.o.d",
+ "test_/armv5/udeb/test3.o",
+ "test_/armv5/udeb/test4.o",
+ "test_/armv5/udeb/test5.o",
+ "test_/armv5/udeb/test1.o",
+ "test_/armv5/udeb/test6.o",
+ "test_/armv5/udeb/test2.o",
+ "test_/armv5/urel/test.o.d",
+ "test_/armv5/urel/test3.o.d",
+ "test_/armv5/urel/test4.o.d",
+ "test_/armv5/urel/test5.o.d",
+ "test_/armv5/urel/test1.o.d",
+ "test_/armv5/urel/test6.o.d",
+ "test_/armv5/urel/test2.o.d",
+ "test_/armv5/urel/test3.o",
+ "test_/armv5/urel/test4.o",
+ "test_/armv5/urel/test5.o",
+ "test_/armv5/urel/test1.o",
+ "test_/armv5/urel/test6.o",
+ "test_/armv5/urel/test2.o",
+ "test_/armv5/udeb/test_udeb_objects.via",
+ "test_/armv5/urel/test_urel_objects.via"
+ ]
+
+ # using a non-existent config with -c should build any independent configs
+ t.id = "115a"
+ t.name = "keepgoing_bad_config"
+ t.command = command + " -c armv5 -c armv5.bogus"
+ t.targets = targets
+ t.addbuildtargets("smoke_suite/test_resources/simple/bld.inf", buildtargets)
+ t.mustmatch = ["sbs: error: Unknown build variant 'bogus'"]
+ t.warnings = 0
+ t.errors = 1
+ t.returncode = 1
+ t.run()
+
+ # using groups with bad sub-groups should build any independent groups
+ t.id = "115b"
+ t.name = "keepgoing_bad_subgroup"
+ t.command = command + config + " -c lots_of_products"
+ t.mustmatch = ["Unknown reference 'qwertyuio'",
+ "Unknown reference 'asdfghjkl'",
+ "Unknown reference 'zxcvbnm_p'"]
+ t.warnings = 0
+ t.errors = 3
+ t.returncode = 1
+ t.run()
+
+ # using groups with bad sub-sub-groups should build any independent groups
+ t.id = "115c"
+ t.name = "keepgoing_bad_subsubgroup"
+ t.command = command + config + " -c lots_of_products_2"
+ t.mustmatch = ["Unknown reference 'qwertyuio'",
+ "Unknown reference 'asdfghjkl'",
+ "Unknown reference 'zxcvbnm_p'"]
+ t.warnings = 0
+ t.errors = 3
+ t.returncode = 1
+ t.run()
+
+ # summarise
+ t.id = "115"
+ t.name = "keepgoing"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/lib_armv5_armv7.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/lib_armv5_armv7.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,107 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+from raptor_tests import ReplaceEnvs
+import os
+
+def run():
+ # Generate source files for simple_lib tests
+ dir = ReplaceEnvs("$(SBS_HOME)/test/smoke_suite/test_resources/simple_lib")
+ zs = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
+ for i in range(1, 100):
+ file = open(os.path.join(dir, zs + "_" + str(i) + ".cpp"), "w")
+ file.write("int f(void) { return 1; }\n")
+ file.close()
+
+ # Convenience method to list generated source build output
+ def __generatedFiles(aConfig):
+ udeb = "etest_lib/%s/udeb/" % aConfig
+ urel = "etest_lib/%s/urel/" % aConfig
+
+ generated = []
+ for i in range(1, 100):
+ generated.append(udeb + zs + "_" + str(i) + ".o")
+ generated.append(udeb + zs + "_" + str(i) + ".o.d")
+ generated.append(urel + zs + "_" + str(i) + ".o")
+ generated.append(urel + zs + "_" + str(i) + ".o.d")
+ return generated
+
+ t = SmokeTest()
+ result = SmokeTest.PASS
+
+ armv5targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/etest.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/etest.lib"
+ ]
+ armv5buildtargets = [
+ "etest_lib/armv5/udeb/etest_udeb_objects.via",
+ "etest_lib/armv5/udeb/test_lib.o",
+ "etest_lib/armv5/urel/etest_urel_objects.via",
+ "etest_lib/armv5/urel/test_lib.o"
+ ]
+ armv5buildtargets.extend(__generatedFiles("armv5"))
+
+ t.id = "0013a"
+ t.name = "lib_armv5_rvct"
+ t.command = "sbs -b smoke_suite/test_resources/simple_lib/bld.inf -c armv5 LIBRARY"
+ t.targets = armv5targets
+ t.addbuildtargets('smoke_suite/test_resources/simple_lib/bld.inf', armv5buildtargets)
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ t.id = "0013b"
+ t.name = "lib_armv5_clean"
+ t.command = "sbs -b smoke_suite/test_resources/simple_lib/bld.inf -c armv5 clean"
+ t.targets = []
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ t.id = "0013c"
+ t.name = "lib_armv5_gcce"
+ t.command = "sbs -b smoke_suite/test_resources/simple_lib/bld.inf -c gcce_armv5 LIBRARY"
+ t.targets = armv5targets
+ t.addbuildtargets('smoke_suite/test_resources/simple_lib/bld.inf', armv5buildtargets)
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+ t.name = "lib_armv7"
+ t.id = "0013d"
+ t.command = "sbs -b smoke_suite/test_resources/simple_lib/bld.inf -c armv7 LIBRARY"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv7/udeb/etest.lib",
+ "$(EPOCROOT)/epoc32/release/armv7/urel/etest.lib"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_lib/bld.inf', [
+ "etest_lib/armv7/udeb/etest_udeb_objects.via",
+ "etest_lib/armv7/udeb/test_lib.o",
+ "etest_lib/armv7/urel/etest_urel_objects.via",
+ "etest_lib/armv7/urel/test_lib.o"
+ ])
+ t.addbuildtargets('smoke_suite/test_resources/simple_lib/bld.inf', __generatedFiles("armv7"))
+
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "13"
+ t.name = "lib_armv5_armv7"
+ t.result = result
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/lib_versioned.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/lib_versioned.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,55 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+import sys
+
+def run():
+ t = SmokeTest()
+ t.id = "58"
+ t.name = "lib_versioned"
+ t.command = "sbs -b smoke_suite/test_resources/versioned_lib/bld.inf" + \
+ " -b smoke_suite/test_resources/versioned_lib/dllversioning.inf" + \
+ " -c armv5 -c winscw "
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/lib/testver.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/testver{00020000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/testver{00030000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/version.ed.lib.04.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/version.ed.lib{000a0000}.04.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/versioned.lib.03.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/versioned.lib{000a0000}.03.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib.02.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib01.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib01{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib{000a0000}.02.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/testver.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/testver.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/testver{00020000}.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/testver{00020000}.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/testver.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/testver.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/testver{00020000}.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/testver{00020000}.dll.sym",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/version.ed.lib.04.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/versioned.lib.03.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/versionedlib.02.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/versionedlib01.lib"
+ ]
+ t.run()
+
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/lib_winscw.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/lib_winscw.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,34 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "35"
+ t.name = "lib_winscw"
+ t.command = "sbs -b smoke_suite/test_resources/simple_lib/bld.inf -c " + \
+ "winscw LIBRARY"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/etest.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/etest.lib"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_lib/bld.inf', [
+ "etest_lib/winscw/udeb/test_lib.o",
+ "etest_lib/winscw/urel/test_lib.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/listing.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/listing.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,49 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "31"
+ t.name = "listing"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
+ "-c winscw -k listing"
+ t.targets = [
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test.armv5.urel.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test.armv5.udeb.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test.WINSCW.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test1.armv5.urel.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test1.armv5.udeb.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test1.WINSCW.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test2.armv5.urel.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test2.armv5.udeb.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test2.WINSCW.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test3.armv5.urel.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test3.armv5.udeb.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test3.WINSCW.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test4.armv5.urel.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test4.armv5.udeb.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test4.WINSCW.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test5.armv5.urel.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test5.armv5.udeb.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test5.WINSCW.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test6.armv5.urel.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test6.armv5.udeb.test.exe.lst",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/simple/test6.WINSCW.lst"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/longfilenames.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/longfilenames.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,129 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+import os
+import re
+import sys
+
+def run():
+ # Content for files to be generated.
+ cpp = "longerfilenamethanyoumightnormallyexpecttobepresent"
+ path = "/test/smoke_suite/test_resources/longfilenames/"
+ targetinfo = """TARGET longfilenames.exe
+TARGETTYPE exe
+UID 0xE8000047
+LIBRARY euser.lib
+SYSTEMINCLUDE /epoc32/include
+"""
+
+ # Some numbers for path and file operations
+ length_limit = 245 # Safety-margin of 10 chars for changing dir structures in Raptor
+ extLen = 8 # eg. _001.o.d
+ numLen = 43 # release directory length (c_0000000000000000/longfilenames_exe/winscw/urel/) (minus a few as a safety-margin)
+ pathmultiplier = 5 # expand cpp to the maximum length
+ mmpStart = 1
+ mmpStop = 270
+ cppStart = 1
+ cppStop = 270
+
+
+ # Find SBS_Home and its length as a string
+ sbsHome = os.environ["SBS_HOME"]
+ sbsLen = len(sbsHome)
+
+ # Work out path lengths required
+ dirname = sbsHome + path
+ string = cpp * pathmultiplier
+ dirlen = len(dirname)
+ fileLen = length_limit - dirlen - numLen - extLen
+ if fileLen < 0:
+ print "Error: Your test path is too long for the longfilenames test to work"
+ sys.exit()
+ fileName = string[0:fileLen]
+
+ # Generate the mmp file using the mmp string
+ f = open(dirname + 'longfilenames.mmp', 'w')
+ f.writelines(targetinfo)
+ f.writelines("\nSOURCE " + cpp + ".cpp\n")
+ while mmpStart <= mmpStop:
+ sourceinfo = "SOURCE " + fileName + '_%03d' %mmpStart + ".cpp " + '\n'
+ f.writelines(sourceinfo)
+ mmpStart += 1
+ f.close()
+
+ # File generating utility
+ while cppStart <= cppStop:
+ t = str(cppStart)
+ filename = dirname + fileName + '_%03d' %cppStart + '.cpp'
+ content = 'int x' + t + ' = 1;'
+ f = open (filename, 'w')
+ f.write (content)
+ f.close()
+ cppStart += 1
+
+
+ t = SmokeTest()
+ t.id = "79"
+ t.name = "longfilenames"
+ t.command = "sbs -b smoke_suite/test_resources/longfilenames/bld.inf -c winscw"
+ t.description = """Ensure that winscw links with large amounts of object files with long names are buildable.
+ Note that the link in the build of this component should always be greater than 16500 chars, regardless
+ of environment - we know such calls are currently problematic on Windows with GNU Make and Cygwin's
+ Bash unless a linker response file is not used to hold the object files."""
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/urel/longfilenames.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/longfilenames.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/longfilenames/bld.inf', [
+ "longfilenames_exe/winscw/urel/longerfilenamethanyoumightnormallyexpecttobepresent.dep",
+ "longfilenames_exe/winscw/urel/longerfilenamethanyoumightnormallyexpecttobepresent.o",
+ "longfilenames_exe/winscw/urel/longerfilenamethanyoumightnormallyexpecttobepresent.o.d",
+ "longfilenames_exe/winscw/urel/longfilenames.UID.CPP",
+ "longfilenames_exe/winscw/urel/longfilenames_UID_.dep",
+ "longfilenames_exe/winscw/urel/longfilenames_UID_.o",
+ "longfilenames_exe/winscw/urel/longfilenames_UID_.o.d",
+ "longfilenames_exe/winscw/urel/longfilenames_urel_objects.lrf"]
+ )
+
+ basefilename = "longfilenames_exe/winscw/urel/" + fileName + "_%03d.%s"
+ for i in range(1, 271):
+ t.addbuildtargets('smoke_suite/test_resources/longfilenames/bld.inf', [
+ basefilename % (i, "dep"),
+ basefilename % (i, "o"),
+ basefilename % (i, "o.d")
+ ]
+ )
+
+ t.run()
+
+ # Remove all created files
+
+ # Matches longerfilena......_nnn.cpp
+ cpp_regex = re.compile("^.+_\d{3}.cpp$", re.I)
+ for file in os.listdir(dirname):
+ if cpp_regex.match(file) is not None:
+ try:
+ os.remove(dirname + file)
+ except:
+ pass
+
+ try:
+ os.remove(dirname + 'longfilenames.mmp')
+ except:
+ pass
+
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/longpath.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/longpath.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,128 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+
+ #------------------------------------------------------------------------------
+ # Content for files to be generated.
+ #------------------------------------------------------------------------------
+ cpp = "longerfilenamethanyoumightnormallyexpecttobepresent"
+ path = "/test/smoke_suite/test_resources/longerpathnamesthanyoumightnormallyexpectinabuildtree/anotherlevelwithareallyreallyreallylongnamethistimeprobablyabitoverthetop/"
+ path_eabi = "/test/smoke_suite/test_resources/longerpathnamesthanyoumightnormallyexpectinabuildtree/eabi/"
+
+ #------------------------------------------------------------------------------
+ # Some numbers for path and file operations
+ #------------------------------------------------------------------------------
+ cppStart = 1
+ cppStop = 49
+
+ import os
+ import shutil
+ import sys
+
+ #------------------------------------------------------------------------------
+ # Find SBS_Home
+ #------------------------------------------------------------------------------
+ sbsHome = os.environ["SBS_HOME"]
+
+ #------------------------------------------------------------------------------
+ # Create directories for both Linux and Windows
+ #------------------------------------------------------------------------------
+ d = os.path.dirname(sbsHome + path)
+ if not os.path.exists(d):
+ os.makedirs(d)
+
+ d = os.path.dirname(sbsHome + path_eabi)
+ if not os.path.exists(d):
+ os.makedirs(d)
+
+ #------------------------------------------------------------------------------
+ # File generating utility
+ #------------------------------------------------------------------------------
+ while cppStart <= cppStop:
+ t = str(cppStart)
+ filename = sbsHome + path + 'test' + '%02d' %cppStart + '.cpp'
+ content = 'int x' + t + ' = 0;'
+ cppStart = cppStart + 1
+ f = open (filename, 'w')
+ f.write (content + '\n')
+ f.close()
+ cppStart = cppStart + 1
+
+ #------------------------------------------------------------------------------
+ # File copying utility
+ #------------------------------------------------------------------------------
+ dirname = sbsHome + '/test/smoke_suite/test_resources/long/paths/'
+ cpp = dirname + 'test.cpp'
+ bld = dirname + 'bld.inf'
+ deftest = dirname + 'deftest.mmp'
+ e32def = dirname + 'e32def.h'
+
+ deftestu = dirname + 'deftestu.def'
+
+ dst_cpp = sbsHome + path + 'test.cpp'
+ dst_bld = sbsHome + path + 'bld.inf'
+ dst_deftest = sbsHome + path + 'deftest.mmp'
+ dst_e32def = sbsHome + path + 'e32def.h'
+ dst_deftestu = sbsHome + path_eabi + 'deftestu.def'
+
+
+ if os.path.exists(dst_cpp):
+ pass
+ else:
+ shutil.copy(cpp, dst_cpp)
+ shutil.copy(bld, dst_bld)
+ shutil.copy(deftest, dst_deftest)
+ shutil.copy(e32def, dst_e32def)
+ shutil.copy(deftestu , dst_deftestu)
+ dirname = sbsHome + path
+
+ t = SmokeTest()
+ t.id = "41"
+ t.name = "longpath"
+ t.command = "sbs -b " + \
+ "smoke_suite/test_resources/longerpathnamesthanyoumightnormallyexpectinabuildtree/anotherlevelwithareallyreallyreallylongnamethistimeprobablyabitoverthetop/bld.inf" + \
+ " -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/deftest.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/deftest.dll.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/deftest{000a0000}.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/deftest.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/deftest.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/deftest.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/deftest.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/deftest.dll.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/longerpathnamesthanyoumightnormallyexpectinabuildtree/anotherlevelwithareallyreallyreallylongnamethistimeprobablyabitoverthetop/bld.inf', [
+ "deftest_/armv5/udeb/deftest_udeb_objects.via",
+ "deftest_/armv5/udeb/test.o",
+ "deftest_/armv5/udeb/test09.o",
+ "deftest_/armv5/udeb/test19.o",
+ "deftest_/armv5/udeb/test29.o",
+ "deftest_/armv5/udeb/test39.o",
+ "deftest_/armv5/udeb/test49.o",
+ "deftest_/armv5/urel/deftest_urel_objects.via",
+ "deftest_/armv5/urel/test.o",
+ "deftest_/armv5/urel/test09.o",
+ "deftest_/armv5/urel/test19.o",
+ "deftest_/armv5/urel/test29.o",
+ "deftest_/armv5/urel/test39.o",
+ "deftest_/armv5/urel/test49.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/make_engine_errors.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/make_engine_errors.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,54 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "113"
+ t.name = "make_engine_errors"
+ t.description = "Errors reported by gmake and emake should be escaped to ensure that the logs are valid XML"
+
+ t.mustmatch_singleline = ["Circular b <- a dependency",
+ "non_existent_&_needs_escaping.txt"]
+
+ t.mustnotmatch_singleline = ["Circular b <- a dependency",
+ "non_existent_&_needs_escaping.txt"]
+
+ t.usebash = True
+ t.errors = 1
+ t.returncode = 1
+ base_command = "sbs --no-depend-generate -b smoke_suite/test_resources/make_engine_errors/bld.inf -f-"
+
+ t.id = "113a"
+ t.name = "gmake_engine_errors"
+ t.command = base_command + " -e make"
+ t.run()
+
+ t.id = "113b"
+ t.name = "emake_engine_errors"
+ t.command = base_command + " -e emake"
+ t.run()
+
+ t.id = "113c"
+ t.name = "emake_engine_errors_with_merged_streams"
+ t.command = base_command + " -e emake --mo=--emake-mergestreams=1"
+ t.run()
+
+ t.id = "113"
+ t.name = "make_engine_errors"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/mmp_keywords.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/mmp_keywords.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,313 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.description = "This testcase tests all mmp keywords including new implementation of 'paged/unpaged code/data'"
+ t.usebash = True
+
+ t.id = "75a"
+ t.name = "mmp_1"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp1/group/bld.inf -c armv5 -f-"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/shutdownsrv.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/shutdownsrv.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/shutdownsrv.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/shutdownsrv.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/exportlibrary_shutdownsrv.dso",
+ "$(EPOCROOT)/epoc32/release/armv5/lib/exportlibrary_shutdownsrv{000a0000}.dso",
+ ]
+ t.addbuildtargets("smoke_suite/test_resources/mmp/mmp1/group/bld.inf", [
+ "shutdownsrv_dll/armv5/udeb/shutdownsrv.o",
+ "shutdownsrv_dll/armv5/urel/shutdownsrv.o",
+ "shutdownsrv_dll/armv5/udeb/shutdownsrvpatchdata.o",
+ "shutdownsrv_dll/armv5/urel/shutdownsrvpatchdata.o",
+ "shutdownsrv_dll/armv5/udeb/shutdowntimer.o",
+ "shutdownsrv_dll/armv5/urel/shutdowntimer.o"
+ ])
+ t.mustmatch = [
+ ".*elf2e32.*(--defaultpaged|--codepaging=default.*--datapaging=default).*",
+ ".*armlink.*--verbose.*"
+ ]
+ t.run()
+
+ t.id = "75b"
+ t.name = "mmp_2"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp2/group/bld.inf -c armv5 -f-"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/imageprocessorperf.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/imageprocessorperf.lib"
+ ]
+ t.addbuildtargets("smoke_suite/test_resources/mmp/mmp2/group/bld.inf", [
+ "imageprocessorperf_lib/armv5/udeb/ColorConverter.o",
+ "imageprocessorperf_lib/armv5/urel/ColorConverter.o",
+ "imageprocessorperf_lib/armv5/udeb/ImageProcessor.o",
+ "imageprocessorperf_lib/armv5/urel/ImageProcessor.o"
+ ])
+ t.mustmatch = [
+ ".*armcc.*-O0.*-g.*--cpu 6.*-Otime.*",
+ ".*armcc.*-O3.*--cpu 6.*-Otime.*",
+ ".*OPTION ARMASM has no effect.*",
+ ".*OPTION_REPLACE ARMASM has no effect.*"
+ ]
+ t.mustnotmatch = [
+ ".*armcc.*--export_all_vtbl.*"
+ ]
+ t.warnings = 2
+ t.run()
+
+ t.id = "75c"
+ t.name = "mmp_3"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp3/bld.inf -c armv5 -c winscw -f-"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/tbm.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/tbm.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/tbm.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/tbm.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/t_oom.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/t_oom.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/t_oom.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/t_oom.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dfpaeabi_vfpv2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dfpaeabi_vfpv2.dll.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dfpaeabi_vfpv2.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dfpaeabi_vfpv2.dll.map",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/t_oom.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/t_oom.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/t_oom.exe"
+ ]
+ t.addbuildtargets("smoke_suite/test_resources/mmp/mmp3/bld.inf", [
+ "tbm_exe/armv5/udeb/tbm.o",
+ "tbm_exe/armv5/urel/tbm.o",
+ "t_oom_exe/armv5/udeb/t_oom.o",
+ "t_oom_exe/armv5/urel/t_oom.o",
+ "dfpaeabi_vfpv2_dll/armv5/udeb/dfpaeabi.o",
+ "dfpaeabi_vfpv2_dll/armv5/urel/dfpaeabi.o",
+ "t_oom_exe/winscw/udeb/t_oom.o",
+ "t_oom_exe/winscw/udeb/t_oom_UID_.o",
+ "t_oom_exe/winscw/urel/t_oom.o",
+ "t_oom_exe/winscw/urel/t_oom_UID_.o"
+ ])
+ t.mustmatch = [
+ ".*armlink.*udeb/eexe.lib.*-o.*armv5/udeb/t_oom.exe.sym.*euser.dso.*efsrv.dso.*estor.dso.*euser.dso.*",
+ ".*armlink.*urel/eexe.lib.*-o.*armv5/urel/t_oom.exe.sym.*euser.dso.*efsrv.dso.*euser.dso.*",
+ ".*mwldsym2.*udeb/eexe.lib.*euser.lib.*efsrv.lib.*estor.lib.*euser.lib.*-o.*winscw/udeb/t_oom.exe.*",
+ ".*mwldsym2.*urel/eexe.lib.*euser.lib.*efsrv.lib.*euser.lib.*-o.*winscw/urel/t_oom.exe.*"
+ ]
+ t.mustnotmatch = []
+ t.warnings = 0
+ t.run()
+
+ t.id = "75d"
+ t.name = "mmp_4"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp4/group/bld.inf -c winscw"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/d_newldd.ldd",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/d_newldd.ldd",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/d_lddturnaroundtimertest.ldd",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/d_lddturnaroundtimertest.ldd",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/d_lddturnaroundtimertest.ldd.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/t_sharedio3.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/t_sharedio3.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/t_sharedio3.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/t_rbuf.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/t_rbuf.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/t_rbuf.exe.map"
+ ]
+ t.addbuildtargets("smoke_suite/test_resources/mmp/mmp4/group/bld.inf", [
+ "d_newldd_ldd/winscw/udeb/d_newldd.o",
+ "d_newldd_ldd/winscw/udeb/d_newldd.UID.CPP",
+ "d_newldd_ldd/winscw/udeb/d_newldd_UID_.o",
+ "d_newldd_ldd/winscw/urel/d_newldd.o",
+ "d_newldd_ldd/winscw/urel/d_newldd.UID.CPP",
+ "d_newldd_ldd/winscw/urel/d_newldd_UID_.o",
+ "d_newldd_ldd/winscw/udeb/t_new_classes.o",
+ "d_newldd_ldd/winscw/urel/t_new_classes.o",
+ "d_lddturnaroundtimertest_ldd/winscw/udeb/d_lddturnaroundtimertest.o",
+ "d_lddturnaroundtimertest_ldd/winscw/udeb/d_lddturnaroundtimertest.UID.CPP",
+ "d_lddturnaroundtimertest_ldd/winscw/udeb/d_lddturnaroundtimertest_UID_.o",
+ "d_lddturnaroundtimertest_ldd/winscw/urel/d_lddturnaroundtimertest.o",
+ "d_lddturnaroundtimertest_ldd/winscw/urel/d_lddturnaroundtimertest.UID.CPP",
+ "d_lddturnaroundtimertest_ldd/winscw/urel/d_lddturnaroundtimertest_UID_.o",
+ "t_sharedio3_exe/winscw/udeb/t_sharedio.o",
+ "t_sharedio3_exe/winscw/udeb/t_sharedio3.UID.CPP",
+ "t_sharedio3_exe/winscw/udeb/t_sharedio3_UID_.o",
+ "t_sharedio3_exe/winscw/urel/t_sharedio.o",
+ "t_sharedio3_exe/winscw/urel/t_sharedio3.UID.CPP",
+ "t_sharedio3_exe/winscw/urel/t_sharedio3_UID_.o",
+ "t_rbuf_exe/winscw/udeb/t_rbuf.o",
+ "t_rbuf_exe/winscw/udeb/t_rbuf.UID.CPP",
+ "t_rbuf_exe/winscw/udeb/t_rbuf_UID_.o",
+ "t_rbuf_exe/winscw/urel/t_rbuf.o",
+ "t_rbuf_exe/winscw/urel/t_rbuf.UID.CPP",
+ "t_rbuf_exe/winscw/urel/t_rbuf_UID_.o"
+ ])
+ t.mustmatch = []
+ t.run()
+
+ # Test keywords: version, firstlib, nocompresstarget
+ t.id = "75e"
+ t.name = "mmp_5"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp5/bld.inf -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/fuzzv5.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/fuzzv5.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/fuzzlib.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/fuzzlib.lib"
+ ]
+ t.addbuildtargets("smoke_suite/test_resources/mmp/mmp5/bld.inf", [
+ "fuzzv5_exe/armv5/udeb/fuzzv5.o",
+ "fuzzv5_exe/armv5/urel/fuzzv5.o",
+ "fuzzlib_lib/armv5/udeb/uc_exe_.cpp",
+ "fuzzlib_lib/armv5/urel/uc_exe_.cpp",
+ "fuzzlib_lib/armv5/udeb/uc_exe_.o",
+ "fuzzlib_lib/armv5/urel/uc_exe_.o",
+ ])
+ t.run()
+
+ t.id = "75f"
+ t.name = "mmp_6"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp6_7/bld.inf -c armv5 -k -p diagsuppress.mmp -f-"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/diagsuppress_test.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/diagsuppress_test.dll",
+ ]
+ t.mustmatch = [
+ "--diag_suppress 6780",
+ "--diag_suppress 6331"
+ ]
+ t.run()
+
+ t.id = "75g"
+ t.name = "mmp_7"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp6_7/bld.inf -c armv5 -k -p diagsuppress_noarmlibs.mmp -f-"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/urel/diagsuppress_noarmlibs_test.dll",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/diagsuppress_noarmlibs_test.dll"
+ ]
+ t.mustmatch = ["--diag_suppress 6331"]
+ t.mustnotmatch = ["--diag_suppress 6780"]
+ t.run()
+
+ # Test keyword: version
+ t.id = "75h"
+ t.name = "mmp_8"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/mmp8/bld.inf"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test_mmp_version.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test_mmp_version.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test_mmp_version.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/test_mmp_version.exe"
+ ]
+ t.mustmatch = []
+ t.mustnotmatch = []
+ t.warnings = 2
+ t.run()
+
+ # Test keyword: armfpu softvfp|vfpv2
+ # Both armv5 RVCT (9a+b) and GCCE (10) builds, as they differ in behaviour.
+ t.id = "75i"
+ t.name = "mmp_9a"
+ t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -p armfpu_soft.mmp -c armv5_urel -f-"
+ t.targets = []
+ t.mustmatch = ["--fpu softvfp", "--fpu=softvfp"]
+ t.mustnotmatch = ["--fpu vfpv2", "--fpu=vfpv2"]
+ t.warnings = 0
+ t.run()
+
+ t.id = "75j"
+ t.name = "mmp_9b"
+ t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -c armv5_urel REALLYCLEAN &&" \
+ + " sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -p armfpu_vfpv2.mmp -c armv5_urel -f-"
+
+ t.mustmatch = ["--fpu vfpv2", "--fpu=vfpv2"]
+ t.mustnotmatch = ["--fpu softvfp", "--fpu=softvfp"]
+ t.run()
+
+ t.id = "75k"
+ t.name = "mmp_10"
+ t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -c armv5_urel_gcce4_3_2 REALLYCLEAN &&" \
+ + " sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -c armv5_urel_gcce4_3_2 -f-"
+ t.countmatch = [
+ ["-mfloat-abi=soft", 2],
+ ["--fpu=softvfp", 2]
+ ]
+ t.mustmatch = []
+ t.mustnotmatch = ["--fpu=vfpv2"]
+ t.run()
+
+ # Test keywords: compresstarget, nocompresstarget, bytepaircompresstarget, inflatecompresstarget
+ t.id = "75l"
+ t.name = "mmp_11"
+ t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp11/bld.inf -c armv5_urel -f-"
+ t.mustmatch_singleline = [
+ "elf2e32.*--output.*\/compress\.exe.*--compressionmethod=inflate",
+ "elf2e32.*--output.*\/nocompress\.exe.*--uncompressed",
+ "elf2e32.*--output.*\/bytepaircompress\.exe.*--compressionmethod=bytepair",
+ "elf2e32.*--output.*\/inflatecompress\.exe.*--compressionmethod=inflate",
+ "elf2e32.*--output.*\/combinedcompress\.exe.*--compressionmethod=bytepair",
+ "COMPRESSTARGET keyword in .*combinedcompresstarget.mmp overrides earlier use of NOCOMPRESSTARGET",
+ "INFLATECOMPRESSTARGET keyword in .*combinedcompresstarget.mmp overrides earlier use of COMPRESSTARGET",
+ "BYTEPAIRCOMPRESSTARGET keyword in .*combinedcompresstarget.mmp overrides earlier use of INFLATECOMPRESSTARGET"
+ ]
+ t.countmatch = []
+ t.mustnotmatch = []
+ t.warnings = 3
+ t.run()
+
+ # Test keyword: APPLY
+ t.id = "75m"
+ t.name = "apply"
+ t.command = "sbs -b smoke_suite/test_resources/mmp/apply/bld.inf -f- -k --configpath=test/config"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test_mmp_apply.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test_mmp_apply.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/test_mmp_apply.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/test_mmp_apply.exe"
+ ]
+ t.mustmatch_singleline = ["-DAPPLYTESTEXPORTEDVAR",
+ "-DAPPLYTESTAPPENDCDEFS"]
+ t.countmatch = [["<]*>.*"
+ ]
+
+ warnings = 0
+
+ t.id = "104"
+ t.name = "parallel_parsing"
+ t.description = description
+ t.command = command
+ t.targets = targets
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.warnings = warnings
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/pdll_arm.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/pdll_arm.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,109 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.usebash = True
+
+ command = "sbs -b smoke_suite/test_resources/simple_dll/pbld.inf -c %s -f -"
+ maintargets = [
+ "$(EPOCROOT)/epoc32/release/%s/udeb/createstaticpdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/%s/urel/createstaticpdll.dll.sym",
+ "$(EPOCROOT)/epoc32/release/%s/udeb/createstaticpdll.dll",
+ "$(EPOCROOT)/epoc32/release/%s/urel/createstaticpdll.dll"
+ ]
+ armv5targets = [
+ "$(EPOCROOT)/epoc32/release/%s/lib/createstaticpdll.dso",
+ "$(EPOCROOT)/epoc32/release/%s/lib/createstaticpdll{000a0000}.dso"
+ ]
+ buildtargets = [
+ "createstaticpdll_dll/%s/udeb/CreateStaticDLL.o",
+ "createstaticpdll_dll/%s/urel/CreateStaticDLL.o"
+ ]
+ mustmatch = [
+ r".*\busrt\d_\d\.lib\b.*",
+ r".*\bscppnwdl\.dso\b.*"
+ ]
+ mustnotmatch = [
+ ".*ksrt.*"
+ ]
+
+ t.id = "0109a"
+ t.name = "pdll_armv5_rvct"
+ t.command = command % "armv5"
+ t.targets = map(lambda p: p % "armv5", maintargets + armv5targets)[:] # Shallow, as we optionally extend later and then re-use
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/pbld.inf', map(lambda p: p % "armv5", buildtargets))
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.run()
+
+ t.id = "0109b"
+ t.name = "pdll_armv5_clean"
+ t.command = command % "armv5" + " clean"
+ t.targets = []
+ t.mustmatch = []
+ t.mustnotmatch = []
+ t.run()
+
+ t.id = "0109c"
+ t.name = "pdll_armv5_gcce"
+ t.command = command % "gcce_armv5"
+ t.targets = map(lambda p: p % "armv5", maintargets + armv5targets)
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/pbld.inf', map(lambda p: p % "armv5", buildtargets))
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.run()
+
+ t.id = "0109d"
+ t.name = "pdll_armv5_gcce_clean"
+ t.command = command % "gcce_armv5" + " clean"
+ t.targets = []
+ t.mustmatch = []
+ t.mustnotmatch = []
+ t.run()
+
+ t.id = "0109e"
+ t.name = "pdll_armv7_rvct"
+ t.command = command % "armv7"
+ t.targets = map(lambda p: p % "armv7", maintargets)[:] # Shallow, as we optionally extend later and then re-use
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/pbld.inf', map(lambda p: p % "armv7", buildtargets))
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.run()
+
+ t.id = "0109f"
+ t.name = "pdll_armv7_clean"
+ t.command = command % "armv7" + " clean"
+ t.targets = []
+ t.mustmatch = []
+ t.mustnotmatch = []
+ t.run()
+
+ t.id = "0109g"
+ t.name = "pdll_armv7_gcce"
+ t.command = command % "arm.v7.udeb.gcce4_3_2 -c arm.v7.urel.gcce4_3_2"
+ t.targets = map(lambda p: p % "armv7", maintargets)
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/pbld.inf', map(lambda p: p % "armv7", buildtargets))
+ t.mustmatch = mustmatch
+ t.mustnotmatch = mustnotmatch
+ t.run()
+
+ t.id = "109"
+ t.name = "pdll_arm"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/pdll_winscw.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/pdll_winscw.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,39 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "105"
+ t.name = "pdll_winscw"
+ t.command = "sbs -b smoke_suite/test_resources/simple_dll/pbld.inf -c winscw"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/createstaticpdll.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/createstaticpdll.dll",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/createstaticpdll.dll",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/createstaticpdll.dll.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_dll/pbld.inf', [
+ "createstaticpdll_dll/winscw/udeb/CreateStaticDLL.o",
+ "createstaticpdll_dll/winscw/udeb/createstaticpdll.UID.CPP",
+ "createstaticpdll_dll/winscw/udeb/createstaticpdll_UID_.o",
+ "createstaticpdll_dll/winscw/urel/CreateStaticDLL.o",
+ "createstaticpdll_dll/winscw/urel/createstaticpdll.UID.CPP",
+ "createstaticpdll_dll/winscw/urel/createstaticpdll_UID_.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/plugin_armv5_winscw_freeze.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/plugin_armv5_winscw_freeze.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,67 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "90"
+ t.name = "plugin_armv5_winscw_freeze"
+ t.description = """Builds several ECOM plugins, with and without explicit DEFFILE statements, confirming
+ the correct FREEZE behaviour in each case. The correct behaviour for a PLUGIN/PLUGIN3 is
+ indicative of all TARGETTYPEs where the build system defines known exports: FREEZE should do nothing
+ unless an explicit DEFFILE statement is present in the .mmp file.
+ Also confirms default UID2 settings for PLUGIN3 TARGETTYPEs and default resource generation locations
+ for both PLUGIN and PLUGIN3."""
+ t.usebash = True
+
+ t.command = """
+ sbs -b smoke_suite/test_resources/simple_plugin/bld.inf -c armv5_urel -c winscw_urel CLEAN > /dev/null &&
+ sbs -f- -b smoke_suite/test_resources/simple_plugin/bld.inf -c armv5_urel -c winscw_urel &&
+ sbs -b smoke_suite/test_resources/simple_plugin/bld.inf -c armv5_urel -c winscw_urel FREEZE -m ${SBSMAKEFILE} -f ${SBSLOGFILE}"""
+
+ t.targets = [
+ "smoke_suite/test_resources/simple_plugin/bwins/plugin2u.def",
+ "smoke_suite/test_resources/simple_plugin/eabi/plugin2u.def",
+ "$(EPOCROOT)/epoc32/data/z/resource/plugins/plugin.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/plugins/plugin.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/plugins/plugin.rsc",
+ "$(EPOCROOT)/epoc32/data/z/resource/plugins/plugin3.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/plugins/plugin3.rsc",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/plugins/plugin3.rsc"
+ ]
+
+ t.antitargets = [
+ "smoke_suite/test_resources/simple_plugin/bwins/pluginu.def",
+ "smoke_suite/test_resources/simple_plugin/eabi/pluginu.def"
+ ]
+
+ t.mustmatch = [
+ ".*EFREEZE: Appending 3 New Export\(s\) to .*/test/smoke_suite/test_resources/simple_plugin/eabi/plugin2u.def.*",
+ ".*EFREEZE: Appending 1 New Export\(s\) to .*/test/smoke_suite/test_resources/simple_plugin/bwins/plugin2u.def.*",
+ ".*__EMULATOR_IMAGE_HEADER2\(0x10000079,0x10009D93,0x00000000.*",
+ ".*elf2e32.*--targettype=PLUGIN3.*--output=.*plugin3.dll.*--uid2=0x10009D93.*"
+
+ ]
+
+ t.mustnotmatch = [
+ ".*EFREEZE: .*/test/smoke_suite/test_resources/simple_plugin/eabi/pluginu.def.*",
+ ".*EFREEZE: .*/test/smoke_suite/test_resources/simple_plugin/bwins/pluginu.def.*"
+ ]
+
+ t.warnings = 4
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/pre_export.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/pre_export.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,41 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "32"
+ t.name = "pre_export"
+ t.command = "sbs -b smoke_suite/test_resources/pre-export/bld.inf -c " + \
+ "armv5 -k"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/my.mmh",
+ "$(EPOCROOT)/epoc32/include/second.mmh",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/petest.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/petest.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/petest.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/petest.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/pre-export/bld.inf', [
+ "petest_/armv5/udeb/test.o",
+ "petest_/armv5/urel/test.o"
+ ])
+ # we expect these errors because there are 2 MMP files deliberately missing
+ t.errors = 4
+ t.returncode = 1
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/qt_helloworld.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/qt_helloworld.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,55 @@
+#
+# 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:
+# This test case requires install of Qt.
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+
+ t.description = "Ensure Raptor builds Qt applications successfully"
+
+ t.id = "0110"
+ t.name = "qt_helloworld"
+ t.command = "cd smoke_suite/test_resources/qt && qmake -spec symbian-sbsv2 && sbs"
+ t.targets = [
+ "$(SBS_HOME)/test/smoke_suite/test_resources/qt/bld.inf",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/qt/helloworldqt.loc",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/qt/helloworldqt.rss",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/qt/helloworldqt_reg.rss",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/qt/helloworldqt_template.pkg",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/qt/Makefile",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworldqt.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworldqt.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworldqt.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworldqt.exe.map",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/helloworldqt.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/helloworldqt.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/helloworldqt.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/qt/bld.inf', [
+ "helloworldqt_exe/armv5/udeb/helloworld.o",
+ "helloworldqt_exe/armv5/udeb/helloworld.o.d",
+ "helloworldqt_exe/armv5/urel/helloworld.o",
+ "helloworldqt_exe/armv5/urel/helloworld.o.d",
+ "helloworldqt_exe/winscw/udeb/helloworld.o",
+ "helloworldqt_exe/winscw/udeb/helloworld.o.d",
+ "helloworldqt_exe/winscw/urel/helloworld.o",
+ "helloworldqt_exe/winscw/urel/helloworld.o.d"
+ ])
+ t.run("windows")
+
+ return t
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/query_cli.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/query_cli.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+import raptor_tests
+
+def run():
+
+ t = raptor_tests.SmokeTest()
+ t.description = "Test the --query command-line option"
+
+ t.name = "query_cli_alias"
+ t.command = "sbs --query=aliases"
+ t.mustmatch_singleline = [
+ "",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ]
+ t.mustnotmatch_singleline = [
+ " ",
+ " "
+ ]
+ t.run()
+
+ t.name = "query_cli_product"
+ t.command = "sbs --query=products --configpath=test/smoke_suite/test_resources/bv"
+ t.mustmatch_singleline = [
+ "",
+ " ",
+ " ",
+ " ",
+ " "
+ ]
+ t.mustnotmatch_singleline = [
+ " ",
+ " "
+ ]
+ t.run()
+
+ t.name = "query_cli_config"
+ t.command = "sbs --query=config[armv5_urel]"
+ t.mustmatch_singleline = [
+ "",
+ "fullname='arm\.v5\.urel\.rvct.*'",
+ "outputpath='.*/epoc32/release/armv5/urel'",
+ " "
+ ]
+ t.mustnotmatch_singleline = []
+ t.run()
+
+ t.name = "query_cli_config_bv"
+ t.command = "sbs --query=config[armv5_urel.test_bv_1] --configpath=test/smoke_suite/test_resources/bv"
+ t.mustmatch_singleline = [
+ "",
+ "fullname='arm\.v5\.urel\.rvct._.\.test_bv_1'",
+ "outputpath='.*/epoc32/release/armv5\.one/urel'",
+ " "
+ ]
+ t.mustnotmatch_singleline = []
+ t.run()
+
+ t.name = "query_cli_config_others"
+ t.command = "sbs --query=config[winscw_urel] --query=config[tools2_rel]"
+
+ if t.onWindows:
+ t2 = "tools2"
+ else:
+ t2 = raptor_tests.ReplaceEnvs("tools2/$(HOSTPLATFORM_DIR)")
+
+ t.mustmatch_singleline = [
+ "",
+ "outputpath='.*/epoc32/release/winscw/urel'",
+ "outputpath='.*/epoc32/release/%s/rel'" % t2,
+ " "
+ ]
+ t.mustnotmatch_singleline = []
+ t.run()
+
+ t.name = "query_cli_bad"
+ t.command = "sbs --query=nonsense"
+ t.mustmatch_singleline = [
+ "",
+ "exception 'unknown query' with query 'nonsense'",
+ " "
+ ]
+ t.mustnotmatch_singleline = []
+ t.errors = 1
+ t.returncode = 1
+ t.run()
+
+ t.name = "query_cli"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/raptor_crash.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/raptor_crash.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,55 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.description = "tests that previous crash conditions now generate tidy errors."
+
+ # no crash when there are bld.inf lines starting with a slash
+ t.id = "45a"
+ t.name = "raptor_crash"
+ t.command = "sbs -b smoke_suite/test_resources/simple_crash/bld.inf"
+ t.errors = 2
+ t.returncode = 1
+ t.run()
+
+ # should get an error code when running inside cmd
+ t.id = "45b"
+ t.name = "error_cmd"
+ t.usebash = True
+ t.command = "cmd /c sbs -s no_such_thing"
+ t.mustmatch = ["System Definition file no_such_thing does not exist"]
+ t.errors = 1
+ t.returncode = 1
+ t.run("windows")
+
+ # should get an error code when running in bash
+ t.id = "45c"
+ t.name = "error_bash"
+ t.usebash = True
+ t.command = "sbs -s no_such_thing"
+ t.mustmatch = ["System Definition file no_such_thing does not exist"]
+ t.errors = 1
+ t.returncode = 1
+ t.run()
+
+ # print the over all result
+ t.id = "45"
+ t.name = "raptor_crash"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/resource.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/resource.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,92 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+from raptor_tests import ReplaceEnvs
+from raptor_meta import BldInfFile
+
+def run():
+ t = SmokeTest()
+ t.id = "30"
+ t.name = "resource"
+ t.command = "sbs -b smoke_suite/test_resources/simple_gui/Bld.inf RESOURCE"
+ t.targets = [
+ "$(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"
+ ]
+
+
+ t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [
+ "helloworld_exe/helloworld.mbm_bmconvcommands",
+ "helloworld_exe/helloworld_HelloWorld_sc.rpp",
+ "helloworld_exe/helloworld_HelloWorld_sc.rpp.d",
+ "helloworld_reg_exe/helloworld_reg_HelloWorld_reg_sc.rpp",
+ "helloworld_reg_exe/helloworld_reg_HelloWorld_reg_sc.rpp.d"])
+
+ t.mustnotmatch = ["HelloWorld.rss.* warning: trigraph"]
+
+ t.run()
+
+ t.id="30a"
+ t.name = "no_depend_gen_resource"
+ t.usebash = True
+ t.description = """Check that dependent resources still build correctly even when we turn dependency generation off. This
+ test cannot really do this reliably, if you think about it, since it can't force make to try building resources
+ in the 'wrong' order. What it does attempt is to check that
+ the ultimately generated dependency file is ok.
+ N.B. It also attempts to ensure that the dependency file is 'minimal' i.e. that it only references .mbg and .rsg files
+ that might come from other parts of the same build. This is important for performance in situations where --no-depend-generate
+ is used because the weight of 'complete' dependency information would overwhelm make.
+ """
+ buildLocation = ReplaceEnvs("$(EPOCROOT)/epoc32/build/") + BldInfFile.outputPathFragment('smoke_suite/test_resources/resource/group/bld.inf')
+ res_depfile= buildLocation+"/dependentresource_/dependentresource_dependentresource_sc.rpp.d"
+
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/testresource.rsg",
+ "$(EPOCROOT)/epoc32/include/testresource.hrh",
+ "$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r01",
+ "$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.rsc",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/testresource.exe",
+ res_depfile
+ ]
+
+ t.addbuildtargets('smoke_suite/test_resources/resource/group/bld.inf', [
+ "testresource_/testresource_testresource_02.rpp",
+ "testresource_/testresource_testresource_01.rpp",
+ "testresource_/testresource_testresource_01.rpp.d",
+ "testresource_/testresource_testresource_sc.rpp"])
+
+ t.command = "sbs -b smoke_suite/test_resources/resource/group/bld.inf -c armv5_urel reallyclean ; sbs --no-depend-generate -j 16 -b smoke_suite/test_resources/resource/group/bld.inf -c armv5_urel -f ${SBSLOGFILE} -m ${SBSMAKEFILE} && grep 'epoc32.include.testresource.rsg' %s && wc -l %s " % (res_depfile, res_depfile)
+
+ t.mustnotmatch = []
+
+ t.mustmatch = [
+ "[23] .*.dependentresource_.dependentresource_dependentresource_sc.rpp.d"
+ ]
+
+ t.run()
+
+ t.name = 'resource'
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/retry.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/retry.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,52 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.id = "59"
+ t.name = "retry"
+ #
+ # -t 3 means try each recipe up to 3 times, if it fails.
+ #
+ # There are 3 FLM calls:
+ # retry_1 fails once then succeeds.
+ # retry_2 fails twice then succeeds.
+ # retry_3 fails all 3 times.
+ #
+ # use -k in case the retry_3 case happens to be run first.
+ #
+ t.command = "sbs -b smoke_suite/test_resources/retry/bld.inf -c armv5_urel -t 3 -k"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/build/retry_1.1",
+ "$(EPOCROOT)/epoc32/build/retry_1.ok",
+ "$(EPOCROOT)/epoc32/build/retry_2.1",
+ "$(EPOCROOT)/epoc32/build/retry_2.2",
+ "$(EPOCROOT)/epoc32/build/retry_2.ok",
+ "$(EPOCROOT)/epoc32/build/retry_3.1",
+ "$(EPOCROOT)/epoc32/build/retry_3.2",
+ "$(EPOCROOT)/epoc32/build/retry_3.3"
+ ]
+ t.antitargets = [
+ "$(EPOCROOT)/epoc32/build/retry_1.2",
+ "$(EPOCROOT)/epoc32/build/retry_1.3",
+ "$(EPOCROOT)/epoc32/build/retry_2.3",
+ "$(EPOCROOT)/epoc32/build/retry_3.ok"
+ ]
+ t.returncode = 1
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/romfile.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/romfile.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,92 @@
+#
+# 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:
+#
+
+
+from raptor_tests import SmokeTest
+import os
+
+def run():
+ t = SmokeTest()
+ t.id = "55"
+ t.name = "romfile"
+ t.description = """
+ Tests the creation and content of an .iby romfile for the armv5.test
+ configuration. Also tests for creation of relevant test batch files.
+ """
+ t.usebash = True
+ t.command = "sbs -b $(EPOCROOT)/src/ongoing/group/romfile/other_name.inf " \
+ + "-c armv5.test ROMFILE -f - " \
+ + "&& cat $(EPOCROOT)/epoc32/rom/src/ongoing/group/romfile/armv5test.iby"
+
+ # Don't allow -m or -f to be appended
+ t.logfileOption = lambda :""
+ t.makefileOption = lambda :""
+ 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"
+ ]
+
+ # Check the content of the generated .iby file.
+
+ 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.*",
+
+ # The comment that is put at the start of the file.
+ 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.*",
+
+ # Some normal files.
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_rand\.exe\s+sys/bin/t_rand\.exe\n.*",
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_swapfsys\.exe\s+sys/bin/t_swapfsys\.exe\n.*",
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_localtime\.exe\s+sys/bin/t_localtime\.exe\n.*",
+
+ # Some files where the MMP file has the PAGED or UNPAGED keywords.
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_pagestress\.exe\s+sys/bin/t_pagestress\.exe paged\n.*",
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_fsys\.exe\s+sys/bin/t_fsys\.exe unpaged\n.*",
+
+ # Some files where the MMP file has the ROMTARGET or RAMTARGET keywords.
+ r".*\ndata=/epoc32/release/##MAIN##/##BUILD##/t_prel\.dll\s+/sys/bin/t_prel\.dll attrib=r\n.*",
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_sysbin\.exe\s+sys/bin/t_sysbin\.exe\n.*",
+ r".*\ndata=/epoc32/release/##MAIN##/##BUILD##/t_sysbin\.exe\s+/sys/bin/t_sysbin_ram\.exe attrib=r\n.*",
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_sysbin\.exe\s+/sys/bin/t_sysbina\.exe\n.*",
+ r".*\nfile=/epoc32/release/##MAIN##/##BUILD##/t_sysbin\.exe\s+/system/programs/t_sysbinb\.exe\n.*"
+ ]
+ t.mustnotmatch = [
+ # Try to detect file paths that contain two or more slashes in a row,
+ # without flagging C++ style comments.
+ r"\w//+\w"
+ ]
+
+ t.run("windows")
+
+ if t.result == SmokeTest.SKIP:
+ t.command = "sbs -b $(EPOCROOT)/src/ongoing/group/romfile/other_name.inf" \
+ + " -c armv5.test ROMFILE -f -" \
+ + " && cat $(EPOCROOT)/epoc32/rom/src/ongoing/group/romfile/armv5test.iby"
+
+ # These two warnings are because gnumakefiles are not supported on
+ # Linux:
+ t.warnings = 2
+ t.run("linux")
+
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/sbs_with_nonexisting_bldinf.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/sbs_with_nonexisting_bldinf.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,28 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+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()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/smp.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/smp.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,51 @@
+#
+# 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:
+#
+
+from raptor_tests import AntiTargetSmokeTest
+
+def run():
+ t = AntiTargetSmokeTest()
+ t.id = "61"
+ t.name = "smp"
+ #
+ # the command asks for ARMV5 and ARMV5SMP but the component only builds
+ # code for ARMV5SMP according to its bld.inf file. so, check that the
+ # ARMV5SMP binaries exist and the ARMV5 ones do not.
+ #
+ t.command = "sbs -b smoke_suite/test_resources/smp/bld.inf -c armv5 -c " + \
+ "armv5.smp"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5smp/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5smp/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5smp/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5smp/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/smp/bld.inf', [
+ "test_/armv5smp/udeb/test.o",
+ "test_/armv5smp/urel/test.o"
+ ])
+ t.antitargets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map"
+ ]
+ t.addbuildantitargets('smoke_suite/test_resources/smp/bld.inf', [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/splitlog_filter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/splitlog_filter.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,122 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+import sys
+
+def run():
+ result = SmokeTest.PASS
+
+ t = SmokeTest()
+ # Override logfileoption and makefileoption to stop them adding '-f' and '-m'
+ t.logfileOption = lambda : ""
+ t.makefileOption = lambda : ""
+ t.id = "0083a"
+ t.name = "splitlog_filter"
+ t.description = "Tests scanlog_filter output"
+ t.usebash = True
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
+ "--filters=FilterSplitlog " + \
+ "-f $(EPOCROOT)/epoc32/build/splitlog.xml " + \
+ "&& cat $(EPOCROOT)/epoc32/build/splitlog.xml"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple/bld.inf', [
+ "test_/armv5/udeb/test.o",
+ "test_/armv5/urel/test.o"
+ ])
+ t.mustmatch = [
+ ".*.*",
+ ".*.*",
+ ".*.*"
+ ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "0083b"
+ t.name = "splitlog_cleancheck"
+ t.command = "cat $(EPOCROOT)/epoc32/build/splitlog.clean.xml"
+ t.targets = []
+ t.mustmatch = [
+ ".*.*"
+ ]
+ t.mustnotmatch = [
+ ".*.*",
+ ".*.*"
+ ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "0083c"
+ t.name = "splitlog_whatlogcheck"
+ t.command = "cat $(EPOCROOT)/epoc32/build/splitlog.whatlog.xml"
+ t.mustmatch = [
+ ".*.*"
+ ]
+ t.mustnotmatch = [
+ ".*.*",
+ ".*.*"
+ ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ t.id = "0083d"
+ t.name = "splitlog_recipecheck"
+ t.command = "cat $(EPOCROOT)/epoc32/build/splitlog.recipe.xml"
+ t.mustmatch = [
+ ".*.*"
+ ]
+ t.mustnotmatch = [
+ ".*.*",
+ ".*.*"
+ ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "83"
+ t.name = "splitlog_filter"
+ t.result = result
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/stringtable_zip_whatlog.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/stringtable_zip_whatlog.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,74 @@
+#
+# 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:
+#
+# The stringtable example doesn't currently build in full, hence it's built for
+# EXPORT in isolation; We also test archives here - although an export, they
+# will be exported in response to the first configuration processed (this
+# example ensures it's armv5_udeb, so we can match against that config).
+from raptor_tests import CheckWhatSmokeTest, ReplaceEnvs
+import re
+import os
+
+def run():
+ markerfile = re.sub("(\\\\|\/|:|;| )", "_",
+ ReplaceEnvs("$(SBS_HOME)_test_smoke_suite_test_resources_simple_zip_export_archive.zip$(EPOCROOT)_epoc32_testunzip.unzipped"))
+
+ t = CheckWhatSmokeTest()
+ t.id = "0069a"
+ t.name = "stringtable_zip_whatlog"
+ t.command = "sbs -b smoke_suite/test_resources/simple_stringtable/bld.inf -b smoke_suite/test_resources/simple_zip_export/bld.inf -f - -m ${SBSMAKEFILE} -c armv5_udeb.whatlog EXPORT"
+ componentpath1 = re.sub(r'\\','/',os.path.abspath("smoke_suite/test_resources/simple_stringtable"))
+ componentpath2 = re.sub(r'\\','/',os.path.abspath("smoke_suite/test_resources/simple_zip_export"))
+ t.regexlinefilter = re.compile("^<(whatlog|archive|stringtable>|member>|zipmarker>)")
+ t.hostossensitive = False
+ t.usebash = True
+ t.targets = [
+ "$(EPOCROOT)/epoc32/include/strconsts.h",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile1.txt",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile2.txt",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile3.txt",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile4.txt",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefilelinuxbin",
+ "$(EPOCROOT)/epoc32/build/" + markerfile
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/simple_stringtable/bld.inf', [
+ "stringtabletest_/strconsts.cpp",
+ "stringtabletest_/strconsts.h",
+ "stringtabletest_/strconsts.st"
+ ])
+ t.stdout = [
+ "",
+ "$(EPOCROOT)/epoc32/include/strconsts.h ",
+ "",
+ "",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile1.txt ",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile2.txt ",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile3.txt ",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefile4.txt ",
+ "$(EPOCROOT)/epoc32/testunzip/archive/archivefilelinuxbin ",
+ "$(EPOCROOT)/epoc32/build/" + markerfile + " "
+ ]
+ t.run()
+
+ "Tests to check that up-to-date zip exports are reported"
+ t.id = "0069b"
+ t.name = "stringtable_zip_whatlog_rebuild"
+ t.targets = []
+ t.run()
+
+ t.id = "69"
+ t.name = "stringtable_zip_whatlog"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/sysdef_dud.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/sysdef_dud.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "50"
+ t.name = "sysdef_dud"
+ t.description = "Test an invalid system_definition.xml file"
+ t.command = "sbs -s " + \
+ "smoke_suite/test_resources/sysdef/system_definition_dud.xml"
+ t.targets = []
+ t.errors = 1
+ t.returncode = 1
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/sysdef_exports.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/sysdef_exports.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,57 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "47"
+ t.name = "sysdef_exports"
+ t.description = "Test general system_definition.xml processing of exports"
+ t.command = "sbs -a $(SBS_HOME)/test/smoke_suite/test_resources/sysdef -s smoke_suite/test_resources/sysdef/system_definition_mmp_export_dependencies_test.xml"
+ t.targets = [
+ "$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/dependent_on_exports/metadata_export_pre1.mmh",
+ "$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/dependent_on_exports/metadata_export_pre2.mmh",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dependent_on_exports.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dependent_on_exports.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/dependent_on_exports.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dependent_on_exports.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dependent_on_exports.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/dependent_on_exports.exe.sym",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/dependent_on_exports.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/dependent_on_exports.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/dependent_on_exports.exe.map"
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/sysdef/dependent_on_exports/bld.inf', [
+ "dependent_on_exports_exe/armv5/udeb/dependent_on_exports_udeb_objects.via",
+ "dependent_on_exports_exe/armv5/udeb/test.o",
+ "dependent_on_exports_exe/armv5/udeb/test.o.d",
+ "dependent_on_exports_exe/armv5/urel/dependent_on_exports_urel_objects.via",
+ "dependent_on_exports_exe/armv5/urel/test.o",
+ "dependent_on_exports_exe/armv5/urel/test.o.d",
+ "dependent_on_exports_exe/winscw/udeb/dependent_on_exports.UID.CPP",
+ "dependent_on_exports_exe/winscw/udeb/dependent_on_exports_UID_.dep",
+ "dependent_on_exports_exe/winscw/udeb/dependent_on_exports_UID_.o",
+ "dependent_on_exports_exe/winscw/udeb/test.dep",
+ "dependent_on_exports_exe/winscw/udeb/test.o",
+ "dependent_on_exports_exe/winscw/urel/dependent_on_exports.UID.CPP",
+ "dependent_on_exports_exe/winscw/urel/dependent_on_exports_UID_.dep",
+ "dependent_on_exports_exe/winscw/urel/dependent_on_exports_UID_.o",
+ "dependent_on_exports_exe/winscw/urel/test.dep",
+ "dependent_on_exports_exe/winscw/urel/test.o"
+ ])
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/sysdef_layers.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/sysdef_layers.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,85 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "48"
+ 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.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/release/armv5/udeb/helloworld.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.sym",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.sym",
+ "$(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/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",
+ ]
+ t.addbuildtargets('smoke_suite/test_resources/sysdef/build_gen_source/bld.inf', [
+ "helloworld_/helloworld_HelloWorld_sc.rpp"
+ ])
+ t.addbuildtargets('smoke_suite/test_resources/sysdef/dependent/bld.inf', [
+ "helloworld_exe/armv5/udeb/HelloWorld_Application.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_AppView.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Document.o",
+ "helloworld_exe/armv5/udeb/HelloWorld_Main.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Application.o",
+ "helloworld_exe/armv5/urel/HelloWorld_AppUi.o",
+ "helloworld_exe/armv5/urel/HelloWorld_AppView.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Document.o",
+ "helloworld_exe/armv5/urel/HelloWorld_Main.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Application.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_AppView.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Document.o",
+ "helloworld_exe/winscw/udeb/HelloWorld_Main.o",
+ "helloworld_exe/winscw/udeb/helloworld.UID.CPP",
+ "helloworld_exe/winscw/udeb/helloworld_UID_.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Application.o",
+ "helloworld_exe/winscw/urel/HelloWorld_AppUi.o",
+ "helloworld_exe/winscw/urel/HelloWorld_AppView.o",
+ "helloworld_exe/winscw/urel/HelloWorld_Document.o",
+ "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_sc.rpp"
+ ])
+ t.countmatch = [
+ ["", 34],
+ ["", 4]
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/talon_test.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/talon_test.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,100 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+from raptor_tests import ReplaceEnvs
+import os
+import sys
+
+def run():
+ t = SmokeTest()
+ t.description = """talon_test: two part test
+ 1) Test talon's -c option
+ 2) Test talon with a script file that has some blank lines and a single non-blank command line
+ """
+
+ # Don't need these as we are not invoking Raptor
+ t.logfileOption = lambda : ""
+ t.makefileOption = lambda : ""
+
+ # Set up variables for talon
+ bindir = ReplaceEnvs("$(SBS_HOME)/$(HOSTPLATFORM_DIR)/bin")
+ bash = bindir + "/bash"
+ talon = bindir + "/talon"
+
+ # Adjust if on Windows - three "tries" for Bash on Windows.
+ # 1 Default try
+ if "win" in sys.platform.lower():
+ bash = ReplaceEnvs("$(SBS_HOME)/win32/cygwin/bin/bash.exe")
+ talon = ReplaceEnvs("$(SBS_HOME)/$(HOSTPLATFORM_DIR)/bin/talon.exe")
+
+ # 2 Bash from a Cygwin
+ if os.environ.has_key("SBS_CYGWIN"):
+ bash = ReplaceEnvs("$(SBS_CYGWIN)/bin/bash.exe")
+
+ # 3 Bash from an env. var.
+ if os.environ.has_key("SBS_SHELL"):
+ bash = os.environ["SBS_SHELL"]
+
+ # Talon's command line
+ commandline="\"|name=commandlinetest;COMPONENT_META=commandline/group/bld.inf;PROJECT_META=commandline.mmp;|echo Command line invocation output\""
+
+ # Talon's "shell script"
+ scriptfile=ReplaceEnvs("$(SBS_HOME)/test/smoke_suite/test_resources/talon_test/script")
+
+ # Environment variables needed by talon - TALON_SHELL must be bash; the other two can be arbitrary.
+ os.environ["TALON_SHELL"]=bash
+ os.environ["TALON_BUILDID"]=str(t.id)
+ os.environ["TALON_RECIPEATTRIBUTES"]="component=talontest"
+
+ # First part of test - command line
+ t.name = "talon_test command line"
+ t.id = "100a"
+ t.command = "%s -c %s" % (talon, commandline)
+ t.targets = []
+ t.mustmatch_multiline = [".* " +
+ ".* .* "]
+
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ # Second part of test - script file
+ t.name = "talon_test script file"
+ t.id = "100b"
+ t.command = "%s %s" % (talon, scriptfile)
+ t.targets = []
+ t.mustmatch_multiline = [".* " +
+ ".* .* "]
+
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ # Print final result
+ t.name = "talon_test"
+ t.id = "100"
+ t.print_result()
+
+ # Delete the added environment variables
+ del os.environ["TALON_SHELL"]
+ del os.environ["TALON_BUILDID"]
+ del os.environ["TALON_RECIPEATTRIBUTES"]
+
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/tem_conflicts.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/tem_conflicts.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,38 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ t = SmokeTest()
+ t.id = "0094"
+ t.name = "tem_conflicts"
+ t.usebash = 1
+ t.command = "sbs -b smoke_suite/test_resources/tem_conflict/bld.inf " + \
+ "-c armv5 -j 2 -f $SBSLOGFILE; cat $SBSLOGFILE"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/test/tem_conflicts.mk",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/test/tem_conflicts.meta",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/test/tem_conflicts.sh"
+ ]
+ t.mustnotmatch = [
+ "cp: cannot open .* for reading: Permission denied",
+ "cp: cannot stat .*: No such file or directory",
+ "rm: cannot remove .*: No such file or directory",
+ "rm: cannot remove .*: Permission denied"
+ ]
+ t.run()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/tem_stages.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/tem_stages.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,92 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+ result = SmokeTest.PASS
+
+ # export the TEM
+
+ t = SmokeTest()
+ t.id = "73a"
+ t.name = "tem_stages"
+ t.command = "sbs -b smoke_suite/test_resources/tem_stages/bld.inf EXPORT"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/test/tem_stages.mk",
+ "$(EPOCROOT)/epoc32/tools/makefile_templates/test/tem_stages.meta"
+ ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ # run the main test
+
+ t.id = "73b"
+ t.name = "tem_stages"
+ t.command = "sbs -b smoke_suite/test_resources/tem_stages/bld.inf"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/build/generated/tem_stages_generated.cpp",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated.h",
+
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_urel.rsg",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_udeb.rsg",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_urel.rsg",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_udeb.rsg",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_urel.lib",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_udeb.lib",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_urel.lib",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_udeb.lib",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_urel.bin",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_udeb.bin",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_urel.bin",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_udeb.bin",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_urel.final",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_armv5_udeb.final",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_urel.final",
+ "$(EPOCROOT)/epoc32/include/tem_stages_generated_winscw_udeb.final",
+
+ "$(EPOCROOT)/epoc32/release/armv5/urel/tem_stages.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/tem_stages.exe",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/tem_stages.lib",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/tem_stages.exe",
+
+ "$(EPOCROOT)/epoc32/release/armv5/urel/tem_stages.lib2",
+ "$(EPOCROOT)/epoc32/release/armv5/urel/tem_stages.exe2",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/tem_stages.lib2",
+ "$(EPOCROOT)/epoc32/release/armv5/udeb/tem_stages.exe2",
+
+ "$(EPOCROOT)/epoc32/release/winscw/urel/tem_stages.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/tem_stages.exe",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/tem_stages.lib",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/tem_stages.exe",
+
+ "$(EPOCROOT)/epoc32/release/winscw/urel/tem_stages.lib2",
+ "$(EPOCROOT)/epoc32/release/winscw/urel/tem_stages.exe2",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/tem_stages.lib2",
+ "$(EPOCROOT)/epoc32/release/winscw/udeb/tem_stages.exe2",
+ ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ # return the combined result
+
+ t.id = "73"
+ t.name = "tem_stages"
+ t.result = result
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/temtest.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/temtest.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,136 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest, CheckWhatSmokeTest
+
+def run():
+ result = SmokeTest.PASS
+ t = SmokeTest()
+ t.id = "0018a"
+ t.name = "temclean"
+ t.command = "sbs -b smoke_suite/test_resources/tem/bldclean.inf -c armv5 CLEAN"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_succeeded",
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_failed"
+ ]
+ t.missing = 2
+ t.warnings = 1
+ t.returncode = 0
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "0018b"
+ t.name = "temtest"
+ t.command = "sbs -b smoke_suite/test_resources/tem/bld.inf -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_succeeded"
+ ]
+ t.warnings = 2
+ t.missing = 0
+ t.returncode = 1
+ t.mustmatch = [ "repeated call to TEM with same values.* Stop\." ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "0018c"
+ t.name = "temclean2"
+ t.command = "sbs -b smoke_suite/test_resources/tem/bldclean.inf -c armv5 CLEAN"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_succeeded",
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_failed"
+ ]
+ t.missing = 2
+ t.warnings = 1
+ t.returncode = 0
+ t.mustmatch = []
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "0018d"
+ t.name = "badtem"
+ t.command = "sbs -b smoke_suite/test_resources/tem/bad_bld.inf -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_failed"
+ ]
+ t.warnings = 3
+ t.missing = 0
+ t.returncode = 1
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t.id = "0018e"
+ t.name = "temclean3"
+ t.command = "sbs -b smoke_suite/test_resources/tem/bldclean.inf -c armv5 CLEAN"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_succeeded",
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_failed"
+ ]
+ t.missing = 2
+ t.warnings = 1
+ t.returncode = 0
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t = CheckWhatSmokeTest()
+ t.id = "0018f"
+ t.name = "temwhat"
+ t.command = "sbs -b smoke_suite/test_resources/simple_extension/bld.inf --what"
+ t.output_expected_only_once = True
+ t.stdout = [
+ # exports
+ '$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/clean.mk',
+ '$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/clean.meta',
+ '$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/build.mk',
+ '$(EPOCROOT)/epoc32/tools/makefile_templates/sbsv2test/build.meta',
+ # release tree built
+ '$(EPOCROOT)/epoc32/release/armv5/udeb/simple_extension.txt',
+ '$(EPOCROOT)/epoc32/release/armv5/urel/simple_extension.txt',
+ '$(EPOCROOT)/epoc32/release/winscw/udeb/simple_extension.txt',
+ '$(EPOCROOT)/epoc32/release/winscw/urel/simple_extension.txt'
+ ]
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+
+ t = SmokeTest()
+ t.id = "0018g"
+ t.name = "badtem2"
+ t.command = "sbs -b smoke_suite/test_resources/tem/bad2_bld.inf -c armv5"
+ t.targets = [
+ "$(EPOCROOT)/epoc32/raptor_smoketest_tem_failed"
+ ]
+ t.warnings = 3
+ t.returncode = 1
+ t.run()
+ if t.result == SmokeTest.FAIL:
+ result = SmokeTest.FAIL
+
+ t.id = "18"
+ t.name = "temtest"
+ t.result = result
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/terminal_filter_tests.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/terminal_filter_tests.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,54 @@
+#
+# 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:
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+
+ t = SmokeTest()
+ t.description = "Tests against log files to ensure it 'does the right thing'"
+
+ t.id = "87a"
+ t.name = "terminal_filter_tests_log"
+ t.command = "$(SBS_HOME)/test/smoke_suite/test_resources/refilter/testfilterterminal"
+ t.countmatch = [
+ # One of each type of error occurs early in the 'sbs' call where there
+ # is a recipe inside another recipe. Then the errors occur in the
+ # opposite order where are 2 closing tags next to each other before 2
+ # opening tags appear next to each other
+ ["sbs: error: Opening recipe tag found before closing recipe tag for previous recipe:", 2],
+ ["Discarding previous recipe \(Possible logfile corruption\)", 2],
+ ["sbs: error: Closing recipe tag found before opening recipe tag:", 2],
+ ["Unable to print recipe data \(Possible logfile corruption\)", 2]
+ ]
+ t.errors = 4
+ t.run()
+
+ t.id = "87b"
+ t.name = "terminal_filter_tests_configs"
+ t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf"
+ t.countmatch = []
+ t.errors = 0
+ t.mustmatch_singleline = ["built 'armv5_urel'",
+ "built 'armv5_udeb'",
+ "built 'winscw_urel'",
+ "built 'winscw_udeb'" ]
+ t.run()
+
+ t.id = "87"
+ t.name = "terminal_filter_tests"
+ t.print_result()
+ return t
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/annofile2log/scrubbed_ncp_dfs_resource.anno.bz2
Binary file sbsv2/raptor/test/smoke_suite/test_resources/annofile2log/scrubbed_ncp_dfs_resource.anno.bz2 has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/annofile2log/scrubbed_ncp_dfs_resource.stdout.bz2
Binary file sbsv2/raptor/test/smoke_suite/test_resources/annofile2log/scrubbed_ncp_dfs_resource.stdout.bz2 has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/annofile2log/testanno2log.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/annofile2log/testanno2log.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,45 @@
+#
+# 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
+#
+
+
+import sys
+import os
+sys.path.append(os.path.join(os.environ['SBS_HOME'],"python"))
+
+from raptor_make import XMLEscapeLog
+from raptor_make import AnnoFileParseOutput
+
+
+retcode=0
+
+
+if len(sys.argv) > 1:
+ annofile = sys.argv[1]
+else:
+ annofile = sys.stdin
+
+sys.stdout.write("\n")
+try:
+ for l in XMLEscapeLog(AnnoFileParseOutput(annofile)):
+ sys.stdout.write(l)
+
+except Exception,e:
+ sys.stderr.write("error: " + str(e) + "\n")
+ retcode = 1
+sys.stdout.write(" \n")
+
+sys.exit(retcode)
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/apply_test_usecases_variants.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/apply_test_usecases_variants.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/linker_options/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/linker_options/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,10 @@
+
+PRJ_EXPORTS
+../apply_test_usecases_variants.xml /epoc32/tools/makefile_templates/
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_MMPFILES
+test_apply_linkeroptions.mmp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/linker_options/test_apply_linkeroptions.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/linker_options/test_apply_linkeroptions.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,4 @@
+int main()
+{
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/linker_options/test_apply_linkeroptions.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/apply_usecases/linker_options/test_apply_linkeroptions.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,7 @@
+TARGET test_apply_linkeroptions
+TARGETTYPE EXE
+
+SOURCE test_apply_linkeroptions.cpp
+
+// Link to mingw libs: libwsock32.a
+APPLY apply_tools2_linker_options
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/asmtest/asmtest.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/asmtest/asmtest.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,28 @@
+/*
+* 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:
+*
+*/
+
+TARGET asmtest
+TARGETTYPE EXE
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+SOURCE testasm.s testcia.cia testassembler.cpp
+EPOCSTACKSIZE 8192
+EPOCHEAPSIZE 0x5000 65535
+EPOCPROCESSPRIORITY low
+capability TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/asmtest/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/asmtest/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+ARMV5 ARMV7
+
+PRJ_MMPFILES
+asmtest.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/asmtest/testasm.s
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/asmtest/testasm.s Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,45 @@
+; test arm assembler
+;
+; (C) Copyright Symbian Software Limited 2008. All rights reserved.
+;
+ AREA |.text|, CODE, READONLY, ALIGN=6
+
+ CODE32
+
+ ; UPT
+
+;
+;
+
+
+
+;EXPORT fake_assembler_function1
+ EXPORT _Z24fake_assembler_function1v
+
+;fake_assembler_function1
+_Z24fake_assembler_function1v
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ mov r0,r0 ; nop
+ bx lr
+
+ END
+
+; End of file - testasm.s
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/asmtest/testassembler.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/asmtest/testassembler.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,29 @@
+/*
+* 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:
+*
+*/
+#include "e32def.h" // intentional include
+
+char test[]="Assembler test";
+
+void fake_assembler_function1(void);
+void fake_assembler_function2(void);
+
+TInt E32Main()
+{
+ fake_assembler_function1();
+ fake_assembler_function2();
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/asmtest/testcia.cia
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/asmtest/testcia.cia Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2008-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
+// #include
+// #include
+
+// #include
+
+#ifndef __CIA__
+#error __CIA__ must be defined for .cia files
+#endif
+
+__NAKED__ void fake_assembler_function2(void)
+ {
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+ asm("mov r0, r0 "); // nop
+
+ asm("bx lr");
+ }
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/commonframework/CommonFramework.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/commonframework/CommonFramework.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,64 @@
+/*
+* 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:
+*
+*/
+
+
+
+#ifndef __CommonFramework_H
+#define __CommonFramework_H
+
+#include
+#include
+
+_LIT(KTxtEPOC32EX,"EXAMPLES");
+_LIT(KTxtExampleCode,"Symbian OS Example Code");
+_LIT(KFormatFailed,"failed: leave code=%d");
+_LIT(KTxtOK,"ok");
+_LIT(KTxtPressAnyKey," [press any key]");
+
+// public
+LOCAL_D CConsoleBase* console; // write all your messages to this
+LOCAL_C void doExampleL(); // code this function for the real example
+
+// private
+LOCAL_C void callExampleL(); // initialize with cleanup stack, then do example
+
+GLDEF_C TInt E32Main() // main function called by E32
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+ TRAPD(error,callExampleL()); // more initialization, then do example
+ __ASSERT_ALWAYS(!error,User::Panic(KTxtEPOC32EX,error));
+ delete cleanup; // destroy clean-up stack
+ __UHEAP_MARKEND;
+ return 0; // and return
+ }
+
+LOCAL_C void callExampleL() // initialize and call example code under cleanup stack
+ {
+ console=Console::NewL(KTxtExampleCode,TSize(KConsFullScreen,KConsFullScreen));
+ CleanupStack::PushL(console);
+ TRAPD(error,doExampleL()); // perform example function
+ if (error)
+ console->Printf(KFormatFailed, error);
+ else
+ console->Printf(KTxtOK);
+ console->Printf(KTxtPressAnyKey);
+ console->Getch(); // get and ignore character
+ CleanupStack::PopAndDestroy(); // close console
+ }
+
+#endif
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/commonframework/DISTRIBUTION.POLICY
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/commonframework/DISTRIBUTION.POLICY Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,2 @@
+Category G
+OSD: Reference/Test Tools
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/Bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/Bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,35 @@
+/*
+* 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:
+* Component description file
+*
+*/
+
+
+PRJ_MMPFILES
+
+HelloWorld.mmp
+
+PRJ_EXPORTS
+result_creation.flm /epoc32/tools/makefile_templates/tools/result_creation.flm
+result_creation.xml /epoc32/tools/makefile_templates/tools/result_creation.xml
+
+PRJ_EXTENSIONS
+START EXTENSION helloworld.extensiontest run_this
+ OPTION TEST_RESULT "success"
+END
+
+START EXTENSION helloworld.extensiontest skip_this
+ OPTION TEST_RESULT "failure"
+END
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/DISTRIBUTION.POLICY
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/DISTRIBUTION.POLICY Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,2 @@
+Category G
+OSD: Reference/Test Tools
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/HelloWorld.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/HelloWorld.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+*
+*/
+
+
+#include "CommonFramework.h"
+
+// do the example
+LOCAL_C void doExampleL()
+ {
+ _LIT(KHelloWorldText,"Hello world!\n");
+ console->Printf(KHelloWorldText);
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/HelloWorld.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/HelloWorld.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET HelloWorld.exe
+TARGETTYPE exe
+UID 0xE8000047
+VENDORID 0x70000001
+
+SOURCEPATH .
+SOURCE HelloWorld.cpp
+
+USERINCLUDE .
+USERINCLUDE ..\commonframework
+SYSTEMINCLUDE \epoc32\include
+
+LIBRARY euser.lib
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/result_creation.flm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/result_creation.flm Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,23 @@
+# Copyright (c) 2008-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:
+# # Will output whether the test has passed or failed
+#
+#
+
+## Parameters that are expected:
+# TEST_RESULT
+# EPOCROOT
+
+ALL::
+ echo $(TEST_RESULT) > $(EPOCROOT)/epoc32/$(TEST_RESULT).txt
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/result_creation.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/basics/helloworld/result_creation.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF24.BMP
Binary file sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF24.BMP has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF2M.BMP
Binary file sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF2M.BMP has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF32.BMP
Binary file sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF32.BMP has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF3M.BMP
Binary file sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF3M.BMP has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF48.BMP
Binary file sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF48.BMP has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF4M.BMP
Binary file sbsv2/raptor/test/smoke_suite/test_resources/bitmap/aifsrccl/DEF4M.BMP has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bitmap/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,32 @@
+/*
+* 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:
+* Component description file
+*
+*/
+
+
+PRJ_PLATFORMS
+
+PRJ_EXPORTS
+mifconv.xml /epoc32/tools/makefile_templates/test/mifconv.xml
+mifconv.flm /epoc32/tools/makefile_templates/test/mifconv.flm
+
+PRJ_MMPFILES
+bmt.mmp
+
+PRJ_EXTENSIONS
+START EXTENSION test.mifconv
+ OPTION MIFCONV_TEST 1
+END
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/bmt.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bitmap/bmt.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+
+target testbitmap.dll
+targettype DLL
+source fake.cpp
+
+START BITMAP testbitmap.mBm
+HEADER
+
+// Test backslash conversion to / here:
+TARGETPATH \resource\apps
+SOURCEPATH aifsrccl
+SOURCE c8,1 DEF24.BMP DEF2M.BMP DEF32.BMP DEF3M.BMP DEF48.BMP DEF4M.BMP
+END
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/mifconv.flm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bitmap/mifconv.flm Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,2 @@
+# SBSv2 test flm
+# This helps test mifconv for s60
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bitmap/mifconv.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bitmap/mifconv.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/CREATESTATICDLLARM.def
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/CREATESTATICDLLARM.def Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,6 @@
+EXPORTS
+ _ZN10CMessenger11ShowMessageEv @ 1 NONAME
+ _ZN10CMessenger5NewLCER12CConsoleBaseRK7TDesC16 @ 2 NONAME
+ _ZTI10CMessenger @ 3 NONAME ; ##
+ _ZTV10CMessenger @ 4 NONAME ; ##
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/CREATESTATICDLLWINS.def
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/CREATESTATICDLLWINS.def Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,5 @@
+EXPORTS
+; NEW:
+ ?NewLC@CMessenger@@SAPAV1@AAVCConsoleBase@@ABVTDesC16@@@Z @ 1 NONAME ; public: static class CMessenger * __cdecl CMessenger::NewLC(class CConsoleBase &,class TDesC16 const &)
+ ?ShowMessage@CMessenger@@QAEXXZ @ 2 NONAME ; public: void __thiscall CMessenger::ShowMessage(void)
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+* Component description file
+*
+*/
+
+
+PRJ_MMPFILES
+
+variant1/CreateStaticDLL_variant1.mmp
+invariant/CreateStaticDLL_invariant.mmp
+variant2/CreateStaticDLL_variant2.mmp
+variant3/CreateEXE_variant3.mmp
+invariant/CreateStaticLib.mmp
+
+PRJ_EXTENSIONS
+
+START EXTENSION utility.prebuilt
+OPTION PRE_PLATFORM armv5
+OPTION PRE_TYPE urel
+OPTION BINARIES release/dummy.lib release/fake.lib->relfake.lib
+END
+
+START EXTENSION utility.prebuilt
+OPTION PRE_PLATFORM armv5
+OPTION PRE_TYPE udeb
+OPTION BINARIES debug/dummy.lib debug/fake.lib->debfake.lib
+END
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/config/properties/os_properties.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/config/properties/os_properties.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/config/variants/bv_test.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/config/variants/bv_test.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/debug/dummy.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/debug/dummy.lib Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,1 @@
+0
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/debug/fake.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/debug/fake.lib Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,1 @@
+0
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/bv_hrh_relative/relative.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/bv_hrh_relative/relative.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,19 @@
+/*
+* 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:
+*
+*/
+// relative.h
+
+#define RELATIVE_H
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/var1.hrh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/var1.hrh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+
+#include
+
+// benign include relative to this file
+#include
+
+// include from test/bv/var1 defines A_3 and B_100 used in source
+#include
+
+// extra defines that are never used
+#define V_ONE_ABC
+#define V_TWO_DEF
+#define V_THREE_GHI
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/var2.hrh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/var2.hrh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+
+#include
+
+// benign include relative to this file
+#include
+
+// include from test/bv/var2 defines A_3 used in source
+#include
+
+// extra defines that are never used
+#define V_TWO_ABC
+#define V_ONE_DEF
+#define V_THREE_GHI
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/var3.hrh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/hrh/var3.hrh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+
+#include
+
+// benign include relative to this file
+#include
+
+// include from test/bv/var3 defines A_3 used in source
+#include
+
+// extra defines that are never used
+#define V_TWO_ABC
+#define V_ONE_DEF
+#define V_THREE_GHI
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticDLL_invariant.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticDLL_invariant.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,56 @@
+/*
+* 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:
+* CreateStaticDLL.cpp
+* This program creates a dll.
+*
+*/
+
+
+#include "CreateStaticDLL_invariant.h"
+#include
+
+// construct/destruct
+
+EXPORT_C CMessenger* CMessenger::NewLC(CConsoleBase& aConsole, const TDesC& aString)
+ {
+ CMessenger* self=new (ELeave) CMessenger(aConsole);
+ CleanupStack::PushL(self);
+ self->ConstructL(aString);
+ return self;
+ }
+
+CMessenger::~CMessenger() // destruct - virtual, so no export
+ {
+ delete iString;
+ }
+
+EXPORT_C void CMessenger::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()
+
+CMessenger::CMessenger(CConsoleBase& aConsole) // first-phase C++ constructor
+ : iConsole(aConsole)
+ {
+ }
+
+void CMessenger::ConstructL(const TDesC& aString) // second-phase constructor
+ {
+ iString=aString.AllocL(); // copy given string into own descriptor
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticDLL_invariant.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticDLL_invariant.h Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+* CreateStaticDLL.h
+*
+*/
+
+
+
+#include
+
+
+class CMessenger : public CBase
+ {
+public:
+ // Construction
+ IMPORT_C static CMessenger* NewLC(CConsoleBase& aConsole, const TDesC& aString);
+ // Destructor - virtual and class not intended
+ // for derivation, so not exported
+ ~CMessenger();
+ // general functions - exported
+ IMPORT_C void ShowMessage();
+private:
+ // C++ constructor - not exported;
+ // implicitly called from NewLC()
+ CMessenger(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 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticDLL_invariant.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticDLL_invariant.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,51 @@
+/*
+* 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:
+* CreateStaticDLL.mmp
+*
+*/
+
+
+TARGET createstaticdll_invariant.dll
+TARGETTYPE dll
+
+UID 0xE800004C
+CAPABILITY All -TCB
+
+
+VENDORID 0x70000001
+
+SOURCEPATH .
+SOURCE CreateStaticDLL_invariant.cpp
+
+USERINCLUDE .
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/techview
+
+LIBRARY euser.lib
+
+// Dummy resource entry to exercise the resource build in a BV context
+START RESOURCE dummy.rss
+TARGET dummy_inv.rsc
+HEADER
+TARGETPATH /resource/apps
+END
+
+#if defined(WINS)
+ deffile ../CREATESTATICDLLWINS.def
+#else
+ deffile ../CREATESTATICDLLARM.def
+#endif
+nostrictdef
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticLib.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticLib.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+* CreateStaticLib.cpp
+*
+*/
+
+
+void bv_static_lib_function(void)
+{
+ int x = 1;
+ int y = 8;
+ int z = 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticLib.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/CreateStaticLib.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+* CreateStaticLib.mmp
+*
+*/
+
+
+TARGET bv_static_lib.lib
+TARGETTYPE lib
+
+SOURCEPATH .
+SOURCE CreateStaticLib.cpp
+SYSTEMINCLUDE /epoc32/include
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/dummy.rss
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/invariant/dummy.rss Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+// dummy.rss
+
+NAME DUMM
+
+#include
+#include
+#include
+
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TBUF { buf=""; }
+RESOURCE TBUF r_dummy_text { buf="Dummy!"; }
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/listA.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/listA.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,7 @@
+A_1
+A_2
+A_3
+_A_1_
+_A_2_
+_A_3_
+A_LONGER_NAME_THAN_YOU_MIGHT_EXPECT_HERE_MAYBE
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/listB.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/listB.txt Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,11 @@
+B
+B_1
+B_10
+B_100
+B_1000
+B_10000
+B_100000
+B_1000000
+B_10000000
+B_100000000
+B_1000000000
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/release/dummy.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/release/dummy.lib Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,1 @@
+0
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/release/fake.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/release/fake.lib Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,1 @@
+0
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/var1/var1.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/var1/var1.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,26 @@
+/*
+* 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:
+*
+*/
+
+// included from test/bv/var1.hrh defines A_3 and B_100 used in source
+
+#define A_1
+#define A_3
+#define A_5
+#define B_1
+#define B_100
+#define B_10000
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/var2/var2.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/var2/var2.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,31 @@
+/*
+* 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:
+*
+*/
+
+// included from test/bv/var2.hrh defines A_3 used in source
+
+#define A_1
+#define A_2
+#define A_3
+#define A_4
+#define A_5
+#define A_once
+#define A_i
+#define A_caught
+#define A_a
+#define A_fish
+#define A_alive
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/var3/var3.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/var3/var3.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,31 @@
+/*
+* 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:
+*
+*/
+
+// included from test/bv/var3.hrh defines A_3 used in source
+
+#define A_1
+#define A_2
+#define A_3
+#define A_4
+#define A_5
+#define A_once
+#define A_i
+#define A_caught
+#define A_a
+#define A_fish
+#define A_alive
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/CreateStaticDLL_variant1.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/CreateStaticDLL_variant1.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,66 @@
+/*
+* 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:
+* CreateStaticDLL.cpp
+* This program creates a dll.
+*
+*/
+
+
+#include "CreateStaticDLL_variant1.h"
+#include
+
+// construct/destruct
+
+EXPORT_C CMessenger* CMessenger::NewLC(CConsoleBase& aConsole, const TDesC& aString)
+ {
+ CMessenger* self=new (ELeave) CMessenger(aConsole);
+ CleanupStack::PushL(self);
+ self->ConstructL(aString);
+ return self;
+ }
+
+CMessenger::~CMessenger() // destruct - virtual, so no export
+ {
+ delete iString;
+ }
+
+EXPORT_C void CMessenger::ShowMessage()
+ {
+#ifdef A_3
+// use a builtin macro to test a cpp defect
+#ifdef __FILE__
+ _LIT(KFormat1,"A_3 %S\n");
+#endif
+#else
+// use a builtin macro to test a cpp defect
+#ifdef __LINE__
+ _LIT(KFormat1,"not A_3 %S\n");
+#endif
+#endif
+ iConsole.Printf(KFormat1, iString); // notify completion
+ }
+
+// constructor support
+// don't export these, because used only by functions in this DLL, eg our NewLC()
+
+CMessenger::CMessenger(CConsoleBase& aConsole) // first-phase C++ constructor
+ : iConsole(aConsole)
+ {
+ }
+
+void CMessenger::ConstructL(const TDesC& aString) // second-phase constructor
+ {
+ iString=aString.AllocL(); // copy given string into own descriptor
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/CreateStaticDLL_variant1.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/CreateStaticDLL_variant1.h Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+* CreateStaticDLL.h
+*
+*/
+
+
+
+#include
+
+
+class CMessenger : public CBase
+ {
+public:
+ // Construction
+ IMPORT_C static CMessenger* NewLC(CConsoleBase& aConsole, const TDesC& aString);
+ // Destructor - virtual and class not intended
+ // for derivation, so not exported
+ ~CMessenger();
+ // general functions - exported
+ IMPORT_C void ShowMessage();
+private:
+ // C++ constructor - not exported;
+ // implicitly called from NewLC()
+ CMessenger(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 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/CreateStaticDLL_variant1.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/CreateStaticDLL_variant1.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,55 @@
+/*
+* 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:
+* CreateStaticDLL.mmp
+*
+*/
+
+
+TARGET createstaticdll_variant1.dll
+TARGETTYPE dll
+
+UID 0xE800004C
+CAPABILITY All -TCB
+
+
+VENDORID 0x70000001
+
+SOURCEPATH .
+SOURCE CreateStaticDLL_variant1.cpp
+
+USERINCLUDE .
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/techview
+
+LIBRARY euser.lib
+// static libs are always feature invariant
+STATICLIBRARY bv_static_lib
+
+// Dummy resource entry to exercise the resource build in a BV context
+START RESOURCE dummy.rss
+TARGET dummy_var1.rsc
+HEADER
+TARGETPATH /resource/apps
+END
+
+FEATUREVARIANT
+
+#if defined(WINS)
+ deffile ../CREATESTATICDLLWINS.def
+#else
+ deffile ../CREATESTATICDLLARM.def
+#endif
+nostrictdef
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/dummy.rss
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant1/dummy.rss Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+// dummy.rss
+
+NAME DUMM
+
+#include
+#include
+#include
+
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TBUF { buf=""; }
+RESOURCE TBUF r_dummy_text { buf="Dummy!"; }
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/CreateStaticDLL_variant2.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/CreateStaticDLL_variant2.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,60 @@
+/*
+* 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:
+* CreateStaticDLL.cpp
+* This program creates a dll.
+*
+*/
+
+
+#include "CreateStaticDLL_variant2.h"
+#include
+
+// construct/destruct
+
+EXPORT_C CMessenger* CMessenger::NewLC(CConsoleBase& aConsole, const TDesC& aString)
+ {
+ CMessenger* self=new (ELeave) CMessenger(aConsole);
+ CleanupStack::PushL(self);
+ self->ConstructL(aString);
+ return self;
+ }
+
+CMessenger::~CMessenger() // destruct - virtual, so no export
+ {
+ delete iString;
+ }
+
+EXPORT_C void CMessenger::ShowMessage()
+ {
+#ifdef B_100
+ _LIT(KFormat1,"B_100 %S\n");
+#else
+ _LIT(KFormat1,"%S\n");
+#endif
+ iConsole.Printf(KFormat1, iString); // notify completion
+ }
+
+// constructor support
+// don't export these, because used only by functions in this DLL, eg our NewLC()
+
+CMessenger::CMessenger(CConsoleBase& aConsole) // first-phase C++ constructor
+ : iConsole(aConsole)
+ {
+ }
+
+void CMessenger::ConstructL(const TDesC& aString) // second-phase constructor
+ {
+ iString=aString.AllocL(); // copy given string into own descriptor
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/CreateStaticDLL_variant2.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/CreateStaticDLL_variant2.h Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+* CreateStaticDLL.h
+*
+*/
+
+
+
+#include
+
+
+class CMessenger : public CBase
+ {
+public:
+ // Construction
+ IMPORT_C static CMessenger* NewLC(CConsoleBase& aConsole, const TDesC& aString);
+ // Destructor - virtual and class not intended
+ // for derivation, so not exported
+ ~CMessenger();
+ // general functions - exported
+ IMPORT_C void ShowMessage();
+private:
+ // C++ constructor - not exported;
+ // implicitly called from NewLC()
+ CMessenger(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 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/CreateStaticDLL_variant2.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/CreateStaticDLL_variant2.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,53 @@
+/*
+* 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:
+* CreateStaticDLL.mmp
+*
+*/
+
+
+TARGET createstaticdll_variant2.dll
+TARGETTYPE dll
+
+UID 0xE800004C
+CAPABILITY All -TCB
+
+
+VENDORID 0x70000001
+
+SOURCEPATH .
+SOURCE CreateStaticDLL_variant2.cpp
+
+USERINCLUDE .
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/techview
+
+LIBRARY euser.lib
+
+// Dummy resource entry to exercise the resource build in a BV context
+START RESOURCE dummy.rss
+TARGET dummy_var2.rsc
+HEADER
+TARGETPATH /resource/apps
+END
+
+FEATUREVARIANT
+
+#if defined(WINS)
+ deffile ../CREATESTATICDLLWINS.def
+#else
+ deffile ../CREATESTATICDLLARM.def
+#endif
+nostrictdef
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/dummy.rss
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant2/dummy.rss Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+// dummy.rss
+
+NAME DUMM
+
+#include
+#include
+#include
+
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TBUF { buf=""; }
+RESOURCE TBUF r_dummy_text { buf="Dummy!"; }
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/CreateEXE_variant3.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/CreateEXE_variant3.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,64 @@
+/*
+* 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:
+* This program creates an exe.
+*
+*/
+
+
+#include "CreateEXE_variant3.h"
+#include
+
+// construct/destruct
+
+EXPORT_C CMessenger* CMessenger::NewLC(CConsoleBase& aConsole, const TDesC& aString)
+ {
+ CMessenger* self=new (ELeave) CMessenger(aConsole);
+ CleanupStack::PushL(self);
+ self->ConstructL(aString);
+ return self;
+ }
+
+CMessenger::~CMessenger() // destruct - virtual, so no export
+ {
+ delete iString;
+ }
+
+TInt E32Main()
+{
+ return 0;
+}
+
+EXPORT_C void CMessenger::ShowMessage()
+ {
+#ifdef B_100
+ _LIT(KFormat1,"B_100 %S\n");
+#else
+ _LIT(KFormat1,"%S\n");
+#endif
+ iConsole.Printf(KFormat1, iString); // notify completion
+ }
+
+// constructor support
+// don't export these, because used only by functions in this EXE, eg our NewLC()
+
+CMessenger::CMessenger(CConsoleBase& aConsole) // first-phase C++ constructor
+ : iConsole(aConsole)
+ {
+ }
+
+void CMessenger::ConstructL(const TDesC& aString) // second-phase constructor
+ {
+ iString=aString.AllocL(); // copy given string into own descriptor
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/CreateEXE_variant3.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/CreateEXE_variant3.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,42 @@
+/*
+* 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
+
+
+class CMessenger : public CBase
+ {
+public:
+ // Construction
+ IMPORT_C static CMessenger* NewLC(CConsoleBase& aConsole, const TDesC& aString);
+ // Destructor - virtual and class not intended
+ // for derivation, so not exported
+ ~CMessenger();
+ // general functions - exported
+ IMPORT_C void ShowMessage();
+private:
+ // C++ constructor - not exported;
+ // implicitly called from NewLC()
+ CMessenger(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 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/CreateEXE_variant3.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/CreateEXE_variant3.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,52 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET createexe_variant3.exe
+TARGETTYPE exe
+
+UID 0xE800004C
+CAPABILITY All -TCB
+
+
+VENDORID 0x70000001
+
+SOURCEPATH .
+SOURCE CreateEXE_variant3.cpp
+
+USERINCLUDE .
+SYSTEMINCLUDE /epoc32/include
+SYSTEMINCLUDE /epoc32/include/techview
+
+LIBRARY euser.lib
+
+// Dummy resource entry to exercise the resource build in a BV context
+START RESOURCE dummy.rss
+TARGET dummy_var3.rsc
+HEADER
+TARGETPATH /resource/apps
+END
+
+FEATUREVARIANT
+
+#if defined(WINS)
+ deffile ../CREATESTATICDLLWINS.def
+#else
+ deffile ../CREATESTATICDLLARM.def
+#endif
+nostrictdef
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/dummy.rss
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/variant3/dummy.rss Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+// dummy.rss
+
+NAME DUMM
+
+#include
+#include
+#include
+
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TBUF { buf=""; }
+RESOURCE TBUF r_dummy_text { buf="Dummy!"; }
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/with_errors.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/with_errors.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,21 @@
+/*
+* 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:
+*
+*/
+
+// this file has cpp errors
+//
+#error this code is broken
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/with_macros.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/with_macros.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+*
+*/
+
+// this file uses feature variant macros
+//
+#ifdef A_1
+#ifdef B_1000
+int x = 1;
+#endif
+#endif
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/bv/without_macros.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/bv/without_macros.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,21 @@
+/*
+* 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:
+*
+*/
+
+// this file uses no feature variant macros
+//
+int y = 1;
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/checksource/commonframework/CommonFramework.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/checksource/commonframework/CommonFramework.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,64 @@
+/*
+* 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:
+*
+*/
+
+
+
+#ifndef __CommonFramework_H
+#define __CommonFramework_H
+
+#include
+#include
+
+_LIT(KTxtEPOC32EX,"EXAMPLES");
+_LIT(KTxtExampleCode,"Symbian OS Example Code");
+_LIT(KFormatFailed,"failed: leave code=%d");
+_LIT(KTxtOK,"ok");
+_LIT(KTxtPressAnyKey," [press any key]");
+
+// public
+LOCAL_D CConsoleBase* console; // write all your messages to this
+LOCAL_C void doExampleL(); // code this function for the real example
+
+// private
+LOCAL_C void callExampleL(); // initialize with cleanup stack, then do example
+
+GLDEF_C TInt E32Main() // main function called by E32
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+ TRAPD(error,callExampleL()); // more initialization, then do example
+ __ASSERT_ALWAYS(!error,User::Panic(KTxtEPOC32EX,error));
+ delete cleanup; // destroy clean-up stack
+ __UHEAP_MARKEND;
+ return 0; // and return
+ }
+
+LOCAL_C void callExampleL() // initialize and call example code under cleanup stack
+ {
+ console=Console::NewL(KTxtExampleCode,TSize(KConsFullScreen,KConsFullScreen));
+ CleanupStack::PushL(console);
+ TRAPD(error,doExampleL()); // perform example function
+ if (error)
+ console->Printf(KFormatFailed, error);
+ else
+ console->Printf(KTxtOK);
+ console->Printf(KTxtPressAnyKey);
+ console->Getch(); // get and ignore character
+ CleanupStack::PopAndDestroy(); // close console
+ }
+
+#endif
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/checksource/helloworld/Bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/checksource/helloworld/Bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+* Component description file
+*
+*/
+
+
+PRJ_MMPFILES
+
+HelloWorld.mmp
+HelloWorld2.mmp
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/checksource/helloworld/HelloWorld.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/checksource/helloworld/HelloWorld.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,35 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET HelloWorld.exe
+TARGETTYPE exe
+UID 0xE8000047
+VENDORID 0x70000001
+
+SOURCEPATH ..\Source
+SOURCE helloWorld.cpp
+
+USERINCLUDE .
+USERINCLUDE ..\commonframework
+SYSTEMINCLUDE \epoc32\include
+
+LINKEROPTION CW --verbose
+
+LIBRARY euser.lib
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/checksource/helloworld/HelloWorld2.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/checksource/helloworld/HelloWorld2.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+/*
+* 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:
+*
+*/
+
+
+TARGET HelloWorld2.exe
+TARGETTYPE exe
+UID 0xE8000047
+VENDORID 0x70000001
+
+SOURCEPATH ..\source
+SOURCE Helloworld.cpp
+
+USERINCLUDE .
+USERINCLUDE ..\commonframework
+SYSTEMINCLUDE \epoc32\include
+
+LIBRARY euser.lib
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/checksource/source/HelloWorld.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/checksource/source/HelloWorld.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+*
+*/
+
+
+#include "CommonFramework.H"
+
+// do the example
+LOCAL_C void doExampleL()
+ {
+ _LIT(KHelloWorldText,"Hello world!\n");
+ console->Printf(KHelloWorldText);
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/configpathtest/v2/variant2.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/configpathtest/v2/variant2.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/configpathtest/v3/variant3.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/configpathtest/v3/variant3.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/defs/eabi/deftestu.def
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/defs/eabi/deftestu.def Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,1 @@
+EXPORTS
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/defs/group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/defs/group/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+ARMV5 ARMV7
+
+PRJ_MMPFILES
+deftest.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/defs/group/deftest.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/defs/group/deftest.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+
+target deftest
+targettype dll
+
+source test.cpp
+unpaged
+macro __TESTNAME__="deftest"
+
+deffile deftest.def
+uid 0x1000008d 0x100039e5
+VENDORID 0x70000001
+capability all
+unpaged
+epocallowdlldata
\ No newline at end of file
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/defs/group/e32def.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/defs/group/e32def.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,2870 @@
+/*
+* Copyright (c) 1994-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:
+* e32\include\e32def.h
+* NOTE: THIS FILE SHOULD BE ACCEPTABLE TO A C COMPILER
+*
+*/
+
+
+
+
+#ifndef __E32DEF_H__
+#define __E32DEF_H__
+
+/*
+ * __LEAVE_EQUALS_THROW__ requires the compiler to support C++ exceptions
+ */
+#ifndef __SUPPORT_CPP_EXCEPTIONS__
+#undef __LEAVE_EQUALS_THROW__
+#endif
+
+
+
+
+
+#ifdef __PROFILING__
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_START(aBin) RDebug::ProfileStart(aBin)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_END(aBin) RDebug::ProfileEnd(aBin)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_RESET(aNumberOfBins) RDebug::ProfileReset(0,aNumberOfBins)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_DISPLAY(aNumberOfBins) \
+ { TFixedArray result; \
+ RDebug::ProfileResult(result.Begin(), 0, aNumberOfBins); \
+ for (TInt i=0; i= 1200)
+/**
+@publishedAll
+@released
+*/
+#define __NORETURN__ __declspec(noreturn)
+#else
+#define __NORETURN__
+#endif
+/**
+@publishedAll
+@released
+*/
+#define __NORETURN_TERMINATOR()
+/**
+@publishedAll
+@released
+*/
+#define IMPORT_C __declspec(dllexport)
+/**
+@publishedAll
+@released
+*/
+#define EXPORT_C __declspec(dllexport)
+/**
+@publishedAll
+@released
+*/
+#define NONSHARABLE_CLASS(x) class x
+/**
+@publishedAll
+@released
+*/
+#define NONSHARABLE_STRUCT(x) struct x
+/**
+@publishedAll
+@released
+*/
+#define __NO_THROW throw()
+/**
+@publishedAll
+@released
+*/
+#define __THROW(t) throw(t)
+#pragma warning( disable : 4355 ) /* 'this' used in base member initializer list */
+#pragma warning( disable : 4511 ) /* copy constructor could not be generated */
+#pragma warning( disable : 4512 ) /* assignment operator could not be generated */
+#pragma warning( disable : 4514 ) /* unreferenced inline function has been removed */
+#pragma warning( disable : 4699 ) /* Note: Using precompiled header %s */
+#pragma warning( disable : 4710 ) /* function not inlined */
+#pragma warning( disable : 4121 ) /* alignment sensitive to packing */
+#pragma warning( disable : 4273 )
+#pragma warning( disable : 4097 ) /* typedef-name 'identifier1' used as synonym for class-name 'identifier2' */
+#pragma warning( disable : 4291 ) /* 'TAny *CBase::operator new(TUint,TLeave)' : no matching operator delete found; memory will not be freed if initialization throws an exception */
+
+#if _MSC_VER >= 1100
+/**
+@publishedAll
+@released
+*/
+#define TEMPLATE_SPECIALIZATION template<>
+#else
+#define TEMPLATE_SPECIALIZATION
+#endif
+#endif
+
+
+
+#if defined(__CW32__)
+#undef __embedded_cplusplus
+/** @internalTechnology */
+#define __embedded_cplusplus 1
+#define __NO_CLASS_CONSTS__
+#define __NORETURN__
+#define __NORETURN_TERMINATOR()
+#define IMPORT_C __declspec(dllexport)
+#define EXPORT_C __declspec(dllexport)
+#define NONSHARABLE_CLASS(x) class x
+#define NONSHARABLE_STRUCT(x) struct x
+#define __NO_THROW throw()
+#define __THROW(t) throw(t)
+
+#define TEMPLATE_SPECIALIZATION template<>
+/**
+@publishedAll
+@released
+*/
+#define _asm asm
+#ifndef __int64
+#pragma longlong on
+/** @internalTechnology */
+#define __int64 long long
+#endif
+#ifndef __SUPPORT_CPP_EXCEPTIONS__
+#pragma exceptions off /* no support for C++ exception handling */
+#pragma RTTI off /* no support for C++ runtime type information */
+#endif
+#if __MWERKS__ >= 0x3200
+#pragma warning off (10480) /* deleteing void pointer is undefined */
+#pragma warning off (10350) /* N pad byte(s) inserted after data member */
+#endif
+#endif
+
+
+
+#if defined(__GCC32__)
+#define __NO_CLASS_CONSTS__
+#define __NORETURN__ __attribute__ ((noreturn))
+#ifdef __GCCV3__
+#define __NORETURN_TERMINATOR()
+#else
+#define __NORETURN_TERMINATOR() abort()
+#endif
+#define IMPORT_C
+#if !defined __WINS__ && defined _WIN32 /* VC++ Browser Hack */
+#define EXPORT_C
+/** @internalTechnology */
+#define asm(x)
+#else
+#define EXPORT_C __declspec(dllexport)
+#endif
+#define NONSHARABLE_CLASS(x) class x
+#define NONSHARABLE_STRUCT(x) struct x
+#define __NO_THROW
+#define __THROW(t)
+#ifdef __EABI__
+#define TEMPLATE_SPECIALIZATION template<>
+#else
+#define TEMPLATE_SPECIALIZATION
+#endif
+#endif
+
+
+
+#ifdef __GCC32__
+/**
+@publishedAll
+@released
+*/
+#define __DOUBLE_WORDS_SWAPPED__
+#endif
+
+
+
+/** @internalTechnology */
+#define __NO_MUTABLE_KEYWORD
+#if defined(__NO_MUTABLE_KEYWORD)
+/**
+@publishedAll
+@deprecated
+*/
+#define __MUTABLE
+#else
+#define __MUTABLE mutable
+#endif
+
+
+
+/**
+@publishedAll
+@deprecated
+*/
+#define CONST_CAST(type,exp) (const_cast(exp))
+
+/**
+@publishedAll
+@deprecated
+*/
+#define STATIC_CAST(type,exp) (static_cast(exp))
+
+/**
+@publishedAll
+@deprecated
+*/
+#define REINTERPRET_CAST(type,exp) (reinterpret_cast(exp))
+
+#if defined(__NO_MUTABLE_KEYWORD)
+/**
+@publishedAll
+@deprecated
+*/
+#define MUTABLE_CAST(type,exp) (const_cast(exp))
+#else
+#define MUTABLE_CAST(type,exp) (exp)
+#endif
+
+/**
+@publishedAll
+@deprecated
+*/
+#define GLREF_D extern
+/**
+@publishedAll
+@deprecated
+*/
+#define GLDEF_D
+/**
+@publishedAll
+@deprecated
+*/
+#define LOCAL_D static
+/**
+@publishedAll
+@deprecated
+*/
+#define GLREF_C extern
+/**
+@publishedAll
+@deprecated
+*/
+#define GLDEF_C
+/**
+@publishedAll
+@deprecated
+*/
+#define LOCAL_C static
+/**
+@publishedAll
+@deprecated
+*/
+#define FOREVER for(;;)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Symbolic definition for a true value.
+*/
+#define TRUE 1
+
+
+
+
+/**
+@publishedAll
+@released
+
+Symbolic definition for a false value.
+*/
+#define FALSE 0
+#ifndef NULL
+
+
+
+
+/**
+@publishedAll
+@released
+
+Symbolic definition for a NULL value.
+*/
+#define NULL 0
+#endif
+
+
+
+
+#ifndef VA_START
+/**
+@publishedAll
+@released
+
+A macro used by Symbian OS code for handling a variable argument list
+in a function call.
+
+Sets a pointer to point to the first of the variable arguments.
+
+Typical usage:
+
+@code
+Foo(CAbcdef aAbcdef,...)
+ {
+ VA_LIST list;
+ VA_START(list, aAbcdef);
+ // other code
+ }
+@endcode
+
+@param ap A pointer used to hold the address of an argument in
+ the variable argument list. After execution of the code generated
+ by this macro, the pointer points to the first argument in
+ the variable argument list.
+ This symbol is usually declared as a VA_LIST type.
+
+@param pn The argument that immediately precedes the variable argument list.
+
+@see VA_LIST
+@see VA_ARG
+*/
+#define VA_START(ap,pn) ((ap)[0]=(TInt8 *)&pn+((sizeof(pn)+sizeof(TInt)-1)&~(sizeof(TInt)-1)),(void)0)
+#endif
+
+
+
+
+#ifndef VA_ARG
+/**
+@publishedAll
+@released
+
+A macro used by Symbian OS code for handling a variable argument list
+in a function call.
+
+Increments a pointer to a variable argument list to point to the next argument
+in the list. The current argument is assumed to be of a type defined by
+the second parameter to this macro.
+
+Typical usage:
+
+@code
+Foo(CAbcdef aAbcdef,...)
+ {
+ VA_LIST list;
+ VA_START(list, aAbcdef);
+ ...
+ TInt x = VA_ARG(list,TInt);
+ ...
+ const TDesC *pS=VA_ARG(aList,const TDesC*);
+ ...
+ etc
+ }
+@endcode
+
+@param ap A pointer used to hold the address of an argument in
+ the variable argument list. It is assumed to point to the current
+ argument in the variable argument list. After execution of the code
+ generated by this macro, the pointer points to the next argument in
+ the list. This symbol is usually declared as a VA_LIST type.
+
+@param type The type of the current argument.
+ This can be any valid type, for example, TInt, const TDesC*, etc.
+
+@see VA_LIST
+@see VA_START
+*/
+#define VA_ARG(ap,type) ((ap)[0]+=((sizeof(type)+sizeof(TInt)-1)&~(sizeof(TInt)-1)),(*(type *)((ap)[0]-((sizeof(type)+sizeof(TInt)-1)&~(sizeof(TInt)-1)))))
+#endif
+
+
+
+
+#ifndef VA_END
+/**
+@publishedAll
+@released
+
+A macro used by Symbian OS code for handling a variable argument list
+in a function call.
+
+Sets a pointer to zero.
+
+@param ap A pointer used to hold the address of an argument in
+ the variable argument list. After execution of the code generated
+ by this macro, the pointer is reset to 0.
+ This symbol is usually declared as a VA_LIST type.
+
+@see VA_LIST
+@see VA_START
+@see VA_ARG
+*/
+#define VA_END(ap) ((ap)[0]=0,(void)0)
+#endif
+
+
+
+/**
+@publishedAll
+@released
+
+Calculates the offset of member f within class c.
+
+This is used in the TSglQue and TDblQue constructors to set the offset of
+the link object from the start of a list element.
+
+@param c The name of the class.
+@param f The name of the member within the specified class.
+
+@see TSglQue
+@see TDblQue
+*/
+#ifndef _FOFF
+#define _FOFF(c,f) (((TInt)&(((c *)0x1000)->f))-0x1000)
+#endif
+
+
+
+/**
+@internalTechnology
+@released
+*/
+#define _ALIGN_DOWN(x,a) ((x)&~((a)-1))
+/**
+@internalTechnology
+@released
+*/
+#define _ALIGN_UP(x,a) _ALIGN_DOWN((x)+(a)-1, a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Pointer to any type.
+
+TAny* is equivalent to void* in standard C or C++. TAny* is used in preference
+to void* because it is more suggestive of the actual meaning,
+e.g. TAny* foo();.
+
+TAny is not used where it really means "nothing", as in the declaration of
+functions which do not return a value; void is used instead, e.g. void Foo();.
+*/
+typedef void TAny;
+
+
+
+
+/**
+@publishedAll
+@released
+
+8-bit signed integer type, used in Symbian OS to mean an 8-bit
+signed integer, independent of the implementation.
+*/
+typedef signed char TInt8;
+
+
+
+
+/**
+@publishedAll
+@released
+
+8-bit unsigned integer type; used in Symbian OS to mean an 8-bit
+unsigned integer, independent of the implementation.
+*/
+typedef unsigned char TUint8;
+
+
+
+
+/**
+@publishedAll
+@released
+
+16-bit signed integer type, used in Symbian OS to mean a 16-bit
+signed integer, independent of the implementation.
+*/
+typedef short int TInt16;
+
+
+
+
+/**
+@publishedAll
+@released
+
+16-bit unsigned integer type. used in Symbian OS to mean a 16-bit
+unsigned integer, independent of the implementation.
+*/
+typedef unsigned short int TUint16;
+
+
+
+
+/**
+@publishedAll
+@released
+
+32-bit signed integer type, used in Symbian OS to mean a 32-bit
+signed integer, independent of the implementation.
+*/
+typedef long int TInt32;
+
+
+
+
+/**
+@publishedAll
+@released
+
+32-bit unsigned integer type; used in Symbian OS to mean a 32-bit
+unsigned integer, independent of the implementation.
+*/
+typedef unsigned long int TUint32;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Signed integer type of the natural machine word length.
+
+This is as defined by the C++ implementation's int type. In all
+implementations, this is guaranteed to be at least 32 bits.
+
+A TInt should be used in preference to a sized integer (TInt32, TInt16) for
+all general use. Sized integers should only be used when packing is essential.
+C++'s type conversion rules imply that all sized integers smaller than the
+natural machine word are in any case broadened to the natural machine word
+size when passed as function parameters.
+
+A TInt should be used in preference to an unsigned integer (TUint) for all
+general use. Unsigned integers should only be used for flags (which use Boolean
+operations but not arithmetic) and, in very rare cases, for numbers whose
+range exceeds that available from signed integers. Although it is natural
+to attempt to use unsigned integers for quantities which cannot by nature
+be negative, the C++ language does not provide the support necessary to enforce
+the "expected" behaviour in these circumstances, and experience has shown
+that it is better to use signed integers unless there is good reason not to.
+
+@see TUint
+@see TInt32
+@see TInt16
+*/
+typedef signed int TInt;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Unsigned integer type of the natural machine word length.
+
+This is guaranteed to be at least 32 bits in all implementations.
+
+In almost all circumstances, a TInt should be used in preference to a TUint.
+The main exception is in flags bytes.
+
+@see TInt
+*/
+typedef unsigned int TUint;
+
+
+
+
+/**
+@publishedAll
+@released
+
+32-bit floating point number, providing IEEE754 single precision on all Symbian
+OS implementations.
+
+TReal should normally be used in preference to TReal32.
+
+Use of floating-point numbers should generally be avoided unless a natural
+part of the problem specification. Most Symbian OS implementations do not
+have a hardware floating point unit: as a result, their floating-point performance
+is hundreds of times slower than integer performance.
+*/
+typedef float TReal32;
+
+
+
+
+/**
+@publishedAll
+@released
+
+64-bit floating point number, providing IEEE754 double precision on all Symbian
+OS implementations.
+
+Use of floating-point numbers should generally be avoided unless a natural
+part of the problem specification. Most Symbian OS implementations do not
+have a hardware floating point unit: as a result, their floating-point performance
+is hundreds of times slower than integer performance.
+
+This type is identical to TReal.
+
+@see TReal
+*/
+typedef double TReal64;
+
+
+
+
+/**
+@publishedAll
+@released
+
+64-bit floating point number; identical to TReal64.
+
+Use of floating-point numbers should generally be avoided unless a natural
+part of the problem specification. Most Symbian OS implementations do not
+have a hardware floating point unit: as a result, their floating-point performance
+is hundreds of times slower than integer performance.
+
+Most serious floating-point calculations require double-precision. All standard
+math functions (see Math class) take double-precision arguments. Single-precision
+should only be used where space and performance are at a premium, and when
+their limited precision is acceptable.
+
+@see TReal64
+@see Math
+*/
+typedef double TReal;
+
+
+
+
+/**
+@publishedAll
+@released
+
+8-bit unsigned character.
+
+Use instead of C++ built-in char type because it is guaranteed to be unsigned.
+Use instead of TInt8 where the application is really for text rather than
+8-bit arithmetic or binary quantities.
+
+For most purposes, you should use TText rather than TText8. TText is mapped
+onto either TText8 or TText16 depending on whether a non-Unicode or Unicode
+variant is being built. Use TText8 only when you are dealing explicitly with
+8-bit text, regardless of build.
+
+@see TText */
+typedef unsigned char TText8;
+
+
+
+
+/**
+@publishedAll
+@released
+
+16-bit unsigned character.
+
+Use instead of C++ wchar_t type because it is guaranteed to be unsigned. Use
+instead of TInt16 where the application is really for text rather than 8-bit
+arithmetic or binary quantities.
+
+For most purposes, you should use TText rather than TText16. TText is mapped
+onto either TText8 or TText16 depending on whether a non-Unicode or Unicode
+variant is being built. Use TText16 only when you are dealing explicitly with
+16-bit text, regardless of build.
+
+@see TText
+*/
+typedef unsigned short int TText16;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Boolean type which takes the value either ETrue or EFalse.
+
+Although only a single bit would theoretically be necessary to represent a
+Boolean, a machine word is used instead, so that these quantities can be easily
+passed. Also, TBool must map onto int because of C++'s interpretation of
+operands in conditional expressions.
+
+On implementations of Symbian OS in which the compiler supports the ANSI-recommended
+bool type, TBool will be typedef'ed to bool instead of int.
+*/
+typedef int TBool;
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Defines a linear (virtual) address type.
+*/
+typedef TUint32 TLinAddr;
+
+/**
+@internalTechnology
+
+A sorted list of all the code segments in ROM that contain an Exception Descriptor.
+
+*/
+typedef struct TRomExceptionSearchTable
+ {
+ /**
+ The number of entries in the following table.
+ */
+ TInt32 iNumEntries;
+
+ /**
+ Address of the code segment of each TRomImageHeader that has an Exception Descriptor.
+ */
+ TLinAddr iEntries[1];
+ } TRomExceptionSearchTable;
+
+/**
+@internalComponent
+*/
+typedef struct TExceptionDescriptor
+ {
+ TLinAddr iExIdxBase;
+ TLinAddr iExIdxLimit;
+ TLinAddr iROSegmentBase;
+ TLinAddr iROSegmentLimit;
+ } TExceptionDescriptor;
+
+
+#if defined(__GCC32__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit signed integer type.
+*/
+typedef long long Int64;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit unsigned integer type.
+*/
+typedef unsigned long long Uint64;
+
+
+
+
+/**
+@publishedAll
+@released
+*/
+#define I64LIT(x) x##LL
+/**
+@publishedAll
+@released
+*/
+#define UI64LIT(x) x##ULL
+
+#elif defined(__VC32__)
+typedef __int64 Int64;
+typedef unsigned __int64 Uint64;
+#define I64LIT(x) (__int64)##x
+#define UI64LIT(x) (unsigned __int64)##x
+
+#elif defined(__CW32__)
+#pragma longlong on
+typedef long long Int64;
+typedef unsigned long long Uint64;
+#define I64LIT(x) x##LL
+#define UI64LIT(x) x##ULL
+#endif
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit signed integer type.
+
+NOTE: For those migrating from versions of Symbian OS before 8.1b (i.e. 8.1a, 7.0s etc)
+TInt64 is now defined as a built-in type instead of as a class type. This means
+that the member functions of the old TInt64 class are no longer exported
+from EUSER.LIB, and represents a compatibility break.
+
+To ease migration of source code, a number of macros are provided. Similar
+macros have also been defined in Symbian OS versions 7.0s and 8.1a, but
+implemented in terms of the old TInt64 class. This is important for code that
+is common to : one or both of these Symbian OS versions, and to 8.1b and
+subsequent versions.
+
+The following list shows the new macros and the functions that they replace.
+It also shows some alternative techniques.
+In this list: x, v and r are declared as TInt64, c is declared as TInt, High
+and Low are declared as TUint.
+
+@code
+OLD USAGE REPLACEMENT
+
+TInt64(High,Low); MAKE_TINT64(High,Low);
+x.Set(High,Low); MAKE_TINT64(High,Low);
+x.Low(); I64LOW(x);
+x.High(); I64HIGH(x);
+x.GetTInt(); I64INT(x);
+x.GetTReal(); I64REAL(x);
+x.Lsr(c); I64LSR(x,c);
+x.Mul10(); x*=10;
+x.MulTop(a); I64MULTOP(x,a);
+x.DivMod(v,r); r=x%v; x/=v;
+@endcode
+*/
+typedef Int64 TInt64;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit unsigned integer type.
+*/
+typedef Uint64 TUint64;
+
+
+
+
+/** @internalComponent */
+#define _MAKE_TINT64_ZX(x) ((TInt64)((TUint32)(x)))
+
+/** @internalComponent */
+#define _MAKE_TUINT64_ZX(x) ((TUint64)((TUint32)(x)))
+
+
+
+
+/**
+@publishedAll
+@released
+*/
+#define MAKE_TINT64(h,l) ( (_MAKE_TINT64_ZX(h)<<32) | _MAKE_TINT64_ZX(l) )
+
+
+
+
+/**
+@publishedAll
+@released
+*/
+#define MAKE_TUINT64(h,l) ( (_MAKE_TUINT64_ZX(h)<<32) | _MAKE_TUINT64_ZX(l) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to access the high order 32 bits of a 64 bit number.
+*/
+#define I64HIGH(x) ( (TUint32)((x)>>32) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to access the low order 32 bits of a 64 bit number.
+*/
+#define I64LOW(x) ( (TUint32)(x) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to cast a 64 bit value as an signed integer.
+*/
+#define I64INT(x) ( (TInt)(x) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to cast a 64 bit value as a TReal type.
+*/
+#define I64REAL(x) ( (TReal)(x) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to logically shift a 64 bit integer right.
+*/
+#define I64LSR(x, shift) ( *reinterpret_cast(&(x)) >>= (shift) )
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to multiply a 64 bit integer by 10.
+*/
+#define I64MUL10(x) ( (x) *= 10 )
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to divide a 64 bit integer by another and find the remainder.
+*/
+#define I64DIVMOD(x, divisor, remainder) ( ((remainder) = (x) % (divisor), (x) /= (divisor)) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to cast a double to a 64 bit integer.
+*/
+#define I64DOUBLECAST(x) ( static_cast(x) )
+
+
+
+
+/**
+@publishedAll
+@deprecated Use _LIT8 instead.
+
+8-bit literal.
+
+The macro defines an explicit 8-bit constant literal which is suitable
+for non-Unicode literal text, regardless of the build.
+
+@see _L
+@see _LIT8
+@see _LIT
+*/
+#define _L8(a) (TPtrC8((const TText8 *)(a)))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines an explicit 8-bit string which is suitable when non-Unicode text
+is required, regardless of the build.
+
+This is used by the deprecated literal descriptor _L8.
+*/
+#define _S8(a) ((const TText8 *)a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a constant literal descriptor of type TLitC8 with
+the specified name and text.
+
+The 8-bit build variant is generated for both non-Unicode and Unicode builds.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT
+*/
+#define _LIT8(name,s) const static TLitC8 name={sizeof(s)-1,s}
+
+
+
+
+/**
+@publishedAll
+@deprecated Use _LIT16 instead.
+
+16-bit literal.
+
+The macro defines an explicit 16-bit constant literal which is suitable
+for Unicode literal text, regardless of the build.
+
+@see _L
+@see _LIT16
+@see _LIT
+*/
+#define _L16(a) (TPtrC16((const TText16 *)L ## a))
+
+
+
+/**
+@publishedAll
+@released
+
+Defines an explicit 16-bit string which is suitable when Unicode text
+is required, regardless of the build.
+
+This is used by the deprecated literal descriptor _L16.
+*/
+#define _S16(a) ((const TText16 *)L ## a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a constant literal descriptor of type TLitC16 with
+the specified name and text.
+
+The 16-bit build variant is generated for both non-Unicode and Unicode builds.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT
+*/
+#define _LIT16(name,s) const static TLitC16 name={sizeof(L##s)/2-1,L##s}
+
+
+
+
+#if defined(_UNICODE) && !defined(__KERNEL_MODE__)
+/**
+@publishedAll
+@released
+
+Build independent general text character.
+
+In non-Unicode builds, this is mapped to TText8. In Unicode builds, this is
+mapped to TText16. Use the classes with explicit width only when you wish
+the width to be independent of the build variant.
+
+Use this class rather than TChar for general use.
+*/
+typedef TText16 TText;
+
+
+
+/**
+@publishedAll
+@deprecated Use _LIT instead.
+
+Build independent literal.
+
+The macro defines either an 8-bit constant literal (for non-Unicode text),
+or a 16-bit constant literal (for Unicode text) depending on the build.
+
+@see _LIT
+@see _L16
+@see _L8
+*/
+#define _L(a) (TPtrC((const TText *)L ## a))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines either an 8-bit string (for non-Unicode text),
+or a 16-bit string (for Unicode text) depending on the build.
+
+This is used by the deprecated build independent literal _L.
+*/
+#define _S(a) ((const TText *)L ## a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a build independent constant literal descriptor of type TLitC
+with the specified name and text.
+
+An 8-bit build variant is generated for a non-Unicode build;
+A 16-bit build variant is generated for a Unicode build.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT16
+@see _LIT8
+*/
+#define _LIT(name,s) const static TLitC name={sizeof(L##s)/2-1,L##s}
+
+
+
+
+#else
+/**
+@publishedAll
+@released
+
+Build independent general text character.
+
+In non-Unicode builds, this is mapped to TText8. In Unicode builds, this is
+mapped to TText16. Use the classes with explicit width only when you wish
+the width to be independent of the build variant.
+
+Use this class rather than TChar for general use.
+*/
+typedef TText8 TText;
+
+
+
+/**
+@publishedAll
+@released
+
+@deprecated Use _LIT instead.
+
+Build independent literal.
+
+The macro defines either an 8-bit constant literal (for non-Unicode text),
+or a 16-bit constant literal (for Unicode text) depending on the build.
+
+@see _LIT
+@see _L16
+@see _L8
+*/
+#define _L(a) (TPtrC((const TText *)(a)))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines either an 8-bit string (for non-Unicode text),
+or a 16-bit string (for Unicode text) depending on the build.
+
+This is used by the deprecated build independent literal _L.
+*/
+#define _S(a) ((const TText *)a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a build independent constant literal descriptor of type TLitC
+with the specified name and text.
+
+An 8-bit build variant is generated for a non-Unicode build;
+A 16-bit build variant is generated for a Unicode build.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT16
+@see _LIT8
+*/
+#define _LIT(name,s) const static TLitC name={sizeof(s)-1,s}
+#endif
+
+
+
+
+#ifndef __VA_LIST_defined
+/**
+@publishedAll
+@released
+
+Defines a 'C' style array of pointers to TInt8 types.
+
+The type is most commonly used by code that needs to deal with a variable
+number of arguments passed to a function.
+
+@see TInt8
+*/
+typedef TInt8 *VA_LIST[1];
+#endif
+
+/**
+@publishedAll
+@released
+
+Asserts that a condition is true.
+
+Code is generated for all builds.
+
+This macro is used as a C++ statement to assert the truth of some condition,
+and to take appropriate action if the condition is false. Unlike __ASSERT_DEBUG
+it is defined in both release and debug builds.
+
+The most common use for this macro is to check that the external environment of
+a function or class is behaving as expected; for example, that parameters
+passed to a function are credible, or that called functions are behaving as
+expected; the macro is commonly placed at the beginning of a function.
+
+The effect of the macro is to generate code which tests
+the conditional expression c; if the expression is false, then
+function p is called. In the majority of cases, the function p is one that
+raises a panic.
+
+Note that the macro definition is, in effect, equivalent to:
+
+@code
+if !(c)p;
+@endcode
+
+@param c a conditional expression which results in true or false.
+@param p a function which is called if the conditional expression c is false.
+
+@see __ASSERT_DEBUG
+*/
+#define __ASSERT_ALWAYS(c,p) (void)((c)||(p,0))
+
+
+
+#ifdef __WINS__
+#ifdef __CW32__
+/**
+@internalAll
+@released
+*/
+#define __BREAKPOINT() \
+ { \
+ __asm { byte 0xcc }; \
+ }
+#else // !__CW32__
+/**
+@internalAll
+@released
+*/
+#define __BREAKPOINT() \
+ { \
+ __asm { int 3 }; \
+ }
+#endif //__CW32__
+#else
+/**
+@internalAll
+@released
+*/
+#define __BREAKPOINT()
+#endif
+
+#if defined(_DEBUG)
+
+/**
+@internalComponent
+@deprecated
+*/
+#define __ASSERT_DEBUG_MB(aCond,aPanicNo) (void)((aCond)||(PanicMB(aPanicNo,_L(#aPanicNo),_L(#aCond)),0))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Asserts that a condition is true.
+
+Code is generated for debug builds only.
+
+This macro is used as a C++ statement to assert the truth of some condition,
+and to take appropriate action if the condition is false. It is used in
+the same way as __ASSERT_ALWAYS, except that it is only defined for debug builds.
+
+The macro may be used to insert extra checks at various points in source code
+as desired; the code will only be generated in debug builds and not in release
+builds.
+
+@param c A conditional expression which results in true or false.
+@param p A function which is called if the conditional expression c is false.
+
+@see __ASSERT_ALWAYS
+*/
+#define __ASSERT_DEBUG(c,p) (void)((c)||(p,0))
+
+
+
+/**
+@internalAll
+@removed
+*/
+#define __DECLARE_NAME(t)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Calls the function for testing object invariance.
+
+Classes can define a standard member function __DbgTestInvariant(),
+which checks that the object is in a valid state, and panics if it is not.
+In debug builds, this macro simply expands to call that function. For details on how
+to define __DbgTestInvariant(), and an example of its use, see __DECLARE_TEST.
+
+The macro is typically invoked at the beginning of all the member functions of
+the class. For non-const functions (those which can change the object’s state),
+you can ensure that the object has been left in a stable state by invoking
+the macro at the end of the function.
+
+In release builds, no code is generated for the macro.
+*/
+#define __TEST_INVARIANT __DbgTestInvariant()
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of checking the current thread's heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __UHEAP_MARKEND
+@see __UHEAP_MARKENDC
+*/
+#define __UHEAP_MARK User::__DbgMarkStart(FALSE)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+current thread's heap is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+The macro assumes that:
+
+1. the heap being checked is a user heap
+
+2. checking is being done for the number of allocated cells at the current nested
+ level; i.e. that aCountAll is set to false
+
+3. the line number is the line number of this source code statement.
+
+4. the file name is the full path name of the file containing this source statement
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECK
+*/
+#define __UHEAP_CHECK(aCount) User::__DbgMarkCheck(FALSE,FALSE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the current thread's heap
+is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The total number of heap cells expected to be allocated.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECKALL
+*/
+#define __UHEAP_CHECKALL(aCount) User::__DbgMarkCheck(FALSE,TRUE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKEND User::__DbgMarkEnd(FALSE,0)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKENDC(aCount) User::__DbgMarkEnd(FALSE,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on the next call to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aCount Determines when the allocation will fail.
+ Heap allocation fails on attempt number aCount - later
+ allocations will succeed.
+ For example, if aCount is 3, then heap allocation fails
+ on the 3rd attempt, but all subsequent allocations succeed.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_FAILNEXT(aCount) User::__DbgSetAllocFail(FALSE,RAllocator::EFailNext,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_SETFAIL(aType,aValue) User::__DbgSetAllocFail(FALSE,aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_RESET User::__DbgSetAllocFail(FALSE,RAllocator::ENone,1)
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+*/
+#define __UHEAP_TOTAL_RESET User::__DbgSetAllocFail(FALSE,RAllocator::EReset,1)
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the start of Kernel heap checking.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __KHEAP_MARKEND
+@see __KHEAP_MARKENDC
+*/
+#define __KHEAP_MARK User::__DbgMarkStart(TRUE)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the number of allocated cells at the current nested level of the
+Kernel heap is the same as the specified value. This macro is defined only
+for debug builds. Checking the Kernel heap is only useful when developing
+Kernel side code such as device drivers and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECK
+*/
+#define __KHEAP_CHECK(aCount) User::__DbgMarkCheck(TRUE,FALSE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the total number of allocated cells on the Kernel heap is the same
+as the specified value.
+
+It is only useful when developing Kernel side code such as device drivers
+and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aCount The total number of heap cells expected to be allocated
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECKALL
+*/
+#define __KHEAP_CHECKALL(aCount) User::__DbgMarkCheck(TRUE,TRUE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects zero heap cells to
+remain allocated at the current nest level.
+
+This macro is defined only for debug builds. Checking the Kernel heap is only
+useful when developing Kernel side code such as device drivers and media drivers.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKEND User::__DbgMarkEnd(TRUE,0)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects aCount heap cells
+to remain allocated at the current nest level.
+
+This macro is defined only for debug builds.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKENDC(aCount) User::__DbgMarkEnd(TRUE,aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure. The failure occurs on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_FAILNEXT(aCount) User::__DbgSetAllocFail(TRUE,RAllocator::EFailNext,aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_SETFAIL(aType,aValue) User::__DbgSetAllocFail(TRUE,aType,aValue)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated Kernel heap allocation failure.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_RESET User::__DbgSetAllocFail(TRUE,RAllocator::ENone,1)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated kernel heap allocation failure.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+Checking the kernel heap is only useful when developing kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+*/
+#define __KHEAP_TOTAL_RESET User::__DbgSetAllocFail(TRUE,RAllocator::EReset,1)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of heap checking for the specific heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+@param aHeap A pointer to the specific RHeap
+
+@see RHeap
+@see RAllocator::__DbgMarkStart()
+@see __RHEAP_MARKEND
+@see __RHEAP_MARKENDC
+*/
+#define __RHEAP_MARK(aHeap) (aHeap)->__DbgMarkStart()
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+specified heap is the same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECK(aHeap,aCount) (aHeap)->__DbgMarkCheck(FALSE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the specified heap is the
+same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The total number of heap cells expected to be allocated.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECKALL(aHeap,aCount) (aHeap)->__DbgMarkCheck(TRUE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKEND(aHeap) (aHeap)->__DbgMarkEnd(0)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKENDC(aHeap,aCount) (aHeap)->__DbgMarkEnd(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on the next call to new or any of the functions which allocate
+memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_FAILNEXT(aHeap,aCount) (aHeap)->__DbgSetAllocFail(RAllocator::EFailNext,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_SETFAIL(aHeap,aType,aValue) (aHeap)->__DbgSetAllocFail(aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_RESET(aHeap) (aHeap)->__DbgSetAllocFail(RAllocator::ENone,1)
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_TOTAL_RESET(aHeap) (aHeap)->__DbgSetAllocFail(RAllocator::EReset,1)
+
+
+
+
+#if defined (__WINS__)
+
+/**
+@publishedAll
+@released
+*/
+#define __DEBUGGER() {if (User::JustInTime()) __BREAKPOINT()}
+
+#else
+#define __DEBUGGER()
+#endif
+
+
+#if defined(__DLL__)
+/**
+@publishedAll
+@released
+
+Declares a function for testing object invariance.
+
+For complex classes, it is often useful to provide a function that can
+be called to check that the object is in a valid state.
+The __DECLARE_TEST macro supplies a standard prototype for such a function
+named __DbgTestInvariant(). A companion macro __TEST_INVARIANT is provided
+to call the function.
+
+For DLLs, as opposed to EXEs, __DbgTestInvariant() is exported,
+i.e. the macro expands to:
+
+@code
+public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+@endcode
+
+This macro should placed as the last item in a class declaration (as it
+switches back to public access). Note that a terminating semi-colon must be used.
+
+You should define the __DbgTestInvariant() function to check that the object
+is in a healthy state. If it finds an error, it should call User::Invariant(),
+which will cause a panic.
+
+If a class is derived from a base class, then the base class __DbgTestInvariant()
+should be called first, and then any further checking done.
+
+The second function declared, __DbgTest(), is intended to allow test code a way
+of directly accessing non-public members of a class. The function is
+implemented by any test code that requires it, rather than in the class’s own
+source code. The function is therefore not exported.
+
+__DECLARE_TEST is defined for both debug and release builds. This point is
+particularly important for DLLs, as otherwise the exported interfaces would
+differ between the build versions, giving potential binary compatibility
+problems. To avoid using memory unnecessarily in release builds, you can,
+however, use preprocessor directives to define the code within
+__DbgTestInvariant() only for debug builds. __DbgTestInvariant() is never
+called in release builds.
+
+@see __TEST_INVARIANT
+*/
+#define __DECLARE_TEST public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#else
+#define __DECLARE_TEST public: void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#endif
+
+#else
+#define __ASSERT_DEBUG(c,p)
+#define __DECLARE_NAME(t)
+#define __TEST_INVARIANT
+#if defined(__DLL__)
+#define __DECLARE_TEST public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#else
+#define __DECLARE_TEST public: void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#endif
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of checking the current thread's heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __UHEAP_MARKEND
+@see __UHEAP_MARKENDC
+*/
+#define __UHEAP_MARK
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+current thread's heap is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+The macro assumes that:
+
+1. the heap being checked is a user heap
+
+2. checking is being done for the number of allocated cells at the current nested
+ level; i.e. that aCountAll is set to false
+
+3. the line number is the line number of this source code statement.
+
+4. the file name is the full path name of the file containing this source statement
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECK
+*/
+#define __UHEAP_CHECK(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the current thread's heap
+is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The total number of heap cells expected to be allocated.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECKALL
+*/
+#define __UHEAP_CHECKALL(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKEND
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKENDC(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on the next call to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aCount Determines when the allocation will fail.
+ Heap allocation fails on attempt number aCount - later
+ allocations will succeed.
+ For example, if aCount is 3, then heap allocation fails
+ on the 3rd attempt, but all subsequent allocations succeed.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_FAILNEXT(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_SETFAIL(aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_RESET
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+*/
+#define __UHEAP_TOTAL_RESET
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the start of Kernel heap checking.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __KHEAP_MARKEND
+@see __KHEAP_MARKENDC
+*/
+#define __KHEAP_MARK
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the number of allocated cells at the current nested level of the
+Kernel heap is the same as the specified value. This macro is defined only
+for debug builds. Checking the Kernel heap is only useful when developing
+Kernel side code such as device drivers and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECK
+*/
+#define __KHEAP_CHECK(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the total number of allocated cells on the Kernel heap is the same
+as the specified value.
+
+It is only useful when developing Kernel side code such as device drivers
+and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aCount The total number of heap cells expected to be allocated
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECKALL
+*/
+#define __KHEAP_CHECKALL(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects zero heap cells to
+remain allocated at the current nest level.
+
+This macro is defined only for debug builds. Checking the Kernel heap is only
+useful when developing Kernel side code such as device drivers and media drivers.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKEND
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects aCount heap cells
+to remain allocated at the current nest level.
+
+This macro is defined only for debug builds.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKENDC(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure. The failure occurs on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_FAILNEXT(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_SETFAIL(aType,aValue)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated Kernel heap allocation failure.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_RESET
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated kernel heap allocation failure.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+Checking the kernel heap is only useful when developing kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+*/
+#define __KHEAP_TOTAL_RESET
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of heap checking for the specific heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+@param aHeap A pointer to the specific RHeap
+
+@see RHeap
+@see RAllocator::__DbgMarkStart()
+@see __RHEAP_MARKEND
+@see __RHEAP_MARKENDC
+*/
+#define __RHEAP_MARK(aHeap)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+specified heap is the same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECK(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the specified heap is the
+same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The total number of heap cells expected to be allocated.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECKALL(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKEND(aHeap)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKENDC(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on the next call to new or any of the functions which allocate
+memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_FAILNEXT(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_SETFAIL(aHeap,aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_RESET(aHeap)
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_TOTAL_RESET(aHeap)
+
+
+
+#define __DEBUGGER()
+#endif
+
+#if defined (__WINS__)
+/** @internalTechnology */
+#define __EMULATOR_IMAGE_HEADER2(aUid0,aUid1,aUid2,aPriority,aCap0,aCap1,aSid,aVid,aVer,aFlags) TEmulatorImageHeader uid={{aUid0,aUid1,aUid2},aPriority,{aSid,aVid,{aCap0,aCap1}},0,0,aVer,aFlags};
+/** @internalTechnology */
+#define __EMULATOR_IMAGE_HEADER(aUid0,aUid1,aUid2,aPriority,aCap,aFlags) TEmulatorImageHeader uid={{aUid0,aUid1,aUid2},aPriority,{aUid2,0,{aCap,0}},0,0,0x00010000u,aFlags};
+#else
+#define __EMULATOR_IMAGE_HEADER2(aUid0,aUid1,aUid2,aPriority,aCap0,aCap1,aSid,aVer,aFlags)
+#define __EMULATOR_IMAGE_HEADER(aUid0,aUid1,aUid2,aPriority,aCap,aFlags)
+#endif
+
+#if defined(__OPT__)
+/**
+@internalComponent
+@deprecated
+*/
+#define __ASSERT_OPT(c,p) (void)((c)||(p,0))
+#else
+#define __ASSERT_OPT(c,p)
+#endif
+
+#if defined(_UNICODE)
+#if !defined(UNICODE)
+/**
+@publishedAll
+@deprecated
+*/
+#define UNICODE
+#endif
+#endif
+
+#if defined(_DEBUG)
+/**
+@internalComponent
+@deprecated
+*/
+#define __DECLARE_TEST_DEBUG __DECLARE_TEST
+#else
+#define __DECLARE_TEST_DEBUG
+#endif
+
+
+
+
+#if !defined(ASSERT)
+/**
+@publishedAll
+@released
+
+Generates _ASSERT_DEBUG code that calls User::Invariant() if the specified
+condition is not true.
+
+@param x A conditional expression which results in true or false.
+*/
+#define ASSERT(x) __ASSERT_DEBUG(x,User::Invariant())
+#endif
+
+
+
+
+#ifndef __VALUE_IN_REGS__
+/**
+@publishedPartner
+@released
+*/
+#define __VALUE_IN_REGS__
+#endif
+
+
+
+
+#if defined(_DEBUG)
+/**
+@publishedAll
+@released
+*/
+#define __DEBUG_ONLY(x) x
+#else
+#define __DEBUG_ONLY(x)
+#endif
+
+
+
+
+#ifdef __KERNEL_MODE__
+
+/** @internalComponent */
+#define KIMPORT_C IMPORT_C
+
+/** @internalComponent */
+#define KEXPORT_C EXPORT_C
+
+/** @internalComponent */
+#define UIMPORT_C
+
+/** @internalComponent */
+#define UEXPORT_C
+#else
+#define KIMPORT_C
+#define KEXPORT_C
+#define UIMPORT_C IMPORT_C
+#define UEXPORT_C EXPORT_C
+#endif
+
+
+
+
+/**
+@publishedAll
+@released
+
+Asserts that a condition is true at compilation time.
+
+@param x Condition to assert
+*/
+#define __ASSERT_COMPILE(x) void __compile_time_assert(int __check[(x)?1:-1])
+
+#ifdef __REMOVE_PLATSEC_DIAGNOSTICS__
+/**
+@publishedPartner
+@released
+*/
+#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+#define __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+#endif /*__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__*/
+#endif /*__REMOVE_PLATSEC_DIAGNOSTICS__*/
+
+/**
+@internalComponent
+*/
+static const char* const KSuppressPlatSecDiagnosticMagicValue = (const char*)1;
+
+#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+/**
+@internalComponent
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) #l
+/**
+@internalComponent
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(f,l) f "(" __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) ")"
+/**
+@publishedPartner
+@released
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(__FILE__,__LINE__)
+
+/**
+@publishedPartner
+@released
+
+A macro that should be used to enclose a platform security diagnostic
+'C' style string that can be passed to a capability checking function such
+as RThread::HasCapability() and Kern::CurrentThreadHasCapability().
+
+The content of the string is emitted if the capability test finds that
+the capability is not present.
+
+The macro provides a convenient mechanism that allows the strings to
+be removed from future versions of Symbian OS.
+
+For example:
+
+@code
+if(!Kern::CurrentThreadHasCapability(ECapabilityPowerMgmt,__PLATSEC_DIAGNOSTIC_STRING("Checked by Hal function EDisplayHalSetState")))
+ {
+ return KErrPermissionDenied;
+ }
+@endcode
+
+In this example, the string:
+
+@code
+Checked by Hal function EDisplayHalSetState
+@endcode
+
+is emitted if the calling process does not have the ECapabilityPowerMgmt capability.
+
+@param s A C-style string.
+
+@see RProcess::HasCapability()
+@see RThread::HasCapability()
+@see RMessagePtr2::HasCapability()
+@see User::CreatorHasCapability()
+*/
+#define __PLATSEC_DIAGNOSTIC_STRING(s) s
+
+/**
+When this value is used in Platform Security APIs as the value for the aDiagnosticText
+argument, these APIs will not emit any form of diagnostic message.
+@publishedPartner
+@released
+*/
+// Note this value is the same as KSuppressPlatSecDiagnosticMagicValue
+// and used to be a set by it but that caused an error with GCCE compiler
+static const char* const KSuppressPlatSecDiagnostic = (const char*)1;
+
+#else /* __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ */
+
+#define __PLATSEC_DIAGNOSTIC_STRING(s) NULL
+
+#ifndef __KERNEL_MODE__
+#ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
+/**
+When this value is used in Platform Security APIs as the value for the aDiagnostic
+argument, these APIs will not emit any form of diagnostic message.
+@publishedPartner
+@released
+*/
+#define KSuppressPlatSecDiagnostic NULL, NULL
+
+#else /* __REMOVE_PLATSEC_DIAGNOSTICS__ */
+
+/**
+When this value is used in Platform Security APIs as the value for the aDiagnostic
+argument, these APIs will not emit any form of diagnostic message.
+@publishedPartner
+@release
+*/
+#define KSuppressPlatSecDiagnostic NULL
+
+#endif /* !__REMOVE_PLATSEC_DIAGNOSTICS__ */
+#endif /* !__KERNEL_MODE__ */
+#endif /* !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ */
+
+/*
+ * MSVC operator new and operator new[] header guards
+ */
+#ifdef __PLACEMENT_NEW
+#define __PLACEMENT_NEW_INLINE
+#endif /* __PLACEMENT_NEW */
+
+#if defined(__VC32__) && (_MSC_VER < 1300)
+#define __PLACEMENT_VEC_NEW_INLINE
+#endif /* version of MSVC that doesn't support overloaded operator new[] */
+
+/**
+Calling convention qualifier for functions involving floating point
+variables passed or returned by value.
+@publishedAll
+@released
+*/
+#ifndef __SOFTFP
+#define __SOFTFP
+#endif /* __SOFTFP */
+
+#endif /* __E32DEF_H__ */
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/defs/group/test.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/defs/group/test.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+#include "e32def.h" // intentional include
+
+char test[]=__TESTNAME__;
+
+class fred {
+ public:
+ int something;
+ int aMethod(void);
+};
+
+TInt E32Main()
+{
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/depcrunch/dep2.rpp.d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/depcrunch/dep2.rpp.d Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,11 @@
+EPOCROOT/epoc32/build/resource/c_98665870f0168225/dependentresource_/dependentresource_dependentresource_sc.rpp: testresource1.mbg \
+ /home/tnmurphy/x/build/sbsv2/raptor/test/smoke_suite/test_resources/resource/dependentresource.rss \
+ /home/tnmurphy/x/test-epocroot/epoc32/include/variant/Symbian_OS.hrh \
+ /home/tnmurphy/x/test-epocroot/epoc32/include/testresource_badef.rh \
+ /home/tnmurphy/x/test-epocroot/epoc32/include/e32capability.h testresource2.rsg \
+ /home/tnmurphy/x/build/sbsv2/raptor/test/smoke_suite/test_resources/resource/inc/../inc/testresource.rh \
+ testresource3.rsg /home/tnmurphy/x/build/sbsv2/raptor/test/smoke_suite/test_resources/resource/inc/../inc/testresource.hrh \
+ /home/tnmurphy/x/build/sbsv2/raptor/test/smoke_suite/test_resources/resource/testresource.rls \
+ testresource4.mbg testresource5.rsg \
+ testresource6.mbg testresource7.rsg
+ testresource8.mbg testresource9.rsg
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+*
+*/
+
+PRJ_EXPORTS
+inc/dependency.h
+inc/dependency.rh
+
+PRJ_PLATFORMS
+ARMV5 WINSCW TOOLS2
+
+PRJ_MMPFILES
+dependencies.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/dependencies.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/dependencies.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+*
+* Test component that can build as a basic EXE for both OS and tools platforms
+*
+*/
+
+TARGET dependency
+TARGETTYPE exe
+UID 0x100039ce 0x00000001
+SYSTEMINCLUDE /epoc32/include
+SOURCE main.cpp
+SOURCE dependency.cpp
+
+#ifndef TOOLS2
+SYSTEMINCLUDE /epoc32/include/techview
+
+START RESOURCE main.rss
+HEADER
+TARGETPATH /resource/apps
+END
+
+START RESOURCE dependency.rss
+HEADER
+TARGETPATH /resource/apps
+END
+
+LIBRARY euser.lib
+#endif
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/inc/dependency.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/inc/dependency.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,18 @@
+/*
+* 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:
+*
+*/
+
+#define DEPENDENCY_VALUE 1
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/inc/dependency.rh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/inc/dependency.rh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,18 @@
+/*
+* 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:
+*
+*/
+
+#define DEPENDENCY_TEXT SomeText
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/main.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+*
+*/
+
+#ifndef __TOOLS2__
+#include
+TInt E32Main()
+#else
+int main(void)
+#endif
+ {
+ return 0;
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/main.rss
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/main.rss Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+*
+*/
+
+NAME MAIN
+
+#include
+#include
+#include
+
+RESOURCE TBUF { buf=""; }
+RESOURCE TBUF r_somestaticresource { buf="text"; }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency1.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency1.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,20 @@
+/*
+* 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
+
+int SomeVariable = DEPENDENCY_VALUE;
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency1.rss
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency1.rss Wed Jun 23 17:27:59 2010 +0800
@@ -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:
+*
+*/
+
+NAME DEPE
+
+#include
+#include
+#include
+#include
+
+RESOURCE TBUF { buf=""; }
+RESOURCE TBUF r_someresource { buf="DEPENDENCY_TEXT"; }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency2.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency2.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,18 @@
+/*
+* 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:
+*
+*/
+
+int SomeVariable = 0;
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency2.rss
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/dependencies/src/dependency2.rss Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,25 @@
+/*
+* 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:
+*
+*/
+
+NAME DEPE
+
+#include
+#include
+#include
+
+RESOURCE TBUF { buf=""; }
+RESOURCE TBUF r_someresource { buf="SomeText"; }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,26 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+ARMV5 WINSCW
+
+PRJ_MMPFILES
+emulated_drives_export.mmp
+
+PRJ_EXPORTS
+emulated_drives_export1.mbm z:/private/10001234/policy/emulated_drives_export1.mbm
+emulated_drives_export2.mbm c:/private/10001234/policy/emulated_drives_export2.mbm
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,24 @@
+/*
+* 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:
+*
+*/
+#include "e32def.h" // intentional include
+
+char test[]="Simple test";
+
+TInt E32Main()
+{
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,24 @@
+/*
+* 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:
+*
+*/
+
+TARGET test
+TARGETTYPE EXE
+UID 0x100039ce 0x00000001
+LIBRARY euser.dso
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+SOURCE emulated_drives_export.cpp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export1.mbm
Binary file sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export1.mbm has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export2.mbm
Binary file sbsv2/raptor/test/smoke_suite/test_resources/emulated_drives_export/emulated_drives_export2.mbm has changed
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/filter_test/testfilter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/filter_test/testfilter.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,38 @@
+#
+# Copyright (c) 2008-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:
+# Filter class to test customised filtering
+# Will output a simple message when certain input text is found
+#
+
+import sys
+import filter_interface
+
+
+class TestFilter(filter_interface.Filter):
+
+ def open(self, raptor_instance):
+ return True
+
+
+ def write(self, text):
+ """Write a message to stdout to say the test passed"""
+
+ if "The make-engine exited successfully. " in text:
+ sys.stdout.write("\nTest Passed!\n")
+ return True
+
+
+ def close(self):
+ return True
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/filter_test/testfilter_exceptions.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/filter_test/testfilter_exceptions.py Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,44 @@
+#
+# Copyright (c) 2008-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:
+# Filter class for testing the filter framework by creatnig an exception
+#
+
+import os
+import sys
+import raptor
+import filter_interface
+
+class FilterTestCrash(filter_interface.Filter):
+
+ def open(self, raptor_instance):
+ """Open a log file for the various I/O methods to write to."""
+ self.counter = 0
+ return True
+
+ def write(self, text):
+ """Write text into the log file"""
+
+ self.counter += 1
+ if self.counter == 10:
+ raise Exception("A test exception in a filter was generated on line %d of the log\n" % self.counter)
+
+
+ return True
+
+ def summary(self):
+ return False
+
+ def close(self):
+ return False
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,23 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+gnumakefile ../gnumakefile/master.mak
+gnumakefile slave.mak
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/master.mak
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/master.mak Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,42 @@
+# Envoke CED to install correct CommDB
+#
+
+do_nothing :
+ rem do_nothing
+
+ #
+ # The targets invoked by abld
+
+
+MAKMAKE :
+ echo MASTER.MAK MAKMAKE > master_makmake_$(PLATFORM)_$(CFG).txt
+
+RESOURCE :
+ echo MASTER.MAK RESOURCE > master_resource_$(PLATFORM)_$(CFG).txt
+
+SAVESPACE : BLD
+
+BLD :
+ echo MASTER.MAK BLD > master_bld_$(PLATFORM)_$(CFG).txt
+
+FREEZE :
+ echo MASTER.MAK FREEZE > master_freeze_$(PLATFORM)_$(CFG).txt
+
+LIB :
+ echo MASTER.MAK LIB > master_lib_$(PLATFORM)_$(CFG).txt
+
+CLEANLIB : do_nothing
+
+FINAL :
+ echo MASTER.MAK FINAL > master_final_$(PLATFORM)_$(CFG).txt
+
+CLEAN :
+ rm -f *.txt
+
+RELEASABLES :
+ @echo $(DIRECTORY)/master_makmake_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/master_resource_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/master_bld_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/master_lib_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/master_final_$(PLATFORM)_$(CFG).txt
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/simple.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/simple.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,29 @@
+/*
+* 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:
+*
+*/
+
+TARGET test
+TARGETTYPE EXE
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+SOURCE test.cpp
+MACRO TEST_MACRO_THAT_DOES_NOTHING
+EPOCSTACKSIZE 8192
+EPOCHEAPSIZE 0x5000 65535
+EPOCPROCESSPRIORITY low
+capability TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/slave.mak
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/slave.mak Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,42 @@
+# Envoke CED to install correct CommDB
+#
+
+do_nothing :
+ rem do_nothing
+
+ #
+ # The targets invoked by abld
+
+
+MAKMAKE :
+ echo SLAVE.MAK MAKMAKE > slave_makmake_$(PLATFORM)_$(CFG).txt
+
+RESOURCE :
+ echo SLAVE.MAK RESOURCE > slave_resource_$(PLATFORM)_$(CFG).txt
+
+SAVESPACE : BLD
+
+BLD :
+ echo SLAVE.MAK BLD > slave_bld_$(PLATFORM)_$(CFG).txt
+
+FREEZE :
+ echo SLAVE.MAK FREEZE > slave_freeze_$(PLATFORM)_$(CFG).txt
+
+LIB :
+ echo SLAVE.MAK LIB > slave_lib_$(PLATFORM)_$(CFG).txt
+
+CLEANLIB : do_nothing
+
+FINAL :
+ echo SLAVE.MAK FINAL >> slave_final_$(PLATFORM)_$(CFG).txt
+
+CLEAN :
+ rm -f *.txt
+
+RELEASABLES :
+ @echo $(DIRECTORY)/slave_makmake_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/slave_resource_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/slave_bld_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/slave_lib_$(PLATFORM)_$(CFG).txt
+ @echo $(DIRECTORY)/slave_final_$(PLATFORM)_$(CFG).txt
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/test.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/gnumakefile/test.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,24 @@
+/*
+* 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:
+*
+*/
+#include "e32def.h" // intentional include
+
+char test[]="Simple test";
+
+TInt E32Main()
+{
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/inc/macrotests.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/inc/macrotests.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,35 @@
+/*
+* 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:
+*
+*/
+/* Different platforms (e.g. tools2 and the rest) can use
+ this to test that their FLMs
+ support the MACRO keyword and that they support
+ complex macros with quotes and parentheses.
+
+ Make your mmp include macrotest.mmh to declare the appropriate macros
+*/
+
+
+#if !defined(MACRO_ADDED_FOR_TESTING)
+#error Expected MACRO "MACRO_ADDED_FOR_TESTING" from the MMP but it is not defined
+#endif
+
+#define MULTIPLYBY100(x) x##00
+
+#if COMPLEXMACRO != 100
+#error Expected MACRO "##COMPLEXMACRO=MULTUPLYBY100(1)" from the MMP but it is not defined
+#endif
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/inc/macrotests.mmh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/inc/macrotests.mmh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,21 @@
+/*
+* 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:
+*
+*/
+/* For testing the MACRO keyword and for testing complex macros with parentheses etc.
+ use with macrotests.h */
+
+MACRO MACRO_ADDED_FOR_TESTING COMPLEXMACRO=MULTIPLYBY100(1)
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/keepgoing/groups.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/keepgoing/groups.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/logexamples/filter_component.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/logexamples/filter_component.log Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,42 @@
+
+
+email error #1
+email error #2
+
+txt warning #1
+txt warning #2
+
+email warning #1
+email warning #2
+
+
+/epoc32/data/email_1
+/epoc32/data/email_2
+
+
+
+/epoc32/data/txt_1
+/epoc32/data/txt_2
+
+
+
++ make_txt
+txt was made fine
+
+
+
+
++ make_email
+email was made fine
+
+
+
+
+
+
+ fb email
+
+
+
+
+
\ No newline at end of file
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/logexamples/what_component_repeated.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/logexamples/what_component_repeated.log Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,15 @@
+
+/epoc32/data/something
+
+
+
+
+
+/epoc32/release/armv5/something
+
+
+
+
+
+/epoc32/data/something_else
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/long/paths/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/long/paths/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+ARMV5
+
+PRJ_MMPFILES
+deftest.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/long/paths/deftest.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/long/paths/deftest.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,79 @@
+/*
+* 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:
+*
+*/
+
+target deftest
+targettype dll
+
+source test.cpp
+source test01.cpp
+source test02.cpp
+source test03.cpp
+source test04.cpp
+source test05.cpp
+source test06.cpp
+source test07.cpp
+source test08.cpp
+source test09.cpp
+source test10.cpp
+source test11.cpp
+source test12.cpp
+source test13.cpp
+source test14.cpp
+source test15.cpp
+source test16.cpp
+source test17.cpp
+source test18.cpp
+source test19.cpp
+source test20.cpp
+source test21.cpp
+source test22.cpp
+source test23.cpp
+source test24.cpp
+source test25.cpp
+source test26.cpp
+source test27.cpp
+source test28.cpp
+source test29.cpp
+source test30.cpp
+source test31.cpp
+source test32.cpp
+source test33.cpp
+source test34.cpp
+source test35.cpp
+source test36.cpp
+source test37.cpp
+source test38.cpp
+source test39.cpp
+source test40.cpp
+source test41.cpp
+source test42.cpp
+source test43.cpp
+source test44.cpp
+source test45.cpp
+source test46.cpp
+source test47.cpp
+source test48.cpp
+source test49.cpp
+unpaged
+macro __TESTNAME__="deftest"
+
+deffile deftest.def
+uid 0x1000008d 0x100039e5
+VENDORID 0x70000001
+capability all
+unpaged
+epocallowdlldata
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/long/paths/deftestu.def
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/long/paths/deftestu.def Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,1 @@
+EXPORTS
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/long/paths/e32def.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/long/paths/e32def.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,2870 @@
+/*
+* Copyright (c) 1994-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:
+* e32\include\e32def.h
+* NOTE: THIS FILE SHOULD BE ACCEPTABLE TO A C COMPILER
+*
+*/
+
+
+
+
+#ifndef __E32DEF_H__
+#define __E32DEF_H__
+
+/*
+ * __LEAVE_EQUALS_THROW__ requires the compiler to support C++ exceptions
+ */
+#ifndef __SUPPORT_CPP_EXCEPTIONS__
+#undef __LEAVE_EQUALS_THROW__
+#endif
+
+
+
+
+
+#ifdef __PROFILING__
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_START(aBin) RDebug::ProfileStart(aBin)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_END(aBin) RDebug::ProfileEnd(aBin)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_RESET(aNumberOfBins) RDebug::ProfileReset(0,aNumberOfBins)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_DISPLAY(aNumberOfBins) \
+ { TFixedArray result; \
+ RDebug::ProfileResult(result.Begin(), 0, aNumberOfBins); \
+ for (TInt i=0; i= 1200)
+/**
+@publishedAll
+@released
+*/
+#define __NORETURN__ __declspec(noreturn)
+#else
+#define __NORETURN__
+#endif
+/**
+@publishedAll
+@released
+*/
+#define __NORETURN_TERMINATOR()
+/**
+@publishedAll
+@released
+*/
+#define IMPORT_C __declspec(dllexport)
+/**
+@publishedAll
+@released
+*/
+#define EXPORT_C __declspec(dllexport)
+/**
+@publishedAll
+@released
+*/
+#define NONSHARABLE_CLASS(x) class x
+/**
+@publishedAll
+@released
+*/
+#define NONSHARABLE_STRUCT(x) struct x
+/**
+@publishedAll
+@released
+*/
+#define __NO_THROW throw()
+/**
+@publishedAll
+@released
+*/
+#define __THROW(t) throw(t)
+#pragma warning( disable : 4355 ) /* 'this' used in base member initializer list */
+#pragma warning( disable : 4511 ) /* copy constructor could not be generated */
+#pragma warning( disable : 4512 ) /* assignment operator could not be generated */
+#pragma warning( disable : 4514 ) /* unreferenced inline function has been removed */
+#pragma warning( disable : 4699 ) /* Note: Using precompiled header %s */
+#pragma warning( disable : 4710 ) /* function not inlined */
+#pragma warning( disable : 4121 ) /* alignment sensitive to packing */
+#pragma warning( disable : 4273 )
+#pragma warning( disable : 4097 ) /* typedef-name 'identifier1' used as synonym for class-name 'identifier2' */
+#pragma warning( disable : 4291 ) /* 'TAny *CBase::operator new(TUint,TLeave)' : no matching operator delete found; memory will not be freed if initialization throws an exception */
+
+#if _MSC_VER >= 1100
+/**
+@publishedAll
+@released
+*/
+#define TEMPLATE_SPECIALIZATION template<>
+#else
+#define TEMPLATE_SPECIALIZATION
+#endif
+#endif
+
+
+
+#if defined(__CW32__)
+#undef __embedded_cplusplus
+/** @internalTechnology */
+#define __embedded_cplusplus 1
+#define __NO_CLASS_CONSTS__
+#define __NORETURN__
+#define __NORETURN_TERMINATOR()
+#define IMPORT_C __declspec(dllexport)
+#define EXPORT_C __declspec(dllexport)
+#define NONSHARABLE_CLASS(x) class x
+#define NONSHARABLE_STRUCT(x) struct x
+#define __NO_THROW throw()
+#define __THROW(t) throw(t)
+
+#define TEMPLATE_SPECIALIZATION template<>
+/**
+@publishedAll
+@released
+*/
+#define _asm asm
+#ifndef __int64
+#pragma longlong on
+/** @internalTechnology */
+#define __int64 long long
+#endif
+#ifndef __SUPPORT_CPP_EXCEPTIONS__
+#pragma exceptions off /* no support for C++ exception handling */
+#pragma RTTI off /* no support for C++ runtime type information */
+#endif
+#if __MWERKS__ >= 0x3200
+#pragma warning off (10480) /* deleteing void pointer is undefined */
+#pragma warning off (10350) /* N pad byte(s) inserted after data member */
+#endif
+#endif
+
+
+
+#if defined(__GCC32__)
+#define __NO_CLASS_CONSTS__
+#define __NORETURN__ __attribute__ ((noreturn))
+#ifdef __GCCV3__
+#define __NORETURN_TERMINATOR()
+#else
+#define __NORETURN_TERMINATOR() abort()
+#endif
+#define IMPORT_C
+#if !defined __WINS__ && defined _WIN32 /* VC++ Browser Hack */
+#define EXPORT_C
+/** @internalTechnology */
+#define asm(x)
+#else
+#define EXPORT_C __declspec(dllexport)
+#endif
+#define NONSHARABLE_CLASS(x) class x
+#define NONSHARABLE_STRUCT(x) struct x
+#define __NO_THROW
+#define __THROW(t)
+#ifdef __EABI__
+#define TEMPLATE_SPECIALIZATION template<>
+#else
+#define TEMPLATE_SPECIALIZATION
+#endif
+#endif
+
+
+
+#ifdef __GCC32__
+/**
+@publishedAll
+@released
+*/
+#define __DOUBLE_WORDS_SWAPPED__
+#endif
+
+
+
+/** @internalTechnology */
+#define __NO_MUTABLE_KEYWORD
+#if defined(__NO_MUTABLE_KEYWORD)
+/**
+@publishedAll
+@deprecated
+*/
+#define __MUTABLE
+#else
+#define __MUTABLE mutable
+#endif
+
+
+
+/**
+@publishedAll
+@deprecated
+*/
+#define CONST_CAST(type,exp) (const_cast(exp))
+
+/**
+@publishedAll
+@deprecated
+*/
+#define STATIC_CAST(type,exp) (static_cast(exp))
+
+/**
+@publishedAll
+@deprecated
+*/
+#define REINTERPRET_CAST(type,exp) (reinterpret_cast(exp))
+
+#if defined(__NO_MUTABLE_KEYWORD)
+/**
+@publishedAll
+@deprecated
+*/
+#define MUTABLE_CAST(type,exp) (const_cast(exp))
+#else
+#define MUTABLE_CAST(type,exp) (exp)
+#endif
+
+/**
+@publishedAll
+@deprecated
+*/
+#define GLREF_D extern
+/**
+@publishedAll
+@deprecated
+*/
+#define GLDEF_D
+/**
+@publishedAll
+@deprecated
+*/
+#define LOCAL_D static
+/**
+@publishedAll
+@deprecated
+*/
+#define GLREF_C extern
+/**
+@publishedAll
+@deprecated
+*/
+#define GLDEF_C
+/**
+@publishedAll
+@deprecated
+*/
+#define LOCAL_C static
+/**
+@publishedAll
+@deprecated
+*/
+#define FOREVER for(;;)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Symbolic definition for a true value.
+*/
+#define TRUE 1
+
+
+
+
+/**
+@publishedAll
+@released
+
+Symbolic definition for a false value.
+*/
+#define FALSE 0
+#ifndef NULL
+
+
+
+
+/**
+@publishedAll
+@released
+
+Symbolic definition for a NULL value.
+*/
+#define NULL 0
+#endif
+
+
+
+
+#ifndef VA_START
+/**
+@publishedAll
+@released
+
+A macro used by Symbian OS code for handling a variable argument list
+in a function call.
+
+Sets a pointer to point to the first of the variable arguments.
+
+Typical usage:
+
+@code
+Foo(CAbcdef aAbcdef,...)
+ {
+ VA_LIST list;
+ VA_START(list, aAbcdef);
+ // other code
+ }
+@endcode
+
+@param ap A pointer used to hold the address of an argument in
+ the variable argument list. After execution of the code generated
+ by this macro, the pointer points to the first argument in
+ the variable argument list.
+ This symbol is usually declared as a VA_LIST type.
+
+@param pn The argument that immediately precedes the variable argument list.
+
+@see VA_LIST
+@see VA_ARG
+*/
+#define VA_START(ap,pn) ((ap)[0]=(TInt8 *)&pn+((sizeof(pn)+sizeof(TInt)-1)&~(sizeof(TInt)-1)),(void)0)
+#endif
+
+
+
+
+#ifndef VA_ARG
+/**
+@publishedAll
+@released
+
+A macro used by Symbian OS code for handling a variable argument list
+in a function call.
+
+Increments a pointer to a variable argument list to point to the next argument
+in the list. The current argument is assumed to be of a type defined by
+the second parameter to this macro.
+
+Typical usage:
+
+@code
+Foo(CAbcdef aAbcdef,...)
+ {
+ VA_LIST list;
+ VA_START(list, aAbcdef);
+ ...
+ TInt x = VA_ARG(list,TInt);
+ ...
+ const TDesC *pS=VA_ARG(aList,const TDesC*);
+ ...
+ etc
+ }
+@endcode
+
+@param ap A pointer used to hold the address of an argument in
+ the variable argument list. It is assumed to point to the current
+ argument in the variable argument list. After execution of the code
+ generated by this macro, the pointer points to the next argument in
+ the list. This symbol is usually declared as a VA_LIST type.
+
+@param type The type of the current argument.
+ This can be any valid type, for example, TInt, const TDesC*, etc.
+
+@see VA_LIST
+@see VA_START
+*/
+#define VA_ARG(ap,type) ((ap)[0]+=((sizeof(type)+sizeof(TInt)-1)&~(sizeof(TInt)-1)),(*(type *)((ap)[0]-((sizeof(type)+sizeof(TInt)-1)&~(sizeof(TInt)-1)))))
+#endif
+
+
+
+
+#ifndef VA_END
+/**
+@publishedAll
+@released
+
+A macro used by Symbian OS code for handling a variable argument list
+in a function call.
+
+Sets a pointer to zero.
+
+@param ap A pointer used to hold the address of an argument in
+ the variable argument list. After execution of the code generated
+ by this macro, the pointer is reset to 0.
+ This symbol is usually declared as a VA_LIST type.
+
+@see VA_LIST
+@see VA_START
+@see VA_ARG
+*/
+#define VA_END(ap) ((ap)[0]=0,(void)0)
+#endif
+
+
+
+/**
+@publishedAll
+@released
+
+Calculates the offset of member f within class c.
+
+This is used in the TSglQue and TDblQue constructors to set the offset of
+the link object from the start of a list element.
+
+@param c The name of the class.
+@param f The name of the member within the specified class.
+
+@see TSglQue
+@see TDblQue
+*/
+#ifndef _FOFF
+#define _FOFF(c,f) (((TInt)&(((c *)0x1000)->f))-0x1000)
+#endif
+
+
+
+/**
+@internalTechnology
+@released
+*/
+#define _ALIGN_DOWN(x,a) ((x)&~((a)-1))
+/**
+@internalTechnology
+@released
+*/
+#define _ALIGN_UP(x,a) _ALIGN_DOWN((x)+(a)-1, a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Pointer to any type.
+
+TAny* is equivalent to void* in standard C or C++. TAny* is used in preference
+to void* because it is more suggestive of the actual meaning,
+e.g. TAny* foo();.
+
+TAny is not used where it really means "nothing", as in the declaration of
+functions which do not return a value; void is used instead, e.g. void Foo();.
+*/
+typedef void TAny;
+
+
+
+
+/**
+@publishedAll
+@released
+
+8-bit signed integer type, used in Symbian OS to mean an 8-bit
+signed integer, independent of the implementation.
+*/
+typedef signed char TInt8;
+
+
+
+
+/**
+@publishedAll
+@released
+
+8-bit unsigned integer type; used in Symbian OS to mean an 8-bit
+unsigned integer, independent of the implementation.
+*/
+typedef unsigned char TUint8;
+
+
+
+
+/**
+@publishedAll
+@released
+
+16-bit signed integer type, used in Symbian OS to mean a 16-bit
+signed integer, independent of the implementation.
+*/
+typedef short int TInt16;
+
+
+
+
+/**
+@publishedAll
+@released
+
+16-bit unsigned integer type. used in Symbian OS to mean a 16-bit
+unsigned integer, independent of the implementation.
+*/
+typedef unsigned short int TUint16;
+
+
+
+
+/**
+@publishedAll
+@released
+
+32-bit signed integer type, used in Symbian OS to mean a 32-bit
+signed integer, independent of the implementation.
+*/
+typedef long int TInt32;
+
+
+
+
+/**
+@publishedAll
+@released
+
+32-bit unsigned integer type; used in Symbian OS to mean a 32-bit
+unsigned integer, independent of the implementation.
+*/
+typedef unsigned long int TUint32;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Signed integer type of the natural machine word length.
+
+This is as defined by the C++ implementation's int type. In all
+implementations, this is guaranteed to be at least 32 bits.
+
+A TInt should be used in preference to a sized integer (TInt32, TInt16) for
+all general use. Sized integers should only be used when packing is essential.
+C++'s type conversion rules imply that all sized integers smaller than the
+natural machine word are in any case broadened to the natural machine word
+size when passed as function parameters.
+
+A TInt should be used in preference to an unsigned integer (TUint) for all
+general use. Unsigned integers should only be used for flags (which use Boolean
+operations but not arithmetic) and, in very rare cases, for numbers whose
+range exceeds that available from signed integers. Although it is natural
+to attempt to use unsigned integers for quantities which cannot by nature
+be negative, the C++ language does not provide the support necessary to enforce
+the "expected" behaviour in these circumstances, and experience has shown
+that it is better to use signed integers unless there is good reason not to.
+
+@see TUint
+@see TInt32
+@see TInt16
+*/
+typedef signed int TInt;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Unsigned integer type of the natural machine word length.
+
+This is guaranteed to be at least 32 bits in all implementations.
+
+In almost all circumstances, a TInt should be used in preference to a TUint.
+The main exception is in flags bytes.
+
+@see TInt
+*/
+typedef unsigned int TUint;
+
+
+
+
+/**
+@publishedAll
+@released
+
+32-bit floating point number, providing IEEE754 single precision on all Symbian
+OS implementations.
+
+TReal should normally be used in preference to TReal32.
+
+Use of floating-point numbers should generally be avoided unless a natural
+part of the problem specification. Most Symbian OS implementations do not
+have a hardware floating point unit: as a result, their floating-point performance
+is hundreds of times slower than integer performance.
+*/
+typedef float TReal32;
+
+
+
+
+/**
+@publishedAll
+@released
+
+64-bit floating point number, providing IEEE754 double precision on all Symbian
+OS implementations.
+
+Use of floating-point numbers should generally be avoided unless a natural
+part of the problem specification. Most Symbian OS implementations do not
+have a hardware floating point unit: as a result, their floating-point performance
+is hundreds of times slower than integer performance.
+
+This type is identical to TReal.
+
+@see TReal
+*/
+typedef double TReal64;
+
+
+
+
+/**
+@publishedAll
+@released
+
+64-bit floating point number; identical to TReal64.
+
+Use of floating-point numbers should generally be avoided unless a natural
+part of the problem specification. Most Symbian OS implementations do not
+have a hardware floating point unit: as a result, their floating-point performance
+is hundreds of times slower than integer performance.
+
+Most serious floating-point calculations require double-precision. All standard
+math functions (see Math class) take double-precision arguments. Single-precision
+should only be used where space and performance are at a premium, and when
+their limited precision is acceptable.
+
+@see TReal64
+@see Math
+*/
+typedef double TReal;
+
+
+
+
+/**
+@publishedAll
+@released
+
+8-bit unsigned character.
+
+Use instead of C++ built-in char type because it is guaranteed to be unsigned.
+Use instead of TInt8 where the application is really for text rather than
+8-bit arithmetic or binary quantities.
+
+For most purposes, you should use TText rather than TText8. TText is mapped
+onto either TText8 or TText16 depending on whether a non-Unicode or Unicode
+variant is being built. Use TText8 only when you are dealing explicitly with
+8-bit text, regardless of build.
+
+@see TText */
+typedef unsigned char TText8;
+
+
+
+
+/**
+@publishedAll
+@released
+
+16-bit unsigned character.
+
+Use instead of C++ wchar_t type because it is guaranteed to be unsigned. Use
+instead of TInt16 where the application is really for text rather than 8-bit
+arithmetic or binary quantities.
+
+For most purposes, you should use TText rather than TText16. TText is mapped
+onto either TText8 or TText16 depending on whether a non-Unicode or Unicode
+variant is being built. Use TText16 only when you are dealing explicitly with
+16-bit text, regardless of build.
+
+@see TText
+*/
+typedef unsigned short int TText16;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Boolean type which takes the value either ETrue or EFalse.
+
+Although only a single bit would theoretically be necessary to represent a
+Boolean, a machine word is used instead, so that these quantities can be easily
+passed. Also, TBool must map onto int because of C++'s interpretation of
+operands in conditional expressions.
+
+On implementations of Symbian OS in which the compiler supports the ANSI-recommended
+bool type, TBool will be typedef'ed to bool instead of int.
+*/
+typedef int TBool;
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Defines a linear (virtual) address type.
+*/
+typedef TUint32 TLinAddr;
+
+/**
+@internalTechnology
+
+A sorted list of all the code segments in ROM that contain an Exception Descriptor.
+
+*/
+typedef struct TRomExceptionSearchTable
+ {
+ /**
+ The number of entries in the following table.
+ */
+ TInt32 iNumEntries;
+
+ /**
+ Address of the code segment of each TRomImageHeader that has an Exception Descriptor.
+ */
+ TLinAddr iEntries[1];
+ } TRomExceptionSearchTable;
+
+/**
+@internalComponent
+*/
+typedef struct TExceptionDescriptor
+ {
+ TLinAddr iExIdxBase;
+ TLinAddr iExIdxLimit;
+ TLinAddr iROSegmentBase;
+ TLinAddr iROSegmentLimit;
+ } TExceptionDescriptor;
+
+
+#if defined(__GCC32__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit signed integer type.
+*/
+typedef long long Int64;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit unsigned integer type.
+*/
+typedef unsigned long long Uint64;
+
+
+
+
+/**
+@publishedAll
+@released
+*/
+#define I64LIT(x) x##LL
+/**
+@publishedAll
+@released
+*/
+#define UI64LIT(x) x##ULL
+
+#elif defined(__VC32__)
+typedef __int64 Int64;
+typedef unsigned __int64 Uint64;
+#define I64LIT(x) (__int64)##x
+#define UI64LIT(x) (unsigned __int64)##x
+
+#elif defined(__CW32__)
+#pragma longlong on
+typedef long long Int64;
+typedef unsigned long long Uint64;
+#define I64LIT(x) x##LL
+#define UI64LIT(x) x##ULL
+#endif
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit signed integer type.
+
+NOTE: For those migrating from versions of Symbian OS before 8.1b (i.e. 8.1a, 7.0s etc)
+TInt64 is now defined as a built-in type instead of as a class type. This means
+that the member functions of the old TInt64 class are no longer exported
+from EUSER.LIB, and represents a compatibility break.
+
+To ease migration of source code, a number of macros are provided. Similar
+macros have also been defined in Symbian OS versions 7.0s and 8.1a, but
+implemented in terms of the old TInt64 class. This is important for code that
+is common to : one or both of these Symbian OS versions, and to 8.1b and
+subsequent versions.
+
+The following list shows the new macros and the functions that they replace.
+It also shows some alternative techniques.
+In this list: x, v and r are declared as TInt64, c is declared as TInt, High
+and Low are declared as TUint.
+
+@code
+OLD USAGE REPLACEMENT
+
+TInt64(High,Low); MAKE_TINT64(High,Low);
+x.Set(High,Low); MAKE_TINT64(High,Low);
+x.Low(); I64LOW(x);
+x.High(); I64HIGH(x);
+x.GetTInt(); I64INT(x);
+x.GetTReal(); I64REAL(x);
+x.Lsr(c); I64LSR(x,c);
+x.Mul10(); x*=10;
+x.MulTop(a); I64MULTOP(x,a);
+x.DivMod(v,r); r=x%v; x/=v;
+@endcode
+*/
+typedef Int64 TInt64;
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines a 64-bit unsigned integer type.
+*/
+typedef Uint64 TUint64;
+
+
+
+
+/** @internalComponent */
+#define _MAKE_TINT64_ZX(x) ((TInt64)((TUint32)(x)))
+
+/** @internalComponent */
+#define _MAKE_TUINT64_ZX(x) ((TUint64)((TUint32)(x)))
+
+
+
+
+/**
+@publishedAll
+@released
+*/
+#define MAKE_TINT64(h,l) ( (_MAKE_TINT64_ZX(h)<<32) | _MAKE_TINT64_ZX(l) )
+
+
+
+
+/**
+@publishedAll
+@released
+*/
+#define MAKE_TUINT64(h,l) ( (_MAKE_TUINT64_ZX(h)<<32) | _MAKE_TUINT64_ZX(l) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to access the high order 32 bits of a 64 bit number.
+*/
+#define I64HIGH(x) ( (TUint32)((x)>>32) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to access the low order 32 bits of a 64 bit number.
+*/
+#define I64LOW(x) ( (TUint32)(x) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to cast a 64 bit value as an signed integer.
+*/
+#define I64INT(x) ( (TInt)(x) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to cast a 64 bit value as a TReal type.
+*/
+#define I64REAL(x) ( (TReal)(x) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to logically shift a 64 bit integer right.
+*/
+#define I64LSR(x, shift) ( *reinterpret_cast(&(x)) >>= (shift) )
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to multiply a 64 bit integer by 10.
+*/
+#define I64MUL10(x) ( (x) *= 10 )
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to divide a 64 bit integer by another and find the remainder.
+*/
+#define I64DIVMOD(x, divisor, remainder) ( ((remainder) = (x) % (divisor), (x) /= (divisor)) )
+
+
+
+
+/**
+@publishedAll
+@released
+
+Generates code to cast a double to a 64 bit integer.
+*/
+#define I64DOUBLECAST(x) ( static_cast(x) )
+
+
+
+
+/**
+@publishedAll
+@deprecated Use _LIT8 instead.
+
+8-bit literal.
+
+The macro defines an explicit 8-bit constant literal which is suitable
+for non-Unicode literal text, regardless of the build.
+
+@see _L
+@see _LIT8
+@see _LIT
+*/
+#define _L8(a) (TPtrC8((const TText8 *)(a)))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines an explicit 8-bit string which is suitable when non-Unicode text
+is required, regardless of the build.
+
+This is used by the deprecated literal descriptor _L8.
+*/
+#define _S8(a) ((const TText8 *)a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a constant literal descriptor of type TLitC8 with
+the specified name and text.
+
+The 8-bit build variant is generated for both non-Unicode and Unicode builds.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT
+*/
+#define _LIT8(name,s) const static TLitC8 name={sizeof(s)-1,s}
+
+
+
+
+/**
+@publishedAll
+@deprecated Use _LIT16 instead.
+
+16-bit literal.
+
+The macro defines an explicit 16-bit constant literal which is suitable
+for Unicode literal text, regardless of the build.
+
+@see _L
+@see _LIT16
+@see _LIT
+*/
+#define _L16(a) (TPtrC16((const TText16 *)L ## a))
+
+
+
+/**
+@publishedAll
+@released
+
+Defines an explicit 16-bit string which is suitable when Unicode text
+is required, regardless of the build.
+
+This is used by the deprecated literal descriptor _L16.
+*/
+#define _S16(a) ((const TText16 *)L ## a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a constant literal descriptor of type TLitC16 with
+the specified name and text.
+
+The 16-bit build variant is generated for both non-Unicode and Unicode builds.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT
+*/
+#define _LIT16(name,s) const static TLitC16 name={sizeof(L##s)/2-1,L##s}
+
+
+
+
+#if defined(_UNICODE) && !defined(__KERNEL_MODE__)
+/**
+@publishedAll
+@released
+
+Build independent general text character.
+
+In non-Unicode builds, this is mapped to TText8. In Unicode builds, this is
+mapped to TText16. Use the classes with explicit width only when you wish
+the width to be independent of the build variant.
+
+Use this class rather than TChar for general use.
+*/
+typedef TText16 TText;
+
+
+
+/**
+@publishedAll
+@deprecated Use _LIT instead.
+
+Build independent literal.
+
+The macro defines either an 8-bit constant literal (for non-Unicode text),
+or a 16-bit constant literal (for Unicode text) depending on the build.
+
+@see _LIT
+@see _L16
+@see _L8
+*/
+#define _L(a) (TPtrC((const TText *)L ## a))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines either an 8-bit string (for non-Unicode text),
+or a 16-bit string (for Unicode text) depending on the build.
+
+This is used by the deprecated build independent literal _L.
+*/
+#define _S(a) ((const TText *)L ## a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a build independent constant literal descriptor of type TLitC
+with the specified name and text.
+
+An 8-bit build variant is generated for a non-Unicode build;
+A 16-bit build variant is generated for a Unicode build.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT16
+@see _LIT8
+*/
+#define _LIT(name,s) const static TLitC name={sizeof(L##s)/2-1,L##s}
+
+
+
+
+#else
+/**
+@publishedAll
+@released
+
+Build independent general text character.
+
+In non-Unicode builds, this is mapped to TText8. In Unicode builds, this is
+mapped to TText16. Use the classes with explicit width only when you wish
+the width to be independent of the build variant.
+
+Use this class rather than TChar for general use.
+*/
+typedef TText8 TText;
+
+
+
+/**
+@publishedAll
+@released
+
+@deprecated Use _LIT instead.
+
+Build independent literal.
+
+The macro defines either an 8-bit constant literal (for non-Unicode text),
+or a 16-bit constant literal (for Unicode text) depending on the build.
+
+@see _LIT
+@see _L16
+@see _L8
+*/
+#define _L(a) (TPtrC((const TText *)(a)))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Defines either an 8-bit string (for non-Unicode text),
+or a 16-bit string (for Unicode text) depending on the build.
+
+This is used by the deprecated build independent literal _L.
+*/
+#define _S(a) ((const TText *)a)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Constructs a build independent constant literal descriptor of type TLitC
+with the specified name and text.
+
+An 8-bit build variant is generated for a non-Unicode build;
+A 16-bit build variant is generated for a Unicode build.
+
+@param name The name of the C++ variable to be generated.
+@param s The literal text enclosed within a pair of double quotes.
+
+@see _LIT16
+@see _LIT8
+*/
+#define _LIT(name,s) const static TLitC name={sizeof(s)-1,s}
+#endif
+
+
+
+
+#ifndef __VA_LIST_defined
+/**
+@publishedAll
+@released
+
+Defines a 'C' style array of pointers to TInt8 types.
+
+The type is most commonly used by code that needs to deal with a variable
+number of arguments passed to a function.
+
+@see TInt8
+*/
+typedef TInt8 *VA_LIST[1];
+#endif
+
+/**
+@publishedAll
+@released
+
+Asserts that a condition is true.
+
+Code is generated for all builds.
+
+This macro is used as a C++ statement to assert the truth of some condition,
+and to take appropriate action if the condition is false. Unlike __ASSERT_DEBUG
+it is defined in both release and debug builds.
+
+The most common use for this macro is to check that the external environment of
+a function or class is behaving as expected; for example, that parameters
+passed to a function are credible, or that called functions are behaving as
+expected; the macro is commonly placed at the beginning of a function.
+
+The effect of the macro is to generate code which tests
+the conditional expression c; if the expression is false, then
+function p is called. In the majority of cases, the function p is one that
+raises a panic.
+
+Note that the macro definition is, in effect, equivalent to:
+
+@code
+if !(c)p;
+@endcode
+
+@param c a conditional expression which results in true or false.
+@param p a function which is called if the conditional expression c is false.
+
+@see __ASSERT_DEBUG
+*/
+#define __ASSERT_ALWAYS(c,p) (void)((c)||(p,0))
+
+
+
+#ifdef __WINS__
+#ifdef __CW32__
+/**
+@internalAll
+@released
+*/
+#define __BREAKPOINT() \
+ { \
+ __asm { byte 0xcc }; \
+ }
+#else // !__CW32__
+/**
+@internalAll
+@released
+*/
+#define __BREAKPOINT() \
+ { \
+ __asm { int 3 }; \
+ }
+#endif //__CW32__
+#else
+/**
+@internalAll
+@released
+*/
+#define __BREAKPOINT()
+#endif
+
+#if defined(_DEBUG)
+
+/**
+@internalComponent
+@deprecated
+*/
+#define __ASSERT_DEBUG_MB(aCond,aPanicNo) (void)((aCond)||(PanicMB(aPanicNo,_L(#aPanicNo),_L(#aCond)),0))
+
+
+
+
+/**
+@publishedAll
+@released
+
+Asserts that a condition is true.
+
+Code is generated for debug builds only.
+
+This macro is used as a C++ statement to assert the truth of some condition,
+and to take appropriate action if the condition is false. It is used in
+the same way as __ASSERT_ALWAYS, except that it is only defined for debug builds.
+
+The macro may be used to insert extra checks at various points in source code
+as desired; the code will only be generated in debug builds and not in release
+builds.
+
+@param c A conditional expression which results in true or false.
+@param p A function which is called if the conditional expression c is false.
+
+@see __ASSERT_ALWAYS
+*/
+#define __ASSERT_DEBUG(c,p) (void)((c)||(p,0))
+
+
+
+/**
+@internalAll
+@removed
+*/
+#define __DECLARE_NAME(t)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Calls the function for testing object invariance.
+
+Classes can define a standard member function __DbgTestInvariant(),
+which checks that the object is in a valid state, and panics if it is not.
+In debug builds, this macro simply expands to call that function. For details on how
+to define __DbgTestInvariant(), and an example of its use, see __DECLARE_TEST.
+
+The macro is typically invoked at the beginning of all the member functions of
+the class. For non-const functions (those which can change the object’s state),
+you can ensure that the object has been left in a stable state by invoking
+the macro at the end of the function.
+
+In release builds, no code is generated for the macro.
+*/
+#define __TEST_INVARIANT __DbgTestInvariant()
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of checking the current thread's heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __UHEAP_MARKEND
+@see __UHEAP_MARKENDC
+*/
+#define __UHEAP_MARK User::__DbgMarkStart(FALSE)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+current thread's heap is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+The macro assumes that:
+
+1. the heap being checked is a user heap
+
+2. checking is being done for the number of allocated cells at the current nested
+ level; i.e. that aCountAll is set to false
+
+3. the line number is the line number of this source code statement.
+
+4. the file name is the full path name of the file containing this source statement
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECK
+*/
+#define __UHEAP_CHECK(aCount) User::__DbgMarkCheck(FALSE,FALSE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the current thread's heap
+is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The total number of heap cells expected to be allocated.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECKALL
+*/
+#define __UHEAP_CHECKALL(aCount) User::__DbgMarkCheck(FALSE,TRUE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKEND User::__DbgMarkEnd(FALSE,0)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKENDC(aCount) User::__DbgMarkEnd(FALSE,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on the next call to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aCount Determines when the allocation will fail.
+ Heap allocation fails on attempt number aCount - later
+ allocations will succeed.
+ For example, if aCount is 3, then heap allocation fails
+ on the 3rd attempt, but all subsequent allocations succeed.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_FAILNEXT(aCount) User::__DbgSetAllocFail(FALSE,RAllocator::EFailNext,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_SETFAIL(aType,aValue) User::__DbgSetAllocFail(FALSE,aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_RESET User::__DbgSetAllocFail(FALSE,RAllocator::ENone,1)
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+*/
+#define __UHEAP_TOTAL_RESET User::__DbgSetAllocFail(FALSE,RAllocator::EReset,1)
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the start of Kernel heap checking.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __KHEAP_MARKEND
+@see __KHEAP_MARKENDC
+*/
+#define __KHEAP_MARK User::__DbgMarkStart(TRUE)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the number of allocated cells at the current nested level of the
+Kernel heap is the same as the specified value. This macro is defined only
+for debug builds. Checking the Kernel heap is only useful when developing
+Kernel side code such as device drivers and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECK
+*/
+#define __KHEAP_CHECK(aCount) User::__DbgMarkCheck(TRUE,FALSE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the total number of allocated cells on the Kernel heap is the same
+as the specified value.
+
+It is only useful when developing Kernel side code such as device drivers
+and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aCount The total number of heap cells expected to be allocated
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECKALL
+*/
+#define __KHEAP_CHECKALL(aCount) User::__DbgMarkCheck(TRUE,TRUE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects zero heap cells to
+remain allocated at the current nest level.
+
+This macro is defined only for debug builds. Checking the Kernel heap is only
+useful when developing Kernel side code such as device drivers and media drivers.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKEND User::__DbgMarkEnd(TRUE,0)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects aCount heap cells
+to remain allocated at the current nest level.
+
+This macro is defined only for debug builds.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKENDC(aCount) User::__DbgMarkEnd(TRUE,aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure. The failure occurs on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_FAILNEXT(aCount) User::__DbgSetAllocFail(TRUE,RAllocator::EFailNext,aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_SETFAIL(aType,aValue) User::__DbgSetAllocFail(TRUE,aType,aValue)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated Kernel heap allocation failure.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_RESET User::__DbgSetAllocFail(TRUE,RAllocator::ENone,1)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated kernel heap allocation failure.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+Checking the kernel heap is only useful when developing kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+*/
+#define __KHEAP_TOTAL_RESET User::__DbgSetAllocFail(TRUE,RAllocator::EReset,1)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of heap checking for the specific heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+@param aHeap A pointer to the specific RHeap
+
+@see RHeap
+@see RAllocator::__DbgMarkStart()
+@see __RHEAP_MARKEND
+@see __RHEAP_MARKENDC
+*/
+#define __RHEAP_MARK(aHeap) (aHeap)->__DbgMarkStart()
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+specified heap is the same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECK(aHeap,aCount) (aHeap)->__DbgMarkCheck(FALSE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the specified heap is the
+same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The total number of heap cells expected to be allocated.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECKALL(aHeap,aCount) (aHeap)->__DbgMarkCheck(TRUE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKEND(aHeap) (aHeap)->__DbgMarkEnd(0)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKENDC(aHeap,aCount) (aHeap)->__DbgMarkEnd(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on the next call to new or any of the functions which allocate
+memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_FAILNEXT(aHeap,aCount) (aHeap)->__DbgSetAllocFail(RAllocator::EFailNext,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_SETFAIL(aHeap,aType,aValue) (aHeap)->__DbgSetAllocFail(aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_RESET(aHeap) (aHeap)->__DbgSetAllocFail(RAllocator::ENone,1)
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_TOTAL_RESET(aHeap) (aHeap)->__DbgSetAllocFail(RAllocator::EReset,1)
+
+
+
+
+#if defined (__WINS__)
+
+/**
+@publishedAll
+@released
+*/
+#define __DEBUGGER() {if (User::JustInTime()) __BREAKPOINT()}
+
+#else
+#define __DEBUGGER()
+#endif
+
+
+#if defined(__DLL__)
+/**
+@publishedAll
+@released
+
+Declares a function for testing object invariance.
+
+For complex classes, it is often useful to provide a function that can
+be called to check that the object is in a valid state.
+The __DECLARE_TEST macro supplies a standard prototype for such a function
+named __DbgTestInvariant(). A companion macro __TEST_INVARIANT is provided
+to call the function.
+
+For DLLs, as opposed to EXEs, __DbgTestInvariant() is exported,
+i.e. the macro expands to:
+
+@code
+public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+@endcode
+
+This macro should placed as the last item in a class declaration (as it
+switches back to public access). Note that a terminating semi-colon must be used.
+
+You should define the __DbgTestInvariant() function to check that the object
+is in a healthy state. If it finds an error, it should call User::Invariant(),
+which will cause a panic.
+
+If a class is derived from a base class, then the base class __DbgTestInvariant()
+should be called first, and then any further checking done.
+
+The second function declared, __DbgTest(), is intended to allow test code a way
+of directly accessing non-public members of a class. The function is
+implemented by any test code that requires it, rather than in the class’s own
+source code. The function is therefore not exported.
+
+__DECLARE_TEST is defined for both debug and release builds. This point is
+particularly important for DLLs, as otherwise the exported interfaces would
+differ between the build versions, giving potential binary compatibility
+problems. To avoid using memory unnecessarily in release builds, you can,
+however, use preprocessor directives to define the code within
+__DbgTestInvariant() only for debug builds. __DbgTestInvariant() is never
+called in release builds.
+
+@see __TEST_INVARIANT
+*/
+#define __DECLARE_TEST public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#else
+#define __DECLARE_TEST public: void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#endif
+
+#else
+#define __ASSERT_DEBUG(c,p)
+#define __DECLARE_NAME(t)
+#define __TEST_INVARIANT
+#if defined(__DLL__)
+#define __DECLARE_TEST public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#else
+#define __DECLARE_TEST public: void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
+#endif
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of checking the current thread's heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __UHEAP_MARKEND
+@see __UHEAP_MARKENDC
+*/
+#define __UHEAP_MARK
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+current thread's heap is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+The macro assumes that:
+
+1. the heap being checked is a user heap
+
+2. checking is being done for the number of allocated cells at the current nested
+ level; i.e. that aCountAll is set to false
+
+3. the line number is the line number of this source code statement.
+
+4. the file name is the full path name of the file containing this source statement
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECK
+*/
+#define __UHEAP_CHECK(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the current thread's heap
+is the same as the specified value.
+
+This macro is defined only for debug builds.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The total number of heap cells expected to be allocated.
+
+@see User::__DbgMarkCheck()
+@see __KHEAP_CHECKALL
+*/
+#define __UHEAP_CHECKALL(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKEND
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of checking the current thread's heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level.
+
+This macro must match an earlier call to __UHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __UHEAP_MARK
+*/
+#define __UHEAP_MARKENDC(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on the next call to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aCount Determines when the allocation will fail.
+ Heap allocation fails on attempt number aCount - later
+ allocations will succeed.
+ For example, if aCount is 3, then heap allocation fails
+ on the 3rd attempt, but all subsequent allocations succeed.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_FAILNEXT(aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates heap allocation failure for the current thread's heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_SETFAIL(aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __UHEAP_RESET
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated heap allocation failure for the current thread's heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+*/
+#define __UHEAP_TOTAL_RESET
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the start of Kernel heap checking.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __KHEAP_MARKEND
+@see __KHEAP_MARKENDC
+*/
+#define __KHEAP_MARK
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the number of allocated cells at the current nested level of the
+Kernel heap is the same as the specified value. This macro is defined only
+for debug builds. Checking the Kernel heap is only useful when developing
+Kernel side code such as device drivers and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECK
+*/
+#define __KHEAP_CHECK(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the total number of allocated cells on the Kernel heap is the same
+as the specified value.
+
+It is only useful when developing Kernel side code such as device drivers
+and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aCount The total number of heap cells expected to be allocated
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECKALL
+*/
+#define __KHEAP_CHECKALL(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects zero heap cells to
+remain allocated at the current nest level.
+
+This macro is defined only for debug builds. Checking the Kernel heap is only
+useful when developing Kernel side code such as device drivers and media drivers.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKEND
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects aCount heap cells
+to remain allocated at the current nest level.
+
+This macro is defined only for debug builds.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKENDC(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure. The failure occurs on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_FAILNEXT(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_SETFAIL(aType,aValue)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated Kernel heap allocation failure.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_RESET
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated kernel heap allocation failure.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+Checking the kernel heap is only useful when developing kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+*/
+#define __KHEAP_TOTAL_RESET
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the start of heap checking for the specific heap.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
+
+@param aHeap A pointer to the specific RHeap
+
+@see RHeap
+@see RAllocator::__DbgMarkStart()
+@see __RHEAP_MARKEND
+@see __RHEAP_MARKENDC
+*/
+#define __RHEAP_MARK(aHeap)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the number of allocated cells at the current nested level on the
+specified heap is the same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECK(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Checks that the total number of allocated cells on the specified heap is the
+same as the specified value.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The total number of heap cells expected to be allocated.
+
+@see RAllocator::__DbgMarkCheck()
+*/
+#define __RHEAP_CHECKALL(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects zero heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKEND(aHeap)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Marks the end of heap checking for the specific heap.
+
+The macro expects aCount heap cells to remain allocated at the current nest
+level. This macro is defined only for debug builds.
+
+This macro must match an earlier call to __RHEAP_MARK.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level
+
+@see RAllocator::__DbgMarkEnd()
+@see __RHEAP_MARK
+*/
+#define __RHEAP_MARKENDC(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on the next call to new or any of the functions which allocate
+memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_FAILNEXT(aHeap,aCount)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Simulates an allocation failure for the specific heap.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from the heap. This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+@param aType The type of failure to be simulated.
+@param aValue The failure rate.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_SETFAIL(aHeap,aType,aValue)
+
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_RESET(aHeap)
+
+
+
+/**
+@publishedAll
+@released
+
+Cancels simulated allocation failure for the specific heap.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+This macro is defined only for debug builds.
+
+@param aHeap A pointer to the specific RHeap.
+
+@see RAllocator::__DbgSetAllocFail()
+*/
+#define __RHEAP_TOTAL_RESET(aHeap)
+
+
+
+#define __DEBUGGER()
+#endif
+
+#if defined (__WINS__)
+/** @internalTechnology */
+#define __EMULATOR_IMAGE_HEADER2(aUid0,aUid1,aUid2,aPriority,aCap0,aCap1,aSid,aVid,aVer,aFlags) TEmulatorImageHeader uid={{aUid0,aUid1,aUid2},aPriority,{aSid,aVid,{aCap0,aCap1}},0,0,aVer,aFlags};
+/** @internalTechnology */
+#define __EMULATOR_IMAGE_HEADER(aUid0,aUid1,aUid2,aPriority,aCap,aFlags) TEmulatorImageHeader uid={{aUid0,aUid1,aUid2},aPriority,{aUid2,0,{aCap,0}},0,0,0x00010000u,aFlags};
+#else
+#define __EMULATOR_IMAGE_HEADER2(aUid0,aUid1,aUid2,aPriority,aCap0,aCap1,aSid,aVer,aFlags)
+#define __EMULATOR_IMAGE_HEADER(aUid0,aUid1,aUid2,aPriority,aCap,aFlags)
+#endif
+
+#if defined(__OPT__)
+/**
+@internalComponent
+@deprecated
+*/
+#define __ASSERT_OPT(c,p) (void)((c)||(p,0))
+#else
+#define __ASSERT_OPT(c,p)
+#endif
+
+#if defined(_UNICODE)
+#if !defined(UNICODE)
+/**
+@publishedAll
+@deprecated
+*/
+#define UNICODE
+#endif
+#endif
+
+#if defined(_DEBUG)
+/**
+@internalComponent
+@deprecated
+*/
+#define __DECLARE_TEST_DEBUG __DECLARE_TEST
+#else
+#define __DECLARE_TEST_DEBUG
+#endif
+
+
+
+
+#if !defined(ASSERT)
+/**
+@publishedAll
+@released
+
+Generates _ASSERT_DEBUG code that calls User::Invariant() if the specified
+condition is not true.
+
+@param x A conditional expression which results in true or false.
+*/
+#define ASSERT(x) __ASSERT_DEBUG(x,User::Invariant())
+#endif
+
+
+
+
+#ifndef __VALUE_IN_REGS__
+/**
+@publishedPartner
+@released
+*/
+#define __VALUE_IN_REGS__
+#endif
+
+
+
+
+#if defined(_DEBUG)
+/**
+@publishedAll
+@released
+*/
+#define __DEBUG_ONLY(x) x
+#else
+#define __DEBUG_ONLY(x)
+#endif
+
+
+
+
+#ifdef __KERNEL_MODE__
+
+/** @internalComponent */
+#define KIMPORT_C IMPORT_C
+
+/** @internalComponent */
+#define KEXPORT_C EXPORT_C
+
+/** @internalComponent */
+#define UIMPORT_C
+
+/** @internalComponent */
+#define UEXPORT_C
+#else
+#define KIMPORT_C
+#define KEXPORT_C
+#define UIMPORT_C IMPORT_C
+#define UEXPORT_C EXPORT_C
+#endif
+
+
+
+
+/**
+@publishedAll
+@released
+
+Asserts that a condition is true at compilation time.
+
+@param x Condition to assert
+*/
+#define __ASSERT_COMPILE(x) void __compile_time_assert(int __check[(x)?1:-1])
+
+#ifdef __REMOVE_PLATSEC_DIAGNOSTICS__
+/**
+@publishedPartner
+@released
+*/
+#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+#define __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+#endif /*__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__*/
+#endif /*__REMOVE_PLATSEC_DIAGNOSTICS__*/
+
+/**
+@internalComponent
+*/
+static const char* const KSuppressPlatSecDiagnosticMagicValue = (const char*)1;
+
+#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+/**
+@internalComponent
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) #l
+/**
+@internalComponent
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(f,l) f "(" __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) ")"
+/**
+@publishedPartner
+@released
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(__FILE__,__LINE__)
+
+/**
+@publishedPartner
+@released
+
+A macro that should be used to enclose a platform security diagnostic
+'C' style string that can be passed to a capability checking function such
+as RThread::HasCapability() and Kern::CurrentThreadHasCapability().
+
+The content of the string is emitted if the capability test finds that
+the capability is not present.
+
+The macro provides a convenient mechanism that allows the strings to
+be removed from future versions of Symbian OS.
+
+For example:
+
+@code
+if(!Kern::CurrentThreadHasCapability(ECapabilityPowerMgmt,__PLATSEC_DIAGNOSTIC_STRING("Checked by Hal function EDisplayHalSetState")))
+ {
+ return KErrPermissionDenied;
+ }
+@endcode
+
+In this example, the string:
+
+@code
+Checked by Hal function EDisplayHalSetState
+@endcode
+
+is emitted if the calling process does not have the ECapabilityPowerMgmt capability.
+
+@param s A C-style string.
+
+@see RProcess::HasCapability()
+@see RThread::HasCapability()
+@see RMessagePtr2::HasCapability()
+@see User::CreatorHasCapability()
+*/
+#define __PLATSEC_DIAGNOSTIC_STRING(s) s
+
+/**
+When this value is used in Platform Security APIs as the value for the aDiagnosticText
+argument, these APIs will not emit any form of diagnostic message.
+@publishedPartner
+@released
+*/
+// Note this value is the same as KSuppressPlatSecDiagnosticMagicValue
+// and used to be a set by it but that caused an error with GCCE compiler
+static const char* const KSuppressPlatSecDiagnostic = (const char*)1;
+
+#else /* __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ */
+
+#define __PLATSEC_DIAGNOSTIC_STRING(s) NULL
+
+#ifndef __KERNEL_MODE__
+#ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
+/**
+When this value is used in Platform Security APIs as the value for the aDiagnostic
+argument, these APIs will not emit any form of diagnostic message.
+@publishedPartner
+@released
+*/
+#define KSuppressPlatSecDiagnostic NULL, NULL
+
+#else /* __REMOVE_PLATSEC_DIAGNOSTICS__ */
+
+/**
+When this value is used in Platform Security APIs as the value for the aDiagnostic
+argument, these APIs will not emit any form of diagnostic message.
+@publishedPartner
+@release
+*/
+#define KSuppressPlatSecDiagnostic NULL
+
+#endif /* !__REMOVE_PLATSEC_DIAGNOSTICS__ */
+#endif /* !__KERNEL_MODE__ */
+#endif /* !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ */
+
+/*
+ * MSVC operator new and operator new[] header guards
+ */
+#ifdef __PLACEMENT_NEW
+#define __PLACEMENT_NEW_INLINE
+#endif /* __PLACEMENT_NEW */
+
+#if defined(__VC32__) && (_MSC_VER < 1300)
+#define __PLACEMENT_VEC_NEW_INLINE
+#endif /* version of MSVC that doesn't support overloaded operator new[] */
+
+/**
+Calling convention qualifier for functions involving floating point
+variables passed or returned by value.
+@publishedAll
+@released
+*/
+#ifndef __SOFTFP
+#define __SOFTFP
+#endif /* __SOFTFP */
+
+#endif /* __E32DEF_H__ */
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/long/paths/test.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/long/paths/test.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+#include "e32def.h" // intentional include
+
+char test[]=__TESTNAME__;
+
+class fred {
+ public:
+ int something;
+ int aMethod(void);
+};
+
+TInt E32Main()
+{
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/longfilenames/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/longfilenames/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+WINSCW
+
+PRJ_MMPFILES
+longfilenames.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/longfilenames/longerfilenamethanyoumightnormallyexpecttobepresent.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/longfilenames/longerfilenamethanyoumightnormallyexpecttobepresent.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,62 @@
+/*
+* 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:
+*
+*/
+#include
+#include
+
+_LIT(KTxtEPOC32EX,"EXAMPLES");
+_LIT(KTxtExampleCode,"Symbian OS Example Code");
+_LIT(KFormatFailed,"failed: leave code=%d");
+_LIT(KTxtOK,"ok");
+_LIT(KTxtPressAnyKey," [press any key]");
+
+// public
+LOCAL_D CConsoleBase* console; // write all your messages to this
+LOCAL_C void doExampleL(); // code this function for the real example
+
+// private
+LOCAL_C void callExampleL(); // initialize with cleanup stack, then do example
+
+GLDEF_C TInt E32Main() // main function called by E32
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+ TRAPD(error,callExampleL()); // more initialization, then do example
+ __ASSERT_ALWAYS(!error,User::Panic(KTxtEPOC32EX,error));
+ delete cleanup; // destroy clean-up stack
+ __UHEAP_MARKEND;
+ return 0; // and return
+ }
+
+LOCAL_C void callExampleL() // initialize and call example code under cleanup stack
+ {
+ console=Console::NewL(KTxtExampleCode,TSize(KConsFullScreen,KConsFullScreen));
+ CleanupStack::PushL(console);
+ TRAPD(error,doExampleL()); // perform example function
+ if (error)
+ console->Printf(KFormatFailed, error);
+ else
+ console->Printf(KTxtOK);
+ console->Printf(KTxtPressAnyKey);
+ console->Getch(); // get and ignore character
+ CleanupStack::PopAndDestroy(); // close console
+ }
+
+LOCAL_C void doExampleL()
+ {
+ _LIT(KHelloWorldText,"Hello world!\n");
+ console->Printf(KHelloWorldText);
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/make_crash/exception_crash.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/make_crash/exception_crash.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,29 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+armv5
+
+PRJ_EXPORTS
+make_crash.flm /epoc32/tools/makefile_templates/tools/make_crash.flm
+make_crash.xml /epoc32/tools/makefile_templates/tools/make_crash.xml
+
+PRJ_EXTENSIONS
+
+start extension tools.make_crash
+option CRASH_TYPE exception_caught
+end
\ No newline at end of file
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/make_crash/make_crash.flm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/make_crash/make_crash.flm Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,95 @@
+# Invokes different types of make crashes
+
+
+## Converting a list of source files to a list of object files without altering
+## their relative order. Also deals with multiple file types mapping to the same
+## object type e.g. .CPP and .cpp and .c++ all map to .o
+
+# $1 - the list of suffixes to replace
+# $2 - the suffix to replace them with
+# $3 - the list of strings to perform the replacement on
+define allsuffixsubst_internal
+ $(if $1,$$(patsubst %$(firstword $1),%$2,$(call allsuffixsubst_internal,$(wordlist 2,$(words $1),$1),$2,$3)),$3)
+endef
+define allsuffixsubst
+ $(eval allsuffixsubst_RESULT:=$(call allsuffixsubst_internal,$1,$2,$3))$(allsuffixsubst_RESULT)
+endef
+
+
+x:=a b c d e f g h i j
+
+x100:=$(foreach i,$(x),$(x))
+x10000:=$(foreach i,$(x100),$(x100))
+x1000000:=$(foreach i,$(x10000),$(x100))
+
+
+ifeq ($(CRASH_TYPE), memory_exhausted)
+ mystring:= \
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ $(foreach c,$(x100),$(eval mystring:=$$(mystring)$$(mystring)))
+endif
+
+
+ifeq ($(CRASH_TYPE), exception_caught)
+ manyfiles:=$(foreach f,$(x1000000),fred.cia fred.cpp fred.c++)
+ objects:=$(call allsuffixsubst,.Cia .CiA .cIA. .CpP .cPp .CC .C++ .cia .cpp .c++ .cc .CPP .CIA .Cpp,.o,$(manyfiles))
+endif
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/make_crash/make_crash.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/make_crash/make_crash.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/make_crash/memory_crash.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/make_crash/memory_crash.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,29 @@
+/*
+* 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:
+*
+*/
+
+PRJ_PLATFORMS
+armv5
+
+PRJ_EXPORTS
+make_crash.flm /epoc32/tools/makefile_templates/tools/make_crash.flm
+make_crash.xml /epoc32/tools/makefile_templates/tools/make_crash.xml
+
+PRJ_EXTENSIONS
+
+start extension tools.make_crash
+option CRASH_TYPE memory_exhausted
+end
\ No newline at end of file
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/make_engine_errors/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/make_engine_errors/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,9 @@
+
+PRJ_EXPORTS
+with_make_errors.flm /epoc32/tools/makefile_templates/tools/with_make_errors.flm
+with_make_errors.xml /epoc32/tools/makefile_templates/tools/with_make_errors.xml
+
+PRJ_EXTENSIONS
+start extension tools/with_make_errors
+end
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/make_engine_errors/with_make_errors.flm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/make_engine_errors/with_make_errors.flm Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,10 @@
+
+ALL:: a b c
+
+a: b
+b: a
+
+c: non_existent_&_needs_escaping.txt
+
+$(call raptor_phony_recipe,name,ALL,,echo "this FLM is rubbish")
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/make_engine_errors/with_make_errors.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/make_engine_errors/with_make_errors.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/metadep.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/metadep.sh Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+# Test SBSv2 Metadata dependency generation to see if
+# changing a metadata file would trigger a rebuild.
+
+export BASH_EPOCROOT=${EPOCROOT//\\//}
+export BASH_SBSHOME=${SBS_HOME//\\//}
+export BASH_SBSMINGW=${SBS_MINGW//\\//}
+export METAMAKEFILE=${BASH_EPOCROOT}/epoc32/build/metadata_all.mk
+export SBSMAKEFILE=${SBSMAKEFILE:-${BASH_EPOCROOT}/epoc32/build/smoketests/metadep.mk}
+export SBSLOGFILE=${SBSLOGFILE:-${BASH_EPOCROOT}/epoc32/build/smoketests/metadep.log}
+export SBSCOMMAND="sbs -b smoke_suite/test_resources/simple/bld.inf -n -m $SBSMAKEFILE -f $SBSLOGFILE"
+
+# Ensure that the host type is set for Raptor:
+eval $($BASH_SBSHOME/bin/gethost.sh -e)
+
+if [ -z "$HOSTPLATFORM" ]; then
+ echo "Error: HOSTPLATFORM could not be determined." 1>&2
+ exit 1
+fi
+
+# N.B. The use of sleep 1 is required. If I build X, dependent on Y then
+# update Y too quickly, a subsequent attempt to make X won't notice the
+# change in Y. It's not clear if this is make's fault or just the way that
+# file timestamps are recorded.
+
+if [ "$OSTYPE" = "cygwin" ]
+then
+export MAKECOMMAND="${BASH_SBSMINGW:-${BASH_SBSHOME}/${HOSTPLATFORM_DIR}/mingw}/bin/make"
+else
+export MAKECOMMAND="$BASH_SBSHOME/$HOSTPLATFORM_DIR/bin/make"
+fi
+
+echo "Step 1 - No changes, so there should be no need to rerun:"
+( set -x
+$SBSCOMMAND &&
+sleep 1 &&
+$MAKECOMMAND -rf ${METAMAKEFILE}
+)
+echo ""
+
+
+
+echo "Step 2 - Run sbs, change a bld inf, see the rerunning message"
+#( set -x
+$SBSCOMMAND &&
+sleep 1 &&
+touch smoke_suite/test_resources/simple/bld.inf &&
+$MAKECOMMAND -rf ${METAMAKEFILE}
+#)
+echo ""
+
+echo "Step 3 - Run sbs, change an mmp, see the rerunning message twice"
+( set -x
+$SBSCOMMAND &&
+sleep 1 &&
+touch smoke_suite/test_resources/simple/simple.mmp &&
+$MAKECOMMAND -rf ${METAMAKEFILE}
+$MAKECOMMAND -rf ${METAMAKEFILE}
+)
+echo ""
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/apply_test_exported_variants.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/apply_test_exported_variants.xml Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,7 @@
+
+PRJ_EXPORTS
+apply_test_exported_variants.xml /epoc32/tools/makefile_templates/
+
+PRJ_MMPFILES
+test_mmp_apply.mmp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/test_mmp_apply.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/test_mmp_apply.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,9 @@
+
+#include "e32def.h"
+
+char test[] = "test mmp keyword APPLY";
+
+TInt E32Main()
+{
+ return 0;
+}
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/test_mmp_apply.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/apply/test_mmp_apply.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,16 @@
+
+TARGET test_mmp_apply
+TARGETTYPE EXE
+
+APPLY no_such_var
+
+LIBRARY euser.lib
+
+SYSTEMINCLUDE /epoc32/include
+
+APPLY apply_test_append_cdefs
+
+SOURCE test_mmp_apply.cpp
+
+APPLY apply_test_exported_var
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/epocnestedexceptions/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/epocnestedexceptions/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,3 @@
+PRJ_MMPFILES
+test.mmp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/epocnestedexceptions/test.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/epocnestedexceptions/test.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,7 @@
+#include
+
+TInt E32Main()
+{
+ return 0;
+}
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/epocnestedexceptions/test.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/epocnestedexceptions/test.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,11 @@
+TARGET test_mmp_epocnestedexceptions.exe
+TARGETTYPE EXE
+
+LIBRARY euser.lib
+
+SYSTEMINCLUDE /epoc32/include
+
+SOURCE test.cpp
+
+EPOCNESTEDEXCEPTIONS
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/eabi/shutdownsrvu.def
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/eabi/shutdownsrvu.def Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,33 @@
+EXPORTS
+ _ZN19CServShutdownServer10ConstructLEv @ 1 NONAME
+ _ZN19CServShutdownServer10NotifySaveEN13MSaveObserver9TSaveTypeE @ 2 NONAME
+ _ZN19CServShutdownServer13ClientArrayLCEv @ 3 NONAME
+ _ZN19CServShutdownServer14CancelPowerOffEv @ 4 NONAME
+ _ZN19CServShutdownServer20HandleShutdownEventLEN13MSaveObserver9TSaveTypeEi11TPowerState @ 5 NONAME
+ _ZN19CServShutdownServer23HandlePowerNotifRequestERK7RThread @ 6 NONAME
+ _ZN19CServShutdownServer4NewLEv @ 7 NONAME
+ _ZN19CServShutdownServerC1Ei @ 8 NONAME
+ _ZN19CServShutdownServerC2Ei @ 9 NONAME
+ _ZN19CServShutdownServerD0Ev @ 10 NONAME
+ _ZN19CServShutdownServerD1Ev @ 11 NONAME
+ _ZN19CServShutdownServerD2Ev @ 12 NONAME
+ _ZN20CServShutdownSession8ServiceLERK9RMessage2 @ 13 NONAME
+ _ZN20CServShutdownSessionC1Ev @ 14 NONAME
+ _ZN20CServShutdownSessionC2Ev @ 15 NONAME
+ _ZN20CServShutdownSessionD0Ev @ 16 NONAME
+ _ZN20CServShutdownSessionD1Ev @ 17 NONAME
+ _ZN20CServShutdownSessionD2Ev @ 18 NONAME
+ _ZNK19CServShutdownServer10IsPowerOffEv @ 19 NONAME
+ _ZNK19CServShutdownServer12IsClientHungE9TThreadId @ 20 NONAME
+ _ZNK19CServShutdownServer16GetShutdownStateERiS0_ @ 21 NONAME
+ _ZTI19CServShutdownServer @ 22 NONAME ; ##
+ _ZTI20CServShutdownSession @ 23 NONAME ; ##
+ _ZTV19CServShutdownServer @ 24 NONAME ; ##
+ _ZTV20CServShutdownSession @ 25 NONAME ; ##
+ _ZThn104_N19CServShutdownServer13ClientArrayLCEv @ 26 NONAME ; ##
+ _ZThn104_N19CServShutdownServer20HandleShutdownEventLEN13MSaveObserver9TSaveTypeEi11TPowerState @ 27 NONAME ; ##
+ _ZThn104_NK19CServShutdownServer12IsClientHungE9TThreadId @ 28 NONAME ; ##
+ _ZThn104_NK19CServShutdownServer16GetShutdownStateERiS0_ @ 29 NONAME ; ##
+ KShtdwnTimeoutBase @ 30 NONAME DATA 4
+ KShtdwnTimeoutClient @ 31 NONAME DATA 4
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/group/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 1999-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_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../inc/shutdownsrv.h
+
+PRJ_MMPFILES
+../group/shutdownsrv.mmp
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/group/shutdownsrv.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/group/shutdownsrv.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 1997-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:
+*
+*/
+
+
+
+TARGET shutdownsrv.dll
+CAPABILITY PowerMgmt TrustedUI ProtServ DiskAdmin
+TARGETTYPE DLL
+TARGETPATH /system/libs
+
+EXPORTLIBRARY exportlibrary_shutdownsrv.lib
+
+UID 0x1000008D 0x10004903
+VENDORID 0x70000001
+
+SOURCEPATH ../src
+
+userinclude .
+userinclude ../inc
+
+systeminclude /epoc32/include
+
+#if defined(SYMBIAN_SSM_GRACEFUL_SHUTDOWN)
+systeminclude /epoc32/include/ssm
+#endif
+
+source shutdownsrv.cpp shutdowntimer.cpp shutdownsrvpatchdata.cpp
+
+library euser.lib bafl.lib efsrv.lib hal.lib
+
+#if defined(SYMBIAN_SSM_GRACEFUL_SHUTDOWN)
+library ssmcmn.lib estor.lib
+#endif
+
+deffile shutdownsrv.def
+
+START WINS
+ copy_for_static_linkage
+END
+
+START MARM
+END
+
+LINKEROPTION armcc --verbose
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/inc/shutdownsrv.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/inc/shutdownsrv.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 1997-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:
+*
+*/
+
+
+#if !defined(SHUTDOWNSRV_H)
+#define SHUTDOWNSRV_H
+
+#include
+#include
+#include
+#include
+
+class CShutdownTimer;
+
+/**
+This class describes an interface, which is used by LaF Shutdown Manager to notify the Shutdown Server of
+device shutdown, so that the server can take appropriate power management steps. The concrete implementation
+of this interface is provided by CServShutdownServer class.
+@publishedPartner
+@released
+*/
+class MShutdownEventObserver
+ {
+public:
+ /**
+ This method has to be called, when the observed object requires the Shutdown Server to notify registered
+ clients about the shutdown event, such as MSaveObserver::ESaveData, MSaveObserver::ESaveAll,
+ MSaveObserver::EReleaseRAM,...
+ @param aAction The type of the requested action
+ @param aPowerOff If it is non-zero, this is the beginning of a powerdown sequence.
+ @param aEvent The type of the powerdown event
+ @leave KErrNotSupported Leaves if aEvent is invalid
+ */
+ virtual void HandleShutdownEventL(MSaveObserver::TSaveType aAction,TBool aPowerOff, TPowerState aEvent = EPwStandby)=0;
+ /**
+ This method creates an array of CArrayFix type and appends to it the thread id-s of
+ all the registered clients. The created CArrayFix instance will be pushed on the
+ cleanup stack. The caller becomes responsible for the memory allocated for this array.
+ @return A pointer to a CArrayFix array with the client thread id-s.
+ @leave Some system-wide error codes including KErrNoMemory.
+ */
+ virtual CArrayFix* ClientArrayLC()=0;
+ /**
+ Checks if a particular client is hung in that the client has not re-registered with the
+ Shutdown Server indicating it is ready for the next stage of the shutdown.
+ @param aId Client's thread id.
+ @return Non-zero if the client with this thread id has no pending request.
+ */
+ virtual TBool IsClientHung(TThreadId aId) const=0;
+ /**
+ This method returns information about the shutdown status.
+ @param aPowerOff An output parameter, where power-off status will be stored.
+ It will be non-zero, if a powerdown sequence has been initiated.
+ @param aAllSessionsHavePendingRequest An output parameter. It will be non-zero, if all clients
+ have pending requests to receive further events from the Shutdown Manager.
+ */
+ virtual void GetShutdownState(TBool& aPowerOff, TBool& aAllSessionsHavePendingRequest) const=0;
+ };
+
+/**
+This class describes an object, which handles requests, such as of MSaveObserver::TSaveType type.
+When CServShutdownServer::HandleShutdownEventL() gets called, the CServShutdownServer implementation
+will notify all registered clients, completing their asynchronous messages
+(CServShutdownSession::iPtr), then it will wait until all clients re-register itself and
+if this is a beginning of a powerdown sequence, the method will store the locales and the HAL
+properties subsequently switching off the power.
+@internalTechnology
+*/
+class CServShutdownServer : public CServer2, public MShutdownEventObserver
+ {
+public:
+ IMPORT_C static CServShutdownServer* NewL();
+ IMPORT_C ~CServShutdownServer();
+ IMPORT_C void HandlePowerNotifRequest(const RThread& aClient);
+ IMPORT_C void NotifySave(MSaveObserver::TSaveType aSaveType);
+ IMPORT_C TBool IsPowerOff() const;
+ IMPORT_C void CancelPowerOff();
+ void SwitchOff();
+#ifdef SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+ TInt ClientArrayCount();
+ void ClientArrayL(const RMessage2& aMessage);
+#endif //SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+public:
+ IMPORT_C virtual void ConstructL();
+public: // from MShutdownEventObserver
+ IMPORT_C void HandleShutdownEventL(MSaveObserver::TSaveType aAction,TBool aPowerOff, TPowerState aEvent = EPwStandby);
+ IMPORT_C CArrayFix* ClientArrayLC();
+ IMPORT_C TBool IsClientHung(TThreadId aId) const;
+ IMPORT_C void GetShutdownState(TBool& aPowerOff, TBool& aAllSessionsHavePendingRequest) const;
+
+protected:
+ IMPORT_C CServShutdownServer(TInt aPriority);
+private:
+ TBool AllSessionsHavePendingRequest() const;
+ void DoSwitchOff();
+private: // from CServer
+ CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
+private:
+ TBool iPowerOff;
+ TPowerState iPowerEvent;
+ CShutdownTimer* iShutdownTimer;
+ };
+
+/**
+This class describes a server side session object, which handles reqistration requests
+of clients, which are interested in power down events.
+@internalTechnology
+*/
+class CServShutdownSession : public CSession2
+ {
+public:
+ IMPORT_C ~CServShutdownSession();
+protected:
+ IMPORT_C CServShutdownSession();
+public:
+ static CServShutdownSession* NewL();
+ TBool HasPendingRequest() const;
+ void NotifySave(MSaveObserver::TSaveType aSaveType);
+protected: // from CSession
+ IMPORT_C void ServiceL(const RMessage2& aMessage);
+private:
+ void RequestNotifyPowerDown(const RMessage2& aMessage);
+ void RequestNotifyPowerDownCancel();
+ void DoServiceL(const RMessage2& aMessage, TBool& aCompleteRequest);
+ void PowerOffL(const RMessage2& aMessage);
+ void PowerStateL(const RMessage2& aMessage) const;
+
+#ifdef SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+ void HandleShutdownEventL(const RMessage2& aMessage);
+ void ClientArrayL(const RMessage2& aMessage);
+ void IsClientHung(const RMessage2& aMessage) const;
+ void GetShutdownState(const RMessage2& aMessage) const;
+ void ClientArrayCount(const RMessage2& aMessage) const;
+#endif //SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+
+public:
+ TThreadId ClientThreadId() const;
+
+private:
+ RMessagePtr2 iPtr;
+ TInt iCurrentEvent;
+ TInt iOutstandingEvent;
+ };
+
+#endif// SHUTDOWNSRV_H
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdownsrv.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdownsrv.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,759 @@
+/*
+* Copyright (c) 1997-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 "shutdownsrv.h"
+#include "savenotf.h"
+#include "savepriv.h"
+#include "shutdowntimer.h"
+#include
+#include
+#include
+
+#ifdef SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+#include
+#include
+#endif
+
+//The function used to start the profiler, while profiling the shutdown.
+#ifdef __PROFILE_SHUTDOWN
+_LIT(KProfilerCmd,"start -noui");
+void StartProfiler()
+ {
+ RProcess p;
+ TInt r=p.Create(KProfilerName,KProfilerCmd);
+ if (r==KErrNone)
+ {
+ p.Resume();
+ p.Close();
+ }
+ }
+#endif
+
+//The function used to unload the profiler, while profiling the shutdown.
+#ifdef __PROFILE_SHUTDOWN
+void UnloadProfiler()
+ {
+ TFullName name;
+ TFindServer findSvr(KProfilerName);
+ Profiler::Unload();
+ while(findSvr.Next(name) == KErrNone)
+ {
+ User::After(1000000);
+ findSvr.Find(KProfilerName);
+ }
+ }
+#endif
+
+//
+// class CServShutdownServer
+//
+
+/**
+Standard phase-one factory method for creating CServShutdownServer instances.
+@return A newly-constructed shutdown server object.
+@leave Some system-wide error codes including KErrNoMemory.
+*/
+EXPORT_C CServShutdownServer* CServShutdownServer::NewL()
+ { // static
+ CServShutdownServer* self=new(ELeave) CServShutdownServer(CActive::EPriorityStandard);
+ return self;
+ }
+
+/**
+Destructor.
+Releases CShutdownTimer object if it has been allocated.
+*/
+EXPORT_C CServShutdownServer::~CServShutdownServer()
+ {
+ delete iShutdownTimer;
+ }
+
+/**
+This method iterates through all session instances and checks that all they have pending
+requests (which means that all clients have completed their powerdown related processing
+and re-registered itself back to the shutdown server).. If that's true (all sessions have
+pending requests) and iPowerOff flag is nonzero, the method will call SwitchOff() - the
+power will be switched off.
+@see CServShutdownServer::SwitchOff()
+@see CServShutdownSession::HasPendingRequest()
+*/
+EXPORT_C void CServShutdownServer::HandlePowerNotifRequest(const RThread& /*aClient*/)
+ {
+ // if all sessions have a pending request then they've all saved their data and we can switch off
+ TBool completed=ETrue;
+ TDblQueIter iter(iSessionIter);
+ iter.SetToFirst();
+
+ for (CSession2* session=iter++; session!=NULL; session=iter++)
+ {
+ if (!static_cast(session)->HasPendingRequest())
+ {
+ completed=EFalse;
+ break;
+ }
+ }
+ if (completed && iPowerOff)
+ {
+ SwitchOff();
+ }
+ }
+
+/**
+This method will call SwitchOff(), if there are no sessions, so - no clients.
+If there are registered clients (sessions), the method will call CServShutdownSession::NotifySave()
+for each of them.
+If the timer object has been initialised, it calculates the shutdown timeout value
+and adds the timer to the active scheduler.
+@param aSaveType The action, which will be given to the clients, when calling their
+ MSaveObserver::SaveL() implementations.
+@see CServShutdownServer::SwitchOff()
+@see CServShutdownSession::NotifySave()
+*/
+EXPORT_C void CServShutdownServer::NotifySave(MSaveObserver::TSaveType aSaveType)
+ {
+ TDblQueIter iter(iSessionIter);
+ iter.SetToFirst();
+ CSession2* p=iter++;
+ if (p==NULL)
+ {
+ if (iPowerOff)
+ {
+ SwitchOff();
+ }
+ }
+ else
+ {
+ TInt numClients = 0;
+
+ iter.SetToFirst();
+ for (CSession2* session=iter++; session!=NULL; session=iter++)
+ {
+ static_cast(session)->NotifySave(aSaveType);
+ numClients++;
+ }
+
+ if(iShutdownTimer && !iShutdownTimer->IsActive())
+ {
+ iShutdownTimer->Start(numClients);
+ }
+ }
+ }
+
+/**
+@return Non-zero If the powerdown sequence has been initiated.
+*/
+EXPORT_C TBool CServShutdownServer::IsPowerOff() const
+ {
+ return iPowerOff;
+ }
+
+/**
+Cancels any power off request.
+*/
+EXPORT_C void CServShutdownServer::CancelPowerOff()
+ {
+ iPowerOff=EFalse;
+
+ // Cancel the timer.
+ if (iShutdownTimer)
+ {
+ iShutdownTimer->Cancel();
+ }
+ }
+
+/**
+@param aPriority The active object priority.
+*/
+EXPORT_C CServShutdownServer::CServShutdownServer(TInt aPriority):
+ CServer2(aPriority), iShutdownTimer(0)
+ {
+ }
+
+/**
+Completes the server construction by adding the server to the active scheduler and initializing the
+CShutdownTimer object if applicable.
+@leave See CServer2::StartL() leave error codes.
+@see CServer2::StartL()
+@panic KErrNotSupported Incorrect patchable variables configuration.
+*/
+EXPORT_C void CServShutdownServer::ConstructL()
+ {
+ iShutdownTimer = CShutdownTimer::NewL(*this);
+ #ifdef TEST_SHUTDOWN_SERVER
+ StartL(__TEST_SHUTDOWN_SERVER_NAME);
+ #else
+ StartL(__SHUTDOWN_SERVER_NAME);
+ #endif
+ }
+
+/**
+This method switches off the power using the Power API.
+If there is a defined SYSLIBS_TEST macro, the method does nothing.
+*/
+void CServShutdownServer::DoSwitchOff()
+ {
+ //Finalize the drives before shutting down
+ RFs fs;
+ TInt r=fs.Connect();
+ if (r==KErrNone)
+ {
+ //Ignore the error code, as it is not a critical call
+ r=fs.FinaliseDrives();
+ fs.Close();
+ }
+#ifdef SYSLIBS_TEST
+ // Test mode, only prints debug message.
+ RDebug::Printf("CServShutdownServer::SwitchOff() gets run in SYSLIBS_TEST mode.\n");
+#else //SYSLIBS_TEST
+ // restart or standby/shutdown using Power API
+ if (Power::EnableWakeupEvents(iPowerEvent) == KErrNone)
+ {
+ // Prepare to wake up if power event is standby
+ TRequestStatus s;
+ Power::RequestWakeupEventNotification(s);
+ Power::PowerDown(); // if event is Restart, this function should never return
+ User::WaitForRequest(s);
+ }
+#endif //SYSLIBS_TEST
+ }
+void CServShutdownServer::SwitchOff()
+ {
+ // If the timer has applied, cancel any outstanding requests,
+ // no matter SwitchOff() has been triggered by the timer or the shutdown server.
+ if (iShutdownTimer)
+ {
+ iShutdownTimer->Cancel();
+ }
+
+ if (iPowerOff)
+ {
+#ifdef __PROFILE_SHUTDOWN
+ UnloadProfiler();
+#endif //__PROFILE_SHUTDOWN
+ }
+ //SSM shutdown is used only when patchable constant KSsmGracefulShutdown is true
+#ifdef SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+ if (iPowerOff && !IsSsmGracefulShutdown())
+#else
+ if (iPowerOff)
+#endif
+ {
+ //Shutdown using old shutdownsrv, not SSM
+ DoSwitchOff();
+ }
+ iPowerOff = EFalse;
+ }
+
+/**
+This method creates a new server side session object.
+@param aVersion Shutdown server version number.
+@return A pointer to the created session object.
+@leave KErrNotSupported Unknown shutdown server version
+@leave Some system-wide error codes including KErrNoMemory.
+*/
+CSession2* CServShutdownServer::NewSessionL(const TVersion& aVersion,const RMessage2& /*aMessage*/) const
+ {
+ TVersion v(KShutdownMajorVN,KShutdownMinorVN,KShutdownBuildVN);
+ if (!User::QueryVersionSupported(v,aVersion))
+ User::Leave(KErrNotSupported);
+
+ CSession2* pSession = CServShutdownSession::NewL();
+ return pSession;
+ }
+
+/**
+This method has to be called, when the registered clients have to be notified that a
+particular action has to be done, such as MSaveObserver::ESaveData, MSaveObserver::ESaveAll,
+MSaveObserver::EReleaseRAM,...
+If this is a beginning of a powerdown sequence, the method will store the locales and the HAL
+properties.
+If the requested action is not MSaveObserver::ESaveNone, the method will call
+CServShutdownServer::NotifySave().
+@param aAction The type of the requested action
+@param aPowerOff If it is non-zero, this is the beginning of a powerdown sequence.
+@param aEvent The type of the powerdown event (power off or restart)
+@leave KErrNotSupported Leaves if aEvent is invalid
+@see CServShutdownServer::NotifySave()
+@see TPowerState
+*/
+EXPORT_C void CServShutdownServer::HandleShutdownEventL(MSaveObserver::TSaveType aAction,TBool aPowerOff, TPowerState aEvent)
+ {
+ if( aPowerOff )
+ {
+ __ASSERT_ALWAYS((aEvent>EPwActive)&&(aEvent type and appends to it the
+thread id-s of the all registered clients.
+The created CArrayFix instance will be pushed on the cleanup stack.
+@return A pointer to a CArrayFix array with the client thread id-s.
+@leave Some system-wide error codes including KErrNoMemory.
+*/
+EXPORT_C CArrayFix* CServShutdownServer::ClientArrayLC()
+ {
+ CArrayFix* clientArray=new(ELeave) CArrayFixFlat(2);
+ CleanupStack::PushL(clientArray);
+ TDblQueIter iter(iSessionIter);
+ iter.SetToFirst();
+ TKeyArrayFix key(0,ECmpTInt);
+ for (CSession2* session=iter++; session!=NULL; session=iter++)
+ {
+ TThreadId id=static_cast(session)->ClientThreadId();
+ TInt pos;
+ if (clientArray->Find(id,key,pos)!=0)
+ {
+ clientArray->AppendL(id);
+ }
+ }
+ return clientArray;
+
+
+ }
+
+#ifdef SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+/**
+This method will write thread id-s of all clients that are registered for shutdown notification in to a streem.
+@param aMessage consists of buffer, clientside array count and server side array count
+*/
+void CServShutdownServer::ClientArrayL(const RMessage2& aMessage)
+ {
+ const TInt arrayItemCount = ClientArrayCount();
+ //write all registered client array in a buffer only when client side
+ //array count is equal to server side array count
+ if(arrayItemCount == aMessage.Int1())
+ {
+ const TInt sizeRequired = arrayItemCount * sizeof(TThreadId);
+ CBufFlat* const buf=CBufFlat::NewL(sizeRequired);
+ CleanupStack::PushL(buf);
+ RBufWriteStream writeStream(*buf);
+ CleanupClosePushL(writeStream);
+ TDblQueIter iter(iSessionIter);
+ iter.SetToFirst();
+ for (CSession2* session=iter++; session!=NULL; session=iter++)
+ {
+ TThreadId id=static_cast(session)->ClientThreadId();
+ //Thread id (which is TUint64) is broken in to two TUint32 and written as RWriteStream doesnt
+ //support TUint64. Client API will recreate TUint64 value from these TUint32 values.
+ if(id.Id())
+ {
+ //RWriteStream there is no API to writes a TUint64 value as a 64 bit value to stream
+ writeStream.WriteUint32L(I64HIGH(id.Id()));
+ writeStream.WriteUint32L(I64LOW(id.Id()));
+ }
+ }
+ writeStream.CommitL();
+ aMessage.WriteL(0, buf->Ptr(0));
+ CleanupStack::PopAndDestroy(2,buf); //writeStream, buf
+ }
+ else
+ {
+ aMessage.Write(2, TPckg(arrayItemCount));
+ }
+
+ }
+
+/**
+This method will return the number of client that are registered for Shutdown notification with ShutDown server.
+@return Number of registered clients.
+*/
+TInt CServShutdownServer::ClientArrayCount()
+ {
+ TDblQueIter iter(iSessionIter);
+ iter.SetToFirst();
+ TInt count =0;
+ for (CSession2* session=iter++; session!=NULL; session=iter++)
+ {
+ TThreadId id=static_cast(session)->ClientThreadId();
+ //Clients which are not registered for notification will not have RMessage in the session and hence
+ //thread id will be NULL(e.g.CLafShutdownEventObserverAdaptor). Avoid such clients.
+ if(id.Id())
+ {
+ ++count;
+ }
+ }
+ return count;
+ }
+#endif //SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+/**
+@return Non-zero, if all registered clients have pending requests.
+*/
+TBool CServShutdownServer::AllSessionsHavePendingRequest() const
+ {
+ TBool ret=ETrue;
+ TDblQueIter iter(iSessionIter);
+ iter.SetToFirst();
+ for (CSession2* session=iter++; session!=NULL; session=iter++)
+ {
+ const CServShutdownSession* mySession=static_cast(session);
+ if (!mySession->HasPendingRequest())
+ {
+ ret=EFalse;
+ break;
+ }
+ }
+ return ret;
+ }
+
+
+/**
+@param aId Client's thread id.
+@return Non-zero if the client with this thread id has no pending request.
+*/
+EXPORT_C TBool CServShutdownServer::IsClientHung(TThreadId aId) const
+ {
+ TBool ret=EFalse;
+ TDblQueIter iter(iSessionIter);
+ iter.SetToFirst();
+ for (CSession2* session=iter++; session!=NULL; session=iter++)
+ {
+ const CServShutdownSession* mySession=static_cast(session);
+
+ if (mySession->ClientThreadId()==aId)
+ {
+ if (!mySession->HasPendingRequest())
+ {
+ ret=ETrue;
+ break;
+ }
+ }
+ }
+ return ret;
+ }
+
+//
+// class CServShutdownSession
+//
+
+/**
+*/
+EXPORT_C CServShutdownSession::CServShutdownSession()
+ : CSession2(),
+ iCurrentEvent(-1), iOutstandingEvent(-1)
+ {}
+
+/**
+*/
+EXPORT_C CServShutdownSession::~CServShutdownSession()
+ {
+ }
+
+/**
+Standard phase-one factor method for creating CServShutdownSession instances.
+@return A pointer to the created CServShutdownSession instance.
+@leave KErrNoMemory Not enough memory to complete the operation.
+*/
+CServShutdownSession* CServShutdownSession::NewL()
+ {
+ return new (ELeave) CServShutdownSession;
+ }
+
+/**
+@return Non-zero, if the client has a pending request.
+*/
+TBool CServShutdownSession::HasPendingRequest() const
+ {
+ return !iPtr.IsNull();
+ }
+
+/**
+This method will complete the pending asychronous client request, effectivelly notifying it
+about the action, which the client has to do.
+@param aSaveType The type of the requested save action.
+*/
+void CServShutdownSession::NotifySave(MSaveObserver::TSaveType aSaveType)
+ {
+ const TInt saveType=(TInt)aSaveType;
+ if (HasPendingRequest())
+ {
+ iPtr.Complete(saveType);
+ iCurrentEvent=saveType;
+ }
+ else
+ {
+ if (iCurrentEvent==(TInt)MSaveObserver::ESaveAll ||
+ (iCurrentEvent==(TInt)MSaveObserver::ESaveQuick &&
+ aSaveType==MSaveObserver::ESaveData))
+ {
+ iOutstandingEvent=saveType;
+ }
+ }
+ }
+
+/**
+This method dispatches all client requests to the appropriate method calls.
+@param aMessage The client's message
+@param aCompleteRequest An output parameter. If zero, the client request
+ will be completed later.
+*/
+void CServShutdownSession::DoServiceL(const RMessage2& aMessage, TBool& aCompleteRequest)
+ {
+ switch (aMessage.Function())
+ {
+ case TSaveOpCodeNotify:
+ RequestNotifyPowerDown(aMessage);
+ // don't complete async message yet
+ aCompleteRequest=EFalse;
+ break;
+ case TSaveOpCodeNotifyCancel:
+ RequestNotifyPowerDownCancel();
+ break;
+ case TSaveOpCodeHandleError:
+ User::Leave(KErrNotSupported);
+ break;
+ case TSaveOpCodePowerOff:
+ PowerOffL(aMessage);
+ break;
+ case TSaveOpCodeQueryPowerState:
+ PowerStateL(aMessage);
+ break;
+#ifdef SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+ case EEventObsAdaptHandleShutdown:
+ case EEventObsAdaptClientArrayCount:
+ case EEventObsAdaptClientArray:
+ case EEventObsAdaptIsClientHung:
+ case EEventObsAdaptGetShutdownState:
+ {
+ if (IsSsmGracefulShutdown()) // SSM should be used for device shutdown
+ {
+ switch(aMessage.Function())
+ {
+ case EEventObsAdaptHandleShutdown:
+ HandleShutdownEventL(aMessage);
+ break;
+ case EEventObsAdaptClientArrayCount:
+ ClientArrayCount(aMessage);
+ break;
+ case EEventObsAdaptClientArray:
+ ClientArrayL(aMessage);
+ break;
+ case EEventObsAdaptIsClientHung:
+ IsClientHung(aMessage);
+ break;
+ case EEventObsAdaptGetShutdownState:
+ GetShutdownState(aMessage);
+ break;
+ }
+ }
+ break;
+ }
+#endif // SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+ default:
+ User::Leave(KErrNotSupported);
+ break;
+ }
+ }
+
+#ifdef SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+
+void CServShutdownSession::HandleShutdownEventL(const RMessage2& aMessage)
+ {
+ MSaveObserver::TSaveType action = static_cast (aMessage.Int0());
+ TBool powerOff = static_cast (aMessage.Int1());
+ TPowerState powerEvent = static_cast (aMessage.Int2());
+
+ CServShutdownServer* server = static_cast(const_cast(Server()));
+ server->HandleShutdownEventL(action, powerOff, powerEvent);
+ }
+
+void CServShutdownSession::ClientArrayCount(const RMessage2& aMessage) const
+ {
+ CServShutdownServer* server = static_cast(const_cast(Server()));
+ const TInt count = server->ClientArrayCount();
+ aMessage.Write(0, TPckg(count));
+ }
+/*
+This function will write all registered client array in a buffer only when client side array count is equal to server side array count
+else aMessage will contain an empty buffer and server side array count .
+@param aMessage consists of buffer, clientside array count and server side array count
+*/
+void CServShutdownSession::ClientArrayL(const RMessage2& aMessage)
+ {
+ CServShutdownServer* server = static_cast(const_cast(Server()));
+ server->ClientArrayL(aMessage);
+ }
+
+void CServShutdownSession::IsClientHung(const RMessage2& aMessage) const
+ {
+ CServShutdownServer* server = static_cast(const_cast(Server()));
+ TThreadId threadId = static_cast (aMessage.Int0());
+ TBool clientHung = server->IsClientHung(threadId);
+
+ aMessage.Write(1, TPckg(clientHung));
+ }
+
+void CServShutdownSession::GetShutdownState(const RMessage2& aMessage) const
+ {
+ TBool powerOff;
+ TBool allSessionsHavePendingRequest;
+
+ CServShutdownServer* server = static_cast(const_cast(Server()));
+ server->GetShutdownState(powerOff, allSessionsHavePendingRequest);
+ aMessage.Write(0, TPckg(powerOff));
+ aMessage.Write(1, TPckg(allSessionsHavePendingRequest));
+ }
+
+#endif //SYMBIAN_SSM_GRACEFUL_SHUTDOWN
+
+/**
+Handles the servicing of client requests passed to the shutdown server.
+@param aMessage The message containing the client request.
+*/
+EXPORT_C void CServShutdownSession::ServiceL(const RMessage2& aMessage)
+ {
+ TBool aCompleteRequest=ETrue;
+ TRAPD(error, DoServiceL(aMessage, aCompleteRequest));
+ if (aCompleteRequest)
+ {
+ aMessage.Complete(error);
+ }
+ }
+
+/**
+This method processes a client-side registration request. It is an asynchronous request,
+which will be completed later, when powerdown/low memory event occurs.
+@param aMessage The message containing the client request.
+*/
+void CServShutdownSession::RequestNotifyPowerDown(const RMessage2& aMessage)
+ {
+ iCurrentEvent=-1;
+ iPtr = aMessage;
+
+ if (iOutstandingEvent!=-1)
+ {
+ NotifySave((MSaveObserver::TSaveType)iOutstandingEvent);
+ iOutstandingEvent=-1;
+ }
+ //The thread variable is just a dummy variable(input for CServShutdownServer::HandlePowerNotifRequest)
+ //and is not used inside the function at all, it is there to preserve BC.
+ RThread thread;
+ static_cast(const_cast(Server()))->HandlePowerNotifRequest(thread);
+ }
+
+/**
+This method cancels the client registration, completing the requests with
+KErrCancel error code.
+*/
+void CServShutdownSession::RequestNotifyPowerDownCancel()
+ {
+ if (HasPendingRequest())
+ iPtr.Complete(KErrCancel);
+ }
+
+/**
+@return The client's thread id.
+*/
+TThreadId CServShutdownSession::ClientThreadId() const
+ {
+ TThreadId id = NULL;
+ RThread clientThread;
+ //Clients which are not registered for notification will not have RMessage in the session and hence
+ //thread id will be NULL(e.g.CLafShutdownEventObserverAdaptor). Avoid such clients.
+ if(!iPtr.IsNull() && KErrNone == iPtr.Client(clientThread))
+ {
+ id = clientThread.Id();
+ }
+ clientThread.Close();
+ return id;
+ }
+
+
+/**
+This method should be used only with SYSLIBS_TEST macro defined and can be used to
+initiate a powerdown sequence.
+Without SYSLIBS_TEST macro defined the method will panic the client with
+KErrNotSupported error code.
+@param aMessage The message containing the client request.
+*/
+#ifdef SYSLIBS_TEST
+void CServShutdownSession::PowerOffL(const RMessage2& aMessage)
+ {
+ MSaveObserver::TSaveType action = static_cast (aMessage.Int0());
+ TBool powerOff = static_cast (aMessage.Int1());
+ CServShutdownServer* server = static_cast(const_cast(Server()));
+ server->HandleShutdownEventL(action, powerOff);
+ }
+#else
+void CServShutdownSession::PowerOffL(const RMessage2& aMessage)
+ {
+ aMessage.Panic(__SHUTDOWN_SERVER_NAME, KErrNotSupported);
+ }
+#endif//SYSLIBS_TEST
+
+/**
+This method should be used only with SYSLIBS_TEST macro defined and can be used to
+get the power state of the server.
+Without SYSLIBS_TEST macro defined the method will panic the client with
+KErrNotSupported error code.
+@param aMessage The message containing the client request.
+*/
+#ifdef SYSLIBS_TEST
+void CServShutdownSession::PowerStateL(const RMessage2& aMessage) const
+ {
+ CServShutdownServer* server = static_cast(const_cast(Server()));
+ TBool powerOff = server->IsPowerOff();
+ TPckg powerOffPckg(powerOff);
+ aMessage.WriteL(0,powerOffPckg);
+ }
+#else
+void CServShutdownSession::PowerStateL(const RMessage2& aMessage) const
+ {
+ aMessage.Panic(__SHUTDOWN_SERVER_NAME, KErrNotSupported);
+ }
+#endif//SYSLIBS_TEST
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdownsrvpatchdata.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdownsrvpatchdata.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2007-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
+
+//all the constant value needs to be in a separate file
+//Care should be taken not to define the exported data in the same source file in which
+//they are referred, lest the compiler inline's it. If inlined, the data cannot be patched.
+//Hence, the definition of data must be put in a separate source file and they must be
+//referred in other source files by using 'extern' qualifier
+
+
+/**
+Patchable constant used in the shutdown server.
+Used to calculate the shutdown timer with KShtdwnTimeoutClient.
+It represents the base timeout value in microseconds.
+
+The timeout is calculated as:
+KShtdwnTimeoutBase + KShtdwnTimeoutClient * numClients,
+where numClients is the number of connecting clients.
+
+If the timeout value is;
+-1, the timer is not used, the server will wait for all client's registration
+ before executing the shutdown;
+0, the timer expires immediately, the server will execute the shutdown immediately,
+ not waiting for any client's re-registration.
+other value greater than 0, the server will wait a certain period of time for the clients' registration
+ and execute the shutdown if the timer expires or all clients re-register.
+
+Licensees who wish to alter these patchable constants will need to define
+these ROM build-time macros in their product HRH or IBY files.
+
+The new values must follow the rule:
+KShtdwnTimeoutBase >= -1 and
+KShtdwnTimeoutClient >= 0.
+
+Otherwise, the server panics with KErrNotSupported.
+
+@internalComponent
+@see KShtdwnTimeoutClient
+*/
+EXPORT_C extern const TInt32 KShtdwnTimeoutBase = 1000000;
+
+/**
+Patchable data used in the shutdown server.
+Used to calculate the shutdown timer with KShtdwnTimeoutBase.
+It represents the timeout value for each client in microseconds.
+@internalComponent
+@see KShtdwnTimeoutBase
+*/
+EXPORT_C extern const TInt32 KShtdwnTimeoutClient = 500000;
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdownsrvpatchdata.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdownsrvpatchdata.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2007-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:
+*
+*/
+
+
+#ifndef SHUTDOWNSRVPATCHDATA_H
+#define SHUTDOWNSRVPATCHDATA_H
+
+#include
+
+IMPORT_C extern const TInt32 KShtdwnTimeoutBase;
+IMPORT_C extern const TInt32 KShtdwnTimeoutClient;
+
+#endif // SHUTDOWNSRVPATCHDATA_H
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdowntimer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdowntimer.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2007-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 "shutdowntimer.h"
+#include "savepriv.h"
+#include "shutdownsrv.h"
+#include "shutdownsrvpatchdata.h"
+
+/*
+Patchable data KShtdwnTimeoutBase can be configured as -1 not to apply the timer
+as backward compatibility.
+*/
+const TInt32 KShtdwnTimeoutNoApply = -1;
+
+/**
+Standard phase-one factory method for creating CShutdownTimer instances.
+It might return a NULL pointer if the patchable constant KShtdwnTimeoutBase has been configured
+as -1 which indicates no timer should be started.
+@param aShtdwnSrv The reference to CServShutdownServer.
+@return 0 if no timer should be started, otherwise a pointer to CShutdownTimer object.
+@leave Some system-wide error codes including KErrNoMemory.
+@panic KErrNotSupported Incorrect patchable variables configuration.
+*/
+CShutdownTimer* CShutdownTimer::NewL(CServShutdownServer& aShtdwnSrv)
+ {
+ __ASSERT_ALWAYS( (KShtdwnTimeoutBase >= KShtdwnTimeoutNoApply) && (KShtdwnTimeoutClient >= 0), \
+ User::Panic(__SHUTDOWN_SERVER_NAME, KErrNotSupported));
+
+ CShutdownTimer* self = 0;
+ if(KShtdwnTimeoutBase > KShtdwnTimeoutNoApply)
+ {
+ self = new(ELeave) CShutdownTimer(aShtdwnSrv);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ }
+
+ return self;
+ }
+
+/**
+Constructor
+@param aShtdwnSrv The reference to CServShutdownServer
+*/
+CShutdownTimer::CShutdownTimer(CServShutdownServer& aShtdwnSrv):
+ CTimer(CActive::EPriorityStandard), iShtdwnSrv(aShtdwnSrv)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+/**
+Removes the timer object from the active scheduler's list if it has been added.
+*/
+void CShutdownTimer::DoCancel()
+ {
+ // Do nothing
+ }
+
+/**
+Calculates the timeout value by the number of the clients and starts the timer.
+@param aNumClients The number of the clients.
+*/
+void CShutdownTimer::Start(TInt aNumClients)
+ {
+ TInt32 timeout = KShtdwnTimeoutBase + KShtdwnTimeoutClient * aNumClients;
+ After(timeout);
+ }
+
+
+/**
+Gets called when the timeout expires.
+Calls CServShutdownServer::SwitchOff() to execute the switch off.
+*/
+void CShutdownTimer::RunL()
+ {
+ iShtdwnSrv.SwitchOff();
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdowntimer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp1/src/shutdowntimer.h Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2007-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:
+*
+*/
+
+
+#if !defined(SHUTDOWNTIMER_H)
+#define SHUTDOWNTIMER_H
+
+#include
+
+class CServShutdownServer;
+/**
+This class describes a timer object.
+Its RunL() implemantation calls CServShutdownServer::SwitchOff() to execute the switch off
+when timeout expires.
+@internalTechnology
+*/
+NONSHARABLE_CLASS(CShutdownTimer): public CTimer
+ {
+public:
+ static CShutdownTimer* NewL(CServShutdownServer& aShtdwnSrv);
+ void DoCancel();
+ void Start(TInt aNumClients);
+protected:
+ virtual void RunL();
+private:
+ CShutdownTimer(CServShutdownServer& aShtdwnSrv);
+private:
+ CServShutdownServer& iShtdwnSrv;
+ };
+#endif//SHUTDOWNTIMER_H
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/bld.inf Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+ARMV5
+
+PRJ_MMPFILES
+compresstarget.mmp
+nocompresstarget.mmp
+bytepaircompresstarget.mmp
+inflatecompresstarget.mmp
+combinedcompresstarget.mmp
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/bytepaircompresstarget.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/bytepaircompresstarget.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* 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:
+*
+*/
+
+TARGET bytepaircompress.exe
+TARGETTYPE exe
+SOURCEPATH .
+SOURCE compress.cpp
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+
+BYTEPAIRCOMPRESSTARGET
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/combinedcompresstarget.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/combinedcompresstarget.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,30 @@
+/*
+* 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:
+*
+*/
+
+TARGET combinedcompress.exe
+TARGETTYPE exe
+SOURCEPATH .
+SOURCE compress.cpp
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+
+NOCOMPRESSTARGET
+COMPRESSTARGET
+INFLATECOMPRESSTARGET
+BYTEPAIRCOMPRESSTARGET
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/compress.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/compress.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+#include "e32def.h"
+TInt E32Main()
+ {
+ return 0;
+ }
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/compresstarget.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/compresstarget.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* 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:
+*
+*/
+
+TARGET compress.exe
+TARGETTYPE exe
+SOURCEPATH .
+SOURCE compress.cpp
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+
+COMPRESSTARGET
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/inflatecompresstarget.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/inflatecompresstarget.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* 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:
+*
+*/
+
+TARGET inflatecompress.exe
+TARGETTYPE exe
+SOURCEPATH .
+SOURCE compress.cpp
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+
+INFLATECOMPRESSTARGET
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/nocompresstarget.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp11/nocompresstarget.mmp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,27 @@
+/*
+* 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:
+*
+*/
+
+TARGET nocompress.exe
+TARGETTYPE exe
+SOURCEPATH .
+SOURCE compress.cpp
+UID 0x100039ce 0x00000001
+LIBRARY euser.lib
+SECUREID 0x10003a5c
+SYSTEMINCLUDE /epoc32/include
+
+NOCOMPRESSTARGET
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp2/codecs/ColorConverter.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp2/codecs/ColorConverter.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,229 @@
+/*
+* Copyright (c) 1999-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
+
+
+_LIT(KBitmapUtilPanicCategory, "TImageBitmapUtil");
+GLDEF_C void Panic(TImageBitmapUtilPanic aError)
+ {
+ User::Panic(KBitmapUtilPanicCategory, aError);
+ }
+
+/**
+@see TColorConvertor.
+*/
+class TGray2Convertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return RgbToMonochrome(aColor)>>7; }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Gray2(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ TInt* end = aIndexBuffer+aCount;
+ while(aIndexBuffer>7;
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TGray4Convertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return RgbToMonochrome(aColor)>>6; }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Gray4(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ TInt* end = aIndexBuffer+aCount;
+ while(aIndexBuffer>6;
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TGray16Convertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return RgbToMonochrome(aColor)>>4; }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Gray16(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ TInt* end = aIndexBuffer+aCount;
+ while(aIndexBuffer>4;
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TGray256Convertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return RgbToMonochrome(aColor); }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Gray256(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ TInt* end = aIndexBuffer+aCount;
+ while(aIndexBufferColor16();
+ }
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TColor256Convertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return aColor.Color256(); }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Color256(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ TInt* end = aIndexBuffer+aCount;
+ while(aIndexBufferColor256();
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TColor4KConvertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return aColor._Color4K(); }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Color4K(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ TInt* end = aIndexBuffer+aCount;
+ while(aIndexBuffer_Color4K();
+ }
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TColor64KConvertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return aColor._Color64K(); }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Color64K(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ TInt* end = aIndexBuffer+aCount;
+ while(aIndexBuffer_Color64K();
+ }
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TColor16MConvertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return aColor.Internal(); }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Color16M(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ Mem::Copy(aIndexBuffer,aColorBuffer,aCount*sizeof(TRgb));
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TColor16MUConvertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return aColor._Color16MU(); }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Color16MU(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ // do a Mem::Copy as this ensures that top byte (which
+ // in a 16MA context is interpreted as the alpha value)
+ // is 0xFF (opaque) instead of 0x00 (transparent)
+ Mem::Copy(aIndexBuffer,aColorBuffer,aCount*sizeof(TRgb));
+ }
+ };
+
+/**
+@see TColorConvertor.
+*/
+class TColor16MAConvertor : public TColorConvertor
+ {
+public:
+ virtual TInt ColorIndex(TRgb aColor) const { return aColor._Color16MA(); }
+ virtual TRgb Color(TInt aColorIndex) const { return TRgb::Color16MA(aColorIndex); }
+ virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const
+ {
+ Mem::Copy(aIndexBuffer,aColorBuffer,aCount*sizeof(TRgb));
+ }
+ };
+
+TColorConvertor* CreateColorConvertorL(TDisplayMode aDisplayMode)
+ {
+ switch (aDisplayMode)
+ {
+ case EGray2: return new(ELeave) TGray2Convertor;
+ case EGray4: return new(ELeave) TGray4Convertor;
+ case EGray16: return new(ELeave) TGray16Convertor;
+ case EGray256: return new(ELeave) TGray256Convertor;
+ case EColor16: return new(ELeave) TColor16Convertor;
+ case EColor256: return new(ELeave) TColor256Convertor;
+ case EColor4K: return new(ELeave) TColor4KConvertor;
+ case EColor64K: return new(ELeave) TColor64KConvertor;
+ case EColor16M: return new(ELeave) TColor16MConvertor;
+ case EColor16MU: return new(ELeave) TColor16MUConvertor;
+ case EColor16MA: return new(ELeave) TColor16MAConvertor;
+ default:
+ User::Leave(KErrNotSupported);
+ return NULL; //Keep the compiler happy!!
+ };
+ }
+
+
+
diff -r 360bd6b35136 -r 22486c9c7b15 sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp2/codecs/ImageProcessor.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/mmp/mmp2/codecs/ImageProcessor.cpp Wed Jun 23 17:27:59 2010 +0800
@@ -0,0 +1,2535 @@
+/*
+* Copyright (c) 1999-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
+#include "ImageProcessorPriv.h"
+#include "ImageUtils.h"
+#include "ImageClientMain.h"
+
+//Size of dynamically allocated buffers used by CPixelWriter & CMonochromePixelWriter
+const TInt KPixelWriterBufferSize = 1024;
+const TInt KPixelWriterBufferThreeQuarter = 768;
+
+/**
+Constructor for this class.
+*/
+EXPORT_C CImageProcessorExtension::CImageProcessorExtension()
+:iOperation(EDecodeNormal)
+ {
+ }
+
+/**
+Destructor for this class.
+*/
+EXPORT_C CImageProcessorExtension::~CImageProcessorExtension()
+ {
+ }
+
+/**
+Sets the area of interest of the image to be decoded.
+
+@param aRect
+ A reference to a TRect that specifies the location and size of the region to be decoded.
+
+*/
+EXPORT_C void CImageProcessorExtension::SetClippingRect(const TRect& aRect)
+ {
+ iClippingRect = aRect;
+ }
+
+/**
+Sets the scaling coefficient for the decode.
+
+@param aScalingCoeff
+ The scaling coefficient.
+
+@see TImageConvScaler::SetScalingL
+*/
+EXPORT_C void CImageProcessorExtension::SetScaling(TInt aScalingCoeff)
+ {
+ iScalingCoeff = aScalingCoeff;
+ }
+
+/**
+Sets the desired size of the destination image for the decode.
+
+@param aDesiredSize
+ The desired size of the destination image.
+
+@see TImageConvScaler::SetScalingL
+*/
+EXPORT_C void CImageProcessorExtension::SetScaling(const TSize& aDesiredSize)
+ {
+ iDesiredSize = aDesiredSize;
+ }
+
+/**
+Sets the operation to be applied to the image.
+
+@param aOperation
+ The operation to apply to the image.
+
+@see TImageConvScaler::SetScalingL
+*/
+EXPORT_C void CImageProcessorExtension::SetOperation(TTransformOptions aOperation)
+ {
+ iOperation = aOperation;
+ }
+
+/**
+Sets an initial one-off number of scanlines to be skipped.
+This must be called prior to calling SetYPosIncrement(),
+if it is to be used.
+
+@param aNumberOfScanlines
+ The number of scanlines to skip.
+
+@see CImageProcessor::SetYPosIncrement()
+*/
+EXPORT_C void CImageProcessorExtension::SetInitialScanlineSkipPadding(TInt aNumberOfScanlines)
+ {
+ iNumberOfScanlinesToSkip = aNumberOfScanlines;
+ }
+
+//
+// ImageProcessorUtility
+//
+
+//
+// CColorImageProcessor
+//
+
+/**
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+void CColorImageProcessor::CreateBlockBufferL(TInt aBlockArea)
+ {
+ delete[] iBlockBuffer;
+ iBlockBuffer = NULL;
+
+ if(aBlockArea)
+ iBlockBuffer = new (ELeave) TRgb[aBlockArea];
+
+ iBlockArea = aBlockArea;
+ }
+
+/**
+ * Destructor.
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+CColorImageProcessor::~CColorImageProcessor()
+ {
+ delete[] iBlockBuffer;
+ }
+
+/**
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+TBool CColorImageProcessor::SetPixelRun(TRgb aColor,TInt aCount)
+ {
+ TBool returnValue = EFalse;
+
+ while(aCount--)
+ returnValue |= SetPixel(aColor);
+
+ return returnValue;
+ }
+
+/**
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+TBool CColorImageProcessor::SetPixels(TRgb* aColorBuffer,TInt aBufferLength)
+ {
+ TBool returnValue = EFalse;
+
+ while(aBufferLength--)
+ returnValue |= SetPixel(*aColorBuffer++);
+
+ return returnValue;
+ }
+
+/**
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+TBool CColorImageProcessor::SetMonoPixel(TInt aGray256)
+ {
+ return SetPixel(TRgb(aGray256,aGray256,aGray256));
+ }
+
+/**
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+TBool CColorImageProcessor::SetMonoPixelRun(TInt aGray256,TInt aCount)
+ {
+ return SetPixelRun(TRgb(aGray256,aGray256,aGray256),aCount);
+ }
+
+/**
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+TBool CColorImageProcessor::SetMonoPixels(TUint32* aGray256Buffer,TInt aBufferLength)
+ {
+ TBool returnValue = EFalse;
+
+ while(aBufferLength--)
+ {
+ TUint32 gray256 = *aGray256Buffer++;
+ returnValue = SetPixel(TRgb(gray256,gray256,gray256));
+ }
+ return returnValue;
+ }
+
+/**
+ * @see CImageProcessor.
+ * @internalComponent
+ */
+TBool CColorImageProcessor::SetMonoPixelBlock(TUint32* aGray256Buffer)
+ {
+ ASSERT(iBlockBuffer);
+
+ TRgb* blockBufferPtr = iBlockBuffer;
+ TRgb* blockBufferPtrLimit = blockBufferPtr+iBlockArea;
+
+ while(blockBufferPtr=0);
+ iLineRepeat = aLineRepeat;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+void CPixelWriter::SetPixelPadding(TInt aNumberOfPixels)
+ {
+ iPixelPadding = aNumberOfPixels;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CPixelWriter::SetPixel(TRgb aColor)
+ {
+ *iRgbBufferPtr++ = aColor;
+
+ if (iRgbBufferPtr == iRgbBufferPtrLimit)
+ return FlushPixels();
+
+ return EFalse;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CPixelWriter::SetPixelRun(TRgb aColor,TInt aCount)
+ {
+ while(aCount)
+ {
+ TRgb* ptr = iRgbBufferPtr;
+ TRgb* limit = ptr+aCount;
+ if(limit>iRgbBufferPtrLimit)
+ limit = iRgbBufferPtrLimit;
+
+ TInt n = limit-ptr;
+ aCount -= n;
+
+ if(n&1)
+ *ptr++ = aColor;
+ if(n&2)
+ {
+ *ptr++ = aColor;
+ *ptr++ = aColor;
+ }
+ if(n&4)
+ {
+ *ptr++ = aColor;
+ *ptr++ = aColor;
+ *ptr++ = aColor;
+ *ptr++ = aColor;
+ }
+ while(ptr= KPixelWriterBufferThreeQuarter)
+ {
+ TRgb* rgbBuffer = iRgbBuffer;
+
+ if (iRgbBufferPtr != rgbBuffer)
+ {
+ // flush rest of the pixels
+ if(FlushPixels())
+ {
+ return ETrue;
+ }
+ }
+
+ // use external buffer without copying data
+ TBool rValue = EFalse;
+
+ while (aBufferLength && !rValue)
+ {
+ TInt bufferLength = (aBufferLength>KPixelWriterBufferSize)?KPixelWriterBufferSize:aBufferLength;
+ iRgbBuffer = aColorBuffer;
+ iRgbBufferPtr = aColorBuffer+bufferLength;
+ iRgbBufferPtrLimit = aColorBuffer+bufferLength;
+
+ rValue = FlushPixels();
+ aBufferLength -= bufferLength;
+ aColorBuffer += bufferLength;
+ }
+
+ // restore pointers to inner buffer
+ iRgbBuffer = rgbBuffer;
+ iRgbBufferPtr = rgbBuffer;
+ iRgbBufferPtrLimit = rgbBuffer+KPixelWriterBufferSize;
+
+ return rValue;
+ }
+
+ while(aBufferLength)
+ {
+ TRgb* ptr = iRgbBufferPtr;
+ TRgb* limit = ptr+aBufferLength;
+ if(limit>iRgbBufferPtrLimit)
+ limit = iRgbBufferPtrLimit;
+
+ TInt n = limit-ptr;
+ aBufferLength -= n;
+
+ if(n&1)
+ *ptr++ = *aColorBuffer++;
+ if(n&2)
+ {
+ *ptr++ = *aColorBuffer++;
+ *ptr++ = *aColorBuffer++;
+ }
+ while(ptr(aColorBuffer);
+ }
+ else
+ {
+ SetPixelBlockIndex(aColorBuffer);
+ }
+
+ TInt ySkip = 0;
+ if(iNumberOfScanlinesToSkip > 0)
+ {
+ ySkip = iNumberOfScanlinesToSkip * iBlockSize.iWidth;
+ indexBufferPtr += ySkip;
+ ySkip = iNumberOfScanlinesToSkip;
+ iNumberOfScanlinesToSkip = 0; // Only call this conditional once.
+ }
+
+ TInt imageWidth = iImageRegion.iBr.iX;
+ TInt imageHeight = iImageRegion.iBr.iY;
+ TInt endOfImage = iDrawBottomUp ? -1 : imageHeight;
+
+ // The minimum number of pixels to render horizontally
+ TInt minWidth = Min(iBlockSize.iWidth, imageWidth - iPos.iX);
+
+ // The next vertical position. Note that this is usually the height of the block, but
+ // in the case of the first block when clipping is required, this will be reduced by ySkip.
+ TInt nextYPos = iDrawBottomUp ? (iPos.iY - iBlockSize.iHeight) + ySkip :
+ (iPos.iY + iBlockSize.iHeight) - ySkip;
+
+ TInt endPosition = iDrawBottomUp ? Max(nextYPos, endOfImage) : Min(nextYPos, endOfImage);
+
+ // Once the first block has been processed, iYInc is set to block height
+ iYInc = iDrawBottomUp ? -iBlockSize.iHeight + ySkip : iBlockSize.iHeight - ySkip;
+
+ // Skip unnecessary pixels (for cropping, or padding when rotated)
+ indexBufferPtr += iPixelPadding;
+
+ TPoint pos(iPos);
+ iUtil.Begin();
+ for(;iDrawBottomUp ? pos.iY > endPosition : pos.iY < endPosition; iDrawBottomUp ? pos.iY-- : pos.iY++)
+ {
+ iUtil.SetPos(pos);
+ iUtil.SetPixels(indexBufferPtr, minWidth);
+ indexBufferPtr += iBlockSize.iWidth; // next line in block
+ }
+ iUtil.End();
+
+ iPos.iX += iBlockSize.iWidth;
+
+ if (iPos.iX >= imageWidth)
+ {
+ return NewLine();
+ }
+
+ return EFalse;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CPixelWriter::FlushPixels()
+ {
+ TRgb* rgbBufferPtrLimit = iRgbBufferPtr;
+ iRgbBufferPtr = iRgbBuffer;
+
+ if(iPos.iY < iImageRegion.iTl.iY || iPos.iY >= iImageRegion.iBr.iY)
+ return ETrue;
+
+ iUtil.Begin();
+
+ TBool finished = EFalse;
+ for (TRgb* rgbBufferPtr = iRgbBuffer; rgbBufferPtr < rgbBufferPtrLimit; )
+ {
+ TInt pixelsToSkip = Min(rgbBufferPtrLimit - rgbBufferPtr,iPixelsToSkip);
+ rgbBufferPtr += pixelsToSkip;
+ iPixelsToSkip -= pixelsToSkip;
+
+ if(iPixelsToSkip)
+ break;
+
+ TInt pixelsToFlush = Min(rgbBufferPtrLimit - rgbBufferPtr,iImageRegion.iBr.iX - iPos.iX);
+
+ if(!pixelsToFlush)
+ break;
+
+ SetPixelBufferIndex(rgbBufferPtr,pixelsToFlush);
+ rgbBufferPtr += pixelsToFlush;
+
+ TBool fillDown = iYInc > 0;
+ TPoint pos(iPos);
+ TInt posYLimit;
+ if(fillDown)
+ posYLimit = Min(pos.iY + iLineRepeat + 1 ,iImageRegion.iBr.iY);
+ else
+ posYLimit = Max(pos.iY - iLineRepeat - 1 ,iImageRegion.iTl.iY-1);
+
+ for(;fillDown ? pos.iY < posYLimit : pos.iY > posYLimit; fillDown ? pos.iY++ : pos.iY--)
+ {
+ if(!iUtil.SetPos(pos-iImageRegion.iTl))
+ {
+ iUtil.End();
+ return ETrue;
+ }
+ iUtil.SetPixels(iIndexBuffer,pixelsToFlush);
+ }
+
+ iPos.iX += pixelsToFlush;
+ if (iPos.iX >= iImageRegion.iBr.iX)
+ {
+ finished = NewLine();
+ if(finished)
+ break;
+ }
+ }
+
+ iUtil.End();
+
+ return finished;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CPixelWriter::SetPos(const TPoint& aPosition)
+ {
+ if(iImageRegion.Contains(aPosition))
+ {
+ FlushPixels();
+ iPixelsToSkip = 0;
+ iPos = aPosition;
+ return ETrue;
+ }
+
+ return EFalse;
+ }
+
+void CPixelWriter::Reset()
+ {
+ delete iColorConv;
+ iColorConv = NULL;
+
+ delete[] iRgbBuffer;
+ iRgbBuffer = NULL;
+
+ delete[] iIndexBuffer;
+ iIndexBuffer = NULL;
+
+ iPos.SetXY(0,0);
+ iPixelsToSkip = 0;
+ iImageRegion.SetRect(0,0,0,0);
+ iBlockSize.SetSize(0,0);
+
+ iDrawBottomUp = EFalse;
+ }
+
+void CPixelWriter::DoPrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize* aBlockSize)
+ {
+ if( (aImageRect.iTl.iX<0) || (aImageRect.iTl.iY<0) || (aImageRect.Size().iWidth>aBitmap.SizeInPixels().iWidth) || (aImageRect.Size().iHeight>aBitmap.SizeInPixels().iHeight) )
+ {
+ User::Leave(KErrArgument);
+ }
+
+ Reset();
+
+ iDisplayMode = aBitmap.DisplayMode();
+
+ iImageRegion = aImageRect;
+
+ ASSERT(iColorConv==NULL);
+ iColorConv = TColorConvertor::NewL(aBitmap.DisplayMode());
+ iUtil.SetBitmapL(&aBitmap);
+
+ if (aBlockSize)
+ {
+ if (aBlockSize->iWidth <= 0 || aBlockSize->iHeight <= 0)
+ {
+ User::Leave(KErrArgument);
+ }
+
+ iBlockSize = *aBlockSize;
+ iBlockArea = iBlockSize.iWidth * iBlockSize.iHeight;
+
+ ASSERT(iIndexBuffer == NULL);
+ iIndexBuffer = new(ELeave) TUint32[iBlockArea];
+
+ iIndexBufferPtrLimit = iIndexBuffer + iBlockArea;
+ CreateBlockBufferL(iBlockArea);
+
+ switch(iOperation)
+ {
+ case EDecodeRotate180:
+ case EDecodeRotate270:
+ case EDecodeHorizontalFlip:
+ case EDecodeVerticalFlipRotate90:
+ iDrawBottomUp = ETrue;
+ break;
+ default:
+ iDrawBottomUp = EFalse;
+ }
+
+ iYInc = iDrawBottomUp ? -iBlockSize.iHeight : iBlockSize.iHeight;
+ iStartPosition.SetXY(iImageRegion.iTl.iX, iDrawBottomUp ? iImageRegion.iBr.iY - 1 : 0);
+ iEndPosition.SetXY(iImageRegion.iBr.iX, iDrawBottomUp ?
+ iImageRegion.iTl.iY - 1 : iImageRegion.iBr.iY);
+ iPos = iStartPosition;
+ }
+ else
+ {
+ iPos = iImageRegion.iTl;
+ iStartPosition = iPos;
+ iEndPosition = aImageRect.iBr;
+
+ ASSERT(iRgbBuffer == NULL);
+ iRgbBuffer = new(ELeave) TRgb[KPixelWriterBufferSize];
+
+ iRgbBufferPtr = iRgbBuffer;
+ iRgbBufferPtrLimit = iRgbBuffer + KPixelWriterBufferSize;
+
+ ASSERT(iIndexBuffer == NULL);
+ iIndexBuffer = new(ELeave) TUint32[KPixelWriterBufferSize];
+
+ iIndexBufferPtrLimit = iIndexBuffer + KPixelWriterBufferSize;
+ }
+ }
+
+TBool CPixelWriter::NewLine()
+ {
+ iPos.iX = iStartPosition.iX;
+ iPos.iY += iYInc;
+
+ if(iPos.iY < iStartPosition.iY || iPos.iY >= iEndPosition.iY)
+ {
+ return ETrue;
+ }
+
+ iPixelsToSkip = iPixelPadding;
+ return EFalse;
+ }
+
+void CPixelWriter::SetPixelBufferIndex(TRgb* aColorBuffer,TInt aCount)
+ {
+ iColorConv->ColorToIndex(REINTERPRET_CAST(TInt*,iIndexBuffer),aColorBuffer,aCount);
+ }
+
+void CPixelWriter::SetPixelBlockIndex(TRgb* aColorBuffer)
+ {
+ iColorConv->ColorToIndex(REINTERPRET_CAST(TInt*,iIndexBuffer),aColorBuffer,iIndexBufferPtrLimit-iIndexBuffer);
+ }
+
+//
+// CMonochromePixelWriter
+//
+
+/**
+ *
+ * Static factory function to create CMonochromePixelWriter objects.
+ *
+ * @return Pointer to a fully constructed CMonochromePixelWriter object.
+ */
+CMonochromePixelWriter* CMonochromePixelWriter::NewL()
+ {
+ return new(ELeave) CMonochromePixelWriter;
+ }
+
+/**
+ *
+ * Default constructor for this class.
+ */
+CMonochromePixelWriter::CMonochromePixelWriter():
+ iYInc(1)
+ {}
+
+/**
+ *
+ * Destructor
+ */
+CMonochromePixelWriter::~CMonochromePixelWriter()
+ {
+ Reset();
+ }
+
+/**
+ *
+ * @see CImageProcessor
+ */
+void CMonochromePixelWriter::PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect)
+ {
+ DoPrepareL(aBitmap,aImageRect,NULL);
+ }
+
+/**
+ *
+ * @see CImageProcessor
+ */
+void CMonochromePixelWriter::PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize& aRgbBlockSize)
+ {
+ DoPrepareL(aBitmap,aImageRect,&aRgbBlockSize);
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+void CMonochromePixelWriter::SetYPosIncrement(TInt aYInc)
+ {
+ iYInc = aYInc - iNumberOfScanlinesToSkip;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+void CMonochromePixelWriter::SetPixelPadding(TInt aNumberOfPixels)
+ {
+ iPixelPadding = aNumberOfPixels;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+void CMonochromePixelWriter::SetLineRepeat(TInt aLineRepeat)
+ {
+ ASSERT(aLineRepeat>=0);
+ iLineRepeat = aLineRepeat;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CMonochromePixelWriter::SetMonoPixel(TInt aGray256)
+ {
+ *iGray256BufferPtr++ = aGray256;
+
+ if (iGray256BufferPtr != iGray256BufferPtrLimit)
+ return EFalse;
+
+ return FlushPixels();
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CMonochromePixelWriter::SetMonoPixelRun(TInt aGray256,TInt aCount)
+ {
+ while(aCount)
+ {
+ TUint32* ptr = iGray256BufferPtr;
+ TUint32* limit = ptr+aCount;
+ if(limit>iGray256BufferPtrLimit)
+ limit = iGray256BufferPtrLimit;
+
+ TInt n = limit-ptr;
+ aCount -= n;
+
+ if(n&1)
+ *ptr++ = aGray256;
+ if(n&2)
+ {
+ *ptr++ = aGray256;
+ *ptr++ = aGray256;
+ }
+ if(n&4)
+ {
+ *ptr++ = aGray256;
+ *ptr++ = aGray256;
+ *ptr++ = aGray256;
+ *ptr++ = aGray256;
+ }
+ while(ptr= KPixelWriterBufferThreeQuarter)
+ {
+ TUint32* gray256Buffer = iGray256Buffer;
+
+ if (iGray256BufferPtr != gray256Buffer)
+ {
+ // flush rest of the pixels
+ if(FlushPixels())
+ {
+ return ETrue;
+ }
+ }
+
+ // use external buffer without copying data
+ TBool rValue = EFalse;
+
+ while (aBufferLength && !rValue)
+ {
+ TInt bufferLength = (aBufferLength>KPixelWriterBufferSize)?KPixelWriterBufferSize:aBufferLength;
+ iGray256Buffer = aGray256Buffer;
+ iGray256BufferPtr = aGray256Buffer+bufferLength;
+ iGray256BufferPtrLimit = aGray256Buffer+bufferLength;
+
+ rValue = FlushPixels();
+ aBufferLength -= bufferLength;
+ aGray256Buffer += bufferLength;
+ }
+
+ // restore pointers to inner buffer
+ iGray256Buffer = gray256Buffer;
+ iGray256BufferPtr = gray256Buffer;
+ iGray256BufferPtrLimit = gray256Buffer+KPixelWriterBufferSize;
+
+ return rValue;
+ }
+
+ while(aBufferLength)
+ {
+ TUint32* ptr = iGray256BufferPtr;
+ TUint32* limit = ptr+aBufferLength;
+ if(limit>iGray256BufferPtrLimit)
+ limit = iGray256BufferPtrLimit;
+
+ TInt n = limit-ptr;
+ aBufferLength -= n;
+
+ if(n&1)
+ *ptr++ = *aGray256Buffer++;
+ if(n&2)
+ {
+ *ptr++ = *aGray256Buffer++;
+ *ptr++ = *aGray256Buffer++;
+ }
+ while(ptr 0)
+ {
+ ySkip = iNumberOfScanlinesToSkip * iBlockSize.iWidth;
+ indexBufferPtr += ySkip;
+ ySkip = iNumberOfScanlinesToSkip;
+ iNumberOfScanlinesToSkip = 0; // Only call this conditional once.
+ }
+
+ TInt imageWidth = iImageRegion.iBr.iX;
+ TInt imageHeight = iImageRegion.iBr.iY;
+ TInt endOfImage = iDrawBottomUp ? -1 : imageHeight;
+
+ // The minimum number of pixels to render horizontally
+ TInt minWidth = Min(iBlockSize.iWidth, imageWidth - iPos.iX);
+
+ // The next vertical position. Note that this is usually the height of the block, but
+ // in the case of the first block when clipping is required, this will be reduced by ySkip.
+ TInt nextYPos = iDrawBottomUp ? (iPos.iY - iBlockSize.iHeight) + ySkip :
+ (iPos.iY + iBlockSize.iHeight) - ySkip;
+
+ TInt endPosition = iDrawBottomUp ? Max(nextYPos, endOfImage) : Min(nextYPos, endOfImage);
+
+ // Once the first block has been processed, iYInc is set to block height
+ iYInc = iDrawBottomUp ? -iBlockSize.iHeight + ySkip : iBlockSize.iHeight - ySkip;
+
+ // Skip unnecessary pixels (for cropping, or padding when rotated)
+ indexBufferPtr += iPixelPadding;
+
+ TPoint pos(iPos);
+ iUtil.Begin();
+ for(;iDrawBottomUp ? pos.iY > endPosition : pos.iY < endPosition; iDrawBottomUp ? pos.iY-- : pos.iY++)
+ {
+ iUtil.SetPos(pos);
+ iUtil.SetPixels(indexBufferPtr, minWidth);
+ indexBufferPtr += iBlockSize.iWidth; // next line in block
+ }
+ iUtil.End();
+
+ iPos.iX += iBlockSize.iWidth;
+
+ if (iPos.iX >= imageWidth)
+ {
+ return NewLine();
+ }
+
+ return EFalse;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CMonochromePixelWriter::FlushPixels()
+ {
+ TUint32* gray256BufferPtrLimit = iGray256BufferPtr;
+ iGray256BufferPtr = iGray256Buffer;
+
+ if(iPos.iY < iImageRegion.iTl.iY || iPos.iY >= iImageRegion.iBr.iY)
+ return ETrue;
+
+ iUtil.Begin();
+
+ TBool finished = EFalse;
+ for (TUint32* gray256BufferPtr = iGray256Buffer; gray256BufferPtr < gray256BufferPtrLimit; )
+ {
+ TInt pixelsToSkip = Min(gray256BufferPtrLimit - gray256BufferPtr,iPixelsToSkip);
+ gray256BufferPtr += pixelsToSkip;
+ iPixelsToSkip -= pixelsToSkip;
+
+ if(iPixelsToSkip)
+ break;
+
+ TInt pixelsToFlush = Min(gray256BufferPtrLimit - gray256BufferPtr,iImageRegion.iBr.iX - iPos.iX);
+
+ if(!pixelsToFlush)
+ break;
+
+ SetPixelBufferIndex(gray256BufferPtr,pixelsToFlush);
+ gray256BufferPtr += pixelsToFlush;
+
+ TBool fillDown = iYInc > 0;
+ TPoint pos(iPos);
+ TInt posYLimit;
+ if(fillDown)
+ posYLimit = Min(pos.iY + iLineRepeat + 1 ,iImageRegion.iBr.iY);
+ else
+ posYLimit = Max(pos.iY - iLineRepeat - 1 ,iImageRegion.iTl.iY-1);
+
+ for(;fillDown ? pos.iY < posYLimit : pos.iY > posYLimit; fillDown ? pos.iY++ : pos.iY--)
+ {
+ if(!iUtil.SetPos(pos-iImageRegion.iTl))
+ {
+ iUtil.End();
+ return ETrue;
+ }
+ iUtil.SetPixels(iIndexBuffer,pixelsToFlush);
+ }
+
+ iPos.iX += pixelsToFlush;
+ if (iPos.iX >= iImageRegion.iBr.iX)
+ {
+ finished = NewLine();
+ if(finished)
+ break;
+ }
+ }
+
+ iUtil.End();
+
+ return finished;
+ }
+
+/**
+ *
+ * @see CImageProcessor.
+ */
+TBool CMonochromePixelWriter::SetPos(const TPoint& aPosition)
+ {
+ if(iImageRegion.Contains(aPosition))
+ {
+ FlushPixels();
+ iPixelsToSkip = 0;
+ iPos = aPosition;
+ return ETrue;
+ }
+
+ return EFalse;
+ }
+
+void CMonochromePixelWriter::Reset()
+ {
+ delete iColorConv;
+ iColorConv = NULL;
+
+ delete[] iGray256Buffer;
+ iGray256Buffer = NULL;
+
+ delete[] iIndexBuffer;
+ iIndexBuffer = NULL;
+
+ iPos.SetXY(0,0);
+ iPixelsToSkip = 0;
+ iImageRegion.SetRect(0,0,0,0);
+ iBlockSize.SetSize(0,0);
+
+ iDrawBottomUp = EFalse;
+ }
+
+void CMonochromePixelWriter::DoPrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize* aBlockSize)
+ {
+ if( (aImageRect.iTl.iX<0) || (aImageRect.iTl.iY<0) || (aImageRect.Size().iWidth>aBitmap.SizeInPixels().iWidth) || (aImageRect.Size().iHeight>aBitmap.SizeInPixels().iHeight) )
+ {
+ User::Leave(KErrArgument);
+ }
+
+ Reset();
+
+ iImageRegion = aImageRect;
+
+ iColorConv = TColorConvertor::NewL(aBitmap.DisplayMode());
+ iUtil.SetBitmapL(&aBitmap);
+
+ if (aBlockSize)
+ {
+ if (aBlockSize->iWidth <= 0 || aBlockSize->iHeight <= 0)
+ {
+ User::Leave(KErrArgument);
+ }
+
+ iBlockSize = *aBlockSize;
+ iBlockArea = iBlockSize.iWidth * iBlockSize.iHeight;
+
+ ASSERT(iIndexBuffer == NULL);
+ iIndexBuffer = new(ELeave) TUint32[iBlockArea];
+
+ iIndexBufferPtrLimit = iIndexBuffer + iBlockArea;
+ CreateBlockBufferL(iBlockArea);
+
+ switch(iOperation)
+ {
+ case EDecodeRotate180:
+ case EDecodeRotate270:
+ case EDecodeHorizontalFlip:
+ case EDecodeVerticalFlipRotate90:
+ iDrawBottomUp = ETrue;
+ break;
+ default:
+ iDrawBottomUp = EFalse;
+ }
+
+ iYInc = iDrawBottomUp ? -iBlockSize.iHeight : iBlockSize.iHeight;
+ iStartPosition.SetXY(iImageRegion.iTl.iX, iDrawBottomUp ? iImageRegion.iBr.iY - 1 : 0);
+ iEndPosition.SetXY(iImageRegion.iBr.iX, iDrawBottomUp ?
+ iImageRegion.iTl.iY - 1 : iImageRegion.iBr.iY);
+ iPos = iStartPosition;
+ }
+ else
+ {
+ iPos = iImageRegion.iTl;
+ iStartPosition = iPos;
+ iEndPosition = aImageRect.iBr;
+
+ ASSERT(iGray256Buffer == NULL);
+ iGray256Buffer = new(ELeave) TUint32[KPixelWriterBufferSize];
+
+ iGray256BufferPtr = iGray256Buffer;
+ iGray256BufferPtrLimit = iGray256Buffer + KPixelWriterBufferSize;
+
+ ASSERT(iIndexBuffer == NULL);
+ iIndexBuffer = new(ELeave) TUint32[KPixelWriterBufferSize];
+
+ iIndexBufferPtrLimit = iIndexBuffer + KPixelWriterBufferSize;
+ }
+
+ for(TInt i=0; i<256; i++)
+ {
+ iIndexLookup[i] = iColorConv->ColorIndex(TRgb(i,i,i));
+ }
+ }
+
+TBool CMonochromePixelWriter::NewLine()
+ {
+ iPos.iX = iStartPosition.iX;
+ iPos.iY += iYInc;
+
+ if(iPos.iY < iStartPosition.iY || iPos.iY >= iEndPosition.iY)
+ {
+ return ETrue;
+ }
+
+ iPixelsToSkip = iPixelPadding;
+ return EFalse;
+ }
+
+void CMonochromePixelWriter::SetPixelBlockIndex(TUint32* aGray256Buffer)
+ {
+ CMonochromePixelWriter::SetPixelBufferIndex(aGray256Buffer,iBlockArea);
+ }
+
+void CMonochromePixelWriter::SetPixelBufferIndex(TUint32* aGray256Buffer,TInt aCount)
+ {
+ TUint32* indexBufferPtr = iIndexBuffer;
+ TUint32* indexBufferPtrLimit = indexBufferPtr+aCount;
+ TUint32* indexLookup = iIndexLookup;
+
+ if(aCount&1)
+ *indexBufferPtr++ = indexLookup[*aGray256Buffer++];
+ if(aCount&2)
+ {
+ *indexBufferPtr++ = indexLookup[*aGray256Buffer++];
+ *indexBufferPtr++ = indexLookup[*aGray256Buffer++];
+ }
+ while (indexBufferPtr < indexBufferPtrLimit)
+ {
+ *indexBufferPtr++ = indexLookup[*aGray256Buffer++];
+ *indexBufferPtr++ = indexLookup[*aGray256Buffer++];
+ *indexBufferPtr++ = indexLookup[*aGray256Buffer++];
+ *indexBufferPtr++ = indexLookup[*aGray256Buffer++];
+ }
+ }
+
+//
+// CErrorDiffuser::TColorError
+//
+
+inline CErrorDiffuser::TColorError::TColorError():
+ iRedError(0),
+ iGreenError(0),
+ iBlueError(0)
+ {}
+
+inline CErrorDiffuser::TColorError::TColorError(TInt aRedError,TInt aGreenError,TInt aBlueError):
+ iRedError(aRedError),
+ iGreenError(aGreenError),
+ iBlueError(aBlueError)
+ {}
+
+inline void CErrorDiffuser::TColorError::AdjustColor(TRgb& aColor) const
+ {
+ TInt red = ColorCcomponent::ClampColorComponent((iRedError >> 4) + aColor.Red());
+ TInt green = ColorCcomponent::ClampColorComponent((iGreenError >> 4) + aColor.Green());
+ TInt blue = ColorCcomponent::ClampColorComponent((iBlueError >> 4) + aColor.Blue());
+ aColor = TRgb(red,green,blue);
+ }
+
+inline void CErrorDiffuser::TColorError::SetError(TRgb aIdealColor,TRgb aActualColor)
+ {
+ iRedError = aIdealColor.Red() - aActualColor.Red();
+ iGreenError = aIdealColor.Green() - aActualColor.Green();
+ iBlueError = aIdealColor.Blue() - aActualColor.Blue();
+ }
+
+inline CErrorDiffuser::TColorError CErrorDiffuser::TColorError::operator+(const TColorError& aColorError) const
+ {
+ TInt redError = iRedError + aColorError.iRedError;
+ TInt greenError = iGreenError + aColorError.iGreenError;
+ TInt blueError = iBlueError + aColorError.iBlueError;
+ return TColorError(redError,greenError,blueError);
+ }
+
+inline CErrorDiffuser::TColorError CErrorDiffuser::TColorError::operator-(const TColorError& aColorError) const
+ {
+ TInt redError = iRedError - aColorError.iRedError;
+ TInt greenError = iGreenError - aColorError.iGreenError;
+ TInt blueError = iBlueError - aColorError.iBlueError;
+ return TColorError(redError,greenError,blueError);
+ }
+
+inline CErrorDiffuser::TColorError CErrorDiffuser::TColorError::operator<<(TInt aShift) const
+ {
+ TInt redError = iRedError << aShift;
+ TInt greenError = iGreenError << aShift;
+ TInt blueError = iBlueError << aShift;
+ return TColorError(redError,greenError,blueError);
+ }
+
+inline CErrorDiffuser::TColorError& CErrorDiffuser::TColorError::operator+=(const TColorError& aColorError)
+ {
+ iRedError += aColorError.iRedError;
+ iGreenError += aColorError.iGreenError;
+ iBlueError += aColorError.iBlueError;
+ return *this;
+ }
+
+CErrorDiffuser::CErrorDiffuser()
+ {
+ }
+
+CErrorDiffuser::~CErrorDiffuser()
+ {
+ Reset();
+ }
+
+void CErrorDiffuser::DoPrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize* aBlockSize)
+ {
+ CPixelWriter::DoPrepareL(aBitmap,aImageRect,aBlockSize);
+
+ TInt scanlineErrorBufferLength = iImageRegion.iBr.iX+2;
+
+ if (iBlockArea > 0)
+ {
+ ASSERT(iEdgeErrorBuffer == NULL);
+ iEdgeErrorBuffer = new(ELeave) TColorError[iBlockSize.iHeight];
+
+ scanlineErrorBufferLength += iBlockSize.iWidth;
+ }
+
+ ASSERT(iScanlineErrorBuffer == NULL);
+ iScanlineErrorBuffer = new(ELeave) TColorError[scanlineErrorBufferLength];
+
+ if (iDisplayMode == EColor64K)
+ {
+ ASSERT(iRedErrorLookupTable == NULL);
+ iRedErrorLookupTable = new(ELeave) TInt8[256];
+ ASSERT(iGreenErrorLookupTable == NULL);
+ iGreenErrorLookupTable = new(ELeave) TInt8[256];
+
+ for (TInt i=0;i<256;i++)
+ {
+ TInt tmp = i & 0xf8;
+ iRedErrorLookupTable[i] = i - (tmp | (tmp >> 5));
+ tmp = i & 0xfc;
+ iGreenErrorLookupTable[i] = i - (tmp | (tmp >> 6));
+ }
+ }
+ }
+
+void CErrorDiffuser::SetPixelBufferIndex(TRgb* aColorBuffer,TInt aCount)
+ {
+ // use optimized function for EColor64K mode
+ if (iDisplayMode == EColor64K)
+ {
+ SetPixelBufferColor64KIndex(aColorBuffer, aCount);
+ return;
+ }
+
+ TInt clearX = iPos.iX;
+
+ TInt yDiff = iPos.iY - iLastPos.iY;
+ if(yDiff != 0) // On a new line?
+ {
+ new(&iNextError) TColorError;
+ clearX = iImageRegion.iBr.iX; // To clear to end of line
+
+ if(yDiff == -1 || yDiff == 1) // Now on ajacent line?
+ {
+ clearX -= iLastPos.iX; // Clear end of previous line
+ if(clearX)
+ {
+ Mem::FillZ(iScanlineErrorBuffer + iLastPos.iX + 2, clearX * sizeof(TColorError));
+ }
+ clearX = iPos.iX; // To clear up to current position
+ }
+ iLastPos.iX = iImageRegion.iTl.iX; // Start of this line
+ }
+
+ clearX -= iLastPos.iX;
+ if(clearX > 0) // Treat any skipped pixels as if they produced no error
+ {
+ new(&iNextError) TColorError;
+ Mem::FillZ(iScanlineErrorBuffer + iLastPos.iX + 2, clearX * sizeof(TColorError));
+ }
+
+ iLastPos.iY = iPos.iY;
+ iLastPos.iX = iPos.iX+aCount;
+
+ TUint32* indexBufferPtr = iIndexBuffer;
+ TUint32* indexBufferPtrLimit = indexBufferPtr+aCount;
+ TColorError* scanlineErrorBufferPtr = iScanlineErrorBuffer + iPos.iX;
+ TColorError error;
+ TRgb color;
+
+ while(indexBufferPtrColorIndex(color);
+ *indexBufferPtr++ = index;
+
+ error.SetError(color, iColorConv->Color(index));
+
+ iNextError = (error << 3) - error; // Set right error for this pixel
+
+ *scanlineErrorBufferPtr++ += error + (error << 1); // Set left-down error for this pixel
+
+ *scanlineErrorBufferPtr += error + (error << 2); // Set down error for this pixel
+
+ iNextError += *(scanlineErrorBufferPtr+1);
+
+ *(scanlineErrorBufferPtr+1) = error; // Set right-down error for this pixel
+ }
+ }
+
+// faster function (see listing) then Bitmap Util ClampColorComponent
+inline TInt CErrorDiffuser::ClipColorComponent(TInt value)
+ {
+ if (TUint(value) > 0xFF)
+ {
+ value = value < 0 ? 0 : 0xFF;
+ }
+ return value;
+ }
+
+void CErrorDiffuser::SetPixelBufferColor64KIndex(TRgb* aColorBuffer,TInt aCount)
+ {
+ TInt clearX = iPos.iX;
+
+ TInt yDiff = iPos.iY - iLastPos.iY;
+ if(yDiff != 0) // On a new line?
+ {
+ iNextRedError = 0;
+ iNextGreenError = 0;
+ iNextBlueError = 0;
+ clearX = iImageRegion.iBr.iX; // To clear to end of line
+
+ if(yDiff == -1 || yDiff == 1) // Now on ajacent line?
+ {
+ clearX -= iLastPos.iX; // Clear end of previous line
+ if(clearX > 0)
+ {
+ Mem::FillZ(iScanlineErrorBuffer + iLastPos.iX + 2, clearX * sizeof(TColorError));
+ }
+ clearX = iPos.iX; // To clear up to current position
+ }
+ iLastPos.iX = iImageRegion.iTl.iX; // Start of this line
+ }
+
+ clearX -= iLastPos.iX;
+ if(clearX > 0) // Treat any skipped pixels as if they produced no error
+ {
+ iNextRedError = 0;
+ iNextGreenError = 0;
+ iNextBlueError = 0;
+ Mem::FillZ(iScanlineErrorBuffer + iLastPos.iX + 2, clearX * sizeof(TColorError));
+ }
+
+ iLastPos.iY = iPos.iY;
+ iLastPos.iX = iPos.iX+aCount;
+
+ TUint32* indexBufferPtr = iIndexBuffer;
+ TUint32* indexBufferPtrLimit = indexBufferPtr+aCount;
+
+ TColorError* scanlineErrorBufferPtr = iScanlineErrorBuffer + iPos.iX;
+
+ TInt redError = iNextRedError;
+ TInt greenError = iNextGreenError;
+ TInt blueError = iNextBlueError;
+
+ while(indexBufferPtrRed();
+ red = ClipColorComponent(red + (redError >> 4));
+
+ register TInt error = iRedErrorLookupTable[red];
+
+ // Set right error for red component
+ scanlineErrorBufferPtr->iRedError += error + (error << 1); // Set left-down error for this pixel
+ (scanlineErrorBufferPtr+1)->iRedError += error + (error << 2); // Set down error for this pixel
+ redError = (scanlineErrorBufferPtr+2)->iRedError + (error << 3) - error; // Set right error for this pixel
+ (scanlineErrorBufferPtr+2)->iRedError = error; // Set right-down error for this pixel
+
+ // green
+ register TInt green = aColorBuffer->Green();
+
+ green = ClipColorComponent(green + (greenError >> 4));
+
+ error = iGreenErrorLookupTable[green];
+
+ // Set right error for green component
+ scanlineErrorBufferPtr->iGreenError += error + (error << 1); // Set left-down error for this pixel
+ (scanlineErrorBufferPtr+1)->iGreenError += error + (error << 2); // Set down error for this pixel
+ greenError = (scanlineErrorBufferPtr+2)->iGreenError + (error << 3) - error; // Set right error for this pixel
+ (scanlineErrorBufferPtr+2)->iGreenError = error; // Set right-down error for this pixel
+
+ // blue
+ register TInt blue = aColorBuffer->Blue();
+
+ blue = ClipColorComponent(blue + (blueError >> 4));
+
+ *indexBufferPtr++ = ((red & 0xf8) << 8) | ((green & 0xfc) << 3) | ((blue & 0xf8) >> 3);
+
+ error = iRedErrorLookupTable[blue];// use the same lookup table for blue color
+
+ // Set right error for blue component
+ scanlineErrorBufferPtr->iBlueError += error + (error << 1); // Set left-down error for this pixel
+ (scanlineErrorBufferPtr+1)->iBlueError += error + (error << 2); // Set down error for this pixel
+ blueError = (scanlineErrorBufferPtr+2)->iBlueError + (error << 3) - error; // Set right error for this pixel
+ (scanlineErrorBufferPtr+2)->iBlueError = error; // Set right-down error for this pixel
+
+ scanlineErrorBufferPtr++;
+ aColorBuffer++;
+ }
+
+ iNextRedError = redError;
+ iNextGreenError = greenError;
+ iNextBlueError = blueError;
+
+
+ }
+
+void CErrorDiffuser::SetPixelBlockIndex(TRgb* aColorBuffer)
+ {
+ if(iPos.iY!=iLastPos.iY)
+ {
+ Mem::FillZ(iEdgeErrorBuffer,sizeof(TColorError) * iBlockSize.iHeight);
+ }
+
+ TUint32* indexBufferPtr = iIndexBuffer;
+
+ TColorError error;
+ TColorError* edgeErrorBuffer = iEdgeErrorBuffer;
+
+ for (TInt row = 0; row < iBlockSize.iHeight; row++)
+ {
+ TColorError* errorValue = iScanlineErrorBuffer + iPos.iX;
+ TColorError nextError = *edgeErrorBuffer + *errorValue;
+ *edgeErrorBuffer = error;
+
+ for (TInt col = 0; col < iBlockSize.iWidth; col++)
+ {
+ TRgb bufferColor = *aColorBuffer++;
+ nextError.AdjustColor(bufferColor);
+
+ TUint32 index = iColorConv->ColorIndex(bufferColor);
+ *indexBufferPtr++ = index;
+
+ error.SetError(bufferColor,iColorConv->Color(index));
+
+ if (col > 0)
+ *(errorValue - 1) += error + (error << 1); // Set left-down error for this pixel
+ else
+ *errorValue = error + (error << 1);
+
+ *errorValue += error + (error << 2); // Set down error for this pixel
+ errorValue++;
+
+ nextError = (error << 3) - error; // Set right error for this pixel
+
+ if (col < iBlockSize.iWidth)
+ {
+ nextError += *errorValue;
+ *errorValue = error; // Set right-down error for this pixel
+ }
+
+ }
+
+ *edgeErrorBuffer++ += nextError;
+ }
+
+ iLastPos.iY = iPos.iY;
+ iLastPos.iX = iPos.iX+iBlockSize.iWidth;
+ }
+
+void CErrorDiffuser::Reset()
+ {
+ CPixelWriter::Reset();
+
+ delete[] iScanlineErrorBuffer;
+ iScanlineErrorBuffer = NULL;
+
+ delete[] iEdgeErrorBuffer;
+ iEdgeErrorBuffer = NULL;
+
+ delete iRedErrorLookupTable;
+ iRedErrorLookupTable = NULL;
+
+ delete iGreenErrorLookupTable;
+ iGreenErrorLookupTable = NULL;
+
+ }
+
+//
+// CMonochromeErrorDiffuser
+//
+
+
+/**
+ *
+ * Static factory function to create CMonochromeErrorDiffuser objects.
+ *
+ * @return Pointer to a fully constructed CMonochromeErrorDiffuser object.
+ */
+CMonochromeErrorDiffuser* CMonochromeErrorDiffuser::NewL()
+ {
+ return new(ELeave) CMonochromeErrorDiffuser;
+ }
+
+CMonochromeErrorDiffuser::CMonochromeErrorDiffuser()
+ {}
+
+CMonochromeErrorDiffuser::~CMonochromeErrorDiffuser()
+ {
+ Reset();
+ }
+
+void CMonochromeErrorDiffuser::DoPrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize* aBlockSize)
+ {
+ CMonochromePixelWriter::DoPrepareL(aBitmap,aImageRect,aBlockSize);
+
+ TInt scanlineErrorBufferLength = iImageRegion.iBr.iX+2;
+
+ if (iBlockArea > 0)
+ {
+ ASSERT(iEdgeErrorBuffer == NULL);
+ iEdgeErrorBuffer = new(ELeave) TInt[iBlockSize.iHeight];
+
+ Mem::FillZ(iEdgeErrorBuffer,sizeof(TInt) * iBlockSize.iHeight);
+ scanlineErrorBufferLength += iBlockSize.iWidth;
+ }
+
+ ASSERT(iScanlineErrorBuffer == NULL);
+ iScanlineErrorBuffer = new(ELeave) TInt[scanlineErrorBufferLength];
+
+ Mem::FillZ(iScanlineErrorBuffer,sizeof(TInt) * scanlineErrorBufferLength);
+ }
+
+void CMonochromeErrorDiffuser::SetPixelBufferIndex(TUint32* aGray256Buffer,TInt aCount)
+ {
+ TInt clearX = iPos.iX;
+
+ TInt yDiff = iPos.iY - iLastPos.iY;
+ if(yDiff != 0) // On a new line?
+ {
+ iNextError = 0;
+ clearX = iImageRegion.iBr.iX; // To clear to end of line
+
+ if(yDiff == -1 || yDiff == 1) // Now on ajacent line?
+ {
+ clearX -= iLastPos.iX; // Clear end of previous line
+ if(clearX)
+ Mem::FillZ(iScanlineErrorBuffer + iLastPos.iX + 2, clearX * sizeof(TInt));
+ clearX = iPos.iX; // To clear up to current position
+ }
+ iLastPos.iX = iImageRegion.iTl.iX; // Start of this line
+ }
+
+ clearX -= iLastPos.iX;
+ if(clearX > 0) // Treat any skipped pixels as if they produced no error
+ {
+ iNextError = 0;
+ Mem::FillZ(iScanlineErrorBuffer + iLastPos.iX + 2, clearX * sizeof(TInt));
+ }
+
+ iLastPos.iY = iPos.iY;
+ iLastPos.iX = iPos.iX+aCount;
+
+ TUint32* indexBufferPtr = iIndexBuffer;
+ TUint32* indexBufferPtrLimit = indexBufferPtr+aCount;
+
+ TInt* scanlineErrorBufferPtr = iScanlineErrorBuffer + iPos.iX;
+ TInt nextError = iNextError;
+
+ while(indexBufferPtr> 4);
+ TUint32 index = iIndexLookup[ColorCcomponent::ClampColorComponent(error)];
+ *indexBufferPtr++ = index;
+
+ error -= TColorConvertor::RgbToMonochrome(iColorConv->Color(index));
+
+ nextError = (error << 3) - error; // Set right error for this pixel
+
+ *scanlineErrorBufferPtr++ += error + (error << 1); // Set left-down error for this pixel
+
+ *scanlineErrorBufferPtr += error + (error << 2); // Set down error for this pixel
+
+ nextError += *(scanlineErrorBufferPtr+1);
+
+ *(scanlineErrorBufferPtr+1) = error; // Set right-down error for this pixel
+ }
+
+ iNextError = nextError;
+ }
+
+void CMonochromeErrorDiffuser::SetPixelBlockIndex(TUint32* aGray256Buffer)
+ {
+ if(iPos.iY!=iLastPos.iY)
+ {
+ Mem::FillZ(iEdgeErrorBuffer,sizeof(TInt) * iBlockSize.iHeight);
+ }
+
+ TUint32* indexBufferPtr = iIndexBuffer;
+
+ TInt error = 0;
+ TInt* edgeErrorBuffer = iEdgeErrorBuffer;
+
+ for (TInt row = 0; row < iBlockSize.iHeight; row++)
+ {
+ TInt* errorValue = iScanlineErrorBuffer + iPos.iX;
+ TInt nextError = *edgeErrorBuffer + *errorValue;
+ *edgeErrorBuffer = error;
+
+ for (TInt col = 0; col < iBlockSize.iWidth; col++)
+ {
+ TInt gray256 = *aGray256Buffer++;
+
+ error = gray256 + (nextError >> 4); // Same as /16
+
+ TUint32 index = iIndexLookup[ColorCcomponent::ClampColorComponent(error)];
+ *indexBufferPtr++ = index;
+
+ error -= TColorConvertor::RgbToMonochrome(iColorConv->Color(index));
+
+ if (col > 0)
+ *(errorValue - 1) += error + (error << 1); // Set left-down error for this pixel
+ else
+ *errorValue = error + (error << 1);
+
+ *errorValue += error + (error << 2); // Set down error for this pixel
+ errorValue++;
+
+ nextError = (error << 3) - error; // Set right error for this pixel
+
+ if (col < iBlockSize.iWidth)
+ {
+ nextError += *errorValue;
+ *errorValue = error; // Set right-down error for this pixel
+ }
+ }
+
+ *edgeErrorBuffer++ += nextError;
+ }
+
+ iLastPos.iY = iPos.iY;
+ iLastPos.iX = iPos.iX+iBlockSize.iWidth;
+ }
+
+void CMonochromeErrorDiffuser::Reset()
+ {
+ CMonochromePixelWriter::Reset();
+
+ delete[] iScanlineErrorBuffer;
+ iScanlineErrorBuffer = NULL;
+
+ delete[] iEdgeErrorBuffer;
+ iEdgeErrorBuffer = NULL;
+ }
+
+//
+// CThumbnailProcessor
+//
+
+/**
+ *
+ * Static factory function to create CThumbnailProcessor objects.
+ *
+ * @param "aImageProc"
+ * A pointer to an externally constructed CImageProcessorExtension object.
+ * This will be deleted when the CThumbnailProcessor object is deleted.
+ * @param "aReductionFactor"
+ * The reduction factor to use.
+ * @return Pointer to a fully constructed CThumbnailProcessor object.
+ */
+CThumbnailProcessor* CThumbnailProcessor::NewL(CImageProcessorExtension* aImageProc,TInt aReductionFactor)
+ {
+ return new(ELeave) CThumbnailProcessor(aImageProc,aReductionFactor);
+ }
+
+CThumbnailProcessor::CThumbnailProcessor(CImageProcessorExtension* aImageProc,TInt aReductionFactor):
+ iImageProc(aImageProc),
+ iYInc(1),
+ iReductionFactor(aReductionFactor)
+ {}
+
+CThumbnailProcessor::~CThumbnailProcessor()
+ {
+ delete iImageProc;
+ delete[] iReducedPixelBuffer;
+ delete[] iReducedSumBuffer;
+ }
+
+void CThumbnailProcessor::PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect)
+ {
+ PrepareCommonL(aImageRect);
+ iYInc = 1;
+
+ TInt bufferSize = (iImageRegion.iBr.iX + (1<> iReductionFactor;
+
+ ASSERT(iReducedSumBuffer == NULL);
+ iReducedSumBuffer = new(ELeave) TColorSum[bufferSize];
+ Mem::FillZ(iReducedSumBuffer,bufferSize * sizeof(TColorSum));
+
+ iImageProc->PrepareL(aBitmap,iReducedImageRegion);
+
+ ASSERT(iReducedPixelBuffer == NULL);
+ iReducedPixelBuffer = new(ELeave) TRgb[iReducedImageRegion.iBr.iX];
+ }
+
+void CThumbnailProcessor::PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize& aRgbBlockSize)
+ {
+ PrepareCommonL(aImageRect);
+
+ CreateBlockBufferL(aRgbBlockSize.iWidth*aRgbBlockSize.iHeight);
+
+ iOriginalBlockSize = aRgbBlockSize;
+ iYInc = iDrawBottomUp ? -iOriginalBlockSize.iHeight : iOriginalBlockSize.iHeight;
+
+ iReducedBlockSize = aRgbBlockSize;
+ iReducedBlockSize.iWidth >>= iReductionFactor;
+ iReducedBlockSize.iHeight >>= iReductionFactor;
+
+ iImageProc->SetInitialScanlineSkipPadding(iNumberOfScanlinesToSkip >> iReductionFactor);
+ iImageProc->SetPixelPadding(iPixelPadding >> iReductionFactor);
+ iImageProc->PrepareL(aBitmap,iReducedImageRegion,iReducedBlockSize);
+
+ ASSERT(iReducedPixelBuffer == NULL);
+ iReducedPixelBuffer = new(ELeave) TRgb[iReducedBlockSize.iWidth * iReducedBlockSize.iHeight];
+ }
+
+void CThumbnailProcessor::PrepareCommonL(const TRect& aImageRect)
+ {
+ ASSERT(iReductionFactor > 0);
+ iImageRegion = aImageRect;
+
+ TInt roundUp = (1<> iReductionFactor;
+ iReducedImageRegion.iTl.iY = aImageRect.iTl.iY >> iReductionFactor;
+
+ TSize size = aImageRect.Size();
+ size.iWidth = (size.iWidth + roundUp) >> iReductionFactor;
+ size.iHeight = (size.iHeight + roundUp) >> iReductionFactor;
+ iReducedImageRegion.iBr = iReducedImageRegion.iTl + size;
+
+ switch(iOperation)
+ {
+ case EDecodeRotate180:
+ case EDecodeRotate270:
+ case EDecodeHorizontalFlip:
+ case EDecodeVerticalFlipRotate90:
+ iDrawBottomUp = ETrue;
+ iImageProc->SetOperation(iOperation);
+ break;
+ default:
+ iDrawBottomUp = EFalse;
+ }
+ iStartPosition.SetXY(iImageRegion.iTl.iX, iDrawBottomUp ? aImageRect.iBr.iY - 1 : 0);
+ iEndPosition.SetXY(aImageRect.iBr.iX, iDrawBottomUp ? aImageRect.iTl.iY - 1 : aImageRect.iBr.iY);
+ iPos = iStartPosition;
+
+ iPositionChanged = ETrue;
+
+ iEndOfLineX = iEndPosition.iX + iPixelPadding;
+
+ delete[] iReducedPixelBuffer;
+ iReducedPixelBuffer = NULL;
+
+ delete[] iReducedSumBuffer;
+ iReducedSumBuffer = NULL;
+ }
+
+TBool CThumbnailProcessor::SetPixel(TRgb aColor)
+ {
+ TInt x = iPos.iX;
+
+ if (x < iImageRegion.iBr.iX)
+ {
+ TColorSum* sumPtr = iReducedSumBuffer + (x >> iReductionFactor);
+ sumPtr->iRed += aColor.Red();
+ sumPtr->iGreen += aColor.Green();
+ sumPtr->iBlue += aColor.Blue();
+ sumPtr->iCount++;
+ }
+
+ x++;
+ iPos.iX = x;
+
+ if (x == iEndOfLineX)
+ return NewLine();
+
+ return EFalse;
+ }
+
+TBool CThumbnailProcessor::NewLine()
+ {
+ TInt newY = iPos.iY + iYInc;
+
+ TBool finished = (newY < iStartPosition.iY || newY >= iEndPosition.iY);
+ TBool outsideOfBuffer = ((newY ^ iPos.iY) >> iReductionFactor) != 0;
+
+ if(finished || outsideOfBuffer)
+ {
+ DoFlushPixels();
+ }
+
+ iPos.iX = iStartPosition.iX;
+ iPos.iY = newY;
+
+ if(iPositionChanged && outsideOfBuffer)
+ {
+ iImageProc->SetPos(TPoint(iPos.iX >> iReductionFactor,iPos.iY >> iReductionFactor));
+ iPositionChanged = EFalse;
+ }
+
+ return finished;
+ }
+
+TBool CThumbnailProcessor::SetPixelBlock(TRgb* aColorBuffer)
+ {
+ if ((iPos.iX >> iReductionFactor) < iReducedImageRegion.iBr.iX)
+ {
+ ASSERT(aColorBuffer);
+
+ if(iPositionChanged)
+ {
+ iImageProc->SetPos(TPoint(iPos.iX >> iReductionFactor,iPos.iY >> iReductionFactor));
+ iPositionChanged = EFalse;
+ }
+
+ TInt xOuterStop = iReducedBlockSize.iWidth<>= divisionFactor;
+ green >>= divisionFactor;
+ blue >>= divisionFactor;
+
+ *reducedPixelBuffer++ = TRgb(red,green,blue);
+ }
+ }
+
+ iImageProc->SetPixelBlock(iReducedPixelBuffer);
+ }
+
+ iPos.iX += iOriginalBlockSize.iWidth;
+ if (iPos.iX >= iEndOfLineX)
+ {
+ iPos.iX = iStartPosition.iX;
+ iPos.iY += iYInc;
+ if(iPos.iY < iStartPosition.iY || iPos.iY >= iEndPosition.iY)
+ {
+ return ETrue;
+ }
+ }
+
+ return EFalse;
+
+ }
+
+TBool CThumbnailProcessor::FlushPixels()
+ {
+ DoFlushPixels();
+ iImageProc->FlushPixels();
+
+ iPositionChanged = ETrue;
+
+ if(iPos.iY < iStartPosition.iY || iPos.iY >= iEndPosition.iY)
+ {
+ return ETrue;
+ }
+
+ return EFalse;
+ }
+
+void CThumbnailProcessor::DoFlushPixels()
+ {
+ if(!iReducedSumBuffer)
+ return;
+
+ TColorSum* reducedSumPtr = iReducedSumBuffer + iReducedImageRegion.iTl.iX;
+ TColorSum* reducedSumPtrLimit = iReducedSumBuffer + iReducedImageRegion.iBr.iX;
+
+ while(reducedSumPtr < reducedSumPtrLimit)
+ {
+
+ while(reducedSumPtr->iCount==0)
+ {
+ reducedSumPtr++;
+ if(reducedSumPtr==reducedSumPtrLimit)
+ return;
+ }
+
+ if(iPositionChanged)
+ iImageProc->SetPos(TPoint(reducedSumPtr - iReducedSumBuffer,iPos.iY >> iReductionFactor));
+
+ TRgb* reducedPixelBufferPtr = iReducedPixelBuffer;
+ TInt fullCountFactor = 2*iReductionFactor;
+
+ while(reducedSumPtr < reducedSumPtrLimit)
+ {
+ TInt count = reducedSumPtr->iCount;
+ TUint32 red;
+ TUint32 green;
+ TUint32 blue;
+
+ if(count == (1<iRed >> fullCountFactor;
+ green = reducedSumPtr->iGreen >> fullCountFactor;
+ blue = reducedSumPtr->iBlue >> fullCountFactor;
+ }
+ else if(count!=0)
+ {
+ red = reducedSumPtr->iRed / count;
+ green = reducedSumPtr->iGreen / count;
+ blue = reducedSumPtr->iBlue / count;
+ }
+ else
+ break;
+
+ *reducedPixelBufferPtr++ = TRgb(red,green,blue);
+
+ reducedSumPtr++;
+ }
+
+ TInt numPixels = reducedPixelBufferPtr-iReducedPixelBuffer;
+ iImageProc->SetPixels(iReducedPixelBuffer,numPixels);
+
+ Mem::FillZ(reducedSumPtr-numPixels,numPixels * sizeof(TColorSum));
+ }
+
+ }
+
+TBool CThumbnailProcessor::SetPos(const TPoint& aPosition)
+ {
+ if(iImageRegion.Contains(aPosition)==EFalse)
+ return EFalse;
+
+ if((aPosition.iY ^ iPos.iY) >> iReductionFactor)
+ DoFlushPixels();
+
+ iPositionChanged = ETrue;
+ iPos = aPosition;
+
+ return ETrue;
+ }
+
+void CThumbnailProcessor::SetYPosIncrement(TInt aYInc)
+ {
+ iYInc = aYInc;
+
+ TInt reducedYInc = aYInc >> iReductionFactor;
+ if(reducedYInc==0)
+ reducedYInc = 1;
+
+ iImageProc->SetYPosIncrement(reducedYInc);
+ }
+
+void CThumbnailProcessor::SetLineRepeat(TInt aLineRepeat)
+ {
+ TInt reducedLineRepeat = aLineRepeat >> iReductionFactor;
+ iImageProc->SetLineRepeat(reducedLineRepeat);
+ }
+
+void CThumbnailProcessor::SetPixelPadding(TInt aNumberOfPixels)
+ {
+ iPixelPadding = aNumberOfPixels;
+ iEndOfLineX = iEndPosition.iX + iPixelPadding;
+ }
+
+//
+// CMonochromeThumbnailProcessor
+//
+
+/**
+ *
+ * Static factory function to create CMonochromeThumbnailProcessor objects.
+ *
+ * @param "aImageProc"
+ * A pointer to an externally constructed CImageProcessorExtension object.
+ * This will be deleted when the CMonochromeThumbnailProcessor object is deleted.
+ * @param aReductionFactor"
+ * The reduction factor to use.
+ * @return Pointer to a fully constructed CMonochromeThumbnailProcessor object.
+ */
+CMonochromeThumbnailProcessor* CMonochromeThumbnailProcessor::NewL(CImageProcessorExtension* aImageProc,TInt aReductionFactor)
+ {
+ return new(ELeave) CMonochromeThumbnailProcessor(aImageProc,aReductionFactor);
+ }
+
+CMonochromeThumbnailProcessor::CMonochromeThumbnailProcessor(CImageProcessorExtension* aImageProc,TInt aReductionFactor):
+ iImageProc(aImageProc),
+ iYInc(1),
+ iReductionFactor(aReductionFactor)
+ {}
+
+CMonochromeThumbnailProcessor::~CMonochromeThumbnailProcessor()
+ {
+ delete iImageProc;
+ delete[] iReducedPixelBuffer;
+ delete[] iReducedSumBuffer;
+ }
+
+void CMonochromeThumbnailProcessor::PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect)
+ {
+ PrepareCommonL(aImageRect);
+ iYInc = 1;
+
+ TInt bufferSize = (iImageRegion.iBr.iX + (1<> iReductionFactor;
+
+ ASSERT(iReducedSumBuffer == NULL);
+ iReducedSumBuffer = new(ELeave) TMonochromeSum[bufferSize];
+ Mem::FillZ(iReducedSumBuffer,bufferSize * sizeof(TMonochromeSum));
+
+ iImageProc->PrepareL(aBitmap,iReducedImageRegion);
+
+ ASSERT(iReducedPixelBuffer == NULL);
+ iReducedPixelBuffer = new(ELeave) TUint32[iReducedImageRegion.iBr.iX];
+ }
+
+void CMonochromeThumbnailProcessor::PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize& aRgbBlockSize)
+ {
+ PrepareCommonL(aImageRect);
+
+ CreateBlockBufferL(aRgbBlockSize.iWidth*aRgbBlockSize.iHeight);
+
+ iOriginalBlockSize = aRgbBlockSize;
+ iYInc = iDrawBottomUp ? -iOriginalBlockSize.iHeight : iOriginalBlockSize.iHeight;
+
+
+ iReducedBlockSize = aRgbBlockSize;
+ iReducedBlockSize.iWidth >>= iReductionFactor;
+ iReducedBlockSize.iHeight >>= iReductionFactor;
+
+ iImageProc->SetInitialScanlineSkipPadding(iNumberOfScanlinesToSkip >> iReductionFactor);
+ iImageProc->SetPixelPadding(iPixelPadding >> iReductionFactor);
+ iImageProc->PrepareL(aBitmap,iReducedImageRegion,iReducedBlockSize);
+
+ ASSERT(iReducedPixelBuffer == NULL);
+ iReducedPixelBuffer = new(ELeave) TUint32[iReducedBlockSize.iWidth * iReducedBlockSize.iHeight];
+ }
+
+void CMonochromeThumbnailProcessor::PrepareCommonL(const TRect& aImageRect)
+ {
+ ASSERT(iReductionFactor > 0);
+ iImageRegion = aImageRect;
+
+ TInt roundUp = (1<> iReductionFactor;
+ iReducedImageRegion.iTl.iY = aImageRect.iTl.iY >> iReductionFactor;
+
+ TSize size = aImageRect.Size();
+ size.iWidth = (size.iWidth + roundUp) >> iReductionFactor;
+ size.iHeight = (size.iHeight + roundUp) >> iReductionFactor;
+ iReducedImageRegion.iBr = iReducedImageRegion.iTl + size;
+
+ switch(iOperation)
+ {
+ case EDecodeRotate180:
+ case EDecodeRotate270:
+ case EDecodeHorizontalFlip:
+ case EDecodeVerticalFlipRotate90:
+ iDrawBottomUp = ETrue;
+ iImageProc->SetOperation(iOperation);
+ break;
+ default:
+ iDrawBottomUp = EFalse;
+ }
+ iStartPosition.SetXY(iImageRegion.iTl.iX, iDrawBottomUp ? aImageRect.iBr.iY - 1 : 0);
+ iEndPosition.SetXY(aImageRect.iBr.iX, iDrawBottomUp ? aImageRect.iTl.iY - 1 : aImageRect.iBr.iY);
+ iPos = iStartPosition;
+
+ iPositionChanged = ETrue;
+
+ iEndOfLineX = iEndPosition.iX + iPixelPadding;
+
+ delete[] iReducedPixelBuffer;
+ iReducedPixelBuffer = NULL;
+
+ delete iReducedSumBuffer;
+ iReducedSumBuffer = NULL;
+ }
+
+TBool CMonochromeThumbnailProcessor::SetMonoPixel(TInt aGray256)
+ {
+ TInt x = iPos.iX;
+
+ if (x < iImageRegion.iBr.iX)
+ {
+ TMonochromeSum* sumPtr = iReducedSumBuffer + (x >> iReductionFactor);
+ sumPtr->iLevel += aGray256;
+ sumPtr->iCount++;
+ }
+
+ x++;
+ iPos.iX = x;
+
+ if (x == iEndOfLineX)
+ return NewLine();
+
+ return EFalse;
+ }
+
+TBool CMonochromeThumbnailProcessor::SetMonoPixelRun(TInt aGray256,TInt aCount)
+ {
+ while (aCount != 0)
+ {
+ TInt x = iPos.iX;
+ TInt xLimit = x+aCount;
+
+ iPos.iX = xLimit;
+
+ if (xLimit > iImageRegion.iBr.iX)
+ xLimit = iImageRegion.iBr.iX;
+
+ if (xLimit > x)
+ {
+ TInt numPixels = xLimit-x;
+
+ TInt reductionFactor = iReductionFactor;
+ TInt reductionCount = 1<