Build script update (NOT PART OF THE BUILD)

This commit is contained in:
sfraser%netscape.com 2000-11-02 02:38:20 +00:00
parent a07efad3ca
commit eac612e238
7 changed files with 138 additions and 80 deletions

View File

@ -48,7 +48,6 @@ my($prefs_file_name) = "Mozilla opt build prefs";
#-------------------------------------------------------------
# hashes to hold build options
#-------------------------------------------------------------
my(%pull);
my(%build);
my(%options);
my(%filepaths);

View File

@ -48,7 +48,6 @@ my($prefs_file_name) = "Mozilla debug build prefs";
#-------------------------------------------------------------
# hashes to hold build options
#-------------------------------------------------------------
my(%pull);
my(%build);
my(%options);
my(%filepaths);
@ -73,7 +72,7 @@ SetupBuildRootDir(":mozilla:build:mac:build_scripts");
# Override the defaults using the preferences files.
SetupDefaultBuildOptions(1, ":mozilla:dist:viewer_debug:");
my($do_checkout) = 0;
my($do_pull) = 0; # overridden by flags and prefs
my($do_build) = 1;
RunBuild($do_checkout, $do_build, \%inputfiles, $prefs_file_name);
RunBuild($do_pull, $do_build, \%inputfiles, $prefs_file_name);

View File

@ -200,9 +200,13 @@ sub CheckOutModule($$$$)
my($checkout_err) = $session->getLastError();
if ($checkout_err == 708) {
die "Checkout was cancelled";
die "Error: Checkout was cancelled.\n";
} elsif ($checkout_err == 911) {
die "Error: CVS session settings are incorrect. Check your password, and the CVS root settings.\n";
} elsif ($checkout_err == 703) {
die "Error: CVS checkout failed. Unknown module, unknown tag, bad username, or other CVS error.\n";
} elsif ($checkout_err == 711) {
print "Checkout of '$module' failed\n";
print "Checkout of '$module' failed.\n";
}
}
@ -222,7 +226,7 @@ sub Checkout($)
{
my($checkout_list) = @_;
unless ( $main::pull{all} ) { return; }
unless ( $main::build{pull} ) { return; }
my($start_time) = TimeStart();
@ -231,9 +235,10 @@ sub Checkout($)
my($session) = Moz::MacCVS->new( $cvsfile );
unless (defined($session)) { die "Error: Checkout aborted. Cannot create session file: $session" }
# activate MacCVS
ActivateApplication('Mcvs');
StartBuildModule("pull");
my(@cvs_co_list);
my($checkout_file) = getScriptFolder().":".$checkout_list;
local(*CHECKOUT_FILE);
open(CHECKOUT_FILE, "< $checkout_file") || die "Error: failed to open checkout list $checkout_file\n";
@ -247,38 +252,56 @@ sub Checkout($)
next;
}
my($module) = "";
my($revision) = "";
my($date) = "";
my(@cvs_co) = ["", "", ""];
if ($line =~ /\s*([^\s]+)\s*\,\s*([^\s]+)\s*\,\s*(.+)\s*/)
my($module, $revision, $date) = (0, 1, 2);
if ($line =~ /\s*([^#,\s]+)\s*\,\s*([^#,\s]+)\s*\,\s*([^#]+)/)
{
$module = $1;
$revision = $2;
$date = $3;
@cvs_co[$module] = $1;
@cvs_co[$revision] = $2;
@cvs_co[$date] = $3;
}
elsif ($line =~ /\s*([\/\w]+)\s*\,\s*(\w+)\s*/)
elsif ($line =~ /\s*([^#,\s]+)\s*\,\s*([^#,\s]+)\s*(#.+)?/)
{
$module = $1;
$revision = $2;
@cvs_co[$module] = $1;
@cvs_co[$revision] = $2;
}
elsif ($line =~ /\s*([^\s]+)\s*\,\s*,\s*(.+)\s*/)
elsif ($line =~ /\s*([^#,\s]+)\s*\,\s*,\s*([^#,]+)/)
{
$module = $1;
$date = $2;
@cvs_co[$module] = $1;
@cvs_co[$date] = $2;
}
elsif ($line =~ /\s*([\/\w]+)/)
elsif ($line =~ /\s*([^#,\s]+)/)
{
$module = $1;
@cvs_co[$module] = $1;
}
else
{
die "Error: unrecognized line '$line' in $checkout_list\n";
}
# print "Checking out '$module', '$revision', '$date'\n";
CheckOutModule($session, $module, $revision, $date);
# strip surrounding space from date
@cvs_co[$date] =~ s/^\s*|\s*$//g;
# print "Going to check out '@cvs_co[$module]', '@cvs_co[$revision]', '@cvs_co[$date]'\n";
push(@cvs_co_list, \@cvs_co);
}
close(CHECKOUT_FILE);
# activate MacCVS
ActivateApplication('Mcvs');
my($this_co);
foreach $this_co (@cvs_co_list)
{
my($module, $revision, $date) = ($this_co->[0], $this_co->[1], $this_co->[2]);
CheckOutModule($session, $module, $revision, $date);
}
TimeEnd($start_time, "Checkout");
EndBuildModule("pull");
}
@ -297,18 +320,17 @@ sub RunBuild($$$$)
}
# read local prefs, and the build progress file, and set flags to say what to build
SetupBuildParams(\%main::pull,
\%main::build,
SetupBuildParams(\%main::build,
\%main::options,
\%main::optiondefines,
\%main::filepaths,
$input_files->{"buildflags"},
$build_prefs);
# If we were told to pull, make sure we do, overriding prefs etc.
if ($do_pull)
{
$main::pull{"all"} = 1;
$main::build{"pull"} = 1;
}
# setup the build log
@ -344,9 +366,7 @@ sub RunBuild($$$$)
$package_name =~ s/\.pm$//;
chdir($main::MOZ_SRC);
my($dist_time) = TimeStart();
&{$package_name."::BuildDist"}();
TimeEnd($dist_time, "Building dist");
chdir($main::MOZ_SRC);
&{$package_name."::BuildProjects"}();

View File

@ -28,13 +28,11 @@ use vars qw(@ISA @EXPORT);
);
my(@pull_flags);
my(@build_flags);
my(@options_flags);
my(@filepath_flags);
my(%arrays_list) = (
"pull_flags", \@pull_flags,
"build_flags", \@build_flags,
"options_flags", \@options_flags,
"filepath_flags", \@filepath_flags
@ -55,7 +53,7 @@ sub appendArrayFlag($$$)
my($flags_array) = $arrays_list{$array_name};
if ($flags_array)
{
push(@{$flags_array}, @this_flag);
push(@{$flags_array}, @this_flag) || die "Failed to append\n";
}
else
{
@ -94,19 +92,19 @@ sub readFlagsFile($)
}
# 1-word line, probably array name
if ($line =~ /^(\w+)\s*$/)
if ($line =~ /^([^#\s]+)\s*$/)
{
$cur_array = $1;
next;
}
elsif ($line =~ /^(\w+)\s+\"(.+)\"\s*$/) # quoted option
elsif ($line =~ /^([^#\s]+)\s+\"(.+)\"(\s+#.+)?$/) # quoted option, possible comment
{
my($flag) = $1;
my($setting) = $2;
appendArrayFlag($cur_array, $flag, $setting);
}
elsif ($line =~ /^(\w+)\s+([^\s]+)\s*$/)
elsif ($line =~ /^([^#\s]+)\s+([^#\s]+)(\s+#.+)?$/) # two-word line, possible comment
{
my($flag) = $1;
my($setting) = $2;
@ -163,14 +161,21 @@ sub printHash($)
}
#-------------------------------------------------------------------------------
# SetPullFlags
#-------------------------------------------------------------------------------
sub SetPullFlags($)
#-----------------------------------------------
# printBuildArray
#
# Utility routine to print a 2D array
#-----------------------------------------------
sub printBuildArray($)
{
my($pull) = @_;
my($build_array) = @_;
flagsArrayToHash(\@pull_flags, $pull);
my($entry);
foreach $entry (@$build_array)
{
print "$entry->[0] = $entry->[1]\n";
}
}
#-------------------------------------------------------------------------------
@ -248,6 +253,8 @@ sub _getBuildProgressFile()
#//--------------------------------------------------------------------------------------------------
#// setBuildProgressStart
#//
#// This automagically sets $build{"all"} to 0
#//--------------------------------------------------------------------------------------------------
sub setBuildProgressStart($$)
{
@ -257,10 +264,11 @@ sub setBuildProgressStart($$)
my($index);
foreach $index (@$build_array)
{
$index->[1] = $setting;
$index->[1] = 0; # $setting;
if ($index->[0] eq $name) {
$setting = 1;
# $setting = 1;
last;
}
}
@ -337,31 +345,59 @@ sub ReadBuildProgress($)
}
}
#-------------------------------------------------------------------------------
# clearOldBuildSettings
#-------------------------------------------------------------------------------
sub clearOldBuildSettings($$$$)
{
my($build, $options, $optiondefines, $filepaths) = @_;
# empty the arrays in case we're being called twice
@build_flags = ();
@options_flags = ();
@filepath_flags = ();
# and empty the hashes
%$build = ();
%$options = ();
%$optiondefines = ();
%$filepaths = ();
}
#-------------------------------------------------------------------------------
# SetupBuildParams
#-------------------------------------------------------------------------------
sub SetupBuildParams($$$$$$$)
sub SetupBuildParams($$$$$$)
{
my($pull, $build, $options, $optiondefines, $filepaths, $flags_file, $prefs_file) = @_;
my($build, $options, $optiondefines, $filepaths, $flags_file, $prefs_file) = @_;
# Empty the hashes and arrays, to wipe out any stale data.
# Needed because these structures persist across two build scripts
# called using 'do' from a parent script.
clearOldBuildSettings($build, $options, $optiondefines, $filepaths);
# Read from the flags file, which sets up the various arrays
readFlagsFile($flags_file);
# If 'all' is set in the build array, propagate that to all entries
PropagateAllFlags(\@build_flags);
# read the user pref file, that can change values in the array
ReadMozUserPrefs($prefs_file, \@pull_flags, \@build_flags, \@options_flags, \@filepath_flags);
ReadMozUserPrefs($prefs_file, \@build_flags, \@options_flags, \@filepath_flags);
# If build progress exists, this clears flags in the array up to a certain point
ReadBuildProgress(\@build_flags);
PropagateAllFlags(\@build_flags);
PropagateAllFlags(\@pull_flags);
# printBuildArray(\@build_flags);
# printBuildArray(\@options_flags);
SetPullFlags($pull);
SetBuildFlags($build);
SetBuildOptions($options);
SetOptionDefines($optiondefines);
SetFilepathFlags($filepaths);
# printHash($build);
# printHash($build);
# printHash($options);
}

View File

@ -74,7 +74,7 @@ sub WriteDefaultPrefsFile($)
% Lines which modify the default build settings. For the list of flags,
% see MozBuildFlags.pm. Examples are:
%
% pull runtime 1 % just pull runtime
% build pull 0 % don't pull
% options mng 1 % turn mng on
%
% Line containing the special 'buildfrom' flag, which specifies
@ -164,25 +164,26 @@ sub HandleBuildFromPref($$)
sub ReadPrefsFile($$$$$)
{
my($file_path, $pull_flags, $build_flags, $options_flags, $filepath_flags) = @_;
my($file_path, $build_flags, $options_flags, $filepath_flags, $create_if_missing) = @_;
local(*PREFS_FILE);
if (open(PREFS_FILE, "< $file_path"))
{
print "Reading build prefs from $file_path\n";
print "Reading build prefs from '$file_path'\n";
while (<PREFS_FILE>)
{
my($line) = $_;
chomp($line);
if ($line =~ /^\#/ || $line =~ /^\s*$/) { # ignore comments and empty lines
next;
}
if (($line =~ /^\s*(\w+)\s+(\w+)\s+\"(.+)\"\s*/) ||
($line =~ /^\s*(\w+)\s+(\w+)\s+\'(.+)\'\s*/) ||
($line =~ /^\s*(\w+)\s+(\w+)\s+([^\s]+)\s*/))
if (($line =~ /^\s*([^#\s]+)\s+([^#\s]+)\s+\"(.+)\"(\s+#.+)?/) ||
($line =~ /^\s*([^#\s]+)\s+([^#\s]+)\s+\'(.+)\'(\s+#.+)?/) ||
($line =~ /^\s*([^#\s]+)\s+([^#\s]+)\s+([^#\s]+)(\s+#.+)?/))
{
my($array_name) = $1;
my($option_name) = $2;
@ -190,11 +191,7 @@ sub ReadPrefsFile($$$$$)
# print "Read '$array_name' '$option_name' '$option_value'\n";
if ($array_name eq "pull")
{
HandlePrefSet($pull_flags, $option_name, $option_value, "Pull");
}
elsif ($array_name eq "build")
if ($array_name eq "build")
{
HandlePrefSet($build_flags, $option_name, $option_value, "Build");
}
@ -211,12 +208,12 @@ sub ReadPrefsFile($$$$$)
print "Unknown pref option at $line\n";
}
}
elsif ($line =~ /^\s*buildfrom\s+(\w+)/)
elsif ($line =~ /^\s*buildfrom\s+([^#\s]+)(\s+#.+)?/)
{
my($build_start) = $1;
HandleBuildFromPref($build_flags, $build_start);
}
elsif ($line =~ /^\s*(\w+)\s+(\w+)/)
elsif ($line =~ /^\s*([^#\s]+)\s+([^#\s]+)(\s+#.+)?/)
{
my($build_var) = $1;
my($var_setting) = $2;
@ -226,14 +223,14 @@ sub ReadPrefsFile($$$$$)
}
else
{
print "Unknown pref option at $line\n";
print "Unrecognized input line at $line\n";
}
}
close(PREFS_FILE);
}
else
elsif ($create_if_missing)
{
print "No prefs file found at $file_path; using defaults\n";
@ -251,16 +248,26 @@ sub ReadPrefsFile($$$$$)
#
#-------------------------------------------------------------------------------
sub ReadMozUserPrefs($$$$$)
sub ReadMozUserPrefs($$$$)
{
my($prefs_file_name, $pull_flags, $build_flags, $options_flags, $filepath_flags) = @_;
my($prefs_file_name, $build_flags, $options_flags, $filepath_flags) = @_;
if ($prefs_file_name eq "") { return; }
my($prefs_path) = GetPrefsFolder();
$prefs_path .= ":$prefs_file_name";
# if local prefs exist, just use those. Othewise, look in the prefs folder
if (-e $prefs_file_name)
{
# read local prefs
ReadPrefsFile($prefs_file_name, $build_flags, $options_flags, $filepath_flags, 0);
}
else
{
# first read prefs folder prefs
my($prefs_path) = GetPrefsFolder();
$prefs_path .= ":$prefs_file_name";
ReadPrefsFile($prefs_path, $pull_flags, $build_flags, $options_flags, $filepath_flags);
ReadPrefsFile($prefs_path, $build_flags, $options_flags, $filepath_flags, 1);
}
}
1;

View File

@ -7,11 +7,9 @@
# Setting containing spaces must be quoted with double quotes.
#-------------------------------------------------------------------------------
pull_flags
all 0
build_flags
all 1
pull 0
dist 0
xpidl 0
idl 0
@ -49,5 +47,5 @@ xptlink 0
filepath_flags
idepath ":CodeWarrior IDE Path.txt"
sessionpath ":Mozilla session path.txt"
buildlogfilepath ":Build Logs:Mozilla build log.txt"
buildlogfilepath ":Build Logs:Mozilla build log.txt" # this is a path
scriptlogfilepath ":Build Logs:Mozilla script log.txt"

View File

@ -48,7 +48,6 @@ my($prefs_file_name) = "Mozilla pull prefs";
#-------------------------------------------------------------
# hashes to hold build options
#-------------------------------------------------------------
my(%pull);
my(%build);
my(%options);
my(%filepaths);