Bug 964744 - Refactor mozboot packages into the constructor, r=gps

This commit is contained in:
Andrew Halberstadt 2014-01-28 18:27:43 -05:00
Родитель d9443a7dfa
Коммит a9430995cc
7 изменённых файлов: 76 добавлений и 41 удалений

Просмотреть файл

@ -136,6 +136,17 @@ class BaseBootstrapper(object):
self.run_as_root(command)
def apt_update(self):
command = ['apt-get', 'update']
self.run_as_root(command)
def apt_add_architecture(self, arch):
command = ['dpkg', '--add-architecture']
command.extemd(arch)
self.run_as_root(command)
def check_output(self, *args, **kwargs):
"""Run subprocess.check_output even if Python doesn't provide it."""
fn = getattr(subprocess, 'check_output', BaseBootstrapper._check_output)

Просмотреть файл

@ -33,7 +33,9 @@ Or, if you prefer Git:
class Bootstrapper(object):
"""Main class that performs system bootstrap."""
def bootstrap(self):
def __init__(self, finished=FINISHED):
self.instance = None
self.finished = finished
cls = None
args = {}
@ -85,9 +87,12 @@ class Bootstrapper(object):
raise NotImplementedError('Bootstrap support is not yet available '
'for your OS.')
instance = cls(**args)
instance.install_system_packages()
instance.ensure_mercurial_modern()
instance.ensure_python_modern()
self.instance = cls(**args)
print(FINISHED)
def bootstrap(self):
self.instance.install_system_packages()
self.instance.ensure_mercurial_modern()
self.instance.ensure_python_modern()
print(self.finished)

Просмотреть файл

@ -14,14 +14,13 @@ class CentOSBootstrapper(BaseBootstrapper):
self.version = version
self.dist_id = dist_id
def install_system_packages(self):
kern = platform.uname()
self.yum_groupinstall(
self.group_packages = [
'Development Tools',
'Development Libraries',
'GNOME Software Development')
self.yum_install(
'GNOME Software Development',
]
self.packages = [
'alsa-lib-devel',
'autoconf213',
'curl-devel',
@ -36,7 +35,14 @@ class CentOSBootstrapper(BaseBootstrapper):
'mesa-libGL-devel',
'pulseaudio-libs-devel',
'wireless-tools-devel',
'yasm')
'yasm',
]
def install_system_packages(self):
kern = platform.uname()
self.yum_groupinstall(*self.group_packages)
self.yum_install(*self.packages)
yasm = 'http://pkgs.repoforge.org/yasm/yasm-1.1.0-1.el6.rf.i686.rpm'
if 'x86_64' in kern[2]:

Просмотреть файл

@ -42,9 +42,10 @@ class DebianBootstrapper(BaseBootstrapper):
self.version = version
self.dist_id = dist_id
self.packages = self.COMMON_PACKAGES + self.DISTRO_PACKAGES
def install_system_packages(self):
packages = self.COMMON_PACKAGES + self.DISTRO_PACKAGES
self.apt_install(*packages)
self.apt_install(*self.packages)
def _update_package_manager(self):
self.run_as_root(['apt-get', 'update'])

Просмотреть файл

@ -13,13 +13,13 @@ class FedoraBootstrapper(BaseBootstrapper):
self.version = version
self.dist_id = dist_id
def install_system_packages(self):
self.yum_groupinstall(
self.group_packages = [
'Development Tools',
'Development Libraries',
'GNOME Software Development')
'GNOME Software Development',
]
self.yum_install(
self.packages = [
'alsa-lib-devel',
'autoconf213',
'gcc-c++',
@ -32,7 +32,12 @@ class FedoraBootstrapper(BaseBootstrapper):
'mesa-libGL-devel',
'pulseaudio-libs-devel',
'wireless-tools-devel',
'yasm')
'yasm',
]
def install_system_packages(self):
self.yum_groupinstall(*self.group_packages)
self.yum_install(*self.packages)
def upgrade_mercurial(self, current):
self.yum_update('mercurial')

Просмотреть файл

@ -15,22 +15,7 @@ class FreeBSDBootstrapper(BaseBootstrapper):
BaseBootstrapper.__init__(self)
self.version = int(version.split('.')[0])
def pkg_install(self, *packages):
if self.which('pkg'):
command = ['pkg', 'install', '-x']
command.extend([i[0] for i in packages])
else:
command = ['pkg_add', '-Fr']
command.extend([i[-1] for i in packages])
self.run_as_root(command)
def install_system_packages(self):
# using clang since 9.0
if self.version < 9:
self.pkg_install(('gcc',))
self.pkg_install(
self.packages = [
('autoconf-2.13', 'autoconf213'),
('dbus-glib',),
('gmake',),
@ -42,7 +27,26 @@ class FreeBSDBootstrapper(BaseBootstrapper):
('mercurial',),
('pulseaudio',),
('yasm',),
('zip',))
('zip',),
]
# using clang since 9.0
if self.version < 9:
self.packages.append(('gcc',))
def pkg_install(self, *packages):
if self.which('pkg'):
command = ['pkg', 'install', '-x']
command.extend([i[0] for i in packages])
else:
command = ['pkg_add', '-Fr']
command.extend([i[-1] for i in packages])
self.run_as_root(command)
def install_system_packages(self):
self.pkg_install(*self.packages)
def upgrade_mercurial(self, current):
self.pkg_install('mercurial')

Просмотреть файл

@ -10,9 +10,7 @@ class OpenBSDBootstrapper(BaseBootstrapper):
def __init__(self, version):
BaseBootstrapper.__init__(self)
def install_system_packages(self):
# we use -z because there's no other way to say "any autoconf-2.13"
self.run_as_root(['pkg_add', '-z',
self.packages = [
'mercurial',
'llvm',
'autoconf-2.13',
@ -26,4 +24,9 @@ class OpenBSDBootstrapper(BaseBootstrapper):
'gtar',
'wget',
'unzip',
'zip'])
'zip',
]
def install_system_packages(self):
# we use -z because there's no other way to say "any autoconf-2.13"
self.run_as_root(['pkg_add', '-z'] + self.packages)