toolsandutils/productionbldtools/MakeISOs.pl
changeset 0 83f4b4db085c
child 1 d4b442d23379
equal deleted inserted replaced
-1:000000000000 0:83f4b4db085c
       
     1 #!perl
       
     2 
       
     3 # MakeISOs.pl
       
     4 
       
     5 # Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     6 # All rights reserved.
       
     7 # This component and the accompanying materials are made available
       
     8 # under the terms of "Eclipse Public License v1.0"
       
     9 # which accompanies this distribution, and is available
       
    10 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
    11 #
       
    12 # Initial Contributors:
       
    13 # Nokia Corporation - initial contribution.
       
    14 #
       
    15 # Contributors:
       
    16 #
       
    17 # Description:
       
    18 # Version Info:
       
    19 # Version 001: initial version
       
    20 # Command: MakeISOs.pl [<TargetDirectory>] [<Build number>]
       
    21 # 
       
    22 #
       
    23 
       
    24 
       
    25 use File::Copy;
       
    26 
       
    27 
       
    28 # ------------------------------------- Global variables -----------------------------------
       
    29 
       
    30 
       
    31 my $TargetDirectory = $ARGV[0];
       
    32 my $TargetDirectoryDefault = "\\_PACKAGES";
       
    33 my $BuildNumber = $ARGV[1];
       
    34 my $BuildNumberDefault = $ENV{'Buildnumber'};
       
    35 
       
    36 
       
    37 
       
    38 my $DevKitDir  = "\\_PACKAGES\\DevKit_CD";
       
    39 my $CustKitDir = "\\_PACKAGES\\CustKit_Extra_CD";
       
    40 
       
    41 my $pkgSrcDefDevKitDir = "\\Product\\DevKit\\SourceDefinitions";
       
    42 my $sourceListDevKit = "DevKit.srcdef_EDITED";
       
    43 
       
    44 my $sourceListDevKit1 = "DevKit1.srcdef";
       
    45 my $sourceListDevKit2 = "DevKit2.srcdef";
       
    46 
       
    47 my $createPkgSrc = "\\generic\\epoc32\\tools\\createpkgsrc";
       
    48 my $createISO   = "c:\\apps\\dao\\makeiso";
       
    49 
       
    50 
       
    51 my @PackagesToSplitOut = (
       
    52 
       
    53 		"com.symbian.src.connect",
       
    54 		"com.symbian.src.GT-general",
       
    55 		"com.symbian.src.GT-restricted-part1",
       
    56 		"com.symbian.src.GT-restricted-part2",
       
    57 		"com.symbian.src.GT-restricted-part3",
       
    58 		"com.symbian.src.GT-restricted-part4",
       
    59 		"com.symbian.src.GT-restricted-part5",
       
    60 		"com.symbian.src.GT-restricted-part6",
       
    61 
       
    62 		"com.symbian.src.TechView-general",
       
    63 		"com.symbian.src.TechView-restricted",
       
    64 
       
    65 		"com.symbian.devkit.src"  );
       
    66 
       
    67 
       
    68 
       
    69 
       
    70 # --------------------------------- Start of Main() ----------------------------------------
       
    71 
       
    72 
       
    73 # set up target directory.
       
    74 $TargetDirectory = EstablishTargetDirectory($ARGV[0]);
       
    75 
       
    76 
       
    77 my $outputDevKitDir1 = "$TargetDirectory\\DevKit_CD_1";
       
    78 my $outputDevKitDir2 = "$TargetDirectory\\DevKit_CD_2";
       
    79 
       
    80 
       
    81 # create sub-directories
       
    82 mkdir $outputDevKitDir1, 0777 if (! -e $outputDevKitDir1);
       
    83 mkdir $outputDevKitDir2, 0777 if (! -e $outputDevKitDir2);
       
    84 
       
    85 
       
    86 # split the .srcdef and copy required .sdkpkg files
       
    87 SplitSrcdefAndCopyPackages();
       
    88 
       
    89 
       
    90 # copy non-packages (KSA etc.) files for the DevKits
       
    91 CopyKSA($DevKitDir, $outputDevKitDir1);
       
    92 CopyKSA($DevKitDir, $outputDevKitDir2);
       
    93 
       
    94 
       
    95 # create the package source (package-list.xml.zip) for the DevKits
       
    96 CreateSrc($outputDevKitDir1, "$TargetDirectory\\$sourceListDevKit1");
       
    97 CreateSrc($outputDevKitDir2, "$TargetDirectory\\$sourceListDevKit2");
       
    98 
       
    99 
       
   100 # check build number parameter
       
   101 if ($BuildNumber eq "")
       
   102 {
       
   103 	$BuildNumber = $BuildNumberDefault;
       
   104 }
       
   105 
       
   106 
       
   107 # create the ISO images for the Kits (CustKit and DevKits)
       
   108 system ("call $createISO $outputDevKitDir1 $TargetDirectory\\DevKit_CD_".$BuildNumber."_Source.ISO /BATCH /JOLIET /VOLUME=DevKit_Source");
       
   109 system ("call $createISO $outputDevKitDir2 $TargetDirectory\\DevKit_CD_$BuildNumber.ISO /BATCH /JOLIET /VOLUME=DevKit");
       
   110 system ("call $createISO $CustKitDir       $TargetDirectory\\CustKit_Extra_CD_$BuildNumber.ISO /BATCH /JOLIET /VOLUME=CustKiT");
       
   111 
       
   112 
       
   113 
       
   114 
       
   115 # --------------------------------- Start of EstablishTargetDirectory() ----------------------------------------
       
   116 # set up target directory. If supplied, create dir if non-existant. If this fails or was not supplied, use default.
       
   117 
       
   118 sub EstablishTargetDirectory($)
       
   119 {
       
   120 	$CommandLineTargetDirectory = $_[0];        # target directory for the ISOs
       
   121 
       
   122 	if ($CommandLineTargetDirectory ne "")
       
   123 	{    
       
   124 	    if ((-d $CommandLineTargetDirectory) or (mkdir $CommandLineTargetDirectory, 0777))     # exists or created OK
       
   125 		{
       
   126 			return $CommandLineTargetDirectory;
       
   127 		}
       
   128 	}
       
   129 
       
   130 	# target not given or unable to create it, so try to use default, or set to "."
       
   131 	if (-d $TargetDirectoryDefault)
       
   132 	{
       
   133 		return $TargetDirectoryDefault;     # returns default 
       
   134 	}
       
   135 	else
       
   136 	{
       
   137 		return ".";
       
   138 	}
       
   139 }
       
   140 
       
   141 
       
   142 
       
   143 # --------------------------------- Start of SplitSrcdefAndCopyPackages() ----------------------------------------
       
   144 # split the .srcdef and copy required .sdkpkg files
       
   145 
       
   146 sub SplitSrcdefAndCopyPackages()
       
   147 {
       
   148 	# read in original .srcdef file
       
   149 	open (FILE, "<$pkgSrcDefDevKitDir\\$sourceListDevKit") or die "Couldn't open file $pkgSrcDefDevKitDir\\$sourceListDevKit";
       
   150 	my @srcList = <FILE>;
       
   151 	close(FILE);
       
   152 
       
   153 	# open up two .srcdef files for new Kits
       
   154 	open (FILE1, ">$TargetDirectory\\$sourceListDevKit1") or die "Couldn't open file $TargetDirectory\\$sourceListDevKit1";
       
   155 	open (FILE2, ">$TargetDirectory\\$sourceListDevKit2") or die "Couldn't open file $TargetDirectory\\$sourceListDevKit2";
       
   156 
       
   157 
       
   158 	foreach my $line (@srcList)
       
   159 	{
       
   160 		if ($line !~ /<item/)     # line doesn't specify a source file;  must be header or footer, so copy across
       
   161 		{
       
   162 			print FILE1 $line;
       
   163 			print FILE2 $line;
       
   164 		}	
       
   165 		else                      # line specifies a source file; copy line across and copy file too
       
   166 		{
       
   167 			$line =~ /(com.*?sdkpkg)/ ;
       
   168 			my $fileName = $1 ;
       
   169 
       
   170 			if ( grep { $line =~ /$_/ } @PackagesToSplitOut )	          # packages listed in @PackagesToSplitOut
       
   171 			{
       
   172 				print FILE1 $line;
       
   173 				copy ("$DevKitDir\\$fileName", "$outputDevKitDir1\\$fileName") or die "Unable to copy $DevKitDir\\$fileName to $outputDevKitDir1\\$fileName - $!" ;
       
   174 			}
       
   175 			else	                                                      # packages not listed in @PackagesToSplitOut
       
   176 			{
       
   177 				print FILE2 $line;
       
   178 				copy ("$DevKitDir\\$fileName", "$outputDevKitDir2\\$fileName") or die "Unable to copy $DevKitDir\\$fileName to $outputDevKitDir2\\$fileName - $!" ;
       
   179 			}
       
   180 		}	
       
   181 	}
       
   182 	close (FILE1);
       
   183 	close (FILE2);
       
   184 }
       
   185 
       
   186 
       
   187 
       
   188 
       
   189 # --------------------------------- Start of CopyKSA() ----------------------------------------
       
   190 # copies non-*.sdkpkg files from source to distribution directory
       
   191 
       
   192 sub CopyKSA($$)
       
   193 {
       
   194 	my $SourceDir = $_[0];      # where non-*.sdkpkg files are (usually original DevKit directory)
       
   195 	my $DistribDir = $_[1];     # where they should be copied to (usually new DevKit directory)
       
   196 	
       
   197 	print "Copying KSA from $SourceDir to $DistribDir\n";	
       
   198 	
       
   199 	my @Files = <$SourceDir\\*>;
       
   200 	
       
   201 	foreach my $FileName (@Files)
       
   202 	{
       
   203 		if ($FileName !~m/sdkpkg/i)
       
   204 		{
       
   205 			copy($FileName, $DistribDir) or die "Unable to copy $FileName into $DistribDir" ;
       
   206 		}
       
   207 	}
       
   208 }
       
   209 
       
   210 
       
   211 
       
   212 # --------------------------------- Start of CreateSrc() ----------------------------------------
       
   213 # creates a package source (package-list.xml.zip)
       
   214  
       
   215 sub CreateSrc($$)
       
   216 {
       
   217 	chdir($_[0]) or die "Unable to change directory to $_[0]";                   # directory to put file in to
       
   218 
       
   219 	my $pkgSrcDefFile = $_[1] ;     # full path location to the *.srcdef file
       
   220 
       
   221 	# build the package source XML
       
   222 	my $command = $createPkgSrc." -s ".$pkgSrcDefFile ;
       
   223 	system($command) ;
       
   224 }
       
   225