Bug 1410475: Add support for detecting whether c-c is topdir in mozconfigs; r=mshal,Fallen draft
authorTom Prince <mozilla@hocat.ca>
Thu, 19 Oct 2017 13:56:13 -0600
changeset 685588 0e17596f6a4ab12676cb67c7fae8db9d42d76cc0
parent 685447 967c95cee709756596860ed2a3e6ac06ea3a053f
child 737201 9749fdb54a8ca3d88aecdfb8760b09aacaf9cb76
push id85988
push userbmo:mozilla@hocat.ca
push dateTue, 24 Oct 2017 22:04:57 +0000
reviewersmshal, Fallen
bugs1410475
milestone58.0a1
Bug 1410475: Add support for detecting whether c-c is topdir in mozconfigs; r=mshal,Fallen MozReview-Commit-ID: DYveJX8J3lr
build/mozconfig.comm-support
new file mode 100644
--- /dev/null
+++ b/build/mozconfig.comm-support
@@ -0,0 +1,49 @@
+# This file exists to support comm-central from building with mozilla-central
+# as a subdirectory to building as a subdirectory of mozilla-central.
+
+# In order to have mozconfig files that support building in either
+# configuration during the transition, without duplicating the logic
+# in every mozconfig file, there needs to exist a file that exists at the
+# same path in mozilla-central and comm-central.
+
+# This file gets included under two circumstances.
+# 1. comm-central is being built as a subdirectory of mozilla-central.
+# 2. comm-central is being built as a parent directory of mozilla-central,
+#    but `mach` was invoked from the objdir and thinks that $topsrcdir is
+#    the mozilla-central directory. If we detect this is the case, we fix
+#    $topsrcdir before proceeding.
+# In either case, we then invoke the identically named file that lives in
+# comm-central, which sets some variables that can be used by the rest of the
+# mozconfig.
+
+
+# Note that the top-level mozconfig file is in $2.
+
+if [ "$(dirname "$2")" = "$topsrcdir" ]; then
+  # No weirdness
+  if [ -d "$topsrcdir/mail" ]; then
+    # Building with comm-central as top-level directory.
+    echo "ERROR: Should not include mozilla/build/mozconfig.comm when building"
+    echo "       with comm-central as top-level directory."
+    exit 1
+  elif [ -d "$topsrcdir/comm/mail" ]; then
+    # Building with mozila-central as top-level directory.
+    . "$topsrcdir/comm/build/mozconfig.comm-support"
+  else
+    echo "ERROR: Unknown build directory layout."
+    exit 1
+  fi
+elif [ "$(dirname "$2")" = "$(dirname "$topsrcdir")" ]; then
+  if [ -d "$topsrcdir/../mail" ]; then
+    # Building with comm-central as top-level directory;
+    # but invoked with $topsrcdir as "mozilla/".
+    topsrcdir=$(dirname "$topsrcdir")
+    . "$topsrcdir/build/mozconfig.comm-support"
+  else
+    echo "ERROR: Unknown build directory layout."
+    exit 1
+  fi
+else
+  echo "ERROR: Unknown build directory layout."
+  exit 1
+fi