Bug 191477 - WebPageMessages.h is not always regenerated
Summary: WebPageMessages.h is not always regenerated
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: WebKit Local Build
Hardware: All All
: P2 Normal
Assignee: Keith Rollin
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2018-11-09 11:35 PST by Daniel Bates
Modified: 2018-11-09 14:34 PST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Bates 2018-11-09 11:35:19 PST
The change <https://trac.webkit.org/changeset/238047> (bug #190565) added a new message, HardwareKeyboardAvailabilityChanged, to WebPage.messages.in and the iOS bots failed to build because WebPageMessages.h is not being regenerated:

[[
CompileC /Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource33-mm.o /Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource33-mm.mm normal arm64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Volumes/Data/slave/ios-12-release/build/Source/WebKit
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c++ -arch arm64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++14 -stdlib=libc++ -fobjc-weak -gmodules -Wno-trigraphs -fno-exceptions -fno-rtti -fno-sanitize=vptr -fpascal-strings -Os -fno-common -Werror -Wno-missing-field-initializers -Wmissing-prototypes -Wunreachable-code -Wno-implicit-atomic-properties -Wno-objc-interface-ivars -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wnon-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wsign-compare -Wno-shorten-64-to-32 -Wnewline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -Wno-c++11-extensions -DNDEBUG -DENABLE_3D_TRANSFORMS -DENABLE_ACCELERATED_OVERFLOW_SCROLLING -DENABLE_APPLE_PAY -DENABLE_APPLE_PAY_SESSION_V3 -DENABLE_APPLE_PAY_SESSION_V4 -DENABLE_APPLICATION_MANIFEST -DENABLE_ATTACHMENT_ELEMENT -DENABLE_AVF_CAPTIONS -DENABLE_CACHE_PARTITIONING -DENABLE_CHANNEL_MESSAGING -DENABLE_CONTENT_FILTERING -DENABLE_CSS_BOX_DECORATION_BREAK -DENABLE_CSS_COMPOSITING -DENABLE_CSS_PAINTING_API -DENABLE_CSS_SCROLL_SNAP -DENABLE_CSS_SELECTORS_LEVEL4 -DENABLE_CSS_TRAILING_WORD -DENABLE_CURSOR_VISIBILITY -DENABLE_CSS_CONIC_GRADIENTS -DENABLE_DATA_INTERACTION -DENABLE_DATACUE_VALUE -DENABLE_DATALIST_ELEMENT -DENABLE_DEVICE_ORIENTATION -DENABLE_DRAG_SUPPORT -DENABLE_ENCRYPTED_MEDIA -DENABLE_EXPERIMENTAL_FEATURES -DENABLE_FILTERS_LEVEL_2 -DENABLE_FTL_JIT -DENABLE_FULLSCREEN_API -DENABLE_GAMEPAD -DENABLE_GEOLOCATION -DENABLE_INDEXED_DATABASE -DENABLE_INDEXED_DATABASE_IN_WORKERS -DENABLE_INPUT_TYPE_COLOR -DENABLE_INPUT_TYPE_DATE -DENABLE_INPUT_TYPE_DATETIMELOCAL -DENABLE_INPUT_TYPE_MONTH -DENABLE_INPUT_TYPE_TIME -DENABLE_INPUT_TYPE_WEEK -DENABLE_INTERSECTION_OBSERVER -DENABLE_INTL -DENABLE_KEYBOARD_CODE_ATTRIBUTE -DENABLE_KEYBOARD_KEY_ATTRIBUTE -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER -DENABLE_LEGACY_ENCRYPTED_MEDIA -DENABLE_LETTERPRESS -DENABLE_MATHML -DENABLE_MEDIA_CAPTURE -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_STREAM -DENABLE_METER_ELEMENT -DENABLE_NAVIGATOR_STANDALONE -DENABLE_PAYMENT_REQUEST -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESOURCE_USAGE -DENABLE_SERVICE_WORKER -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SUBTLE_CRYPTO -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USER_MESSAGE_HANDLERS -DENABLE_USERSELECT_ALL -DENABLE_VARIATION_FONTS -DENABLE_VIDEO -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_WEB_AUDIO -DENABLE_WEB_AUTHN -DENABLE_WEB_RTC -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WEBMETAL -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DHAVE_CORE_PREDICTION -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -DFRAMEWORK_NAME=WebKit -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -Winvalid-offsetof -miphoneos-version-min=12.0 -g -gline-tables-only -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -iquote /Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-generated-files.hmap -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-own-target-headers.hmap -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-all-target-headers.hmap -iquote /Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/WebKit-project-headers.hmap -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/include -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/usr/local/include -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/WebCore.framework/PrivateHeaders/ForwardingHeaders -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2 -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/usr/local/include/WebKitAdditions -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/usr/local/include/WebKitAdditions -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/usr/local/include/webrtc -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/usr/local/include/webrtc -I/Volumes/Data/slave/ios-12-release/build/Source/WebKit -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/DerivedSources/arm64 -I/Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos -F/Volumes/Data/slave/ios-12-release/build/Source/WebKit/../../WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/12 -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/PrivateFrameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Carbon.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Quartz.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/PrivateFrameworks -isystem /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -include /Volumes/Data/slave/ios-12-release/build/WebKitBuild/PrecompiledHeaders/WebKit2Prefix-fddeowvwnbarwhdpyltrvkwishzv/WebKit2Prefix.h -MMD -MT dependencies -MF /Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource33-mm.d --serialize-diagnostics /Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource33-mm.dia -c /Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource33-mm.mm -o /Volumes/Data/slave/ios-12-release/build/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/UnifiedSource33-mm.o
In file included from /Volumes/Data/slave/ios-12-release/build/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource33-mm.mm:3:
/Volumes/Data/slave/ios-12-release/build/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:1095:40: error: no member named 'HardwareKeyboardAvailabilityChanged' in namespace 'Messages::WebPage'
    m_process->send(Messages::WebPage::HardwareKeyboardAvailabilityChanged(), m_pageID);
                    ~~~~~~~~~~~~~~~~~~~^
1 error generated.
]]
<https://build.webkit.org/builders/Apple%20iOS%2012%20Release%20%28Build%29/builds/1177/steps/compile-webkit/logs/stdio>
Comment 1 Daniel Bates 2018-11-09 11:39:26 PST
Could this be caused by bug #191324.
Comment 2 Keith Rollin 2018-11-09 12:20:01 PST
I performed a clean build, changed WebPage.messages.in by removing SetControlledByAutomation, and performed an incremental build of WebKit with just:

