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

Add Apple Silicon (ARM) Macs into the build matrix #4226

Closed
benarent opened this issue Aug 18, 2020 · 10 comments
Closed

Add Apple Silicon (ARM) Macs into the build matrix #4226

benarent opened this issue Aug 18, 2020 · 10 comments
Assignees
Labels
arm c-cv Internal Customer Reference c-ixr Internal Customer Reference c-mcy Internal Customer Reference c-upg Internal Customer Reference c-wi Internal Customer Reference mac release-engineering tsh tsh - Teleport's command line tool for logging into nodes running Teleport.

Comments

@benarent
Copy link
Contributor

Feature Request

This has already come in via a survey, and for early adopters we should support tsh for Apple Silicon Macs, and quickly after teleport depending on demand.

Motivation

Via survey and the march of new hardware.

Who's it for?

OSS User, Pro, Enterprise

@awly
Copy link
Contributor

awly commented Aug 19, 2020

This is similar to #3383, support aarch64 architecture but with darwin OS.
I don't think we can cross-compile without an actual machine with that architecture and OS available, due to CGO.

@russjones
Copy link
Contributor

I think you can apply/buy a developer kit from Apple: https://developer.apple.com/programs/universal/

@benarent
Copy link
Contributor Author

I have applied, I'm unsure if we're cool enough but If not we can just wait for the boxes to become GA and add then.

@webvictim
Copy link
Contributor

It'd be nice for us to already be offering these binaries straight out of the gate when they become GA. If we could add an aarch64 Mac Mini as a build box then it should be fairly easy to port our existing release/signing/notarization process over (although we may have to build https://github.com/mitchellh/gon from source if they aren't providing an aarch64/fat binary)

@russjones russjones added this to the 5.0 "Snoqualmie" milestone Sep 8, 2020
@webvictim webvictim added arm tsh tsh - Teleport's command line tool for logging into nodes running Teleport. labels Oct 24, 2020
@benarent
Copy link
Contributor Author

Looks like Apple is going to announce these tomorrow. Might be a hot item for Q4.

@webvictim
Copy link
Contributor

webvictim commented Jan 4, 2021

Teleport builds fine using go1.16beta1 darwin/arm64. Once 1.16 is out of beta we can upgrade Go on all our build boxes and should then be able to add an Apple Silicon box. I haven't tested signing, but gon compiles fine for darwin/arm64 so it should work.

@webvictim webvictim added c-co Internal Customer Reference c-wi Internal Customer Reference and removed c-co Internal Customer Reference labels Jan 28, 2021
@pschisa pschisa added the c-ixr Internal Customer Reference label Feb 1, 2022
@ArunNadda ArunNadda added the c-cv Internal Customer Reference label Feb 25, 2022
ravicious added a commit to gravitational/webapps that referenced this issue Mar 30, 2022
Our build system doesn't support arm64 for Mac releases yet (see issue
gravitational/teleport#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`
ravicious added a commit to gravitational/webapps that referenced this issue Mar 31, 2022
Our build system doesn't support arm64 for Mac releases yet (see issue
gravitational/teleport#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`
ravicious added a commit to gravitational/webapps that referenced this issue Mar 31, 2022
Our build system doesn't support arm64 for Mac releases yet (see issue
gravitational/teleport#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`
ravicious added a commit to gravitational/webapps that referenced this issue Apr 26, 2022
Our build system doesn't support arm64 for Mac releases yet (see issue
gravitational/teleport#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`
ravicious added a commit to gravitational/webapps that referenced this issue Apr 27, 2022
Our build system doesn't support arm64 for Mac releases yet (see issue
gravitational/teleport#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`
ravicious added a commit to gravitational/webapps that referenced this issue Apr 27, 2022
* Limit navigation capabilities to reduce attack surface

At the moment we don't create new windows nor navigate away from the rendered
app, so we can just block everything.

