tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

fx_desktop_build.py (3393B)


      1 #!/usr/bin/env python
      2 # This Source Code Form is subject to the terms of the Mozilla Public
      3 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
      4 # You can obtain one at http://mozilla.org/MPL/2.0/.
      5 """fx_desktop_build.py.
      6 
      7 script harness to build nightly firefox within Mozilla's build environment
      8 and developer machines alike
      9 """
     10 
     11 import os
     12 import sys
     13 
     14 # load modules from parent dir
     15 sys.path.insert(1, os.path.dirname(sys.path[0]))
     16 
     17 from mozharness.base import script
     18 from mozharness.mozilla.building.buildbase import (
     19    BUILD_BASE_CONFIG_OPTIONS,
     20    BuildingConfig,
     21    BuildScript,
     22 )
     23 
     24 
     25 class FxDesktopBuild(BuildScript):
     26    def __init__(self):
     27        buildscript_kwargs = {
     28            "config_options": BUILD_BASE_CONFIG_OPTIONS,
     29            "all_actions": [
     30                "get-secrets",
     31                "clobber",
     32                "build",
     33                "static-analysis-autotest",
     34                "valgrind-test",
     35                "multi-l10n",
     36                "package-source",
     37            ],
     38            "require_config_file": True,
     39            # Default configuration
     40            "config": {
     41                "is_automation": True,
     42                "debug_build": False,
     43                # nightly stuff
     44                "nightly_build": False,
     45                # Seed all clones with mozilla-unified. This ensures subsequent
     46                # jobs have a minimal `hg pull`.
     47                "clone_upstream_url": "https://hg.mozilla.org/mozilla-unified",
     48                "repo_base": "https://hg.mozilla.org",
     49                "profile_build_resources_path": "%(upload_path)s/profile_build_resources.json",
     50                "nightly_promotion_branches": ["mozilla-central", "mozilla-aurora"],
     51                # try will overwrite these
     52                "clone_with_purge": False,
     53                "clone_by_revision": False,
     54                "virtualenv_modules": [
     55                    "requests==2.8.1",
     56                ],
     57                "virtualenv_path": "venv",
     58            },
     59            "ConfigClass": BuildingConfig,
     60        }
     61        super().__init__(**buildscript_kwargs)
     62 
     63    def query_abs_dirs(self):
     64        if self.abs_dirs:
     65            return self.abs_dirs
     66        abs_dirs = super().query_abs_dirs()
     67 
     68        dirs = {
     69            # BuildFactories in factory.py refer to a 'build' dir on the slave.
     70            # This contains all the source code/objdir to compile.  However,
     71            # there is already a build dir in mozharness for every mh run. The
     72            # 'build' that factory refers to I named: 'src' so
     73            # there is a seperation in mh.  for example, rather than having
     74            # '{mozharness_repo}/build/build/', I have '{
     75            # mozharness_repo}/build/src/'
     76            "abs_obj_dir": os.path.join(abs_dirs["abs_work_dir"], self._query_objdir()),
     77            "upload_path": self.config["upload_env"]["UPLOAD_PATH"],
     78        }
     79        abs_dirs.update(dirs)
     80        self.abs_dirs = abs_dirs
     81        return self.abs_dirs
     82 
     83        # Actions {{{2
     84 
     85    @script.PreScriptRun
     86    def suppress_windows_modal_dialogs(self, *args, **kwargs):
     87        if self._is_windows():
     88            # Suppress Windows modal dialogs to avoid hangs
     89            import ctypes
     90 
     91            ctypes.windll.kernel32.SetErrorMode(0x8001)
     92 
     93 
     94 if __name__ == "__main__":
     95    fx_desktop_build = FxDesktopBuild()
     96    fx_desktop_build.run_and_exit()