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

provide linux arm64 binaries #58

Closed
jameslamb opened this issue May 24, 2024 · 3 comments · Fixed by #59
Closed

provide linux arm64 binaries #58

jameslamb opened this issue May 24, 2024 · 3 comments · Fixed by #59
Labels
enhancement New feature or request

Comments

@jameslamb
Copy link
Member

Description

For Linux, this project is currently only publishing amd64 binaries on releases.

We should consider also publishing arm64 binaries.

Benefits of this work

  • allows install-from-releases workflow to work in arm64 Linux environment

That would be useful because it allows use of this project without needing to set up Go and do go install.

Acceptance Criteria

  • releases contain a canary_linux_arm64 binary

Approach

As described in https://www.digitalocean.com/community/tutorials/building-go-applications-for-different-operating-systems-and-architectures#using-your-local-goos-and-goarch-environment-variables, Go has builtin support for cross-compiling, so I think this should be achievable on the GitHub-hosted ubuntu-latest runner, without requiring an arm64 runner.

Like this:

GOOS=linux GOARCH=arm64 go build

Notes

Writing this up specifically from the perspective of RAPIDS. This would be helpful (but not critical) for rapidsai/docker#667, as RAPIDS builds both amd64 and arm64 images there and it's helpful to run those images on amd64 and arm64 runners directly (instead of using emulation).

@jameslamb jameslamb added the enhancement New feature or request label May 24, 2024
@jacobtomlinson
Copy link
Member

I think we should just be able to add this to the existing setup in the Makefile.

package: ## Build for all platforms
env GOOS=windows GOARCH=amd64 go build -o bin/$(EXECUTABLE)_windows_amd64.exe $(GO_FLAGS) .
env GOOS=linux GOARCH=amd64 go build -o bin/$(EXECUTABLE)_linux_amd64 $(GO_FLAGS) .
env GOOS=darwin GOARCH=amd64 go build -o bin/$(EXECUTABLE)_darwin_amd64 $(GO_FLAGS) .
env GOOS=darwin GOARCH=arm64 go build -o bin/$(EXECUTABLE)_darwin_arm64 $(GO_FLAGS) .
@echo built: bin/$(EXECUTABLE)_windows_amd64.exe, bin/$(EXECUTABLE)_linux_amd64, bin/$(EXECUTABLE)_darwin_amd64, bin/$(EXECUTABLE)_darwin_arm64
@echo version: $(VERSION)
@echo commit: $(COMMIT)

@jacobtomlinson
Copy link
Member

I just tagged v0.3.1 so you should have Linux arm64 builds now.

@jameslamb
Copy link
Member Author

excellent, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants