browserui/browser/IadSis/createIADpackages.pl
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 Aug 2009 07:42:55 +0300
changeset 10 4530440261a8
parent 0 84ad3b177aa3
child 33 dbd79466b1ed
permissions -rw-r--r--
Revision: 200929 Kit: 200935

#
# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved.
# This component and the accompanying materials are made available
# under the terms of the License "Eclipse Public License v1.0"
# which accompanies 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 script generate various SIS package files depeding on the 
#							 depending on the variant selection. for example variant 01 will create
#							 a package support English, French, Germany and Portuguese. 
#
use Getopt::Long;
use File::Copy;
use File::Basename;
use strict;
use warnings;
use Cwd;
use FindBin qw($Bin);
use Data::Dumper;
use fcntl; 

my $usage = q{
Description: This script generate browser SISx package file automatically. 
This script usually is called by buildIADsis.pl. However it can be used separately as well. 
	
Example: create_package.pl -v 01 -p armv5 -r urel -bmajor 7 -bminor 1 -bnumber 32  

Mandatory arguments: 
-v: S60 language variant number
-p: Build target platform. Valid values are: armv5 or winscw, only armv5 supported right now
-r: Release build. Valid values are: urel or udeb, only urel supported right now 
-bmajor: build major number. In term of Browser version 7.1.1234, 7 is the major number 
-bminor: build minor number. In term of Browser version 7.1.1234, 1 is the minor number 
-bnumber: build number. In term of Browser version 7.1.1234, 1234 is the build number  

Optional arguments: 
- None

Limitations
- This script is currently valid only for 'armv5 urel' builds on S60 3.2.3 platform.

}; 

my %num_lang = (
	"01"	=> ["western", "01", "02", "03", "14"],
	"02"	=> ["western", "01", "09", "06", "16"],
	"03"	=> ["western", "01", "37", "57", "50"],
	"04"	=> ["western", "01", "05", "27", "17"],
	"05"	=> ["western", "01", "04", "18", "13"],
	"06"	=> ["western", "01", "51", "76", "83"],
	"07"	=> ["western", "01", "67", "54", "49"],
	"08"	=> ["western", "01", "68", "78", "93"],
	"09"	=> ["western", "01", "42", "45", "79"],
	"10"	=> ["western", "01", "59", "70", "39"],
	"11"	=> ["western", "01", "15", "07", "08"],
	"12"	=> ["western", "01", "58", "94"],
	"13"	=> ["western", "01", "25", "26", "28"],
	"14"	=> ["china", "29", "30", "157"],
	"15"	=> ["china", "31", "159"],
	"16"	=> ["japan", "32", "160"],
	"17"	=> ["thai", "33", "161"],
	"18"  => ["western", "01", "96"],
	"19"  => ["china", "31", "326", "159"],
	"20"  => ["western", "05", "44", "401", "402"],
	"50" => ["western", "01", "02", "03", "14", "09", "06", "16", "37", "57", "33", "50", "05", "27", 
											"17", "04", "18", "13", "51", "76", "83", "67", "54", "49", "68", "78", "93", 
											"42", "45", "79", "59", "70", "39", "15", "07", "08", "58", "94", "25", "26", "28", 
											"96", "05", "44"],
	"51" => ["china", "29", "30", "157", "31", "159"]
	);	
# To support western-all IAD delivery we need to remove Lang 401, 402 of variant 50

die $usage unless @ARGV;

print @ARGV; 
print "\n"; 

my ($variant_num,$platform,$release,$bmajor,$bminor,$bnumber); 
#my ($test1, $test2, $test3); 
GetOptions("v=s", => \$variant_num, "p=s",=> \$platform, "r=s",=> \$release,
           "bmajor=s", => \$bmajor, "bminor=s",=> \$bminor, "bnumber=s",=> \$bnumber) or die $usage; 
print "variant $variant_num \n";
print "platform $platform \n"; 
print "release $release \n";
print "bmajor, $bmajor \n"; 
print "bminor, $bminor \n"; 
print "bnumber, $bnumber \n"; 
 
