We have enabled the [Supplemental] IDL on Chromium and are planning to enable it on all platforms (Meta bug 72138). In this bug, we enable it on AppleWebKit.
Created attachment 119730 [details] WIP patch
I uploaded a WIP patch. I am planning to land it in the following steps: [1] Fix CodeGeneratorJS.pm for custom getters and setters with the [Supplemental] IDL. [2] Move settingsForWindow(), webkitAudioContext() and webSocket() in JSDOMWindowCustom.cpp into JSDOMWindowWebAudioCustom.cpp and JSDOMWindowWebSocketCustom.cpp, for modularization. [3] Make a change on Derivedsources.make.
Comment on attachment 119730 [details] WIP patch View in context: https://bugs.webkit.org/attachment.cgi?id=119730&action=review > Source/WebCore/DerivedSources.make:923 > + $(COMMAND_FOR_GENERATING_ALL_IDLS_TEMPFILE) Unfortunately, this line takes 13 seconds in my Mac environment (although it is executed only when any of IDL files is updated). As commented above, the line is equivalent to 'echo $(IDL_FILES_LIST) > $(ALL_IDLS_TEMPFILE)', but the line realizes it by executing "echo idl_file >> $(ALL_IDLS_TEMPFILE)" for *each* IDL file. This is because 'echo $(IDL_FILES_LIST) > $(ALL_IDLS_TEMPFILE)' exceeds the OS limit of command-line argument count, and 'echo "$(IDL_FILES_LIST)" > $(ALL_IDLS_TEMPFILE)' exceeds the OS limit of command-line argument bytes... Any better idea?
Comment on attachment 119730 [details] WIP patch View in context: https://bugs.webkit.org/attachment.cgi?id=119730&action=review >> Source/WebCore/DerivedSources.make:923 >> + $(COMMAND_FOR_GENERATING_ALL_IDLS_TEMPFILE) > > Unfortunately, this line takes 13 seconds in my Mac environment (although it is executed only when any of IDL files is updated). > > As commented above, the line is equivalent to 'echo $(IDL_FILES_LIST) > $(ALL_IDLS_TEMPFILE)', but the line realizes it by executing "echo idl_file >> $(ALL_IDLS_TEMPFILE)" for *each* IDL file. This is because 'echo $(IDL_FILES_LIST) > $(ALL_IDLS_TEMPFILE)' exceeds the OS limit of command-line argument count, and 'echo "$(IDL_FILES_LIST)" > $(ALL_IDLS_TEMPFILE)' exceeds the OS limit of command-line argument bytes... > > Any better idea? Is there a way in Make to break up IDL_FILES_LIST into chunks?
(In reply to comment #4) > (From update of attachment 119730 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=119730&action=review > > >> Source/WebCore/DerivedSources.make:923 > >> + $(COMMAND_FOR_GENERATING_ALL_IDLS_TEMPFILE) > > > > Unfortunately, this line takes 13 seconds in my Mac environment (although it is executed only when any of IDL files is updated). > > > > As commented above, the line is equivalent to 'echo $(IDL_FILES_LIST) > $(ALL_IDLS_TEMPFILE)', but the line realizes it by executing "echo idl_file >> $(ALL_IDLS_TEMPFILE)" for *each* IDL file. This is because 'echo $(IDL_FILES_LIST) > $(ALL_IDLS_TEMPFILE)' exceeds the OS limit of command-line argument count, and 'echo "$(IDL_FILES_LIST)" > $(ALL_IDLS_TEMPFILE)' exceeds the OS limit of command-line argument bytes... > > > > Any better idea? > > Is there a way in Make to break up IDL_FILES_LIST into chunks? It is possible. I'll do it in the upcoming patch then.
Should we store the list of IDL files in a file outside of DerivedSources.make? Is there a way for the makefile to read them in?
(In reply to comment #6) > Should we store the list of IDL files in a file outside of DerivedSources.make? Is there a way for the makefile to read them in? It is also possible. Rather than splitting $(IDL_FILES_LIST) into chunks, preparing the file might be better. ### By the way, we will need to prepare the file that lists all IDL files for *each* platform.
Created attachment 119731 [details] WIP patch: patch conflict resolved
Comment on attachment 119731 [details] WIP patch: patch conflict resolved Attachment 119731 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/10921175
Comment on attachment 119731 [details] WIP patch: patch conflict resolved Attachment 119731 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/10935079
Comment on attachment 119731 [details] WIP patch: patch conflict resolved Attachment 119731 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/10932113
> ### By the way, we will need to prepare the file that lists all IDL files for *each* platform. Do you mean each build system? Generally, the list of IDL files for every platform are the same. Ideally we'd have one list that was used by all the build systems, but having a separate list for each build system is ok because that's what we have today.
(In reply to comment #12) > > ### By the way, we will need to prepare the file that lists all IDL files for *each* platform. > > Do you mean each build system? Ah, yes, I meant it. > Ideally we'd have one list that was used by all the build systems, but having a separate list for each build system is ok because that's what we have today. I got it. Ideally we would have one file that lists all IDL files used by all the build systems, and an array that lists "exceptional" IDL files in each build script. Then in most cases we just need to touch the one file when we want to add a new IDL file. I'd like to do this refactoring after we enable the [Supplemental] IDL on all the build systems. Thanks.
Created attachment 119758 [details] WIP patch to see if build succeeds
Comment on attachment 119758 [details] WIP patch to see if build succeeds Attachment 119758 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/10935238
Created attachment 119762 [details] WIP patch to see if build succeeds
Comment on attachment 119762 [details] WIP patch to see if build succeeds Attachment 119762 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/10934273
Comment on attachment 119762 [details] WIP patch to see if build succeeds Attachment 119762 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/10929304
Created attachment 119789 [details] WIP patch to see if build succeeds
Created attachment 119791 [details] WIP patch to see if build succeeds