Title: [233734] trunk/Tools
Revision
233734
Author
aakash_j...@apple.com
Date
2018-07-11 11:10:10 -0700 (Wed, 11 Jul 2018)

Log Message

 2018-07-11  Aakash Jain  <aakash_j...@apple.com>
 
[ews-build] EWS should unapply the patch and build ToT when patch fails to build
https://bugs.webkit.org/show_bug.cgi?id=187358
 
Reviewed by Alexey Proskuryakov.
 
* BuildSlaveSupport/ews-build/factories.py:
(BuildFactory.__init__):
* BuildSlaveSupport/ews-build/steps.py:
(CompileWebKit): Set haltOnFailure to false so as to run next steps (e.g.: un-apply patch, compile ToT).
(CompileWebKit.evaluateCommand): Set patchFailedToBuild property.
(CompileWebKitToT): Build ToT without patch.
(CompileWebKitToT.doStepIf): Run this step only if patch failed to build.
* BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests. Also lower-cased Release and Debug.

Modified Paths

Diff

Modified: trunk/Tools/BuildSlaveSupport/ews-build/factories.py (233733 => 233734)


--- trunk/Tools/BuildSlaveSupport/ews-build/factories.py	2018-07-11 17:29:31 UTC (rev 233733)
+++ trunk/Tools/BuildSlaveSupport/ews-build/factories.py	2018-07-11 18:10:10 UTC (rev 233734)
@@ -63,6 +63,8 @@
         self.addStep(KillOldProcesses())
         self.addStep(CleanBuild())
         self.addStep(CompileWebKit())
+        self.addStep(UnApplyPatchIfRequired())
+        self.addStep(CompileWebKitToT())
 
 
 class JSCTestsFactory(Factory):

Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps.py (233733 => 233734)


--- trunk/Tools/BuildSlaveSupport/ews-build/steps.py	2018-07-11 17:29:31 UTC (rev 233733)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps.py	2018-07-11 18:10:10 UTC (rev 233734)
@@ -138,6 +138,7 @@
     descriptionDone = ["compiled"]
     env = {'MFLAGS': ''}
     warningPattern = ".*arning: .*"
+    haltOnFailure = False
     command = ["perl", "Tools/Scripts/build-webkit", WithProperties("--%(configuration)s")]
 
     def start(self):
@@ -163,7 +164,24 @@
 
         return shell.Compile.start(self)
 
+    def evaluateCommand(self, cmd):
+        if cmd.didFail():
+            self.setProperty('patchFailedToBuild', True)
 
+        return super(CompileWebKit, self).evaluateCommand(cmd)
+
+
+class CompileWebKitToT(CompileWebKit):
+    name = 'compile-webkit-tot'
+    haltOnFailure = True
+
+    def doStepIf(self, step):
+        return self.getProperty('patchFailedToBuild')
+
+    def hideStepIf(self, results, step):
+        return not self.doStepIf(step)
+
+
 class CompileJSCOnly(CompileWebKit):
     name = "build-jsc"
     command = ["perl", "Tools/Scripts/build-jsc", WithProperties("--%(configuration)s")]

Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py (233733 => 233734)


--- trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py	2018-07-11 17:29:31 UTC (rev 233733)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py	2018-07-11 18:10:10 UTC (rev 233734)
@@ -147,7 +147,7 @@
         self.setupStep(CheckStyle())
         self.setProperty('try-codebase', 'internal')
         self.setProperty('platform', 'mac')
-        self.setProperty('configuration', 'Debug')
+        self.setProperty('configuration', 'debug')
 
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
@@ -162,7 +162,7 @@
         self.setupStep(CheckStyle())
         self.setProperty('try-codebase', 'foo')
         self.setProperty('platform', 'mac')
-        self.setProperty('configuration', 'Debug')
+        self.setProperty('configuration', 'debug')
 
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
@@ -177,7 +177,7 @@
         self.setupStep(CheckStyle())
         self.setProperty('try-codebase', 'internal')
         self.setProperty('platform', 'mac')
-        self.setProperty('configuration', 'Debug')
+        self.setProperty('configuration', 'debug')
 
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
@@ -199,7 +199,7 @@
         self.setupStep(CheckStyle())
         self.setProperty('try-codebase', 'internal')
         self.setProperty('platform', 'mac')
-        self.setProperty('configuration', 'Debug')
+        self.setProperty('configuration', 'debug')
 
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
@@ -215,7 +215,7 @@
         self.setupStep(CheckStyle())
         self.setProperty('try-codebase', 'internal')
         self.setProperty('platform', 'mac')
-        self.setProperty('configuration', 'Debug')
+        self.setProperty('configuration', 'debug')
 
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
@@ -383,10 +383,10 @@
     def test_success(self):
         self.setupStep(CleanBuild())
         self.setProperty('fullPlatform', 'ios-11')
-        self.setProperty('configuration', 'Release')
+        self.setProperty('configuration', 'release')
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
-                        command=['python', 'Tools/BuildSlaveSupport/clean-build', '--platform=ios-11', '--Release'],
+                        command=['python', 'Tools/BuildSlaveSupport/clean-build', '--platform=ios-11', '--release'],
                         )
             + 0,
         )
@@ -396,10 +396,10 @@
     def test_failure(self):
         self.setupStep(CleanBuild())
         self.setProperty('fullPlatform', 'ios-simulator-11')
-        self.setProperty('configuration', 'Debug')
+        self.setProperty('configuration', 'debug')
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
-                        command=['python', 'Tools/BuildSlaveSupport/clean-build', '--platform=ios-simulator-11', '--Debug'],
+                        command=['python', 'Tools/BuildSlaveSupport/clean-build', '--platform=ios-simulator-11', '--debug'],
                         )
             + ExpectShell.log('stdio', stdout='Unexpected error.')
             + 2,
@@ -419,10 +419,10 @@
     def test_success(self):
         self.setupStep(CompileWebKit())
         self.setProperty('fullPlatform', 'ios-simulator-11')
-        self.setProperty('configuration', 'Release')
+        self.setProperty('configuration', 'release')
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
-                        command=["perl", "Tools/Scripts/build-webkit", '--Release'],
+                        command=["perl", "Tools/Scripts/build-webkit", '--release'],
                         )
             + 0,
         )
@@ -432,10 +432,10 @@
     def test_failure(self):
         self.setupStep(CompileWebKit())
         self.setProperty('fullPlatform', 'mac-sierra')
-        self.setProperty('configuration', 'Debug')
+        self.setProperty('configuration', 'debug')
         self.expectRemoteCommands(
             ExpectShell(workdir='wkdir',
-                        command=["perl", "Tools/Scripts/build-webkit", '--Debug'],
+                        command=["perl", "Tools/Scripts/build-webkit", '--debug'],
                         )
             + ExpectShell.log('stdio', stdout='1 error generated.')
             + 2,
@@ -444,6 +444,52 @@
         return self.runStep()
 
 
+class TestCompileWebKitToT(BuildStepMixinAdditions, unittest.TestCase):
+    def setUp(self):
+        self.longMessage = True
+        return self.setUpBuildStep()
+
+    def tearDown(self):
+        return self.tearDownBuildStep()
+
+    def test_success(self):
+        self.setupStep(CompileWebKitToT())
+        self.setProperty('fullPlatform', 'ios-simulator-11')
+        self.setProperty('configuration', 'release')
+        self.setProperty('patchFailedToBuild', True)
+        self.expectRemoteCommands(
+            ExpectShell(workdir='wkdir',
+                        command=['perl', 'Tools/Scripts/build-webkit', '--release'],
+                        )
+            + 0,
+        )
+        self.expectOutcome(result=SUCCESS, state_string='compiled')
+        return self.runStep()
+
+    def test_failure(self):
+        self.setupStep(CompileWebKitToT())
+        self.setProperty('fullPlatform', 'mac-sierra')
+        self.setProperty('configuration', 'debug')
+        self.setProperty('patchFailedToBuild', True)
+        self.expectRemoteCommands(
+            ExpectShell(workdir='wkdir',
+                        command=['perl', 'Tools/Scripts/build-webkit', '--debug'],
+                        )
+            + ExpectShell.log('stdio', stdout='1 error generated.')
+            + 2,
+        )
+        self.expectOutcome(result=FAILURE, state_string='compiled (failure)')
+        return self.runStep()
+
+    def test_skip(self):
+        self.setupStep(CompileWebKitToT())
+        self.setProperty('fullPlatform', 'ios-simulator-11')
+        self.setProperty('configuration', 'release')
+        self.expectHidden(True)
+        self.expectOutcome(result=SKIPPED, state_string='compiled (skipped)')
+        return self.runStep()
+
+
 class TestCompileJSCOnly(BuildStepMixinAdditions, unittest.TestCase):
     def setUp(self):
         self.longMessage = True

Modified: trunk/Tools/ChangeLog (233733 => 233734)


--- trunk/Tools/ChangeLog	2018-07-11 17:29:31 UTC (rev 233733)
+++ trunk/Tools/ChangeLog	2018-07-11 18:10:10 UTC (rev 233734)
@@ -1,3 +1,19 @@
+ 2018-07-11  Aakash Jain  <aakash_j...@apple.com>
+ 
+        [ews-build] EWS should unapply the patch and build ToT when patch fails to build
+        https://bugs.webkit.org/show_bug.cgi?id=187358
+ 
+        Reviewed by Alexey Proskuryakov.
+ 
+        * BuildSlaveSupport/ews-build/factories.py:
+        (BuildFactory.__init__):
+        * BuildSlaveSupport/ews-build/steps.py:
+        (CompileWebKit): Set haltOnFailure to false so as to run next steps (e.g.: un-apply patch, compile ToT).
+        (CompileWebKit.evaluateCommand): Set patchFailedToBuild property.
+        (CompileWebKitToT): Build ToT without patch.
+        (CompileWebKitToT.doStepIf): Run this step only if patch failed to build.
+        * BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests. Also lower-cased Release and Debug.
+
 2018-07-11  Robin Morisset  <rmoris...@apple.com>
 
         [WSL] WIP, more of the spec
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to