print "... package variant $variant_num\n";
print "... package platform $platform \n";
print "... release $release \n";
# print "... major mini build $bmajor $bminor $bnumber \n"); 
# exit; 

# print $release; print "\n"; 


# Create BrowserNG_Cenrep.pkg file 
open (CENPKGFILE, '>.\\pkg\\BrowserNG_cenrep.pkg');
print CENPKGFILE "\;Languages\n"; 
print CENPKGFILE "\&EN\n\n"; 
print CENPKGFILE "\;Header\n";
print CENPKGFILE "\#\{\"Browser CenRep INI file\"\}\, \(0x10202BE9\)\,$bmajor,$bminor,$bnumber, TYPE=SP \n\n";
print CENPKGFILE <<ENDHEADER0;
;Localised Vendor name
%{"Nokia"}

;Unique Vendor name
:"Nokia"

;Supports S60 3rd Edition
[0x102032BE], 0, 0, 0, {"Series60ProductID"}

ENDHEADER0
print CENPKGFILE "\; CenRep ini file\n";
my $SrcDir = "\\epoc32\\data\\z\\private\\10202be9\\";
my $TargetDir = "c:\\private\\10202be9\\"; 
print CENPKGFILE "\n";
my @install_files = (
	"10008d39.txt",
	"101f8731.txt"
);
for my$install_file (@install_files) {
print CENPKGFILE "\"$SrcDir$install_file\"\n - \"$TargetDir$install_file\" \n"; 
}
close (CENPKGFILE); 

########################################################################
# create BrowserNG.pkg file
open (PKGFILE, '>.\\pkg\\BrowserNG.pkg');
#print PKGFILE <<ENDHEADER;
#;Languages
print PKGFILE "\;Languages\n"; 
#&EN
print PKGFILE "\&EN\n\n"; 
#
#;Header
#{"Web Browser Update"},(0x10008D39),7,1,0, TYPE=SA,RU
print PKGFILE "\;Header\n";
print PKGFILE "\#\{\"Web Browser Update\"\}\, \(0x10008D39\)\,$bmajor,$bminor,$bnumber, TYPE=SA,RU \n\n";

print PKGFILE <<ENDHEADER;
;Localised Vendor name
%{"Nokia"}

;Unique Vendor name
:"Nokia"

;Supports S60 3rd Edition
[0x102032BE], 0, 0, 0, {"Series60ProductID"}

ENDHEADER

# MIF resource files ot install
$SrcDir = "\\epoc32\\data\\Z\\resource\\apps\\";
$TargetDir = "!:\\resource\\apps\\"; 
print PKGFILE "\n";
# print PKGFILE $SrcDir; 
# print PKGFILE $TargetDir; 
@install_files = (
	"BrowserAudioVideoPlugin_aif.mif",
	"schemeapp_aif.mif",
	"VideoServices_AIF.MIF", 
	"browser.mif", 
	"browserng_aif.mif",
	"connman.mif", 
	"downloadmgruilib.mif",
	"operatormenu_aif.mif",
	"pushmtm.mif",
	"webkiticons.mif", 
	"webkitutilsicons.mif" 
);
for my $install_file (@install_files) {
print PKGFILE "\"$SrcDir$install_file\"\n - \"$TargetDir$install_file\" \n"; 
}

# SRC resource files ot install
$SrcDir = "\\epoc32\\data\\z\\private\\10003a3f\\apps\\";
$TargetDir = "!:\\private\\10003a3f\\import\\apps\\"; 
print PKGFILE "\n";
@install_files = (
	"BrowserNG_reg.rsc",
	"CodViewer_reg.rsc",
	"DdViewer_reg.rsc", 
	"Operatormenu_reg.rsc", 
	"PushViewer_reg.rsc",
	"RoapApp_reg.rsc", 
	"SchemeApp_reg.rsc",
	"VideoServices_reg.rsc",
	"WidgetUi_reg.rsc"
);
for my$install_file (@install_files) {
print PKGFILE "\"$SrcDir$install_file\"\n - \"$TargetDir$install_file\" \n"; 
}

