Skip to content
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

[macOS] Default Xcode on macOS 12 Monterey will be set to Xcode 14.2 on January, 16 #6746

Closed
3 of 10 tasks
mikhailkoliada opened this issue Dec 12, 2022 · 12 comments
Closed
3 of 10 tasks
Assignees
Labels
Announcement awaiting-deployment Code complete; awaiting deployment and/or deployment in progress OS: macOS

Comments

@mikhailkoliada
Copy link
Contributor

mikhailkoliada commented Dec 12, 2022

Breaking changes

Default Xcode will be changed to 14.2 on macOS 12 Monterey, Also Xcode 14.0 will be pointing to Xcode 14.0.1

Target date

The propagation will start on January, 9th and take 2-3 days

The motivation for the changes

We would like to provide images with the latest stable updates as default ones and removed old patch version as per our guidelines.

Possible impact

If you use the default Xcode version and your project is not compatible with Xcode 14.2 your build can be broken.
If your project is not compatible with the latest Xamarin bundle it can be broken.

Platforms affected

  • Azure DevOps
  • GitHub Actions

Runner images affected

  • Ubuntu 18.04
  • Ubuntu 20.04
  • Ubuntu 22.04
  • macOS 10.15
  • macOS 11
  • macOS 12
  • Windows Server 2019
  • Windows Server 2022

Mitigation ways

Please consider switching Xcode in runtime to the version that you need to build an app.
The following snippet can be used to switch Xcode:

sudo xcode-select -s "/Applications/Xcode_14.0.1.app"
The list of all available Xcode versions can be found in the image documentation

@ilg-ul
Copy link

ilg-ul commented Dec 19, 2022

14.1 still has a linker bug:

Apparently 14.2 is ok.

Could you consider using 14.2 for the next release? And be sure the 10.15 image remains available for a while, since currently it is the only one without this bug.

Thank you!

@mikhailkoliada mikhailkoliada added the awaiting-deployment Code complete; awaiting deployment and/or deployment in progress label Dec 21, 2022
@mikhailkoliada mikhailkoliada self-assigned this Dec 21, 2022
@karwa
Copy link

karwa commented Jan 11, 2023

@mikhailkoliada - what's the status of this?

Xcode 14.0 was a bit weird in that it included new platform SDKs for iDevices, but kept the old SDK for macOS (Apple seem to have developed a pattern in the last few years of releasing new iDevice OSes first, then the new macOS version a bit later). So it's sort of a transitional release, and cross-platform code can break in strange ways because of that.

It would be nice to move on to 14.1, which included the new SDKs for all Apple platforms.

@mikhailkoliada
Copy link
Contributor Author

@karwa it is currently postponed, we will pick up a newer version

@ilg-ul
Copy link

ilg-ul commented Jan 11, 2023

Please use 14.2, otherwise some builds will fail due to Apple linker bug.

Any estimate when this will happen? Will 10.15 remain available till then, so we can continue to run our builds?

@KBEMobisys
Copy link

@ilg-ul
You can explicitly set the xcode version in your build pipeline with the following commands:

# set xcode version to use for build
sudo xcode-select -switch /Applications/Xcode_14.2.app
# Print used xCode version
xcode-select -print-path
xcodebuild -version

Hope that helps :)

@ilg-ul
Copy link

ilg-ul commented Jan 12, 2023

Hi Karin @KBEMobisys, thank you for the hint.

However this solution is not very practical, I have tens of projects, each with lots of actions, and constantly updating them all would be very time consuming.

A functional default is always preferred.

@KBEMobisys
Copy link

Hi Liviu,
good argument.

Depending on your used build tool, you could try to use a template for the iOS build step which then builds the project with an default xcode version. This template is located in an extra repository and can be included in all of your build pipelines.

We do this in AzureDevOps with yaml-templates: see https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops

For sure you still have to update all of your projects but next time you have it more easy :).

@ilg-ul
Copy link

ilg-ul commented Jan 12, 2023

Hi Karin, useful details, thank you.

If really needed I'll probably have to update all my projects, but I'm not a big fan of artificially increasing complexity only to overcome test environment shortcomings.

@KBEMobisys
Copy link

I'm with you but if you relay on Azure Build Agents then you never have your test environment under your control. So you might have this shortcomings more often than you would like ;)

@ilg-ul
Copy link

ilg-ul commented Jan 12, 2023

Unfortunately :-(

@mikhailkoliada mikhailkoliada changed the title [macOS] Default Xcode on macOS 12 Monterey will be set to Xcode 14.1 on January, 9 [macOS] Default Xcode on macOS 12 Monterey will be set to Xcode 14.2 on January, 16 Jan 12, 2023
@actions actions deleted a comment Jan 21, 2023
@mikhailkoliada
Copy link
Contributor Author

Done

@salvatoreboemia
Copy link

@ilg-ul You can explicitly set the xcode version in your build pipeline with the following commands:

# set xcode version to use for build
sudo xcode-select -switch /Applications/Xcode_14.2.app
# Print used xCode version
xcode-select -print-path
xcodebuild -version

Hope that helps :)

Is not possible to add in GitHub Action?

in order to avoid to use third part on marketplace

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Announcement awaiting-deployment Code complete; awaiting deployment and/or deployment in progress OS: macOS
Projects
None yet
Development

No branches or pull requests

6 participants
@ilg-ul @karwa @salvatoreboemia @KBEMobisys @mikhailkoliada and others