-
Notifications
You must be signed in to change notification settings - Fork 516
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
[msbuild/tests/dotnet] Add support for xcframeworks for Hot Restart and add tests. Fixes #16571. #18103
Conversation
…e as well. It's much easier to set an environment variable on Windows than it is to change the test configuration, which is Makefile-based.
Rework Hot Restart builds to use as much as possible of the normal build logic, because this is the easiest way to make sure the Hot Restart build is as close as possible to normal builds (and we don't end up missing features). This is done by executing selected parts of a normal build, and a the end we have a new task that computes where each file goes in the various output directories Hot Restart uses (HotRestartAppBundlePath, HotRestartContentDir, HotRestartAppContentDir, etc.)
…several places. Set/fix the PublishFolderType and RelativePath metata for returned items in the ComputeBundleLocation and ResolveNativeReferences task, so that the new ComputeHotRestartBundleContents task has enough (and the correct) information to do the right thing with items that are to be copied to the app bundle.
This makes sure we find files in subdirectories too.
Make the CompileAppManifest task work on Windows by: * Not requiring the default SDK version (impossible to calculate without Xcode) as an input property (we still require it when it's needed). * Not requiring the SDK version (also impossible to calculate without Xcode). * Using the minimum OS version we support as the as minimum OS version the app supports if building on Windows and an SDK version has not been provided. * Not adding any of the app manifest values we get from Xcode.
…or hot restart. And then adjust the resulting app manifest for hot restart in the CompileHotRestartAppManifest target. This makes sure we handle app manifests for hot restart builds just like we do for normal builds.
* Take the BundleIdentifier we computed in the CompileAppManifest as input. * This means we don't need to read the app manifest anymore, which means all the corresponding code can be removed.
The output of codesigning is the _CodeSignature\CodeResources file, so use that as the sentinel file to determine if the code signature is up-to-date or not. Using the individual files in the app bundle doesn't work, because they will always have an up-to-date filestamp (since they were just copied to the app bundle).
…rget. The output is the compiled Entitlements.plist file and 'archived-expanded-entitlements.xcent', not the Extracted sentinel file (which is created when the prebuilt app bundle is unzipped).
…pressed. 1. Compute the path of the zip in the .props file, and use it as Inputs for the PrepareAppBundle target. This way we only run PrepareAppBundle if the zip file has changed (and we actually run it if it has changed). 2. Delete any previous unzipped contents if we're unzipping (to make sure we don't have files leftover from an earlier version of the prebuilt zip). 3. Compute the 'HotRestartAppBundlePath' in a new and earlier task. This means we can also depend on this targe in the _CleanHotRestartBundle target to avoid having to compute the 'HotRestartAppBundlePath' property there as well. 4. Move the touching of the stamp file (the 'Extracted' file) to MSBuild. This way it shows up in logs. 5. Enable nullability in the PrepareAppBundle target and fix any issues.
… to the current platform.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
💻 [CI Build] Windows Integration Tests passed 💻✅ All Windows Integration Tests passed. Pipeline on Agent |
✅ API diff for current PR / commitLegacy Xamarin (No breaking changes)
NET (empty diffs)
✅ API diff vs stableLegacy Xamarin (No breaking changes).NET (No breaking changes)✅ Generator diffGenerator diff is empty Pipeline on Agent |
💻 [PR Build] Tests on macOS M1 - Mac Big Sur (11.5) passed 💻✅ All tests on macOS M1 - Mac Big Sur (11.5) passed. Pipeline on Agent |
💻 [PR Build] Tests on macOS M1 - Mac Ventura (13.0) passed 💻✅ All tests on macOS M1 - Mac Ventura (13.0) passed. Pipeline on Agent |
🚀 [CI Build] Test results 🚀Test results✅ All tests passed on VSTS: simulator tests. 🎉 All 225 tests passed 🎉 Tests counts✅ bcl: All 69 tests passed. Html Report (VSDrops) Download Pipeline on Agent |
Rework Hot Restart builds to use as much as possible of the normal build
logic, because this is the easiest way to make sure the Hot Restart build is
as close as possible to normal builds (and we don't end up missing features).
This is done by executing selected parts of a normal build, and at the end we
have a new task that computes where each file goes in the various output
directories Hot Restart uses (HotRestartAppBundlePath, HotRestartContentDir,
HotRestartAppContentDir, etc.)
This PR also:
build is placed in the correct location for a Hot Restart build (this is a
variation of the BundleStructure test we already have).
This PR is best reviewed commit-by-commit.
Ref: #13924