diff --git a/python/mozboot/mozboot/windows.py b/python/mozboot/mozboot/windows.py index 7df34750876f..5af91532cf8f 100644 --- a/python/mozboot/mozboot/windows.py +++ b/python/mozboot/mozboot/windows.py @@ -10,14 +10,57 @@ from mozboot.base import BaseBootstrapper class WindowsBootstrapper(BaseBootstrapper): '''Bootstrapper for msys2 based environments for building in Windows.''' + + SYSTEM_PACKAGES = [ + 'mingw-w64-x86_64-make', + 'mingw-w64-x86_64-python2', + 'mingw-w64-x86_64-python2-pip', + 'mingw-w64-x86_64-perl', + 'patch', + 'patchutils', + 'diffutils', + 'autoconf2.13', + 'tar', + 'zip', + 'unzip', + 'mingw-w64-x86_64-toolchain', # TODO: Should be removed when Mercurial is installable from a wheel. + 'mingw-w64-i686-toolchain' + ] + + BROWSER_PACKAGES = [ + 'mingw-w64-x86_64-yasm', + 'mingw-w64-i686-nsis' + ] + + MOBILE_ANDROID_COMMON_PACKAGES = [ + 'wget' + ] + def __init__(self, **kwargs): if 'MOZ_WINDOWS_BOOTSTRAP' not in os.environ or os.environ['MOZ_WINDOWS_BOOTSTRAP'] != '1': raise NotImplementedError('Bootstrap support for Windows is under development. For now, use MozillaBuild ' 'to set up a build environment on Windows. If you are testing Windows Bootstrap support, ' 'try `export MOZ_WINDOWS_BOOTSTRAP=1`') BaseBootstrapper.__init__(self, **kwargs) - raise NotImplementedError('Bootstrap support is not yet available for Windows. ' - 'For now, use MozillaBuild to set up a build environment on Windows.') + if not self.which('pacman.exe'): + raise NotImplementedError('The Windows bootstrapper only works with msys2 with pacman. Get msys2 at ' + 'http://msys2.github.io/') + print 'Using an experimental bootstrapper for Windows.' + + def install_system_packages(self): + self.pacman_install(*self.SYSTEM_PACKAGES) + + def install_browser_packages(self): + self.pacman_install(*self.BROWSER_PACKAGES) + + def install_mobile_android_packages(self): + raise NotImplementedError('We do not support building Android on Windows. Sorry!') + + def install_mobile_android_artifact_mode_packages(self): + raise NotImplementedError('We do not support building Android on Windows. Sorry!') + + def _update_package_manager(self): + self.pacman_update() def run(self, command): subprocess.check_call(command, stdin=sys.stdin)