-
Notifications
You must be signed in to change notification settings - Fork 28.5k
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
iOS,macOS: Merge iOS, macOS config #167945
Conversation
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. |
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. |
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
31d3ca8
to
824ae15
Compare
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 areavailable on builds where
is_ios
is true (in place of the existingconditional 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 containsApple 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 argsfrom 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
.swiftmodule
slike 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 sketchyrelative-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. allruns where
--as-gclient-hook
were specified). Without this option,we cycle through both
iphoneos
andiphonesimulator
SDKs, and sincethis symlink was written on each iteration through the
SDKs
list, itwas always linked to the
Library/Frameworks
directory for the lastitem in the list:
iPhoneSimulator.platform
. The platform arg for thecurrent build is now resolved to
ios_platform_path
from which weresolve
$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.