Compare commits

..

3 Commits

Author SHA1 Message Date
leaf%mozilla.org
5de45ab586 add release settings.
git-svn-id: svn://10.0.0.236/branches/LEAF_20031007_BRANCH@149045 18797224-902f-48f8-a5cc-f745e15eee43
2003-11-08 22:42:05 +00:00
leaf%mozilla.org
3273ea9790 saving work before machine change
git-svn-id: svn://10.0.0.236/branches/LEAF_20031007_BRANCH@148071 18797224-902f-48f8-a5cc-f745e15eee43
2003-10-17 18:34:40 +00:00
(no author)
ba977c5fc5 This commit was manufactured by cvs2svn to create branch
'LEAF_20031007_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/LEAF_20031007_BRANCH@147929 18797224-902f-48f8-a5cc-f745e15eee43
2003-10-13 22:11:17 +00:00
31 changed files with 5673 additions and 881 deletions

View File

@@ -1,2 +0,0 @@
Clobbering to pick up changes from bug 409803.

View File

@@ -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++

View File

@@ -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';

View File

@@ -1 +0,0 @@
trigger a nightly to push the fix to bug 421841 to users

View File

@@ -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

View File

@@ -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';

View File

@@ -1 +0,0 @@
Clobbering to pick up fixes from bug 419319.

View File

@@ -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

View File

@@ -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';

View 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

View 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>

View 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";

View 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;

View 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;

File diff suppressed because it is too large Load Diff

View 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;
}

View 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";
}

View 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
#

View 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;

View 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 = '';

View 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;

View 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

View 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();

View 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;

View 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
View 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>&nbsp;</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;

View 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&ltype=&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");
}

View 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());
}

View 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";
}

View 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
View 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