Bug 1298328 - Fix dependency between buildid.h and libxul, do not re-generate buildid.h for every developer build. r=ted
authorChris Manchester <cmanchester@mozilla.com>
Fri, 09 Mar 2018 13:49:55 -0800
changeset 407714 48b8e6530f1b3d61b223d6506a16385dd2acb469
parent 407713 49cce2c9e2ab21606a9abcdc0ab0af991806957f
child 407715 664c633802d4cd0e2c32a271a2d29107b5b43f38
push id33619
push usernbeleuzu@mozilla.com
push dateTue, 13 Mar 2018 09:58:16 +0000
treeherdermozilla-central@8f1b2f872f0e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersted
bugs1298328
milestone60.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1298328 - Fix dependency between buildid.h and libxul, do not re-generate buildid.h for every developer build. r=ted For automation builds, force buildid.h to be regenerated, and always #include buildid.h in nsAppRunner.cpp. This will eliminate the mismatch at the cost of re-linking libxul on every build. For developer builds, always #include buildid.h in nsAppRunner.cpp, but do not force buildid.h to be re-generated for incremental builds. This means we will never have a mismatch between platform and application buildids, although subsequent builds are no longer guaranteed to have a new buildid. MozReview-Commit-ID: 19hvu8AQXgN
Makefile.in
toolkit/xre/Makefile.in
toolkit/xre/nsAppRunner.cpp
--- a/Makefile.in
+++ b/Makefile.in
@@ -26,18 +26,23 @@ include $(topsrcdir)/config/config.mk
 GARBAGE_DIRS += _javagen _profile staticlib
 DIST_GARBAGE = config.cache config.log config.status* config-defs.h \
    config/autoconf.mk \
    mozilla-config.h \
    netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h \
    .mozconfig.mk
 
 ifndef MOZ_PROFILE_USE
+# Automation builds should always have a new buildid, but for the sake of not
+# re-linking libxul on every incremental build we do not enforce this for
+# developer builds.
+ifneq (,$(MOZ_AUTOMATION)$(MOZ_BUILD_DATE))
 buildid.h source-repo.h: FORCE
 endif
+endif
 
 ifdef JS_STANDALONE
 configure_dir = $(topsrcdir)/js/src
 else
 configure_dir = $(topsrcdir)
 endif
 
 BUILD_BACKEND_FILES := $(addprefix backend.,$(addsuffix Backend,$(BUILD_BACKENDS)))
deleted file mode 100644
--- a/toolkit/xre/Makefile.in
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-
-# 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/.
-
-milestone_txt = $(topsrcdir)/config/milestone.txt
-
-include $(topsrcdir)/config/rules.mk
-
-MOZ_BUILDID   := $(shell awk '{print $$3}' $(DEPTH)/buildid.h)
-$(call errorIfEmpty,GRE_MILESTONE MOZ_BUILDID)
-
-MK_COMPILE_DEFINES = -DMOZ_BUILDID=$(MOZ_BUILDID)
-
-# Note these dependencies are broken because the target is *not* the cpp file.
-# BUT, actually fixing it would make libxul rebuilt on every single incremental
-# build because of the automatic buildid change. This is why we can't actually
-# include buildid.h there, because it would add the dependency.
-$(srcdir)/nsAppRunner.cpp: $(DEPTH)/buildid.h $(milestone_txt)
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -236,16 +236,18 @@ extern void InstallSignalHandlers(const 
 
 #define FILE_COMPATIBILITY_INFO NS_LITERAL_CSTRING("compatibility.ini")
 #define FILE_INVALIDATE_CACHES NS_LITERAL_CSTRING(".purgecaches")
 #define FILE_STARTUP_INCOMPLETE NS_LITERAL_STRING(".startup-incomplete")
 
 int    gArgc;
 char **gArgv;
 
+#include "buildid.h"
+
 static const char gToolkitVersion[] = NS_STRINGIFY(GRE_MILESTONE);
 static const char gToolkitBuildID[] = NS_STRINGIFY(MOZ_BUILDID);
 
 static nsIProfileLock* gProfileLock;
 
 int    gRestartArgc;
 char **gRestartArgv;
 
@@ -266,22 +268,16 @@ nsString gAbsoluteArgv0Path;
 #endif
 #ifdef MOZ_X11
 #include <gdk/gdkx.h>
 #endif /* MOZ_X11 */
 #include "nsGTKToolkit.h"
 #include <fontconfig/fontconfig.h>
 #endif
 #include "BinaryPath.h"
-#ifndef MOZ_BUILDID
-// See comment in Makefile.in why we want to avoid including buildid.h.
-// Still include it when MOZ_BUILDID is not set, which can happen with some
-// build backends.
-#include "buildid.h"
-#endif
 
 #ifdef MOZ_LINKER
 extern "C" MFBT_API bool IsSignalHandlingBroken();
 #endif
 
 #ifdef FUZZING
 #include "FuzzerRunner.h"