From 686714325b33a08e13a8042abdbb9f1632e7ef3a Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 6 Aug 2024 13:08:22 +0200 Subject: [PATCH] user: move userns package to separate module, and retract v0.2.0 commit 86870e7b5ae771ec567bf0519663b95345ba59e3 integrated the userns package into the github.com/moby/sys/user module, which was included in the v0.2.0 version of the module. Upon further discussion with maintainers, this may not have been a good choice; the userns package is related to user-namespaces (uid/gid-mapping), and while there are some tangential relations with "user", we shouldn't conflate these concepts by putting both into the same module. Some downstream projects (containerd, moby, containerd/cgroups) already accepted patches to switch to the package that's part of the moby/sys/user module, but none of those patches made it into a release. This patch: - moves the userns package to a separate module - retracts the moby/sys/user v0.2.0 release - downgrades the minimum go version update for the moby/sys/user module to go1.17. Note that CI is no longer testing go1.17, but go1.18 as minimum. Signed-off-by: Sebastiaan van Stijn --- Makefile | 12 +++++++----- user/go.mod | 4 +++- userns/go.mod | 3 +++ {user/userns => userns}/userns.go | 0 {user/userns => userns}/userns_linux.go | 0 {user/userns => userns}/userns_linux_fuzzer.go | 0 {user/userns => userns}/userns_linux_test.go | 0 {user/userns => userns}/userns_unsupported.go | 0 8 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 userns/go.mod rename {user/userns => userns}/userns.go (100%) rename {user/userns => userns}/userns_linux.go (100%) rename {user/userns => userns}/userns_linux_fuzzer.go (100%) rename {user/userns => userns}/userns_linux_test.go (100%) rename {user/userns => userns}/userns_unsupported.go (100%) diff --git a/Makefile b/Makefile index c83bf16..1c58c18 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -PACKAGES ?= mountinfo mount sequential signal symlink user +PACKAGES ?= mountinfo mount sequential signal symlink user userns BINDIR ?= _build/bin CROSS ?= linux/arm linux/arm64 linux/ppc64le linux/s390x \ freebsd/amd64 openbsd/amd64 darwin/amd64 darwin/arm64 windows/amd64 @@ -16,7 +16,7 @@ clean: test: test-local set -eu; \ for p in $(PACKAGES); do \ - if $p = user && go version | grep -qv go1.18; then \ + if [ "$p" = userns ] && go version | grep -qv go1.18; then \ (cd $$p; go test $(RUN_VIA_SUDO) -v .); \ fi \ done @@ -25,7 +25,7 @@ test: test-local tidy: set -eu; \ for p in $(PACKAGES); do \ - if $p = user && go version | grep -qv go1.18; then \ + if [ "$p" = userns ] && go version | grep -qv go1.18; then \ (cd $$p; go mod tidy); \ fi \ done @@ -46,7 +46,7 @@ lint: $(BINDIR)/golangci-lint $(BINDIR)/golangci-lint version set -eu; \ for p in $(PACKAGES); do \ - if $p = user && go version | grep -qv go1.18; then \ + if [ "$p" = userns ] && go version | grep -qv go1.18; then \ (cd $$p; \ go mod download; \ ../$(BINDIR)/golangci-lint run); \ @@ -66,6 +66,8 @@ cross: export GOOS=$${osarch%/*} GOARCH=$${osarch#*/}; \ echo "# building for $$GOOS/$$GOARCH"; \ for p in $(PACKAGES); do \ - (cd $$p; go build .); \ + if [ "$p" = userns ] && go version | grep -qv go1.18; then \ + (cd $$p; go build .); \ + fi \ done; \ done diff --git a/user/go.mod b/user/go.mod index d4ad72f..bf7886e 100644 --- a/user/go.mod +++ b/user/go.mod @@ -1,5 +1,7 @@ module github.com/moby/sys/user -go 1.21 +go 1.17 require golang.org/x/sys v0.1.0 + +retract v0.2.0 // Package github.com/moby/sys/user/userns was included in this module, but should've been a separate module; see https://github.com/moby/sys/pull/140#issuecomment-2250644304. diff --git a/userns/go.mod b/userns/go.mod new file mode 100644 index 0000000..1b656e4 --- /dev/null +++ b/userns/go.mod @@ -0,0 +1,3 @@ +module github.com/moby/sys/userns + +go 1.21 diff --git a/user/userns/userns.go b/userns/userns.go similarity index 100% rename from user/userns/userns.go rename to userns/userns.go diff --git a/user/userns/userns_linux.go b/userns/userns_linux.go similarity index 100% rename from user/userns/userns_linux.go rename to userns/userns_linux.go diff --git a/user/userns/userns_linux_fuzzer.go b/userns/userns_linux_fuzzer.go similarity index 100% rename from user/userns/userns_linux_fuzzer.go rename to userns/userns_linux_fuzzer.go diff --git a/user/userns/userns_linux_test.go b/userns/userns_linux_test.go similarity index 100% rename from user/userns/userns_linux_test.go rename to userns/userns_linux_test.go diff --git a/user/userns/userns_unsupported.go b/userns/userns_unsupported.go similarity index 100% rename from user/userns/userns_unsupported.go rename to userns/userns_unsupported.go