From: Lucas Gabriel Vuotto Subject: Re: sysutils/docker-cli: update to 25.0.3 To: "Kirill A. Korinsky" Cc: Omar Polo , ports@openbsd.org Date: Sat, 17 Feb 2024 18:22:06 +0000 On Mon, Feb 12, 2024 at 11:10:37PM +0100, Kirill A. Korinsky wrote: > Hi Lucas, > > On Mon, 12 Feb 2024 18:53:26 +0100, > Lucas Gabriel Vuotto wrote: > > > > Based on the deprecation, I believe it makes a lot of sense to make > > docker-buildx a RDEP of docker-cli. > > > > Agreed. > > > Question: given that Docker names buildx and compose as plugins in their > > docs, like `docker-{buildx,compose}-plugin`, would it make sense to also > > name our packages like that? > > I think that it is the right move for buildx, but not sure about compose. > > Historically docker-compose was a standalone application, and current version > can be run as docker plugin, and as standalone application. > > Here I expect that user will try to install docker-compose as very common > naming, and adding plugin may confuse. I took a look at repology.org and `docker-buildx` and `docker-compose` are the most common packages names, so I believe we won't gain much by naming it `docker-buildx-plugin`. In fact, only a single package in repology is called like that. So, we agree for this latest version? buildx as an RDEP, no package name changes. Lucas diff 66558c8aa9d546289d58e8d8fc876f4ab52fa9a4 66ce938ebaa602aed50c9ed8f7db88b7b1755fe2 commit - 66558c8aa9d546289d58e8d8fc876f4ab52fa9a4 commit + 66ce938ebaa602aed50c9ed8f7db88b7b1755fe2 blob - c4725a9ecd19f3cc5192e1e9b814278f053891f5 blob + cc9fc7a65e6a88b303d359fb397c74379c176d13 --- sysutils/docker-cli/Makefile +++ sysutils/docker-cli/Makefile @@ -1,10 +1,8 @@ COMMENT = command-line tool for controlling Docker -V = 20.10.21 +V = 25.0.3 -GH_ACCOUNT = docker -GH_PROJECT = cli -GH_TAGNAME = v${V} +DIST_TUPLE = github docker cli v${V} . PKGNAME = docker-${DISTNAME} CATEGORIES = sysutils @@ -17,10 +15,12 @@ PERMIT_PACKAGE = Yes WANTLIB += c pthread MODULES = lang/go -MODGO_LDFLAGS = -X github.com/docker/cli/cli/version.Version=${V} - GO_PKGNAME = github.com/docker/cli +MODGO_LDFLAGS = -X ${GO_PKGNAME}/cli/version.Version=${V} + +RUN_DEPENDS = sysutils/docker-buildx + WRKSRC = ${MODGO_WORKSPACE}/src/${GO_PKGNAME} -ALL_TARGET = github.com/docker/cli/cmd/docker +ALL_TARGET = ${GO_PKGNAME}/cmd/docker .include blob - 9c835ffc12989e7a07bfa7538b36290da8ad0ea2 blob + 9f519bbd3d439d882290ebd8ac8b708d5ff29a32 --- sysutils/docker-cli/distinfo +++ sysutils/docker-cli/distinfo @@ -1,2 +1,2 @@ -SHA256 (cli-20.10.21.tar.gz) = 8PYsocgOj9W54UDKZO8+ddx896KAQLPRCyYDBxKJRug= -SIZE (cli-20.10.21.tar.gz) = 7633967 +SHA256 (docker-cli-v25.0.3.tar.gz) = BK0M6pkqZdsgyxsNv20c4yxwXOh53lGyIJX+jSgDCBU= +SIZE (docker-cli-v25.0.3.tar.gz) = 6864551 blob - cbca5bf1121d9bb4edf7d9d22f05fa80131a3045 (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_containerd_containerd_content_local_store_unix_go +++ /dev/null @@ -1,9 +0,0 @@ -Index: vendor/github.com/containerd/containerd/content/local/store_unix.go ---- vendor/github.com/containerd/containerd/content/local/store_unix.go.orig -+++ vendor/github.com/containerd/containerd/content/local/store_unix.go -@@ -1,4 +1,4 @@ --// +build linux solaris darwin freebsd netbsd -+// +build linux solaris darwin freebsd netbsd openbsd - - /* - Copyright The containerd Authors. blob - /dev/null blob + 2adc78d29643bc58c8f93f0aa0872c9dad635e7b (mode 644) --- /dev/null +++ sysutils/docker-cli/patches/patch-cli-plugins_socket_socket_nodarwin_go @@ -0,0 +1,20 @@ +Avoid keeping @docker_cli_[UUID] files +https://github.com/docker/cli/pull/4862 + +Index: cli-plugins/socket/socket_nodarwin.go +--- cli-plugins/socket/socket_nodarwin.go.orig ++++ cli-plugins/socket/socket_nodarwin.go +@@ -1,4 +1,4 @@ +-//go:build !darwin ++//go:build !darwin && !openbsd + + package socket + +@@ -15,5 +15,6 @@ func listen(socketname string) (*net.UnixListener, err + + func onAccept(conn *net.UnixConn, listener *net.UnixListener) { + // do nothing +- // while on darwin we would unlink here; on non-darwin the socket is abstract and not present on the filesystem ++ // while on darwin and OpenBSD we would unlink here; ++ // on non-darwin the socket is abstract and not present on the filesystem + } blob - b66550e0750eefcb59425df2e32bfdd7f50d3030 (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_containerd_continuity_fs_stat_openbsd_go +++ /dev/null @@ -1,48 +0,0 @@ -Index: vendor/github.com/containerd/containerd/sys/stat_openbsd.go ---- vendor/github.com/containerd/containerd/sys/stat_openbsd.go.orig -+++ vendor/github.com/containerd/containerd/sys/stat_openbsd.go -@@ -0,0 +1,44 @@ -+// +build openbsd -+/* -+ Copyright The containerd Authors. -+ -+ Licensed under the Apache License, Version 2.0 (the "License"); -+ you may not use this file except in compliance with the License. -+ You may obtain a copy of the License at -+ -+ http://www.apache.org/licenses/LICENSE-2.0 -+ -+ Unless required by applicable law or agreed to in writing, software -+ distributed under the License is distributed on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ See the License for the specific language governing permissions and -+ limitations under the License. -+*/ -+ -+package sys -+ -+import ( -+ "syscall" -+ "time" -+) -+ -+// StatAtime returns the Atim -+func StatAtime(st *syscall.Stat_t) syscall.Timespec { -+ return st.Atim -+} -+ -+// StatCtime returns the Ctim -+func StatCtime(st *syscall.Stat_t) syscall.Timespec { -+ return st.Ctim -+} -+ -+// StatMtime returns the Mtim -+func StatMtime(st *syscall.Stat_t) syscall.Timespec { -+ return st.Mtim -+} -+ -+// StatATimeAsTime returns st.Atim as a time.Time -+func StatATimeAsTime(st *syscall.Stat_t) time.Time { -+ // The int64 conversions ensure the line compiles for 32-bit systems as well. -+ return time.Unix(int64(st.Atim.Sec), int64(st.Atim.Nsec)) // nolint: unconvert -+} blob - /dev/null blob + c6229f2c218cd497de722b11b11c786c23c5d983 (mode 644) --- /dev/null +++ sysutils/docker-cli/patches/patch-cli-plugins_socket_socket_openbsd_go @@ -0,0 +1,26 @@ +Avoid keeping @docker_cli_[UUID] files +https://github.com/docker/cli/pull/4862 + +Index: cli-plugins/socket/socket_openbsd.go +--- cli-plugins/socket/socket_openbsd.go.orig ++++ cli-plugins/socket/socket_openbsd.go +@@ -0,0 +1,19 @@ ++package socket ++ ++import ( ++ "net" ++ "os" ++ "path/filepath" ++ "syscall" ++) ++ ++func listen(socketname string) (*net.UnixListener, error) { ++ return net.ListenUnix("unix", &net.UnixAddr{ ++ Name: filepath.Join(os.TempDir(), socketname), ++ Net: "unix", ++ }) ++} ++ ++func onAccept(conn *net.UnixConn, listener *net.UnixListener) { ++ syscall.Unlink(listener.Addr().String()) ++} blob - ddd15e262e8a6eb75518e8cddc9cfafd0189023b (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_moby_sys_mount_mounter_bsd_go +++ /dev/null @@ -1,9 +0,0 @@ -Index: vendor/github.com/moby/sys/mount/mounter_bsd.go ---- vendor/github.com/moby/sys/mount/mounter_bsd.go.orig -+++ vendor/github.com/moby/sys/mount/mounter_bsd.go -@@ -1,4 +1,4 @@ --// +build freebsd,cgo openbsd,cgo -+// +build freebsd,cgo - - package mount - blob - b7b0b9f0a671dea9d18378bb5cee5ffc1492cbfb (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_moby_sys_mount_mounter_openbsd_go +++ /dev/null @@ -1,69 +0,0 @@ -Index: vendor/github.com/moby/sys/mount/mounter_openbsd.go ---- vendor/github.com/moby/sys/mount/mounter_openbsd.go.orig -+++ vendor/github.com/moby/sys/mount/mounter_openbsd.go -@@ -0,0 +1,65 @@ -+// +build openbsd,cgo -+ -+package mount -+ -+/* -+#include -+#include -+*/ -+import "C" -+ -+import ( -+ "fmt" -+ "syscall" -+ "unsafe" -+) -+ -+func createExportInfo(readOnly bool) C.struct_export_args { -+ exportFlags := C.int(0) -+ if readOnly { -+ exportFlags = C.MNT_EXRDONLY -+ } -+ out := C.struct_export_args{ -+ ex_root: 0, -+ ex_flags: exportFlags, -+ } -+ return out -+} -+ -+func createUfsArgs(device string, readOnly bool) unsafe.Pointer { -+ out := &C.struct_ufs_args{ -+ fspec: C.CString(device), -+ export_info: createExportInfo(readOnly), -+ } -+ return unsafe.Pointer(out) -+} -+ -+func mount(device, target, mType string, flag uintptr, data string) error { -+ readOnly := flag&RDONLY == 1 -+ -+ var fsArgs unsafe.Pointer -+ -+ if mType == "ffs" { -+ fsArgs = createUfsArgs(device, readOnly) -+ } else { -+ return &mountError{ -+ op: "mount", -+ source: device, -+ target: target, -+ flags: flag, -+ err: fmt.Errorf("unsupported type"), -+ } -+ } -+ -+ if errno := C.mount(C.CString(mType), C.CString(target), C.int(flag), fsArgs); errno != 0 { -+ return &mountError{ -+ op: "mount", -+ source: device, -+ target: target, -+ flags: flag, -+ err: syscall.Errno(errno), -+ } -+ } -+ -+ return nil -+} blob - 3981d4e86c3d52842d226b649f54dcfdfdc45417 (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_tonistiigi_fsutil_diskwriter_go +++ /dev/null @@ -1,12 +0,0 @@ -Index: vendor/github.com/tonistiigi/fsutil/diskwriter.go ---- vendor/github.com/tonistiigi/fsutil/diskwriter.go.orig -+++ vendor/github.com/tonistiigi/fsutil/diskwriter.go -@@ -104,7 +104,7 @@ func (dw *DiskWriter) HandleChange(kind ChangeKind, p - - stat, ok := fi.Sys().(*types.Stat) - if !ok { -- return errors.WithStack(&os.PathError{Path: p, Err: syscall.EBADMSG, Op: "change without stat info"}) -+ return errors.WithStack(&os.PathError{Path: p, Err: syscall.Errno(0x5c), Op: "change without stat info"}) - } - - statCopy := *stat blob - 32238f447f33786430ecd2a3bcc190a2fb8c36e6 (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_tonistiigi_fsutil_fs_go +++ /dev/null @@ -1,12 +0,0 @@ -Index: vendor/github.com/tonistiigi/fsutil/fs.go ---- vendor/github.com/tonistiigi/fsutil/fs.go.orig -+++ vendor/github.com/tonistiigi/fsutil/fs.go -@@ -80,7 +80,7 @@ func (fs *subDirFS) Walk(ctx context.Context, fn filep - if err := d.FS.Walk(ctx, func(p string, fi os.FileInfo, err error) error { - stat, ok := fi.Sys().(*types.Stat) - if !ok { -- return errors.WithStack(&os.PathError{Path: d.Stat.Path, Err: syscall.EBADMSG, Op: "fileinfo without stat info"}) -+ return errors.WithStack(&os.PathError{Path: d.Stat.Path, Err: syscall.Errno(0x5c), Op: "fileinfo without stat info"}) - } - stat.Path = path.Join(d.Stat.Path, stat.Path) - if stat.Linkname != "" { blob - 75a984172631d8c6f93745db9b941d9407a7aa3a (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_tonistiigi_fsutil_hardlinks_go +++ /dev/null @@ -1,12 +0,0 @@ -Index: vendor/github.com/tonistiigi/fsutil/hardlinks.go ---- vendor/github.com/tonistiigi/fsutil/hardlinks.go.orig -+++ vendor/github.com/tonistiigi/fsutil/hardlinks.go -@@ -29,7 +29,7 @@ func (v *Hardlinks) HandleChange(kind ChangeKind, p st - - stat, ok := fi.Sys().(*types.Stat) - if !ok { -- return errors.WithStack(&os.PathError{Path: p, Err: syscall.EBADMSG, Op: "change without stat info"}) -+ return errors.WithStack(&os.PathError{Path: p, Err: syscall.Errno(0x5c), Op: "change without stat info"}) - } - - if fi.IsDir() || fi.Mode()&os.ModeSymlink != 0 { blob - 38f6bad6800578c73cb2b1ff922688ed5d16160d (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_tonistiigi_fsutil_send_go +++ /dev/null @@ -1,12 +0,0 @@ -Index: vendor/github.com/tonistiigi/fsutil/send.go ---- vendor/github.com/tonistiigi/fsutil/send.go.orig -+++ vendor/github.com/tonistiigi/fsutil/send.go -@@ -150,7 +150,7 @@ func (s *sender) walk(ctx context.Context) error { - } - stat, ok := fi.Sys().(*types.Stat) - if !ok { -- return errors.WithStack(&os.PathError{Path: path, Err: syscall.EBADMSG, Op: "fileinfo without stat info"}) -+ return errors.WithStack(&os.PathError{Path: path, Err: syscall.Errno(0x5c), Op: "fileinfo without stat info"}) - } - - p := &types.Packet{ blob - 795cbf6d7906432cc17578ee41707836b1f63d91 (mode 644) blob + /dev/null --- sysutils/docker-cli/patches/patch-vendor_github_com_tonistiigi_fsutil_tarwriter_go +++ /dev/null @@ -1,12 +0,0 @@ -Index: vendor/github.com/tonistiigi/fsutil/tarwriter.go ---- vendor/github.com/tonistiigi/fsutil/tarwriter.go.orig -+++ vendor/github.com/tonistiigi/fsutil/tarwriter.go -@@ -21,7 +21,7 @@ func WriteTar(ctx context.Context, fs FS, w io.Writer) - } - stat, ok := fi.Sys().(*types.Stat) - if !ok { -- return errors.WithStack(&os.PathError{Path: path, Err: syscall.EBADMSG, Op: "fileinfo without stat info"}) -+ return errors.WithStack(&os.PathError{Path: path, Err: syscall.Errno(0x5c), Op: "fileinfo without stat info"}) - } - hdr, err := tar.FileInfoHeader(fi, stat.Linkname) - if err != nil {