-
Notifications
You must be signed in to change notification settings - Fork 39.6k
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
Bump x/sys and opencontainers/runc to support Risc-V architecture #82349
Conversation
Signed-off-by: Carlos de Paula <me@carlosedp.com>
Hi @carlosedp. Thanks for your PR. I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/ok-to-test |
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.
x/sys should be fine, runc has some possibly noteworthy changes
func UseSystemd() bool { | ||
if !systemdUtil.IsRunningSystemd() { | ||
if !isRunningSystemd() { |
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.
https://github.com/coreos/go-systemd/blob/fd7a80b32e1fc73e890fde45604ed5009dc817a3/util/util.go#L72
confirming this is the same method, just lifted into this package (no behavior change)
@@ -208,10 +160,6 @@ func (m *Manager) Apply(pid int) error { | |||
|
|||
// if we create a slice, the parent is defined via a Wants= | |||
if strings.HasSuffix(unitName, ".slice") { | |||
// This was broken until systemd v229, but has been back-ported on RHEL environments >= 219 |
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.
possibly notable change opencontainers/runc#2117
Transient units (and transient slice units) have been available for quite a long time and RHEL 7 with systemd v219 (likely the oldest OS we care about at this point) supports that. A system running a systemd without these features is likely to break a lot of other stuff that runc/libcontainer care about.
if hasDelegateSlice { | ||
// systemd 237 and above no longer allows delegation on a slice | ||
properties = append(properties, newProp("Delegate", true)) | ||
} |
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.
possibly notable change opencontainers/runc#2117
Regarding delegated slices, modern systemd doesn't allow it and runc/libcontainer run fine on it, so we might as well just stop requesting it on older versions of systemd which allowed it. (Those versions never really changed behavior significantly when that option was passed anyways.)
Any idea on why the failing tests @BenTheElder ? |
|
/retest |
Now it's GTG @BenTheElder :) Let's ping the approvers. |
/cc @liggitt |
I spoke to the upstream author re opencontainers/runc#2117 and in theory no supported distros should have systemd old enough for this to be a problem. Still might be release note worthy. |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: BenTheElder, carlosedp The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/assign @lavalamp |
/kind cleanup |
@@ -422,7 +422,7 @@ replace ( | |||
golang.org/x/net => golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc | |||
golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a | |||
golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f | |||
golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503 |
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.
we were intentionally pinned to 3b52091 because it is the branch matching our current version of go (https://github.com/golang/sys/commits/release-branch.go1.12). I would expect us to stay on that revision until we move to go 1.13, and then move to the https://github.com/golang/sys/commits/release-branch.go1.13 branch unless there's a compelling reason to move away from the go team's maintained release branches.
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.
Commit 3b52091 still doesn't have support for Risc-V. The earliest commit that has the support and fixes is golang/sys@9eafafc. I checked that x/sys release branch 1.13 already has this.
What's the plans on moving to Go 1.13?
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.
What's the plans on moving to Go 1.13?
Tracked in #82531, planned for 1.17, but not as trivial a move as previous go version bumps
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.
go1.13 support landed in #82809
rebasing on master now that #82342 has merged will shrink the size of this cc @kubernetes/sig-node-pr-reviews for runc bump approval unless there's a compelling reason not to, I'd expect us to stay on the versions of golang.org/x/... dependencies that match our go version (#82349 (comment)) |
Folks, let me know whenever I should rebase this to be merged. |
Rebasing on master should shrink the size of this. I still would not expect to run ahead of our go release for golang.org/x/sys unless there was a strong reason to do so. Is there a discussion around prioritization of adding support for this architecture that I'm missing? |
No priorization on the arch. I've been building the packages locally and applying changes. I'll demo K8s on Risc-V arch on the Risc-V Summit now in december so I came to check the status. K8s 1.17 will be built with 1.13 already? |
1.17 will be cut with go1.13 |
Hi @liggitt , I've just built K8s with latest master and it worked fine. All libraries have been bumped. I need to update |
I'm unsure of all the considerations for supporting a new architecture… does that mean we claim test/support for it? |
@liggitt we already support builds for ppc64le, s390x etc and we don't claim "support" for those arches. so this would be similar to those i think |
Exactly, It's not claiming support or officially providing images right now but the ability to correctly build the packages using official pipeline and scripts. |
Ok. I'll defer to the owners of those build/release scripts for approval on the follow up PR. |
👍, happy to review this |
Latest master branch builds correctly on riscv64. @BenTheElder I've opened #86011 to address the build script. Closing this. |
What type of PR is this?
What this PR does / why we need it:
Bump modules to allow building Kubernetes on Risc-V architecture.
Risc-V software support tracker on https://github.com/carlosedp/riscv-bringup
Special notes for your reviewer:
This PR depends on #82342 so it might need a rebase after that one get's merged.
Does this PR introduce a user-facing change?: