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 support to build minikube binary on AArch64 #2455

Closed
wants to merge 1 commit into from

Conversation

arm64b
Copy link

@arm64b arm64b commented Jan 24, 2018

Current Makefile can only support build minikube bin on
{linux, darwin, windows}/amd64 system. This PR is used to
build the binary on linux/arm64 platform.

Fix #2454

Signed-off-by: Dennis Chen [email protected]

Current Makefile can only support build `minikube` bin on
{linux, darwin, windows}/amd64 system. This PR is used to
build the binary on linux/arm64 platform.

Fix kubernetes#2454

Signed-off-by: Dennis Chen <[email protected]>
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. labels Jan 24, 2018
@minikube-bot
Copy link
Collaborator

Can one of the admins verify this patch?

@arm64b
Copy link
Author

arm64b commented Jan 24, 2018

/assign @jimmidyson 🎃

@arm64b
Copy link
Author

arm64b commented Jan 29, 2018

Hello @minikube-bot @dlorenc @luxas @jimmidyson , any feedback/suggestion about this if we want to use minikube on our AArch64 platform, actually it does 📆

@dlorenc
Copy link
Contributor

dlorenc commented Jan 30, 2018

Hey,

We've had some similar discussions over in #2171 about enabling minikube for other architectures.

Can you explain the use-case a little bit more? Changes like this greatly expand our test/support matrix, so we need to make sure there's enough interest to justify the support costs.

@arm64b
Copy link
Author

arm64b commented Jan 31, 2018

Hi except the point mentioned in #2171, we're building the AArch64 enterprise ecosystem which is being evaluated by some big internet companies, so clearly it's very important for us to have those related areas ready for the customers. minikube is one of the toolbox raised by this. Yes we know that simply just enable the binary build process will expand the test/support matrix followed, but I will give a vote to promote the multi-arch support in you guys' road map/ to-do list in terms of the biz model we're facing 🎖 Maybe, just maybe, can we offload the arch-related support to the arch vendors who want to make it happen on their platforms ❓

@dlorenc
Copy link
Contributor

dlorenc commented Feb 20, 2018

I'm going to close this and the related PR for now. Feel free to re-open with a more detailed proposal on how to run integration tests on these platforms in CI. Until then, we can't make any promises on keeping minikube actually working on these platforms, so it would be irresponsible to add any kind of official support.

@vielmetti
Copy link

vielmetti commented Mar 5, 2019

@dlorenc - is there any opportunity to revisit this? I understand that there are plans to move your CI system over to Prow from Jenkins in #3256, and perhaps like #2881 this could be queued up behind that move or taken as "experimental" in the interim.

@tstromberg
Copy link
Contributor

tstromberg commented Mar 14, 2019

@vielmetti - I'm OK with approving this PR so long as it doesn't break our current Make rules. Please see about updating it for merge conflicts.

We don't yet have plans for aarch64 on our CI system, so we'll just list it as an experimental port for now.

@tstromberg tstromberg reopened this Mar 14, 2019
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: arm64b
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: dlorenc

If they are not already assigned, you can assign the PR to them by writing /assign @dlorenc in a comment when ready.

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@afbjorklund
Copy link
Collaborator

I did some work* on building for ARM, by using Raspbian and the proot system...

Don't see any reason why that shouldn't work in a CI context, as it doesn't require root.

Can verify on it hardware afterwards (Raspberry Pi), so it could be an interesting project.

Copy link
Collaborator

@afbjorklund afbjorklund left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like a hardcoded oneliner is remaining, but much more remain for the none driver.

@@ -199,7 +199,7 @@ e2e-cross: e2e-linux-amd64 e2e-darwin-amd64 e2e-windows-amd64.exe

.PHONY: checksum
checksum:
for f in out/localkube out/minikube-linux-amd64 out/minikube-darwin-amd64 out/minikube-windows-amd64.exe out/minikube.iso; do \
for f in out/localkube out/minikube-$(GOOS)-$(GOARCH)$(IS_EXE) out/minikube.iso; do \
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is part of the release build, it tries to checksum all known binaries (they have been cross-compiled earlier).

Thus it doesn't make sense to checksum only one of them. Should probably make the list into a make variable though.

@afbjorklund
Copy link
Collaborator

I think the Raspbian distro is 32-bit (armhf/armv7l), so maybe use Debian for the 64-bit (arm64/aarch64)

https://www.debian.org/releases/stretch/arm64/release-notes/

@@ -104,7 +104,7 @@ endif
out/minikube-windows-amd64.exe: out/minikube-windows-amd64
cp out/minikube-windows-amd64 out/minikube-windows-amd64.exe

out/minikube-%-amd64: pkg/minikube/assets/assets.go $(shell $(MINIKUBEFILES))
out/minikube-%-$(GOARCH): pkg/minikube/assets/assets.go $(shell $(MINIKUBEFILES))
Copy link
Collaborator

@afbjorklund afbjorklund Mar 17, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has already been changed (in c7037c4). But it doesn't really help, anyway.

It needs to be dynamic, so that you can cross-compile for any target. This way, it only works for $(GOOS): not $(GOARCH)

@afbjorklund
Copy link
Collaborator

Added a better (cross-compilng) implementation in #3887, we can close this old PR now.

But need a new ticket for discussing runtime support for the ARM architecture (amd64)...

As long as we were doing VM, this was rejected.

But for the new nonedriver, it could be done.

@tstromberg
Copy link
Contributor

Closing this PR as an alternative has been merged. Thank you!

@tstromberg tstromberg closed this Mar 21, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/XS Denotes a PR that changes 0-9 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants