Bug 190183

Summary: [Win][Ninja] incremental build failure of WebKit due to not triggering recompilations by modifying WebCore forwarding header
Product: WebKit Reporter: Fujii Hironori <Hironori.Fujii>
Component: WebKit2Assignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: don.olmstead
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Fujii Hironori 2018-10-01 20:00:38 PDT
[Win][Ninja] incremental build failure of WebKit due to not triggering recompilations by modifying WebCore forwarding header

Applying Bug 190154 Comment 3 causes incremental build failure of WebKit.
Comment 1 Fujii Hironori 2018-10-01 20:16:46 PDT
> C:\webkit\ga\WebKitBuild\Release>ninja -t deps Source\WebKit\CMakeFiles\WebKit.dir\Shared\curl\WebCoreArgumentCodersCurl.cpp.obj | findstr ResourceRequest
>     derivedsources/forwardingheaders/webcore/ResourceRequest.h
>     derivedsources/forwardingheaders/webcore/ResourceRequestBase.h
> 
> C:\webkit\ga\WebKitBuild\Release>ninja -t query DerivedSources\ForwardingHeaders\WebCore\ResourceRequestBase.h
> DerivedSources/ForwardingHeaders/WebCore/ResourceRequestBase.h:
>   input: CUSTOM_COMMAND
>     ../../Source/WebCore/platform/network/ResourceRequestBase.h
>   outputs:
>     Source/WebCore/WebCoreForwardingHeaders
>     Source/WebCore/CMakeFiles/WebCoreForwardingHeaders

case sensitive issue?
Comment 3 Don Olmstead 2018-10-10 09:46:14 PDT
Won't this just be fixed if we move to copying all files and enumerating them? We're still doing groups in our copying.
Comment 4 Fujii Hironori 2018-10-10 19:15:53 PDT
I don't understand this issue yet. Hopefully, it will be fixed by switching to Clang (Bug 171618).

There is a ticket in Ninja issue tracker.

Make path matching case insensitive on Windows by moroten · Pull Request #1393 · ninja-build/ninja
https://github.com/ninja-build/ninja/pull/1393

Stop `-t msvc -o` from lowercasing paths from /showIncludes output. by nico · Pull Request #589 · ninja-build/ninja
https://github.com/ninja-build/ninja/pull/589
Comment 5 Fujii Hironori 2018-10-11 20:09:46 PDT
Finally, I think maybe I understand this issue.

This is a problem because the output directory
DerivedSources/ForwardingHeaders/WebCore has uppercase. while
Chromium uses lowercase for directory names of generated headers.

Possible solutions are:
* Downcase output directory names for generated headers
* Use MSBuild instead of Ninja
* Fix Ninja
Comment 6 Fujii Hironori 2018-10-11 20:53:33 PDT
I have confirmed 'clang-cl /showIncludes' seems to preserve original casing, and it recompiles fine in this case.

> C:\webkit\gb\WebKitBuild\Release>ninja -t deps Source\WebKit\CMakeFiles\WebKit.dir\Shared\curl\WebCoreArgumentCodersCurl.cpp.obj | findstr ResourceRequest
>     DerivedSources/ForwardingHeaders/WebCore/ResourceRequest.h
>     DerivedSources/ForwardingHeaders/WebCore/ResourceRequestBase.h

This becomes another reason WinCairo port should switch to Clang (Bug 171618).