blob: 40f070425b2ecc7a8327cbaeb051070c4972eae7 [file] [log] [blame]
:
eval 'exec perl -wS $0 ${1+"$@"}'
if 0;
#**************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#**************************************************************
#*****************************************************************************************
# ASCII parser for the changeover of the current build.lst files to XML files *
# programmer: Pascal Junck, Sun Microsystems GmbH *
#*****************************************************************************************
# this is the first step for the changeover of the current 'build.lst' files to the new
# 'build.xlist'(XML) files
# before we create the new ones we have to parse all important informations from the old files
# important parameters are:
# 1. 'module name'
# 2. 'module dependency names'
# 3. 'dependency type'
# 4. 'job dir'
# 5. 'depending directories'
# 6. 'job platform'(only: 'w', 'u', 'm' and 'all')
# 7. 'job'(only: 'nmake' means 'make')
# 8. 'build requirements'(here called: 'restrictions')
################################# begin of main #######################################
use strict;
use lib ("/home/vg119683/work/modules");
use XMLBuildListParser;
# get and work with each argument(build.lst files) of the commando line
# e.g. if the user wants to parse the build.lst file(s):
# user input (on unix) for all modules : 'perl -w ascii_parser.pl /so/ws/SRC680/src.m42/*/prj/build.lst'
# user input (on windows) for one module : 'perl -w ascii_parser.pl O:/SRC680/src.m42/[module]/prj/build.lst'
# get all arguments (build.lst files) of the commando line in this global variable '@buildlist_files'
my @buildlist_files = @ARGV;
# global variable for each file name that we want to parse in ASCII
my $parse_file = "";
# set the global variable '$debug' (= 1) to see all results on the terminal,
# else (= 0) it shows nothing of the working output!
my $debug = 0;
# open the filehandle 'ERROR_LOG' for all errors
open (ERROR_LOG, ">>ascii_parse.log")
or die "Error. Open the file <ascii_parse.log> wasn't successful!\n\n";
# reference of the instance of a new object
my $XMLTree;
foreach (@buildlist_files)
{
# get each element (= module) in '$parse_file'
$parse_file = $_;
# open the filehandle 'PARSE_ASCII' for each module/file that we want to parse
open (PARSE_ASCII, $parse_file)
or die "Error. Open the module <$parse_file> wasn't successful!\n\n";
# create a new object
$XMLTree = XMLBuildListParser->new();
# invoking of the main subroutine
reading_file();
# is the file name 'build.lst' in the path on the command line?
# if not, we can not parse and create the new 'build.xlist' file
if ($parse_file =~ /build(\w+)?\.lst\S*$/)
{
my $path = $parse_file;
$path =~ s/build(\w+)?\.lst\S*$/build\.xlist/;
$XMLTree->saveXMLFile($path);
}
else
{
add_errorlog_no_buildlst_file_found_statement($parse_file);
}
# close the current $parse_file
close(PARSE_ASCII);
}
# after all files were read close the errorlog file
close(ERROR_LOG);
########################### begin of subroutines #####################################
#
# global used variable: $parse_file
#
########################################################################################
########################################################################################
# sub: reading_file
# gets: $_ (current file)
# returns: -
########################################################################################
sub reading_file
{
# variable for the name of the current module
my $module_name = "";
# hashes for the infos beginning at the second line of the build.lst files
my %dir_of_job_platform = ();
my %dir_of_alias = ();
# control variable for the module dependency line of the file
# like line 1 of module 'sal' (dependencies means the colon(s)) (SRC680/src.m42)
# "sa sal : xml2cmp NULL"
my $module_dependency_line_exists = 0;
my $module_dependency_line_was_read = 0;
# this line variables are for checking that all lines will be read
# counts each line
my $line_number = 0;
# for the sum of the informative lines (='module dependency line' and 'nmake' lines of the file)
my $info_line_sum = 0;
# for the sum of the no-info lines, like:
# job lines: 'usr1', 'get', ... and comment lines: '# ...' or empty lines
my $no_info_line_sum = 0;
# read all lines of the file to resolve the first alias
# with the matching dir to know all aliases and directories
# at the later second file reading
while (<PARSE_ASCII>)
{
# the variable for each line of a file
my $line = $_;
# count each line for more exact error descriptions in the log file
$line_number += 1;
# remember it, if this line exists
if ( (is_module_dependency_line($line)) && ($module_dependency_line_exists == 0) )
{
$module_dependency_line_exists = 1;
# get the name of the current module
$module_name = get_module_name($line);
}
# skip all lines, that hasn't the job 'nmake'
next if (!(is_nmake_line($line)));
# check that the infos (job directory, job platform and alias) exist
if (my ($job_dir, $job_platform, $alias) = get_alias_resolving_infos($line))
{
# prove that it's a valid job_platform
# and that each first alias and matching job platform exists only once
check_alias_and_job_platform($job_dir, $job_platform, $alias, \%dir_of_job_platform,
\%dir_of_alias, $module_name, $line_number);
}
else
{
chomp;
add_errorlog_unknown_format_statement($line, $module_name, $line_number);
next;
}
}
# reset the $line_number, because we count it again
$line_number = 0;
# read the same file again
seek (PARSE_ASCII,0,0);
# read each line of the file for all other informations
# e.g. line 8 of module 'sal'
# "sa sal\systools\win32\guistdio nmake - n sa_guistdio sa_uwinapi.n NULL"
# $job_dir $job $job_platform 1.$alias 2.$alias + alias platform
while (<PARSE_ASCII>)
{
# the variable for each line of a file
my $line = $_;
# count each line to check at the end of the file that all lines were read
# and for more exact error descriptions in the log file
$line_number += 1;
# is it a 'nmake' or a 'module dependency' line?
# if not: print this line to STDOUT,
# count one to the no-info lines,
# try to get the information about the module name from this line
# and skip the line
if ( (!(is_nmake_line($line))) && (!(is_module_dependency_line($line))) )
{
my $no_info_line = show_no_info_line($line, $line_number);
$no_info_line_sum += $no_info_line;
# if no module dependency line exists get the name of the current module from another line
$module_name = get_module_name($line) if (!($module_name));
# skip the no-info line
next;
}
# only if the module dependency line exists and it wasn't read get the infos about it
if ( ($module_dependency_line_exists) && (!($module_dependency_line_was_read)) )
{
($module_dependency_line_was_read, $info_line_sum) = get_module_dependency_line_infos
($line, $module_name, $line_number);
}
# get all 'nmake' line infos
my $info_line = get_nmake_line_infos($line, \%dir_of_alias, \%dir_of_job_platform,
$module_name, $line_number);
# count the info lines;
$info_line_sum += $info_line;
}
if ($debug == 1)
{
# show the sums of the info and no-info lines
lines_sums_output($module_name, $line_number, $info_line_sum, $no_info_line_sum);
}
}
########################################################################################
# sub: is_module_dependency_line
# gets: $line
# returns: 1 (true) or 0 (false)
########################################################################################
sub is_module_dependency_line
{
my $line = shift;
# if the module dpendency line exists return 1, otherwise 0
($line =~ /^\w+\s+\S+\s+:+\s+/)
? return 1
: return 0;
}
########################################################################################
# sub: is_nmake_line
# gets: $line
# returns: '1' (true) or '0' (false)
########################################################################################
sub is_nmake_line
{
my $line = shift;
# these lines are NO nmake lines:
# 1. a empty line
# 2. a comment line (perhaps with the job 'nmake')
# like line 20 of module 'bridges' (SRC680/src.m42)
# "#br bridges\source\cli_uno nmake - w,vc7 br_cli_uno br_unotypes NULL========= "
# 3. the module dependency line
# like line 1 of module 'sal' (dependencies means the colon(s)) (SRC680/src.m42)
# "sa sal : xml2cmp N ULL"
# 4. a 'p' job platform line (for OS2)
# 5. a line with a job, which is not 'nmake'
($line =~ (/^[^\s+\#]/) && (!(/\s+:+\s+/)) && (!(/\s+p\s+/)) && (/\bnmake\b/) )
? return 1
: return 0;
}
########################################################################################
# sub: get_alias_resolving_infos
# gets: $line
# returns: $job_dir, $job_platform, $alias
########################################################################################
sub get_alias_resolving_infos
{
my $line = shift;
if ($line =~ /^\w+\s+(\S+)\s+\w+\s+\-\s+(\w+)\,?(\w+)?\s+(\S+)\s+/)
{
# get the current work directory
my $temp_job_dir = $1;
my $job_dir = change_job_directory($temp_job_dir);
# get the job platform of the current job
# if it is a 'n' job platform transform it to 'w'
# because 'n' can be used now as 'w' (both means windows)
my $job_platform = $2;
$job_platform = "w" if($job_platform eq "n");
# get the first alias in each line
my $alias = $4;
return ($job_dir, $job_platform, $alias);
}
return (undef, undef, undef);
}
########################################################################################
# sub: change_job_directory
# gets: $job_dir
# returns: $changed_job_dir
########################################################################################
# we don't need the module name and the first '\' in the current directory
sub change_job_directory
{
my $changed_job_dir = shift;
# ignore the module name
$changed_job_dir =~ s/^\w+//;
# change all other '\' against the '/' of the current dir
$changed_job_dir =~ s/\\/\//g;
# get only a "/" if we are in the root directory
$changed_job_dir = "/" if ($changed_job_dir eq "");
return $changed_job_dir;
}
########################################################################################
# sub: check_alias_and_job_platform
# gets: $job_dir, $job_platform, $alias, $dir_of_job_platform_ref,
# $dir_of_alias_ref, $module_name, $line_number
# returns: -
########################################################################################
# get it in the hash only if it is a valid job platform,
# like 'w', 'u', 'm' and 'n'
# 'all' is also valid but it doesn't exist in an alias platform(!)
sub check_alias_and_job_platform
{
my ($job_dir, $job_platform, $alias, $dir_of_job_platform_ref,
$dir_of_alias_ref, $module_name, $line_number) = @_;
# is it a valid job_platform?
if ($job_platform =~ /(w|u|m|n|all)/)
{
# get only the 'w', 'u', 'm' and 'n' based job platforms
if ($job_platform =~ /[wumn]/)
{
# doesn't the key already exist?
(!(exists $$dir_of_job_platform_ref{$job_platform.$alias}))
# get the first alias with the matching job platform in the hash
? get_alias_and_job_platform($job_platform, $alias, $dir_of_job_platform_ref)
# this is a line with a redundant alias and job platform
: add_errorlog_alias_redundancy_statement($module_name, $alias, $job_platform, $line_number);
}
if (!(exists $$dir_of_alias_ref{$alias}))
{
# get each first alias with the matching job platform
get_alias_and_matching_directory($dir_of_alias_ref, $alias, $job_dir);
}
}
# it's not a valid job platform
else
{
add_errorlog_invalid_platform_statement($module_name, $job_platform, $line_number);
}
}
########################################################################################
# sub: get_alias_and_job_platform
# gets: $job_platform, $alias, $dir_of_job_platform_ref
# returns: -
########################################################################################
# get the the job platform and the first alias as a unique key
# and the job platform as value of the hash
# it's for checking later that the alias platform is equal to the job platform
# e.g.: line 6 + 7 of the module 'gtk' (SRC680/src.m42)
# "gt gtk\pkgconfig nmake - u gt_pkg NULL"
# "gt gtk\glib nmake - u gt_glib gt_pkg.u NULL"
# the alias 'gt_pkg' has the directory 'gtk\pkgconfig' (we need only 'pkgconfig')
# and it has the job platform 'u' - compare it with the alias platform 'gt_pkg.u'
sub get_alias_and_job_platform
{
my ($job_platform, $alias, $dir_of_job_platform_ref) = @_;
# key = 'job platform' and 'first alias' => value = 'job platform'
$$dir_of_job_platform_ref{$job_platform.$alias} = $job_platform;
}
########################################################################################
# sub: get_alias_and_matching_directory
# gets: $dir_of_alias_ref, $alias, $job_dir
# returns: -
########################################################################################
# fill the hash with the first alias and the matching directory
# e.g. line 14 of module 'setup2' (SRC680/src.m42)
# "se setup2\win\source\unloader nmake - w se_wulo se_unotypes NULL"
# key = 'se_wulo' => value = 'win/source/unloader'
sub get_alias_and_matching_directory
{
my ($dir_of_alias_ref, $alias, $job_dir) = @_;
# key = 'first alias' => value = 'job directory'
$$dir_of_alias_ref{$alias} = $job_dir;
}
########################################################################################
# sub: show_no_info_line
# gets: $line, $line_number
# returns: $no_info_line
########################################################################################
sub show_no_info_line
{
my ($line, $line_number) = @_;
my $no_info_line += 1;
chomp($line);
print"Ignore line <$line_number>:\n\"$line\"\n\n" if ($debug);
return $no_info_line;
}
########################################################################################
# sub: get_module_name
# gets: $line
# returns: $module_name
########################################################################################
sub get_module_name
{
my $line = shift;
my $module_name = "";
if ($line =~ /^\w+\s+([\w\.\-]+)\\?/)
{
$module_name = $1;
}
# set the 'module name' in the data structure tree
$XMLTree->setModuleName($module_name);
return $module_name;
}
########################################################################################
# sub: get_module_dependency_line_infos
# gets: $line, $module_name, $line_number
# returns: $module_dependency_line_was_read, $info_line_sum
########################################################################################
# get the informations about the module dependency line
# like line 1 of module 'sal' (SRC680/src.m42)
# "sa sal : xml2cmp NULL"
# $module_name $module_dependency @module_dependency_names
sub get_module_dependency_line_infos
{
my ($line, $module_name, $line_number) = @_;
my $module_dependency = "";
my @module_dependency_names = ();
my %dep_modules_and_products = ();
my $product = "";
my $module_dependency_line_was_read = 1;
my $info_line_sum = 1;
if ($debug)
{
print"\nline number : <$line_number>\n";
print"module-name : <$module_name>\n";
}
# get the dependencies
if ($line =~ /\s+(:+)\s+/)
{
$module_dependency = $1;
print"module-dependency : <$module_dependency>\n" if ($debug);
# transform the dependency type to the corresponding tag name
if ($module_dependency eq ":")
{
$module_dependency = "md-simple";
}
elsif ($module_dependency eq "::")
{
$module_dependency = "md-always";
}
elsif ($module_dependency eq ":::")
{
$module_dependency = "md-force";
}
}
# get a list of all depending module names
if ($line =~ /:+\s+([\S\s]+)\s+NULL/)
{
@module_dependency_names = split(/\s+/, $1);
foreach my $module (@module_dependency_names)
{
# check whether that there is another product (as "all") of a module
if ($module =~ /(\S+):+(\S+)/)
{
$dep_modules_and_products{$2} = $1;
}
else
{
$dep_modules_and_products{$module} = "all";
}
}
}
# add the dependency module names, the module dependency type and the product to the data structure
foreach my $module (sort keys %dep_modules_and_products)
{
print"module-dependency-name(s) : key <$module> value <".$dep_modules_and_products{$module}.">\n" if ($debug);
$XMLTree->addModuleDependencies($module, $module_dependency, $dep_modules_and_products{$module});
}
return ($module_dependency_line_was_read, $info_line_sum);
}
########################################################################################
# sub: get_nmake_line_infos
# gets: $line, \%dir_of_alias, \%dir_of_job_platform, $module_name, $line_number
# returns: $info_line
########################################################################################
# get all infos about the 'nmake' lines
# e.g. line 8 of module 'sal'
# "sa sal\systools\win32\guistdio nmake - n sa_guistdio sa_uwinapi.n NULL"
# $job_dir $job $job_platform 1.$alias 2.$alias + alias platform
sub get_nmake_line_infos
{
my ($line, $dir_of_alias_ref, $dir_of_job_platform_ref, $module_name, $line_number) = @_;
my $directories_ref = "";
my $info_line = 0;
# get the infos about the 'nmake' lines
if ($line =~ /^\w+\s+(\S+)\s+(\w+)\s+\-\s+(\w+)\,?(\S+)?/)
{
# get the current working directory
my $temp_job_dir = $1;
my $job_dir = change_job_directory($temp_job_dir);
# get the job
my $job = $2;
$job = "make" if ($job eq "nmake");
# get the job platform of the current job
# if it is a 'n' job platform transform it to 'wnt'
# available values are: 'wnt', 'unx', 'mac' or 'all'
my $job_platform = $3;
$job_platform = change_job_platform_name($job_platform);
# get the first alias in each line
my $restriction = $4;
my %build_req = ( "$restriction" => "$job_platform") if ($restriction && $job_platform);
# get all aliases (but not the first) in an array
my $aliases_ref = get_aliases($line);
# filter the list of aliases, which has a 'p' job platform
# and transform a 'n' ending alias platform to a 'w' ending alias platform
filter_aliases($aliases_ref);
# resolve all aliases (alias[.job platform] => matching directory)
$directories_ref = resolve_aliases($aliases_ref, $dir_of_alias_ref,
$dir_of_job_platform_ref, $module_name, $line_number);
# count the informative lines
$info_line = 1;
$XMLTree->addJob($job_dir, $job, $job_platform, $directories_ref, \%build_req);
# show the infos, that we know about each line
if ($debug == 1)
{
show_line_infos($line_number, $job_dir, $job, $job_platform, $restriction, $aliases_ref, $directories_ref);
}
}
return $info_line;
}
########################################################################################
# sub: change_job_platform_name
# gets: $job_platform
# returns: $job_platform
########################################################################################
sub change_job_platform_name
{
my $job_platform = shift;
$job_platform = "wnt" if($job_platform eq "n" || $job_platform eq "w");
$job_platform = "unx" if($job_platform eq "u");
$job_platform = "mac" if($job_platform eq "m");
return $job_platform;
}
########################################################################################
# sub: get_aliases
# gets: $_ (current line)
# returns: \@aliases
########################################################################################
# get all aliases of the line in an array
sub get_aliases
{
my $line = shift;
my @aliases = ();
# get all aliases in an array (but cut out the first alias)
if ($line =~ /\-\s+[\w+\,]+\s+([\S\s]+)\s+NULL$/)
{
print"\nall job aliases : <$1>\n" if ($debug);
@aliases = split /\s+/, $1;
# we don't need the first alias (it stands for the current job directory)
shift @aliases;
}
return \@aliases;
}
########################################################################################
# sub: filter_aliases
# gets: $aliases_ref
# returns: -
########################################################################################
# filter all aliases, because we only need the 'w', 'u' and 'm' job platform based aliases
sub filter_aliases
{
my $aliases_ref = shift;
# get the highest index of the array (number of elements of the array - 1)
# also works: my $index = scalar(@$aliases_ref)-1;
my $index = $#{@{$aliases_ref}};
for (; $index >= 0; $index--)
{
# filter the 'p' job platform based aliases from '@aliases'
splice(@$aliases_ref, $index, 1) if ($$aliases_ref[$index] =~ /\.p$/);
# transform a '.n' ending alias platform to '.w' ending alias platform
if ($$aliases_ref[$index] =~ /\.n$/)
{
$$aliases_ref[$index] =~ s/\.n$/\.w/;
splice(@$aliases_ref, $index, 1, $$aliases_ref[$index]);
}
}
}
########################################################################################
# sub: resolve_aliases
# gets: $aliases_ref, $dir_of_alias_ref, $dir_of_job_platform_ref,
# $module_name, $line_number
# returns: \@directories
########################################################################################
# here we get each alias with the matching job directory
sub resolve_aliases
{
my ($aliases_ref, $dir_of_alias_ref, $dir_of_job_platform_ref, $module_name, $line_number) = @_;
my @directories = ();
my ($alias_platform, $alias, $temp_alias) = "";
# resolving all directory aliases
foreach $temp_alias (@$aliases_ref)
{
($alias, $alias_platform) = compare_job_platform_with_alias_platform
($temp_alias, $dir_of_job_platform_ref, $module_name, $line_number);
# does the alias exist?
if (exists $$dir_of_alias_ref{$alias})
{
# then get the matching directory in the array
push (@directories, $$dir_of_alias_ref{$alias});
}
else
{
add_errorlog_no_directory_of_alias_statement($module_name, $alias, $line_number);
}
}
return \@directories;
}
########################################################################################
# sub: compare_job_platform_with_alias_platform
# gets: $alias, $dir_of_job_platform_ref, $module_name, $line_number
# returns: $alias
########################################################################################
sub compare_job_platform_with_alias_platform
{
my ($alias, $dir_of_job_platform_ref, $module_name, $line_number) = @_;
my $alias_platform = "";
# compare the alias platform (with a dot and an ending letter, like "al_alib.u")
# with the job platform of the line in which this alias was resolved
if ($alias =~ /\.([wum])$/)
{
$alias_platform = $1;
# don't memorize the ending dot and letter
$alias =~ s/\.\w$//;
# if the value(= job platform) of the hash or the alias platform has no value
# set it to "no valid value"
if (!(exists $$dir_of_job_platform_ref{$alias_platform.$alias}))
{
$$dir_of_job_platform_ref{$alias_platform.$alias} = "no valid value";
}
$alias_platform = "no valid value" if (!($alias_platform));
# are the job platform and the alias platform equal?
if ($$dir_of_job_platform_ref{$alias_platform.$alias} ne $alias_platform)
{
add_errorlog_not_equal_platforms_statement
($module_name, $alias, $alias_platform, $dir_of_job_platform_ref, $line_number);
}
}
return ($alias, $alias_platform);
}
########################################################################################
# sub: show_line_infos
# gets: $line_number, $job_dir, $job, $job_platform, $restriction,
# $aliases_ref, $directories_ref
# returns: -
########################################################################################
# print the infos about each line
sub show_line_infos
{
my ($line_number, $job_dir, $job, $job_platform, $restriction, $aliases_ref, $directories_ref) = @_;
print"line number : <$line_number>\n";
print"job directory : <$job_dir>\n";
print"job : <$job>\n";
print"job platform : <$job_platform>\n" if ($job_platform =~ /(w|u|m|all)/);
print"restriction : <$restriction>\n" if ($restriction);
print"alias dependencies : <@$aliases_ref>\n";
print"directory dependencies : <@$directories_ref>\n\n";
}
########################################################################################
# sub: lines_sums_output
# gets: $module_name, $line_number, $info_line_sum, $no_info_line_sum
# returns: -
########################################################################################
sub lines_sums_output
{
# this line variables are for checking that all lines will be read:
my ($module_name, $line_number, $info_line_sum, $no_info_line_sum) = @_;
my $lines_sum = 0;
add_errorlog_no_module_name_statement() if (!($module_name));
# were all lines read? and is the checksum okay?
$lines_sum = $info_line_sum + $no_info_line_sum;
if ($lines_sum == $line_number)
{
print"All $line_number line(s) of module <$module_name> were read and checked!\n\n";
}
else
{
add_errorlog_different_lines_sums_statement($module_name);
}
print"module: <$module_name>\n".
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n".
" info line(s) sum = $info_line_sum\n".
"no-info line(s) sum = $no_info_line_sum\n".
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n".
" total line(s) sum = $line_number\n\n\n";
}
############################ ERROR_LOG subroutines #####################################
########################################################################################
# sub: add_errorlog_invalid_job_platform_statement
# gets: $module_name, $platform, $line_number
# returns: -
########################################################################################
sub add_errorlog_invalid_job_platform_statement
{
my ($module_name, $job_platform, $line_number) = @_;
print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
"The job platform <$job_platform> is not valid.\n\n";
}
########################################################################################
# sub: add_errorlog_not_equal_platforms_statement
# gets: $module_name, $alias, $alias_platform, $dir_of_job_platform_ref, $line_number
# returns: -
########################################################################################
sub add_errorlog_not_equal_platforms_statement
{
my ($module_name, $alias, $alias_platform, $dir_of_job_platform_ref, $line_number) = @_;
print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
"The alias platform <$alias.$alias_platform> is not equal ".
"with the job platform <$$dir_of_job_platform_ref{$alias_platform.$alias}>.\n\n";
}
########################################################################################
# sub: add_errorlog_no_directory_of_alias_statement
# gets: $module_name, $alias, $line_number
# returns: -
########################################################################################
sub add_errorlog_no_directory_of_alias_statement
{
my ($module_name, $alias, $line_number) = @_;
print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
"The directory of the alias <$alias> doesn't exist!\n\n";
}
########################################################################################
# sub: add_errorlog_no_module_name_statement
# gets: -
# returns: -
########################################################################################
sub add_errorlog_no_module_name_statement
{
print ERROR_LOG "Error. No module name found in dir/file <$parse_file>.\n\n";
}
########################################################################################
# sub: add_errorlog_alias_redundancy_statement
# gets: $module_name, $alias, $job_platform, $line_number
# returns: -
########################################################################################
sub add_errorlog_alias_redundancy_statement
{
my ($module_name, $alias, $job_platform, $line_number)= @_;
print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
"The alias <$alias> with the job platform <$job_platform> is redundant.\n\n";
}
########################################################################################
# sub: add_errorlog_unknown_format_statement
# gets: $module_name, $line_number
# returns: -
########################################################################################
sub add_errorlog_unknown_format_statement
{
my ($line, $module_name, $line_number) = @_;
print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.".
"\nUnknown format:\n\"$line\"\n\n";
}
########################################################################################
# sub: add_errorlog_different_lines_sums_statement
# gets: $module_name
# returns: -
########################################################################################
sub add_errorlog_different_lines_sums_statement
{
my $module_name = shift;
print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file>.\n".
"The sums of all info and no-info lines are not correct!\n\n";
}
########################################################################################
# sub: add_errorlog_no_buildlst_file_found_statement
# gets: $parse_file
# returns: -
########################################################################################
sub add_errorlog_no_buildlst_file_found_statement
{
my $parse_file = shift;
print ERROR_LOG "Error in command line argument <$parse_file>.\n".
"File 'build.lst' not found!\n";
}
############################# end of the subroutines ###################################