Bug 243228 - [Xcode] Building a single-project scheme builds its dependencies
Summary: [Xcode] Building a single-project scheme builds its dependencies
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Elliott Williams
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2022-07-26 13:25 PDT by Elliott Williams
Modified: 2022-07-28 11:51 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Elliott Williams 2022-07-26 13:25:58 PDT
Schemes like "WebCore", "JavaScriptCore", etc. currently build the entire workspace _up to_ their respective framework. The idea is that it's an easy way to build a subset of the workspace up to a specific target.

However, with the switch to Make-based workspace builds, there is no longer a workflow for building a single project _without_ its dependencies. My understanding from talking to folks is that we need a way to do this, for a number of reasons:

- We have scripts that run redundantly, so a null build of the full stack is slower than a null build of a single project, sometimes by 10-15 sec.
- Sometimes an engineer is working on unrelated or staged changes in separate parts of the workspace, and doesn't want changes in one project to cause heavy rebuilds of the other project.
- It's unintuitive that running Make in a specific directory (e.g. `make -C Source/WebCore`) will build projects in other directories.

If we agree that these are workflows that we should support, then we need a way to build these projects in the workspace without their dependencies. Because Xcode doesn't allow us to control dependency resolution at runtime, I propose we turn off "Find Implicit Dependencies" in all the single-project schemes.
Comment 1 Radar WebKit Bug Importer 2022-07-26 13:26:26 PDT
<rdar://problem/97625604>
Comment 2 Elliott Williams 2022-07-27 15:56:57 PDT
There are some exceptions to consider here. For instance, the `JavaScriptCore` scheme is used by `build-jsc`, and that tool expects to build up to JSC, not JSC only. In this case, maybe we should have two schemes, "JavaScriptCore" and "Everything up to JavaScriptCore", which have implicit dependencies disabled and enabled, respectively.
Comment 3 Elliott Williams 2022-07-28 09:23:23 PDT
Pull request: https://github.com/WebKit/WebKit/pull/2814
Comment 4 EWS 2022-07-28 11:51:48 PDT
Committed 252924@main (56fd2f7529a1): <https://commits.webkit.org/252924@main>

Reviewed commits have been landed. Closing PR #2814 and removing active labels.