Bug 191477

Summary: WebPageMessages.h is not always regenerated
Product: WebKit Reporter: Daniel Bates <dbates>
Component: Tools / TestsAssignee: Keith Rollin <krollin>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, krollin, lforschler, webkit-bug-importer, wilander
Priority: P2 Keywords: InRadar
Version: WebKit Local Build   
Hardware: All   
OS: All   
See Also: https://bugs.webkit.org/show_bug.cgi?id=191324

Daniel Bates
Reported 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>
Attachments
Daniel Bates
Comment 1 2018-11-09 11:39:26 PST
Could this be caused by bug #191324.
Keith Rollin
Comment 2 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.
Keith Rollin
Comment 3 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.
Keith Rollin
Comment 4 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.
Keith Rollin
Comment 5 2018-11-09 12:28:04 PST
Making subsequent changes to WebPage.messages.in does not cause it to be regenerated.
Keith Rollin
Comment 6 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.
Keith Rollin
Comment 7 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.
Keith Rollin
Comment 8 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.
Keith Rollin
Comment 9 2018-11-09 14:33:08 PST
Removed use of .xcfilelists. Landed in https://trac.webkit.org/r238055.
Radar WebKit Bug Importer
Comment 10 2018-11-09 14:34:59 PST
Note You need to log in before you can comment on or make changes to this bug.