Source code
Revision control
Copy as Markdown
Other Tools
# 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
import errno
import os
import shutil
import mozpack.path as mozpath
from buildconfig import topsrcdir
from mach.logging import LoggingManager
from mozbuild.util import ReadOnlyDict
# By including this module, tests get structured logging.
log_manager = LoggingManager()
log_manager.add_terminal_logging()
def prepare_tmp_topsrcdir(path):
for p in (
"build/autoconf/config.guess",
"build/autoconf/config.sub",
"build/moz.configure/checks.configure",
"build/moz.configure/init.configure",
"build/moz.configure/util.configure",
):
file_path = os.path.join(path, p)
try:
os.makedirs(os.path.dirname(file_path))
except OSError as e:
if e.errno != errno.EEXIST:
raise
shutil.copy(os.path.join(topsrcdir, p), file_path)
# mozconfig is not a reusable type (it's actually a module) so, we
# have to mock it.
class MockConfig(object):
def __init__(
self,
topsrcdir="/path/to/topsrcdir",
extra_substs={},
error_is_fatal=True,
):
self.topsrcdir = mozpath.abspath(topsrcdir)
self.topobjdir = mozpath.abspath("/path/to/topobjdir")
self.substs = ReadOnlyDict(
{
"MOZ_FOO": "foo",
"MOZ_BAR": "bar",
"MOZ_TRUE": "1",
"MOZ_FALSE": "",
"DLL_PREFIX": "lib",
"DLL_SUFFIX": ".so",
},
**extra_substs
)
self.defines = self.substs
self.lib_prefix = "lib"
self.lib_suffix = ".a"
self.import_prefix = "lib"
self.import_suffix = ".so"
self.dll_prefix = "lib"
self.dll_suffix = ".so"
self.error_is_fatal = error_is_fatal