Compare commits
3 Commits
test
...
LEAF_20031
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5de45ab586 | ||
|
|
3273ea9790 | ||
|
|
ba977c5fc5 |
@@ -1,2 +0,0 @@
|
||||
Clobbering to pick up changes from bug 409803.
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
#
|
||||
## hostname: fx-linux-tbox
|
||||
## uname: Linux fx-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 i686 i386 GNU/Linux
|
||||
#
|
||||
|
||||
export CFLAGS="-gstabs+"
|
||||
export CXXFLAGS="-gstabs+"
|
||||
|
||||
mk_add_options MOZ_CO_PROJECT=browser
|
||||
mk_add_options PROFILE_GEN_SCRIPT=@TOPSRCDIR@/build/profile_pageloader.pl
|
||||
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging mozilla/tools/codesighs"
|
||||
ac_add_options --enable-application=browser
|
||||
|
||||
ac_add_options --enable-update-channel=nightly
|
||||
ac_add_options --enable-update-packaging
|
||||
|
||||
# Don't add explicit optimize flags here, set them in configure.in, see bug 407794.
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --disable-tests
|
||||
#not yet
|
||||
#ac_add_options --enable-glitz
|
||||
|
||||
ac_add_options --enable-codesighs
|
||||
|
||||
CC=/tools/gcc/bin/gcc
|
||||
CXX=/tools/gcc/bin/g++
|
||||
@@ -1,269 +0,0 @@
|
||||
#
|
||||
## hostname: fx-linux-tbox
|
||||
## uname: Linux fx-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 i686 i386 GNU/Linux
|
||||
#
|
||||
|
||||
#- tinder-config.pl - Tinderbox configuration file.
|
||||
#- Uncomment the variables you need to set.
|
||||
#- The default values are the same as the commented variables.
|
||||
|
||||
$ENV{CVS_RSH} = "ssh";
|
||||
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
|
||||
|
||||
# To ensure Talkback client builds properly on some Linux boxen where LANG
|
||||
# is set to "en_US.UTF-8" by default, override that setting here by setting
|
||||
# it to "en_US.iso885915" (the setting on ocean). Proper fix is to update
|
||||
# where xrestool is called in the build system so that 'LANG=C' in its
|
||||
# environment, according to bryner.
|
||||
$ENV{LANG} = "en_US.iso885915";
|
||||
|
||||
# $ENV{MOZ_PACKAGE_MSI}
|
||||
#-----------------------------------------------------------------------------
|
||||
# Default: 0
|
||||
# Values: 0 | 1
|
||||
# Purpose: Controls whether a MSI package is made.
|
||||
# Requires: Windows and a local MakeMSI installation.
|
||||
#$ENV{MOZ_PACKAGE_MSI} = 0;
|
||||
|
||||
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
|
||||
#-----------------------------------------------------------------------------
|
||||
# Default: scp
|
||||
# Values: scp | rsync
|
||||
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
|
||||
# Requires: The selected type requires the command be available both locally
|
||||
# and on the Talkback server.
|
||||
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
|
||||
|
||||
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
|
||||
$BuildAdministrator = 'build@mozilla.org';
|
||||
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
|
||||
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
|
||||
|
||||
#- You'll need to change these to suit your machine's needs
|
||||
$DisplayServer = ':0.0';
|
||||
|
||||
#- Default values of command-line opts
|
||||
#-
|
||||
#$BuildDepend = 1; # Depend or Clobber
|
||||
#$BuildDebug = 0; # Debug or Opt (Darwin)
|
||||
#$ReportStatus = 1; # Send results to server, or not
|
||||
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
|
||||
#$UseTimeStamp = 1; # Use the CVS 'pull-by-timestamp' option, or not
|
||||
#$BuildOnce = 0; # Build once, don't send results to server
|
||||
#$TestOnly = 0; # Only run tests, don't pull/build
|
||||
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
|
||||
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
|
||||
#$BuildLocales = 0; # Do l10n packaging?
|
||||
|
||||
# Tests
|
||||
$CleanProfile = 1;
|
||||
#$ResetHomeDirForTests = 1;
|
||||
$ProductName = "Firefox";
|
||||
$VendorName = 'Mozilla';
|
||||
|
||||
# CONFIG: $RunMozillaTests = %runMozillaTests%;
|
||||
$RunMozillaTests = 1;
|
||||
$RegxpcomTest = 1;
|
||||
$AliveTest = 1;
|
||||
#$JavaTest = 0;
|
||||
#$ViewerTest = 0;
|
||||
#$BloatTest = 0; # warren memory bloat test
|
||||
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
|
||||
#$DomToTextConversionTest = 0;
|
||||
#$XpcomGlueTest = 0;
|
||||
$CodesizeTest = 1; # Z, require mozilla/tools/codesighs
|
||||
$EmbedCodesizeTest = 1; # mZ, require mozilla/tools/codesigns
|
||||
#$MailBloatTest = 0;
|
||||
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
|
||||
$LayoutPerformanceTest = 0; # Tp
|
||||
$DHTMLPerformanceTest = 0; # Tdhtml
|
||||
#$QATest = 0;
|
||||
#$XULWindowOpenTest = 0; # Txul
|
||||
$StartupPerformanceTest = 0; # Ts
|
||||
|
||||
$TestsPhoneHome = 0; # Should test report back to server?
|
||||
$GraphNameOverride = 'fx-linux-tbox';
|
||||
|
||||
# $results_server
|
||||
#----------------------------------------------------------------------------
|
||||
# Server on which test results will be accessible. This was originally tegu,
|
||||
# then became axolotl. Once we moved services from axolotl, it was time
|
||||
# to give this service its own hostname to make future transitions easier.
|
||||
# - cmp@mozilla.org
|
||||
#$results_server = "build-graphs.mozilla.org";
|
||||
|
||||
#$pageload_server = "spider"; # localhost
|
||||
$pageload_server = "pageload.build.mozilla.org";
|
||||
|
||||
|
||||
#
|
||||
# Timeouts, values are in seconds.
|
||||
#
|
||||
#$CVSCheckoutTimeout = 3600;
|
||||
#$CreateProfileTimeout = 45;
|
||||
#$RegxpcomTestTimeout = 120;
|
||||
|
||||
#$AliveTestTimeout = 45;
|
||||
#$ViewerTestTimeout = 45;
|
||||
#$EmbedTestTimeout = 45;
|
||||
#$BloatTestTimeout = 120; # seconds
|
||||
#$MailBloatTestTimeout = 120; # seconds
|
||||
#$JavaTestTimeout = 45;
|
||||
#$DomTestTimeout = 45; # seconds
|
||||
#$XpcomGlueTestTimeout = 15;
|
||||
#$CodesizeTestTimeout = 900; # seconds
|
||||
#$CodesizeTestType = "auto"; # {"auto"|"base"}
|
||||
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
|
||||
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
|
||||
#$QATestTimeout = 1200; # entire test, seconds
|
||||
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
|
||||
#$StartupPerformanceTestTimeout = 15; # seconds
|
||||
#$XULWindowOpenTestTimeout = 150; # seconds
|
||||
|
||||
|
||||
#$MozConfigFileName = 'mozconfig';
|
||||
|
||||
#$UseMozillaProfile = 1;
|
||||
#$MozProfileName = 'default';
|
||||
|
||||
#- Set these to what makes sense for your system
|
||||
#$Make = 'gmake'; # Must be GNU make
|
||||
#$MakeOverrides = '';
|
||||
#$mail = '/bin/mail';
|
||||
#$CVS = 'cvs -q';
|
||||
#$CVSCO = 'checkout -P';
|
||||
|
||||
# win32 usually doesn't have /bin/mail
|
||||
#$blat = 'c:/nstools/bin/blat';
|
||||
#$use_blat = 0;
|
||||
|
||||
# Set moz_cvsroot to something like:
|
||||
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
|
||||
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
|
||||
#
|
||||
# Note that win32 may not need \@, depends on ' or ".
|
||||
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
|
||||
|
||||
#$moz_cvsroot = $ENV{CVSROOT};
|
||||
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
|
||||
$moz_cvsroot = ':ext:cltbld@cvs.mozilla.org:/cvsroot';
|
||||
|
||||
#- Set these proper values for your tinderbox server
|
||||
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
|
||||
|
||||
# Allow for non-client builds, e.g. camino.
|
||||
#$moz_client_mk = 'client.mk';
|
||||
|
||||
#- Set if you want to build in a separate object tree
|
||||
$ObjDir = 'obj-fx-trunk';
|
||||
|
||||
# Extra build name, if needed.
|
||||
$BuildNameExtra = 'Nightly';
|
||||
|
||||
# User comment, eg. ip address for dhcp builds.
|
||||
# ex: $UserComment = "ip = 208.12.36.108";
|
||||
#$UserComment = 0;
|
||||
|
||||
#-
|
||||
#- The rest should not need to be changed
|
||||
#-
|
||||
|
||||
#- Minimum wait period from start of build to start of next build in minutes.
|
||||
#$BuildSleep = 10;
|
||||
|
||||
#- Until you get the script working. When it works,
|
||||
#- change to the tree you're actually building
|
||||
# CONFIG: $BuildTree = '%buildTree%';
|
||||
$BuildTree = 'MozillaTest';
|
||||
|
||||
#$BuildName = '';
|
||||
#$BuildTag = '';
|
||||
#$BuildConfigDir = 'mozilla/config';
|
||||
#$Topsrcdir = 'mozilla';
|
||||
|
||||
$BinaryName = 'firefox-bin';
|
||||
|
||||
#
|
||||
# For embedding app, use:
|
||||
#$EmbedBinaryName = 'TestGtkEmbed';
|
||||
#$EmbedDistDir = 'dist/bin'
|
||||
|
||||
|
||||
#$ShellOverride = ''; # Only used if the default shell is too stupid
|
||||
#$ConfigureArgs = '';
|
||||
#$ConfigureEnvArgs = '';
|
||||
#$Compiler = 'gcc';
|
||||
#$NSPRArgs = '';
|
||||
#$ShellOverride = '';
|
||||
|
||||
# Release build options
|
||||
$ReleaseBuild = 1;
|
||||
$shiptalkback = 0;
|
||||
$ReleaseToLatest = 1; # Push the release to latest-<milestone>?
|
||||
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
|
||||
$build_hour = 14;
|
||||
$package_creation_path = "/browser/installer";
|
||||
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
|
||||
$ssh_version = "2";
|
||||
# CONFIG: $ssh_user = "%sshUser%";
|
||||
$ssh_user = "ffxbld";
|
||||
$ssh_key = "'$ENV{HOME}/.ssh/ffxbld_dsa'";
|
||||
# CONFIG: $ssh_server = "%sshServer%";
|
||||
$ssh_server = "stage-old.mozilla.org";
|
||||
$ReleaseGroup = "firefox";
|
||||
$ftp_path = "/home/ftp/pub/firefox/nightly/experimental";
|
||||
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/experimental";
|
||||
$tbox_ftp_path = "/home/ftp/pub/firefox/tinderbox-builds";
|
||||
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds";
|
||||
$milestone = "trunk";
|
||||
$notify_list = 'build-announce@mozilla.org';
|
||||
$stub_installer = 0;
|
||||
$sea_installer = 0;
|
||||
$archive = 1;
|
||||
$push_raw_xpis = 0;
|
||||
# CONFIG: $update_aus_host = '%ausServer%';
|
||||
$update_aus_host = 'aus2-staging.mozilla.org';
|
||||
$update_pushinfo = 0;
|
||||
$update_package = 1;
|
||||
$update_product = "Firefox";
|
||||
$update_version = "trunk";
|
||||
$update_platform = "Linux_x86-gcc3";
|
||||
$update_hash = "sha1";
|
||||
# CONFIG: $update_filehost = '%ftpServer%';
|
||||
$update_filehost = 'ftp.mozilla.org';
|
||||
$update_ver_file = 'browser/config/version.txt';
|
||||
$crashreporter_buildsymbols = 1;
|
||||
$crashreporter_pushsymbols = 1;
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
|
||||
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
|
||||
$ENV{'SYMBOL_SERVER_USER'} = 'ffxbld';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
|
||||
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_ffx';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
|
||||
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/home/cltbld/.ssh/ffxbld_dsa';
|
||||
|
||||
# Reboot the OS at the end of build-and-test cycle. This is primarily
|
||||
# intended for Win9x, which can't last more than a few cycles before
|
||||
# locking up (and testing would be suspect even after a couple of cycles).
|
||||
# Right now, there is only code to force the reboot for Win9x, so even
|
||||
# setting this to 1, will not have an effect on other platforms. Setting
|
||||
# up win9x to automatically logon and begin running tinderbox is left
|
||||
# as an exercise to the reader.
|
||||
#$RebootSystem = 0;
|
||||
|
||||
# LogCompression specifies the type of compression used on the log file.
|
||||
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
|
||||
# for 'gzip' or 'bzip2' are in the user's path before setting this
|
||||
# option.
|
||||
#$LogCompression = '';
|
||||
|
||||
# LogEncoding specifies the encoding format used for the logs. Valid
|
||||
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
|
||||
# this needs to be set to 'base64' or 'uuencode' to ensure that the
|
||||
# binary data is transferred properly.
|
||||
#$LogEncoding = '';
|
||||
|
||||
# Prevent Extension Manager from spawning child processes during tests
|
||||
# - processes that tbox scripts cannot kill.
|
||||
#$ENV{NO_EM_RESTART} = '1';
|
||||
@@ -1 +0,0 @@
|
||||
trigger a nightly to push the fix to bug 421841 to users
|
||||
@@ -1,28 +0,0 @@
|
||||
#
|
||||
## hostname: bm-xserve08.build.mozilla.org
|
||||
## uname: Darwin bm-xserve08.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
|
||||
#
|
||||
|
||||
# symbols for breakpad
|
||||
export CFLAGS="-g -gfull"
|
||||
export CXXFLAGS="-g -gfull"
|
||||
|
||||
. $topsrcdir/build/macosx/universal/mozconfig
|
||||
|
||||
mk_add_options MOZ_MAKE_FLAGS="-j4"
|
||||
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging mozilla/tools/codesighs"
|
||||
mk_add_options MOZ_CO_PROJECT="browser"
|
||||
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../build/universal
|
||||
|
||||
ac_add_options --enable-application=browser
|
||||
ac_add_options --enable-update-channel=nightly
|
||||
# Don't add explicit optimize flags here, set them in configure.in, see bug 407794.
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --disable-tests
|
||||
ac_add_options --enable-update-packaging
|
||||
|
||||
# ac_add_options --enable-official-branding
|
||||
ac_add_app_options ppc --enable-prebinding
|
||||
|
||||
ac_add_options --enable-codesighs
|
||||
@@ -1,269 +0,0 @@
|
||||
#
|
||||
## hostname: bm-xserve08.build.mozilla.org
|
||||
## uname: Darwin bm-xserve08.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
|
||||
#
|
||||
|
||||
#- tinder-config.pl - Tinderbox configuration file.
|
||||
#- Uncomment the variables you need to set.
|
||||
#- The default values are the same as the commented variables.
|
||||
|
||||
$ENV{NO_EM_RESTART} = "1";
|
||||
$ENV{DYLD_NO_FIX_PREBINDING} = "1";
|
||||
$ENV{LD_PREBIND_ALLOW_OVERLAP} = "1";
|
||||
$ENV{CVS_RSH} = "ssh";
|
||||
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
|
||||
|
||||
$MacUniversalBinary = 1;
|
||||
|
||||
# $ENV{MOZ_PACKAGE_MSI}
|
||||
#-----------------------------------------------------------------------------
|
||||
# Default: 0
|
||||
# Values: 0 | 1
|
||||
# Purpose: Controls whether a MSI package is made.
|
||||
# Requires: Windows and a local MakeMSI installation.
|
||||
#$ENV{MOZ_PACKAGE_MSI} = 0;
|
||||
|
||||
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
|
||||
#-----------------------------------------------------------------------------
|
||||
# Default: scp
|
||||
# Values: scp | rsync
|
||||
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
|
||||
# Requires: The selected type requires the command be available both locally
|
||||
# and on the Talkback server.
|
||||
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
|
||||
|
||||
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
|
||||
$BuildAdministrator = 'build@mozilla.org';
|
||||
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
|
||||
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
|
||||
|
||||
#- You'll need to change these to suit your machine's needs
|
||||
#$DisplayServer = ':0.0';
|
||||
|
||||
#- Default values of command-line opts
|
||||
#-
|
||||
#$BuildDepend = 1; # Depend or Clobber
|
||||
#$BuildDebug = 0; # Debug or Opt (Darwin)
|
||||
#$ReportStatus = 1; # Send results to server, or not
|
||||
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
|
||||
#$UseTimeStamp = 1; # Use the CVS 'pull-by-timestamp' option, or not
|
||||
#$BuildOnce = 0; # Build once, don't send results to server
|
||||
#$TestOnly = 0; # Only run tests, don't pull/build
|
||||
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
|
||||
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
|
||||
#$BuildLocales = 0; # Do l10n packaging?
|
||||
|
||||
# Tests
|
||||
$CleanProfile = 1;
|
||||
#$ResetHomeDirForTests = 1;
|
||||
$ProductName = 'Minefield';
|
||||
$VendorName = "";
|
||||
|
||||
# CONFIG: $RunMozillaTests = %runMozillaTests%;
|
||||
$RunMozillaTests = 1;
|
||||
$RegxpcomTest = 1;
|
||||
$AliveTest = 1;
|
||||
#$JavaTest = 0;
|
||||
#$ViewerTest = 0;
|
||||
#$BloatTest = 0; # warren memory bloat test
|
||||
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
|
||||
#$DomToTextConversionTest = 0;
|
||||
#$XpcomGlueTest = 0;
|
||||
$CodesizeTest = 1; # Z, require mozilla/tools/codesighs
|
||||
$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
|
||||
#$MailBloatTest = 0;
|
||||
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
|
||||
$LayoutPerformanceTest = 0; # Tp
|
||||
$LayoutPerformanceLocalTest = 0; # Tp2
|
||||
$DHTMLPerformanceTest = 0; # Tdhtml
|
||||
#$QATest = 0;
|
||||
$XULWindowOpenTest = 0; # Txul
|
||||
$StartupPerformanceTest = 0; # Ts
|
||||
|
||||
$TestsPhoneHome = 0; # Should test report back to server?
|
||||
|
||||
$GraphNameOverride = 'xserve08.build.mozilla.org_Fx-Trunk';
|
||||
|
||||
# $results_server
|
||||
#----------------------------------------------------------------------------
|
||||
# Server on which test results will be accessible. This was originally tegu,
|
||||
# then became axolotl. Once we moved services from axolotl, it was time
|
||||
# to give this service its own hostname to make future transitions easier.
|
||||
# - cmp@mozilla.org
|
||||
#$results_server = "build-graphs.mozilla.org";
|
||||
|
||||
#$pageload_server = "spider"; # localhost
|
||||
$pageload_server = "pageload.build.mozilla.org"; # localhost
|
||||
|
||||
#
|
||||
# Timeouts, values are in seconds.
|
||||
#
|
||||
#$CVSCheckoutTimeout = 3600;
|
||||
#$CreateProfileTimeout = 45;
|
||||
#$RegxpcomTestTimeout = 120;
|
||||
|
||||
$AliveTestTimeout = 10;
|
||||
#$ViewerTestTimeout = 45;
|
||||
#$EmbedTestTimeout = 45;
|
||||
#$BloatTestTimeout = 120; # seconds
|
||||
#$MailBloatTestTimeout = 120; # seconds
|
||||
#$JavaTestTimeout = 45;
|
||||
#$DomTestTimeout = 45; # seconds
|
||||
#$XpcomGlueTestTimeout = 15;
|
||||
#$CodesizeTestTimeout = 900; # seconds
|
||||
#$CodesizeTestType = "auto"; # {"auto"|"base"}
|
||||
$LayoutPerformanceTestTimeout = 300; # entire test, seconds
|
||||
$LayoutPerformanceLocalTestTimeout = 180; # entire test, seconds
|
||||
$DHTMLPerformanceTestTimeout = 180; # entire test, seconds
|
||||
#$QATestTimeout = 1200; # entire test, seconds
|
||||
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
|
||||
#$StartupPerformanceTestTimeout = 15; # seconds
|
||||
#$XULWindowOpenTestTimeout = 150; # seconds
|
||||
|
||||
|
||||
#$MozConfigFileName = 'mozconfig';
|
||||
|
||||
#$UseMozillaProfile = 1;
|
||||
#$MozProfileName = 'default';
|
||||
|
||||
#- Set these to what makes sense for your system
|
||||
#$Make = 'gmake'; # Must be GNU make
|
||||
#$MakeOverrides = '';
|
||||
#$mail = '/bin/mail';
|
||||
#$CVS = 'cvs -q';
|
||||
#$CVSCO = 'checkout -P';
|
||||
|
||||
# win32 usually doesn't have /bin/mail
|
||||
#$blat = 'c:/nstools/bin/blat';
|
||||
#$use_blat = 0;
|
||||
|
||||
# Set moz_cvsroot to something like:
|
||||
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
|
||||
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
|
||||
#
|
||||
# Note that win32 may not need \@, depends on ' or ".
|
||||
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
|
||||
|
||||
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
|
||||
$moz_cvsroot = ':ext:cltbld@cvs.mozilla.org:/cvsroot';
|
||||
|
||||
#- Set these proper values for your tinderbox server
|
||||
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
|
||||
|
||||
# Allow for non-client builds, e.g. camino.
|
||||
#$moz_client_mk = 'client.mk';
|
||||
|
||||
#- Set if you want to build in a separate object tree
|
||||
$ObjDir = '../build/universal';
|
||||
|
||||
# Extra build name, if needed.
|
||||
$BuildNameExtra = 'Universal Nightly';
|
||||
|
||||
# User comment, eg. ip address for dhcp builds.
|
||||
# ex: $UserComment = "ip = 208.12.36.108";
|
||||
#$UserComment = 0;
|
||||
|
||||
#-
|
||||
#- The rest should not need to be changed
|
||||
#-
|
||||
|
||||
#- Minimum wait period from start of build to start of next build in minutes.
|
||||
#$BuildSleep = 10;
|
||||
|
||||
#- Until you get the script working. When it works,
|
||||
#- change to the tree you're actually building
|
||||
# CONFIG: $BuildTree = '%buildTree%';
|
||||
$BuildTree = 'MozillaTest';
|
||||
|
||||
#$BuildName = '';
|
||||
#$BuildTag = '';
|
||||
#$BuildConfigDir = 'mozilla/config';
|
||||
#$Topsrcdir = 'mozilla';
|
||||
|
||||
$BinaryName = 'firefox-bin';
|
||||
|
||||
#
|
||||
# For embedding app, use:
|
||||
#$EmbedBinaryName = 'TestGtkEmbed';
|
||||
#$EmbedDistDir = 'dist/bin'
|
||||
|
||||
|
||||
#$ShellOverride = ''; # Only used if the default shell is too stupid
|
||||
#$ConfigureArgs = '';
|
||||
#$ConfigureEnvArgs = '';
|
||||
#$Compiler = 'gcc';
|
||||
#$NSPRArgs = '';
|
||||
#$ShellOverride = '';
|
||||
|
||||
# Release build options
|
||||
$ReleaseBuild = 1;
|
||||
$shiptalkback = 0;
|
||||
$ReleaseToLatest = 1; # Push the release to latest-<milestone>?
|
||||
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
|
||||
$build_hour = "14";
|
||||
$package_creation_path = "/browser/installer";
|
||||
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
|
||||
$mac_bundle_path = "/browser/app";
|
||||
$ssh_version = "2";
|
||||
# CONFIG: $ssh_user = "%sshUser%";
|
||||
$ssh_user = "ffxbld";
|
||||
$ssh_key = "'$ENV{HOME}/.ssh/ffxbld_dsa'";
|
||||
# CONFIG: $ssh_server = "%sshServer%";
|
||||
$ssh_server = "stage-old.mozilla.org";
|
||||
$ReleaseGroup = "firefox";
|
||||
$ftp_path = "/home/ftp/pub/firefox/nightly/experimental";
|
||||
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/experimental";
|
||||
$tbox_ftp_path = "/home/ftp/pub/firefox/tinderbox-builds";
|
||||
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds";
|
||||
$milestone = "trunk";
|
||||
$notify_list = "build-announce\@mozilla.org";
|
||||
$stub_installer = 0;
|
||||
$sea_installer = 0;
|
||||
$archive = 1;
|
||||
$push_raw_xpis = 0;
|
||||
# CONFIG: $update_aus_host = '%ausServer%';
|
||||
$update_aus_host = 'aus2-staging.mozilla.org';
|
||||
$update_package = 1;
|
||||
$update_product = "Firefox";
|
||||
$update_version = "trunk";
|
||||
$update_platform = "Darwin_Universal-gcc3";
|
||||
$update_hash = "sha1";
|
||||
# CONFIG: $update_filehost = '%ftpServer%';
|
||||
$update_filehost = 'ftp.mozilla.org';
|
||||
$update_ver_file = 'browser/config/version.txt';
|
||||
$update_pushinfo = 0;
|
||||
$crashreporter_buildsymbols = 1;
|
||||
$crashreporter_pushsymbols = 1;
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
|
||||
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
|
||||
$ENV{'SYMBOL_SERVER_USER'} = 'ffxbld';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
|
||||
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_ffx';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
|
||||
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/Users/cltbld/.ssh/ffxbld_dsa';
|
||||
|
||||
# Reboot the OS at the end of build-and-test cycle. This is primarily
|
||||
# intended for Win9x, which can't last more than a few cycles before
|
||||
# locking up (and testing would be suspect even after a couple of cycles).
|
||||
# Right now, there is only code to force the reboot for Win9x, so even
|
||||
# setting this to 1, will not have an effect on other platforms. Setting
|
||||
# up win9x to automatically logon and begin running tinderbox is left
|
||||
# as an exercise to the reader.
|
||||
#$RebootSystem = 0;
|
||||
|
||||
# LogCompression specifies the type of compression used on the log file.
|
||||
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
|
||||
# for 'gzip' or 'bzip2' are in the user's path before setting this
|
||||
# option.
|
||||
#$LogCompression = '';
|
||||
|
||||
# LogEncoding specifies the encoding format used for the logs. Valid
|
||||
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
|
||||
# this needs to be set to 'base64' or 'uuencode' to ensure that the
|
||||
# binary data is transferred properly.
|
||||
#$LogEncoding = '';
|
||||
|
||||
# Prevent Extension Manager from spawning child processes during tests
|
||||
# - processes that tbox scripts cannot kill.
|
||||
#$ENV{NO_EM_RESTART} = '1';
|
||||
@@ -1 +0,0 @@
|
||||
Clobbering to pick up fixes from bug 419319.
|
||||
@@ -1,20 +0,0 @@
|
||||
#
|
||||
## hostname: fx-win32-tbox
|
||||
## uname: MINGW32_NT-5.2 FX-WIN32-TBOX 1.0.11(0.46/3/2) 2007-01-12 12:05 i686 Msys
|
||||
#
|
||||
export CFLAGS="-GL -wd4624 -wd4952"
|
||||
export CXXFLAGS="-GL -wd4624 -wd4952"
|
||||
export LDFLAGS="-LTCG"
|
||||
|
||||
mk_add_options MOZ_CO_PROJECT=browser
|
||||
mk_add_options MOZ_MAKE_FLAGS="-j5"
|
||||
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging"
|
||||
mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py'
|
||||
|
||||
ac_add_options --enable-application=browser
|
||||
ac_add_options --enable-update-channel=nightly
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --disable-tests
|
||||
ac_add_options --enable-update-packaging
|
||||
ac_add_options --enable-jemalloc
|
||||
@@ -1,264 +0,0 @@
|
||||
#
|
||||
## hostname: fx-win32-tbox
|
||||
## uname: MINGW32_NT-5.2 FX-WIN32-TBOX 1.0.11(0.46/3/2) 2007-01-12 12:05 i686 Msys
|
||||
#
|
||||
|
||||
#- tinder-config.pl - Tinderbox configuration file.
|
||||
#- Uncomment the variables you need to set.
|
||||
#- The default values are the same as the commented variables.
|
||||
|
||||
$ENV{NO_EM_RESTART} = '1';
|
||||
$ENV{CVS_RSH} = "ssh";
|
||||
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
|
||||
|
||||
# $ENV{MOZ_PACKAGE_MSI}
|
||||
#-----------------------------------------------------------------------------
|
||||
# Default: 0
|
||||
# Values: 0 | 1
|
||||
# Purpose: Controls whether a MSI package is made.
|
||||
# Requires: Windows and a local MakeMSI installation.
|
||||
#$ENV{MOZ_PACKAGE_MSI} = 0;
|
||||
|
||||
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
|
||||
#-----------------------------------------------------------------------------
|
||||
# Default: scp
|
||||
# Values: scp | rsync
|
||||
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
|
||||
# Requires: The selected type requires the command be available both locally
|
||||
# and on the Talkback server.
|
||||
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
|
||||
|
||||
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
|
||||
$BuildAdministrator = 'build@mozilla.org';
|
||||
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
|
||||
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
|
||||
|
||||
#- You'll need to change these to suit your machine's needs
|
||||
#$DisplayServer = ':0.0';
|
||||
|
||||
#- Default values of command-line opts
|
||||
#-
|
||||
#$BuildDepend = 1; # Depend or Clobber
|
||||
#$BuildDebug = 0; # Debug or Opt (Darwin)
|
||||
#$ReportStatus = 1; # Send results to server, or not
|
||||
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
|
||||
#$UseTimeStamp = 1; # Use the CVS 'pull-by-timestamp' option, or not
|
||||
#$BuildOnce = 0; # Build once, don't send results to server
|
||||
#$TestOnly = 0; # Only run tests, don't pull/build
|
||||
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
|
||||
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
|
||||
#$BuildLocales = 0; # Do l10n packaging?
|
||||
|
||||
# Tests
|
||||
$CleanProfile = 1;
|
||||
#$ResetHomeDirForTests = 1;
|
||||
$ProductName = "Firefox";
|
||||
$VendorName = "Mozilla";
|
||||
|
||||
# CONFIG: $RunMozillaTests = %runMozillaTests%;
|
||||
$RunMozillaTests = 1;
|
||||
$RegxpcomTest = 1;
|
||||
$AliveTest = 1;
|
||||
$JavaTest = 0;
|
||||
$ViewerTest = 0;
|
||||
$BloatTest = 0; # warren memory bloat test
|
||||
$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
|
||||
$DomToTextConversionTest = 0;
|
||||
$XpcomGlueTest = 0;
|
||||
$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
|
||||
$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
|
||||
$MailBloatTest = 0;
|
||||
$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
|
||||
$LayoutPerformanceTest = 0; # Tp
|
||||
$DHTMLPerformanceTest = 0; # Tdhtml
|
||||
$QATest = 0;
|
||||
$XULWindowOpenTest = 0; # Txul
|
||||
$StartupPerformanceTest = 0; # Ts
|
||||
$NeckoUnitTest = 0;
|
||||
$RenderPerformanceTest = 0; # Tgfx
|
||||
|
||||
$TestsPhoneHome = 0; # Should test report back to server?
|
||||
$GraphNameOverride = 'fx-win32-tbox';
|
||||
|
||||
# $results_server
|
||||
#----------------------------------------------------------------------------
|
||||
# Server on which test results will be accessible. This was originally tegu,
|
||||
# then became axolotl. Once we moved services from axolotl, it was time
|
||||
# to give this service its own hostname to make future transitions easier.
|
||||
# - cmp@mozilla.org
|
||||
#$results_server = "build-graphs.mozilla.org";
|
||||
|
||||
$pageload_server = "pageload.build.mozilla.org"; # localhost
|
||||
|
||||
#
|
||||
# Timeouts, values are in seconds.
|
||||
#
|
||||
#$CVSCheckoutTimeout = 3600;
|
||||
#$CreateProfileTimeout = 45;
|
||||
#$RegxpcomTestTimeout = 120;
|
||||
|
||||
#$AliveTestTimeout = 30;
|
||||
#$ViewerTestTimeout = 45;
|
||||
#$EmbedTestTimeout = 45;
|
||||
#$BloatTestTimeout = 120; # seconds
|
||||
#$MailBloatTestTimeout = 120; # seconds
|
||||
#$JavaTestTimeout = 45;
|
||||
#$DomTestTimeout = 45; # seconds
|
||||
#$XpcomGlueTestTimeout = 15;
|
||||
#$CodesizeTestTimeout = 900; # seconds
|
||||
#$CodesizeTestType = "auto"; # {"auto"|"base"}
|
||||
$LayoutPerformanceTestTimeout = 800; # entire test, seconds
|
||||
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
|
||||
#$QATestTimeout = 1200; # entire test, seconds
|
||||
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
|
||||
#$StartupPerformanceTestTimeout = 20; # seconds
|
||||
#$XULWindowOpenTestTimeout = 90; # seconds
|
||||
#$NeckoUnitTestTimeout = 30; # seconds
|
||||
$RenderPerformanceTestTimeout = 1800; # seconds
|
||||
|
||||
#$MozConfigFileName = 'mozconfig';
|
||||
|
||||
#$UseMozillaProfile = 1;
|
||||
#$MozProfileName = 'default';
|
||||
|
||||
#- Set these to what makes sense for your system
|
||||
$Make = 'make'; # Must be GNU make
|
||||
#$MakeOverrides = '';
|
||||
#$mail = '/bin/mail';
|
||||
#$CVS = 'cvs -q';
|
||||
#$CVSCO = 'checkout -P';
|
||||
|
||||
# win32 usually doesn't have /bin/mail
|
||||
$blat = '/d/mozilla-build/blat261/full/blat';
|
||||
#$use_blat = 1;
|
||||
|
||||
# Set moz_cvsroot to something like:
|
||||
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
|
||||
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
|
||||
#
|
||||
# Note that win32 may not need \@, depends on ' or ".
|
||||
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
|
||||
|
||||
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
|
||||
$moz_cvsroot = ':ext:cltbld@cvs.mozilla.org:/cvsroot';
|
||||
|
||||
#- Set these proper values for your tinderbox server
|
||||
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
|
||||
|
||||
# Allow for non-client builds, e.g. camino.
|
||||
#$moz_client_mk = 'client.mk';
|
||||
|
||||
#- Set if you want to build in a separate object tree
|
||||
$ObjDir = 'obj-fx-trunk';
|
||||
|
||||
# Extra build name, if needed.
|
||||
$BuildNameExtra = 'Nightly';
|
||||
|
||||
# User comment, eg. ip address for dhcp builds.
|
||||
# ex: $UserComment = "ip = 208.12.36.108";
|
||||
#$UserComment = 0;
|
||||
|
||||
#-
|
||||
#- The rest should not need to be changed
|
||||
#-
|
||||
|
||||
#- Minimum wait period from start of build to start of next build in minutes.
|
||||
#$BuildSleep = 10;
|
||||
|
||||
#- Until you get the script working. When it works,
|
||||
#- change to the tree you're actually building
|
||||
# CONFIG: $BuildTree = '%buildTree%';
|
||||
$BuildTree = 'MozillaTest';
|
||||
|
||||
#$BuildName = '';
|
||||
#$BuildTag = '';
|
||||
#$BuildConfigDir = 'mozilla/config';
|
||||
#$Topsrcdir = 'mozilla';
|
||||
|
||||
$BinaryName = 'firefox.exe';
|
||||
|
||||
#
|
||||
# For embedding app, use:
|
||||
#$EmbedBinaryName = 'TestGtkEmbed';
|
||||
#$EmbedDistDir = 'dist/bin'
|
||||
|
||||
|
||||
#$ShellOverride = ''; # Only used if the default shell is too stupid
|
||||
#$ConfigureArgs = '';
|
||||
#$ConfigureEnvArgs = '';
|
||||
#$Compiler = 'gcc';
|
||||
#$NSPRArgs = '';
|
||||
#$ShellOverride = '';
|
||||
|
||||
$ProfiledBuild = 1;
|
||||
# Release build options
|
||||
$ReleaseBuild = 1;
|
||||
$shiptalkback = 0;
|
||||
$ReleaseToLatest = 1; # Push the release to latest-<milestone>?
|
||||
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
|
||||
$build_hour = "14";
|
||||
$package_creation_path = "/browser/installer";
|
||||
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
|
||||
$ssh_version = "2";
|
||||
# CONFIG: $ssh_user = "%sshUser%";
|
||||
$ssh_user = "ffxbld";
|
||||
$ssh_key = "'$ENV{HOME}/.ssh/ffxbld_dsa'";
|
||||
# CONFIG: $ssh_server = "%sshServer%";
|
||||
$ssh_server = "stage-old.mozilla.org";
|
||||
$ReleaseGroup = "firefox";
|
||||
$ftp_path = "/home/ftp/pub/firefox/nightly/experimental";
|
||||
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/experimental";
|
||||
$tbox_ftp_path = "/home/ftp/pub/firefox/tinderbox-builds";
|
||||
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds";
|
||||
$milestone = "trunk";
|
||||
$notify_list = 'build-announce@mozilla.org';
|
||||
$stub_installer = 0;
|
||||
$sea_installer = 1;
|
||||
$archive = 1;
|
||||
$push_raw_xpis = 0;
|
||||
# CONFIG: $update_aus_host = '%ausServer%';
|
||||
$update_aus_host = 'aus2-staging.mozilla.org';
|
||||
$update_package = 1;
|
||||
$update_product = "Firefox";
|
||||
$update_version = "trunk";
|
||||
$update_platform = "WINNT_x86-msvc";
|
||||
$update_hash = "sha1";
|
||||
# CONFIG: $update_filehost = '%ftpServer%';
|
||||
$update_filehost = 'ftp.mozilla.org';
|
||||
$update_ver_file = 'browser/config/version.txt';
|
||||
$update_pushinfo = 0;
|
||||
$crashreporter_buildsymbols = 1;
|
||||
$crashreporter_pushsymbols = 1;
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
|
||||
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
|
||||
$ENV{'SYMBOL_SERVER_USER'} = 'ffxbld';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
|
||||
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_ffx';
|
||||
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
|
||||
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/c/Documents and Settings/cltbld/.ssh/ffxbld_dsa';
|
||||
|
||||
# Reboot the OS at the end of build-and-test cycle. This is primarily
|
||||
# intended for Win9x, which can't last more than a few cycles before
|
||||
# locking up (and testing would be suspect even after a couple of cycles).
|
||||
# Right now, there is only code to force the reboot for Win9x, so even
|
||||
# setting this to 1, will not have an effect on other platforms. Setting
|
||||
# up win9x to automatically logon and begin running tinderbox is left
|
||||
# as an exercise to the reader.
|
||||
#$RebootSystem = 0;
|
||||
|
||||
# LogCompression specifies the type of compression used on the log file.
|
||||
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
|
||||
# for 'gzip' or 'bzip2' are in the user's path before setting this
|
||||
# option.
|
||||
#$LogCompression = '';
|
||||
|
||||
# LogEncoding specifies the encoding format used for the logs. Valid
|
||||
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
|
||||
# this needs to be set to 'base64' or 'uuencode' to ensure that the
|
||||
# binary data is transferred properly.
|
||||
#$LogEncoding = '';
|
||||
|
||||
# Prevent Extension Manager from spawning child processes during tests
|
||||
# - processes that tbox scripts cannot kill.
|
||||
#$ENV{NO_EM_RESTART} = '1';
|
||||
26
mozilla/tools/tinderbox/INSTALL
Normal file
26
mozilla/tools/tinderbox/INSTALL
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
To install a fresh tinderbox:
|
||||
|
||||
1) Checkout the latest copy of the tinderbox scripts
|
||||
cd /builds/cvs; cvs -z3 co mozilla/tools/tinderbox
|
||||
|
||||
2) Change to the location that you wish to run the tinderbox from.
|
||||
cd /builds/tinderbox
|
||||
|
||||
3) Create links from the cvs directory to your build directory
|
||||
ln -s /builds/cvs/mozilla/tools/tinderbox/*.pl .
|
||||
|
||||
4) Create your tinderbox config file
|
||||
perl ./build-seamonkey.pl --example-config > tinder-config.pl
|
||||
|
||||
5) Create your mozconfig build file in the current dir
|
||||
mozilla -remote http://webtools.mozilla.org/build/config.cgi
|
||||
|
||||
6) Customize your tinderbox configuration
|
||||
vi tinder-config.pl
|
||||
|
||||
7) Test your tinderbox configuration on the test tree
|
||||
perl ./build-seamonkey.pl --depend -t MozillaTest
|
||||
|
||||
8) Once you are satisfied with the results run your tinderbox
|
||||
perl ./build-seamonkey.pl --depend
|
||||
74
mozilla/tools/tinderbox/README
Normal file
74
mozilla/tools/tinderbox/README
Normal file
@@ -0,0 +1,74 @@
|
||||
mozilla/tools/tinderbox
|
||||
===================
|
||||
|
||||
This directory is for the scripts associated with the client-side of
|
||||
tinderbox (scripts to checkout, build, and report the status of the tree
|
||||
to a tinderbox server).
|
||||
|
||||
|
||||
Table of Contents
|
||||
=================
|
||||
|
||||
* README
|
||||
This file.
|
||||
|
||||
* build-seamonkey.pl
|
||||
A perl script to drive the client side of tinderbox (unix variants).
|
||||
usage:
|
||||
build-seamonkey.pl [--clobber | --depend] [-t TreeName] [--testonly] [--once]
|
||||
|
||||
* bloatdiff.pl
|
||||
Script used to process leak data in the logs.
|
||||
|
||||
* build-seamonkey-util.pl
|
||||
Core unix tinderbox stuff.
|
||||
|
||||
* post-mozilla-sample.pl
|
||||
Example of post-build test script
|
||||
|
||||
* tinder-defaults.pl
|
||||
Default script variables.
|
||||
|
||||
* gettime.pl
|
||||
Wrapper to get hires time, if available.
|
||||
|
||||
* tinderbox
|
||||
Wrapper script to start unix builds.
|
||||
|
||||
* install-links
|
||||
Create links to a tinderbox install directory.
|
||||
|
||||
|
||||
Tinderbox example for SeaMonkey build
|
||||
=====================================
|
||||
|
||||
Here is an example of how to set up a "SeaMonkey" tinderbox
|
||||
build of mozilla.
|
||||
|
||||
# Create tinderbox source files in mozilla,
|
||||
# then SeaMonkey directory where mozilla tree will live.
|
||||
cvs co mozilla/tools/tinderbox
|
||||
mkdir SeaMonkey
|
||||
cd SeaMonkey; ../mozilla/tools/tinderbox/install-links
|
||||
|
||||
#
|
||||
# Create tinder-config.pl file in SeaMonkey directory.
|
||||
# Copy one from an existing build, or create a sample one and edit it:
|
||||
#
|
||||
./build-seamonkey.pl --example-config > tinder-config.pl
|
||||
|
||||
#
|
||||
# mozconfig. If you have configure options, add them to a
|
||||
# file named "mozconfig" in the SeaMonkey directory.
|
||||
# Again, you can copy one from a build, or create one.
|
||||
# For a default stock build, this file is not needed or
|
||||
# can be blank.
|
||||
#
|
||||
|
||||
# Start the tinderbox! From the SeaMonkey directory:
|
||||
./tinderbox depend start
|
||||
|
||||
# You can watch the build run the first time with:
|
||||
tail -f <objdir>/<logname>
|
||||
|
||||
|
||||
332
mozilla/tools/tinderbox/bloatdiff.pl
Executable file
332
mozilla/tools/tinderbox/bloatdiff.pl
Executable file
@@ -0,0 +1,332 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
#
|
||||
# Munges the output from
|
||||
# XPCOM_MEM_BLOAT_LOG=1; mozilla-bin -f bloaturls.txt
|
||||
# so that it does some summary and stats stuff.
|
||||
#
|
||||
# To show leak test results for a set of changes, do something like this:
|
||||
#
|
||||
# XPCOM_MEM_BLOAT_LOG=1
|
||||
# mozilla -f bloaturls.txt > a.out
|
||||
# **make change**
|
||||
# mozilla -f bloaturls.txt > b.out
|
||||
# bloatdiff.pl a.out b.out
|
||||
#
|
||||
|
||||
$OLDFILE = $ARGV[0];
|
||||
$NEWFILE = $ARGV[1];
|
||||
$LABEL = $ARGV[2];
|
||||
|
||||
sub processFile {
|
||||
my ($filename, $map, $prevMap) = @_;
|
||||
open(FH, $filename);
|
||||
while (<FH>) {
|
||||
if (m{
|
||||
^\s*(\d+)\s # Line number
|
||||
([\w:]+)\s+ # Name
|
||||
(-?\d+)\s+ # Size
|
||||
(-?\d+)\s+ # Leaked
|
||||
(-?\d+)\s+ # Objects Total
|
||||
(-?\d+)\s+ # Objects Rem
|
||||
\(\s*(-?[\d.]+)\s+ # Objects Mean
|
||||
\+/-\s+
|
||||
([\w.]+)\)\s+ # Objects StdDev
|
||||
(-?\d+)\s+ # Reference Total
|
||||
(-?\d+)\s+ # Reference Rem
|
||||
\(\s*(-?[\d.]+)\s+ # Reference Mean
|
||||
\+/-\s+
|
||||
([\w\.]+)\) # Reference StdDev
|
||||
}x) {
|
||||
$$map{$2} = { name => $2,
|
||||
size => $3,
|
||||
leaked => $4,
|
||||
objTotal => $5,
|
||||
objRem => $6,
|
||||
objMean => $7,
|
||||
objStdDev => $8,
|
||||
refTotal => $9,
|
||||
refRem => $10,
|
||||
refMean => $11,
|
||||
refStdDev => $12,
|
||||
bloat => $3 * $5 # size * objTotal
|
||||
};
|
||||
} else {
|
||||
# print "failed to parse: $_\n";
|
||||
}
|
||||
}
|
||||
close(FH);
|
||||
}
|
||||
|
||||
%oldMap = ();
|
||||
processFile($OLDFILE, \%oldMap);
|
||||
|
||||
%newMap = ();
|
||||
processFile($NEWFILE, \%newMap);
|
||||
|
||||
################################################################################
|
||||
|
||||
$inf = 9999999.99;
|
||||
|
||||
sub getLeaksDelta {
|
||||
my ($key) = @_;
|
||||
my $oldLeaks = $oldMap{$key}{leaked} || 0;
|
||||
my $newLeaks = $newMap{$key}{leaked};
|
||||
my $percentLeaks = 0;
|
||||
if ($oldLeaks == 0) {
|
||||
if ($newLeaks != 0) {
|
||||
# there weren't any leaks before, but now there are!
|
||||
$percentLeaks = $inf;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$percentLeaks = ($newLeaks - $oldLeaks) / $oldLeaks * 100;
|
||||
}
|
||||
# else we had no record of this class before
|
||||
return ($newLeaks - $oldLeaks, $percentLeaks);
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
||||
sub getBloatDelta {
|
||||
my ($key) = @_;
|
||||
my $newBloat = $newMap{$key}{bloat};
|
||||
my $percentBloat = 0;
|
||||
my $oldSize = $oldMap{$key}{size} || 0;
|
||||
my $oldTotal = $oldMap{$key}{objTotal} || 0;
|
||||
my $oldBloat = $oldTotal * $oldSize;
|
||||
if ($oldBloat == 0) {
|
||||
if ($newBloat != 0) {
|
||||
# this class wasn't used before, but now it is
|
||||
$percentBloat = $inf;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$percentBloat = ($newBloat - $oldBloat) / $oldBloat * 100;
|
||||
}
|
||||
# else we had no record of this class before
|
||||
return ($newBloat - $oldBloat, $percentBloat);
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
||||
foreach $key (keys %newMap) {
|
||||
my ($newLeaks, $percentLeaks) = getLeaksDelta($key);
|
||||
my ($newBloat, $percentBloat) = getBloatDelta($key);
|
||||
$newMap{$key}{leakDelta} = $newLeaks;
|
||||
$newMap{$key}{leakPercent} = $percentLeaks;
|
||||
$newMap{$key}{bloatDelta} = $newBloat;
|
||||
$newMap{$key}{bloatPercent} = $percentBloat;
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
||||
# Print a value of bytes out in a reasonable
|
||||
# KB, MB, or GB form. Copied from build-seamonkey-util.pl, sorry. -mcafee
|
||||
sub PrintSize($) {
|
||||
|
||||
# print a number with 3 significant figures
|
||||
sub PrintNum($) {
|
||||
my ($num) = @_;
|
||||
my $rv;
|
||||
if ($num < 1) {
|
||||
$rv = sprintf "%.3f", ($num);
|
||||
} elsif ($num < 10) {
|
||||
$rv = sprintf "%.2f", ($num);
|
||||
} elsif ($num < 100) {
|
||||
$rv = sprintf "%.1f", ($num);
|
||||
} else {
|
||||
$rv = sprintf "%d", ($num);
|
||||
}
|
||||
}
|
||||
|
||||
my ($size) = @_;
|
||||
my $rv;
|
||||
if ($size > 1000000000) {
|
||||
$rv = PrintNum($size / 1000000000.0) . "G";
|
||||
} elsif ($size > 1000000) {
|
||||
$rv = PrintNum($size / 1000000.0) . "M";
|
||||
} elsif ($size > 1000) {
|
||||
$rv = PrintNum($size / 1000.0) . "K";
|
||||
} else {
|
||||
$rv = PrintNum($size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
print "Bloat/Leak Delta Report\n";
|
||||
print "--------------------------------------------------------------------------------------\n";
|
||||
print "Current file: $NEWFILE\n";
|
||||
print "Previous file: $OLDFILE\n";
|
||||
print "----------------------------------------------leaks------leaks%------bloat------bloat%\n";
|
||||
printf "%-40s %10s %10.2f%% %10s %10.2f%%\n",
|
||||
("TOTAL",
|
||||
$newMap{"TOTAL"}{leaked}, $newMap{"TOTAL"}{leakPercent},
|
||||
$newMap{"TOTAL"}{bloat}, $newMap{"TOTAL"}{bloatPercent});
|
||||
|
||||
################################################################################
|
||||
|
||||
sub percentStr {
|
||||
my ($p) = @_;
|
||||
if ($p == $inf) {
|
||||
return "-";
|
||||
}
|
||||
else {
|
||||
return sprintf "%10.2f%%", $p;
|
||||
}
|
||||
}
|
||||
|
||||
# NEW LEAKS
|
||||
@keys = sort { $newMap{$b}{leakPercent} <=> $newMap{$a}{leakPercent} } keys %newMap;
|
||||
my $needsHeading = 1;
|
||||
my $total = 0;
|
||||
foreach $key (@keys) {
|
||||
my $percentLeaks = $newMap{$key}{leakPercent};
|
||||
my $leaks = $newMap{$key}{leaked};
|
||||
if ($percentLeaks > 0 && $key !~ /TOTAL/) {
|
||||
if ($needsHeading) {
|
||||
printf "--NEW-LEAKS-----------------------------------leaks------leaks%%-----------------------\n";
|
||||
$needsHeading = 0;
|
||||
}
|
||||
printf "%-40s %10s %10s\n", ($key, $leaks, percentStr($percentLeaks));
|
||||
$total += $leaks;
|
||||
}
|
||||
}
|
||||
if (!$needsHeading) {
|
||||
printf "%-40s %10s\n", ("TOTAL", $total);
|
||||
}
|
||||
|
||||
# FIXED LEAKS
|
||||
@keys = sort { $newMap{$b}{leakPercent} <=> $newMap{$a}{leakPercent} } keys %newMap;
|
||||
$needsHeading = 1;
|
||||
$total = 0;
|
||||
foreach $key (@keys) {
|
||||
my $percentLeaks = $newMap{$key}{leakPercent};
|
||||
my $leaks = $newMap{$key}{leaked};
|
||||
if ($percentLeaks < 0 && $key !~ /TOTAL/) {
|
||||
if ($needsHeading) {
|
||||
printf "--FIXED-LEAKS---------------------------------leaks------leaks%%-----------------------\n";
|
||||
$needsHeading = 0;
|
||||
}
|
||||
printf "%-40s %10s %10s\n", ($key, $leaks, percentStr($percentLeaks));
|
||||
$total += $leaks;
|
||||
}
|
||||
}
|
||||
if (!$needsHeading) {
|
||||
printf "%-40s %10s\n", ("TOTAL", $total);
|
||||
}
|
||||
|
||||
# NEW BLOAT
|
||||
@keys = sort { $newMap{$b}{bloatPercent} <=> $newMap{$a}{bloatPercent} } keys %newMap;
|
||||
$needsHeading = 1;
|
||||
$total = 0;
|
||||
foreach $key (@keys) {
|
||||
my $percentBloat = $newMap{$key}{bloatPercent};
|
||||
my $bloat = $newMap{$key}{bloat};
|
||||
if ($percentBloat > 0 && $key !~ /TOTAL/) {
|
||||
if ($needsHeading) {
|
||||
printf "--NEW-BLOAT-----------------------------------bloat------bloat%%-----------------------\n";
|
||||
$needsHeading = 0;
|
||||
}
|
||||
printf "%-40s %10s %10s\n", ($key, $bloat, percentStr($percentBloat));
|
||||
$total += $bloat;
|
||||
}
|
||||
}
|
||||
if (!$needsHeading) {
|
||||
printf "%-40s %10s\n", ("TOTAL", $total);
|
||||
}
|
||||
|
||||
# ALL LEAKS
|
||||
@keys = sort { $newMap{$b}{leaked} <=> $newMap{$a}{leaked} } keys %newMap;
|
||||
$needsHeading = 1;
|
||||
$total = 0;
|
||||
foreach $key (@keys) {
|
||||
my $leaks = $newMap{$key}{leaked};
|
||||
my $percentLeaks = $newMap{$key}{leakPercent};
|
||||
if ($leaks > 0) {
|
||||
if ($needsHeading) {
|
||||
printf "--ALL-LEAKS-----------------------------------leaks------leaks%%-----------------------\n";
|
||||
$needsHeading = 0;
|
||||
}
|
||||
printf "%-40s %10s %10s\n", ($key, $leaks, percentStr($percentLeaks));
|
||||
if ($key !~ /TOTAL/) {
|
||||
$total += $leaks;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$needsHeading) {
|
||||
# printf "%-40s %10s\n", ("TOTAL", $total);
|
||||
}
|
||||
|
||||
# ALL BLOAT
|
||||
@keys = sort { $newMap{$b}{bloat} <=> $newMap{$a}{bloat} } keys %newMap;
|
||||
$needsHeading = 1;
|
||||
$total = 0;
|
||||
foreach $key (@keys) {
|
||||
my $bloat = $newMap{$key}{bloat};
|
||||
my $percentBloat = $newMap{$key}{bloatPercent};
|
||||
if ($bloat > 0) {
|
||||
if ($needsHeading) {
|
||||
printf "--ALL-BLOAT-----------------------------------bloat------bloat%%-----------------------\n";
|
||||
$needsHeading = 0;
|
||||
}
|
||||
printf "%-40s %10s %10s\n", ($key, $bloat, percentStr($percentBloat));
|
||||
if ($key !~ /TOTAL/) {
|
||||
$total += $bloat;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$needsHeading) {
|
||||
# printf "%-40s %10s\n", ("TOTAL", $total);
|
||||
}
|
||||
|
||||
# NEW CLASSES
|
||||
@keys = sort { $newMap{$b}{bloatDelta} <=> $newMap{$a}{bloatDelta} } keys %newMap;
|
||||
$needsHeading = 1;
|
||||
my $ltotal = 0;
|
||||
my $btotal = 0;
|
||||
foreach $key (@keys) {
|
||||
my $leaks = $newMap{$key}{leaked};
|
||||
my $bloat = $newMap{$key}{bloat};
|
||||
my $percentBloat = $newMap{$key}{bloatPercent};
|
||||
if ($percentBloat == $inf && $key !~ /TOTAL/) {
|
||||
if ($needsHeading) {
|
||||
printf "--CLASSES-NOT-REPORTED-LAST-TIME--------------leaks------bloat------------------------\n";
|
||||
$needsHeading = 0;
|
||||
}
|
||||
printf "%-40s %10s %10s\n", ($key, $leaks, $bloat);
|
||||
if ($key !~ /TOTAL/) {
|
||||
$ltotal += $leaks;
|
||||
$btotal += $bloat;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$needsHeading) {
|
||||
printf "%-40s %10s %10s\n", ("TOTAL", $ltotal, $btotal);
|
||||
}
|
||||
|
||||
# OLD CLASSES
|
||||
@keys = sort { ($oldMap{$b}{bloat} || 0) <=> ($oldMap{$a}{bloat} || 0) } keys %oldMap;
|
||||
$needsHeading = 1;
|
||||
$ltotal = 0;
|
||||
$btotal = 0;
|
||||
foreach $key (@keys) {
|
||||
if (!defined($newMap{$key})) {
|
||||
my $leaks = $oldMap{$key}{leaked};
|
||||
my $bloat = $oldMap{$key}{bloat};
|
||||
if ($needsHeading) {
|
||||
printf "--CLASSES-THAT-WENT-AWAY----------------------leaks------bloat------------------------\n";
|
||||
$needsHeading = 0;
|
||||
}
|
||||
printf "%-40s %10s %10s\n", ($key, $leaks, $bloat);
|
||||
if ($key !~ /TOTAL/) {
|
||||
$ltotal += $leaks;
|
||||
$btotal += $bloat;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$needsHeading) {
|
||||
printf "%-40s %10s %10s\n", ("TOTAL", $ltotal, $btotal);
|
||||
}
|
||||
|
||||
print "--------------------------------------------------------------------------------------\n";
|
||||
488
mozilla/tools/tinderbox/build-camino.pl
Normal file
488
mozilla/tools/tinderbox/build-camino.pl
Normal file
@@ -0,0 +1,488 @@
|
||||
#!/usr/bin/perl
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
#
|
||||
|
||||
#
|
||||
# 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;
|
||||
|
||||
sub checkout {
|
||||
my ($mozilla_build_dir) = @_;
|
||||
|
||||
# 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;
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
|
||||
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 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 = 1;
|
||||
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) {
|
||||
# Checkout/update the camino code.
|
||||
$status = checkout($mozilla_build_dir);
|
||||
TinderUtils::print_log("Status from checkout: $status\n");
|
||||
if ($status != 0) {
|
||||
$post_status = 'busted';
|
||||
}
|
||||
|
||||
# Build camino if we passed the checkout command.
|
||||
if ($post_status ne 'busted') {
|
||||
|
||||
#
|
||||
# Build embedding/config.
|
||||
#
|
||||
|
||||
chdir $embedding_dir;
|
||||
|
||||
if ($status == 0) {
|
||||
$status = TinderUtils::run_shell_command("make");
|
||||
TinderUtils::print_log("Status from make: $status\n");
|
||||
}
|
||||
|
||||
#
|
||||
# Build camino.
|
||||
#
|
||||
|
||||
chdir $camino_dir;
|
||||
|
||||
if ($status == 0) {
|
||||
TinderUtils::print_log("Deleting binary...\n");
|
||||
TinderUtils::DeleteBinary("$camino_dir/build/Camino.app/Contents/MacOS/$camino_binary");
|
||||
|
||||
# Always do a clean build; gecko dependencies don't work correctly
|
||||
# for Camino.
|
||||
|
||||
TinderUtils::print_log("Clobbering camino...\n");
|
||||
TinderUtils::run_shell_command("make clean");
|
||||
|
||||
$status = TinderUtils::run_shell_command("make");
|
||||
TinderUtils::print_log("Status from pbxbuild: $status\n");
|
||||
}
|
||||
|
||||
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/Chimera/Profiles/default for now.
|
||||
if ($camino_clean_profile) {
|
||||
# Warning: workaround camino bug, delete whole Camino dir.
|
||||
my $chim_profile_dir = "$ENV{HOME}/Library/Application Support/Chimera";
|
||||
#my $chim_profile_dir = "$ENV{HOME}/Library/Application Support/Chimera/Profiles/default";
|
||||
|
||||
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.
|
||||
}
|
||||
|
||||
# AliveTest for camino, about:blank
|
||||
if ($camino_alive_test and $post_status eq 'success') {
|
||||
|
||||
$post_status = TinderUtils::AliveTest("CaminoAliveTest",
|
||||
"$camino_dir/build/Camino.app/Contents/MacOS",
|
||||
["Camino", "-url", "about:blank"],
|
||||
45);
|
||||
}
|
||||
|
||||
# Find the prefs file, remember we have the secret/random salt dir,
|
||||
# e.g. /Users/cltbld/Library/Application Support/Chimera/Profiles/default/dyrs1ar8.slt/prefs.js
|
||||
# so File::Path::find will find the prefs.js file.
|
||||
#
|
||||
my $pref_file = "prefs.js";
|
||||
my $start_dir = "/Users/cltbld/Library/Application Support/Chimera/Profiles/default";
|
||||
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",
|
||||
"$camino_dir/build/Camino.app/Contents/MacOS",
|
||||
["Camino", "-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",
|
||||
["Camino", "-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",
|
||||
"Camino",
|
||||
"$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/",
|
||||
"./Camino",
|
||||
"-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;
|
||||
148
mozilla/tools/tinderbox/build-galeon.pl
Normal file
148
mozilla/tools/tinderbox/build-galeon.pl
Normal file
@@ -0,0 +1,148 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
#
|
||||
# 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;
|
||||
|
||||
package PostMozilla;
|
||||
|
||||
sub checkout {
|
||||
my ($mozilla_build_dir) = @_;
|
||||
|
||||
# chdir to build directory
|
||||
chdir "$mozilla_build_dir";
|
||||
|
||||
# Hack to get around po/ChangeLog cvs conflict bug in gettext lib.
|
||||
my $status = TinderUtils::run_shell_command("\\rm -f galeon/po/ChangeLog");
|
||||
|
||||
# Checkout galeon source. First set up cvsroot:
|
||||
# Both of these as of 10/2001 are kinda flakey:
|
||||
# $ENV{CVSROOT} = ":pserver:anonymous\@anoncvs.gnome.org:/cvs/gnome";
|
||||
# $ENV{CVSROOT} = ":pserver:anonymous@cvs.galeon.sourceforge.net:/cvsroot/galeon";
|
||||
#
|
||||
# Asked for direct cvs access and got it:
|
||||
$ENV{CVSROOT} = ":pserver:mcafee\@cvs.gnome.org:/cvs/gnome";
|
||||
|
||||
# Next, actually do the checkout:
|
||||
my $status = TinderUtils::run_shell_command("$Settings::CVS checkout galeon");
|
||||
|
||||
# hack in the galeon prefs, if needed
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
||||
|
||||
sub main {
|
||||
my ($mozilla_build_dir) = @_;
|
||||
|
||||
TinderUtils::print_log "Post-Mozilla build goes here.\n";
|
||||
|
||||
# Pending a config file, stuff things here.
|
||||
my $post_status = 'success'; # Success until we report a failure.
|
||||
my $status = 0; # 0 = success
|
||||
my $galeon_alive_test = 1;
|
||||
my $galeon_test8_test = 1;
|
||||
my $galeon_dir = "$mozilla_build_dir/galeon";
|
||||
my $galeon_binary = "galeon-bin";
|
||||
|
||||
# Checkout/update the galeon code.
|
||||
$status = checkout($mozilla_build_dir);
|
||||
TinderUtils::print_log "Status from checkout: $status\n";
|
||||
if ($status != 0) {
|
||||
$post_status = 'busted';
|
||||
}
|
||||
|
||||
# Build galeon if we passed the checkout command.
|
||||
if ($post_status ne 'busted') {
|
||||
# Build galeon.
|
||||
|
||||
chdir $galeon_dir;
|
||||
|
||||
# Make sure we have a configure
|
||||
unless (-e "configure" and $post_status ne 'busted') {
|
||||
$status = TinderUtils::run_shell_command("./autogen.sh");
|
||||
TinderUtils::print_log "Status from autogen: $status\n";
|
||||
}
|
||||
|
||||
# Not sure how to only do this when we need to.
|
||||
# Force a configure for now.
|
||||
if ($status == 0) {
|
||||
TinderUtils::print_log "configuring...\n";
|
||||
$status = TinderUtils::run_shell_command("./configure --sysconfdir=/etc --with-mozilla-libs=$mozilla_build_dir/mozilla/dist/bin --with-mozilla-includes=$mozilla_build_dir/mozilla/dist/include --with-nspr-includes=$mozilla_build_dir/mozilla/dist/include/nspr --with-mozilla-home=$mozilla_build_dir/mozilla/dist/bin");
|
||||
TinderUtils::print_log "Status from configure: $status\n";
|
||||
}
|
||||
|
||||
if ($status == 0) {
|
||||
TinderUtils::print_log "Deleting, gmake...\n";
|
||||
TinderUtils::DeleteBinary("$galeon_dir/src/$galeon_binary");
|
||||
|
||||
my $foo = Cwd::getcwd();
|
||||
TinderUtils::print_log "cwd = $foo\n";
|
||||
$status = TinderUtils::run_shell_command("gmake");
|
||||
TinderUtils::print_log "Status from gmake: $status\n";
|
||||
}
|
||||
|
||||
TinderUtils::print_log "Testing build status...\n";
|
||||
if ($status != 0) {
|
||||
TinderUtils::print_log "busted, gmake status non-zero\n";
|
||||
$post_status = 'busted';
|
||||
} elsif (not TinderUtils::BinaryExists("$galeon_dir/src/$galeon_binary")) {
|
||||
TinderUtils::print_log "Error: binary not found: $galeon_dir/src/$galeon_binary\n";
|
||||
$post_status = 'busted';
|
||||
} else {
|
||||
$post_status = 'success';
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Need a way to bypass initial setup dialog stuff, or
|
||||
# we'll need to manually run this by hand the first time.
|
||||
#
|
||||
# Also, have to set crash_recovery=0 in ~/.gnome/galeon to avoid
|
||||
# getting the crash dialog after the alive test times out.
|
||||
#
|
||||
|
||||
# Test galeon, about:blank
|
||||
if ($galeon_alive_test and $post_status eq 'success') {
|
||||
$post_status = TinderUtils::AliveTest("GaleonAliveTest",
|
||||
"$galeon_dir/src",
|
||||
["galeon", "about:blank"],
|
||||
45);
|
||||
}
|
||||
|
||||
# Test galeon, test8
|
||||
if ($galeon_test8_test and $post_status eq 'success') {
|
||||
$post_status = TinderUtils::AliveTest("GaleonTest8Test",
|
||||
"$galeon_dir/src",
|
||||
["galeon", "resource:///res/samples/test8.html"],
|
||||
45);
|
||||
}
|
||||
|
||||
# Startup test
|
||||
if ($galeon_startup_test and $post_status eq 'success') {
|
||||
TinderUtils::StartupPerformanceTest("GaleonStartupPerformanceTest",
|
||||
"galeon",
|
||||
"$galeon_dir/src",
|
||||
["", "$galeon_dir/src/../../../startup-test.html"]);
|
||||
|
||||
}
|
||||
|
||||
# Pass our status back to calling script.
|
||||
return $post_status;
|
||||
}
|
||||
|
||||
# Need to end with a true value, (since we're using "require").
|
||||
1;
|
||||
2666
mozilla/tools/tinderbox/build-seamonkey-util.pl
Normal file
2666
mozilla/tools/tinderbox/build-seamonkey-util.pl
Normal file
File diff suppressed because it is too large
Load Diff
338
mozilla/tools/tinderbox/build-seamonkey-win32.pl
Normal file
338
mozilla/tools/tinderbox/build-seamonkey-win32.pl
Normal file
@@ -0,0 +1,338 @@
|
||||
|
||||
#!d:/nstools/bin/perl5
|
||||
|
||||
use Cwd;
|
||||
|
||||
$build_depend=1; #depend or clobber
|
||||
$build_tree = '';
|
||||
$build_tag = '';
|
||||
$build_name = '';
|
||||
$build_continue = 0;
|
||||
$build_sleep=10;
|
||||
$no32 = 0;
|
||||
$original_path = $ENV{'PATH'};
|
||||
$early_exit = 1;
|
||||
$doawt11 = 0;
|
||||
|
||||
$do_clobber = '';
|
||||
$client_param = '';
|
||||
|
||||
&parse_args;
|
||||
|
||||
if( $build_test ){
|
||||
$build_sleep=1;
|
||||
}
|
||||
|
||||
$dirname = ($build_depend?'dep':'clob');
|
||||
|
||||
|
||||
$logfile = "${dirname}.log";
|
||||
|
||||
if( $build_depend ){
|
||||
$clobber_str = 'depend';
|
||||
}
|
||||
else {
|
||||
$clobber_str = 'clobber_all';
|
||||
}
|
||||
|
||||
|
||||
mkdir("$dirname", 0777);
|
||||
chdir("$dirname") || die "couldn't cd to $dirname";
|
||||
|
||||
$start_dir = cwd;
|
||||
$start_dir =~ s/\//\\/ ;
|
||||
$last_time = 0;
|
||||
|
||||
print "starting dir is: $start_dir\n";
|
||||
|
||||
while( $early_exit ){
|
||||
chdir("$start_dir");
|
||||
if( time - $last_time < (60 * $build_sleep) ){
|
||||
$sleep_time = (60 * $build_sleep) - (time - $last_time);
|
||||
print "\n\nSleeping $sleep_time seconds ...\n";
|
||||
sleep( $sleep_time );
|
||||
}
|
||||
$last_time = time;
|
||||
|
||||
$start_time = time;
|
||||
$start_time = adjust_start_time($start_time);
|
||||
$start_time_str = `unix_date +"%m/%d/%Y %H:%M"`;
|
||||
chop($start_time_str);
|
||||
# call setup_env here in the loop, to update MOZ_DATE with each pass.
|
||||
# setup_env uses start_time_str for MOZ_DATE.
|
||||
&setup_env;
|
||||
|
||||
$cur_dir = cwd;
|
||||
$cur_dir =~ s/\//\\/ ;
|
||||
|
||||
if( $cur_dir ne $start_dir ){
|
||||
print "startdir: $start_dir, curdir $cur_dir\n";
|
||||
die "curdir != startdir";
|
||||
}
|
||||
|
||||
if ($build_test) {
|
||||
$early_exit = 0; # stops this while loop after one pass.
|
||||
}
|
||||
|
||||
# strip_conf fails to strip any variables from the real environemnt
|
||||
# &strip_config;
|
||||
&do_build(1,$do_clobber);
|
||||
# &restore_config;
|
||||
|
||||
}
|
||||
|
||||
sub setup32 {
|
||||
local ($awt) = @_;
|
||||
|
||||
$ENV{"MOZ_BITS"} = '32';
|
||||
$ENV{"WINOS"} = 'WINNT';
|
||||
$ENV{"STANDALONE_IMAGE_LIB"} = '1';
|
||||
$ENV{"MODULAR_NETLIB"} = '1';
|
||||
$ENV{"OS_TARGET"} = 'WIN95';
|
||||
$ENV{"PATH"} = $original_path;
|
||||
$ENV{"_MSC_VER"} = '1200';
|
||||
$moz_src = $ENV{'MOZ_SRC'} = $start_dir;
|
||||
$build_name = 'Win32 VC6.0' . ($build_depend?'Depend':'Clobber');
|
||||
$do_clobber = $clobber_str;
|
||||
$logname = "win32.log";
|
||||
}
|
||||
|
||||
|
||||
sub do_build {
|
||||
local ($pull, $do_clobber) = @_;
|
||||
|
||||
print "pull = $pull, do_clobber = $do_clobber\n";
|
||||
&start_build;
|
||||
|
||||
print "opening log file ${logname}\n";
|
||||
open( LOG, ">${logname}" ) || print "can't open $logname\n";
|
||||
print LOG "current dir is: $cur_dir\n";
|
||||
|
||||
&print_env;
|
||||
$build_status = 0;
|
||||
if( $pull ){
|
||||
if ( $build_tag eq '' ){
|
||||
# print LOG "cvs -d %MOZ_CVSROOT% co -A mozilla/config 2>&1 |\n";
|
||||
# open( PULL, "cvs -d %MOZ_CVSROOT% co -A mozilla/config 2>&1 |") || print "couldn't execute cvs\n";;
|
||||
print LOG "cvs -d $moz_cvsroot co -A mozilla/client.mak 2>&1 |\n";
|
||||
open( PULL, "cvs -d $moz_cvsroot co -A mozilla/client.mak 2>&1 |") || print "couldn't execute cvs\n";;
|
||||
} else{
|
||||
print LOG "cvs -d $moz_cvsroot co -A -r $build_tag mozilla/config 2>&1 |\n";
|
||||
open( PULL, "cvs -d $moz_cvsroot co -A -r $build_tag mozilla/config 2>&1 |") || print "couldn't execute cvs\n";;
|
||||
print LOG "cvs -d $moz_cvsroot co -A -r $build_tag mozilla/client.mak 2>&1 |\n";
|
||||
open( PULL, "cvs -d $moz_cvsroot co -A -r $build_tag mozilla/client.mak 2>&1 |") || print "couldn't execute cvs\n";;
|
||||
}
|
||||
|
||||
# tee the output
|
||||
while( <PULL> ){
|
||||
print $_;
|
||||
print LOG $_;
|
||||
}
|
||||
close( PULL );
|
||||
|
||||
$build_status = $?;
|
||||
}
|
||||
|
||||
chdir("$moz_src/mozilla") || die "couldn't chdir to '$moz_src/mozilla'";
|
||||
|
||||
# if( $do_clobber ne '' ){
|
||||
# print LOG "nmake -f client.mak $do_clobber |\n";
|
||||
# print "nmake -f client.mak $do_clobber |\n";
|
||||
# open( CLOBBER, "nmake -f client.mak $do_clobber 2>&1 |") || print "couldn't execute nmake\n";;
|
||||
|
||||
# tee the output
|
||||
# while( <CLOBBER> ){
|
||||
# print $_;
|
||||
# print LOG $_;
|
||||
# }
|
||||
# close( CLOBBER );
|
||||
# }
|
||||
|
||||
|
||||
if (!$pull) {
|
||||
$client_param = $do_clobber . ' build_all';
|
||||
}
|
||||
else {
|
||||
$client_param = 'pull_all ' . $do_clobber . ' build_all';
|
||||
}
|
||||
|
||||
print LOG "nmake -f client.mak $client_param 2>&1 |\n";
|
||||
open( BUILD, "nmake -f client.mak $client_param 2>&1 |");
|
||||
|
||||
# tee the output
|
||||
while( <BUILD> ){
|
||||
print $_;
|
||||
print LOG $_;
|
||||
}
|
||||
close( BUILD );
|
||||
$build_status |= $?;
|
||||
$build_status_str = ( $build_status ? 'busted' : 'success' );
|
||||
|
||||
print LOG "\n";
|
||||
print LOG "tinderbox: tree: $build_tree\n";
|
||||
print LOG "tinderbox: builddate: $start_time\n";
|
||||
print LOG "tinderbox: status: $build_status_str\n";
|
||||
print LOG "tinderbox: build: $build_name\n";
|
||||
print LOG "tinderbox: errorparser: windows\n";
|
||||
print LOG "tinderbox: buildfamily: windows\n";
|
||||
|
||||
close( LOG );
|
||||
chdir("$start_dir");
|
||||
system( "$nstools\\bin\\blat ${logname} -t tinderbox-daemon\@cvs-mirror.mozilla.org" );
|
||||
|
||||
# we should save at least one log back
|
||||
system("copy ${logname} last-${logname}");
|
||||
}
|
||||
|
||||
sub cvs_time {
|
||||
local( $ret_time );
|
||||
|
||||
($sec,$minute,$hour,$mday,$mon,$year) = localtime( $_[0] );
|
||||
$mon++; # month is 0 based.
|
||||
|
||||
sprintf("%02d/%02d/%04d %02d:%02d:00",
|
||||
$mon,$mday,$year,$hour,$minute );
|
||||
}
|
||||
|
||||
|
||||
sub start_build {
|
||||
open( LOG, ">logfile" );
|
||||
print LOG "\n";
|
||||
print LOG "tinderbox: tree: $build_tree\n";
|
||||
print LOG "tinderbox: builddate: $start_time\n";
|
||||
print LOG "tinderbox: status: building\n";
|
||||
print LOG "tinderbox: build: $build_name\n";
|
||||
print LOG "tinderbox: errorparser: windows\n";
|
||||
print LOG "tinderbox: buildfamily: windows\n";
|
||||
print LOG "\n";
|
||||
close( LOG );
|
||||
system("$nstools\\bin\\blat logfile -t tinderbox-daemon\@cvs-mirror.mozilla.org" );
|
||||
}
|
||||
|
||||
sub parse_args {
|
||||
local($i);
|
||||
|
||||
if( @ARGV == 0 ){
|
||||
&usage;
|
||||
}
|
||||
$i = 0;
|
||||
while( $i < @ARGV ){
|
||||
if( $ARGV[$i] eq '--depend' ){
|
||||
$build_depend = 1;
|
||||
}
|
||||
elsif ( $ARGV[$i] eq '--clobber' ){
|
||||
$build_depend = 0;
|
||||
}
|
||||
elsif ( $ARGV[$i] eq '--continue' ){
|
||||
$build_continue = 1;
|
||||
}
|
||||
elsif ( $ARGV[$i] eq '--test' ){
|
||||
$build_test = 1;
|
||||
}
|
||||
elsif ( $ARGV[$i] eq '-tag' ){
|
||||
$i++;
|
||||
$build_tag = $ARGV[$i];
|
||||
if( $build_tag eq '' || $build_tag eq '-t'){
|
||||
&usage;
|
||||
}
|
||||
}
|
||||
elsif ( $ARGV[$i] eq '-t' ){
|
||||
$i++;
|
||||
$build_tree = $ARGV[$i];
|
||||
if( $build_tree eq '' ){
|
||||
&usage;
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if( $build_tree eq '' ){
|
||||
&usage;
|
||||
}
|
||||
}
|
||||
|
||||
sub usage {
|
||||
die "usage: buildit.pl [--depend | --clobber] [--continue] [--test] [-tag TAGNAME] -t TREENAME\n";
|
||||
}
|
||||
|
||||
sub setup_env {
|
||||
local($p);
|
||||
|
||||
# $ENV{"MOZ_DEBUG"} = '1';
|
||||
$ENV{"MOZ_MFC"} = '1';
|
||||
$ENV{"CVSROOT"} = ':pserver:cltbld%netscape.com@cvs.mozilla.org:/cvsroot';
|
||||
$moz_cvsroot = $ENV{"CVSROOT"};
|
||||
# $ENV{"MOZ_EDITOR"} = '1';
|
||||
$ENV{"VERBOSE"} = '1';
|
||||
$ENV{"NGLAYOUT_PLUGINS"} = '1';
|
||||
$nstools = $ENV{"MOZ_TOOLS"};
|
||||
if( $nstools eq '' ){
|
||||
print "warning: environment variable MOZ_TOOLS not set\n";
|
||||
$ENV{"MOZ_TOOLS"} = 'C:\nstools';
|
||||
$nstools = $ENV{"MOZ_TOOLS"};
|
||||
print "using MOZ_TOOLS = $nstools \n";
|
||||
|
||||
}
|
||||
# $msdev = $ENV{"MOZ_MSDEV"} = 'c:\msdev';
|
||||
# if( $msdev eq '' ){
|
||||
# die "error: environment variable MOZ_MSDEV not set\n";
|
||||
# }
|
||||
# $msvc = $ENV{"MOZ_MSVC"} = 'c:\msvc';
|
||||
# if( $msvc eq '' ){
|
||||
# die "error: environment variable MOZ_VC not set\n";
|
||||
# }
|
||||
if ( $build_tag ne '' ) {
|
||||
$ENV{"MOZ_BRANCH"} = $build_tag;
|
||||
}
|
||||
$moz_src = $ENV{"MOZ_SRC"} = $start_dir;
|
||||
# $ENV{"INCLUDE"}='c:\devstudio\vc\lib;C:\DevStudio\VC\INCLUDE;C:\DevStudio\VC\MFC\INCLUDE;C:\DevStudio\VC\lib;C:\DevStudio\VC\ATL\INCLUDE';
|
||||
# $ENV{"LIB"}='C:\DevStudio\VC\MFC\LIB;C:\DevStudio\VC\lib';
|
||||
# $ENV{"PATH"}='C:\DevStudio\SharedIDE\BIN;C:\DevStudio\VC\bin;C:\DevStudio\VC\lib;C:\DevStudio\VC\BIN\WINNT;.;%MOZ_TOOLS%\perl5\bin;C:\WINNT\system32;C:\WINNT;c:\usr\local\bin;%MOZ_TOOLS%\bin';
|
||||
##
|
||||
## We should pull by date to avoid mid-checkin disasters
|
||||
##
|
||||
$ENV{"MOZ_DATE"} = $start_time_str;
|
||||
|
||||
&setup32
|
||||
}
|
||||
|
||||
sub print_env {
|
||||
local( $k, $v);
|
||||
print LOG "\nEnvironment\n";
|
||||
print "\nEnvironment\n";
|
||||
for $k (sort keys %ENV){
|
||||
$v = $ENV{$k};
|
||||
print LOG " $k=$v\n";
|
||||
print " $k=$v\n";
|
||||
}
|
||||
print LOG "\n";
|
||||
print "\n";
|
||||
system 'set';
|
||||
}
|
||||
|
||||
sub strip_config {
|
||||
$save_compname=$ENV{"COMPUTERNAME"};
|
||||
$save_userdomain=$ENV{"USERDOMAIN"};
|
||||
$save_username=$ENV{"USERNAME"};
|
||||
$save_userprofile=$ENV{"USERPROFILE"};
|
||||
}
|
||||
|
||||
sub restore_config {
|
||||
$ENV{"COMPUTERNAME"}=$save_compname;
|
||||
$ENV{"USERDOMAIN"}=$save_userdomain;
|
||||
$ENV{"USERNAME"}=$save_username;
|
||||
$ENV{"MSDevDir"}=$save_userprofile;
|
||||
&print_env;
|
||||
}
|
||||
|
||||
sub adjust_start_time {
|
||||
# Allows the start time to match up with the update times of a mirror.
|
||||
my ($start_time) = @_;
|
||||
|
||||
# Since we are not pulling for cvs-mirror anymore, just round times
|
||||
# to 1 minute intervals to make them nice and even.
|
||||
my $cycle = 1 * 60; # Updates every 1 minutes.
|
||||
my $begin = 0 * 60; # Starts 0 minutes after the hour.
|
||||
my $lag = 0 * 60; # Takes 0 minute to update.
|
||||
return int(($start_time - $begin - $lag) / $cycle) * $cycle + $begin;
|
||||
}
|
||||
|
||||
36
mozilla/tools/tinderbox/build-seamonkey.pl
Executable file
36
mozilla/tools/tinderbox/build-seamonkey.pl
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/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";
|
||||
|
||||
use strict;
|
||||
|
||||
# "use strict" complains if we do not define these.
|
||||
# They are not initialized here. The default values are after "__END__".
|
||||
$TreeSpecific::name = $TreeSpecific::checkout_target = $TreeSpecific::checkout_clobber_target = $::Version = undef;
|
||||
|
||||
$::Version = '$Revision: 1.100 $ ';
|
||||
|
||||
{
|
||||
TinderUtils::Setup();
|
||||
tree_specific_overides();
|
||||
TinderUtils::Build();
|
||||
}
|
||||
|
||||
# End of main
|
||||
#======================================================================
|
||||
|
||||
|
||||
|
||||
sub tree_specific_overides {
|
||||
|
||||
$TreeSpecific::name = 'mozilla';
|
||||
$TreeSpecific::checkout_target = '';
|
||||
$TreeSpecific::checkout_clobber_target = "checkout realclean build";
|
||||
|
||||
}
|
||||
|
||||
|
||||
18
mozilla/tools/tinderbox/examples/mozconfig
Normal file
18
mozilla/tools/tinderbox/examples/mozconfig
Normal file
@@ -0,0 +1,18 @@
|
||||
# Turning on security
|
||||
#
|
||||
ac_add_options --enable-crypto
|
||||
#
|
||||
# Add all extensions
|
||||
#
|
||||
ac_add_options --enable-extensions=all
|
||||
#
|
||||
# Optimized
|
||||
#
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --disable-debug
|
||||
#
|
||||
# Bloat stats/optimized needs these:
|
||||
#
|
||||
#ac_add_options --enable-logrefcnt
|
||||
#ac_add_options --enable-perf-metrics
|
||||
#
|
||||
38
mozilla/tools/tinderbox/examples/tinder-config.pl
Normal file
38
mozilla/tools/tinderbox/examples/tinder-config.pl
Normal file
@@ -0,0 +1,38 @@
|
||||
#- tinder-config.pl - Tinderbox configuration file.
|
||||
#- Uncomment the variables you need to set.
|
||||
#- The default values are the same as the commented variables
|
||||
|
||||
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
|
||||
$BuildAdministrator = 'mcafee@mocha.com';
|
||||
|
||||
#- You'll need to change these to suit your machine's needs
|
||||
$DisplayServer = ':0.0'; # costarica:0.0
|
||||
|
||||
#- Until you get the script working. When it works,
|
||||
#- change to the tree you're actually building
|
||||
$BuildTree = 'MozillaTest';
|
||||
#$BuildTree = 'SeaMonkey';
|
||||
|
||||
$AliveTest = 1;
|
||||
$ViewerTest = 0;
|
||||
$BloatTest = 0;
|
||||
$BloatTest2 = 0;
|
||||
$DomToTextConversionTest = 0;
|
||||
$EmbedTest = 0;
|
||||
$MailNewsTest = 0;
|
||||
$LayoutPerformanceTest = 0;
|
||||
$StartupPerformanceTest = 0;
|
||||
|
||||
$MozProfileName = "default";
|
||||
$BloatTestTimeout = 240; # seconds
|
||||
$LayoutPerformanceTestTimeout = 1400; # seconds
|
||||
$StartupPerformanceTestTimeout = 60; # seconds
|
||||
|
||||
# Testing...
|
||||
# $TestOnly = 1;
|
||||
# $ObjDir = 'obj-i686-unknown-linux-gnu';
|
||||
|
||||
$UserComment = "Sample tinder-config.pl, changeme!";
|
||||
|
||||
# Need to end with a true value
|
||||
1;
|
||||
63
mozilla/tools/tinderbox/examples/tinder-config.pl.branch
Normal file
63
mozilla/tools/tinderbox/examples/tinder-config.pl.branch
Normal file
@@ -0,0 +1,63 @@
|
||||
#- tinder-config.pl - Tinderbox configuration file.
|
||||
#- Uncomment the variables you need to set.
|
||||
#- The default values are the same as the commented variables.
|
||||
|
||||
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
|
||||
$BuildAdministrator = "mcafee\@netscape.com";
|
||||
|
||||
#- You'll need to change these to suit your machine's needs
|
||||
$DisplayServer = 'costarica.mcom.com:0.0';
|
||||
|
||||
#- Default values of command-line opts
|
||||
#-
|
||||
$BuildDepend = 1; # Depend or Clobber
|
||||
$ReportStatus = 1; # Send results to server, or not
|
||||
$ReportFinalStatus = 1; # Finer control over $ReportStatus.
|
||||
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
|
||||
#$BuildOnce = 0; # Build once, don't send results to server
|
||||
#$RunTest = 1; # Run the smoke tests on successful build, or not
|
||||
#$TestOnly = 0; # Only run tests, don't pull/build
|
||||
|
||||
# Tests
|
||||
$AliveTest = 1;
|
||||
$ViewerTest = 1;
|
||||
$BloatTest = 1;
|
||||
$DomToTextConversionTest = 1;
|
||||
$MailNewsTest = 0;
|
||||
#$MozConfigFileName = 'mozconfig';
|
||||
#$MozProfileName = 'default';
|
||||
$BloatTestTimeout = 240;
|
||||
$DomTestTimeout = 45;
|
||||
|
||||
#- Set these to what makes sense for your system
|
||||
$Make = 'gmake'; # Must be GNU make
|
||||
#$MakeOverrides = '';
|
||||
$mail = '/bin/mail';
|
||||
$CVS = 'cvs -q';
|
||||
$CVSCO = 'checkout -P';
|
||||
|
||||
#- Set these proper values for your tinderbox server
|
||||
$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
|
||||
|
||||
#-
|
||||
#- The rest should not need to be changed
|
||||
#-
|
||||
|
||||
#- Minimum wait period from start of build to start of next build in minutes.
|
||||
#$BuildSleep = 10;
|
||||
|
||||
#- Until you get the script working. When it works,
|
||||
#- change to the tree you're actually building
|
||||
$BuildTree = 'SeaMonkey-Branch';
|
||||
|
||||
#$BuildName = '';
|
||||
$BuildTag = 'MOZILLA_0_9_1_BRANCH';
|
||||
#$BuildConfigDir = 'mozilla/config';
|
||||
#$Topsrcdir = 'mozilla';
|
||||
#$BinaryName = 'mozilla-bin';
|
||||
#$ShellOverride = ''; # Only used if the default shell is too stupid
|
||||
#$ConfigureArgs = '';
|
||||
#$ConfigureEnvArgs = '';
|
||||
#$Compiler = 'gcc';
|
||||
#$NSPRArgs = '';
|
||||
#$ShellOverride = '';
|
||||
73
mozilla/tools/tinderbox/gettime.pl
Normal file
73
mozilla/tools/tinderbox/gettime.pl
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# Use high resolution routines if installed (on win32 or linux), using
|
||||
# eval as try/catch block around import of modules. Otherwise, just use 'time()'.
|
||||
#
|
||||
# 'Win32::API' <http://www.activestate.com/PPMPackages/zips/5xx-builds-only/Win32-API.zip>
|
||||
# 'Time::HiRes' <http://search.cpan.org/search?dist=Time-HiRes>
|
||||
# (also: http://rpmfind.net/linux/rpm2html/search.php?query=perl-Time-HiRes)
|
||||
#
|
||||
package Time::PossiblyHiRes;
|
||||
|
||||
use strict;
|
||||
|
||||
#use Time::HiRes qw(gettimeofday);
|
||||
|
||||
my $getLocalTime; # for win32
|
||||
my $lpSystemTime = pack("SSSSSSSS"); # for win32
|
||||
my $timesub; # code ref
|
||||
|
||||
# returns 12 char string "'s'x9.'m'x3" which is milliseconds since epoch,
|
||||
# although resolution may vary depending on OS and installed packages
|
||||
|
||||
sub getTime () {
|
||||
|
||||
return &$timesub
|
||||
if $timesub;
|
||||
|
||||
$timesub = sub { time() . "000"; }; # default
|
||||
|
||||
return &$timesub
|
||||
if $^O eq "MacOS"; # don't know a better way on Mac
|
||||
|
||||
if ($^O eq "MSWin32") {
|
||||
eval "use Win32::API;";
|
||||
$timesub = sub {
|
||||
# pass pointer to struct, void return
|
||||
$getLocalTime =
|
||||
eval "new Win32::API('kernel32', 'GetLocalTime', [qw{P}], qw{V});"
|
||||
unless $getLocalTime;
|
||||
$getLocalTime->Call($lpSystemTime);
|
||||
my @t = unpack("SSSSSSSS", $lpSystemTime);
|
||||
sprintf("%9s%03s", time(), pop @t);
|
||||
} if !$@;
|
||||
}
|
||||
|
||||
# ass-u-me if not mac/win32, then we're on a unix flavour
|
||||
else {
|
||||
eval "use Time::HiRes qw(gettimeofday);";
|
||||
$timesub = sub {
|
||||
my @t = gettimeofday();
|
||||
$t[0]*1000 + int($t[1]/1000);
|
||||
} if !$@;
|
||||
}
|
||||
|
||||
return &$timesub;
|
||||
|
||||
}
|
||||
|
||||
#
|
||||
#
|
||||
# Test script to compare with low-res time:
|
||||
#
|
||||
# require "gettime.pl";
|
||||
#
|
||||
# use POSIX qw(strftime);
|
||||
#
|
||||
# print "hires time = " . Time::PossiblyHiRes::getTime() . "\n";
|
||||
# print "lowres time = " . time() . "\n";
|
||||
#
|
||||
|
||||
|
||||
# end package
|
||||
1;
|
||||
14
mozilla/tools/tinderbox/install-links
Executable file
14
mozilla/tools/tinderbox/install-links
Executable file
@@ -0,0 +1,14 @@
|
||||
#! /bin/csh -f
|
||||
|
||||
#
|
||||
# Create links to install tinderbox stuff.
|
||||
#
|
||||
|
||||
ln -s ../mozilla/tools/tinderbox/tinderbox
|
||||
ln -s ../mozilla/tools/tinderbox/build-seamonkey.pl
|
||||
ln -s ../mozilla/tools/tinderbox/build-seamonkey-util.pl
|
||||
ln -s ../mozilla/tools/tinderbox/gettime.pl
|
||||
ln -s ../mozilla/tools/tinderbox/bloatdiff.pl
|
||||
ln -s ../mozilla/tools/tinderbox/tinder-defaults.pl
|
||||
ln -s ../mozilla/tools/tinderbox/reportdata.pl
|
||||
|
||||
75
mozilla/tools/tinderbox/multi-tinderbox.pl
Executable file
75
mozilla/tools/tinderbox/multi-tinderbox.pl
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/perl
|
||||
# vim:sw=4:et:ts=4:ai:
|
||||
|
||||
use strict;
|
||||
|
||||
sub PrintUsage() {
|
||||
die <<END_USAGE
|
||||
usage: $0 [options]
|
||||
Options:
|
||||
--example-config Instead of running, print an example
|
||||
'multi-config.pl' to help get started.
|
||||
END_USAGE
|
||||
}
|
||||
|
||||
sub PrintExample() {
|
||||
print <<END_EXAMPLE
|
||||
# multi-config.pl
|
||||
\$BuildSleep = 10; # minutes
|
||||
\$Tinderboxes = [ { tree => "SeaMonkey", args => "--depend --mozconfig mozconfig" }, { tree => "SeaMonkey-Branch", args => "--depend --mozconfig mozconfig" } ];
|
||||
END_EXAMPLE
|
||||
;
|
||||
exit;
|
||||
}
|
||||
|
||||
sub HandleArgs() {
|
||||
return if ($#ARGV == -1);
|
||||
PrintUsage() if ($#ARGV != 0 || $ARGV[0] ne "--example-config");
|
||||
PrintExample();
|
||||
}
|
||||
|
||||
sub LoadConfig() {
|
||||
if (-r 'multi-config.pl') {
|
||||
no strict 'vars';
|
||||
|
||||
open CONFIG, 'multi-config.pl' or
|
||||
print "can't open multi-config.pl, $?\n";
|
||||
|
||||
while (<CONFIG>) {
|
||||
package Settings;
|
||||
eval;
|
||||
}
|
||||
|
||||
close CONFIG;
|
||||
} else {
|
||||
warn "Error: Need tinderbox config file, multi-config.pl\n";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub Run() {
|
||||
my $start_time = 0;
|
||||
while (1) {
|
||||
# $BuildSleep is the minimum amount of time a build is allowed to take.
|
||||
# It prevents sending too many messages to the tinderbox server when
|
||||
# something is broken.
|
||||
my $sleep_time = ($Settings::BuildSleep * 60) - (time() - $start_time);
|
||||
if ($sleep_time > 0) {
|
||||
print "\n\nSleeping $sleep_time seconds ...\n";
|
||||
sleep $sleep_time;
|
||||
}
|
||||
$start_time = time();
|
||||
|
||||
foreach my $treeentry (@{$Settings::Tinderboxes}) {
|
||||
chdir($treeentry->{tree}) or
|
||||
die "Tree $treeentry->{tree} does not exist";
|
||||
system("./build-seamonkey.pl --once $treeentry->{args}");
|
||||
chdir("..");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HandleArgs();
|
||||
LoadConfig();
|
||||
Run();
|
||||
179
mozilla/tools/tinderbox/post-mozilla-linux-release.pl
Executable file
179
mozilla/tools/tinderbox/post-mozilla-linux-release.pl
Executable file
@@ -0,0 +1,179 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
#
|
||||
# This script gets called after a full mozilla build & test.
|
||||
# Use this to build and test an embedded or commercial branding of Mozilla.
|
||||
#
|
||||
# Edit, and rename this file to post-mozilla.pl to activate.
|
||||
# ./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
|
||||
#
|
||||
# Contributors:
|
||||
# leaf@mozilla.org - release processing/packaging/uploading
|
||||
|
||||
# Assumptions:
|
||||
# no objdir
|
||||
# ssh-agent running or empty passphrase RSA key
|
||||
#
|
||||
|
||||
use strict;
|
||||
|
||||
package PostMozilla;
|
||||
|
||||
sub print_log {
|
||||
my ($text) = @_;
|
||||
print LOG $text;
|
||||
print $text;
|
||||
}
|
||||
|
||||
# Cache builds in a dated directory if:
|
||||
# * The hour of the day is $Settings::build_hour or higher
|
||||
# (set in tinder-config.pl)
|
||||
# -and-
|
||||
# * the "last-built" file indicates a day before today's date
|
||||
#
|
||||
sub cacheit {
|
||||
my ($c_hour, $c_yday, $target_hour, $last_build_day) = @_;
|
||||
TinderUtils::print_log "current hour = $c_hour\n";
|
||||
TinderUtils::print_log "target hour = $target_hour\n";
|
||||
TinderUtils::print_log "current julian day = $c_yday\n";
|
||||
TinderUtils::print_log "last build julian day = $last_build_day\n";
|
||||
if (($c_hour > $target_hour) &&
|
||||
(($last_build_day < $c_yday) || ($c_yday == 0))) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub returnStatus{
|
||||
# build-anvil-util.pl expects an array, if no package is uploaded,
|
||||
# a single-element array with 'busted', 'testfailed', or 'success' works.
|
||||
my ($logtext, @status) = @_;
|
||||
TinderUtils::print_log "$logtext\n";
|
||||
return @status;
|
||||
}
|
||||
|
||||
sub pushit {
|
||||
my ($ssh_server,$upload_path,$upload_target) = @_;
|
||||
# need to convert the path in case we're using activestate perl
|
||||
# check for platform
|
||||
#my $upload_target_dos = `cygpath -w $upload_target`;
|
||||
#chop($upload_target_dos);
|
||||
|
||||
unless ( -e $upload_target) {
|
||||
TinderUtils::print_log "No $upload_target to upload\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
#for leaf
|
||||
TinderUtils::run_shell_command "ssh -1 -i /home/leaf/.ssh/cltbld/.ssh/identity -l cltbld $ssh_server mkdir -p $upload_path";
|
||||
TinderUtils::run_shell_command "scp -i /home/leaf/.ssh/cltbld/.ssh/identity -oProtocol=1 -r $upload_target cltbld\@$ssh_server:$upload_path";
|
||||
TinderUtils::run_shell_command "ssh -1 -i /home/leaf/.ssh/cltbld/.ssh/identity -l cltbld $ssh_server chmod -R 755 $upload_path/$upload_target";
|
||||
|
||||
# for cltbld
|
||||
#TinderUtils::run_shell_command "ssh -1 -l cltbld $ssh_server mkdir -p $upload_path";
|
||||
#TinderUtils::run_shell_command "scp -oProtocol=1 $upload_target cltbld\@$ssh_server:$upload_path";
|
||||
#TinderUtils::run_shell_command "ssh -1 -l cltbld $ssh_server chmod -R 755 $upload_path";
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub process_talkback {
|
||||
# this is where we
|
||||
# * generate a master.ini
|
||||
# * upload symbol-files
|
||||
# * shove talkback files into dist for packaging.
|
||||
#
|
||||
|
||||
}
|
||||
|
||||
sub make_packages {
|
||||
my ($build_dir, $build_date) = @_;
|
||||
my $save_dir = `pwd`;
|
||||
|
||||
#DEBUG_LEAF
|
||||
print_log "current directory is $save_dir\n";
|
||||
print_log "cd to $build_dir/$Settings::Topsrcdir/xpinstall\n";
|
||||
#end DEBUG_LEAF
|
||||
|
||||
chdir "$build_dir/$Settings::Topsrcdir/xpinstall";
|
||||
$ENV{"INSTALLER_URL"} = "http://ftp.mozilla.org/pub/mozilla.org/pub/mozilla/tinderbox-builds/$build_date";
|
||||
system "make installer";
|
||||
# if ($DEBUG_LEAF) {
|
||||
print_log "post |make installer|\n";
|
||||
# DEBUG_LEAF
|
||||
chdir $save_dir;
|
||||
|
||||
}
|
||||
|
||||
sub push_to_stage {
|
||||
my ($build_dir, $build_date) = @_;
|
||||
my $save_dir = `pwd`;
|
||||
chdir "$build_dir/$Settings::Topsrcdir/installer";
|
||||
mkdir $build_date;
|
||||
system "cp sea/* $build_date";
|
||||
system "cp stub/* $build_date";
|
||||
system "cp -r raw/xpi $build_date/linux-xpi";
|
||||
pushit ("stage.mozilla.org", "/home/ftp/pub/mozilla/tinderbox-builds", $build_date);
|
||||
chdir $save_dir;
|
||||
|
||||
}
|
||||
|
||||
sub pad_digit {
|
||||
my ($digit) = @_;
|
||||
if ($digit < 10) { return "0" . $digit };
|
||||
return $digit;
|
||||
}
|
||||
|
||||
sub main {
|
||||
# Get build directory from caller.
|
||||
my ($mozilla_build_dir) = @_;
|
||||
|
||||
#
|
||||
# (0: $sec, 1: $min, 2: $hour, 3: $mday, 4: $mon, 5: $year,
|
||||
# 6: $wday, 7: $yday, 8: $isdst)
|
||||
my ($hour, $mday, $mon, $year, $yday) = (localtime (time)) [2,3,4,5,7];
|
||||
$year = $year + 1900;
|
||||
$mon = $mon + 1;
|
||||
$hour = pad_digit ($hour);
|
||||
$mday = pad_digit ($mday);
|
||||
$mon = pad_digit ($mon);
|
||||
my $build_date = "$year-$mon-$mday-$hour";
|
||||
#
|
||||
my $last_build_day = -1;
|
||||
if ( -e "$mozilla_build_dir/last-built"){
|
||||
($last_build_day) = (localtime((stat "$mozilla_build_dir/last-built")[9]))[7];
|
||||
}
|
||||
|
||||
print_log "build dir is $mozilla_build_dir \n";
|
||||
TinderUtils::print_log "Post-Mozilla build goes here.\n";
|
||||
|
||||
# someday, we'll have talkback
|
||||
#process_talkback;
|
||||
|
||||
make_packages ($mozilla_build_dir, $build_date);
|
||||
if (cacheit($hour, $yday, "8", $last_build_day)) {
|
||||
push_to_stage ($mozilla_build_dir, $build_date);
|
||||
unlink "$mozilla_build_dir/last-built";
|
||||
open BLAH, ">$mozilla_build_dir/last-built";
|
||||
close BLAH;
|
||||
}
|
||||
|
||||
# Report some kind of status to parent script.
|
||||
#
|
||||
# {'busted', 'testfailed', 'success'}
|
||||
#
|
||||
|
||||
# Report a fake success, for example's sake.
|
||||
# Eventually return an array
|
||||
&returnStatus (('success'));
|
||||
}
|
||||
|
||||
# Need to end with a true value, (since we're using "require").
|
||||
1;
|
||||
46
mozilla/tools/tinderbox/post-mozilla-sample.pl
Executable file
46
mozilla/tools/tinderbox/post-mozilla-sample.pl
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
|
||||
#
|
||||
# This script gets called after a full mozilla build & test.
|
||||
# Use this to build and test an embedded or commercial branding of Mozilla.
|
||||
#
|
||||
# Edit, and rename this file to post-mozilla.pl to activate.
|
||||
# ./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
|
||||
#
|
||||
|
||||
use strict;
|
||||
|
||||
package PostMozilla;
|
||||
|
||||
|
||||
sub main {
|
||||
# Get build directory from caller.
|
||||
my ($mozilla_build_dir) = @_;
|
||||
|
||||
|
||||
TinderUtils::print_log "Post-Mozilla build goes here.\n";
|
||||
|
||||
#
|
||||
# Build script goes here.
|
||||
#
|
||||
|
||||
# Report some kind of status to parent script.
|
||||
#
|
||||
# {'busted', 'testfailed', 'success'}
|
||||
#
|
||||
|
||||
# Report a fake success, for example's sake.
|
||||
# we return a list because sometimes we pass back a status *and*
|
||||
# a url to a binary location, e.g.:
|
||||
# return ('success', 'http://upload.host.org/path/to/binary');
|
||||
# tinderbox processes the binary url and links to it in the log.
|
||||
return ('success');
|
||||
}
|
||||
|
||||
# Need to end with a true value, (since we're using "require").
|
||||
1;
|
||||
362
mozilla/tools/tinderbox/qatest.pl
Executable file
362
mozilla/tools/tinderbox/qatest.pl
Executable file
@@ -0,0 +1,362 @@
|
||||
#!/usr/bin/perl -w
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
#
|
||||
###################################################################
|
||||
# Report Summary Generator for ARMS v2.0 by Vladimir Ermakov
|
||||
###################################################################
|
||||
# This file parses through a results file and generates a
|
||||
# test summary giving the following info:
|
||||
# # of tcs passed
|
||||
# # of tcs failed
|
||||
# # of tcs died
|
||||
# % of pass and fail
|
||||
# List of testcases that failed.
|
||||
# Separates the results into suites with a convinient quick link
|
||||
# at the top of the page
|
||||
###################################################################
|
||||
# Questions Coments go to vladimire@netscape.com
|
||||
###################################################################
|
||||
|
||||
sub PrintUsage {
|
||||
die <<END_USAGE
|
||||
usage: $0 <filename> ["express"]
|
||||
END_USAGE
|
||||
}
|
||||
|
||||
if ($#ARGV < 0) {
|
||||
PrintUsage();
|
||||
}
|
||||
|
||||
my $DATAFILE = $ARGV[0];
|
||||
my $MODE;
|
||||
|
||||
if($#ARGV > 0) {
|
||||
$MODE = $ARGV[1];
|
||||
} else {
|
||||
$MODE = "";
|
||||
}
|
||||
|
||||
my $express = 0;
|
||||
|
||||
if($MODE eq "express") {
|
||||
$express = 1;
|
||||
}
|
||||
|
||||
my $ngdir = "http://geckoqa.mcom.com/ngdriver/"; #$input->url(-base=>1) . "/ngdriver/";
|
||||
my $ngsuites = $ngdir . "suites/";
|
||||
my $conffile = "ngdriver.conf";
|
||||
my $HTMLreport = "";
|
||||
|
||||
unless ($express) {
|
||||
print "Content-type: text/html\n\n";
|
||||
}
|
||||
|
||||
&generateResults;
|
||||
|
||||
$File{'SuiteList'} = \@suiteArray;
|
||||
|
||||
&generateHTML;
|
||||
|
||||
$File{'Project'} = "Buffy";
|
||||
|
||||
print $HTMLreport;
|
||||
|
||||
sub generateResults
|
||||
{
|
||||
if (!open(INFILE,$DATAFILE)) {
|
||||
print "DATAFILE = $DATAFILE\n";
|
||||
print "<H3> Cannot open $?, $!</H3>\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
$File{'tcsPass'} = 0;
|
||||
$File{'tcsFail'} = 0;
|
||||
$File{'tcsDied'} = 0;
|
||||
$File{'tcsTotal'} = 0;
|
||||
|
||||
$line = <INFILE>;
|
||||
while ($line) {
|
||||
my %Suite = ();
|
||||
|
||||
my @diedArray = ();
|
||||
$Suite{'DiedList'} = \@diedArray;
|
||||
my @testArray = ();
|
||||
$Suite{'FailedList'} = \@testArray;
|
||||
|
||||
# Skip to first anchor.
|
||||
while (!($line =~ /<A NAME=".*?">/i) && $line) {
|
||||
$line = <INFILE>; # Go to next line.
|
||||
}
|
||||
|
||||
# First anchor.
|
||||
$line =~ /<A NAME="(.*?)"><H1>(.*?)<\/H1>/i;
|
||||
|
||||
|
||||
my $name = $1;
|
||||
my $title =$2;
|
||||
|
||||
$Suite{'Name'} = $name;
|
||||
$Suite{'Title'} = $title;
|
||||
|
||||
$Suite{'tcsPass'} = 0;
|
||||
$Suite{'tcsFail'} = 0;
|
||||
$Suite{'tcsDied'} = 0;
|
||||
$Suite{'tcsTotal'} = 0;
|
||||
|
||||
do
|
||||
{
|
||||
while ($line && !($line =~ /<TC>/i) && !($line =~ /<A name=".*?">/i)) {
|
||||
$line = <INFILE>;
|
||||
}
|
||||
|
||||
if ($line && ($line =~ /<A name=\"(.*?)\">/i) && ($1 eq $Suite{'Name'})) {
|
||||
$line = <INFILE>;
|
||||
}
|
||||
|
||||
# TC = test case.
|
||||
if ($line && ($line =~ /<TC>/i)) {
|
||||
while ($line && !($line =~ /<ENDTC>/i)) {
|
||||
$line1 = <INFILE>;
|
||||
if ($line1 =~ /<TC>/i) {
|
||||
print "<H1>SOMETHING WRONG!</H1><BR>"; next; next;
|
||||
}
|
||||
$line .= $line1;
|
||||
}
|
||||
|
||||
my ($tfName, $tcStat);
|
||||
my @lines = split /<->/, $line;
|
||||
$tfName = $lines[1];
|
||||
$tcStat = $lines[3];
|
||||
|
||||
# D=died, P=pass, F=failure
|
||||
if ($tcStat eq 'D') {
|
||||
$Suite{'tcsDied'} += 1;
|
||||
push(@diedArray,$line);
|
||||
}
|
||||
if ($tcStat eq 'P') {
|
||||
$Suite{'tcsPass'} += 1;
|
||||
$Suite{'tcsTotal'} += 1;
|
||||
}
|
||||
if ($tcStat eq 'F') {
|
||||
push(@testArray,$line);
|
||||
$Suite{'tcsFail'} += 1;
|
||||
$Suite{'tcsTotal'} += 1;
|
||||
}
|
||||
$line = <INFILE>;
|
||||
}
|
||||
} while ($line && !($line =~ /<A NAME=".*?">/i) && $line);
|
||||
|
||||
$File{'tcsPass'} += $Suite{'tcsPass'};
|
||||
$File{'tcsFail'} += $Suite{'tcsFail'};
|
||||
$File{'tcsTotal'} += $Suite{'tcsTotal'};
|
||||
$File{'tcsDied'} += $Suite{'tcsDied'};
|
||||
push(@suiteArray,\%Suite);
|
||||
}
|
||||
close INFILE;
|
||||
1;
|
||||
}
|
||||
|
||||
sub generateHTML
|
||||
{
|
||||
my $prjExtension;
|
||||
my %extList;
|
||||
|
||||
my $os = `uname -s`; # Cheap OS id for now
|
||||
|
||||
my %Matrices;
|
||||
|
||||
# Hard-coded from ngdriver.conf, I didn't want extra files in tree.
|
||||
|
||||
$extList{"mb"} = "http://cemicrobrowser.web.aol.com/bugReportDetail.php?RID=%";
|
||||
$extList{"bs"} = "http://bugscape.nscp.aoltw.net/show_bug.cgi?id=%";
|
||||
$extList{"bz"} = "http://bugzilla.mozilla.org/show_bug.cgi?id=%";
|
||||
$extList{"bzx"} = "http://bugzilla.mozilla.org/show_bug.cgi?id=%";
|
||||
|
||||
$prjExtension = "bz"; # Buffy hard-coded here.
|
||||
|
||||
$Matricies{"dom-core"} = "http://geckoqa.mcom.com/browser/standards/dom1/tcmatrix/index.html";
|
||||
$Matricies{"dom-html"} = "http://geckoqa.mcom.com/browser/standards/dom1/tcmatrix/index.html";
|
||||
$Matricies{"domevents"} = "http://geckoqa.mcom.com/browser/standards/dom1/tcmatrix/index.html";
|
||||
$Matricies{"javascript"} = "http://geckoqa.mcom.com/browser/standards/javascript/tcmatrix/index.html";
|
||||
$Matricies{"forms"} = "http://geckoqa.mcom.com/browser/standards/form_submission/tcmatrix/index.html";
|
||||
$Matricies{"formsec"} = "http://geckoqa.mcom.com/browser/standards/form_submission/tcmatrix/index.html";
|
||||
|
||||
unless ($express) {
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Result Summary on $File{'Platform'}</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<center><u><font color="#990000"><h3>AUTOMATED TEST RESULTS</h3></font></u></center><br>
|
||||
<center>
|
||||
<table border="0" cols="3" width="90%">
|
||||
<tbody>
|
||||
<tr align="Left" valign="CENTER">
|
||||
<td width="250" valign="Middle"><b>OS: </b><font color="#990000">$os</script></font></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</center>
|
||||
<hr>
|
||||
<h3><u>The Following Test Suites Were Run:</u></h3>
|
||||
<UL>
|
||||
END_PRINT
|
||||
|
||||
for (my $var = 0;$File{'SuiteList'}->[$var]->{'Name'};$var++) {
|
||||
if (my $href = $Matrices{$File{'SuiteList'}->[$var]->{'Name'}}) {
|
||||
$HTMLreport .= "<li><a href=\"$href\">$File{'SuiteList'}->[$var]->{'Title'}</a></li>\n";
|
||||
} else {
|
||||
$HTMLreport .= "<li><a href=\"$ngsuites$File{'SuiteList'}->[$var]->{'Name'}\">$File{'SuiteList'}->[$var]->{'Title'}</a></li>\n";
|
||||
}
|
||||
}
|
||||
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
</UL>
|
||||
|
||||
<h3><u>Test Result Summary:</u></h3>
|
||||
END_PRINT
|
||||
} # !express
|
||||
|
||||
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
<table border=2 cellspacing=0>
|
||||
<tr valign=top bgcolor=#CCCCCC>
|
||||
<td bgcolor=#999999> </td>
|
||||
<td>Passed</td>
|
||||
<td>Failed</td>
|
||||
<td>Total</td>
|
||||
<td>Died</td>
|
||||
<td>% Passed</td>
|
||||
<td>% Failed</td>
|
||||
</tr>
|
||||
END_PRINT
|
||||
|
||||
for (my $var = 0;$File{'SuiteList'}->[$var]->{'Name'};$var++) {
|
||||
$curSuite = $File{'SuiteList'}->[$var];
|
||||
|
||||
$HTMLreport .= "<tr valign=top>\n";
|
||||
if($express) {
|
||||
$HTMLreport .= "<td>$curSuite->{'Title'}</td>\n";
|
||||
} else {
|
||||
$HTMLreport .= "<td bgcolor=#cccccc><a href=\"#$curSuite->{'Name'}\">$curSuite->{'Title'}</a></td>\n";
|
||||
}
|
||||
$HTMLreport .= "<td>$File{'SuiteList'}->[$var]->{'tcsPass'}</td>\n";
|
||||
$HTMLreport .= "<td>$File{'SuiteList'}->[$var]->{'tcsFail'}</td>\n";
|
||||
$HTMLreport .= "<td>$File{'SuiteList'}->[$var]->{'tcsTotal'}</td>\n";
|
||||
$HTMLreport .= "<td>${@{$File{'SuiteList'}}[$var]}{'tcsDied'}</td>\n";
|
||||
|
||||
my $pctPass = $File{'SuiteList'}->[$var]->{'tcsPass'} / $File{'SuiteList'}->[$var]->{'tcsTotal'};
|
||||
$pctPass = int($pctPass*10000)/100;
|
||||
|
||||
$HTMLreport .= "<td>$pctPass</td>\n";
|
||||
|
||||
my $pctFail = $File{'SuiteList'}->[$var]->{'tcsFail'} / $File{'SuiteList'}->[$var]->{'tcsTotal'};
|
||||
$pctFail = int($pctFail*10000)/100;
|
||||
|
||||
$HTMLreport .= "<td>$pctFail</td>\n";
|
||||
$HTMLreport .= "</tr>\n";
|
||||
}
|
||||
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
<tr valign=top bgcolor=#FFFFCC>
|
||||
<td>Total:</td>
|
||||
<td>$File{'tcsPass'}</td>
|
||||
<td>$File{'tcsFail'}</td>
|
||||
<td>$File{'tcsTotal'}</td>
|
||||
<td>$File{'tcsDied'}</td>
|
||||
END_PRINT
|
||||
my $pctPass = $File{'tcsPass'} / $File{'tcsTotal'};
|
||||
$pctPass = int($pctPass*10000)/100;
|
||||
my $pctFail = $File{'tcsFail'} / $File{'tcsTotal'};
|
||||
$pctFail = int($pctFail*10000)/100;
|
||||
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
<td>$pctPass</td>
|
||||
<td>$pctFail</td>
|
||||
</tr>
|
||||
</table>
|
||||
END_PRINT
|
||||
|
||||
unless ($express) {
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
<h3>Failed Testcases:</h3>
|
||||
END_PRINT
|
||||
|
||||
my $curSuite;
|
||||
for (my $var=0;$File{'SuiteList'}->[$var]->{'Name'};$var++) {
|
||||
$curSuite = $File{'SuiteList'}->[$var];
|
||||
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
<hr>
|
||||
<h2>
|
||||
<a NAME="$curSuite->{'Name'}"></a><u><font color="#666600">$curSuite->{'Title'}</font></u></h2>
|
||||
<b><u>Died:</u></b>
|
||||
<table>
|
||||
END_PRINT
|
||||
|
||||
for (my $dcnt = 0;$curFile = $File{'SuiteList'}->[$var]->{'DiedList'}->[$dcnt];$dcnt++) {
|
||||
($none,$fName) = split(/<->/,$curFile);
|
||||
$HTMLreport .= "<tr><td style=\"color: red;\"><A href='$ngsuites$curSuite->{'Name'}/$fName' target=\"new\">$fName</A></td></tr>\n";
|
||||
}
|
||||
|
||||
$HTMLreport .= "</table><BR>\n";
|
||||
$HTMLreport .= "<b><u>Failures:</u></b><br>";
|
||||
$HTMLreport .= "<table BORDER CELLSPACING=0><TR>\n";
|
||||
|
||||
for ($fcnt = 0;$curFile = $File{'SuiteList'}->[$var]->{'FailedList'}->[$fcnt];$fcnt++) {
|
||||
($none,$fName,$fDesc,$fStat,$fBug,$fExpected,$fActual) = split(/<->/,$curFile);
|
||||
$HTMLreport.= "<TR><TD><A href=\"$ngsuites$curSuite->{'Name'}/$fName\" target=\"_new\">$fName</A></TD><TD>";
|
||||
|
||||
# Quiet perl warnings about unused variables.
|
||||
my $tmp; $tmp = $fStat; $tmp = $fActual; $tmp = $fExpected;
|
||||
|
||||
#
|
||||
# TEMPRORAY DISABLED.
|
||||
#
|
||||
my @bugList = split(/[\s+]|,/,$fBug);
|
||||
my $bug = "";
|
||||
my $index = 0;
|
||||
|
||||
while ($bugList[$index]) {
|
||||
if ($bugList[$index] =~ /(\d+)$prjExtension/i) {
|
||||
$bugList[$index] =~ s/(\d+)($prjExtension)/makelink($1,$extList{$2})/ige;
|
||||
$bug .= $bugList[$index];
|
||||
}
|
||||
|
||||
$index++;
|
||||
}
|
||||
$HTMLreport.= "$bug</TD><TD>$fDesc</TD></TR>\n";
|
||||
|
||||
# $fBug =~ s/(\d+)($prjExtension)/makelink($1,$extList{$2})/ige;
|
||||
# $HTMLreport.= "$fBug</TD><TD>$fDesc</TD></TR>\n";
|
||||
|
||||
}
|
||||
$HTMLreport .= "</table>\n";
|
||||
}
|
||||
|
||||
$HTMLreport .= <<END_PRINT;
|
||||
</BODY>
|
||||
</HTML>
|
||||
END_PRINT
|
||||
} # !express
|
||||
|
||||
1;
|
||||
}
|
||||
|
||||
sub makelink
|
||||
{
|
||||
$bugNum = $_[0];
|
||||
$bugLnk = $_[1];
|
||||
|
||||
|
||||
$bugLnk =~ s/%/$bugNum/ig;
|
||||
$bugLnk = "<A href=\"$bugLnk\">$bugNum</A>";
|
||||
|
||||
return $bugLnk;
|
||||
}
|
||||
|
||||
1;
|
||||
165
mozilla/tools/tinderbox/report-http-status.pl
Executable file
165
mozilla/tools/tinderbox/report-http-status.pl
Executable file
@@ -0,0 +1,165 @@
|
||||
#!/usr/bin/perl
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
|
||||
#
|
||||
# Graph tree-open status, via tbox graph server.
|
||||
#
|
||||
|
||||
|
||||
# Location of this file. Make sure that hand-runs and crontab-runs
|
||||
# of this script read/write the same data.
|
||||
my $script_dir = "/builds/tinderbox/mozilla/tools/tinderbox";
|
||||
|
||||
my $graph_server = "coffee";
|
||||
|
||||
# Send data to graph server via HTTP.
|
||||
require "$script_dir/reportdata.pl";
|
||||
|
||||
use Sys::Hostname; # for ::hostname()
|
||||
|
||||
sub PrintUsage {
|
||||
die <<END_USAGE
|
||||
Usage:
|
||||
|
||||
$0 <ip or hostname>
|
||||
|
||||
END_USAGE
|
||||
}
|
||||
|
||||
|
||||
# Return true if httpd server is up.
|
||||
sub is_http_alive() {
|
||||
my $url = "http://$ARGV[0]";
|
||||
|
||||
my $rv = 0; # Assume false.
|
||||
|
||||
my $res =
|
||||
eval q{
|
||||
use LWP::UserAgent;
|
||||
use HTTP::Request;
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->timeout(10); # seconds
|
||||
|
||||
my $req = HTTP::Request->new(GET => $url);
|
||||
my $res = $ua->request($req);
|
||||
return $res;
|
||||
};
|
||||
if ($@) {
|
||||
warn "GET Failed: $@";
|
||||
#print "GET Failed.\n";
|
||||
} else {
|
||||
# Debug.
|
||||
#print "GET Succeeded: \n";
|
||||
#print "status:\n", $res->status_line, "\n";
|
||||
#print "content:\n", $res->content, "\n";
|
||||
#print "GET Succeeded.\n";
|
||||
|
||||
# This will be non-zero if http get went through ok.
|
||||
if($res->content) {
|
||||
$rv = 1;
|
||||
} else {
|
||||
$rv = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return $rv;
|
||||
}
|
||||
|
||||
|
||||
|
||||
# main
|
||||
{
|
||||
my $alive_time = 0; # Hours http has been up.
|
||||
my $alive = 0;
|
||||
my $timefile = "$script_dir/http_alive_timefiles/$ARGV[0]";
|
||||
|
||||
|
||||
# make sure directory exists
|
||||
unless (-d $timefile) {
|
||||
mkdir "$script_dir/http_alive_timefiles";
|
||||
}
|
||||
|
||||
PrintUsage() if $#ARGV == -1;
|
||||
|
||||
$alive = is_http_alive();
|
||||
|
||||
if ($alive) {
|
||||
print "$ARGV[0] is alive\n";
|
||||
|
||||
#
|
||||
# Record alive time.
|
||||
#
|
||||
|
||||
# Was zero before, report zero here, write out the
|
||||
# time for next cycle.
|
||||
if (not (-e "$timefile")) {
|
||||
print "no timefile found.\n";
|
||||
open TIMEFILE, ">$timefile";
|
||||
print TIMEFILE time();
|
||||
close TIMEFILE;
|
||||
} else {
|
||||
# Timefile found, compute difference and report that number.
|
||||
print "found timefile: $timefile!\n";
|
||||
|
||||
my $time_http_started = 0;
|
||||
my $now = 0;
|
||||
|
||||
open TIMEFILE, "$timefile";
|
||||
while (<TIMEFILE>) {
|
||||
chomp;
|
||||
$time_http_started = $_;
|
||||
}
|
||||
close TIMEFILE;
|
||||
print "time_http_started = $time_http_started\n";
|
||||
|
||||
$now = time();
|
||||
print "now = $now\n";
|
||||
|
||||
# Report time in hours.
|
||||
$alive_time = ($now - $time_http_started)/3600;
|
||||
print "alive_time (hours) = $alive_time\n";
|
||||
|
||||
# Clamp time to 20 hours so we don't get huge spikes for
|
||||
# extended open times (weekends)
|
||||
if ($alive_time > 20.0) {
|
||||
$alive_time = 20.0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
print "$ARGV[0] is not responding.\n";
|
||||
|
||||
# Delete timefile if there is one.
|
||||
if (-e "$timefile") {
|
||||
unlink("$timefile");
|
||||
}
|
||||
}
|
||||
|
||||
# Shorten some machine names.
|
||||
my $short_name = "$ARGV[0]";
|
||||
$short_name =~ s/.websys.aol.com//g;
|
||||
|
||||
ReportData::send_results_to_server($graph_server,
|
||||
"$alive_time",
|
||||
::hostname(),
|
||||
"http_alive",
|
||||
"$ARGV[0]");
|
||||
|
||||
my $status = "";
|
||||
if($alive) {
|
||||
$status = "success";
|
||||
} else {
|
||||
$status = "busted";
|
||||
}
|
||||
|
||||
# Hard-coded for now.
|
||||
my $graph_url = "http://$graph_server/graph/query.cgi?tbox=$ARGV[0]&testname=http_alive&autoscale=&size=&days=7&units=hours<ype=&points=&avg=&showpoint=";
|
||||
|
||||
ReportData::send_tbox_packet("tinderbox-daemon\@warp.mcom.com",
|
||||
"Talkback",
|
||||
$status,
|
||||
"TinderboxPrint:<a title=\"Hours httpd:80 has been alive.\" href=\"$graph_url\">Ta</a>",
|
||||
"$ARGV[0]",
|
||||
"$short_name HTTP Alive Test");
|
||||
}
|
||||
160
mozilla/tools/tinderbox/report-tree-status.pl
Executable file
160
mozilla/tools/tinderbox/report-tree-status.pl
Executable file
@@ -0,0 +1,160 @@
|
||||
#!/usr/bin/perl
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
|
||||
#
|
||||
# Graph tree-open status, via tbox graph server.
|
||||
#
|
||||
|
||||
# Location of this file. Make sure that hand-runs and crontab-runs
|
||||
# of this script read/write the same data.
|
||||
my $script_dir = "/builds/tinderbox/mozilla/tools/tinderbox";
|
||||
|
||||
# Send data to graph server via HTTP.
|
||||
require "$script_dir/reportdata.pl";
|
||||
|
||||
use Sys::Hostname; # for ::hostname()
|
||||
|
||||
my $sheriff_string;
|
||||
|
||||
sub is_tree_open {
|
||||
my $tbox_url = "http://tinderbox.mozilla.org/showbuilds.cgi?tree=SeaMonkey";
|
||||
|
||||
# Dump tbox page source into a file.
|
||||
print "HTTP...";
|
||||
system ("wget", "-q", "-O", "$script_dir/tbox.source", $tbox_url);
|
||||
print "done\n";
|
||||
|
||||
my $rv = 0;
|
||||
|
||||
$sheriff_string = "";
|
||||
|
||||
# Scan file, looking for line that starts with <a NAME="open">
|
||||
open TBOX_FILE, "$script_dir/tbox.source";
|
||||
while (<TBOX_FILE>) {
|
||||
# Scan for open string
|
||||
if(/^<a NAME="open">/) {
|
||||
# look for "open" string
|
||||
if (/open<\/font>$/) {
|
||||
print "open\n";
|
||||
$rv = 1;
|
||||
} else {
|
||||
print "closed\n";
|
||||
$rv = 0;
|
||||
}
|
||||
}
|
||||
|
||||
# Scan for sheriff string & save it off for HTTP submit later.
|
||||
if(/^<br><a NAME="sheriff"><\/a>/) {
|
||||
chomp;
|
||||
$sheriff_string = $_;
|
||||
|
||||
# Strip out content to save space.
|
||||
|
||||
# Strip out permanent content.
|
||||
$sheriff_string =~ s/^<br><a NAME="sheriff"><\/a>//;
|
||||
|
||||
# Crude attempt at reducing the random html that shows up here.
|
||||
# Order is important, pick off easy tags, then make it legal cgi,
|
||||
# then shorten it up.
|
||||
$sheriff_string =~ s/<[pP]>//g;
|
||||
$sheriff_string =~ s/\015//g; # ^M
|
||||
$sheriff_string =~ s/<br>//g;
|
||||
$sheriff_string =~ s/<\/a>//g;
|
||||
$sheriff_string =~ s/<//g;
|
||||
$sheriff_string =~ s/>//g;
|
||||
$sheriff_string =~ s/"/ /g;
|
||||
$sheriff_string =~ s/\///g;
|
||||
$sheriff_string =~ s/\\//g;
|
||||
$sheriff_string =~ s/#/[lb]/g;
|
||||
$sheriff_string =~ s/mailto://g;
|
||||
$sheriff_string =~ s/[aA][iI][mM]://g;
|
||||
$sheriff_string =~ s/[iI][rR][cC]://g;
|
||||
$sheriff_string =~ s/a href//g;
|
||||
$sheriff_string =~ s/[sS]heriff//g;
|
||||
$sheriff_string =~ s/[mM]onday//g;
|
||||
$sheriff_string =~ s/[tT]uesday//g;
|
||||
$sheriff_string =~ s/[wW]ednesday//g;
|
||||
$sheriff_string =~ s/[tT]hursday//g;
|
||||
$sheriff_string =~ s/[fF]riday//g;
|
||||
$sheriff_string =~ s/[wW]eekend//g;
|
||||
$sheriff_string =~ s/^[tT]he //g;
|
||||
$sheriff_string =~ s/\/a//g;
|
||||
$sheriff_string =~ s/netscape.com/nscp/g;
|
||||
$sheriff_string =~ s/mozilla.org/moz/g;
|
||||
$sheriff_string =~ s/ is / /g;
|
||||
$sheriff_string =~ s/ for / /g;
|
||||
$sheriff_string =~ s/ on / /g;
|
||||
$sheriff_string =~ s/ in / /g;
|
||||
$sheriff_string =~ s/ = / /g;
|
||||
$sheriff_string =~ s/ - / /g;
|
||||
|
||||
$sheriff_string = substr($sheriff_string,0,60);
|
||||
print "sheriff string = $sheriff_string\n";
|
||||
}
|
||||
}
|
||||
close TBOX_FILE;
|
||||
|
||||
# Clean up.
|
||||
unlink("$script_dir/tbox.source");
|
||||
|
||||
return $rv;
|
||||
}
|
||||
|
||||
|
||||
# main
|
||||
{
|
||||
my $time_since_open = 0;
|
||||
my $timefile = "$script_dir/treeopen_timefile";
|
||||
|
||||
# Get tree status.
|
||||
if(is_tree_open()) {
|
||||
|
||||
# Record tree open time if not set.
|
||||
if (not (-e "$timefile")) {
|
||||
open TIMEFILE, ">$timefile";
|
||||
print TIMEFILE time();
|
||||
close TIMEFILE;
|
||||
} else {
|
||||
# Timefile found, compute difference and report that number.
|
||||
print "found timefile: $timefile!\n";
|
||||
|
||||
my $time_tree_opened = 0;
|
||||
my $now = 0;
|
||||
|
||||
open TIMEFILE, "$timefile";
|
||||
while (<TIMEFILE>) {
|
||||
chomp;
|
||||
$time_tree_opened = $_;
|
||||
}
|
||||
close TIMEFILE;
|
||||
print "time_tree_opened = $time_tree_opened\n";
|
||||
|
||||
$now = time();
|
||||
print "now = $now\n";
|
||||
|
||||
# Report time in hours.
|
||||
$time_since_open = ($now - $time_tree_opened)/3600;
|
||||
print "time_since_open (hours) = $time_since_open\n";
|
||||
|
||||
# Clamp time to 20 hours so we don't get huge spikes for
|
||||
# extended open times (weekends)
|
||||
if($time_since_open > 20.0) {
|
||||
$time_since_open = 20.0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
# tree is closed, leave tree_open_time at zero.
|
||||
|
||||
# Delete timefile if there is one.
|
||||
if (-e "$timefile") {
|
||||
unlink("$timefile");
|
||||
}
|
||||
}
|
||||
|
||||
ReportData::send_results_to_server("tegu.mozilla.org",
|
||||
"$time_since_open",
|
||||
"$sheriff_string",
|
||||
"treeopen", ::hostname());
|
||||
}
|
||||
84
mozilla/tools/tinderbox/reportdata.pl
Normal file
84
mozilla/tools/tinderbox/reportdata.pl
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/perl
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
|
||||
|
||||
#
|
||||
# Utils used by tests to send data to graph server, or tinderbox.
|
||||
#
|
||||
|
||||
require 5.003;
|
||||
|
||||
use strict;
|
||||
|
||||
$::Version = '$Revision: 1.3 $ ';
|
||||
|
||||
package ReportData;
|
||||
|
||||
# Send data to graph cgi via HTTP.
|
||||
sub send_results_to_server {
|
||||
my ($server, $value, $data, $testname, $tbox) = @_;
|
||||
|
||||
my $tmpurl = "http://$server/graph/collect.cgi";
|
||||
$tmpurl .= "?value=$value&data=$data&testname=$testname&tbox=$tbox";
|
||||
|
||||
print "send_results_to_server(): \n";
|
||||
print "tmpurl = $tmpurl\n";
|
||||
|
||||
# libwww-perl has process control problems on windows,
|
||||
# spawn wget instead.
|
||||
if ($Settings::OS =~ /^WIN/) {
|
||||
system ("wget", "-o", "/dev/null", $tmpurl);
|
||||
print "send_results_to_server() succeeded.\n";
|
||||
} else {
|
||||
my $res = eval q{
|
||||
use LWP::UserAgent;
|
||||
use HTTP::Request;
|
||||
my $ua = LWP::UserAgent->new;
|
||||
$ua->timeout(10); # seconds
|
||||
my $req = HTTP::Request->new(GET => $tmpurl);
|
||||
my $res = $ua->request($req);
|
||||
return $res;
|
||||
};
|
||||
if ($@) {
|
||||
warn "Failed to submit startup results: $@";
|
||||
print "send_results_to_server() failed.\n";
|
||||
} else {
|
||||
print "Results submitted to server: \n",
|
||||
$res->status_line, "\n", $res->content, "\n";
|
||||
print "send_results_to_server() succeeded.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Fake a tinderbox message.
|
||||
sub send_tbox_packet {
|
||||
my ($server_email, $tree, $status,
|
||||
$log, $machine, $build_name) = @_;
|
||||
|
||||
my $foo;
|
||||
|
||||
my $now = time();
|
||||
|
||||
$foo .= <<END_PRINT;
|
||||
tinderbox: tree: $tree
|
||||
tinderbox: builddate: $now
|
||||
tinderbox: status: $status
|
||||
tinderbox: build: $build_name
|
||||
tinderbox: errorparser: unix
|
||||
tinderbox: buildfamily: unix
|
||||
tinderbox: END
|
||||
END_PRINT
|
||||
|
||||
$foo .= $log;
|
||||
|
||||
print "foo = \n$foo\n";
|
||||
|
||||
open MSG, ">msg.$machine";
|
||||
print MSG $foo;
|
||||
close MSG;
|
||||
|
||||
system "/bin/mail $server_email " . "< msg.$machine";
|
||||
|
||||
|
||||
unlink "msg.$machine";
|
||||
}
|
||||
170
mozilla/tools/tinderbox/tinder-defaults.pl
Normal file
170
mozilla/tools/tinderbox/tinder-defaults.pl
Normal file
@@ -0,0 +1,170 @@
|
||||
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
|
||||
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
|
||||
$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
|
||||
|
||||
#- You'll need to change these to suit your machine's needs
|
||||
$DisplayServer = ':0.0';
|
||||
|
||||
#- Default values of command-line opts
|
||||
#-
|
||||
$BuildDepend = 1; # Depend or Clobber
|
||||
$BuildDebug = 0; # Debug or Opt (Darwin)
|
||||
$ReportStatus = 1; # Send results to server, or not
|
||||
$ReportFinalStatus = 1; # Finer control over $ReportStatus.
|
||||
$UseTimeStamp = 1; # Use the CVS 'pull-by-timestamp' option, or not
|
||||
$BuildOnce = 0; # Build once, don't send results to server
|
||||
$TestOnly = 0; # Only run tests, don't pull/build
|
||||
$BuildEmbed = 0; # After building seamonkey, go build embed app.
|
||||
$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
|
||||
|
||||
# Tests
|
||||
$CleanProfile = 0;
|
||||
$ResetHomeDirForTests = 1;
|
||||
$ProductName = "Mozilla";
|
||||
|
||||
$RunMozillaTests = 1; # Allow turning off of all tests if needed.
|
||||
$RegxpcomTest = 1;
|
||||
$AliveTest = 1;
|
||||
$JavaTest = 0;
|
||||
$ViewerTest = 0;
|
||||
$BloatTest = 0; # warren memory bloat test
|
||||
$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
|
||||
$DomToTextConversionTest = 0;
|
||||
$XpcomGlueTest = 0;
|
||||
$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
|
||||
$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
|
||||
$MailBloatTest = 0;
|
||||
$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
|
||||
$LayoutPerformanceTest = 0; # Tp
|
||||
$QATest = 0;
|
||||
$XULWindowOpenTest = 0; # Txul
|
||||
$StartupPerformanceTest = 0; # Ts
|
||||
|
||||
# Release Build options
|
||||
# requires an appropriate post-mozilla.pl
|
||||
$ReleaseBuild = 0; # Make a release build?
|
||||
$package_creation_path = "mozilla/xpinstall/packager";
|
||||
$package_location = "mozilla/dist/install";
|
||||
$ftp_path = "/home/ftp/pub/mozilla/tinderbox-builds";
|
||||
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/mozilla/tinderbox-builds";
|
||||
$build_hour = "8";
|
||||
$ssh_server = "stage.mozilla.org";
|
||||
$ssh_user = "cltbld";
|
||||
|
||||
# end Release Build options
|
||||
|
||||
$TestsPhoneHome = 0; # Should test report back to server?
|
||||
$results_server = "axolotl.mozilla.org"; # was tegu
|
||||
$pageload_server = "spider"; # localhost
|
||||
|
||||
#
|
||||
# Timeouts, values are in seconds.
|
||||
#
|
||||
|
||||
$CreateProfileTimeout = 45;
|
||||
$RegxpcomTestTimeout = 15;
|
||||
|
||||
$AliveTestTimeout = 45;
|
||||
$ViewerTestTimeout = 45;
|
||||
$EmbedTestTimeout = 45;
|
||||
$BloatTestTimeout = 120; # seconds
|
||||
$MailBloatTestTimeout = 120; # seconds
|
||||
$JavaTestTimeout = 45;
|
||||
$DomTestTimeout = 45; # seconds
|
||||
$XpcomGlueTestTimeout = 15;
|
||||
$CodesizeTestTimeout = 900; # seconds
|
||||
$CodesizeTestType = "auto"; # {"auto"|"base"}
|
||||
$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
|
||||
$QATestTimeout = 1200; # entire test, seconds
|
||||
$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
|
||||
$StartupPerformanceTestTimeout = 60; # seconds
|
||||
$XULWindowOpenTestTimeout = 150; # seconds
|
||||
|
||||
|
||||
$MozConfigFileName = 'mozconfig';
|
||||
|
||||
$UseMozillaProfile = 1;
|
||||
$MozProfileName = 'default';
|
||||
|
||||
#- Set these to what makes sense for your system
|
||||
$Make = 'gmake'; # Must be GNU make
|
||||
$MakeOverrides = '';
|
||||
$mail = '/bin/mail';
|
||||
$CVS = 'cvs -q';
|
||||
$CVSCO = 'checkout -P';
|
||||
|
||||
# win32 usually doesn't have /bin/mail
|
||||
$blat = 'c:/nstools/bin/blat';
|
||||
$use_blat = 0;
|
||||
|
||||
# Set moz_cvsroot to something like:
|
||||
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
|
||||
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
|
||||
#
|
||||
# Note that win32 may not need \@, depends on ' or ".
|
||||
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
|
||||
|
||||
$moz_cvsroot = $ENV{CVSROOT};
|
||||
|
||||
#- Set these proper values for your tinderbox server
|
||||
$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
|
||||
|
||||
# Allow for non-client builds, e.g. camino.
|
||||
$moz_client_mk = 'client.mk';
|
||||
|
||||
# Allow for non-client builds, e.g. camino.
|
||||
$moz_client_mk = 'client.mk';
|
||||
|
||||
#- Set if you want to build in a separate object tree
|
||||
$ObjDir = '';
|
||||
|
||||
# Extra build name, if needed.
|
||||
$BuildNameExtra = '';
|
||||
|
||||
# User comment, eg. ip address for dhcp builds.
|
||||
# ex: $UserComment = "ip = 208.12.36.108";
|
||||
$UserComment = 0;
|
||||
|
||||
#-
|
||||
#- The rest should not need to be changed
|
||||
#-
|
||||
|
||||
#- Minimum wait period from start of build to start of next build in minutes.
|
||||
$BuildSleep = 10;
|
||||
|
||||
#- Until you get the script working. When it works,
|
||||
#- change to the tree you're actually building
|
||||
$BuildTree = 'MozillaTest';
|
||||
|
||||
$BuildName = '';
|
||||
$BuildTag = '';
|
||||
$BuildConfigDir = 'mozilla/config';
|
||||
$Topsrcdir = 'mozilla';
|
||||
|
||||
$BinaryName = 'mozilla-bin';
|
||||
|
||||
#
|
||||
# For embedding app, use:
|
||||
$EmbedBinaryName = 'TestGtkEmbed';
|
||||
$EmbedDistDir = 'dist/bin'
|
||||
|
||||
|
||||
$ShellOverride = ''; # Only used if the default shell is too stupid
|
||||
$ConfigureArgs = '';
|
||||
$ConfigureEnvArgs = '';
|
||||
$Compiler = 'gcc';
|
||||
$NSPRArgs = '';
|
||||
$ShellOverride = '';
|
||||
|
||||
# allow override of timezone value (for win32 POSIX::strftime)
|
||||
$Timezone = '';
|
||||
|
||||
# Reboot the OS at the end of build-and-test cycle. This is primarily
|
||||
# intended for Win9x, which can't last more than a few cycles before
|
||||
# locking up (and testing would be suspect even after a couple of cycles).
|
||||
# Right now, there is only code to force the reboot for Win9x, so even
|
||||
# setting this to 1, will not have an effect on other platforms. Setting
|
||||
# up win9x to automatically logon and begin running tinderbox is left
|
||||
# as an exercise to the reader.
|
||||
$RebootSystem = 0;
|
||||
|
||||
118
mozilla/tools/tinderbox/tinderbox
Executable file
118
mozilla/tools/tinderbox/tinderbox
Executable file
@@ -0,0 +1,118 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (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.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla Communicator.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Chris McAfee.
|
||||
# Portions created by Chris McAfee are
|
||||
# Copyright (C) The Mozilla Organization.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Chris McAfee <mcafee@netscape.com>
|
||||
#
|
||||
|
||||
#
|
||||
# Tinderbox control script.
|
||||
#
|
||||
# Assumes that at most two tinderboxes are running
|
||||
# simultaneously, depend and clobber.
|
||||
#
|
||||
# Assumes that if mozconfig exists, use it. Format:
|
||||
# mk_add_options MOZ_MAKE_FLAGS=j8
|
||||
# ac_add_options --disable-debug
|
||||
# ac_add_options --enable-optimize
|
||||
#
|
||||
|
||||
|
||||
tinderbox_usage() {
|
||||
echo "Usage: tinderbox [depend|clobber|multi] {start|stop|status|restart}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ $# != 2 ]; then
|
||||
echo "Wrong number of arguments."
|
||||
tinderbox_usage
|
||||
fi
|
||||
|
||||
build_type="$1"
|
||||
build_action="$2"
|
||||
|
||||
# Depend or clobber build?
|
||||
if [ "$build_type" != "depend" -a \
|
||||
"$build_type" != "clobber" -a \
|
||||
"$build_type" != "multi" ]; then
|
||||
echo "Unknown option: $1"
|
||||
tinderbox_usage
|
||||
fi
|
||||
|
||||
# See how we were called.
|
||||
case "$build_action" in
|
||||
start)
|
||||
if test -f $build_type.pid; then
|
||||
echo "$build_type build already running with PID "`cat $build_type.pid`
|
||||
else
|
||||
echo "Starting $build_type tinderbox..."
|
||||
|
||||
# Say if we found post-mozilla.pl
|
||||
if test -f post-mozilla.pl; then
|
||||
echo "Found post-mozilla.pl"
|
||||
fi
|
||||
|
||||
# Grab and use mozconfig if it exists.
|
||||
if test "$build_type" = "multi"; then
|
||||
nohup ./multi-tinderbox.pl &
|
||||
elif test -f mozconfig; then
|
||||
echo "Found mozconfig..."
|
||||
nohup ./build-seamonkey.pl --$build_type --mozconfig mozconfig &
|
||||
elif test -f .mozconfig; then
|
||||
echo "Found .mozconfig..."
|
||||
nohup ./build-seamonkey.pl --$build_type --mozconfig .mozconfig &
|
||||
else
|
||||
nohup ./build-seamonkey.pl --$build_type &
|
||||
fi
|
||||
# Write out PID so we can shut things down later.
|
||||
# This needs to be right after the ./build-seamonkey.pl call to
|
||||
# get the right PID.
|
||||
echo "PID $!"
|
||||
echo $! > $build_type.pid
|
||||
\rm -f nohup.out
|
||||
fi
|
||||
;;
|
||||
stop)
|
||||
if test -f $build_type.pid; then
|
||||
pid=`cat $build_type.pid`
|
||||
echo "Shutting down $build_type tinderbox, PID = $pid"
|
||||
kill $pid
|
||||
\rm $build_type.pid
|
||||
else
|
||||
echo "$build_type is not running."
|
||||
fi
|
||||
echo
|
||||
;;
|
||||
status)
|
||||
if test -f $build_type.pid; then
|
||||
echo "$build_type build is running with PID of "`cat $build_type.pid`
|
||||
else
|
||||
echo "$build_type build is not running."
|
||||
fi
|
||||
;;
|
||||
restart)
|
||||
echo "Restarting $build_type tinderbox:"
|
||||
$0 $build_type stop
|
||||
$0 $build_type start
|
||||
;;
|
||||
*)
|
||||
tinderbox_usage
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user