зеркало из https://github.com/mozilla/gecko-dev.git
330374 7 changes for Tinderbox, including a change to the way builds are uploaded. They now go to yyyy-mm-dd-hh directories according to their build id. r=preed
This commit is contained in:
Родитель
bd7b62fd23
Коммит
41c7c1bbbc
|
@ -1,450 +1,38 @@
|
|||
#!/usr/bin/perl
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
#
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
require 5.003;
|
||||
|
||||
# This script has split some functions off into a util
|
||||
# script so they can be re-used by other scripts.
|
||||
require "build-seamonkey-util.pl";
|
||||
|
||||
#
|
||||
# This script gets called after a full mozilla build & test.
|
||||
# Use this to build and test an embedded or commercial branding of Mozilla.
|
||||
#
|
||||
# ./build-seamonkey-utils.pl will call PostMozilla::main() after
|
||||
# a successful build and testing of mozilla. This package can report
|
||||
# status via the $TinderUtils::build_status variable. Yeah this is a hack,
|
||||
# but it works for now. Feel free to improve this mechanism to properly
|
||||
# return values & stuff. -mcafee
|
||||
#
|
||||
# Things to do:
|
||||
# * Get pull by branch working
|
||||
#
|
||||
#
|
||||
use strict;
|
||||
use File::Path; # for rmtree();
|
||||
|
||||
package PostMozilla;
|
||||
# "use strict" complains if we do not define these.
|
||||
# They are not initialized here. The default values are after "__END__".
|
||||
$TreeSpecific::name = $TreeSpecific::build_target = $TreeSpecific::checkout_target = $TreeSpecific::clobber_target = $::Version = undef;
|
||||
|
||||
sub checkout {
|
||||
my ($mozilla_build_dir) = @_;
|
||||
$::Version = '$Revision: 1.7 $ ';
|
||||
|
||||
# chdir to build directory
|
||||
chdir "$mozilla_build_dir";
|
||||
|
||||
# Next, do the checkout:
|
||||
print "Settings::CVS = $Settings::CVS\n";
|
||||
my $status = TinderUtils::run_shell_command("$Settings::CVS checkout mozilla/camino");
|
||||
|
||||
# hack in the camino prefs, if needed
|
||||
|
||||
return $status;
|
||||
{
|
||||
TinderUtils::Setup();
|
||||
tree_specific_overides();
|
||||
TinderUtils::Build();
|
||||
}
|
||||
|
||||
# End of main
|
||||
#======================================================================
|
||||
|
||||
sub ReadHeapDumpToHash($$)
|
||||
{
|
||||
my($dumpfile, $hashref) = @_;
|
||||
|
||||
local(*DUMP_FILE);
|
||||
open(DUMP_FILE, "< $dumpfile") || die "Can't open heap output file $dumpfile\n";
|
||||
|
||||
my $section = 0;
|
||||
my $zone = "";
|
||||
my $default_zone_bytes = 0;
|
||||
|
||||
while (<DUMP_FILE>)
|
||||
{
|
||||
my($line) = $_;
|
||||
chomp($line);
|
||||
sub tree_specific_overides {
|
||||
|
||||
$TreeSpecific::name = 'mozilla';
|
||||
$TreeSpecific::build_target = 'build_all_depend';
|
||||
$TreeSpecific::checkout_target = 'checkout';
|
||||
$TreeSpecific::clobber_target = 'distclean';
|
||||
$TreeSpecific::extrafiles = 'mozilla/camino/config';
|
||||
|
||||
}
|
||||
|
||||
if ($line =~ /^\#/ || $line =~ /^\s*$/ || $line =~ /------------------------/) { # ignore comments and empty lines
|
||||
next;
|
||||
}
|
||||
|
||||
# use the 'All zones' lines as section markers
|
||||
if ($line =~ /^All zones:/) {
|
||||
$section ++;
|
||||
next;
|
||||
}
|
||||
|
||||
if ($section == 2) # we're in the detailed section
|
||||
{
|
||||
if ($line =~ /^Zone ([^_]+).+\((\d+).+\)/)
|
||||
{
|
||||
$zone = $1;
|
||||
if ($zone eq "DefaultMallocZone") {
|
||||
$default_zone_bytes = $2;
|
||||
}
|
||||
TinderUtils::print_log(" $line\n");
|
||||
next;
|
||||
}
|
||||
|
||||
if ($zone eq "DefaultMallocZone")
|
||||
{
|
||||
if ($line =~ /(\w+)\s*=\s*(\d+)\s*\((\d+).+\)/)
|
||||
{
|
||||
my(%entry_hash) = ("count", $2,
|
||||
"bytes", $3);
|
||||
$hashref->{$1} = \%entry_hash;
|
||||
}
|
||||
elsif ($line =~ /^<not.+>\s*=\s*(\d+)\s*\((\d+).+\)/)
|
||||
{
|
||||
my(%entry_hash) = ("count", $1,
|
||||
"bytes", $2);
|
||||
$hashref->{"malloc_block"} = \%entry_hash;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
close(DUMP_FILE);
|
||||
|
||||
return $default_zone_bytes;
|
||||
}
|
||||
|
||||
sub DumpHash($)
|
||||
{
|
||||
my($hashref) = @_;
|
||||
|
||||
print "Dumping values\n";
|
||||
|
||||
my($key);
|
||||
foreach $key (keys %{$hashref})
|
||||
{
|
||||
my($value) = $hashref->{$key};
|
||||
print "Class $key count $value->{'count'} bytes $value->{'bytes'}\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub ClassEntriesEqual($$)
|
||||
{
|
||||
my($hashone, $hashtwo) = @_;
|
||||
|
||||
return ($hashone->{"count"} == $hashtwo->{"count"}) and ($hashone->{"bytes"} == $hashtwo->{"bytes"})
|
||||
}
|
||||
|
||||
|
||||
sub DumpHashDiffs($$)
|
||||
{
|
||||
my($beforehash, $afterhash) = @_;
|
||||
|
||||
my($name_width) = 50;
|
||||
my($print_format) = "%10s %-${name_width}s %8d %8d\n";
|
||||
|
||||
TinderUtils::print_log(sprintf "%10s %-${name_width}s %8s %8s\n", "", "Class", "Count", "Bytes");
|
||||
TinderUtils::print_log("--------------------------------------------------------------------------------\n");
|
||||
|
||||
my($key);
|
||||
foreach $key (keys %{$beforehash})
|
||||
{
|
||||
my($beforevalue) = $beforehash->{$key};
|
||||
|
||||
if (exists $afterhash->{$key})
|
||||
{
|
||||
my($aftervalue) = $afterhash->{$key};
|
||||
if (!ClassEntriesEqual($beforevalue, $aftervalue))
|
||||
{
|
||||
my($count_change) = $aftervalue->{"count"} - $beforevalue->{"count"};
|
||||
my($bytes_change) = $aftervalue->{"bytes"} - $beforevalue->{"bytes"};
|
||||
|
||||
if ($bytes_change > 0) {
|
||||
TinderUtils::print_log(sprintf $print_format, "Leaked", $key, $count_change, $bytes_change);
|
||||
} else {
|
||||
TinderUtils::print_log(sprintf $print_format, "Freed", $key, $count_change, $bytes_change);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#$before_only{$key} = $beforevalue;
|
||||
TinderUtils::print_log(sprintf $print_format, "Freed", $key, $beforevalue->{'count'}, $beforevalue->{'bytes'});
|
||||
}
|
||||
}
|
||||
|
||||
# now look for things only in the after cache
|
||||
foreach $key (keys %{$afterhash})
|
||||
{
|
||||
my($value) = $afterhash->{$key};
|
||||
|
||||
if (!exists $beforehash->{$key})
|
||||
{
|
||||
#$after_only{$key} = $value;
|
||||
TinderUtils::print_log(sprintf $print_format, "Leaked", $key, $value->{'count'}, $value->{'bytes'});
|
||||
}
|
||||
}
|
||||
|
||||
TinderUtils::print_log("--------------------------------------------------------------------------------\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
sub ParseHeapOutput($$)
|
||||
{
|
||||
my($beforedump, $afterdump) = @_;
|
||||
|
||||
TinderUtils::print_log("Before window open:\n");
|
||||
my %before_data;
|
||||
my $before_heap = ReadHeapDumpToHash($beforedump, \%before_data);
|
||||
|
||||
TinderUtils::print_log("After window open and close:\n");
|
||||
my %after_data;
|
||||
my $after_heap = ReadHeapDumpToHash($afterdump, \%after_data);
|
||||
|
||||
# DumpHash(\%before_data);
|
||||
# DumpHash(\%after_data);
|
||||
|
||||
TinderUtils::print_log("Open/close window leaks:\n");
|
||||
DumpHashDiffs(\%before_data, \%after_data);
|
||||
|
||||
my $heap_diff = $after_heap - $before_heap;
|
||||
TinderUtils::print_log("TinderboxPrint:<acronym title=\"Per-window leaks\">Lw:".TinderUtils::PrintSize($heap_diff, 3)."B</acronym>\n");
|
||||
}
|
||||
|
||||
|
||||
sub CaminoWindowLeaksTest($$$$$)
|
||||
{
|
||||
my ($test_name, $build_dir, $binary, $args, $timeout_secs) = @_;
|
||||
|
||||
my($status) = 'success';
|
||||
|
||||
my $beforefile = "/tmp/nav_before_heap.dat";
|
||||
my $afterfile = "/tmp/nav_after_heap.dat";
|
||||
|
||||
my $run_test = 1; # useful for testing parsing code
|
||||
if ($run_test)
|
||||
{
|
||||
my $close_window_script =<<END_SCRIPT;
|
||||
tell application "Camino"
|
||||
delay 5
|
||||
close the first window
|
||||
end tell
|
||||
END_SCRIPT
|
||||
|
||||
my $new_window_script =<<END_SCRIPT;
|
||||
tell application "Camino"
|
||||
Get URL "about:blank"
|
||||
delay 20
|
||||
close the first window
|
||||
end tell
|
||||
END_SCRIPT
|
||||
|
||||
TinderUtils::print_log("Window leak test\n");
|
||||
|
||||
my $binary_basename = File::Basename::basename($binary);
|
||||
my $binary_dir = File::Basename::dirname($binary);
|
||||
my $binary_log = "$build_dir/$test_name.log";
|
||||
my $cmd = $binary_basename;
|
||||
|
||||
my $pid = TinderUtils::fork_and_log($build_dir, $binary_dir, $cmd, $binary_log);
|
||||
|
||||
# close the existing window
|
||||
system("echo '$close_window_script' | osascript");
|
||||
# open and close few window to get to a stable point
|
||||
system("echo '$new_window_script' | osascript");
|
||||
|
||||
# dump before data
|
||||
system("heap $pid > $beforefile");
|
||||
|
||||
# run the test
|
||||
system("echo '$new_window_script' | osascript");
|
||||
|
||||
# dump after data
|
||||
system("heap $pid > $afterfile");
|
||||
|
||||
my $result = TinderUtils::wait_for_pid($pid, $timeout_secs);
|
||||
}
|
||||
|
||||
ParseHeapOutput($beforefile, $afterfile);
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
||||
sub PreBuild {
|
||||
}
|
||||
|
||||
sub main {
|
||||
my ($mozilla_build_dir) = @_;
|
||||
|
||||
TinderUtils::print_log("Starting camino build.\n");
|
||||
|
||||
# Tell camino to unbuffer stdio, otherwise when we kill the child process
|
||||
# stdout & stderr won't get flushed.
|
||||
$ENV{MOZ_UNBUFFERED_STDIO} = 1;
|
||||
|
||||
# Pending a config file, stuff things here.
|
||||
my $post_status = 'success'; # Success until we report a failure.
|
||||
my $status = 0; # 0 = success
|
||||
|
||||
# Control tests from here, sorry no config file yet.
|
||||
my $camino_alive_test = 1;
|
||||
my $camino_test8_test = 0;
|
||||
my $camino_layout_performance_test = 1;
|
||||
my $camino_startup_test = 1;
|
||||
my $camino_window_leaks_test = 0;
|
||||
|
||||
my $safari_layout_performance_test = 0;
|
||||
|
||||
my $camino_clean_profile = 1;
|
||||
|
||||
# Build flags
|
||||
my $camino_build_static = 0;
|
||||
my $camino_build_opt = 1;
|
||||
|
||||
my $camino_dir = "$mozilla_build_dir/mozilla/camino";
|
||||
my $embedding_dir = "$mozilla_build_dir/mozilla/embedding/config";
|
||||
my $camino_binary = "Camino";
|
||||
|
||||
unless ($Settings::TestOnly) {
|
||||
TinderUtils::print_log("Testing build status...\n");
|
||||
if ($status != 0) {
|
||||
TinderUtils::print_log("busted, pbxbuild status non-zero\n");
|
||||
$post_status = 'busted';
|
||||
} elsif (not TinderUtils::BinaryExists("$camino_dir/build/Camino.app/Contents/MacOS/$camino_binary")) {
|
||||
TinderUtils::print_log("Error: binary not found: $camino_dir/build/Camino.app/Contents/MacOS/$camino_binary\n");
|
||||
$post_status = 'busted';
|
||||
} else {
|
||||
$post_status = 'success';
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Tests...
|
||||
#
|
||||
|
||||
# Clean profile out, if set.
|
||||
# Assume Camino always uses ~/Library/Application Support/Camino for now.
|
||||
if ($camino_clean_profile) {
|
||||
# Warning: workaround camino bug, delete whole Camino dir.
|
||||
my $chim_profile_dir = "$ENV{HOME}/Library/Application Support/Camino";
|
||||
|
||||
TinderUtils::print_log("Deleting $chim_profile_dir...\n");
|
||||
print "Deleting $chim_profile_dir...\n";
|
||||
File::Path::rmtree([$chim_profile_dir], 0, 0);
|
||||
|
||||
if (-e "$chim_profile_dir") {
|
||||
TinderUtils::print_log("Error: rmtree('$chim_profile_dir') failed\n");
|
||||
}
|
||||
|
||||
# Re-create profile. We have no -CreateProfile, so we instead
|
||||
# run the AliveTest first.
|
||||
}
|
||||
|
||||
my $binary_dir = "$camino_dir/build/Camino.app/Contents/MacOS";
|
||||
my $full_binary_name = "$binary_dir/Camino";
|
||||
|
||||
# AliveTest for camino, about:blank
|
||||
if ($camino_alive_test and $post_status eq 'success') {
|
||||
|
||||
$post_status = TinderUtils::AliveTest("CaminoAliveTest",
|
||||
$binary_dir,
|
||||
[$full_binary_name, "-url", "about:blank"],
|
||||
45);
|
||||
}
|
||||
|
||||
# Find the prefs file
|
||||
# e.g. /Users/cltbld/Library/Application Support/Camino/Profiles
|
||||
# so File::Path::find will find the prefs.js file.
|
||||
#
|
||||
my $pref_file = "prefs.js";
|
||||
my $start_dir = "/Users/cltbld/Library/Application Support/Camino";
|
||||
my $found = undef;
|
||||
my $sub = sub {$pref_file = $File::Find::name, $found++ if $pref_file eq $_};
|
||||
|
||||
File::Find::find($sub, $start_dir); # Find prefs.js, write this to $pref_file.
|
||||
|
||||
# Set up performance prefs.
|
||||
if ($pref_file and ($camino_layout_performance_test or 1)) {
|
||||
|
||||
# Some tests need browser.dom.window.dump.enabled set to true, so
|
||||
# that JS dump() will work in optimized builds.
|
||||
if (system("\\grep -s browser.dom.window.dump.enabled $pref_file > /dev/null")) {
|
||||
TinderUtils::print_log("Setting browser.dom.window.dump.enabled\n");
|
||||
open PREFS, ">>$pref_file" or die "can't open $pref_file ($?)\n";
|
||||
print PREFS "user_pref(\"browser.dom.window.dump.enabled\", true);\n";
|
||||
close PREFS;
|
||||
} else {
|
||||
TinderUtils::print_log("Already set browser.dom.window.dump.enabled\n");
|
||||
}
|
||||
|
||||
# Set security prefs to allow us to close our own window,
|
||||
# pageloader test (and possibly other tests) needs this on.
|
||||
if (system("\\grep -s dom.allow_scripts_to_close_windows $pref_file > /dev/null")) {
|
||||
TinderUtils::print_log("Setting dom.allow_scripts_to_close_windows to true.\n");
|
||||
open PREFS, ">>$pref_file" or die "can't open $pref_file ($?)\n";
|
||||
print PREFS "user_pref(\"dom.allow_scripts_to_close_windows\", true);\n";
|
||||
close PREFS;
|
||||
} else {
|
||||
TinderUtils::print_log("Already set dom.allow_scripts_to_close_windows\n");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
# LayoutTest8
|
||||
# resource:///res/samples/test8.html
|
||||
if ($camino_test8_test and $post_status eq 'success') {
|
||||
|
||||
if(0) {
|
||||
open STDOUT, ">/tmp/foo";
|
||||
open STDERR, ">&/tmp/foo";
|
||||
select STDOUT; $| = 1; # make STDOUT unbuffered
|
||||
select STDERR; $| = 1; # make STDERR unbuffered
|
||||
print STDERR "hello, world\n";
|
||||
chdir("$camino_dir/build/Camino.app/Contents/MacOS");
|
||||
exec "./Camino -url \"http://lxr.mozilla.org/seamonkey/source/webshell/tests/viewer/samples/test8.html\"";
|
||||
#exec "foo";
|
||||
} else {
|
||||
$post_status = TinderUtils::AliveTest("CaminoLayoutTest8Test",
|
||||
$binary_dir,
|
||||
[$full_binary_name, "-url", "http://lxr.mozilla.org/seamonkey/source/webshell/tests/viewer/samples/test8.html"],
|
||||
20);
|
||||
}
|
||||
}
|
||||
|
||||
# Pageload test.
|
||||
if ($camino_layout_performance_test and $post_status eq 'success') {
|
||||
|
||||
$post_status =
|
||||
TinderUtils::LayoutPerformanceTest("CaminoLayoutPerformanceTest",
|
||||
"$camino_dir/build/Camino.app/Contents/MacOS",
|
||||
[$full_binary_name, "-url"]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
# Pageload test -- Safari.
|
||||
if ($safari_layout_performance_test) {
|
||||
|
||||
TinderUtils::run_system_cmd("/Applications/Utilities/Safari.app/Contents/MacOS/Safari-wrap.pl http://$Settings::pageload_server/page-loader/loader.pl?delay=1000%26nocache=0%26maxcyc=4%26timeout=$Settings::LayoutPerformanceTestPageTimeout%26auto=1", 30);
|
||||
|
||||
# This is a hack.
|
||||
TinderUtils::run_system_cmd("sync; sleep 400", 405);
|
||||
|
||||
TinderUtils::run_system_cmd("/Applications/Utilities/Safari.app/Contents/MacOS/Safari-wrap.pl quit", 30);
|
||||
|
||||
TinderUtils::print_log "TinderboxPrint:" .
|
||||
"<a title=\"Avg of the median per url pageload time\" href=\"http://$Settings::results_server/graph/query.cgi?testname=pageload&tbox=" . ::hostname() . "-aux&autoscale=1&days=7&avg=1\">~Tp" . "</a>\n";
|
||||
|
||||
}
|
||||
|
||||
# Startup test.
|
||||
if ($camino_startup_test and $post_status eq 'success') {
|
||||
$post_status =
|
||||
TinderUtils::StartupPerformanceTest("CaminoStartupPerformanceTest",
|
||||
$full_binary_name,
|
||||
"$camino_dir/build/Camino.app/Contents/MacOS",
|
||||
["-url"],
|
||||
"file:$camino_dir/../../../startup-test.html");
|
||||
}
|
||||
|
||||
if ($camino_window_leaks_test and $post_status eq 'success') {
|
||||
$post_status = CaminoWindowLeaksTest("CaminoWindowLeakTest",
|
||||
"$camino_dir/build/Camino.app/Contents/MacOS/",
|
||||
$full_binary_name,
|
||||
"-url \"http://www.mozilla.org\"",
|
||||
20);
|
||||
|
||||
}
|
||||
|
||||
# Pass our status back to calling script.
|
||||
return $post_status;
|
||||
}
|
||||
|
||||
# Need to end with a true value, (since we're using "require").
|
||||
1;
|
||||
|
|
|
@ -24,7 +24,7 @@ use Config; # for $Config{sig_name} and $Config{sig_num}
|
|||
use File::Find ();
|
||||
use File::Copy;
|
||||
|
||||
$::UtilsVersion = '$Revision: 1.312 $ ';
|
||||
$::UtilsVersion = '$Revision: 1.313 $ ';
|
||||
|
||||
package TinderUtils;
|
||||
|
||||
|
@ -1126,6 +1126,13 @@ sub rebootSystem {
|
|||
# Create a profile named $Settings::MozProfileName in the normal $build_dir place.
|
||||
sub create_profile {
|
||||
my ($build_dir, $binary_dir, $binary) = @_;
|
||||
if ($Settings::ProductName eq 'Camino') {
|
||||
my $profile_dir = get_profile_dir($build_dir);
|
||||
mkdir($profile_dir);
|
||||
open(PREFS, '>>'.$profile_dir.'/prefs.js');
|
||||
close(PREFS);
|
||||
return { exit_value=>0 };
|
||||
}
|
||||
my $profile_log = "$build_dir/create-profile.log";
|
||||
my $result = run_cmd($build_dir, $binary_dir,
|
||||
[$binary, "-CreateProfile", $Settings::MozProfileName],
|
||||
|
@ -1141,6 +1148,7 @@ sub get_profile_dir {
|
|||
my $profile_product_name = $Settings::ProductName;
|
||||
|
||||
$profile_product_name = "Mozilla" if ($profile_product_name eq "SeaMonkey");
|
||||
$profile_product_name = "Firefox" if ($profile_product_name eq "DeerPark");
|
||||
|
||||
my $profile_dir;
|
||||
|
||||
|
@ -1182,6 +1190,8 @@ sub get_profile_dir {
|
|||
} elsif ($profile_product_name eq 'Firefox') {
|
||||
$profile_dir = "$ENV{HOME}/Library/Application Support/$profile_product_name/Profiles";
|
||||
($profile_dir) = <"$profile_dir/*$Settings::MozProfileName*">;
|
||||
} elsif ($profile_product_name eq 'Camino') {
|
||||
$profile_dir = "$ENV{HOME}/Library/Application Support/Camino";
|
||||
} else { # Mozilla's Profiles/profilename/salt
|
||||
$profile_dir = "$ENV{HOME}/Library/$profile_product_name/Profiles/$Settings::MozProfileName/";
|
||||
}
|
||||
|
@ -1716,7 +1726,7 @@ sub run_all_tests {
|
|||
unlink("$binary_dir/components/compreg.dat") or warn "$binary_dir/components/compreg.dat not removed\n";
|
||||
if($Settings::RegxpcomTest) {
|
||||
my $args;
|
||||
if ($Settings::ProductName =~ /^(Firefox|Thunderbird)$/) {
|
||||
if ($Settings::ProductName =~ /^(Firefox|Thunderbird|DeerPark)$/) {
|
||||
$args = [$binary, "-register"];
|
||||
} else {
|
||||
$args = ["$binary_dir/regxpcom"];
|
||||
|
@ -1856,6 +1866,9 @@ sub run_all_tests {
|
|||
# Suppress default browser dialog
|
||||
set_pref($pref_file, 'browser.shell.checkDefaultBrowser', 'false');
|
||||
}
|
||||
elsif ($Settings::BinaryName eq 'Camino') {
|
||||
set_pref($pref_file, 'camino.check_default_browser', 'false');
|
||||
}
|
||||
|
||||
# Suppress security warnings for QA test.
|
||||
if ($Settings::QATest) {
|
||||
|
@ -1879,6 +1892,13 @@ sub run_all_tests {
|
|||
}
|
||||
}
|
||||
|
||||
if ($Settings::BinaryName eq 'Camino') {
|
||||
# stdout will be block-buffered and will not be flushed when the test
|
||||
# timeout expires and the process is killed, this would make tests
|
||||
# appear to fail.
|
||||
$ENV{'MOZ_UNBUFFERED_STDIO'} = 1;
|
||||
}
|
||||
|
||||
# Mozilla alive test
|
||||
#
|
||||
# Note: Bloat & other tests depend this on working.
|
||||
|
@ -2015,8 +2035,19 @@ sub run_all_tests {
|
|||
# Layout performance test.
|
||||
if ($Settings::LayoutPerformanceTest and $test_result eq 'success') {
|
||||
my $app_args = [$binary];
|
||||
if ($Settings::BinaryName eq 'Camino') {
|
||||
push(@$app_args, '-url');
|
||||
}
|
||||
|
||||
# When I found this, it avoided setting the profile for Firefox.
|
||||
# That didn't work on a tinderbox that had multiple profiles.
|
||||
# Now, it will set the profile if it's not 'default' on the assumption
|
||||
# that existing tinderboxes were all using 'default' anyway. Why
|
||||
# so careful? I'm afraid of things like bug 112767, and I assume this
|
||||
# had been done for a reason. -mm
|
||||
unless ($Settings::BinaryName eq "TestGtkEmbed" ||
|
||||
$Settings::BinaryName =~ /^firefox/) {
|
||||
($Settings::BinaryName =~ /^firefox/ && $Settings::MozProfileName eq 'default') ||
|
||||
$Settings::BinaryName eq 'Camino') {
|
||||
push(@$app_args, "-P", $Settings::MozProfileName);
|
||||
}
|
||||
|
||||
|
@ -2029,8 +2060,10 @@ sub run_all_tests {
|
|||
if ($Settings::DHTMLPerformanceTest and $test_result eq 'success') {
|
||||
my @app_args;
|
||||
if($Settings::BinaryName eq "TestGtkEmbed" ||
|
||||
$Settings::BinaryName =~ /^firefox/) {
|
||||
($Settings::BinaryName =~ /^firefox/ && $Settings::MozProfileName eq 'default')) {
|
||||
@app_args = [$binary];
|
||||
} elsif($Settings::BinaryName eq 'Camino') {
|
||||
@app_args = [$binary, '-url'];
|
||||
} else {
|
||||
@app_args = [$binary, "-P", $Settings::MozProfileName];
|
||||
}
|
||||
|
@ -2100,6 +2133,8 @@ sub run_all_tests {
|
|||
my $app_args;
|
||||
if($Settings::BinaryName eq "TestGtkEmbed") {
|
||||
$app_args = [];
|
||||
} elsif($Settings::BinaryName eq 'Camino') {
|
||||
$app_args = ['-url'];
|
||||
} else {
|
||||
$app_args = ["-P", $Settings::MozProfileName];
|
||||
}
|
||||
|
@ -2381,7 +2416,7 @@ sub DHTMLPerformanceTest {
|
|||
$dhtml_time = AliveTestReturnToken($test_name,
|
||||
$build_dir,
|
||||
[@$args, $url],
|
||||
$Settings::LayoutPerformanceTestTimeout,
|
||||
$Settings::DHTMLPerformanceTestTimeout,
|
||||
"_x_x_mozilla_dhtml",
|
||||
",");
|
||||
|
||||
|
|
|
@ -197,9 +197,20 @@ sub makefullsoft {
|
|||
TinderUtils::run_shell_command "cd $builddir/fullsoft && $builddir/build/autoconf/make-makefile -d ..";
|
||||
}
|
||||
TinderUtils::run_shell_command "make -C $builddir/fullsoft";
|
||||
TinderUtils::run_shell_command "make -C $builddir/fullsoft fullcircle-push";
|
||||
if ($Settings::BinaryName ne 'Camino') {
|
||||
TinderUtils::run_shell_command "make -C $builddir/fullsoft fullcircle-push";
|
||||
}
|
||||
else {
|
||||
# Something completely different
|
||||
TinderUtils::run_shell_command "make -C $builddir/fullsoft fullcircle-push UPLOAD_FILES='`find -X $builddir/dist/Camino.app -type f -perm -111 -exec file {} \\; | grep \": Mach-O\" | sed \"s/: Mach-O.*//\" | xargs`'";
|
||||
}
|
||||
if (is_mac()) {
|
||||
TinderUtils::run_shell_command "make -C $builddir/$Settings::mac_bundle_path";
|
||||
if ($Settings::BinaryName eq 'Camino') {
|
||||
TinderUtils::run_shell_command "rsync -a --copy-unsafe-links $builddir/dist/bin/components/*qfa* $builddir/dist/bin/components/talkback $builddir/dist/Camino.app/Contents/MacOS/components";
|
||||
}
|
||||
else {
|
||||
TinderUtils::run_shell_command "make -C $builddir/$Settings::mac_bundle_path";
|
||||
}
|
||||
|
||||
if ($Settings::MacUniversalBinary) {
|
||||
# Regenerate universal binary, now including Talkback
|
||||
|
@ -973,7 +984,11 @@ sub pushit {
|
|||
$Settings::ReleaseToLatest = 1 if !defined($Settings::ReleaseToLatest);
|
||||
|
||||
if ( $Settings::ReleaseToDated ) {
|
||||
push(@cmds,"ssh $ssh_opts -l $Settings::ssh_user $ssh_server mkdir -p $remote_path/$short_ud");
|
||||
my $makedirs = "$remote_path/$short_ud";
|
||||
if ($cachebuild && $Settings::ReleaseToLatest) {
|
||||
$makedirs .= " $remote_path/latest-$Settings::milestone";
|
||||
}
|
||||
push(@cmds,"ssh $ssh_opts -l $Settings::ssh_user $ssh_server mkdir -p $makedirs");
|
||||
push(@cmds,"rsync -av -e \"ssh $ssh_opts\" $upload_directory/ $Settings::ssh_user\@$ssh_server:$remote_path/$short_ud/");
|
||||
push(@cmds,"ssh $ssh_opts -l $Settings::ssh_user $ssh_server chmod -R 775 $remote_path/$short_ud");
|
||||
if ($Settings::ReleaseGroup ne '') {
|
||||
|
@ -984,7 +999,7 @@ sub pushit {
|
|||
push(@cmds,"ssh $ssh_opts -l $Settings::ssh_user $ssh_server rsync -avz $remote_path/$short_ud/ $remote_path/latest-$Settings::milestone/");
|
||||
}
|
||||
} elsif ( $Settings::ReleaseToLatest ) {
|
||||
push(@cmds,"ssh $ssh_opts -l $Settings::ssh_user $ssh_server mkdir -p $remote_path");
|
||||
push(@cmds,"ssh $ssh_opts -l $Settings::ssh_user $ssh_server mkdir -p $remote_path/latest-$Settings::milestone");
|
||||
push(@cmds,"scp $scp_opts -r $upload_directory/* $Settings::ssh_user\@$ssh_server:$remote_path/latest-$Settings::milestone/");
|
||||
push(@cmds,"ssh $ssh_opts -l $Settings::ssh_user $ssh_server chmod -R 775 $remote_path/latest-$Settings::milestone/");
|
||||
if ($Settings::ReleaseGroup ne '') {
|
||||
|
@ -1085,7 +1100,11 @@ sub PreBuild {
|
|||
# build hour (which may not be today!)
|
||||
# (3) subsumes (2), so there's no need to check for (2) explicitly.
|
||||
|
||||
if ( -e "last-built" ) {
|
||||
if (!$Settings::OfficialBuildMachinery) {
|
||||
TinderUtils::print_log "Configured to release hourly builds only\n";
|
||||
$cachebuild = 0;
|
||||
}
|
||||
elsif ( -e "last-built" ) {
|
||||
my $last = (stat "last-built")[9];
|
||||
TinderUtils::print_log "Most recent nightly build: " .
|
||||
localtime($last) . "\n";
|
||||
|
@ -1202,13 +1221,17 @@ sub main {
|
|||
my $ftp_path = $Settings::ftp_path;
|
||||
my $url_path = $Settings::url_path;
|
||||
|
||||
my ($c_hour,$c_day,$c_month,$c_year,$c_yday) = (localtime(time))[2,3,4,5,7];
|
||||
$c_year = $c_year + 1900; # ftso perl
|
||||
$c_month = $c_month + 1; # ftso perl
|
||||
$c_hour = pad_digit($c_hour);
|
||||
$c_day = pad_digit($c_day);
|
||||
$c_month = pad_digit($c_month);
|
||||
my $datestamp = "$c_year-$c_month-$c_day-$c_hour-$Settings::milestone";
|
||||
my $buildid = get_buildid(objdir=>$objdir);
|
||||
|
||||
my $datestamp;
|
||||
if ($buildid ne '0000000000' &&
|
||||
$buildid =~ /^(\d{4})(\d{2})(\d{2})(\d{2})$/) {
|
||||
$datestamp="$1-$2-$3-$4-$Settings::milestone";
|
||||
}
|
||||
else {
|
||||
cleanup();
|
||||
return returnStatus('Could not find build id', ('busted'));
|
||||
}
|
||||
|
||||
if (is_windows()) {
|
||||
# hack for cygwin installs with "unix" filetypes
|
||||
|
@ -1220,7 +1243,6 @@ sub main {
|
|||
|
||||
my($package_dir, $store_name, $local_build_dir);
|
||||
|
||||
my $buildid = get_buildid(objdir=>$objdir);
|
||||
my $pretty_build_name = shorthost() . "-" . $Settings::milestone;
|
||||
|
||||
if ($cachebuild) {
|
||||
|
|
|
@ -194,10 +194,12 @@ $LocaleProduct = "browser";
|
|||
$shiptalkback = 1;
|
||||
$ReleaseToLatest = 1; # Push the release to latest-<milestone>?
|
||||
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
|
||||
$OfficialBuildMachinery = 1; # Allow official clobber nightlies. When false, $cachebuild in post-mozilla-rel.pl can never be true.
|
||||
$ReleaseGroup = ''; # group to set uploaded files to (if non-empty)
|
||||
$build_hour = "8";
|
||||
$package_creation_path = "/xpinstall/packager";
|
||||
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
|
||||
# path to make in to recreate mac bundle, needed for mac + talkback:
|
||||
# $mac_bundle_path = "/browser/app";
|
||||
$ssh_version = "2";
|
||||
$ssh_user = "cltbld";
|
||||
$ssh_server = "stage.mozilla.org";
|
||||
|
@ -206,7 +208,7 @@ $url_path = "http://ftp.mozilla.org/pub/mozilla.org/mozilla/nightly/experim
|
|||
$tbox_ftp_path = $ftp_path;
|
||||
$tbox_url_path = $url_path;
|
||||
$milestone = "trunk";
|
||||
$notify_list = "cmp\@mozilla.org";
|
||||
$notify_list = 'build-announce@mozilla.org';
|
||||
$stub_installer = 1;
|
||||
$sea_installer = 1;
|
||||
$archive = 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче