toolsandutils/productionbldtools/MakeISOs.pl
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolsandutils/productionbldtools/MakeISOs.pl	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,225 @@
+#!perl
+
+# MakeISOs.pl
+
+# Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Version Info:
+# Version 001: initial version
+# Command: MakeISOs.pl [<TargetDirectory>] [<Build number>]
+# 
+#
+
+
+use File::Copy;
+
+
+# ------------------------------------- Global variables -----------------------------------
+
+
+my $TargetDirectory = $ARGV[0];
+my $TargetDirectoryDefault = "\\_PACKAGES";
+my $BuildNumber = $ARGV[1];
+my $BuildNumberDefault = $ENV{'Buildnumber'};
+
+
+
+my $DevKitDir  = "\\_PACKAGES\\DevKit_CD";
+my $CustKitDir = "\\_PACKAGES\\CustKit_Extra_CD";
+
+my $pkgSrcDefDevKitDir = "\\Product\\DevKit\\SourceDefinitions";
+my $sourceListDevKit = "DevKit.srcdef_EDITED";
+
+my $sourceListDevKit1 = "DevKit1.srcdef";
+my $sourceListDevKit2 = "DevKit2.srcdef";
+
+my $createPkgSrc = "\\generic\\epoc32\\tools\\createpkgsrc";
+my $createISO   = "c:\\apps\\dao\\makeiso";
+
+
+my @PackagesToSplitOut = (
+
+		"com.symbian.src.connect",
+		"com.symbian.src.GT-general",
+		"com.symbian.src.GT-restricted-part1",
+		"com.symbian.src.GT-restricted-part2",
+		"com.symbian.src.GT-restricted-part3",
+		"com.symbian.src.GT-restricted-part4",
+		"com.symbian.src.GT-restricted-part5",
+		"com.symbian.src.GT-restricted-part6",
+
+		"com.symbian.src.TechView-general",
+		"com.symbian.src.TechView-restricted",
+
+		"com.symbian.devkit.src"  );
+
+
+
+
+# --------------------------------- Start of Main() ----------------------------------------
+
+
+# set up target directory.
+$TargetDirectory = EstablishTargetDirectory($ARGV[0]);
+
+
+my $outputDevKitDir1 = "$TargetDirectory\\DevKit_CD_1";
+my $outputDevKitDir2 = "$TargetDirectory\\DevKit_CD_2";
+
+
+# create sub-directories
+mkdir $outputDevKitDir1, 0777 if (! -e $outputDevKitDir1);
+mkdir $outputDevKitDir2, 0777 if (! -e $outputDevKitDir2);
+
+
+# split the .srcdef and copy required .sdkpkg files
+SplitSrcdefAndCopyPackages();
+
+
+# copy non-packages (KSA etc.) files for the DevKits
+CopyKSA($DevKitDir, $outputDevKitDir1);
+CopyKSA($DevKitDir, $outputDevKitDir2);
+
+
+# create the package source (package-list.xml.zip) for the DevKits
+CreateSrc($outputDevKitDir1, "$TargetDirectory\\$sourceListDevKit1");
+CreateSrc($outputDevKitDir2, "$TargetDirectory\\$sourceListDevKit2");
+
+
+# check build number parameter
+if ($BuildNumber eq "")
+{
+	$BuildNumber = $BuildNumberDefault;
+}
+
+
+# create the ISO images for the Kits (CustKit and DevKits)
+system ("call $createISO $outputDevKitDir1 $TargetDirectory\\DevKit_CD_".$BuildNumber."_Source.ISO /BATCH /JOLIET /VOLUME=DevKit_Source");
+system ("call $createISO $outputDevKitDir2 $TargetDirectory\\DevKit_CD_$BuildNumber.ISO /BATCH /JOLIET /VOLUME=DevKit");
+system ("call $createISO $CustKitDir       $TargetDirectory\\CustKit_Extra_CD_$BuildNumber.ISO /BATCH /JOLIET /VOLUME=CustKiT");
+
+
+
+
+# --------------------------------- Start of EstablishTargetDirectory() ----------------------------------------
+# set up target directory. If supplied, create dir if non-existant. If this fails or was not supplied, use default.
+
+sub EstablishTargetDirectory($)
+{
+	$CommandLineTargetDirectory = $_[0];        # target directory for the ISOs
+
+	if ($CommandLineTargetDirectory ne "")
+	{    
+	    if ((-d $CommandLineTargetDirectory) or (mkdir $CommandLineTargetDirectory, 0777))     # exists or created OK
+		{
+			return $CommandLineTargetDirectory;
+		}
+	}
+
+	# target not given or unable to create it, so try to use default, or set to "."
+	if (-d $TargetDirectoryDefault)
+	{
+		return $TargetDirectoryDefault;     # returns default 
+	}
+	else
+	{
+		return ".";
+	}
+}
+
+
+
+# --------------------------------- Start of SplitSrcdefAndCopyPackages() ----------------------------------------
+# split the .srcdef and copy required .sdkpkg files
+
+sub SplitSrcdefAndCopyPackages()
+{
+	# read in original .srcdef file
+	open (FILE, "<$pkgSrcDefDevKitDir\\$sourceListDevKit") or die "Couldn't open file $pkgSrcDefDevKitDir\\$sourceListDevKit";
+	my @srcList = <FILE>;
+	close(FILE);
+
+	# open up two .srcdef files for new Kits
+	open (FILE1, ">$TargetDirectory\\$sourceListDevKit1") or die "Couldn't open file $TargetDirectory\\$sourceListDevKit1";
+	open (FILE2, ">$TargetDirectory\\$sourceListDevKit2") or die "Couldn't open file $TargetDirectory\\$sourceListDevKit2";
+
+
+	foreach my $line (@srcList)
+	{
+		if ($line !~ /<item/)     # line doesn't specify a source file;  must be header or footer, so copy across
+		{
+			print FILE1 $line;
+			print FILE2 $line;
+		}	
+		else                      # line specifies a source file; copy line across and copy file too
+		{
+			$line =~ /(com.*?sdkpkg)/ ;
+			my $fileName = $1 ;
+
+			if ( grep { $line =~ /$_/ } @PackagesToSplitOut )	          # packages listed in @PackagesToSplitOut
+			{
+				print FILE1 $line;
+				copy ("$DevKitDir\\$fileName", "$outputDevKitDir1\\$fileName") or die "Unable to copy $DevKitDir\\$fileName to $outputDevKitDir1\\$fileName - $!" ;
+			}
+			else	                                                      # packages not listed in @PackagesToSplitOut
+			{
+				print FILE2 $line;
+				copy ("$DevKitDir\\$fileName", "$outputDevKitDir2\\$fileName") or die "Unable to copy $DevKitDir\\$fileName to $outputDevKitDir2\\$fileName - $!" ;
+			}
+		}	
+	}
+	close (FILE1);
+	close (FILE2);
+}
+
+
+
+
+# --------------------------------- Start of CopyKSA() ----------------------------------------
+# copies non-*.sdkpkg files from source to distribution directory
+
+sub CopyKSA($$)
+{
+	my $SourceDir = $_[0];      # where non-*.sdkpkg files are (usually original DevKit directory)
+	my $DistribDir = $_[1];     # where they should be copied to (usually new DevKit directory)
+	
+	print "Copying KSA from $SourceDir to $DistribDir\n";	
+	
+	my @Files = <$SourceDir\\*>;
+	
+	foreach my $FileName (@Files)
+	{
+		if ($FileName !~m/sdkpkg/i)
+		{
+			copy($FileName, $DistribDir) or die "Unable to copy $FileName into $DistribDir" ;
+		}
+	}
+}
+
+
+
+# --------------------------------- Start of CreateSrc() ----------------------------------------
+# creates a package source (package-list.xml.zip)
+ 
+sub CreateSrc($$)
+{
+	chdir($_[0]) or die "Unable to change directory to $_[0]";                   # directory to put file in to
+
+	my $pkgSrcDefFile = $_[1] ;     # full path location to the *.srcdef file
+
+	# build the package source XML
+	my $command = $createPkgSrc." -s ".$pkgSrcDefFile ;
+	system($command) ;
+}
+