.ycm_extra_conf.py
author Andrew Halberstadt <ahalberstadt@mozilla.com>
Fri, 18 Jan 2019 20:10:18 +0000
changeset 514472 19b949191e5c5680fca1edae111352eaa0a688aa
parent 352341 578ebd592745ff2b7647b205576f20b5b36f3327
child 515141 2a22490b8a06c9a5eef192ef3192386f8e7ff74f
permissions -rw-r--r--
Bug 1484691 - [doc] Don't add doctrees nested under other doctrees to the root index r=nalexander Currently, it's possible to nest doctrees underneath one another by doing this: SPHINX_TREES['foo'] = 'docs' SPHINX_TREES['foo/bar'] = 'bar/docs' (note: the 'bar' doctree doesn't need to be a subdir of foo and can be defined in a completely separate moz.build) Doing this means that the docs in 'bar' will be nested underneath the docs in 'foo' when sphinx-build ultimately runs. This allows us to add 'bar' to foo's index, essentially making bar a subdoc of foo. The problem is that we also add bar's docs to the root index here: https://searchfox.org/mozilla-central/rev/dac799c9f4e9f5f05c1071cba94f2522aa31f7eb/tools/docs/moztreedocs/__init__.py#133 The result is that the main landing page for firefox-source-docs is a big long list of random unrelated topics. There is no organization or cohesion. By excluding subdocs from the main index, we can start to move pages around into some kind of organization that makes sense. Actually moving those docs will be a lot of work, but at least this will give us the ability. Differential Revision: https://phabricator.services.mozilla.com/D16869

# 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/.

import imp
import os
import shlex
import sys
try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO

old_bytecode = sys.dont_write_bytecode
sys.dont_write_bytecode = True

path = os.path.join(os.path.dirname(__file__), 'mach')

if not os.path.exists(path):
    path = os.path.join(os.path.dirname(__file__), 'config.status')
    config = imp.load_module('_buildconfig', open(path), path, ('', 'r', imp.PY_SOURCE))
    path = os.path.join(config.topsrcdir, 'mach')
mach_module = imp.load_module('_mach', open(path), path, ('', 'r', imp.PY_SOURCE))

sys.dont_write_bytecode = old_bytecode

def FlagsForFile(filename):
    mach = mach_module.get_mach()
    out = StringIO()

    # Mach calls sys.stdout.fileno(), so we need to fake it when capturing it.
    # Returning an invalid file descriptor does the trick.
    out.fileno = lambda: -1
    out.encoding = None
    mach.run(['compileflags', filename], stdout=out, stderr=out)

    flag_list = shlex.split(out.getvalue())

    # This flag is added by Fennec for android build and causes ycmd to fail to parse the file.
    # Removing this flag is a workaround until ycmd starts to handle this flag properly.
    # https://github.com/Valloric/YouCompleteMe/issues/1490
    final_flags = [x for x in flag_list if not x.startswith('-march=armv')]

    return {
        'flags': final_flags,
        'do_cache': True
    }