[Webkit-unassigned] [Bug 236056] New: [Xcode] Remove xcfilelists from source control and generate them ahead-of-time

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Feb 2 19:50:26 PST 2022


https://bugs.webkit.org/show_bug.cgi?id=236056

            Bug ID: 236056
           Summary: [Xcode] Remove xcfilelists from source control and
                    generate them ahead-of-time
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Tools / Tests
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: emw at apple.com

Currently, the Xcode build unconditionally runs various "Check xcfilelist" script phases, which may modify xcfilelist sources in-place. Dirtying sources is bad, especially on a buildbot, because it can cause conflicts in SCM and precludes support for building from read-only sources.

The reason for checking these files into source control in the first place is because Xcode doesn't have a "configure" stage for each target like CMake does, where build system metadata like this can be generated ahead of time. However, Xcode does have Scheme "pre-actions", where scripts can be run before the formal start of the build, where dependencies are checked. We should investigate whether we can move xcfilelist generation into scheme actions and remove xcfilelists from source control.

Scheme actions will pose some challenges, namely:

1. They can't fail (rdar://88191278), and until recently could not log any output (rdar://8004230).
2. To get consistent behavior, we'd have to add a pre-build action for *each* scheme we ship. This would also make it harder for devs to create their own custom schemes for local use.
3. They have no input and output files, and therefore no built-in way to skip execution when they are up-to-date. So unless we call out to Make or some other build system, we really have to be confident our actions execute quickly.
4. They are scheme-specific, not target-specific. If a pre-action script uses build settings, it must pick *one* target to see settings from. So if N targets need to run some pre-action code using their build settings, we must add N scripts to a scheme. And if there are M different schemes that build the target, that's N*M pre-actions total. See #2 :\

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20220203/c51917b8/attachment-0001.htm>


More information about the webkit-unassigned mailing list