core/group/genver.pl
author Tom Sutcliffe <thomas.sutcliffe@accenture.com>
Sun, 17 Oct 2010 18:43:12 +0100
changeset 69 849a0b46c767
parent 25 482757737e59
permissions -rw-r--r--
Fixed lots of issues with installing a low-caps version of fshell from SIS file. * Fixed issue in CCommandFactory whereby some APIs like GetCommandInfoL could trigger allocations on the wrong heap or signals to the wrong thread. The symptoms were often seen as a crash in the which_00 thread when running ciftest. * Lots of build fixes for when FSHELL_PROTECTED_UIDS isn't defined and when all capabilities aren't available. * Added new platform.mmh macro FSHELL_OPEN_SIGNED. * Open signing of fshell SIS files is now supported for production S60 handsets. Build fshell with the FSHELL_OPEN_SIGNED macro defined (and without defining FSHELL_CAP_ALL or FSHELL_PROTECTED_UIDS) in your platform.mmh and submit \epoc32\fshell\fshell.unsigned.sis to https://www.symbiansigned.com/app/page/public/openSignedOnline.do . The following commands are not available when using Open Signing due to Platform Security restrictions: fdb; kerninfo; chunkinfo; svrinfo; objinfo; sudo; fsck; localdrive; ramdefrag; readmem; reboot; setcritical; setpriority. Others such as chkdeps, e32header, ps, and fshell itself will run but in a restricted capacity (for example, fshell will no longer allow you to modify files in the \sys\bin directory). * Removed commands objinfo, svrinfo, chunkinfo, readmem, fsck completely when memory access isn't present - previously they would still appear in the help but would give an error if you tried to run them.

# genver.pl
# 
# Copyright (c) 2010 Accenture. All rights reserved.
# This component and the accompanying materials are made available
# under the terms of the "Eclipse Public License v1.0"
# which accompanies this distribution, and is available
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
# 
# Initial Contributors:
# Accenture - Initial contribution
#
use strict;
use lib "../../tools";
use fshu;

my $platform = shift @ARGV;
my $version = fshu::Version();
my $localTime = scalar(localtime);
my $gmTime = scalar(gmtime);
my $builder = $ENV{USERNAME};
my $compilerVersion = CompilerVersion();


print "
#include <fshell/iocli.h>

extern void PrintVersionInfo(RIoWriteHandle& aOut, TBool aVerbose)
	{
	if (aVerbose)
		{
		aOut.Write(_L(\"Version:              $version\\r\\n\"));
		aOut.Write(_L(\"Local build time:     $localTime\\r\\n\"));
		aOut.Write(_L(\"GMT build time:       $gmTime\\r\\n\"));
		aOut.Write(_L(\"User-name of builder: $builder\\r\\n\"));
		aOut.Write(_L(\"Compiler version:     $compilerVersion\\r\\n\"));
#ifdef _DEBUG
		aOut.Write(_L(\"Build configuration:  debug\\r\\n\"));
#else
		aOut.Write(_L(\"Build configuration:  release\\r\\n\"));
#endif
		}
	else
		{
		aOut.Write(_L(\"$version\\r\\n\"));
		}
	}
";

sub CompilerVersion {
  my $version = 'Unknown';
  if ($platform =~ /^armv5$/i) {
    open (COMPILER, "armcc 2>&1 |") or die "Couldn't run \"armcc\": $!\n";
    while (my $line = <COMPILER>) {
      if ($line =~ /\[Build\s+\d+\]/) {
	chomp $line;
	$version = $line;
	last;
      }
    }
    close (COMPILER);
  }
  elsif ($platform =~ /^gcce$/i) {
    open (COMPILER, "arm-none-symbianelf-gcc.exe -v 2>&1 |") or die "Couldn't run \"arm-none-symbianelf-gcc.exe -v\": $!\n";
    while (my $line = <COMPILER>) {
      if ($line =~ /^gcc version/) {
	chomp $line;
	$version = $line;
	last;
      }
    }
    close (COMPILER);
  }
  elsif ($platform =~ /^(arm4|armi|thumb)$/i) {
    open (COMPILER, "gcc.exe -v 2>&1 |") or die "Couldn't run \"gcc.exe -v\": $!\n";
    while (my $line = <COMPILER>) {
      if ($line =~ /^gcc version/) {
	chomp $line;
	$version = $line;
	last;
      }
    }
    close (COMPILER);
  }
  elsif ($platform =~ /^winscw$/i) {
    open (COMPILER, "mwccsym2.exe 2>&1 |") or die "Couldn't run \"mwccsym2.exe\": $!\n";
    while (my $line = <COMPILER>) {
      if ($line =~ /^Version/) {
	chomp $line;
	$version = "mwccsym2 $line";
	last;
      }
    }
    close (COMPILER);
  }
  return $version;
}