зеркало из https://github.com/mozilla/gecko-dev.git
Bug 873640 - Fix and cleanup profiledbuild profile script invocation. r=ted
This commit is contained in:
Родитель
3dbd173272
Коммит
7f86c0e471
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
|
@ -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;
|
|
@ -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
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче