Add a script to delete stale zero-byte build files
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 5 Jan 2013 08:20:09 +0000 (08:20 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 5 Jan 2013 08:20:09 +0000 (08:20 +0000)
https://bugs.webkit.org/show_bug.cgi?id=106131

Reviewed by Tony Chang.

Delete zero-byte build files on Mac port for now. It doesn't do anything on other ports.

* BuildSlaveSupport/build.webkit.org-config/master.cfg:
(DeleteStaleBuildFiles): Added.
(Factory.__init__): Add DeleteStaleBuildFiles step.
* BuildSlaveSupport/delete-stale-build-files: Added.
(main): Delete zero-byte files except ones intentionally generated by our build process.
(webkitBuildDirectory): Copied from build-product-archive.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@138888 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg
Tools/BuildSlaveSupport/delete-stale-build-files [new file with mode: 0755]
Tools/ChangeLog

index 9eea10f37b29865098654275adfc3339bfef6588..cbe20dd0dc063c2260bcdd6fa80f0f597a8d8230 100644 (file)
@@ -141,6 +141,12 @@ class KillOldProcesses(shell.Compile):
     descriptionDone = ["killed old processes"]
     command = ["python", "./Tools/BuildSlaveSupport/kill-old-processes"]
 
+class DeleteStaleBuildFiles(shell.Compile):
+    name = "delete stale build files"
+    description = ["deleting stale build files"]
+    descriptionDone = ["delete stale build files"]
+    command = ["python", "./Tools/BuildSlaveSupport/delete-stale-build-files", WithProperties("--platform=%(fullPlatform)s"), WithProperties("--%(configuration)s")]
+
 class InstallEflDependencies(shell.ShellCommand):
     name = "jhbuild"
     description = ["updating efl dependencies"]
@@ -747,6 +753,7 @@ class Factory(factory.BuildFactory):
         # There are multiple Qt slaves running on same machines, so buildslaves shouldn't kill the processes of other slaves.
         if not platform.startswith("qt"):
             self.addStep(KillOldProcesses())
+        self.addStep(DeleteStaleBuildFiles())
         if platform == "win":
             self.addStep(InstallWin32Dependencies())
         if platform.startswith("chromium"):
diff --git a/Tools/BuildSlaveSupport/delete-stale-build-files b/Tools/BuildSlaveSupport/delete-stale-build-files
new file mode 100755 (executable)
index 0000000..15b225e
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/python\r
+# Copyright (C) 2013 Apple Inc.  All rights reserved.\r
+# Copyright (C) 2012 Google Inc. All rights reserved.\r
+#\r
+# Redistribution and use in source and binary forms, with or without\r
+# modification, are permitted provided that the following conditions\r
+# are met:\r
+#\r
+# 1.  Redistributions of source code must retain the above copyright\r
+#     notice, this list of conditions and the following disclaimer.\r
+# 2.  Redistributions in binary form must reproduce the above copyright\r
+#     notice, this list of conditions and the following disclaimer in the\r
+#     documentation and/or other materials provided with the distribution.\r
+#\r
+# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
+# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+\r
+import optparse\r
+import os\r
+import subprocess\r
+import sys\r
+\r
+\r
+def main():\r
+    parser = optparse.OptionParser("usage: %prog [options]")\r
+    parser.add_option("--platform", dest="platform")\r
+    parser.add_option("--debug", action="store_const", const="debug", dest="configuration")\r
+    parser.add_option("--release", action="store_const", const="release", dest="configuration")\r
+\r
+    options, parameters = parser.parse_args()\r
+    if not options.platform:\r
+        parser.error("Platform is required")\r
+        return -1\r
+    if not options.configuration:\r
+        parser.error("Configuration is required")\r
+        return -2\r
+\r
+    genericPlatform = options.platform.split('-', 1)[0]\r
+    if genericPlatform != 'mac':\r
+        print 'Exited without removing any files.'\r
+        return 0\r
+\r
+    directory = webkitBuildDirectory(genericPlatform, options.configuration)\r
+    exit_code = 0\r
+\r
+    for root, _, files in os.walk(directory):\r
+        for name in files:\r
+            full_path = os.path.join(root, name)\r
+            ext = os.path.splitext(full_path)[1]\r
+\r
+            try:\r
+                if ext in ('.dep', '.timestamp', '.txt', '.html', '.js', '.generated') or os.path.getsize(full_path):\r
+                    continue\r
+            except OSError as exception:\r
+                print exception\r
+                continue\r
+\r
+            try:\r
+                os.remove(full_path)\r
+                print 'Removed', full_path\r
+            except OSError as exception:\r
+                print exception\r
+                exit_code += 1\r
+\r
+    return exit_code\r
+\r
+\r
+def webkitBuildDirectory(platform, configuration):\r
+    return subprocess.Popen(['perl', os.path.join(os.path.dirname(__file__), "..", "Scripts", "webkit-build-directory"),\r
+        "--" + platform, "--" + configuration, '--top-level'], stdout=subprocess.PIPE).communicate()[0].strip()\r
+\r
+\r
+if __name__ == '__main__':\r
+    sys.exit(main())\r
index 4f7552edc887b5ac450d2b6047203e3a13f41e8f..673edcf0c6e23ac5222d7a7c3500fbd5c9e49396 100644 (file)
@@ -1,3 +1,19 @@
+2013-01-04  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Add a script to delete stale zero-byte build files
+        https://bugs.webkit.org/show_bug.cgi?id=106131
+
+        Reviewed by Tony Chang.
+
+        Delete zero-byte build files on Mac port for now. It doesn't do anything on other ports.
+
+        * BuildSlaveSupport/build.webkit.org-config/master.cfg:
+        (DeleteStaleBuildFiles): Added.
+        (Factory.__init__): Add DeleteStaleBuildFiles step.
+        * BuildSlaveSupport/delete-stale-build-files: Added.
+        (main): Delete zero-byte files except ones intentionally generated by our build process.
+        (webkitBuildDirectory): Copied from build-product-archive.
+
 2013-01-04  Michael Pruett  <michael@68k.org>
 
         [GTK] Fix build error on GTK due to r138836