WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
231473
[Build-time perf] Speed up the WebCore null build
https://bugs.webkit.org/show_bug.cgi?id=231473
Summary
[Build-time perf] Speed up the WebCore null build
Jer Noble
Reported
2021-10-09 01:02:33 PDT
[Build-time perf] Speed up the WebCore null build
Attachments
Patch
(29.87 KB, patch)
2021-10-09 11:58 PDT
,
Jer Noble
no flags
Details
Formatted Diff
Diff
Patch
(29.86 KB, patch)
2021-10-09 12:00 PDT
,
Jer Noble
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Jer Noble
Comment 1
2021-10-09 11:58:45 PDT
Created
attachment 440715
[details]
Patch
Jer Noble
Comment 2
2021-10-09 12:00:51 PDT
Created
attachment 440716
[details]
Patch
Myles C. Maxfield
Comment 3
2021-10-09 23:53:29 PDT
How can we make sure this doesn’t happen again? People delete files all the time.
EWS
Comment 4
2021-10-10 00:01:44 PDT
Committed
r283873
(
242750@main
): <
https://commits.webkit.org/242750@main
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 440716
[details]
.
Radar WebKit Bug Importer
Comment 5
2021-10-10 00:02:17 PDT
<
rdar://problem/84069473
>
mitz
Comment 6
2021-10-10 08:15:44 PDT
Comment on
attachment 440716
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=440716&action=review
> Source/WebCore/ChangeLog:14 > + The "Make Frameworks Symbolic Link" build phase had no output defined, causing it to run every time.
Isn’t it still going to run every time when building for iOS and in other configurations where WebCore.framework/Frameworks doesn’t exist and doesn’t get created?
Tim Horton
Comment 7
2021-10-10 13:25:52 PDT
Will FRAMEWORKS_FOLDER_PATH do the trick?
Darin Adler
Comment 8
2021-10-11 13:17:23 PDT
Comment on
attachment 440716
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=440716&action=review
> Source/WebCore/ChangeLog:12 > + The "Check For Inappropriate Objective-C Class Names" and "Check For Inappropriate Files In Framework" build phases > + had no inputs or outputs listed, causing them to run every time. Define an output of an empty text file in the > + TARGET_TEMP_DIR directory that will get touched after the check, allowing the build system to do dependency checking.
Given no inputs were listed, what dependencies are being checked? I don’t understand the concept of checking dependencies without inputs.
mitz
Comment 9
2021-10-11 13:23:24 PDT
(In reply to Darin Adler from
comment #8
)
> Comment on
attachment 440716
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=440716&action=review
> > > Source/WebCore/ChangeLog:12 > > + The "Check For Inappropriate Objective-C Class Names" and "Check For Inappropriate Files In Framework" build phases > > + had no inputs or outputs listed, causing them to run every time. Define an output of an empty text file in the > > + TARGET_TEMP_DIR directory that will get touched after the check, allowing the build system to do dependency checking. > > Given no inputs were listed, what dependencies are being checked? I don’t > understand the concept of checking dependencies without inputs.
As far as I can tell, those build phases both list $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH) as their input.
Darin Adler
Comment 10
2021-10-11 13:27:42 PDT
Comment on
attachment 440716
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=440716&action=review
>>> Source/WebCore/ChangeLog:12 >>> + TARGET_TEMP_DIR directory that will get touched after the check, allowing the build system to do dependency checking. >> >> Given no inputs were listed, what dependencies are being checked? I don’t understand the concept of checking dependencies without inputs. > > As far as I can tell, those build phases both list $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH) as their input.
Good! Jer’s comment said there were no inputs listed and I didn’t fact check.
Jer Noble
Comment 11
2021-10-12 08:30:47 PDT
Apologies to everyone; I didn't see your comments till just now. (In reply to mitz from
comment #6
)
> Comment on
attachment 440716
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=440716&action=review
> > > Source/WebCore/ChangeLog:14 > > + The "Make Frameworks Symbolic Link" build phase had no output defined, causing it to run every time. > > Isn’t it still going to run every time when building for iOS and in other > configurations where WebCore.framework/Frameworks doesn’t exist and doesn’t > get created?
Yes. I didn't completely solve this problem. There doesn't seem to be a mechanism to mark build phases as platform dependent. Given how Xcode's dependency checking works, this phase would need a (e.g.) "WEBCORE_FRAMEWORK_PATH" defined as `$(TARGET_BUILD_DIR)/WebCore.framework/Frameworks` on macOS and some other path (like, `$(TARGET_TEMP_DIR)/DoesntNeedASymlink`) on other platforms. (In reply to Darin Adler from
comment #8
)
> Comment on
attachment 440716
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=440716&action=review
> > > Source/WebCore/ChangeLog:12 > > + The "Check For Inappropriate Objective-C Class Names" and "Check For Inappropriate Files In Framework" build phases > > + had no inputs or outputs listed, causing them to run every time. Define an output of an empty text file in the > > + TARGET_TEMP_DIR directory that will get touched after the check, allowing the build system to do dependency checking. > > Given no inputs were listed, what dependencies are being checked? I don’t > understand the concept of checking dependencies without inputs.
Apologies, this comment was incorrect, as Mitz pointed out.
Jer Noble
Comment 12
2021-10-12 08:48:01 PDT
Comment hidden (obsolete)
(In reply to Myles C. Maxfield from
comment #3
)
> How can we make sure this doesn’t happen again? People delete files all the > time.
There's a script that runs as part of the build that adds new inputs and outputs to the DerivedSources-inputs/outputs.xcfilelist. That script would need to be modified to check for deletions/renames rather that just additions.
Jer Noble
Comment 13
2021-10-12 08:48:01 PDT
(In reply to Myles C. Maxfield from
comment #3
)
> How can we make sure this doesn’t happen again? People delete files all the > time.
There's a script that runs as part of the build that adds new inputs and outputs to the DerivedSources-inputs/outputs.xcfilelist. That script would need to be modified to check for deletions/renames rather that just additions.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug