Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package docker-compose for openSUSE:Factory checked in at 2026-03-20 21:21:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/docker-compose (Old) and /work/SRC/openSUSE:Factory/.docker-compose.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker-compose" Fri Mar 20 21:21:36 2026 rev:88 rq:1341498 version:5.1.1 Changes: -------- --- /work/SRC/openSUSE:Factory/docker-compose/docker-compose.changes 2026-02-25 21:11:46.793163894 +0100 +++ /work/SRC/openSUSE:Factory/.docker-compose.new.8177/docker-compose.changes 2026-03-20 21:21:48.458498407 +0100 @@ -1,0 +2,21 @@ +Fri Mar 20 06:40:29 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 5.1.1: + * Fixes + - Only pass ConsoleSize to ExecAttach when TTY is enabled by + @mikesir87 in #13616 + - Fix deadlock in ttyWriter.Done() by @maks2134 in #13640 + * Dependencies + - update to go1.25.8 by @thaJeztah in #13622 + - bump github.com/moby/moby/api from 1.53.0 to 1.54.0 by + @dependabot[bot] in #13619 + - bump golang.org/x/sys from 0.41.0 to 0.42.0 by + @dependabot[bot] in #13626 + - bump github.com/containerd/containerd/v2 from 2.2.1 to 2.2.2 + by @dependabot[bot] in #13631 + - bump golang.org/x/sync from 0.19.0 to 0.20.0 by + @dependabot[bot] in #13627 + - bump github.com/moby/moby/client from 0.2.2 to 0.3.0 by + @dependabot[bot] in #13621 + +------------------------------------------------------------------- Old: ---- docker-compose-5.1.0.obscpio New: ---- docker-compose-5.1.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ docker-compose.spec ++++++ --- /var/tmp/diff_new_pack.GlGTW0/_old 2026-03-20 21:21:49.226530404 +0100 +++ /var/tmp/diff_new_pack.GlGTW0/_new 2026-03-20 21:21:49.230530571 +0100 @@ -17,7 +17,7 @@ Name: docker-compose -Version: 5.1.0 +Version: 5.1.1 Release: 0 Summary: Define and run multi-container applications with Docker License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.GlGTW0/_old 2026-03-20 21:21:49.302533571 +0100 +++ /var/tmp/diff_new_pack.GlGTW0/_new 2026-03-20 21:21:49.306533737 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/docker/compose</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v5.1.0</param> + <param name="revision">v5.1.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.GlGTW0/_old 2026-03-20 21:21:49.334534904 +0100 +++ /var/tmp/diff_new_pack.GlGTW0/_new 2026-03-20 21:21:49.338535070 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/docker/compose</param> - <param name="changesrevision">85d6770b7fb6e2b38234cc9219f59049e42d6924</param></service></servicedata> + <param name="changesrevision">b043368028e9fcb4545fa340c8ad635c370825da</param></service></servicedata> (No newline at EOF) ++++++ docker-compose-5.1.0.obscpio -> docker-compose-5.1.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/.go-version new/docker-compose-5.1.1/.go-version --- old/docker-compose-5.1.0/.go-version 2026-02-24 17:21:59.000000000 +0100 +++ new/docker-compose-5.1.1/.go-version 2026-03-18 16:23:34.000000000 +0100 @@ -1 +1 @@ -1.25.7 \ No newline at end of file +1.25.8 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/Dockerfile new/docker-compose-5.1.1/Dockerfile --- old/docker-compose-5.1.0/Dockerfile 2026-02-24 17:21:59.000000000 +0100 +++ new/docker-compose-5.1.1/Dockerfile 2026-03-18 16:23:34.000000000 +0100 @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -ARG GO_VERSION=1.25.7 +ARG GO_VERSION=1.25.8 ARG XX_VERSION=1.9.0 ARG GOLANGCI_LINT_VERSION=v2.8.0 ARG ADDLICENSE_VERSION=v1.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/cmd/display/tty.go new/docker-compose-5.1.1/cmd/display/tty.go --- old/docker-compose-5.1.0/cmd/display/tty.go 2026-02-24 17:21:59.000000000 +0100 +++ new/docker-compose-5.1.1/cmd/display/tty.go 2026-03-18 16:23:34.000000000 +0100 @@ -176,13 +176,13 @@ func (w *ttyWriter) Done(operation string, success bool) { w.print() + w.done <- true w.mtx.Lock() defer w.mtx.Unlock() if w.ticker != nil { w.ticker.Stop() } w.operation = "" - w.done <- true } func (w *ttyWriter) On(events ...api.Resource) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/cmd/display/tty_test.go new/docker-compose-5.1.1/cmd/display/tty_test.go --- old/docker-compose-5.1.0/cmd/display/tty_test.go 2026-02-24 17:21:59.000000000 +0100 +++ new/docker-compose-5.1.1/cmd/display/tty_test.go 2026-03-18 16:23:34.000000000 +0100 @@ -18,6 +18,7 @@ import ( "bytes" + "context" "strings" "sync" "testing" @@ -422,3 +423,23 @@ }) } } + +func TestDoneDeadlockFix(t *testing.T) { + w, _ := newTestWriter() + addTask(w, "test-task", "Working", "details", api.Working) + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + + w.Start(ctx, "test") + done := make(chan bool) + go func() { + w.Done("test", true) + done <- true + }() + + select { + case <-done: + case <-time.After(5 * time.Second): + t.Fatal("Deadlock detected: Done() did not complete within 5 seconds") + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/go.mod new/docker-compose-5.1.1/go.mod --- old/docker-compose-5.1.0/go.mod 2026-02-24 17:21:59.000000000 +0100 +++ new/docker-compose-5.1.1/go.mod 2026-03-18 16:23:34.000000000 +0100 @@ -10,7 +10,7 @@ github.com/buger/goterm v1.0.4 github.com/compose-spec/compose-go/v2 v2.10.1 github.com/containerd/console v1.0.5 - github.com/containerd/containerd/v2 v2.2.1 + github.com/containerd/containerd/v2 v2.2.2 github.com/containerd/errdefs v1.0.0 github.com/containerd/platforms v1.0.0-rc.2 github.com/distribution/reference v0.6.0 @@ -30,8 +30,8 @@ github.com/mitchellh/go-ps v1.0.0 github.com/moby/buildkit v0.27.1 github.com/moby/go-archive v0.2.0 - github.com/moby/moby/api v1.53.0 - github.com/moby/moby/client v0.2.2 + github.com/moby/moby/api v1.54.0 + github.com/moby/moby/client v0.3.0 github.com/moby/patternmatcher v0.6.0 github.com/moby/sys/atomicwriter v0.1.0 github.com/morikuni/aec v1.1.0 @@ -54,8 +54,8 @@ go.uber.org/goleak v1.3.0 go.uber.org/mock v0.6.0 go.yaml.in/yaml/v4 v4.0.0-rc.4 - golang.org/x/sync v0.19.0 - golang.org/x/sys v0.41.0 + golang.org/x/sync v0.20.0 + golang.org/x/sys v0.42.0 google.golang.org/grpc v1.78.0 gotest.tools/v3 v3.5.2 tags.cncf.io/container-device-interface v1.1.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/go.sum new/docker-compose-5.1.1/go.sum --- old/docker-compose-5.1.0/go.sum 2026-02-24 17:21:59.000000000 +0100 +++ new/docker-compose-5.1.1/go.sum 2026-03-18 16:23:34.000000000 +0100 @@ -40,8 +40,8 @@ github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd/api v1.10.0 h1:5n0oHYVBwN4VhoX9fFykCV9dF1/BvAXeg2F8W6UYq1o= github.com/containerd/containerd/api v1.10.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM= -github.com/containerd/containerd/v2 v2.2.1 h1:TpyxcY4AL5A+07dxETevunVS5zxqzuq7ZqJXknM11yk= -github.com/containerd/containerd/v2 v2.2.1/go.mod h1:NR70yW1iDxe84F2iFWbR9xfAN0N2F0NcjTi1OVth4nU= +github.com/containerd/containerd/v2 v2.2.2 h1:mjVQdtfryzT7lOqs5EYUFZm8ioPVjOpkSoG1GJPxEMY= +github.com/containerd/containerd/v2 v2.2.2/go.mod h1:5Jhevmv6/2J+Iu/A2xXAdUIdI5Ah/hfyO7okJ4AFIdY= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -238,10 +238,10 @@ github.com/moby/go-archive v0.2.0/go.mod h1:mNeivT14o8xU+5q1YnNrkQVpK+dnNe/K6fHqnTg4qPU= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/moby/api v1.53.0 h1:PihqG1ncw4W+8mZs69jlwGXdaYBeb5brF6BL7mPIS/w= -github.com/moby/moby/api v1.53.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc= -github.com/moby/moby/client v0.2.2 h1:Pt4hRMCAIlyjL3cr8M5TrXCwKzguebPAc2do2ur7dEM= -github.com/moby/moby/client v0.2.2/go.mod h1:2EkIPVNCqR05CMIzL1mfA07t0HvVUUOl85pasRz/GmQ= +github.com/moby/moby/api v1.54.0 h1:7kbUgyiKcoBhm0UrWbdrMs7RX8dnwzURKVbZGy2GnL0= +github.com/moby/moby/api v1.54.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc= +github.com/moby/moby/client v0.3.0 h1:UUGL5okry+Aomj3WhGt9Aigl3ZOxZGqR7XPo+RLPlKs= +github.com/moby/moby/client v0.3.0/go.mod h1:HJgFbJRvogDQjbM8fqc1MCEm4mIAGMLjXbgwoZp6jCQ= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= @@ -430,8 +430,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -445,8 +445,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/pkg/compose/hook.go new/docker-compose-5.1.1/pkg/compose/hook.go --- old/docker-compose-5.1.0/pkg/compose/hook.go 2026-02-24 17:21:59.000000000 +0100 +++ new/docker-compose-5.1.1/pkg/compose/hook.go 2026-03-18 16:23:34.000000000 +0100 @@ -61,15 +61,17 @@ return s.runWaitExec(ctx, exec.ID, service, listener) } - height, width := s.stdout().GetTtySize() - consoleSize := client.ConsoleSize{ - Width: width, - Height: height, + attachOptions := client.ExecAttachOptions{ + TTY: service.Tty, } - attach, err := s.apiClient().ExecAttach(ctx, exec.ID, client.ExecAttachOptions{ - TTY: service.Tty, - ConsoleSize: consoleSize, - }) + if service.Tty { + height, width := s.stdout().GetTtySize() + attachOptions.ConsoleSize = client.ConsoleSize{ + Width: width, + Height: height, + } + } + attach, err := s.apiClient().ExecAttach(ctx, exec.ID, attachOptions) if err != nil { return err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-5.1.0/pkg/compose/hook_test.go new/docker-compose-5.1.1/pkg/compose/hook_test.go --- old/docker-compose-5.1.0/pkg/compose/hook_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-5.1.1/pkg/compose/hook_test.go 2026-03-18 16:23:34.000000000 +0100 @@ -0,0 +1,116 @@ +/* + Copyright 2020 Docker Compose CLI 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 compose + +import ( + "net" + "os" + "testing" + + "github.com/compose-spec/compose-go/v2/types" + "github.com/containerd/console" + "github.com/docker/cli/cli/streams" + "github.com/moby/moby/api/types/container" + "github.com/moby/moby/client" + "go.uber.org/mock/gomock" + "gotest.tools/v3/assert" + + "github.com/docker/compose/v5/pkg/api" + "github.com/docker/compose/v5/pkg/mocks" +) + +// TestRunHook_ConsoleSize verifies that ConsoleSize is only passed to ExecAttach +// when the service has TTY enabled. When TTY is disabled, passing a non-zero +// ConsoleSize causes the Docker daemon to return "console size is only supported +// when TTY is enabled" (regression introduced in v5.1.0). +func TestRunHook_ConsoleSize(t *testing.T) { + tests := []struct { + name string + tty bool + expectedConsole client.ConsoleSize + }{ + { + name: "no tty - ConsoleSize must be zero", + tty: false, + expectedConsole: client.ConsoleSize{}, + }, + { + name: "with tty - ConsoleSize should reflect terminal dimensions", + tty: true, + expectedConsole: client.ConsoleSize{Width: 80, Height: 24}, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockAPI := mocks.NewMockAPIClient(mockCtrl) + mockCli := mocks.NewMockCli(mockCtrl) + mockCli.EXPECT().Client().Return(mockAPI).AnyTimes() + mockCli.EXPECT().Err().Return(streams.NewOut(os.Stderr)).AnyTimes() + + // Create a PTY so GetTtySize() returns real non-zero dimensions, + // simulating an interactive terminal session. + pty, slavePath, err := console.NewPty() + assert.NilError(t, err) + defer pty.Close() //nolint:errcheck + assert.NilError(t, pty.Resize(console.WinSize{Height: 24, Width: 80})) + + slaveFile, err := os.OpenFile(slavePath, os.O_RDWR, 0) + assert.NilError(t, err) + defer slaveFile.Close() //nolint:errcheck + + mockCli.EXPECT().Out().Return(streams.NewOut(slaveFile)).AnyTimes() + + service := types.ServiceConfig{ + Name: "test", + Tty: tc.tty, + } + hook := types.ServiceHook{Command: []string{"echo", "hello"}} + ctr := container.Summary{ID: "container123"} + + mockAPI.EXPECT(). + ExecCreate(gomock.Any(), "container123", gomock.Any()). + Return(client.ExecCreateResult{ID: "exec123"}, nil) + + // Return a pipe that immediately closes so the reader gets EOF. + serverConn, clientConn := net.Pipe() + serverConn.Close() //nolint:errcheck + mockAPI.EXPECT(). + ExecAttach(gomock.Any(), "exec123", client.ExecAttachOptions{ + TTY: tc.tty, + ConsoleSize: tc.expectedConsole, + }). + Return(client.ExecAttachResult{ + HijackedResponse: client.NewHijackedResponse(clientConn, ""), + }, nil) + + mockAPI.EXPECT(). + ExecInspect(gomock.Any(), "exec123", gomock.Any()). + Return(client.ExecInspectResult{ExitCode: 0}, nil) + + s, err := NewComposeService(mockCli) + assert.NilError(t, err) + + noopListener := func(api.ContainerEvent) {} + err = s.(*composeService).runHook(t.Context(), ctr, service, hook, noopListener) + assert.NilError(t, err) + }) + } +} ++++++ docker-compose.obsinfo ++++++ --- /var/tmp/diff_new_pack.GlGTW0/_old 2026-03-20 21:21:50.222571901 +0100 +++ /var/tmp/diff_new_pack.GlGTW0/_new 2026-03-20 21:21:50.226572068 +0100 @@ -1,5 +1,5 @@ name: docker-compose -version: 5.1.0 -mtime: 1771950119 -commit: 85d6770b7fb6e2b38234cc9219f59049e42d6924 +version: 5.1.1 +mtime: 1773847414 +commit: b043368028e9fcb4545fa340c8ad635c370825da ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/docker-compose/vendor.tar.gz /work/SRC/openSUSE:Factory/.docker-compose.new.8177/vendor.tar.gz differ: char 41, line 1
