From 7f86c0e4715d18135d67653a248e42922fdfd72c Mon Sep 17 00:00:00 2001 From: Mike Hommey <mh+mozilla@glandium.org> Date: Tue, 21 May 2013 08:28:49 +0200 Subject: [PATCH] Bug 873640 - Fix and cleanup profiledbuild profile script invocation. r=ted --- b2g/config/mozconfigs/linux32_gecko/nightly | 3 - b2g/config/mozconfigs/linux64_gecko/nightly | 3 - b2g/config/mozconfigs/win32_gecko/nightly | 3 - browser/config/mozconfigs/linux32/beta | 2 - browser/config/mozconfigs/linux32/nightly | 3 - browser/config/mozconfigs/linux32/qt | 3 - browser/config/mozconfigs/linux32/rpm | 2 - browser/config/mozconfigs/linux64/beta | 2 - browser/config/mozconfigs/linux64/nightly | 3 - browser/config/mozconfigs/linux64/rpm | 2 - browser/config/mozconfigs/win32/beta | 2 - browser/config/mozconfigs/win32/nightly | 3 - browser/config/mozconfigs/win64/nightly | 3 - build/profile_pageloader.html | 11 -- build/profile_pageloader.pl | 177 -------------------- client.mk | 8 +- 16 files changed, 1 insertion(+), 229 deletions(-) delete mode 100644 build/profile_pageloader.html delete mode 100755 build/profile_pageloader.pl diff --git a/b2g/config/mozconfigs/linux32_gecko/nightly b/b2g/config/mozconfigs/linux32_gecko/nightly index 6a89e52ee5db3..ba7db9f6e7d4c 100644 --- a/b2g/config/mozconfigs/linux32_gecko/nightly +++ b/b2g/config/mozconfigs/linux32_gecko/nightly @@ -16,9 +16,6 @@ ac_add_options --enable-stdcxx-compat # by 2 MBs. STRIP_FLAGS="--strip-debug" -# PGO -mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) @MOZ_OBJDIR@/_profile/pgo/profileserver.py 10' - # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 diff --git a/b2g/config/mozconfigs/linux64_gecko/nightly b/b2g/config/mozconfigs/linux64_gecko/nightly index 6a89e52ee5db3..ba7db9f6e7d4c 100644 --- a/b2g/config/mozconfigs/linux64_gecko/nightly +++ b/b2g/config/mozconfigs/linux64_gecko/nightly @@ -16,9 +16,6 @@ ac_add_options --enable-stdcxx-compat # by 2 MBs. STRIP_FLAGS="--strip-debug" -# PGO -mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) @MOZ_OBJDIR@/_profile/pgo/profileserver.py 10' - # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 diff --git a/b2g/config/mozconfigs/win32_gecko/nightly b/b2g/config/mozconfigs/win32_gecko/nightly index 221c4603aa8a4..bb6510f3059e2 100644 --- a/b2g/config/mozconfigs/win32_gecko/nightly +++ b/b2g/config/mozconfigs/win32_gecko/nightly @@ -1,8 +1,5 @@ . "$topsrcdir/b2g/config/mozconfigs/common" -# for pgo -mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py' - ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} ac_add_options --enable-update-packaging ac_add_options --enable-jemalloc diff --git a/browser/config/mozconfigs/linux32/beta b/browser/config/mozconfigs/linux32/beta index 454bc41ed9a72..34bf6ebff619d 100644 --- a/browser/config/mozconfigs/linux32/beta +++ b/browser/config/mozconfigs/linux32/beta @@ -7,9 +7,7 @@ ac_add_options --enable-official-branding # Avoid dependency on libstdc++ 4.5 ac_add_options --enable-stdcxx-compat -# PGO mk_add_options MOZ_PGO=1 -mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 diff --git a/browser/config/mozconfigs/linux32/nightly b/browser/config/mozconfigs/linux32/nightly index 8c1693d4e8710..abc003f382dae 100644 --- a/browser/config/mozconfigs/linux32/nightly +++ b/browser/config/mozconfigs/linux32/nightly @@ -17,9 +17,6 @@ ac_add_options --enable-stdcxx-compat # by 2 MBs. STRIP_FLAGS="--strip-debug" -# PGO -mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' - # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 diff --git a/browser/config/mozconfigs/linux32/qt b/browser/config/mozconfigs/linux32/qt index c0645a86afb92..bfeee52018388 100644 --- a/browser/config/mozconfigs/linux32/qt +++ b/browser/config/mozconfigs/linux32/qt @@ -9,9 +9,6 @@ ac_add_options --enable-stdcxx-compat # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 -# PGO -mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' - #Use ccache ac_add_options --with-ccache=/usr/bin/ccache diff --git a/browser/config/mozconfigs/linux32/rpm b/browser/config/mozconfigs/linux32/rpm index 58b6e43a15a84..259e51b30c68b 100644 --- a/browser/config/mozconfigs/linux32/rpm +++ b/browser/config/mozconfigs/linux32/rpm @@ -19,8 +19,6 @@ export MOZILLA_OFFICIAL=1 export MOZ_TELEMETRY_REPORTING=1 -mk_add_options PROFILE_GEN_SCRIPT='$(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' - #Use ccache ac_add_options --with-ccache=/usr/bin/ccache diff --git a/browser/config/mozconfigs/linux64/beta b/browser/config/mozconfigs/linux64/beta index e40b58fd81a5f..ffd254ed67b62 100644 --- a/browser/config/mozconfigs/linux64/beta +++ b/browser/config/mozconfigs/linux64/beta @@ -7,9 +7,7 @@ ac_add_options --enable-official-branding # Avoid dependency on libstdc++ 4.5 ac_add_options --enable-stdcxx-compat -# PGO mk_add_options MOZ_PGO=1 -mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 diff --git a/browser/config/mozconfigs/linux64/nightly b/browser/config/mozconfigs/linux64/nightly index 25b45b760711e..b349315e65f64 100644 --- a/browser/config/mozconfigs/linux64/nightly +++ b/browser/config/mozconfigs/linux64/nightly @@ -17,9 +17,6 @@ ac_add_options --enable-stdcxx-compat # by 2 MBs. STRIP_FLAGS="--strip-debug" -# PGO -mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' - # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 diff --git a/browser/config/mozconfigs/linux64/rpm b/browser/config/mozconfigs/linux64/rpm index da262251d6922..97ab91377bd11 100644 --- a/browser/config/mozconfigs/linux64/rpm +++ b/browser/config/mozconfigs/linux64/rpm @@ -19,8 +19,6 @@ export MOZILLA_OFFICIAL=1 export MOZ_TELEMETRY_REPORTING=1 -mk_add_options PROFILE_GEN_SCRIPT='$(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' - #Use ccache ac_add_options --with-ccache=/usr/bin/ccache diff --git a/browser/config/mozconfigs/win32/beta b/browser/config/mozconfigs/win32/beta index 7a1004832f4db..943cbc00ec6f1 100644 --- a/browser/config/mozconfigs/win32/beta +++ b/browser/config/mozconfigs/win32/beta @@ -1,8 +1,6 @@ . "$topsrcdir/browser/config/mozconfigs/common" -# for pgo mk_add_options MOZ_PGO=1 -mk_add_options PROFILE_GEN_SCRIPT='$(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} ac_add_options --enable-update-packaging diff --git a/browser/config/mozconfigs/win32/nightly b/browser/config/mozconfigs/win32/nightly index f02705dee7d3a..0e6c8bf1194cc 100644 --- a/browser/config/mozconfigs/win32/nightly +++ b/browser/config/mozconfigs/win32/nightly @@ -1,8 +1,5 @@ . "$topsrcdir/browser/config/mozconfigs/common" -# for pgo -mk_add_options PROFILE_GEN_SCRIPT='$(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' - ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} ac_add_options --enable-update-packaging ac_add_options --enable-jemalloc diff --git a/browser/config/mozconfigs/win64/nightly b/browser/config/mozconfigs/win64/nightly index 2669927bb5a40..cefa49b037b30 100644 --- a/browser/config/mozconfigs/win64/nightly +++ b/browser/config/mozconfigs/win64/nightly @@ -3,9 +3,6 @@ ac_add_options --target=x86_64-pc-mingw32 ac_add_options --host=x86_64-pc-mingw32 -# for pgo -mk_add_options PROFILE_GEN_SCRIPT='$(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run' - ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} ac_add_options --enable-update-packaging ac_add_options --enable-jemalloc diff --git a/build/profile_pageloader.html b/build/profile_pageloader.html deleted file mode 100644 index 47a985083ba08..0000000000000 --- a/build/profile_pageloader.html +++ /dev/null @@ -1,11 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - -<html> -<script> -setTimeout("window.close();", 1000); -</script> -<body> -</body> -</html> diff --git a/build/profile_pageloader.pl b/build/profile_pageloader.pl deleted file mode 100755 index dd6be1c1b83cc..0000000000000 --- a/build/profile_pageloader.pl +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/perl -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -use Cwd; -use File::Find (); - -use POSIX qw(sys_wait_h); - -sub kill_process { - my ($target_pid) = @_; - my $start_time = time; - - # Try to kill and wait 10 seconds, then try a kill -9 - my $sig; - for $sig ('TERM', 'KILL') { - print "kill $sig $target_pid\n"; - kill $sig => $target_pid; - my $interval_start = time; - while (time - $interval_start < 10) { - # the following will work with 'cygwin' perl on win32, but not - # with 'MSWin32' (ActiveState) perl - my $pid = waitpid($target_pid, POSIX::WNOHANG()); - if (($pid == $target_pid and POSIX::WIFEXITED($?)) or $pid == -1) { - my $secs = time - $start_time; - $secs = $secs == 1 ? '1 second' : "$secs seconds"; - print "Process killed. Took $secs to die.\n"; - return; - } - sleep 1; - } - } - die "Unable to kill process: $target_pid"; -} - -# Stripped down version of fork_and_log(). -sub system_fork_and_log { - # Fork a sub process and log the output. - my ($cmd) = @_; - - my $pid = fork; # Fork off a child process. - - unless ($pid) { # child - exec { $cmd->[0] } @$cmd; - die "Could not exec()"; - } - return $pid; -} - - -sub wait_for_pid { - # Wait for a process to exit or kill it if it takes too long. - my ($pid, $timeout_secs) = @_; - my ($exit_value, $signal_num, $dumped_core, $timed_out) = (0,0,0,0); - my $sig_name; - my $loop_count; - - die ("Invalid timeout value passed to wait_for_pid()\n") - if ($timeout_secs <= 0); - - eval { - $loop_count = 0; - while (++$loop_count < $timeout_secs) { - my $wait_pid = waitpid($pid, POSIX::WNOHANG()); - # the following will work with 'cygwin' perl on win32, but not - # with 'MSWin32' (ActiveState) perl - last if ($wait_pid == $pid and POSIX::WIFEXITED($?)) or $wait_pid == -1; - sleep 1; - } - - $exit_value = $? >> 8; - $signal_num = $? >> 127; - $dumped_core = $? & 128; - if ($loop_count >= $timeout_secs) { - die "timeout"; - } - return "done"; - }; - - if ($@) { - if ($@ =~ /timeout/) { - kill_process($pid); - $timed_out = 1; - } else { # Died for some other reason. - die; # Propagate the error up. - } - } -# $sig_name = $signal_num ? signal_name($signal_num) : ''; -# -# return { timed_out=>$timed_out, -# exit_value=>$exit_value, -# sig_name=>$sig_name, -# dumped_core=>$dumped_core }; -} - -# System version of run_cmd(). -sub run_system_cmd { - my ($cmd, $timeout_secs) = @_; - -# print_log "cmd = $cmd\n"; - my $pid = system_fork_and_log($cmd); - my $result = wait_for_pid($pid, $timeout_secs); - - return $result; -} - -# -# Given profile directory, find pref file hidden in salt directory. -# profile $Settings::MozProfileName must exist before calling this sub. -# -sub find_pref_file { - my $profile_dir = shift; - - # default to *nix - my $pref_file = "prefs.js"; - - unless (-e $profile_dir) { - return; # empty list - } - - my $found = undef; - my $sub = sub {$pref_file = $File::Find::name, $found++ if $pref_file eq $_}; - File::Find::find($sub, $profile_dir); - unless ($found) { - return; # empty list - } - - return $pref_file; -} - -my $topdir = cwd(); - -chdir $ENV{OBJDIR}; -my $app_name = `grep "MOZ_APP_NAME " config/autoconf.mk | sed "s/.*= //"`; -chomp($app_name); - -# On mac, the app directory is the product name with the first -# letter capitalized - -my $toolkit = `grep "MOZ_WIDGET_TOOLKIT " config/autoconf.mk |sed "s/.*= //"`; -chomp($toolkit); - -if ($toolkit =~ /(mac|cocoa)/) { - my $app_dir = uc(substr($app_name, 0, 1)).substr($app_name, 1); - chdir "dist/$app_dir.app/Contents/MacOS"; -} else { - chdir "dist/bin"; -} - -my $bin_suffix = ""; -if ($toolkit =~ /(windows|os2)/) { - $bin_suffix = ".exe"; -} - -my $old_home = $ENV{HOME}; -$ENV{HOME} = cwd(); - -# Create a profile to test with. -run_system_cmd(["./".$app_name.$bin_suffix, "-createProfile", "testprofile"], 45); - -my $pref_file = find_pref_file(".mozilla/".$app_name); -open PREFS, ">>$pref_file"; -# Add allow_scripts_to_close_windows; this lets us cleanly exit. -print PREFS "user_pref(\"dom.allow_scripts_to_close_windows\", true);\n"; -# Suppress the default browser dialog since it keeps the test from starting. -print PREFS "user_pref(\"browser.shell.checkDefaultBrowser\", false);\n"; -close PREFS; - -# Run the pageload test. -run_system_cmd(["./".$app_name.$bin_suffix, $ENV{PAGELOAD_URL}."/loader.pl?maxcyc=2&delay=500&nocache=0&timeout=30000&auto=1"], 240); - -# Start up again; this will gather data for reading global history and -# reading the fastload file. -run_system_cmd(["./".$app_name.$bin_suffix, "file://$topdir/build/profile_pageloader.html"], 45); - -chdir $topdir; diff --git a/client.mk b/client.mk index 0edf2a170cc47..95a0e25137829 100644 --- a/client.mk +++ b/client.mk @@ -197,12 +197,6 @@ everything: clean build #################################### # Profile-Guided Optimization -# To use this, you should set the following variables in your mozconfig -# mk_add_options PROFILE_GEN_SCRIPT=/path/to/profile-script -# -# The profile script should exercise the functionality to be included -# in the profile feedback. -# # This is up here, outside of the MOZ_CURRENT_PROJECT logic so that this # is usable in multi-pass builds, where you might not have a runnable # application until all the build passes and postflight scripts have run. @@ -216,7 +210,7 @@ profiledbuild:: $(MAKE) -f $(TOPSRCDIR)/client.mk realbuild MOZ_PROFILE_GENERATE=1 MOZ_PGO_INSTRUMENTED=1 $(MAKE) -C $(PGO_OBJDIR) package MOZ_PGO_INSTRUMENTED=1 MOZ_INTERNAL_SIGNING_FORMAT= MOZ_EXTERNAL_SIGNING_FORMAT= rm -f ${PGO_OBJDIR}/jarlog/en-US.log - MOZ_PGO_INSTRUMENTED=1 OBJDIR=${PGO_OBJDIR} JARLOG_FILE=${PGO_OBJDIR}/jarlog/en-US.log $(PROFILE_GEN_SCRIPT) + MOZ_PGO_INSTRUMENTED=1 JARLOG_FILE=jarlog/en-US.log EXTRA_TEST_ARGS=10 $(MAKE) -C $(PGO_OBJDIR) pgo-profile-run $(MAKE) -f $(TOPSRCDIR)/client.mk maybe_clobber_profiledbuild $(MAKE) -f $(TOPSRCDIR)/client.mk realbuild MOZ_PROFILE_USE=1 -- GitLab