$ cd .../Sources/WebKit
$ make

The output included:

PhaseScriptExecution Generate\ Derived\ Sources /Volumes/Data/dev/webkit/branches/test-derived-sources-incremental-change/OpenSource/WebKitBuild/WebKit.build/Release/Derived\ Sources.build/Script-C0CE72841247E66800BC0EC4.sh
    cd /Volumes/Data/dev/webkit/branches/test-derived-sources-incremental-change/OpenSource/Source/WebKit
    /bin/sh -c \"/Volumes/Data/dev/webkit/branches/test-derived-sources-incremental-change/OpenSource/WebKitBuild/WebKit.build/Release/Derived\ Sources.build/Script-C0CE72841247E66800BC0EC4.sh\"
Generating message receiver for WebPage...
Generating messages header for WebPage...

Oddly, the build succeeded. So either that function isn't actually used, or this demonstrates that an old WebPageMessages.h file is hanging around.
Comment 3 Keith Rollin 2018-11-09 12:22:06 PST
The only WebPageMessages.h file in WebKitBuild is:

./WebKitBuild/Release/DerivedSources/WebKit2/WebPageMessages.h

This has a modification date from the original build and includes references to the function I'd commented out. So DerivedSources.make *says* it's regenerating the expected files, but it doesn't seem to actually be doing that.
Comment 4 Keith Rollin 2018-11-09 12:23:20 PST
Nope, I was wrong about part of that. The modification date is consistent with the incremental build. So the file was re-generated, but seemingly from an old version of WebPage.messages.in.
Comment 5 Keith Rollin 2018-11-09 12:28:04 PST
Making subsequent changes to WebPage.messages.in does not cause it to be regenerated.
Comment 6 Keith Rollin 2018-11-09 13:12:46 PST
It seems that if you specify a non-empty set of output files, the interpretation of an empty set of input files changes. Without an output file specification, the empty set of input files means "make no assumptions about the inputs so always run the build script phase". With an output file specification, the empty set of input files means "there are no input files, so only run the build script phase if the output files don't exist".

This interpretation seems to make sense, but it doesn't quite account for the next-build-after-a-clean-build where WebPage.messages.in was re-processed to no effect.
Comment 7 Keith Rollin 2018-11-09 13:13:43 PST
I'm going to see if simply removing the .xcfilelists from the projects -- thereby resetting the set of output files to empty -- will revert to previous behavior and at least let the builds start working again.
Comment 8 Keith Rollin 2018-11-09 14:19:50 PST
I wanted to track down why commenting out a message in a *message.in file and reprising resulted in the commented-out message still showing up in the generated files. Turns out that I was commenting out the message by moving to the first character in the line and inserting '# '. This doesn't work. In order to comment out a line, the '#' needs to be the very first character, not the first non-space character.
Comment 9 Keith Rollin 2018-11-09 14:33:08 PST
Removed use of .xcfilelists. Landed in https://trac.webkit.org/r238055.
Comment 10 Radar WebKit Bug Importer 2018-11-09 14:34:59 PST
<rdar://problem/45956265>