* Update to electron@13.6.9 (#703)

* Use x64 arch when building & packaging Teleterm

Our build system doesn't support arm64 for Mac releases yet (see issue
gravitational/teleport#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`

* Add `Notifications` component and service

* Show errors in `ClusterResources`' tables using standard `Danger` labels

* Use `Notifications` error in `syncRootCluster()` and `removeGateway()`

* Do not block app rendering when initializing function fails

* Fix accessing `serversSyncStatus` Map in `clustersService`

* Revert "Use x64 arch when building & packaging Teleterm"

This reverts commit 276e9a9.

Turns out that for development, we need to use arm64 version of native
deps. The build server is going to use x64 anyway, as per the reverted
commit, but when making manual demo builds, we'll have to remember to
use x64 for Teleterm and tsh.

* Submit modals' forms on `Enter` press

* Remove global `keyDown` handler from `KeyboardArrowsNavigation` as it blocked submitting forms

* Use teleterm/logger in runtimeSettings (#716)

The one from shared/libs/logger calls `window`, which doesn't exist in
the context of Electron main process.

* Improve Teleterm README (#719)

* Mention that `yarn build-term` needs to be run first before attempting
  to run the app in dev mode (already had a couple of people who had
  problems with setting up the app because they didn't run this first).
* Mention the assumption about both repos living in the same folder.
* Move the architecture diagram to the end of the file. Most people
  reading the README are not doing it for the diagram, but build
  instructions.
* Explain when gRPC files need to be recompiled.

* Prevent crash when network or cluster is offline (#712)

* Simplify the db connection tab (#720)

As described in gravitational/webapps.e#177, we want to replace the db
tab with just two sections:

* "Connect with CLI" which will show the command to use in terminal
* "Connect with GUI" which links to our documentation

After gravitational/teleport#11720 gets merged, the "Connect with CLI"
section will be massively simplified: it'll be basically just something like:

    psql postgres://localhost:12345

Moreover, @smallinsky suggested that tsh should be responsible for creating
those CLI connection commands. We should also do this in the future as
it'll let us support new protocols as soon as they land in tsh, without
us having to touch Teleterm codebase, for the most part.

* Resolve shell env (#718)

Co-authored-by: Grzegorz Zdunek <gzdunek@users.noreply.github.com>
Co-authored-by: Grzegorz Zdunek <grzegorz.zdunek@goteleport.com>
@j-teleport j-teleport added the c-upg Internal Customer Reference label Sep 26, 2022
hatched pushed a commit to hatched/teleport-merge that referenced this issue Nov 30, 2022
Our build system doesn't support arm64 for Mac releases yet (see issue
gravitational#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`
@zmb3 zmb3 added the mac label Dec 8, 2022
hatched pushed a commit that referenced this issue Dec 20, 2022
Our build system doesn't support arm64 for Mac releases yet (see issue
#4226 for more information). Because of that, for
the preview release we're likely going to have only the x64 version of
Teleterm.

This means that the shipped version of tsh should also be the x64 version.

I tried to change electron-builder's config to use x64 for macOS, but the
config options don't seem to work. I tried `mac.defaultArch` as well as
changing `mac.target` in various ways but `electron-builder install-app-deps`
just doesn't pick up those options. Both were set through
`packages/teleterm/package.json`
@alexatcanva
Copy link

Hey all 👋

Any chance we can add arm64 support for the Teleport Terraform plugin while we are here too? 🙏

@r0mant r0mant assigned camscale and unassigned fheinecke Feb 7, 2023
@pschisa
Copy link
Contributor

pschisa commented Feb 23, 2023

+1 for teleport-ent binaries for aarch64-darwin

@zmb3
Copy link
Collaborator

zmb3 commented May 9, 2023

Good to close this one out Cam?

@camscale
Copy link
Contributor

camscale commented May 9, 2023

Teleport v13 is now built with AMD64/ARM64 universal binaries for MacOS for all release artifacts. The terraform plugin is also now a universal binary and is just waiting for a release. I think we can call this done.

@camscale camscale closed this as completed May 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arm c-cv Internal Customer Reference c-ixr Internal Customer Reference c-mcy Internal Customer Reference c-upg Internal Customer Reference c-wi Internal Customer Reference mac release-engineering tsh tsh - Teleport's command line tool for logging into nodes running Teleport.
Projects
None yet
Development

No branches or pull requests