Thanks to visit codestin.com
Credit goes to github.com

Skip to content

iOS,macOS: Merge iOS, macOS config #167945

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 28, 2025

Conversation

cbracken
Copy link
Member

@cbracken cbracken commented Apr 28, 2025

Merges iOS and macOS configuration and SDK finder scripts:

  • //build/mac/find_sdk.py and //build/ios/config/ios_sdk.py merge to
    //build/mac/apple_sdk.py.

  • //build/config/ios/ios_sdk.gni and //build/config/mac/mac_sdk.gni
    merge to //build/config/apple/apple_sdk.gni. gn args for macOS are
    available on all builds with host_os == "mac". gn args for iOS are
    available on builds where is_ios is true (in place of the existing
    conditional import logic). Merging the two allows us to check all
    Apple SDK-related variable for anything missing and run apple_sdk.py
    a maximum of once across all Apple platforms.

  • Adds Platforms directory to //flutter/prebuilts, which contains
    Apple platform symlinks for iPhoneOS, iPhoneSimulator, MacOSX.
    Adds ios_device_platform_path, ios_simulator_platform_path,
    mac_platform_path gn args to hold these paths. Adds logic to
    //flutter/tools/gn to locate these paths and prepopulate these args
    from them to avoid running the script as part of the build.

    These are used to link to Swift core libs for each platform where
    necessary, as well as (for tests) test frameworks and .swiftmodules
    like XCTest.framework.

  • Eliminates Library/Frameworks symlink from //flutter/prebuilts.
    This path is a subdirectory of each of the platform directories above.
    It was used to populate platform_frameworks_path in
    //flutter/shell/platform/darwin/ios/BUILD.gn using sort of sketchy
    relative-path logic.

    Further, the existing logic for greating the link was buggy for runs
    of ios_sdk.py where the --sdk option was not specified (i.e. all
    runs where --as-gclient-hook were specified). Without this option,
    we cycle through both iphoneos and iphonesimulator SDKs, and since
    this symlink was written on each iteration through the SDKs list, it
    was always linked to the Library/Frameworks directory for the last
    item in the list: iPhoneSimulator.platform. The platform arg for the
    current build is now resolved to ios_platform_path from which we
    resolve $ios_platform_path/Developer/Library/Frameworks.

A follow-up patch will refactor the iOS build file to extract an iOS
test config that eliminates some of the unnecessary duplication of
cc_flags, swiftflags, and ld_flags across targets.

Issue: #167592

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@github-actions github-actions bot added platform-ios iOS applications specifically engine flutter/engine repository. See also e: labels. a: desktop Running on desktop platform-macos labels Apr 28, 2025
@cbracken
Copy link
Member Author

cbracken commented Apr 28, 2025

Note, this is currently stacked on top of #167908. The second commit is the one with the relevant diffs.

Edit: it's now rebased and unstacked.

@stuartmorgan-g
Copy link
Contributor

test-exempt: code refactor with no semantic change

Merges iOS and macOS configuration and SDK finder scripts:

* //build/mac/find_sdk.py and //build/ios/config/ios_sdk.py merge to
  //build/mac/apple_sdk.py.

* //build/config/ios/ios_sdk.gni and //build/config/mac/mac_sdk.gni
  merge to //build/config/apple/apple_sdk.gni. gn args for macOS are
  available on all builds with `host_os == "mac"`. gn args for iOS are
  available on builds where `is_ios` is true (in place of the existing
  conditional import logic). Merging the two allows us to check all
  Apple SDK-related variable for anything missing and run `apple_sdk.py`
  a maximum of once across all Apple platforms.

* Adds `Platforms` directory to `//flutter/prebuilts`, which contains
  Apple platform symlinks for `iPhoneOS`, `iPhoneSimulator`, `MacOSX`.
  Adds `ios_device_platform_path`, `ios_simulator_platform_path`,
  `mac_platform_path` gn args to hold these paths. Adds logic to
  `//flutter/tools/gn` to locate these paths and prepopulate these args
  from them to avoid running the script as part of the build.

* Eliminates `Library/Frameworks` symlink from `//flutter/prebuilts`.
  This path is a subdirectory of each of the platform directories above.
  It was used to populate `platform_frameworks_path` in
  `//flutter/shell/platform/darwin/ios/BUILD.gn` using sort of sketchy
  relative-path logic.

  Further, the existing logic for greating the link was buggy for runs
  of `ios_sdk.py` where the `--sdk` option was not specified (i.e. all
  runs where `--as-gclient-hook` were specified). Without this option,
  we cycle through both `iphoneos` and `iphonesimulator` SDKs, and since
  this symlink was written on each iteration through the `SDKs` list, it
  was always linked to the `Library/Frameworks` directory for the last
  item in the list: `iPhoneSimulator.platform`. The platform arg for the
  current build is now resolved to `ios_platform_path` from which we
  resolve `$ios_platform_path/Developer/Library/Frameworks`.

A follow-up patch will refactor the iOS build file to extract an iOS
test config that eliminates some of the unnecessary duplication of
cc_flags, swiftflags, and ld_flags across targets.

Issue: flutter#167592
@cbracken cbracken force-pushed the merge_ios_macos_sdk_finder branch from 31d3ca8 to 824ae15 Compare April 28, 2025 18:32
@cbracken cbracken requested a review from jason-simmons April 28, 2025 19:48
@cbracken cbracken added the autosubmit Merge PR when tree becomes green via auto submit App label Apr 28, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Apr 28, 2025
Merged via the queue into flutter:master with commit 34f8df3 Apr 28, 2025
180 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Apr 28, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 4, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a: desktop Running on desktop engine flutter/engine repository. See also e: labels. platform-ios iOS applications specifically platform-macos
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants