# HG changeset patch # User Ross Qin # Date 1291097141 -28800 # Node ID 7b7f0409fc002839839f38c0c94b51b2c1c9db8c # Parent df89378e92235c3b3496e65bf31ca5b7535a4b3a# Parent 03a6f48f6e143a1df6654f07ffe22329a9f2fa53 merge diff -r df89378e9223 -r 7b7f0409fc00 cpptoolsplat/mingw-gcc-3.4.5/gcc_mingw.h --- a/cpptoolsplat/mingw-gcc-3.4.5/gcc_mingw.h Tue Nov 30 13:59:58 2010 +0800 +++ b/cpptoolsplat/mingw-gcc-3.4.5/gcc_mingw.h Tue Nov 30 14:05:41 2010 +0800 @@ -35,7 +35,7 @@ #define __NORETURN_TERMINATOR() abort() #endif #define IMPORT_C -#if !defined __WINS__ && defined _WIN32 /* VC++ Browser Hack */ +#if !defined __WINS__ && defined _WIN32 #define EXPORT_C /** @internalTechnology */ #define asm(x) diff -r df89378e9223 -r 7b7f0409fc00 cpptoolsplat/mingw-gcc-3.4.5/gcc_mingw_3_4_2.h --- a/cpptoolsplat/mingw-gcc-3.4.5/gcc_mingw_3_4_2.h Tue Nov 30 13:59:58 2010 +0800 +++ b/cpptoolsplat/mingw-gcc-3.4.5/gcc_mingw_3_4_2.h Tue Nov 30 14:05:41 2010 +0800 @@ -35,7 +35,7 @@ #define __NORETURN_TERMINATOR() abort() #endif #define IMPORT_C -#if !defined __WINS__ && defined _WIN32 /* VC++ Browser Hack */ +#if !defined __WINS__ && defined _WIN32 #define EXPORT_C /** @internalTechnology */ #define asm(x) diff -r df89378e9223 -r 7b7f0409fc00 imgtools/buildrom/group/release.txt --- a/imgtools/buildrom/group/release.txt Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/buildrom/group/release.txt Tue Nov 30 14:05:41 2010 +0800 @@ -1,8 +1,13 @@ -Version 3.32.1 (BUILDROM) +Version 3.32.2 (BUILDROM) =============== Released by Ross Qin, 30/11/2010 1) ou1cimx1#665657 [MCL]Some cases of PREQ1230 fail because of buildrom issue - + +Version 3.32.1 (BUILDROM) +=============== +Released by Lorence Wang, 24/11/2010 + 1) ou1cimx1#657440 [MCL]external tools cannot specify path. + Version 3.32.0 (BUILDROM) =============== Released by Ross Qin, 18/11/2010 diff -r df89378e9223 -r 7b7f0409fc00 imgtools/buildrom/tools/buildrom --- a/imgtools/buildrom/tools/buildrom Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/buildrom/tools/buildrom Tue Nov 30 14:05:41 2010 +0800 @@ -1,2 +1,8 @@ #!/bin/sh -perl -S buildrom.pl $@ +PRGDIR=`dirname "$0"` + +PRGDIR=`cd "$PRGDIR"; pwd` + + +perl "$PRGDIR/buildrom.pl" $@ + diff -r df89378e9223 -r 7b7f0409fc00 imgtools/buildrom/tools/buildrom.pm --- a/imgtools/buildrom/tools/buildrom.pm Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/buildrom/tools/buildrom.pm Tue Nov 30 14:05:41 2010 +0800 @@ -68,7 +68,7 @@ my $BuildromMajorVersion = 3 ; my $BuildromMinorVersion = 32; -my $BuildromPatchVersion = 0; +my $BuildromPatchVersion = 2; sub print_usage @@ -4869,11 +4869,11 @@ my $plat = "armv5"; $plat = &get_abiv2mode() ? $plat."_abiv1" : $plat."_abiv2"; - foreach my $plat(@platlist) + foreach my $plattmp(@platlist) { - if(($aDllFile =~ /[\/\\]($plat)[\/\\]/i) or ($aDllFile =~ /[\/\\]($plat\.\w+)[\/\\]/i )) + if(($aDllFile =~ /[\/\\]($plattmp)[\/\\]/i) or ($aDllFile =~ /[\/\\]($plattmp)\.\w+[\/\\]/i )) { - $platName = $1; + $platName = uc $1; last; } } @@ -4881,7 +4881,7 @@ # Map files will be referred for all ARM platforms, # and for BSF platforms which cutomizes ARM platforms. - if($rootPlatName =~ /^armv5|$plat$/i){ + if($rootPlatName =~ /^(armv5|$plat)$/i){ my $mapfile = "${aDllFile}.map"; open MAPFILE, "$mapfile" or die "Can't open $mapfile\n"; diff -r df89378e9223 -r 7b7f0409fc00 imgtools/buildrom/tools/externaltools.pm --- a/imgtools/buildrom/tools/externaltools.pm Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/buildrom/tools/externaltools.pm Tue Nov 30 14:05:41 2010 +0800 @@ -36,11 +36,22 @@ my @toolModules = split(/,/,$toolList); foreach my $tool (@toolModules) { # An optional command line can be passed to the tool if it is of the form "[:]" - if ($tool !~ /^([^:]+)(:(.*))?$/) { + if ($tool !~ /^((\w:)?[^:]+)(:(.*))?$/) { print "No tool specified as parameter for external tool invocation\n"; } my $toolName = $1; - my $toolCmdLine = $3; + my $toolCmdLine = $4; + if($toolName =~ /^(.*)[\\\/]([^\\\/]+)$/){ + $toolName = $2; + my $path = $1; + if($path =~ /^EPOCROOT/){ + my $epocroot = $ENV{EPOCROOT}; + $epocroot =~ s-\\-\/-g; + $epocroot .= "\/" unless ($epocroot =~ /\/$/); + $path =~ s-^EPOCROOT[\/\\]?-$epocroot-; + } + push (@INC, $path); + } if($toolName =~ /configpaging/i){ my %info = (name=>"configpaging", args=>$toolCmdLine ); push @{$invocations{"invocationpoint2"}}, \%info; diff -r df89378e9223 -r 7b7f0409fc00 imgtools/buildrom/tools/features --- a/imgtools/buildrom/tools/features Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/buildrom/tools/features Tue Nov 30 14:05:41 2010 +0800 @@ -1,2 +1,8 @@ #!/bin/sh -perl -S features.pl $@ +PRGDIR=`dirname "$0"` + +PRGDIR=`cd "$PRGDIR"; pwd` + + +perl "$PRGDIR/features.pl" $@ + diff -r df89378e9223 -r 7b7f0409fc00 imgtools/imgcheck/group/distribution.policy --- a/imgtools/imgcheck/group/distribution.policy Tue Nov 30 13:59:58 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -Category T -OSD: Reference/Test Tools diff -r df89378e9223 -r 7b7f0409fc00 imgtools/imgcheck/src/hash.cpp --- a/imgtools/imgcheck/src/hash.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/imgcheck/src/hash.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -55,7 +55,7 @@ @internalComponent @released -@param aString - const string& on which Hash value calcualtion to be done +@param aString - const string& on which Hash value calcualtion */ int HashTable::Hash(const string& aString) { unsigned int hashVal = 0; diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/group/release.txt --- a/imgtools/romtools/group/release.txt Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/group/release.txt Tue Nov 30 14:05:41 2010 +0800 @@ -1,4 +1,4 @@ -Version 2.19.1 (ROMBUILD) +Version 2.19.3 (ROMBUILD) =============== Released by Ross Qin, 30/11/2010 1) ou1cimx1#653168 - rombuild crashs when create ext-romimage @@ -6,8 +6,28 @@ Version 2.2 build(3) (readimage) =============== Released by Ross Qin, 30/11/2010 - 1) ou1cimx1#651824 - [MCL]readimage crashes on reading wk42 vasco_ui core image - + 1) ou1cimx1#651824 - [MCL]readimage crashes on reading wk42 vasco_ui core image + +Version 2.19.2 (ROMBUILD) +=============== +Released by Jason Cui, 29/11/2010 + 1) Remove "repeated" file existence checking + +Version 2.17.2 (ROFSBUILD) +=============== +Released by Jason Cui, 29/11/2010 + 1) Remove "repeated" file existence checking + +Version 2.19.1 (ROMBUILD) +=============== +Released by Lorence Wang, 19/11/2010 + 1) ou1cimx1#656196 one line message of ROM tools + +Version 2.17.1 (ROFSBUILD) +=============== +Released by Marvin Shi, 19/11/2010 + 1) ou1cimx1#651819 rofsbiuld fails to generate correct log info when using multi-thread + Version 2.19.0 (ROMBUILD) =============== Released by Marvin Shi, 17/11/2010 diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/maksym/fixupsym --- a/imgtools/romtools/maksym/fixupsym Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/maksym/fixupsym Tue Nov 30 14:05:41 2010 +0800 @@ -1,3 +1,9 @@ #!/bin/sh -perl -S fixupsym.pl $@ +PRGDIR=`dirname "$0"` + +PRGDIR=`cd "$PRGDIR"; pwd` + +perl "$PRGDIR/fixupsym.pl" $@ + + diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/maksym/hpsym --- a/imgtools/romtools/maksym/hpsym Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/maksym/hpsym Tue Nov 30 14:05:41 2010 +0800 @@ -1,3 +1,9 @@ #!/bin/sh -perl -S hpsym.pl $@ +PRGDIR=`dirname "$0"` + +PRGDIR=`cd "$PRGDIR"; pwd` + +perl "$PRGDIR/hpsym.pl" $@ + + diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/maksym/maksym --- a/imgtools/romtools/maksym/maksym Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/maksym/maksym Tue Nov 30 14:05:41 2010 +0800 @@ -1,3 +1,9 @@ #!/bin/sh -perl -S maksym.pl $@ +PRGDIR=`dirname "$0"` + +PRGDIR=`cd "$PRGDIR"; pwd` + +perl "$PRGDIR/maksym.pl" $@ + + diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/maksym/maksymrofs --- a/imgtools/romtools/maksym/maksymrofs Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/maksym/maksymrofs Tue Nov 30 14:05:41 2010 +0800 @@ -1,3 +1,9 @@ #!/bin/sh -perl -S maksymrofs.pl $@ +PRGDIR=`dirname "$0"` + +PRGDIR=`cd "$PRGDIR"; pwd` + +perl "$PRGDIR/maksymrofs.pl" $@ + + diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rofsbuild/r_build.cpp --- a/imgtools/romtools/rofsbuild/r_build.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rofsbuild/r_build.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -68,6 +68,9 @@ extern TInt gLogLevel; extern bool gCache; extern TBool gIsOBYUTF8; + +#define MAX_LINE 65535 + TBool gDriveImage=EFalse; // for drive image support. @@ -789,6 +792,18 @@ } iNextNodeForSameFile = aPreviousNode; } +void TRomNode::FlushLogMessages() + { + if(iEntry) + { + for(int i = 0; i < (int)iEntry->iLogMessages.size(); i++) + { + TLogItem& aLogItem = iEntry->iLogMessages[i]; + Print(aLogItem.iPrintType, aLogItem.iLogMessage.c_str()); + } + iEntry->iLogMessages.clear(); + } + } @@ -862,13 +877,23 @@ // Returns the number of bytes used, or -ve error code TInt TRomBuilderEntry::PlaceFile( TUint8* &aDest,TUint aMaxSize, CBytePair *aBPE ){ - + char tmpbuf[MAX_LINE]; + TLogItem tmpLog; TUint compression = 0; TBool executable = iExecutable; - Print(ELog,"Reading file %s to image\n", iFileName ); + sprintf(tmpbuf,"Reading file %s to image\n", iFileName ); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + TUint32 size = HFile::GetLength(iFileName); if (size==0) - Print(EWarning, "File %s does not exist or is 0 bytes in length.\n",iFileName); + { + sprintf(tmpbuf, "File %s does not exist or is 0 bytes in length.\n",iFileName); + tmpLog.iPrintType = EWarning; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + } if (aDest == NULL) { aMaxSize = size << 1; aMaxSize = (aMaxSize>0) ? aMaxSize : 2; @@ -890,7 +915,10 @@ // is it really a valid E32ImageFile? if (r != KErrNone) { - Print(EWarning, "File '%s' is not a valid executable. Placing file as data.\n", iFileName); + sprintf(tmpbuf, "File '%s' is not a valid executable. Placing file as data.\n", iFileName); + tmpLog.iPrintType = EWarning; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); executable = EFalse; } else @@ -912,7 +940,10 @@ while( aDllEntry ){ if(aDllEntry->iOrdinal != (TUint32)-1){ if(aDllEntry->iOrdinal < 1 || aDllEntry->iOrdinal > (TUint)f.iOrigHdr->iExportDirCount){ - Print(EWarning, "Invalid ordinal %d specified for DLL %s\n", aDllEntry->iOrdinal, iRomNode->iName); + sprintf(tmpbuf, "Invalid ordinal %d specified for DLL %s\n", (unsigned int) aDllEntry->iOrdinal, iRomNode->iName); + tmpLog.iPrintType = EWarning; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); aDllEntry = aDllEntry->NextDllDataEntry(); continue; } @@ -931,7 +962,10 @@ } else { - Print(EWarning, "Patchdata failed as address pointed by ordinal %d of DLL %s doesn't lie within Code or Data section limits\n", aDllEntry->iOrdinal, iRomNode->iName); + sprintf(tmpbuf, "Patchdata failed as address pointed by ordinal %d of DLL %s doesn't lie within Code or Data section limits\n", (unsigned int) aDllEntry->iOrdinal, iRomNode->iName); + tmpLog.iPrintType = EWarning; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); } } else if(aDllEntry->iDataAddress != (TLinAddr)-1){ @@ -948,7 +982,10 @@ } else { - Print(EWarning, "Patchdata failed as address 0x%x of DLL %s doesn't lie within Code or Data section limits\n", aDllEntry->iOrdinal, iRomNode->iName); + sprintf(tmpbuf, "Patchdata failed as address 0x%x of DLL %s doesn't lie within Code or Data section limits\n", (unsigned int) aDllEntry->iOrdinal, iRomNode->iName); + tmpLog.iPrintType = EWarning; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); } } aDllEntry = aDllEntry->NextDllDataEntry(); @@ -956,7 +993,10 @@ } compression = f.iHdr->CompressionType(); - Print(ELog,"Original file:'%s' is compressed by method:%08x\n", iFileName, compression); + sprintf(tmpbuf,"Original file:'%s' is compressed by method:%08x\n", iFileName, compression); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); TUint32 oldFileComp; @@ -1070,19 +1110,25 @@ if( newFileComp == 0) { - Print(ELog,"Decompressing executable '%s'\n", iFileName); + sprintf(tmpbuf,"Decompressing executable '%s'\n", iFileName); f.iHdr->iCompressionType = 0; + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); } else { - Print(ELog,"Compressing executable '%s' with method:%08x\n", iFileName, newFileComp); + sprintf(tmpbuf,"Compressing executable '%s' with method:%08x\n", iFileName, (unsigned int) newFileComp); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); f.iHdr->iCompressionType = newFileComp; } f.UpdateHeaderCrc(); if (overflow) { // need to check if the compressed file will fit in the image - //TODO the checking will slow down the build process, should do it later along with the writing on aDest. + TUint32 compressedSize; char * buffer = new char [size]; #if defined(__LINUX__) @@ -1103,8 +1149,14 @@ } if (overflow) { - Print(EError, "Can't fit '%s' in image\n", iFileName); - Print(EError, "Overflowed by approximately 0x%x bytes.\n", size - aMaxSize); + sprintf(tmpbuf, "Can't fit '%s' in image\n", iFileName); + tmpLog.iPrintType = EError; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + sprintf(tmpbuf, "Overflowed by approximately 0x%x bytes.\n", (unsigned int) (size - aMaxSize)); + tmpLog.iPrintType = EError; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); exit(667); } @@ -1124,11 +1176,27 @@ compression = atoi(entryref->GetCachedFileCompressionID()); memcpy(&iUids[0], aDest, sizeof(iUids)); if (compression) - Print(ELog,"Compressed executable File '%s' size: %08x, mode:%08x\n", iFileName, size, compression); + { + sprintf(tmpbuf,"Compressed executable File '%s' size: %08x, mode:%08x\n", iFileName, (unsigned int) size, (unsigned int) compression); + + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + } else if (iExecutable) - Print(ELog,"Executable File '%s' size: %08x\n", iFileName, size); + { + sprintf(tmpbuf,"Executable File '%s' size: %08x\n", iFileName, (unsigned int) size); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + } else - Print(ELog,"File '%s' size: %08x\n", iFileName, size); + { + sprintf(tmpbuf,"File '%s' size: %08x\n", iFileName, (unsigned int) size); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + } iRealFileSize = size; // required later when directory is written return size; @@ -1183,7 +1251,10 @@ } catch (CacheException ce) { - Print(EWarning, "Cache brings up an exception (%s) when processes %s\r\n", ce.GetErrorMessage(), iFileName); + sprintf(tmpbuf, "Cache brings up an exception (%s) when processes %s\r\n", ce.GetErrorMessage(), iFileName); + tmpLog.iPrintType = EWarning; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); } } } @@ -1196,8 +1267,14 @@ { if ( size > aMaxSize ) { - Print(EError, "Can't fit '%s' in image\n", iFileName); - Print(EError, "Overflowed by approximately 0x%x bytes.\n", size - aMaxSize); + sprintf(tmpbuf, "Can't fit '%s' in image\n", iFileName); + tmpLog.iPrintType = EError; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + sprintf(tmpbuf, "Overflowed by approximately 0x%x bytes.\n", (unsigned int) (size - aMaxSize)); + tmpLog.iPrintType = EError; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); exit(667); } size = HFile::Read(iFileName, (TAny *)aDest); @@ -1206,11 +1283,26 @@ } if (compression) - Print(ELog,"Compressed executable File '%s' size: %08x, mode:%08x\n", iFileName, size, compression); + { + sprintf(tmpbuf,"Compressed executable File '%s' size: %08x, mode:%08x\n", iFileName, (unsigned int) size, (unsigned int) compression); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + } else if (iExecutable) - Print(ELog,"Executable File '%s' size: %08x\n", iFileName, size); + { + sprintf(tmpbuf,"Executable File '%s' size: %08x\n", iFileName, (unsigned int) size); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + } else - Print(ELog,"File '%s' size: %08x\n", iFileName, size); + { + sprintf(tmpbuf,"File '%s' size: %08x\n", iFileName, (unsigned int) size); + tmpLog.iPrintType = ELog; + tmpLog.iLogMessage = tmpbuf; + iLogMessages.push_back(tmpLog); + } iCompressEnabled = compression; iRealFileSize = size; // required later when directory is written diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rofsbuild/r_obey.cpp --- a/imgtools/romtools/rofsbuild/r_obey.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rofsbuild/r_obey.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -1484,33 +1484,9 @@ return EFalse; } - if (aKeyword!=EKeywordHideV2) { - - // check the PC file exists - char* nname = NormaliseFileName(iReader.Word(1)); - if(gIsOBYUTF8 && !UniConv::IsPureASCIITextStream(nname)) - { - char* tempnname = strdup(nname); - unsigned int namelen = 0; - if(UniConv::UTF82DefaultCodePage(tempnname, strlen(tempnname), &nname, &namelen) < 0) - { - Print(EError, "Invalid filename encoding: %s\n", tempnname); - free(tempnname); - delete[] nname; - return EFalse; - } - free(tempnname); - } - ifstream test(nname); - if (!test) { - Print(EError,"Cannot open file %s for input.\n",iReader.Word(1)); - iMissingFiles++; - } - test.close(); - delete []nname; + if (aKeyword==EKeywordHideV2) { + epocPathStart=1; } - else - epocPathStart=1; iNumberOfFiles++; diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rofsbuild/r_rofs.cpp --- a/imgtools/romtools/rofsbuild/r_rofs.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rofsbuild/r_rofs.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -266,6 +266,7 @@ } class Worker : public boost::thread { public: + static boost::mutex iMutexOut; static void thrd_func(E32Rofs* rofs){ CBytePair bpe; @@ -282,6 +283,9 @@ rofs->iSymGen->AddEntry(tmpEntry); delete[] fullsystemname; } + iMutexOut.lock(); + p->node->FlushLogMessages(); + iMutexOut.unlock(); } p = rofs->GetFileNode(deferred); } @@ -296,6 +300,8 @@ } }; +boost::mutex Worker::iMutexOut; + TPlacingSection* E32Rofs::GetFileNode(bool &aDeferred) { //get a node from the node list, the node list is protected by mutex iMuxTree. //The iMuxTree also helps to make sure the order in iVPS is consistent with the node list. diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rofsbuild/r_romnode.h --- a/imgtools/romtools/rofsbuild/r_romnode.h Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rofsbuild/r_romnode.h Tue Nov 30 14:05:41 2010 +0800 @@ -21,6 +21,8 @@ #include #include +#include +#include #include "rofs.h" #include "e32image.h" #include "h_utl.h" @@ -123,7 +125,8 @@ TInt GetFullName(char* aBuf, TBool aIgnoreHiddenAttrib = EFalse) const; static void InitializeCount(); // Accessor Function. - inline TRomNode* GetParent() const { return iParent; } + inline TRomNode* GetParent() const { return iParent; } + void FlushLogMessages(); private: void Remove(TRomNode* aChild); @@ -187,6 +190,12 @@ class DllDataEntry; +struct TLogItem + { + TPrintType iPrintType; + std::string iLogMessage; + }; +typedef vector LogVector; class TRomBuilderEntry { public: @@ -218,6 +227,7 @@ TUint iCompressEnabled; TUint8 iUids[sizeof(TCheckedUid)]; TBool iHidden; + LogVector iLogMessages; DllDataEntry* GetFirstDllDataEntry() const; void SetFirstDllDataEntry(DllDataEntry *aDllDataEntry); diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rofsbuild/rofsbuild.cpp --- a/imgtools/romtools/rofsbuild/rofsbuild.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rofsbuild/rofsbuild.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -48,7 +48,7 @@ static const TInt RofsbuildMajorVersion=2; static const TInt RofsbuildMinorVersion=17; -static const TInt RofsbuildPatchVersion=0; +static const TInt RofsbuildPatchVersion=3; static TBool SizeSummary=EFalse; static TPrintType SizeWhere=EAlways; @@ -166,7 +166,7 @@ gSmrFileName.assign(&argv[i][5]); } else { - Print (EError, "SMR obey file is missing\n"); + printf ("ERROR: SMR obey file is missing\n"); } } else if (stricmp(argv[i], "-K") == 0) { gKeepGoing = ETrue; @@ -245,7 +245,7 @@ if((stricmp(&argv[i][13], "UTF8")==0) || (stricmp(&argv[i][13], "UTF-8")==0)) gIsOBYUTF8 = ETrue; else - Print(EError, "Invalid encoding %s, default system internal encoding will be used.\n", &argv[i][13]); + printf("ERROR: Invalid encoding %s, default system internal encoding will be used.\n", &argv[i][13]); } else if (stricmp(argv[i], "-UNCOMPRESS") == 0) { gCompress = ECompressionUncompress; @@ -253,7 +253,7 @@ else if( stricmp(argv[i], "-COMPRESSIONMETHOD") == 0 ) { // next argument should a be method if( (i+1) >= argc || argv[i+1][0] == '-') { - Print (EError, "Missing compression method! Set it to default (no compression)!"); + printf("ERROR: Missing compression method! Set it to default (no compression)!"); gCompressionMethod = 0; } else { @@ -271,7 +271,7 @@ gCompressionMethod = KUidCompressionBytePair; } else { - Print (EError, "Unknown compression method! Set it to default (no compression)!"); + printf("ERROR: Unknown compression method! Set it to default (no compression)!"); gCompress = ECompressionUnknown; gCompressionMethod = 0; } @@ -283,7 +283,7 @@ gUseCoreImage = ETrue; // next argument should be image filename if ((i+1 >= argc) || argv[i+1][0] == '-') - Print (EError, "Missing image file name"); + printf("ERROR: Missing image file name"); else { i++; gImageFilename.assign(argv[i]); @@ -295,7 +295,7 @@ gDriveFilename.assign(&argv[i][11]); } else { - Print (EError, "Drive obey file is missing\n"); + printf("ERROR: Drive obey file is missing\n"); } } else if (argv[i][1] == '?') { @@ -307,7 +307,7 @@ else if( stricmp(argv[i], "-LOGLEVEL") == 0) { // next argument should a be loglevel if( (i+1) >= argc || argv[i+1][0] == '-') { - Print (EError, "Missing loglevel!"); + printf ("ERROR: Missing loglevel!"); gLogLevel = DEFAULT_LOG_LEVEL; } else { @@ -319,7 +319,7 @@ else if (strcmp(argv[i], "0") == 0) gLogLevel = DEFAULT_LOG_LEVEL; else - Print(EError, "Only loglevel 0, 1 or 2 is allowed!"); + printf("ERROR: Only loglevel 0, 1 or 2 is allowed!"); } } else if( stricmp(argv[i], "-LOGLEVEL2") == 0) @@ -338,13 +338,13 @@ } else { #ifdef WIN32 - Print (EWarning, "Unrecognised option %s\n",argv[i]); + printf ("WARNING: Unrecognised option %s\n",argv[i]); #else if(0 == access(argv[i],R_OK)){ filename.assign(argv[i]); } else { - Print (EWarning, "Unrecognised option %s\n",argv[i]); + printf("WARNING: Unrecognised option %s\n",argv[i]); } #endif @@ -359,7 +359,7 @@ return; if(gGenSymbols && gGenBsymbols) { - Print(EWarning, "Options symbols and bsymbols cannot be used at the same time, the common symbols file will be created this time!\n"); + printf("WARNING: Options symbols and bsymbols cannot be used at the same time, the common symbols file will be created this time!\n"); gGenBsymbols = EFalse; } @@ -371,7 +371,7 @@ Print (EAlways, ReallyHelpText); } else if (filename.empty()){ - Print(EAlways, "Obey filename is missing\n"); + printf("WARNING: Obey filename is missing\n"); } } } diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rombuild/r_build.cpp --- a/imgtools/romtools/rombuild/r_build.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rombuild/r_build.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -1509,7 +1509,7 @@ } // prevent the situiation which importer is primary, variant or extension, exporter is device if (is_kernel && !Device() && romnode->iRomFile->iRbEntry->Device()) { - Print(EWarning, "Kernel/variant/extension\n\t%s\nlinks to non-extension LDD/PDD\n\t%s\n", + Print(EWarning, "Kernel/variant/extension \"%s\" links to non-extension LDD/PDD \"%s\"\n", (const char*)TModuleName(this), (const char*)TModuleName(find_info)); } if (romnode->ABI() != my_abi) { diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rombuild/r_obey.cpp --- a/imgtools/romtools/rombuild/r_obey.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rombuild/r_obey.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -1072,33 +1072,33 @@ if (isPeFile) iNumberOfPeFiles++; - // check the PC file exists - char* nname = NormaliseFileName(iReader.Word(1)); - if(gIsOBYUTF8 && !UniConv::IsPureASCIITextStream(nname)) - { - char* tempnname = strdup(nname); - unsigned int namelen = 0; - if(UniConv::UTF82DefaultCodePage(tempnname, strlen(tempnname), &nname, &namelen) < 0) + if(EKeywordHardwareConfigRepositoryData == aKeyword) { // check hcr file + // check the PC file exists + char* nname = NormaliseFileName(iReader.Word(1)); + if(gIsOBYUTF8 && !UniConv::IsPureASCIITextStream(nname)) { - Print(EError, "Invalid filename encoding: %s\n", tempnname); + char* tempnname = strdup(nname); + unsigned int namelen = 0; + if(UniConv::UTF82DefaultCodePage(tempnname, strlen(tempnname), &nname, &namelen) < 0) + { + Print(EError, "Invalid filename encoding: %s\n", tempnname); + free(tempnname); + iMissingFiles++; + delete[] nname; + return EFalse; + } free(tempnname); - iMissingFiles++; - delete[] nname; - return EFalse; } - free(tempnname); - } - ifstream test(nname,ios_base::binary | ios_base::in); - - if (!test.is_open()) { - Print(EError,"Cannot open file %s for input.\n",iReader.Word(1)); - if(EKeywordHardwareConfigRepositoryData == aKeyword) { - delete []nname; - return EFalse ; + ifstream test(nname,ios_base::binary | ios_base::in); + + if (!test.is_open()) { + Print(EError,"Cannot open file %s for input.\n",iReader.Word(1)); + if(EKeywordHardwareConfigRepositoryData == aKeyword) { + delete []nname; + return EFalse ; + } + iMissingFiles++; } - iMissingFiles++; - } - if(EKeywordHardwareConfigRepositoryData == aKeyword) { // check hcr file TUint32 magicWord = 0; test.read(reinterpret_cast(&magicWord),sizeof(TUint32)); @@ -1108,10 +1108,9 @@ delete []nname; return EFalse; } - + test.close(); + delete []nname; } - test.close(); - delete []nname; TBool endOfName=EFalse; diff -r df89378e9223 -r 7b7f0409fc00 imgtools/romtools/rombuild/rombuild.cpp --- a/imgtools/romtools/rombuild/rombuild.cpp Tue Nov 30 13:59:58 2010 +0800 +++ b/imgtools/romtools/rombuild/rombuild.cpp Tue Nov 30 14:05:41 2010 +0800 @@ -34,7 +34,7 @@ static const TInt RombuildMajorVersion=2; static const TInt RombuildMinorVersion=19; -static const TInt RombuildPatchVersion=1; +static const TInt RombuildPatchVersion=3; static TBool SizeSummary=EFalse; static TPrintType SizeWhere=EAlways; static string compareROMName = ""; @@ -490,7 +490,7 @@ } return 0; } - if (romlogfile[romlogfile.size()-1] == '\\' || romlogfile[romlogfile.size()-1] == '/') + if (romlogfile.empty() || romlogfile[romlogfile.size()-1] == '\\' || romlogfile[romlogfile.size()-1] == '/') romlogfile += "ROMBUILD.LOG"; H.SetLogFile(romlogfile.c_str()); ObeyFileReader *reader=new ObeyFileReader(filename.c_str()); diff -r df89378e9223 -r 7b7f0409fc00 sbsv2/raptor/RELEASE-NOTES.html --- a/sbsv2/raptor/RELEASE-NOTES.html Tue Nov 30 13:59:58 2010 +0800 +++ b/sbsv2/raptor/RELEASE-NOTES.html Tue Nov 30 14:05:41 2010 +0800 @@ -6,6 +6,33 @@

