Bug 183177

Summary: [WKL][Win][CMake] Updating IDL should ensure sources are regenerated
Product: WebKit Reporter: Ross Kirsling <ross.kirsling>
Component: Tools / TestsAssignee: Fujii Hironori <Hironori.Fujii>
Status: RESOLVED FIXED    
Severity: Normal CC: fred.wang, Hironori.Fujii, lforschler
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=183166

Description Ross Kirsling 2018-02-27 14:03:38 PST
After updating an IDL in Sources/WebKitLegacy/win/Interfaces, the build may fail due to outdated DerivedSources.
Comment 1 Ross Kirsling 2018-02-27 14:07:33 PST
Problem example below.

Bug: https://bugs.webkit.org/show_bug.cgi?id=183166
Patch: https://bugs.webkit.org/attachment.cgi?id=334704&action=prettypatch
WinCairo build: https://webkit-queues.webkit.org/results/6695387

Failure output:

> [38/157] Building CXX object Tools\DumpRenderTree\CMakeFiles\DumpRenderTreeLib.dir\win\TestRunnerWin.cpp.obj
>
> FAILED: Tools/DumpRenderTree/CMakeFiles/DumpRenderTreeLib.dir/win/TestRunnerWin.cpp.obj 
>
> "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.12.25827\bin\Hostx64\x64\cl.exe"  /nologo /TP -DBUILDING_WITH_CMAKE=1 -DDumpRenderTreeLib_EXPORTS -DHAVE_CONFIG_H=1 -DNOMINMAX -DUCHAR_TYPE=wchar_t -DUNICODE -DUSE_CONSOLE_ENTRY_POINT -DWINVER=0x601 -DWIN_CAIRO -DWTF_PLATFORM_WIN_CAIRO=1 -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_UNICODE -D_WIN32_WINNT=0x601 -D_WINDOWS -D_WINSOCKAPI_="" -I..\..\WebKitLibraries\win\include -IDerivedSources\DumpRenderTree -I..\..\Tools\TestRunnerShared\UIScriptContext -I..\..\Tools\TestRunnerShared\Bindings -I..\..\Tools\DumpRenderTree -I..\..\Source -I..\..\Source\WebCore\testing\js -I..\..\Tools\DumpRenderTree\win -I..\..\Tools\DumpRenderTree\TestNetscapePlugIn -I..\..\Tools\DumpRenderTree\TestNetscapePlugIn\ForwardingHeaders -I..\..\Tools\DumpRenderTree\TestNetscapePlugIn\Tests -I..\..\Tools\DumpRenderTree\TestNetscapePlugIn\win -I..\..\Tools\DumpRenderTree\TestNetscapePlugIn\Tests\win -I\win -IDerivedSources\WebKitLegacy\Interfaces -I..\..\Tools\DumpRenderTree\cairo -I..\..\WebKitLibraries\win\include\cairo -I..\..\Source\WebCore\platform\mock -I..\..\Source\WebCore\testing -IDerivedSources\WebCore -I. -I..\..\Source\WebCore -I..\..\Source\WebCore\Modules\airplay -I..\..\Source\WebCore\Modules\beacon -I..\..\Source\WebCore\Modules\applepay -I..\..\Source\WebCore\Modules\applepay\paymentrequest -I..\..\Source\WebCore\Modules\cache -I..\..\Source\WebCore\Modules\credentialmanagement -I..\..\Source\WebCore\Modules\encryptedmedia -I..\..\Source\WebCore\Modules\encryptedmedia\legacy -I..\..\Source\WebCore\Modules\entriesapi -I..\..\Source\WebCore\Modules\fetch -I..\..\Source\WebCore\Modules\geolocation -I..\..\Source\WebCore\Modules\indexeddb -I..\..\Source\WebCore\Modules\indexeddb\client -I..\..\Source\WebCore\Modules\indexeddb\server -I..\..\Source\WebCore\Modules\indexeddb\shared -I..\..\Source\WebCore\Modules\mediacapabilities -I..\..\Source\WebCore\Modules\mediacontrols -I..\..\Source\WebCore\Modules\mediasession -I..\..\Source\WebCore\Modules\mediasource -I..\..\Source\WebCore\Modules\mediastream -I..\..\Source\WebCore\Modules\navigatorcontentutils -I..\..\Source\WebCore\Modules\notifications -I..\..\Source\WebCore\Modules\paymentrequest -I..\..\Source\WebCore\Modules\plugins -I..\..\Source\WebCore\Modules\quota -I..\..\Source\WebCore\Modules\speech -I..\..\Source\WebCore\Modules\streams -I..\..\Source\WebCore\Modules\webaudio -I..\..\Source\WebCore\Modules\webauthn -I..\..\Source\WebCore\Modules\webdatabase -I..\..\Source\WebCore\Modules\webdriver -I..\..\Source\WebCore\Modules\websockets -I..\..\Source\WebCore\Modules\webvr -I..\..\Source\WebCore\accessibility -I..\..\Source\WebCore\animation -I..\..\Source\WebCore\bindings -I..\..\Source\WebCore\bindings\js -I..\..\Source\WebCore\bridge -I..\..\Source\WebCore\bridge\c -I..\..\Source\WebCore\bridge\jsc -I..\..\Source\WebCore\contentextensions -I..\..\Source\WebCore\crypto -I..\..\Source\WebCore\crypto\algorithms -I..\..\Source\WebCore\crypto\keys -I..\..\Source\WebCore\crypto\parameters -I..\..\Source\WebCore\css -I..\..\Source\WebCore\css\parser -I..\..\Source\WebCore\cssjit -I..\..\Source\WebCore\dom -I..\..\Source\WebCore\dom\default -I..\..\Source\WebCore\dom\messageports -I..\..\Source\WebCore\domjit -I..\..\Source\WebCore\editing -I..\..\Source\WebCore\fileapi -I..\..\Source\WebCore\history -I..\..\Source\WebCore\html -I..\..\Source\WebCore\html\canvas -I..\..\Source\WebCore\html\forms -I..\..\Source\WebCore\html\parser -I..\..\Source\WebCore\html\shadow -I..\..\Source\WebCore\html\track -I..\..\Source\WebCore\inspector -I..\..\Source\WebCore\inspector\agents -I..\..\Source\WebCore\inspector\agents\page -I..\..\Source\WebCore\inspector\agents\worker -I..\..\Source\WebCore\loader -I..\..\Source\WebCore\loader\appcache -I..\..\Source\WebCore\loader\archive -I..\..\Source\WebCore\loader\archive\mhtml -I..\..\Source\WebCore\loader\cache -I..\..\Source\WebCore\loader\icon -I..\..\Source\WebCore\mathml -I..\..\Source\WebCore\page -I..\..\Source\WebCore\page\animation -I..\..\Source\WebCore\page\csp -I..\..\Source\WebCore\page\scrolling -I..\..\Source\WebCore\platform -I..\..\Source\WebCore\platform\animation -I..\..\Source\WebCore\platform\audio -I..\..\Source\WebCore\platform\crypto -I..\..\Source\WebCore\platform\encryptedmedia -I..\..\Source\WebCore\platform\gamepad -I..\..\Source\WebCore\platform\graphics -I..\..\Source\WebCore\platform\graphics\cpu\arm -I..\..\Source\WebCore\platform\graphics\cpu\arm\filters -I..\..\Source\WebCore\platform\graphics\displaylists -I..\..\Source\WebCore\platform\graphics\filters -I..\..\Source\WebCore\platform\graphics\harfbuzz -I..\..\Source\WebCore\platform\graphics\harfbuzz\ng -I..\..\Source\WebCore\platform\graphics\iso -I..\..\Source\WebCore\platform\graphics\opentype -I..\..\Source\WebCore\platform\graphics\transforms -I..\..\Source\WebCore\platform\mediastream -I..\..\Source\WebCore\platform\mediastream\libwebrtc -I..\..\Source\WebCore\platform\mock\mediasource -I..\..\Source\WebCore\platform\network -I..\..\Source\WebCore\platform\sql -I..\..\Source\WebCore\platform\text -I..\..\Source\WebCore\platform\text\icu -I..\..\Source\WebCore\platform\vr -I..\..\Source\WebCore\plugins -I..\..\Source\WebCore\rendering -I..\..\Source\WebCore\rendering\line -I..\..\Source\WebCore\rendering\mathml -I..\..\Source\WebCore\rendering\shapes -I..\..\Source\WebCore\rendering\style -I..\..\Source\WebCore\rendering\svg -I..\..\Source\WebCore\rendering\updating -I..\..\Source\WebCore\replay -I..\..\Source\WebCore\storage -I..\..\Source\WebCore\style -I..\..\Source\WebCore\svg -I..\..\Source\WebCore\svg\animation -I..\..\Source\WebCore\svg\graphics -I..\..\Source\WebCore\svg\graphics\filters -I..\..\Source\WebCore\svg\properties -I..\..\Source\WebCore\websockets -I..\..\Source\WebCore\workers -I..\..\Source\WebCore\workers\service -I..\..\Source\WebCore\workers\service\context -I..\..\Source\WebCore\workers\service\server -I..\..\Source\WebCore\xml -I..\..\Source\WebCore\xml\parser -IDerivedSources\ForwardingHeaders\ANGLE -I..\..\Source\WebCore\platform\graphics\gpu -I..\include\private -I..\include\private\JavaScriptCore -I..\..\Source\WebCore\accessibility\win -I..\..\Source\WebCore\page\win -I..\..\Source\WebCore\platform\graphics\egl -I..\..\Source\WebCore\platform\graphics\opengl -I..\..\Source\WebCore\platform\graphics\win -I..\..\Source\WebCore\platform\network\win -I..\..\Source\WebCore\platform\win -I..\..\Source\ThirdParty\ANGLE\include -I..\..\Source\ThirdParty\ANGLE\include\egl -IDerivedSources\PAL -I..\..\Source\WebCore\platform\cf -I..\..\Source\WebCore\platform\cf\win -I..\..\Source\WebCore\platform\graphics\cairo -I..\..\Source\WebCore\platform\network\curl -I..\..\Source\WebCore\platform\image-decoders -I..\..\Source\WebCore\platform\image-decoders\bmp -I..\..\Source\WebCore\platform\image-decoders\gif -I..\..\Source\WebCore\platform\image-decoders\ico -I..\..\Source\WebCore\platform\image-decoders\jpeg -I..\..\Source\WebCore\platform\image-decoders\png -I..\..\Source\WebCore\platform\image-decoders\webp -I..\..\Source\WebCore\platform\graphics\texmap -I..\..\Source\WebCore\loader\archive\cf -IDerivedSources\ForwardingHeaders -I..\..\Source\bmalloc -IDerivedSources -I..\..\Source\ThirdParty -I..\..\Source\WebKitLegacy\Storage -I..\..\Source\WebKitLegacy\WebCoreSupport -I..\include\private\WebCore -I..\..\Source\WebKitLegacy\win -I..\..\Source\WebKitLegacy\win\plugins -I..\..\Source\WebKitLegacy\win\WebCoreSupport -IDerivedSources\WebKitLegacy\include -IDerivedSources\ForwardingHeaders\ANGLE\include -IDerivedSources\ForwardingHeaders\ANGLE\include\egl -IDerivedSources\ForwardingHeaders\ANGLE\include\khr -IDerivedSources\WebKitLegacy /DWIN32 /D_WINDOWS /W4 /GR- /EHs- /EHc-  /MD /O2 /Ob2 /DNDEBUG   /wd4018 /wd4068 /wd4099 /wd4100 /wd4127 /wd4138 /wd4146 /wd4180 /wd4189 /wd4201 /wd4206 /wd4244 /wd4251 /wd4267 /wd4275 /wd4288 /wd4291 /wd4305 /wd4309 /wd4344 /wd4355 /wd4389 /wd4396 /wd4456 /wd4457 /wd4458 /wd4459 /wd4481 /wd4503 /wd4505 /wd4510 /wd4512 /wd4530 /wd4610 /wd4611 /wd4646 /wd4702 /wd4706 /wd4722 /wd4800 /wd4819 /wd4951 /wd4952 /wd4996 /wd6011 /wd6031 /wd6211 /wd6246 /wd6255 /wd6387 /Zi /GS /EHa- /EHc- /EHs- /fp:except- /analyze- /bigobj /Gy- /openmp- /GF- /utf-8 /validate-charset /Oy- /Yu"DumpRenderTreePrefix.h" /FI"DumpRenderTreePrefix.h" /Fp"C:/WebKit-EWS/WebKit/WebKitBuild/Release/Tools/DumpRenderTree/DumpRenderTreeLib_SOURCES/DumpRenderTreePrefix.pch" /showIncludes /FoTools\DumpRenderTree\CMakeFiles\DumpRenderTreeLib.dir\win\TestRunnerWin.cpp.obj /FdTools\DumpRenderTree\CMakeFiles\DumpRenderTreeLib.dir\ /FS -c ..\..\Tools\DumpRenderTree\win\TestRunnerWin.cpp
>
> ..\..\Tools\DumpRenderTree\win\TestRunnerWin.cpp(549): error C2039: 'setSpatialNavigationEnabled': is not a member of 'IWebPreferencesPrivate'
> C:\WebKit-EWS\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\WebKitLegacy/WebKit.h(30830): note: see declaration of 'IWebPreferencesPrivate'
Comment 2 Fujii Hironori 2018-02-28 20:56:27 PST
There are two problems.

One is Ninja incremental build failures.
It is easy to reproduce this just by applying the patch.
This is the same issue with Bug 182757.

Another is Visual Studio incremental build failure observed in this build log.
https://webkit-queues.webkit.org/patch/334754/win-ews
I can't reproduce this failure. And this is so weird.

The generated WebKit.h is copied in the POST_BUILD event of WebKitLegacyGUID at the moment.

> WEBKIT_MAKE_FORWARDING_HEADERS(WebKitLegacyGUID
>     DESTINATION ${FORWARDING_HEADERS_DIR}/WebKitLegacy
>     FILES win/WebKitCOMAPI.h win/CFDictionaryPropertyBag.h
>     DERIVED_SOURCE_DIRECTORIES ${DERIVED_SOURCES_WEBKITLEGACY_DIR}/Interfaces
>     FLATTENED
> )

According to the build log, WebKitLegacyGUID was rebuilt properly.

> WebKitLegacyGUID.vcxproj -> C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\lib32\WebKitGUID.lib

I don't know why the generated WebKit.h wasn't copied in this case.
Comment 3 Fujii Hironori 2019-04-02 20:21:31 PDT
Fixed in Bug 182757.