# SRC resource files ot install
$SrcDir = "\\epoc32\\data\\Z\\resource\\";
$TargetDir = "!:\\resource\\"; 
print PKGFILE "\n";
@install_files = (
	"AiwBrowserProvider.rsc"
);
for my $install_file (@install_files) {
print PKGFILE "\"$SrcDir$install_file\"\n - \"$TargetDir$install_file\" \n\n"; 
}

# Get the languages of the variant 
my $variant_lang = $num_lang{$variant_num}; 
my @variant_lang = @$variant_lang; 
shift @variant_lang; 

# generate the lang dependent files 
for my$lang (@variant_lang) {
  print PKGFILE "IF exists\( \"z:\\resource\\avkon.r$lang\" ) \n";	

	$SrcDir = "\\epoc32\\data\\z\\resource\\";
	$TargetDir = "!:\\resource\\"; 
	print PKGFILE "\n";
	@install_files = (
		"webkit",
		"BrowserAudioVideoPlugin",
		"BrowserDialogsProvider", 
		"browsertelservice", 
		"CodUi",
		"ConnectionManager", 
		"DownloadMgrUiLib",
		"WidgetInstallerUI",
		"WidgetMenu"
	);
	for my$install_file (@install_files) {
	print PKGFILE "\"$SrcDir$install_file.r$lang\"\n - \"$TargetDir$install_file.r$lang\" \n"; 
	}
	# generate more lang dependent files 
	$SrcDir = "\\epoc32\\data\\z\\resource\\";
	$TargetDir = "!:\\resource\\"; 
	print PKGFILE "\n";
	@install_files = (
		"webkitutils"
	);
	for my$install_file (@install_files) {
	print PKGFILE "\"$SrcDir$install_file.r$lang\"\n - \"$TargetDir$install_file.r$lang\" \n"; 	
	}
	# generate more lang dependent files 
	$SrcDir = "\\epoc32\\data\\z\\resource\\apps\\";
	$TargetDir = "!:\\resource\\apps\\"; 
	print PKGFILE "\n";
	@install_files = (
		"BrowserNG",
		"CodViewer",
		"DdViewer",
		"Operatormenu",
		"PushViewer",
		"RoapApp",
		"SchemeApp",
		"VideoServices",
		"WidgetUi"
	);
	for my$install_file (@install_files) {
	print PKGFILE "\"$SrcDir$install_file.r$lang\"\n - \"$TargetDir$install_file.r$lang\" \n"; 
	}
	# generate more lang dependent files 
	$SrcDir = "\\epoc32\\data\\z\\resource\\messaging\\mtm\\";
	$TargetDir = "!:\\resource\\messaging\\mtm\\"; 
	print PKGFILE "\n";
	@install_files = (
		"PushRegistry"
	);
	for my$install_file (@install_files) {
	print PKGFILE "\"$SrcDir$install_file.r$lang\"\n - \"$TargetDir$install_file.r$lang\" \n"; 
	}
	# generate more lang dependent files 
	$SrcDir = "\\epoc32\\data\\z\\resource\\messaging\\";
	$TargetDir = "!:\\resource\\messaging\\"; 
	print PKGFILE "\n";
	@install_files = (
		"PushMtmUi"
	);
	for my$install_file (@install_files) {
	print PKGFILE "\"$SrcDir$install_file.r$lang\"\n - \"$TargetDir$install_file.r$lang\" \n"; 
	}
print PKGFILE "ENDIF \n";
}
# end of generate the lang dependent files 

