diff --git a/buildbot/master/files/config/environments.py b/buildbot/master/files/config/environments.py index 464fc561..7de1392a 100644 --- a/buildbot/master/files/config/environments.py +++ b/buildbot/master/files/config/environments.py @@ -43,7 +43,7 @@ def without(self, to_unset): 'RUST_BACKTRACE': '1', }) -build_windows = build_common + Environment({ +build_windows_gnu = build_common + Environment({ 'CARGO_HOME': '/home/Administrator/.cargo', 'MSYS': 'winsymlinks=lnk', 'MSYSTEM': 'MINGW64', @@ -60,6 +60,22 @@ def without(self, to_unset): 'SERVO_CACHE_DIR': '/home/Administrator/.servo', }) +build_windows_msvc = build_common + Environment({ + 'CARGO_HOME': r'C:\Users\Administrator\.cargo', + 'PATH': ';'.join([ + r'C:\Python27', + r'C:\Python27\Scripts', + r'C:\Windows\system32', + r'C:\Windows', + r'C:\Windows\System32\Wbem', + r'C:\Windows\System32\WindowsPowerShell\v1.0', + r'C:\Program Files\Amazon\cfn-bootstrap', + r'C:\Program Files\Git\cmd', + r'C:\Program Files (x86)\WiX Toolset v3.10\bin', + ]), + 'SERVO_CACHE_DIR': r'C:\Users\Administrator\.servo', +}) + build_mac = build_common + Environment({ 'CARGO_HOME': '/Users/servo/.cargo', 'CCACHE': '/usr/local/bin/ccache', diff --git a/buildbot/master/files/config/factories.py b/buildbot/master/files/config/factories.py index bab3a7be..7d536324 100644 --- a/buildbot/master/files/config/factories.py +++ b/buildbot/master/files/config/factories.py @@ -89,7 +89,8 @@ def setDefaultWorkdir(self, workdir): @defer.inlineCallbacks def run(self): - self.is_windows = re.match('windows.*', self.builder_name) is not None + self.is_windows = re.match('windows', self.builder_name) + self.is_win_gnu = re.match('windows-gnu', self.builder_name) try: show_cmd = "cat" if not self.is_windows else "type" native_yaml_path = self.yaml_path @@ -176,8 +177,8 @@ def make_step(self, command): command = command.split(' ') - # Add `bash -l` before every command on Windows builders - bash_args = ["bash", "-l"] if self.is_windows else [] + # Add `bash -l` before every command on Windows GNU builders + bash_args = ["bash", "-l"] if self.is_win_gnu else [] step_kwargs['command'] = bash_args + command if self.is_windows: step_env += envs.Environment({ @@ -193,7 +194,7 @@ def make_step(self, command): for arg in args: # Change Step class to capture warnings as needed # (steps.Compile and steps.Test catch warnings) - if arg == './mach': + if arg == './mach' or arg == 'mach.bat': mach_arg = next(args) step_desc = [mach_arg] if re.match('build(-.*)?', mach_arg): @@ -211,11 +212,14 @@ def make_step(self, command): step_kwargs['logfiles'][logfile] = logfile # Provide environment variables for s3cmd - elif arg == './etc/ci/upload_nightly.sh': + elif ( + arg == './etc/ci/upload_nightly.sh' or + arg == r'.\etc\ci\upload_nightly.sh' + ): step_kwargs['logEnviron'] = False step_env += envs.upload_nightly - if self.is_windows: - # s3cmd on Windows only works within msys + if self.is_win_gnu: + # s3cmd on Windows GNU does not work in MINGW step_env['MSYSTEM'] = 'MSYS' step_env['PATH'] = ';'.join([ r'C:\msys64\usr\bin', diff --git a/buildbot/master/files/config/master.cfg b/buildbot/master/files/config/master.cfg index 4bf986b3..9b288328 100644 --- a/buildbot/master/files/config/master.cfg +++ b/buildbot/master/files/config/master.cfg @@ -73,7 +73,8 @@ c['schedulers'].append(schedulers.AnyBranchScheduler( "mac-rel-css", "mac-rel-wpt1", "mac-rel-wpt2", - "windows-dev", + "windows-gnu-dev", + "windows-msvc-dev", ], change_filter=util.ChangeFilter(filter_fn=servo_auto_try_filter), )) @@ -101,8 +102,10 @@ c['schedulers'].append(schedulers.ForceScheduler( "mac-rel-intermittent", "mac-rel-wpt1", "mac-rel-wpt2", - "windows-dev", - "windows-nightly", + "windows-gnu-dev", + "windows-msvc-dev", + "windows-gnu-nightly", + "windows-msvc-nightly", ], )) c['schedulers'].append(schedulers.Nightly( @@ -114,7 +117,8 @@ c['schedulers'].append(schedulers.Nightly( "linux-rel-intermittent", "mac-nightly", "mac-rel-intermittent", - "windows-nightly", + "windows-gnu-nightly", + "windows-msvc-nightly", ], hour=1, minute=0, @@ -167,8 +171,14 @@ c['builders'] = [ DynamicServoBuilder("mac-rel-intermittent", MAC_SLAVES, envs.build_mac), DynamicServoBuilder("mac-rel-wpt1", MAC_SLAVES, envs.build_mac), DynamicServoBuilder("mac-rel-wpt2", MAC_SLAVES, envs.build_mac), - DynamicServoBuilder("windows-dev", WINDOWS_SLAVES, envs.build_windows), - DynamicServoBuilder("windows-nightly", WINDOWS_SLAVES, envs.build_windows), + DynamicServoBuilder("windows-gnu-dev", WINDOWS_SLAVES, + envs.build_windows_gnu), + DynamicServoBuilder("windows-msvc-dev", WINDOWS_SLAVES, + envs.build_windows_msvc), + DynamicServoBuilder("windows-gnu-nightly", WINDOWS_SLAVES, + envs.build_windows_gnu), + DynamicServoBuilder("windows-msvc-nightly", WINDOWS_SLAVES, + envs.build_windows_msvc), # The below builders are not dynamic but rather have hard-coded factories util.BuilderConfig( name="doc", diff --git a/homu/files/cfg.toml b/homu/files/cfg.toml index 831ba41e..30d39689 100644 --- a/homu/files/cfg.toml +++ b/homu/files/cfg.toml @@ -232,8 +232,8 @@ secret = "{{ pillar["homu"]["gh-webhook-secret"] }}" [repo.servo.buildbot] url = "http://build.servo.org" secret = "{{ pillar["homu"]["buildbot-secret"] }}" -builders = ["linux-dev", "linux-rel-css", "linux-rel-wpt", "mac-dev-unit", "mac-rel-wpt1", "mac-rel-wpt2", "mac-rel-css", "android", "arm32", "arm64", "windows-dev"] -try_builders = ["linux-dev", "linux-rel-css", "linux-rel-wpt", "mac-dev-unit", "mac-rel-wpt1", "mac-rel-wpt2", "mac-rel-css", "android", "arm32", "arm64", "windows-dev"] +builders = ["linux-dev", "linux-rel-css", "linux-rel-wpt", "mac-dev-unit", "mac-rel-wpt1", "mac-rel-wpt2", "mac-rel-css", "android", "arm32", "arm64", "windows-dev-gnu"] +try_builders = ["linux-dev", "linux-rel-css", "linux-rel-wpt", "mac-dev-unit", "mac-rel-wpt1", "mac-rel-wpt2", "mac-rel-css", "android", "arm32", "arm64", "windows-dev-gnu"] username = "{{ pillar["homu"]["buildbot-http-user"] }}" password = "{{ pillar["homu"]["buildbot-http-pass"] }}"