Show a message and cause the build to immediately fail when any .vsprops files are...
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 8 Nov 2010 17:14:38 +0000 (17:14 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 8 Nov 2010 17:14:38 +0000 (17:14 +0000)
When $WebKitLibrariesDir is set to a non-standard location, the
.vsprops files have to be copied from WebKitLibraries/win to
$WebKitLibrariesDir. When this happens, Visual Studio doesn't pick up
changes to the .vsprops files until the next time it opens the solution
file. Before this patch, the build would soldier on with the old
.vsprops files, leading to strange build failures. Now we detect that
the .vsprops files have been updated, display a message to the user
telling them what to do, and make the build fail immediately.

Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when
.vsprops files are updated

Reviewed by Steve Falkenburg.

JavaScriptCore:

* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
Moved code to copy the tools directory to the new copy-tools.cmd
script. Moved that after the command that writes the buildfailed file
so the build will be considered a failure if copy-tools.cmd fails.
Changed to write the project name into buildfailed like all our other
projects do, so those other projects will know that the failure was due
to this project.

* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
Added new scripts.

* JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Added. Copies
the tools directory to $WebKitLibrariesDir. If any files were copied,
we display a message to the user and exit with error code 1 to cause
the build to fail. In non-interactive builds, we just print the message
to the build log. In interactive builds, we show the message in an
alert.

* JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Added. Uses
Windows Scripting Host to display a message in an alert.

WebKitTools:

Mark Windows builds triggered from Perl as being non-interactive

This affects whether some of our scripts will show alerts vs. printing
to the build log.

* Scripts/webkitdirs.pm:
(buildVisualStudioProject): Set WEBKIT_NONINTERACTIVE_BUILD to 1.

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

JavaScriptCore/ChangeLog
JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make
JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj
JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd [new file with mode: 0755]
JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/show-alert.js [new file with mode: 0644]
WebKitTools/ChangeLog
WebKitTools/Scripts/webkitdirs.pm

index fc31647..f6cb7ef 100644 (file)
@@ -1,3 +1,43 @@
+2010-11-08  Adam Roben  <aroben@apple.com>
+
+        Show a message and cause the build to immediately fail when any
+        .vsprops files are copied
+
+        When $WebKitLibrariesDir is set to a non-standard location, the
+        .vsprops files have to be copied from WebKitLibraries/win to
+        $WebKitLibrariesDir. When this happens, Visual Studio doesn't pick up
+        changes to the .vsprops files until the next time it opens the solution
+        file. Before this patch, the build would soldier on with the old
+        .vsprops files, leading to strange build failures. Now we detect that
+        the .vsprops files have been updated, display a message to the user
+        telling them what to do, and make the build fail immediately.
+
+        Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when
+        .vsprops files are updated
+
+        Reviewed by Steve Falkenburg.
+
+        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
+        Moved code to copy the tools directory to the new copy-tools.cmd
+        script. Moved that after the command that writes the buildfailed file
+        so the build will be considered a failure if copy-tools.cmd fails.
+        Changed to write the project name into buildfailed like all our other
+        projects do, so those other projects will know that the failure was due
+        to this project.
+
+        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
+        Added new scripts.
+
+        * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Added. Copies
+        the tools directory to $WebKitLibrariesDir. If any files were copied,
+        we display a message to the user and exit with error code 1 to cause
+        the build to fail. In non-interactive builds, we just print the message
+        to the build log. In interactive builds, we show the message in an
+        alert.
+
+        * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Added. Uses
+        Windows Scripting Host to display a message in an alert.
+
 2010-11-07  Sam Magnuson  <smagnuson@netflix.com>
 
         Reviewed by Andreas Kling.
index d1e5d46..281ca78 100644 (file)
@@ -1,6 +1,6 @@
 all:
-    -xcopy /y/d/e/i "..\..\..\WebKitLibraries\win\tools" "$(WEBKITLIBRARIESDIR)\tools"
-    touch "$(WEBKITOUTPUTDIR)\buildfailed"
+    echo XXJavaScriptCoreGeneratedXX > "$(WEBKITOUTPUTDIR)\buildfailed"
+    copy-tools.cmd
     bash build-generated-files.sh "$(WEBKITOUTPUTDIR)" "$(WEBKITLIBRARIESDIR)"
     -mkdir 2>NUL "$(WEBKITOUTPUTDIR)\include\JavaScriptCore"
     xcopy /y /d "..\..\API\APICast.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore"
index 7d5ca69..799f7c3 100644 (file)
                        >\r
                </File>\r
                <File\r
+                       RelativePath=".\copy-tools.cmd"\r
+                       >\r
+               </File>\r
+               <File\r
                        RelativePath=".\JavaScriptCoreGenerated.make"\r
                        >\r
                </File>\r
+               <File\r
+                       RelativePath=".\show-alert.js"\r
+                       >\r
+               </File>\r
        </Files>\r
        <Globals>\r
        </Globals>\r
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd
new file mode 100755 (executable)
index 0000000..b141ac4
--- /dev/null
@@ -0,0 +1,21 @@
+@echo off
+
+set LogFile=%TEMP%\copy-tools-log.txt
+xcopy /y/d/e/i "..\..\..\WebKitLibraries\win\tools" "%WebKitLibrariesDir%\tools" > "%LOGFILE%" 2>&1
+"%SYSTEMROOT%\system32\find.exe" "0 File(s) copied" "%LogFile%" > NUL
+if errorlevel 1 set FilesWereCopied=1
+del "%LogFile%"
+
+if "%FilesWereCopied%" NEQ "1" exit
+
+if "%WEBKIT_NONINTERACTIVE_BUILD%" EQU "1" (
+    echo =============================
+    echo =============================
+    echo WebKit's .vsprops files have been updated. The current build will fail. Then you must build again.
+    echo =============================
+    echo =============================
+) else (
+    wscript show-alert.js "WebKit's .vsprops files have been updated. The current build will fail. Then you must close and reopen Visual Studio, then build again."
+)
+
+exit 1
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/show-alert.js b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/show-alert.js
new file mode 100644 (file)
index 0000000..22bbce1
--- /dev/null
@@ -0,0 +1 @@
+WScript.Echo(WScript.Arguments.Item(0));
index 2282e75..0bdf2e3 100644 (file)
@@ -1,3 +1,18 @@
+2010-11-08  Adam Roben  <aroben@apple.com>
+
+        Mark Windows builds triggered from Perl as being non-interactive
+
+        This affects whether some of our scripts will show alerts vs. printing
+        to the build log.
+
+        Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when
+        .vsprops files are updated
+
+        Reviewed by Steve Falkenburg.
+
+        * Scripts/webkitdirs.pm:
+        (buildVisualStudioProject): Set WEBKIT_NONINTERACTIVE_BUILD to 1.
+
 2010-11-08  Gabor Rapcsanyi  <rgabor@inf.u-szeged.hu>
 
         Reviewed by Ojan Vafai.
index 2c1d8da..4bee48e 100644 (file)
@@ -1210,6 +1210,8 @@ sub buildVisualStudioProject
 
     my @command = ($vcBuildPath, $project, $action, $config);
 
+    $ENV{WEBKIT_NONINTERACTIVE_BUILD} = "1";
+
     print join(" ", @command), "\n";
     return system @command;
 }