build/mozconfig.comm-support
author Iain Ireland <iireland@mozilla.com>
Fri, 11 Jan 2019 18:05:36 +0000
changeset 453523 025feea5945bffc625e9cca2e23be51ee8670315
parent 389172 c7ae1c6f2a4914e863f7530b2c37469041d2d847
child 464919 2c2dd59df579888dd52057037d468cab5c316a56
permissions -rw-r--r--
Bug 1480390: Move ForOfIterClose logic inside TryNoteIter r=tcampbell This patch was intended to be a pure refactoring of existing code with no side-effects, moving the logic for handling for-of/for-of-iterclose trynotes inside TryNoteIter to avoid duplicating logic in all users of TryNoteIter. However, it turns out that there was a subtle preexisting bug in TryNoteIter that is fixed by the refactoring. Specifically, the logic to skip from a for-of-iterclose to its enclosing for-of must run before the logic to skip trynotes based on stack depth. Otherwise, the stack depth code may filter out the enclosing for-of (see the attached test case for an example) and we will skip too many try-notes. Differential Revision: https://phabricator.services.mozilla.com/D14783

# 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