Bug 196767

Summary: Do not generate empty unified sources when unified builds are disabled
Product: WebKit Reporter: Claudio Saavedra <csaavedra>
Component: Tools / TestsAssignee: Claudio Saavedra <csaavedra>
Status: RESOLVED FIXED    
Severity: Normal CC: annulen, commit-queue, ews-watchlist, keith_miller, krollin, lforschler, simon.fraser, thorton, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Archive of layout-test-results from ews202 for win-future none

Description Claudio Saavedra 2019-04-10 08:04:06 PDT
If unified builds are disabled, the ruby script to generate them is still used to list the sources that need to be compiled. Currently, the script always generates bundled unified sources, even if it's being used just to list all the sources. So when the unified builds are disabled and no files are going to be bundled, the script generates one empty file per bundle manager (that is, one C++ and one ObjectiveC), that gets added to the sources to be compiled.

claudio@weichafe:~/git/gnome/WebKit$ ls WebKitBuild/Release/DerivedSources/JavaScriptCore/unified-sources/ -lh
total 0
-rw-r--r-- 1 claudio claudio 0 Apr 10 18:01 UnifiedSource-da39a3ee-1.cpp
-rw-r--r-- 1 claudio claudio 0 Apr 10 18:01 UnifiedSource-da39a3ee-1-mm.mm

This goes unnoticed, unless you don't have a ObjectiveC compiler installed, like in my case:

/usr/lib/ccache/c++  -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DBWRAP_EXECUTABLE=\"/usr/bin/bwrap\" -DDBUS_PROXY_EXECUTABLE=\"/home/claudio/git/gnome/WebKit/WebKitBuild/DependenciesGTK/Root/bin/xdg-dbus-proxy\" -DGETTEXT_PACKAGE=\"WebKit2GTK-4.0\" -DHAVE_CONFIG_H=1 -DJSC_COMPILATION -DJSC_GLIB_API_ENABLED -DJavaScriptCore_EXPORTS -DSTATICALLY_LINKED_WITH_WTF -DWEBKITGTK_API_VERSION_STRING=\"4.0\" -IDerivedSources/ForwardingHeaders -I. -I../../Source/JavaScriptCore -I../../Source/JavaScriptCore/API -I../../Source/JavaScriptCore/assembler -I../../Source/JavaScriptCore/b3 -I../../Source/JavaScriptCore/b3/air -I../../Source/JavaScriptCore/bindings -I../../Source/JavaScriptCore/builtins -I../../Source/JavaScriptCore/bytecode -I../../Source/JavaScriptCore/bytecompiler -I../../Source/JavaScriptCore/dfg -I../../Source/JavaScriptCore/disassembler -I../../Source/JavaScriptCore/disassembler/ARM64 -I../../Source/JavaScriptCore/disassembler/udis86 -I../../Source/JavaScriptCore/domjit -I../../Source/JavaScriptCore/ftl -I../../Source/JavaScriptCore/heap -I../../Source/JavaScriptCore/debugger -I../../Source/JavaScriptCore/inspector -I../../Source/JavaScriptCore/inspector/agents -I../../Source/JavaScriptCore/inspector/augmentable -I../../Source/JavaScriptCore/inspector/remote -I../../Source/JavaScriptCore/interpreter -I../../Source/JavaScriptCore/jit -I../../Source/JavaScriptCore/llint -I../../Source/JavaScriptCore/parser -I../../Source/JavaScriptCore/profiler -I../../Source/JavaScriptCore/runtime -I../../Source/JavaScriptCore/tools -I../../Source/JavaScriptCore/wasm -I../../Source/JavaScriptCore/wasm/js -I../../Source/JavaScriptCore/yarr -IDerivedSources/JavaScriptCore -IDerivedSources/JavaScriptCore/inspector -IDerivedSources/JavaScriptCore/runtime -IDerivedSources/JavaScriptCore/yarr -IDerivedSources/ForwardingHeaders/JavaScriptCore/glib -IDerivedSources/JavaScriptCore/javascriptcoregtk/jsc -I../../Source/JavaScriptCore/API/glib -IDerivedSources/JavaScriptCore/javascriptcoregtk -I../../Source/JavaScriptCore/inspector/remote/glib -I../../Source/bmalloc -IDerivedSources -I../../Source/ThirdParty -isystem ../DependenciesGTK/Root/include/glib-2.0 -isystem ../DependenciesGTK/Root/lib/glib-2.0/include -fdiagnostics-color=always -Wextra -Wall -Wno-expansion-to-defined -Wno-psabi -Wno-noexcept-type -Wno-maybe-uninitialized -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align  -fno-strict-aliasing -fno-exceptions -fno-rtti -std=c++14 -O3 -DNDEBUG -fPIC   -ffp-contract=off -MD -MT Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-da39a3ee-1-mm.mm.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-da39a3ee-1-mm.mm.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-da39a3ee-1-mm.mm.o -c DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-da39a3ee-1-mm.mm
c++: error trying to exec 'cc1objplus': execvp: No such file or directory
ninja: build stopped: subcommand failed.

I think it would make sense not to go through the bundle managers at all if the script is being used only to list the sources, and therefore avoid generating empty unified source files.
Comment 1 Claudio Saavedra 2019-04-10 08:08:58 PDT
Created attachment 367122 [details]
Patch
Comment 2 EWS Watchlist 2019-04-10 10:04:20 PDT
Comment on attachment 367122 [details]
Patch

Attachment 367122 [details] did not pass win-ews (win):
Output: https://webkit-queues.webkit.org/results/11829863

New failing tests:
js/dom/custom-constructors.html
Comment 3 EWS Watchlist 2019-04-10 10:04:40 PDT
Created attachment 367133 [details]
Archive of layout-test-results from ews202 for win-future

The attached test failures were seen while running run-webkit-tests on the win-ews.
Bot: ews202  Port: win-future  Platform: CYGWIN_NT-6.1-2.10.0-0.325-5-3-x86_64-64bit
Comment 4 WebKit Commit Bot 2019-04-10 10:53:26 PDT
Comment on attachment 367122 [details]
Patch

Clearing flags on attachment: 367122

Committed r244135: <https://trac.webkit.org/changeset/244135>
Comment 5 WebKit Commit Bot 2019-04-10 10:53:28 PDT
All reviewed patches have been landed.  Closing bug.
Comment 6 Radar WebKit Bug Importer 2019-04-10 10:55:46 PDT
<rdar://problem/49781801>