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 file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
import sys
from mozfile import which
from mozboot.base import BaseBootstrapper
class FreeBSDBootstrapper(BaseBootstrapper):
def __init__(self, version, flavor, **kwargs):
BaseBootstrapper.__init__(self, **kwargs)
self.version = int(version.split(".")[0])
self.flavor = flavor.lower()
self.packages = [
"gmake",
"gtar",
"m4",
"npm",
"pkgconf",
"py%d%d-sqlite3" % sys.version_info[0:2],
"rust",
"watchman",
]
self.browser_packages = [
"libXt",
"nasm",
"pulseaudio",
]
if not which("as"):
self.packages.append("binutils")
if not which("unzip"):
self.packages.append("unzip")
def pkg_install(self, *packages):
if sys.platform.startswith("netbsd"):
command = ["pkgin", "install"]
else:
command = ["pkg", "install"]
if self.no_interactive:
command.append("-y")
command.extend(packages)
self.run_as_root(command)
def install_system_packages(self):
self.pkg_install(*self.packages)
def install_browser_packages(self, mozconfig_builder, artifact_mode=False):
# TODO: Figure out what not to install for artifact mode
packages = self.browser_packages.copy()
if not artifact_mode:
if sys.platform.startswith("netbsd"):
packages.extend(["brotli", "gtk3+", "libv4l", "cbindgen"])
else:
packages.extend(["gtk3", "mesa-dri", "v4l_compat", "rust-cbindgen"])
self.pkg_install(*packages)
def install_browser_artifact_mode_packages(self, mozconfig_builder):
self.install_browser_packages(mozconfig_builder, artifact_mode=True)
def upgrade_mercurial(self, current):
self.pkg_install("mercurial")