Bug 16210 - Building on Windows outside HOME directory fails
Summary: Building on Windows outside HOME directory fails
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows XP
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-11-30 12:56 PST by Brent Fulgham
Modified: 2007-12-02 09:42 PST (History)
1 user (show)

See Also:


Attachments
Build log of failure (49.04 KB, text/plain)
2007-11-30 12:57 PST, Brent Fulgham
no flags Details
Build after a clean... (563.96 KB, text/plain)
2007-12-01 11:16 PST, Brent Fulgham
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Brent Fulgham 2007-11-30 12:56:54 PST
OVERVIEW:
Using the results of update-webkit as of 11:30 AM on 2007-11-30 (and various attempts yesterday) I get a build failure if I attempt to build WebKit outside of my Cygwin home directory.

STEPS TO REPRODUCE:
1.  Follow installation instructions for build tools from WebKit.org site.
2.  Perform the "svn checkout" in a non-home directory, e.g.:

$ cd /cygdrive/d/Development
$ svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit
... time passes ...

3.  Update PATH to use /cygdrive/d/Development/WebKit/WebKitTools/Scripts
4.  Copy the "WebKitSupportLibrary.zip" to /cygdrive/d/Development/WebKit
5.  Perform an "update-webkit".
6.  Perform a "build-webkit".
7.  Build fails complaining of missing files (e.g,. "wtf/Platform.h") that are
    clearly present in the directory structure, e.g.:

9>GEN_DOMHTMLTextAreaElement.cpp
9>d:\development\WebKit\WebKit\WebKitBuild\Include\JavaScriptCore\config.h(22) :
 fatal error C1083: Cannot open include file: 'wtf/Platform.h': No such file or
directory
9>GEN_DOMHTMLTableSectionElement.cpp

...

12>Build log was saved at "file://d:\development\WebKit\WebKit\WebKitBuild\obj\T
estNetscapePlugin\Release\BuildLog.htm"
12>TestNetscapePlugin - 3 error(s), 0 warning(s)
11>d:\development\webkit\webkit\webkittools\drosera\win\DebuggerClient.h(35) : f
atal error C1083: Cannot open include file: 'WebCore/COMPtr.h': No such file or
directory

WORKAROUND:

If I move the source tree to my home directory:  /cygdrive/c/Fulgham/WebKit,
everything builds properly.

bfulgham@bfulgham ~/WebKit
$ pwd
/cygdrive/c/Fulgham/WebKit

PLATFORM:
* Windows XP SP 2
* Microsoft Visual Studio 2005 Professional (Service Pack 1).
* Cygwin installation based on the WebKit installer package, updated yesterday to current versions of everything.

Note:  I am building using Microsoft Platform SDK from 2005 (not the current 2006 version).  I do not believe this is related, though I will be updating this today.
Comment 1 Brent Fulgham 2007-11-30 12:57:57 PST
Created attachment 17610 [details]
Build log of failure

Attached is the build log from my failed build attempt.
Comment 2 Adam Roben (:aroben) 2007-12-01 01:28:34 PST
These lines from the build log indicate that things went badly right from the start:

1>------ Build started: Project: dftables, Configuration: Debug Win32 ------
2>------ Build started: Project: WTF, Configuration: Release Win32 ------
1>dftables : warning PRJ0009 : Build log could not be opened for writing.
1>Make sure that the file is not open by another process and is not write-protected.
2>WTF : warning PRJ0009 : Build log could not be opened for writing.
2>Make sure that the file is not open by another process and is not write-protected.

Comment 3 Brent Fulgham 2007-12-01 11:16:45 PST
Created attachment 17631 [details]
Build after a clean...

Revised build log.  Note that after a failure, devenv often stays running locking log files and so forth.  I purged everything and reran, which should give you a better log.
Comment 4 Adam Roben (:aroben) 2007-12-01 11:24:23 PST
Comment on attachment 17631 [details]
Build after a clean...

The first error:

5>..\platform\graphics\Color.cpp(136) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

seems to be due to something being wrong with gperf.
Comment 5 Brent Fulgham 2007-12-02 09:16:44 PST
========== Build: 13 succeeded, 0 failed, 0 up-to-date, 0 skipped =========

Okay -- the build succeeded.  And I figured out what happened:

1.  I initially attempted to build WebKit in /cygdrive/d/Development/WebKit.
2.  I had a pre-existing copy of Cygwin installed, and assumed this would be sufficient to build.
3.  Build failed.
4.  I used the WebKit-team provided tool to download the requisite build tools.
5.  I tried building WebKit again, which failed.
6.  I moved the sources (but not the WebKitBuild directory) to /cygdrive/c/Fulgham (the Home Directory) and lo-and-behold the build succeeded.

CAUSES:
1.  My original install of Cygwin was missing a few tools, namely gperf.
2.  The missing gperf caused some zero-length files in the DerivedSources tree.
3.  Because the build system does not remove the DerivedSources tree, they continue to be used from build to build, even after a "build-webkit --clean"
4.  The zero-length files caused the build to fail.

CONCLUSION
* The build system is fine.
* I recommend the "build-webkit --clean" remove the auto-generated files to save future fellow idiots the time spent tracking this down!  :-)

Comment 6 Brent Fulgham 2007-12-02 09:20:15 PST
One further note:

I have noticed that after a build fails, the "devenv" executable (and sometimes the "cl", "BuildHelper" programs) continue to run, locking things like the build logs.

I use Xoreax IncrediBuild, so perhaps that tool is somehow related.

At any rate, these locked files can cause the build to fail as well.

However, if I make sure everything is killed in the Task List, and the correct Cygwin tools are installed it seems to build just fine.
Comment 7 Adam Roben (:aroben) 2007-12-02 09:42:52 PST
Closing based on Brent's comments.