# Non lang dependent rsc files 
$SrcDir = "\\epoc32\\data\\z\\resource\\plugins\\";
$TargetDir = "!:\\resource\\plugins\\"; 
print PKGFILE "\n";
@install_files = (
	"AiwBrowserProvider",
	"BrowserRec",
	"CodRecog",
	"CookieFilter",
	"DdRecog",
	"DeflateFilter",
	"HttpFilterAcceptHeader",
	"HttpFilterAuthentication",
	"HttpFilterCache",
	"HttpFilterPipeliningConfig",
	"PushMtmPushContentHandler",
	"PushMtmWhiteListAdapter",
	"SchemeDispatcher",
	"WidgetInstallerUI", 
	"widgetRecognizer",
	"httpfilterIop",
	"httpfilterconnhandler",
	"httpfilterproxy",
	"memoryplugin",
	"npBrowserAudioVideoPlugin",
	"npGpsPlugin",
	"npSystemInfoPlugin", 
	"uaproffilter",
	"widgetmemoryplugin"	
);
print PKGFILE "\n";
for my$install_file (@install_files) {
print PKGFILE "\"$SrcDir$install_file.rsc\"\n - \"$TargetDir$install_file.rsc\" \n"; 
}

# Files to install (binaries - DLL)
$SrcDir = "\\epoc32\\release\\armv5\\urel\\";
$TargetDir = "!:\\sys\\bin\\"; 
print PKGFILE "\n";
@install_files = (
	"AiwBrowserProvider",
	"BrowserCache",
	"BrowserLauncher",
	"BrowserRec",
	"BrowserTelService",
	"CodDownload",
	"CodEng",
	"CodRecog",
	"CodUi",
	"ConnectionManager",
	"DdRecog",
	"DeflateFilter",
	"DownloadMgr",
	"DownloadMgrUiLib", 
	"FavouritesEngine",
	"FeedsServerApi",
	"FeedsServerClient",
	"HttpCacheManager",
	"HttpDMServEng",
	"HttpFilterAcceptHeader",
	"HttpFilterAuthentication",
	"HttpFilterCache",
	"HttpFilterCommon", 
	"HttpFilterPipeliningConfig",
	"JavaScriptCore",
	"MemMan",
	"Multipartparser",
	"PushMtmCliSrv",
	"PushMtmPushContentHandler",
	"PushMtmUi",
	"PushMtmUtil",
	"PushMtmWhiteListAdapter",
	"RECENTURLSTORE",
	"SchemeDispatcher",
	"WidgetInstallerUI",
	"WidgetRecognizer",
	"WidgetRegistryClient",
	"browserdialogsprovider",
	"browserengine",
	"cXmlParser",
	"cookiefilter",
	"cookiemanager",
	"httpfilterIop",
	"httpfilterconnhandler",
	"httpfilterproxy",
	"memoryplugin",
	"npBrowserAudioVideoPlugin",
	"npGpsPlugin",
	"npSystemInfoPlugin",
	"pagescaler",
	"uaproffilter",
	"webkitutils",
	"webutils",
	"widgetengine",
	"WidgetInstaller",
	"widgetmemoryplugin",
	"wmlEngine"
);	
for my$install_file (@install_files) {
print PKGFILE "\"$SrcDir$install_file.dll\"\n - \"$TargetDir$install_file.dll\" \n"; 
}

# Files to install (binaries - EXE)
$SrcDir = "\\epoc32\\release\\armv5\\urel\\";
$TargetDir = "!:\\sys\\bin\\"; 
print PKGFILE "\n";
@install_files = (
	"BrowserNG",
	"CodViewer",
	"CookieServer",
	"DdViewer",
	"DownloadMgrServer",
	"FavouritesSrv",
	"FeedsServer",
	"OperatorMenu",
	"PushViewer",
	"RoapApp",
	"SchemeApp",
	"VideoServices",
	"WidgetBackupRestore",
	"widgetlauncher", 
	"WidgetRegistry",
	"WidgetUi"
);	
for my$install_file (@install_files) {
print PKGFILE "\"$SrcDir$install_file.exe\"\n - \"$TargetDir$install_file.exe\" \n"; 
}

# add the cenrep file 
print PKGFILE "\n\n";
print PKGFILE "\@\"BrowserNG_Cenrep.sisx\", (0x10202BE9)\n"; 

close (PKGFILE); 

print "end of the package"