Release Notes for Symbian Build System v2

+

version 2.15.3

+ +

Engineering Changes

+ + +

Defect Fixes

+
    +
  • Fix: correct calculation of build duration and cluster availability
  • +
  • Fix: correct parsing for anno file
  • +
  • SF Bug 3687 make 32-bit tools2 binaries appear in 32-bit release locations even when built on a 64-bit machine e.g. release/tools2/linux-i386-libc2_5 rather than linux-x86_64-libc2_5
  • +
  • Fix: in some cases, tools2 build omits STLport when linking
  • +
  • SF Bug 3766 - [Raptor] Missing -c option to g++ in expgen recipes when using GCCE
  • +
  • SF Bug 3778 - [GCCE] Raptor 2.15 gcce.xml config breaks gcce kernel builds.
  • +
  • SF Bug 3747 - Terminal filter does not report missing bld.inf names
  • +
  • Layer information missing from logs with parallel processing on
  • +
  • SF Bug 2745 - Generated .bat files are incorrect
  • +
  • SF Bug 3511 - sbs shell script ignores SBS_CYGWIN17
  • +
  • SF Bug 3388 - Configuration of python paths confused in sbs_filter
  • +
  • SF Bug 3246 - Improve a cryptic error message
  • +
  • SF Bug 3608 - Compile fails on mixed case Qt projects
  • +
  • SF Bug 3848 - [Raptor] - parallel parsing in 2.15.3 - sysdef files for blocks don't have unique names
  • +
  • SF Bug 3807 - [Raptor] "Child" invocations of Raptor fail with parallel parsing (--pp=on) on some linuxes - unknown hostplatform
  • +
+

version 2.15.2

Engineering Changes

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