-
-
Notifications
You must be signed in to change notification settings - Fork 111
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
chore(ios,mac): support build on Apple Silicon using Xcode 15.3 #11302
Conversation
…Yosemite to 10.13 High Sierra
User Test ResultsTest specification and instructions User tests are not required Test Artifacts
|
@@ -0,0 +1,11 @@ | |||
#!/bin/bash |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#!/bin/bash | |
#!/usr/bin/env bash |
We should be using env
throughout to signify that we want the bash version from the path, even though we are attempting to run the scripts with the correct version of bash.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
That said, the minimum version increase, this late in the game... makes me wonder if we should do a first release before the update lands, then follow up with this one.
Then again, if anything feels broken with the release... we probably don't want to leave users with 10.10 - 10.12 out to dry. So we probably shouldn't use it as a reason, even if it's unfortunate to shift minimum-requirements despite the prior announcement.
https://community.software.sil.org/t/keyman-17-0-beta-release/8388
- Minimum supported version of macOS is 10.10 Yosemite.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nits, plus the change from #!/bin/bash to #!/usr/bin/env bash for all the build scripts. But looking good.
- We should use resources/build/mac/ folder for the "embedded" scripts?
- We need to update the oem/fv xcodeproj as well
- Several of the embedded shellscripts have not yet been extracted. We need to do the wrapping for all the scripts in the xcodeproj files.
|
||
Keyman should also work on future releases of macOS, even if they are not yet listed here. | ||
|
||
## Resource Requirements | ||
|
||
Keyman for macOS has minimal resource requirements. Any computer running | ||
Mac OS X 10.10 or later should be able to run Keyman for macOS without trouble. | ||
Mac OS X 10.13 or later should be able to run Keyman for macOS without trouble. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mac OS X 10.13 or later should be able to run Keyman for macOS without trouble. | |
macOS 10.13 or later should be able to run Keyman for macOS without trouble. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keymanapp/keyman.com@486df1b updates the minimum version listed on keyman.com
@@ -3,4 +3,4 @@ title: What are Keyman's hardware requirements? | |||
--- | |||
|
|||
Keyman for macOS has minimal resource requirements. Any computer running | |||
Mac OS X 10.10 or later should be able to run Keyman for macOS without trouble. | |||
Mac OS X 10.13 or later should be able to run Keyman for macOS without trouble. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mac OS X 10.13 or later should be able to run Keyman for macOS without trouble. | |
macOS 10.13 or later should be able to run Keyman for macOS without trouble. |
Note re sentry update: chore(mac): upgrade sentry pod to 8.24.0 Existing version of Sentry pod, 5.x, had a mac deployment This forced an update to cocoapods to support visionos, and Used https://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/ |
When upgrading to Xcode 15.3 and a newer version of Sentry, the dmg template file was too small for the newly generated executable.
Yes, better to change minimum version in beta than in 17.0-stable cycle. In any case, we don't have a choice here because we were not ready to release before Apple's deadline. |
iOS Test build failure:
iOS Sample and Test Projects build failure:
|
Note: iOS build is running afoul of: altool is returning the same error 149,727 times ... hmm. It may be that this is causing the next step to fail. Temporary mitigation: adding a hosts entry for northamerica-1.object-storage.apple.com |
Eventually we should also update |
iOS build failure (upload to TestFlight for FVKeyboards) seems to be versioning-related and exposed by changes in XCode 15.0.
|
Wait a sec... it failed for the FV app, but not ours. keyman/oem/firstvoices/ios/FirstVoices/Info.plist Lines 21 to 22 in 5b1a4f0
I think the block linked above is not being properly updated, for whatever reason. ... and I don't see any code changes / "Files Changed" within the |
Wrap scripts for FirstVoices so that environment variables are retained
Wrap call to script with xcode-wrap.sh to retain env
Ignore unbound variables for now to get past script failure
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. A bunch of tidyup work that we should do in 18.0 cycle. I've marked the comments as A18S1 to indicate that we should do them while this is still fresh and early in the dev cycle, but A18S2 also fits well.
@@ -950,7 +950,7 @@ | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
shellPath = "/usr/bin/env bash"; | |||
shellScript = "verstr1=$(/usr/libexec/PlistBuddy -c \"Print CFBundleShortVersionString\" \"$SRCROOT/Keyman-Info.plist\")\nverstr2=$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" \"$SRCROOT/Keyman-Info.plist\")\n/usr/libexec/PlistBuddy \"$SRCROOT/Settings.bundle/Root.plist\" -c \"set PreferenceSpecifiers:0:DefaultValue $verstr1 (build $verstr2)\"\n\nif which swiftlint >/dev/null; then\n swiftlint --config ../../.swiftlint.yml\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n"; | |||
shellScript = "#verstr1=$(/usr/libexec/PlistBuddy -c \"Print CFBundleShortVersionString\" \"$SRCROOT/Keyman-Info.plist\")\n#verstr2=$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" \"$SRCROOT/Keyman-Info.plist\")\n#/usr/libexec/PlistBuddy \"$SRCROOT/Settings.bundle/Root.plist\" -c \"set PreferenceSpecifiers:0:DefaultValue $verstr1 (build $verstr2)\"\n\nif which swiftlint >/dev/null; then\n swiftlint --config ../../.swiftlint.yml\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This call to swiftlint should be cleaned up into a wrapped script as well in 18.0 (A18S1), and commented lines should be removed.
@@ -970,7 +970,7 @@ | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
shellPath = "/usr/bin/env bash"; | |||
shellScript = ". \"$KEYMAN_ROOT/resources/build/xcode-utils.sh\"\n\nif [ ${UPLOAD_SENTRY:-false} = true ]; then\n # Calls resource script to perform the dSYM upload\n phaseSentryDsymUpload \"keyman-ios\"\nfi\n"; | |||
shellScript = ". \"$KEYMAN_ROOT/resources/build/xcode-utils.sh\"\n\nif [ ${UPLOAD_SENTRY:-false} = true ]; then\n # Calls resource script to perform the dSYM upload\n \"$KEYMAN_ROOT/resources/build/xcode-wrap.sh\" \"$KEYMAN_ROOT/resources/build/sentry-dsym-upload.sh\"\nfi\n"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The if
test should be inside the sentry-dsym-upload.sh script so that the shellScript is a pure wrapped call to the script (A18S1).
shellPath = "/usr/bin/env bash"; | ||
shellScript = "#verstr1=$(/usr/libexec/PlistBuddy -c \"Print CFBundleShortVersionString\" \"$SRCROOT/FirstVoices/Info.plist\")\n#verstr2=$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" \"$SRCROOT/FirstVoices/Info.plist\")\n#/usr/libexec/PlistBuddy \"$SRCROOT/Settings.bundle/Root.plist\" -c \"set PreferenceSpecifiers:0:DefaultValue $verstr1 (build $verstr2)\"\n"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This script should be removed in 18.0 cycle (A18S1).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All these scripts should be in resources/build/mac in 18.0 (A18S1)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be good to combine all the set-bundle-versions-... scripts and parameterise, given they are so similar. A18S1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's see if we can move this to resources/build/mac as well A18S1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's see if we can move this to resources/build/mac as well A18S1
Changes in this pull request will be available for download in Keyman version 17.0.318-beta |
Several changes to get Keyman for iOS and macOS building on Apple Silicon on macOS Sonoma with the latest version of Xcode 15.3.
Most significantly, the minimum supported version of macOS had to be increased from 10.10 (Yosemite) to 10.13 (High Sierra).
Fixes #10671
@keymanapp-test-bot skip