# 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")