diff -r 9edb472725a0 -r 5adea361d896 releaseAutomation/fcls4releasenotes.pl --- a/releaseAutomation/fcls4releasenotes.pl Thu Nov 05 12:27:15 2009 +0000 +++ b/releaseAutomation/fcls4releasenotes.pl Fri Nov 06 12:10:52 2009 +0000 @@ -1,3 +1,4 @@ +#!perl -w # Copyright (c) 2009 Symbian Foundation Ltd # This component and the accompanying materials are made available # under the terms of the License "Eclipse Public License v1.0" @@ -15,23 +16,24 @@ # Here is the location for the naming convention for the PDKs: http://developer.symbian.org/wiki/index.php/Build_and_Integration +use strict; +use Getopt::Long; + # # Configuration data and constants for the script # -print "\n"; -my $default_pdk_loc='\\\\bishare\\releases\\'; +my $default_pdk_loc='//bishare/releases/'; print "default_pdk_loc=$default_pdk_loc\n"; # Nb of arguments to be passed to the script to work. If that need to change, just modify nb_arg_to_pass! my $nb_arg_to_pass=2; -print "nb_arg_to_pass=$nb_arg_to_pass\n"; # Name of the file that contains the data we need to extract for this script -my $build_bom_zip_file_to_extract="build_BOM\.zip"; -my $build_logs_zip_file_to_extract="build_logs\.zip"; +my $build_bom_zip_file_to_extract="build_BOM.zip"; +my $build_logs_zip_file_to_extract="build_logs.zip"; # Name of the file we need to work on to extract the data necessary for the Release Notes from build_BOM.zip -my $name_of_file_to_compare="build-info\.xml"; +my $name_of_file_to_compare="build-info.xml"; # File used to extract path and component name for a package from build_logs.zip my $pckg_extraction_data_file_name = "PkgComponentAnalysisSummary.csv"; @@ -83,47 +85,53 @@ # End configuration data for the script # +# Arguments / Data used for the script +my $help = 0; +my $publishDir; -# Get parameters passed to the script. Save only the 2 first parameters as we need only 2 parameters for the script -print "\n"; -my $nb_arg_passed = scalar(@ARGV); -print "nb_arg_passed=$nb_arg_passed\n"; # Find out the number of arguement passed -print "@ARGV\n\n"; -# Needs to be done here, otherwise lost if try to recover them later on. Why? -my $arg1_passed = $ARGV[0]; -my $arg2_passed = $ARGV[1]; -print "arg1_passed= $arg1_passed \t arg2_passed=$arg2_passed\n"; +my @PDK = ({}, {}); -# if enter help as unique argument, then we will launch the help becaue we only pass one argument. -if ($nb_arg_passed != $nb_arg_to_pass) +GetOptions(( + 'pdknb1=s' => \$PDK[0]->{number}, + 'pdknb2=s' => \$PDK[1]->{number}, + 'pdkname1=s' => \$PDK[0]->{name}, + 'pdkname2=s' => \$PDK[1]->{name}, + 'pdkloc1=s' => \$PDK[0]->{loc}, + 'pdkloc2=s' => \$PDK[1]->{loc}, + 'publish=s' => \$publishDir, + 'help!' => \$help, +)); + +if ($help) { helpme(); + exit(0); } -# Modules necessary to run this script -use Getopt::Long; -use strict; - +foreach my $pdkCount (0 .. $#PDK) +{ + if (scalar (grep {defined} keys %{$PDK[$pdkCount]}) == 0) + { + print "No data provided to identify PDK", $pdkCount + 1, "\n"; + helpme(); + exit (1); + } + if (scalar (grep { defined $_ } values %{$PDK[$pdkCount]}) > 1) + { + print "Multiple data provided to identify PDK", $pdkCount + 1, "\n"; + print values %{$PDK[$pdkCount]}; + helpme(); + exit (1); + } +} -# Arguments / Data used for the script -my $pdknb1 = ''; -my $pdknb2 = ''; -my $pdkloc1 = ''; -my $pdkloc2 = ''; -my $pdkname1 = ''; -my $pdkname2 = ''; - -my $help = 0; +my $pdknb1 = $PDK[0]->{number} || ""; +my $pdkname1 = $PDK[0]->{name} || ""; +my $pdkloc1 = $PDK[0]->{loc} || ""; -GetOptions(( - 'pdknb1=s' => \$pdknb1, - 'pdknb2=s' => \$pdknb2, - 'pdkname1=s' => \$pdkname1, - 'pdkname2=s' => \$pdkname2, - 'pdkloc1=s' => \$pdkloc1, - 'pdkloc2=s' => \$pdkloc2, - 'help!' => \$help # Not working -)); +my $pdknb2 = $PDK[1]->{number} || ""; +my $pdkname2 = $PDK[1]->{name} || ""; +my $pdkloc2 = $PDK[1]->{loc} || ""; print "pdknb1=$pdknb1\n"; print "pdknb2=$pdknb2\n"; @@ -133,14 +141,14 @@ print "pdkloc2=$pdkloc2\n"; print "help=$help\n"; -my $count_arg=0; # Caculate the number of arguments we need for the script to work and that we know are correct (help doesn't count) +# Use the specified release location if supplied +$default_pdk_loc = $publishDir || $default_pdk_loc; +$default_pdk_loc =~ s{([^/\\])$}{$1\\}; # First PDK to check my $pdk_path1=""; my $pdk_complete_name1=0; my $pdk_complete_path1=0; -my $pdk_path1_now_in_use=0; -my $pdk_values_to_search1=""; # Not necessary my $pdk_path1_exist=0; my $pdk_zip1_exit=0; # Not necessary my $pdk1_correct_name_to_use=""; @@ -150,8 +158,6 @@ my $pdk_path2=""; my $pdk_complete_name2=0; my $pdk_complete_path2=0; -my $pdk_path2_now_in_use=0; -my $pdk_values_to_search2=""; # Not necessary my $pdk_path2_exist=0; my $pdk_zip2_exist=0; # Not necessary my $pdk2_correct_name_to_use=""; @@ -164,7 +170,6 @@ my @directories_list_default_location=(); my $nb_dir_in_default_loc; my @pdk_dir_list_in_default_location=(); -my $nb_pdks_in_default_loc=0; my @pdks_with_valid_zip_in_default_loc=(); my $nb_pdks_with_valid_zip_in_default_loc=0; my @find_pdk_for_corresponding_nb1=(); @@ -202,114 +207,37 @@ my %pckg_path_name_array; # Table containing the path for each packages my %pckg_name_array; # Table containing the real meaning name for each packages, not the name of the package in the directory structure -# Check that we have only 2 values for the PDKs. If not 2, then not good! - - -# Script code start here! if($pdknb1) { - $count_arg++; - - # Get data for first pdk used for the comparison $pdk_path1 = $default_pdk_loc; $pdk_complete_name1=1; $pdk_complete_path1=1; - $pdk_path1_now_in_use=1; - $pdk_values_to_search1=$pdknb1; # Not necessary } if($pdknb2) { - $count_arg++; - - # Get data for first pdk used for the comparison $pdk_path2 = $default_pdk_loc; $pdk_complete_name2=1; $pdk_complete_path2=1; - $pdk_path2_now_in_use=1; - $pdk_values_to_search2=$pdknb2; # Not necessary } if($pdkname1) { - $count_arg++; - - if(!$pdk_path1_now_in_use) - { - # Get data for first pdk used for the comparison - $pdk_path1 = $default_pdk_loc; - $pdk_complete_path1=1; - $pdk_path1_now_in_use=1; - $pdk_values_to_search1=$pdkname1; # Not necessary - } - else - { - print "You are a bad boy!!!!, you can't enter 2 parameters ending with the same number like pdknb1 and pdkname1! Start again with the right parameters!\n"; - exit(0); - } + $pdk_path1 = $default_pdk_loc; + $pdk_complete_path1=1; } if($pdkname2) { - $count_arg++; - - if(!$pdk_path2_now_in_use) - { - # Get data for first pdk used for the comparison - $pdk_path2 = $default_pdk_loc; - $pdk_complete_path2=1; - $pdk_path2_now_in_use=1; - $pdk_values_to_search2=$pdkname2; # Not necessary - } - else - { - print "You are a bad boy!!!!, you can't enter 2 parameters ending with the same number like pdknb2 and pdkname2! Start again with the right parameters!\n"; - exit(0); - } + $pdk_path2 = $default_pdk_loc; + $pdk_complete_path2=1; } if($pdkloc1) { - $count_arg++; - - if(!$pdk_path1_now_in_use) - { - # Get data for first pdk used for the comparison - $pdk_path1 = $pdkloc1; - $pdk_path1_now_in_use=1; - } - else - { - print "You are a bad boy!!!!, you can't enter 2 parameters ending with the same number like pdknb1 and pdkloc1! Start again with the right parameters!\n"; - exit(0); - } + $pdk_path1 = $pdkloc1; } - if($pdkloc2) { - $count_arg++; - - if(!$pdk_path2_now_in_use) - { - # Get data for first pdk used for the comparison - $pdk_path2 = $pdkloc2; - $pdk_path2_now_in_use=1; - } - else - { - print "You are a bad boy!!!!, you can't enter 2 parameters ending with the same number like pdknb2 and pdkloc2! Start again with the right parameters!\n"; - exit(0); - } + $pdk_path2 = $pdkloc2; } -print "count_arg=$count_arg\n"; - - -# If no parameters entered or help selected, display help -if ($count_arg != $nb_arg_to_pass) -{ - #$help = 1; - helpme(); - print"\nThe script accepts $nb_arg_to_pass parameters only!\n\n"; -} - - # # If we reach this point, this means that we have the right numbers of arguments passed to the script. # @@ -318,12 +246,10 @@ print "pdk_path1=$pdk_path1\n"; print "pdk_complete_name1=$pdk_complete_name1\n"; print "pdk_complete_path1=$pdk_complete_path1\n"; -print "pdk_values_to_search1=$pdk_values_to_search1\n"; # Not necessary print "\n"; print "pdk_path2=$pdk_path2\n"; print "pdk_complete_name2=$pdk_complete_name2\n"; print "pdk_complete_path2=$pdk_complete_path2\n"; -print "pdk_values_to_search2=$pdk_values_to_search2\n"; # Not necessary print "\n\n"; # Get directory listing of all directories in the default location $default_pdk_loc @@ -388,7 +314,6 @@ # Have a look in the default directory if there is a PDK with that number. If none or more than one with the same id, returns the list of PDKs with that same number foreach $find_val (@pdks_with_valid_zip_in_default_loc) { - #print $find_val, "\n"; if($find_val =~ /$pdknb2/i) { $find_pdk_for_corresponding_nb2[$nb_of_pdk_for_corresponding_nb2++]=$find_val; @@ -789,9 +714,9 @@ print FCLCOMPARISONFILE <<"EOT"; == Packages == -This section is about general information on the packages included in the platform. +This section provides general information on the packages included in the platform. -This is an analysis between '''$pdk2_correct_name_to_use''' and '''$pdk1_correct_name_to_use''' +This is an analysis of '''$pdk2_correct_name_to_use''' compared to the baseline of '''$pdk1_correct_name_to_use'''. EOT @@ -814,7 +739,7 @@ } print FCLCOMPARISONFILE "=== Packages removed ===\n\n"; -print FCLCOMPARISONFILE "''' Number total of packages removed in $pdk2_correct_name_to_use is: $total_packages_removed'''\n\n"; +print FCLCOMPARISONFILE "Number total of packages removed in $pdk2_correct_name_to_use is: '''$total_packages_removed'''\n\n"; foreach $val (@packages_removed_table) { if($pckg_name_array{$val}) @@ -964,29 +889,24 @@ { print "\nfct: extract_pdk_in_default_loc\n"; - my $var; - $nb_pdks_in_default_loc=0; + my $nb_pdks_in_default_loc=0; print "pdk_start_pattern = $pdk_start_pattern\n"; - foreach $var (@directories_list_default_location) + foreach my $var (@directories_list_default_location) { if($var =~ /^$pdk_start_pattern+/) { $pdk_dir_list_in_default_location[$nb_pdks_in_default_loc++] = $var; } } - print "There is $nb_pdks_in_default_loc PDKs in the default location $default_pdk_loc\n"; - - print "This is the list of PDKs that are in the default location $default_pdk_loc\n"; + print "There are $nb_pdks_in_default_loc PDKs in the default location $default_pdk_loc\n"; } # Establish the list of PDK directories with a valid zip file to do the test sub extract_pdk_with_valid_zip_in_default_loc { print "\nfct: extract_pdk_with_valid_zip_in_default_loc\n"; - - my $var1; - my $var2; + my $path_to_find_zip = ""; my @read_pdk_directory=(); @@ -994,7 +914,7 @@ print "build_bom_zip_file_to_extract=$build_bom_zip_file_to_extract\n"; - foreach $var1 (@pdk_dir_list_in_default_location) + foreach my $var1 (@pdk_dir_list_in_default_location) { $path_to_find_zip=$default_pdk_loc; @@ -1005,7 +925,7 @@ @read_pdk_directory = readdir(PDK_DIR); close(PDK_DIR); - foreach $var2 (@read_pdk_directory) + foreach my $var2 (@read_pdk_directory) { if($var2 =~ /$build_bom_zip_file_to_extract$/) { @@ -1013,7 +933,7 @@ } } } - print "There is $nb_pdks_with_valid_zip_in_default_loc PDKs with a valid $build_bom_zip_file_to_extract zip in the default location $default_pdk_loc\n"; + print "There are $nb_pdks_with_valid_zip_in_default_loc PDKs with a valid $build_bom_zip_file_to_extract zip in the default location $default_pdk_loc\n"; print "This is the list of PDKs that have a zip file called $build_bom_zip_file_to_extract in the default location $default_pdk_loc\n"; display_array_one_line_at_the_time(@pdks_with_valid_zip_in_default_loc); @@ -1096,26 +1016,15 @@ print "$file_to_work_on\n"; - my @local_array; - # Open file open(FILETOWORKON , $file_to_work_on); - - # Extract data from file my @local_array = ; - - # Close file close(FILETOWORKON); - my $extracted_line; - # Create a table with the path for each package using a hash array my $pckg_name_extraction_pattern = "^sf\/[\\w]*\/([\\w]*)"; - my $pckg_path_extraction_pattern = "^(sf[\W\w]*[^,]+),"; + my $pckg_path_extraction_pattern = "^([^,]+),"; my $pckg_real_name_extraction_pattern = ",[\\s]+([\\w\\s]*),[\\s]+[\\w\\s]*\$"; - my $pckg_name=""; - my $pckg_path=""; - my $pckg_real_name=""; #Typical lines to decode #sf/app/helps,SFL,sf/app/helps/symhelp/helpmodel/group/bld.inf,OK, Help Apps, Help @@ -1137,15 +1046,17 @@ # # Go line by line - - foreach $extracted_line (@local_array) + foreach my $extracted_line (sort @local_array) { if($extracted_line =~ m;$pckg_name_extraction_pattern;) { - $pckg_name = $1; + my $pckg_name = $1; if(!$pckg_path_name_array{$pckg_name}) # Check if package is not already in the table to avoid duplicates { + my $pckg_path="''nonstandard path''"; + my $pckg_real_name=""; + if($extracted_line =~ m;$pckg_path_extraction_pattern;) { $pckg_path = $1; @@ -1161,7 +1072,6 @@ } } - my $local_value=""; my @local_array_sorted; @local_array=keys (%pckg_path_name_array);