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 2023-04-21 14:17:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/docker-compose (Old)
 and      /work/SRC/openSUSE:Factory/.docker-compose.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "docker-compose"

Fri Apr 21 14:17:00 2023 rev:20 rq:1080914 version:2.17.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/docker-compose/docker-compose.changes    
2023-03-27 18:17:46.795581409 +0200
+++ /work/SRC/openSUSE:Factory/.docker-compose.new.1533/docker-compose.changes  
2023-04-21 14:17:11.646642100 +0200
@@ -1,0 +2,30 @@
+Thu Apr 20 14:26:37 UTC 2023 - ka...@b1-systems.de
+
+- Update to version 2.17.3:
+  * bump compose-go to v1.13.4
+  * build(deps): bump github.com/docker/docker
+  * build(deps): bump github.com/docker/cli
+  * bump compose-go
+  * Remove redundant goroutine while removing containers (#10449)
+  * log: fix race on container kill (#10459)
+  * Don't use "info.IndexServerAddress" for authentication
+  * go.mod: fix grouping of dependencies, and tidy
+  * build(deps): bump github.com/opencontainers/runc from 1.1.3 to
+    1.1.5
+  * add dry-run support to down command
+  * fix gocyclo lint error which currently block Compose CI
+  * can't watch a service without a build section
+  * ansi=auto|never|always
+  * bump docker version to 23.0.3 (CVE-2023-28840)
+  * better support NO_COLOR by disabling colors, not ANSI TUI
+    (#10434)
+  * ci: bump Go to 1.20.3 and various dependencies
+  * restore `--timeout` flag renamed by mistake
+  * prevent panic using classic builder
+  * add dry-run support to create command
+  * build(deps): bump github.com/docker/cli
+  * build(deps): bump github.com/docker/docker
+  * workaround race condition in ContainerList
+  * add dry-run support to run command
+
+-------------------------------------------------------------------

Old:
----
  compose-2.17.2.obscpio

New:
----
  compose-2.17.3.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ docker-compose.spec ++++++
--- /var/tmp/diff_new_pack.hJkKiC/_old  2023-04-21 14:17:12.518646990 +0200
+++ /var/tmp/diff_new_pack.hJkKiC/_new  2023-04-21 14:17:12.526647034 +0200
@@ -19,7 +19,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           docker-compose
-Version:        2.17.2
+Version:        2.17.3
 Release:        0
 Summary:        Define and run multi-container applications with Docker
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.hJkKiC/_old  2023-04-21 14:17:12.582647348 +0200
+++ /var/tmp/diff_new_pack.hJkKiC/_new  2023-04-21 14:17:12.586647371 +0200
@@ -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">v2.17.2</param>
+    <param name="revision">v2.17.3</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>
@@ -17,7 +17,7 @@
     <param name="compression">gz</param>
   </service>
   <service name="go_modules" mode="disabled">
-    <param name="archive">compose-2.17.2.obscpio</param>
+    <param name="archive">compose-2.17.3.obscpio</param>
   </service>
 </services>
 

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.hJkKiC/_old  2023-04-21 14:17:12.618647550 +0200
+++ /var/tmp/diff_new_pack.hJkKiC/_new  2023-04-21 14:17:12.622647573 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/docker/compose</param>
-              <param 
name="changesrevision">0b6133f75b1678413a588a80440a3b239e686467</param></service></servicedata>
+              <param 
name="changesrevision">7b0ed13209894b5981608f7d9e329a3a58af957d</param></service></servicedata>
 (No newline at EOF)
 

++++++ compose-2.17.2.obscpio -> compose-2.17.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/Dockerfile 
new/compose-2.17.3/Dockerfile
--- old/compose-2.17.2/Dockerfile       2023-03-26 16:09:47.000000000 +0200
+++ new/compose-2.17.3/Dockerfile       2023-04-20 11:12:07.000000000 +0200
@@ -15,9 +15,9 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-ARG GO_VERSION=1.20.2
-ARG XX_VERSION=1.1.2
-ARG GOLANGCI_LINT_VERSION=v1.52.0
+ARG GO_VERSION=1.20.3
+ARG XX_VERSION=1.2.1
+ARG GOLANGCI_LINT_VERSION=v1.52.2
 ARG ADDLICENSE_VERSION=v1.0.0
 
 ARG BUILD_TAGS="e2e"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/cmd/compose/compose.go 
new/compose-2.17.3/cmd/compose/compose.go
--- old/compose-2.17.2/cmd/compose/compose.go   2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/cmd/compose/compose.go   2023-04-20 11:12:07.000000000 
+0200
@@ -305,15 +305,17 @@
                                logrus.SetLevel(logrus.TraceLevel)
                        }
 
-                       if noColor, ok := os.LookupEnv("NO_COLOR"); ok && 
noColor != "" && !cmd.Flags().Changed("ansi") {
-                               ansi = "never"
+                       formatter.SetANSIMode(streams, ansi)
+
+                       if noColor, ok := os.LookupEnv("NO_COLOR"); ok && 
noColor != "" {
+                               progress.NoColor()
+                               formatter.SetANSIMode(streams, formatter.Never)
                        }
 
-                       formatter.SetANSIMode(streams, ansi)
                        switch ansi {
                        case "never":
                                progress.Mode = progress.ModePlain
-                       case "tty":
+                       case "always":
                                progress.Mode = progress.ModeTTY
                        }
                        if opts.WorkDir != "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/cmd/compose/remove.go 
new/compose-2.17.3/cmd/compose/remove.go
--- old/compose-2.17.2/cmd/compose/remove.go    2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/cmd/compose/remove.go    2023-04-20 11:12:07.000000000 
+0200
@@ -64,16 +64,6 @@
                return err
        }
 
-       if opts.stop {
-               err := backend.Stop(ctx, name, api.StopOptions{
-                       Services: services,
-                       Project:  project,
-               })
-               if err != nil {
-                       return err
-               }
-       }
-
        return backend.Remove(ctx, name, api.RemoveOptions{
                Services: services,
                Force:    opts.force,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/cmd/compose/up.go 
new/compose-2.17.3/cmd/compose/up.go
--- old/compose-2.17.2/cmd/compose/up.go        2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/cmd/compose/up.go        2023-04-20 11:12:07.000000000 
+0200
@@ -104,7 +104,7 @@
        flags.BoolVar(&up.noStart, "no-start", false, "Don't start the services 
after creating them.")
        flags.BoolVar(&up.cascadeStop, "abort-on-container-exit", false, "Stops 
all containers if any container was stopped. Incompatible with -d")
        flags.StringVar(&up.exitCodeFrom, "exit-code-from", "", "Return the 
exit code of the selected service container. Implies --abort-on-container-exit")
-       flags.IntVarP(&create.timeout, "waitTimeout", "t", 10, "Use this 
waitTimeout in seconds for container shutdown when attached or when containers 
are already running.")
+       flags.IntVarP(&create.timeout, "timeout", "t", 10, "Use this timeout in 
seconds for container shutdown when attached or when containers are already 
running.")
        flags.BoolVar(&up.timestamp, "timestamps", false, "Show timestamps.")
        flags.BoolVar(&up.noDeps, "no-deps", false, "Don't start linked 
services.")
        flags.BoolVar(&create.recreateDeps, "always-recreate-deps", false, 
"Recreate dependent containers. Incompatible with --no-recreate.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/docs/reference/compose_up.md 
new/compose-2.17.3/docs/reference/compose_up.md
--- old/compose-2.17.2/docs/reference/compose_up.md     2023-03-26 
16:09:47.000000000 +0200
+++ new/compose-2.17.3/docs/reference/compose_up.md     2023-04-20 
11:12:07.000000000 +0200
@@ -5,32 +5,32 @@
 
 ### Options
 
-| Name                         | Type          | Default   | Description       
                                                                                
           |
-|:-----------------------------|:--------------|:----------|:-------------------------------------------------------------------------------------------------------------|
-| `--abort-on-container-exit`  |               |           | Stops all 
containers if any container was stopped. Incompatible with -d                   
                   |
-| `--always-recreate-deps`     |               |           | Recreate 
dependent containers. Incompatible with --no-recreate.                          
                    |
-| `--attach`                   | `stringArray` |           | Attach to service 
output.                                                                         
           |
-| `--attach-dependencies`      |               |           | Attach to 
dependent containers.                                                           
                   |
-| `--build`                    |               |           | Build images 
before starting containers.                                                     
                |
-| `-d`, `--detach`             |               |           | Detached mode: 
Run containers in the background                                                
              |
-| `--exit-code-from`           | `string`      |           | Return the exit 
code of the selected service container. Implies --abort-on-container-exit       
             |
-| `--force-recreate`           |               |           | Recreate 
containers even if their configuration and image haven't changed.               
                    |
-| `--no-attach`                | `stringArray` |           | Don't attach to 
specified service.                                                              
             |
-| `--no-build`                 |               |           | Don't build an 
image, even if it's missing.                                                    
              |
-| `--no-color`                 |               |           | Produce 
monochrome output.                                                              
                     |
-| `--no-deps`                  |               |           | Don't start 
linked services.                                                                
                 |
-| `--no-log-prefix`            |               |           | Don't print 
prefix in logs.                                                                 
                 |
-| `--no-recreate`              |               |           | If containers 
already exist, don't recreate them. Incompatible with --force-recreate.         
               |
-| `--no-start`                 |               |           | Don't start the 
services after creating them.                                                   
             |
-| `--pull`                     | `string`      | `missing` | Pull image before 
running ("always"\|"missing"\|"never")                                          
           |
-| `--quiet-pull`               |               |           | Pull without 
printing progress information.                                                  
                |
-| `--remove-orphans`           |               |           | Remove containers 
for services not defined in the Compose file.                                   
           |
-| `-V`, `--renew-anon-volumes` |               |           | Recreate 
anonymous volumes instead of retrieving data from the previous containers.      
                    |
-| `--scale`                    | `stringArray` |           | Scale SERVICE to 
NUM instances. Overrides the `scale` setting in the Compose file if present.    
            |
-| `--timestamps`               |               |           | Show timestamps.  
                                                                                
           |
-| `--wait`                     |               |           | Wait for services 
to be running\|healthy. Implies detached mode.                                  
           |
-| `--wait-timeout`             | `int`         | `0`       | timeout waiting 
for application to be running\|healthy.                                         
             |
-| `-t`, `--waitTimeout`        | `int`         | `10`      | Use this 
waitTimeout in seconds for container shutdown when attached or when containers 
are already running. |
+| Name                         | Type          | Default   | Description       
                                                                                
       |
+|:-----------------------------|:--------------|:----------|:---------------------------------------------------------------------------------------------------------|
+| `--abort-on-container-exit`  |               |           | Stops all 
containers if any container was stopped. Incompatible with -d                   
               |
+| `--always-recreate-deps`     |               |           | Recreate 
dependent containers. Incompatible with --no-recreate.                          
                |
+| `--attach`                   | `stringArray` |           | Attach to service 
output.                                                                         
       |
+| `--attach-dependencies`      |               |           | Attach to 
dependent containers.                                                           
               |
+| `--build`                    |               |           | Build images 
before starting containers.                                                     
            |
+| `-d`, `--detach`             |               |           | Detached mode: 
Run containers in the background                                                
          |
+| `--exit-code-from`           | `string`      |           | Return the exit 
code of the selected service container. Implies --abort-on-container-exit       
         |
+| `--force-recreate`           |               |           | Recreate 
containers even if their configuration and image haven't changed.               
                |
+| `--no-attach`                | `stringArray` |           | Don't attach to 
specified service.                                                              
         |
+| `--no-build`                 |               |           | Don't build an 
image, even if it's missing.                                                    
          |
+| `--no-color`                 |               |           | Produce 
monochrome output.                                                              
                 |
+| `--no-deps`                  |               |           | Don't start 
linked services.                                                                
             |
+| `--no-log-prefix`            |               |           | Don't print 
prefix in logs.                                                                 
             |
+| `--no-recreate`              |               |           | If containers 
already exist, don't recreate them. Incompatible with --force-recreate.         
           |
+| `--no-start`                 |               |           | Don't start the 
services after creating them.                                                   
         |
+| `--pull`                     | `string`      | `missing` | Pull image before 
running ("always"\|"missing"\|"never")                                          
       |
+| `--quiet-pull`               |               |           | Pull without 
printing progress information.                                                  
            |
+| `--remove-orphans`           |               |           | Remove containers 
for services not defined in the Compose file.                                   
       |
+| `-V`, `--renew-anon-volumes` |               |           | Recreate 
anonymous volumes instead of retrieving data from the previous containers.      
                |
+| `--scale`                    | `stringArray` |           | Scale SERVICE to 
NUM instances. Overrides the `scale` setting in the Compose file if present.    
        |
+| `-t`, `--timeout`            | `int`         | `10`      | Use this timeout 
in seconds for container shutdown when attached or when containers are already 
running. |
+| `--timestamps`               |               |           | Show timestamps.  
                                                                                
       |
+| `--wait`                     |               |           | Wait for services 
to be running\|healthy. Implies detached mode.                                  
       |
+| `--wait-timeout`             | `int`         | `0`       | timeout waiting 
for application to be running\|healthy.                                         
         |
 
 
 <!---MARKER_GEN_END-->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/docs/reference/docker_compose_up.yaml 
new/compose-2.17.3/docs/reference/docker_compose_up.yaml
--- old/compose-2.17.2/docs/reference/docker_compose_up.yaml    2023-03-26 
16:09:47.000000000 +0200
+++ new/compose-2.17.3/docs/reference/docker_compose_up.yaml    2023-04-20 
11:12:07.000000000 +0200
@@ -231,6 +231,18 @@
       experimentalcli: false
       kubernetes: false
       swarm: false
+    - option: timeout
+      shorthand: t
+      value_type: int
+      default_value: "10"
+      description: |
+        Use this timeout in seconds for container shutdown when attached or 
when containers are already running.
+      deprecated: false
+      hidden: false
+      experimental: false
+      experimentalcli: false
+      kubernetes: false
+      swarm: false
     - option: timestamps
       value_type: bool
       default_value: "false"
@@ -258,18 +270,6 @@
       deprecated: false
       hidden: false
       experimental: false
-      experimentalcli: false
-      kubernetes: false
-      swarm: false
-    - option: waitTimeout
-      shorthand: t
-      value_type: int
-      default_value: "10"
-      description: |
-        Use this waitTimeout in seconds for container shutdown when attached 
or when containers are already running.
-      deprecated: false
-      hidden: false
-      experimental: false
       experimentalcli: false
       kubernetes: false
       swarm: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/go.mod new/compose-2.17.3/go.mod
--- old/compose-2.17.2/go.mod   2023-03-26 16:09:47.000000000 +0200
+++ new/compose-2.17.3/go.mod   2023-04-20 11:12:07.000000000 +0200
@@ -5,15 +5,15 @@
 require (
        github.com/AlecAivazis/survey/v2 v2.3.6
        github.com/buger/goterm v1.0.4
-       github.com/compose-spec/compose-go v1.13.2
+       github.com/compose-spec/compose-go v1.13.4
        github.com/containerd/console v1.0.3
        github.com/containerd/containerd v1.6.19
-       github.com/cucumber/godog v0.0.0-00010101000000-000000000000
-       github.com/distribution/distribution/v3 
v3.0.0-20230223072852-e5d5810851d1
+       github.com/cucumber/godog v0.0.0-00010101000000-000000000000 // 
replaced; see replace for the actual version used
+       github.com/distribution/distribution/v3 
v3.0.0-20230327091844-0c958010ace2
        github.com/docker/buildx v0.10.4
-       github.com/docker/cli v23.0.1+incompatible
+       github.com/docker/cli v23.0.4+incompatible
        github.com/docker/cli-docs-tool v0.5.1
-       github.com/docker/docker v23.0.1+incompatible
+       github.com/docker/docker v23.0.4+incompatible
        github.com/docker/go-connections v0.4.0
        github.com/docker/go-units v0.5.0
        github.com/golang/mock v1.6.0
@@ -28,21 +28,32 @@
        github.com/opencontainers/image-spec v1.1.0-rc2
        github.com/pkg/errors v0.9.1
        github.com/sirupsen/logrus v1.9.0
-       github.com/spf13/cobra v1.6.1
+       github.com/spf13/cobra v1.7.0
        github.com/spf13/pflag v1.0.5
        github.com/stretchr/testify v1.8.2
        github.com/theupdateframework/notary v0.7.0
        github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375
        go.opentelemetry.io/otel v1.14.0
+       go.uber.org/goleak v1.2.1
        golang.org/x/sync v0.1.0
        gopkg.in/yaml.v2 v2.4.0
        gotest.tools/v3 v3.4.0
-       k8s.io/client-go v0.24.1 // indirect; replaced; see replace for the 
actual version used
 )
 
 require (
        github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // 
indirect
        github.com/Microsoft/go-winio v0.5.2 // indirect
+       github.com/aws/aws-sdk-go-v2 v1.16.3 // indirect
+       github.com/aws/aws-sdk-go-v2/config v1.15.5 // indirect
+       github.com/aws/aws-sdk-go-v2/credentials v1.12.0 // indirect
+       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11 // indirect
+       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4 // 
indirect
+       github.com/aws/aws-sdk-go-v2/service/sso v1.11.4 // indirect
+       github.com/aws/aws-sdk-go-v2/service/sts v1.16.4 // indirect
+       github.com/aws/smithy-go v1.11.2 // indirect
        github.com/beorn7/perks v1.0.1 // indirect
        github.com/bugsnag/bugsnag-go v1.5.0 // indirect
        github.com/cenkalti/backoff/v4 v4.1.2 // indirect
@@ -60,6 +71,7 @@
        github.com/docker/go-metrics v0.0.1 // indirect
        github.com/felixge/httpsnoop v1.0.2 // indirect
        github.com/fsnotify/fsevents v0.1.1
+       github.com/fsnotify/fsnotify v1.6.0 // indirect
        github.com/fvbommel/sortorder v1.0.2 // indirect
        github.com/go-logr/logr v1.2.3 // indirect
        github.com/go-logr/stdr v1.2.2 // indirect
@@ -79,13 +91,15 @@
        github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
        github.com/hashicorp/go-memdb v1.3.2 // indirect
        github.com/hashicorp/golang-lru v0.5.4 // indirect
-       github.com/imdario/mergo v0.3.14 // indirect
-       github.com/inconshreveable/mousetrap v1.0.1 // indirect
+       github.com/hashicorp/hcl v1.0.0 // indirect
+       github.com/imdario/mergo v0.3.15 // indirect
+       github.com/inconshreveable/mousetrap v1.1.0 // indirect
        github.com/jinzhu/gorm v1.9.11 // indirect
-       github.com/jonboulle/clockwork v0.3.1-0.20230117163003-a89700cec744
+       github.com/jonboulle/clockwork v0.4.0
        github.com/json-iterator/go v1.1.12 // indirect
        github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // 
indirect
        github.com/klauspost/compress v1.15.12 // indirect
+       github.com/magiconair/properties v1.8.6 // indirect
        github.com/mattn/go-colorable v0.1.13 // indirect
        github.com/mattn/go-isatty v0.0.17 // indirect
        github.com/mattn/go-runewidth v0.0.14 // indirect
@@ -95,13 +109,15 @@
        github.com/moby/locker v1.0.1 // indirect
        github.com/moby/patternmatcher v0.5.0
        github.com/moby/spdystream v0.2.0 // indirect
+       github.com/moby/sys/mountinfo v0.6.2 // indirect
        github.com/moby/sys/sequential v0.5.0 // indirect
        github.com/moby/sys/signal v0.7.0 // indirect
        github.com/moby/sys/symlink v0.2.0 // indirect
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // 
indirect
        github.com/modern-go/reflect2 v1.0.2 // indirect
-       github.com/opencontainers/runc v1.1.3 // indirect
+       github.com/opencontainers/runc v1.1.5 // indirect
        github.com/pelletier/go-toml v1.9.5 // indirect
+       github.com/pelletier/go-toml/v2 v2.0.5 // indirect
        github.com/pmezard/go-difflib v1.0.0 // indirect
        github.com/prometheus/client_golang v1.14.0 // indirect
        github.com/prometheus/client_model v0.3.0 // indirect
@@ -109,6 +125,10 @@
        github.com/prometheus/procfs v0.8.0 // indirect
        github.com/rivo/uniseg v0.2.0 // indirect
        github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002 // 
indirect
+       github.com/spf13/afero v1.9.2 // indirect
+       github.com/spf13/cast v1.5.0 // indirect
+       github.com/spf13/jwalterweatherman v1.1.0 // indirect
+       github.com/subosito/gotenv v1.4.1 // indirect
        github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa // 
indirect
        github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea // 
indirect
        github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f // 
indirect
@@ -141,41 +161,17 @@
        google.golang.org/grpc v1.50.1 // indirect
        google.golang.org/protobuf v1.28.1 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
+       gopkg.in/ini.v1 v1.67.0 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
        k8s.io/api v0.24.1 // indirect; replaced; see replace for the actual 
version used
        k8s.io/apimachinery v0.24.1 // indirect; replaced; see replace for the 
actual version used
+       k8s.io/client-go v0.24.1 // indirect; replaced; see replace for the 
actual version used
        k8s.io/klog/v2 v2.60.1 // indirect
        k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect
        sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
        sigs.k8s.io/yaml v1.2.0 // indirect
 )
 
-require go.uber.org/goleak v1.2.1
-
-require (
-       github.com/aws/aws-sdk-go-v2 v1.16.3 // indirect
-       github.com/aws/aws-sdk-go-v2/config v1.15.5 // indirect
-       github.com/aws/aws-sdk-go-v2/credentials v1.12.0 // indirect
-       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11 // indirect
-       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4 // 
indirect
-       github.com/aws/aws-sdk-go-v2/service/sso v1.11.4 // indirect
-       github.com/aws/aws-sdk-go-v2/service/sts v1.16.4 // indirect
-       github.com/aws/smithy-go v1.11.2 // indirect
-       github.com/fsnotify/fsnotify v1.6.0 // indirect
-       github.com/hashicorp/hcl v1.0.0 // indirect
-       github.com/magiconair/properties v1.8.6 // indirect
-       github.com/moby/sys/mountinfo v0.6.2 // indirect
-       github.com/pelletier/go-toml/v2 v2.0.5 // indirect
-       github.com/spf13/afero v1.9.2 // indirect
-       github.com/spf13/cast v1.5.0 // indirect
-       github.com/spf13/jwalterweatherman v1.1.0 // indirect
-       github.com/subosito/gotenv v1.4.1 // indirect
-       gopkg.in/ini.v1 v1.67.0 // indirect
-)
-
 replace (
        // Override for e2e tests
        github.com/cucumber/godog => github.com/laurazard/godog 
v0.0.0-20220922095256-4c4b17abdae7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/go.sum new/compose-2.17.3/go.sum
--- old/compose-2.17.2/go.sum   2023-03-26 16:09:47.000000000 +0200
+++ new/compose-2.17.3/go.sum   2023-04-20 11:12:07.000000000 +0200
@@ -165,8 +165,8 @@
 github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod 
h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod 
h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod 
h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/compose-spec/compose-go v1.13.2 
h1:FDfb5ddIpbGbxLRg5qjObOf5CrWbKnuHZ+zvpEdCqKc=
-github.com/compose-spec/compose-go v1.13.2/go.mod 
h1:SQfvBkB9u8bLhrj4RQP4I777SqzNLSl9/fNnfvOOjek=
+github.com/compose-spec/compose-go v1.13.4 
h1:O6xAsPqaY1s9KXteiO7wRCDTJLahv1XP/z/eUO9EfbI=
+github.com/compose-spec/compose-go v1.13.4/go.mod 
h1:rsiZ8uaOHJYJemDBzTe9UBpaq5ZFVEOO4TxM2G3SJxk=
 github.com/containerd/cgroups v1.0.4 
h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA=
 github.com/containerd/console v1.0.3 
h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=
 github.com/containerd/console v1.0.3/go.mod 
h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
@@ -201,19 +201,19 @@
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3/go.mod 
h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM=
 github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod 
h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
-github.com/distribution/distribution/v3 v3.0.0-20230223072852-e5d5810851d1 
h1:OtfRoaZ54jKZ7jl9WuxqekousLR9T63iJf0y2EdC2S4=
-github.com/distribution/distribution/v3 
v3.0.0-20230223072852-e5d5810851d1/go.mod 
h1:r5XLH1cp+Wau2jxdptkYsFvvvzPPQTIe8eUuQ0vq30Q=
+github.com/distribution/distribution/v3 v3.0.0-20230327091844-0c958010ace2 
h1:KTYNpKuqtdZJOobHigxfdikPdsBwddmzeRn3UMocznM=
+github.com/distribution/distribution/v3 
v3.0.0-20230327091844-0c958010ace2/go.mod 
h1:r5XLH1cp+Wau2jxdptkYsFvvvzPPQTIe8eUuQ0vq30Q=
 github.com/docker/buildx v0.10.4 
h1:qsHwlUZaLu7UQkDhJDSRQ+jrvWf6mqwwtY+gWO3rzuA=
 github.com/docker/buildx v0.10.4/go.mod 
h1:2mHDjD0QevclBGYIXDOWY/ZU71JAzx7w4CfgroYbHQw=
-github.com/docker/cli v23.0.1+incompatible 
h1:LRyWITpGzl2C9e9uGxzisptnxAn1zfZKXy13Ul2Q5oM=
-github.com/docker/cli v23.0.1+incompatible/go.mod 
h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v23.0.4+incompatible 
h1:xClB7PsiATttDHj8ce5qvJcikiApNy7teRR1XkoBZGs=
+github.com/docker/cli v23.0.4+incompatible/go.mod 
h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
 github.com/docker/cli-docs-tool v0.5.1 
h1:jIk/cCZurZERhALPVKhqlNxTQGxn2kcI+56gE57PQXg=
 github.com/docker/cli-docs-tool v0.5.1/go.mod 
h1:zMjqTFCU361PRh8apiXzeAZ1Q/xupbIwTusYpzCXS/o=
 github.com/docker/distribution v2.7.1+incompatible/go.mod 
h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
 github.com/docker/distribution v2.8.1+incompatible 
h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
 github.com/docker/distribution v2.8.1+incompatible/go.mod 
h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v23.0.1+incompatible 
h1:vjgvJZxprTTE1A37nm+CLNAdwu6xZekyoiVlUZEINcY=
-github.com/docker/docker v23.0.1+incompatible/go.mod 
h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v23.0.4+incompatible 
h1:Kd3Bh9V/rO+XpTP/BLqM+gx8z7+Yb0AA2Ibj+nNo4ek=
+github.com/docker/docker v23.0.4+incompatible/go.mod 
h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
 github.com/docker/docker-credential-helpers v0.7.0 
h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
 github.com/docker/docker-credential-helpers v0.7.0/go.mod 
h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
 github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c 
h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0=
@@ -447,12 +447,12 @@
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod 
h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod 
h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/imdario/mergo v0.3.5/go.mod 
h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.14 
h1:fOqeC1+nCuuk6PKQdg9YmosXX7Y7mHX6R/0ZldI9iHo=
-github.com/imdario/mergo v0.3.14/go.mod 
h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
+github.com/imdario/mergo v0.3.15 
h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
+github.com/imdario/mergo v0.3.15/go.mod 
h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
 github.com/in-toto/in-toto-golang v0.5.0 
h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod 
h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/inconshreveable/mousetrap v1.0.1 
h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
-github.com/inconshreveable/mousetrap v1.0.1/go.mod 
h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/inconshreveable/mousetrap v1.1.0 
h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod 
h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
 github.com/jessevdk/go-flags v1.4.0/go.mod 
h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
 github.com/jinzhu/gorm v0.0.0-20170222002820-5409931a1bb8/go.mod 
h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo=
 github.com/jinzhu/gorm v1.9.11 h1:gaHGvE+UnWGlbWG4Y3FUwY1EcZ5n6S9WtqBA/uySMLE=
@@ -466,8 +466,8 @@
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod 
h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 github.com/jmhodges/clock v0.0.0-20160418191101-880ee4c33548/go.mod 
h1:hGT6jSUVzF6no3QaDSMLGLEHtHSBSefs+MgcDWnmhmo=
 github.com/jmoiron/sqlx v0.0.0-20180124204410-05cef0741ade/go.mod 
h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU=
-github.com/jonboulle/clockwork v0.3.1-0.20230117163003-a89700cec744 
h1:fJ+REXDOpsMqA2spt3wAq3HGJJvWnNitGK2KVZTos+8=
-github.com/jonboulle/clockwork v0.3.1-0.20230117163003-a89700cec744/go.mod 
h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
+github.com/jonboulle/clockwork v0.4.0 
h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4=
+github.com/jonboulle/clockwork v0.4.0/go.mod 
h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
 github.com/jpillora/backoff v1.0.0/go.mod 
h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
 github.com/json-iterator/go v1.1.6/go.mod 
h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/json-iterator/go v1.1.7/go.mod 
h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@@ -596,8 +596,8 @@
 github.com/opencontainers/image-spec v1.0.1/go.mod 
h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
 github.com/opencontainers/image-spec v1.1.0-rc2 
h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
 github.com/opencontainers/image-spec v1.1.0-rc2/go.mod 
h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
-github.com/opencontainers/runc v1.1.3 
h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w=
-github.com/opencontainers/runc v1.1.3/go.mod 
h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg=
+github.com/opencontainers/runc v1.1.5 
h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs=
+github.com/opencontainers/runc v1.1.5/go.mod 
h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg=
 github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 
h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc=
 github.com/opencontainers/runtime-spec 
v1.0.3-0.20210326190908-1c3f411f0417/go.mod 
h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 github.com/opencontainers/selinux v1.10.0/go.mod 
h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
@@ -694,8 +694,8 @@
 github.com/spf13/cast v1.5.0/go.mod 
h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
 github.com/spf13/cobra v0.0.1/go.mod 
h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
 github.com/spf13/cobra v1.4.0/go.mod 
h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=
-github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
-github.com/spf13/cobra v1.6.1/go.mod 
h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
+github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
+github.com/spf13/cobra v1.7.0/go.mod 
h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
 github.com/spf13/jwalterweatherman v0.0.0-20141219030609-3d60171a6431/go.mod 
h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
 github.com/spf13/jwalterweatherman v1.1.0 
h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
 github.com/spf13/jwalterweatherman v1.1.0/go.mod 
h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/api/dryrunclient.go 
new/compose-2.17.3/pkg/api/dryrunclient.go
--- old/compose-2.17.2/pkg/api/dryrunclient.go  2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/api/dryrunclient.go  2023-04-20 11:12:07.000000000 
+0200
@@ -24,6 +24,7 @@
        "io"
        "net"
        "net/http"
+       "runtime"
        "strings"
        "sync"
 
@@ -84,15 +85,36 @@
        }, nil
 }
 
+func getCallingFunction() string {
+       pc, _, _, _ := runtime.Caller(2)
+       fullName := runtime.FuncForPC(pc).Name()
+       return fullName[strings.LastIndex(fullName, ".")+1:]
+}
+
 // All methods and functions which need to be overridden for dry run.
 
 func (d *DryRunClient) ContainerAttach(ctx context.Context, container string, 
options moby.ContainerAttachOptions) (moby.HijackedResponse, error) {
-       return moby.HijackedResponse{}, ErrNotImplemented
+       return moby.HijackedResponse{}, errors.New("interactive run is not 
supported in dry-run mode")
 }
 
 func (d *DryRunClient) ContainerCreate(ctx context.Context, config 
*containerType.Config, hostConfig *containerType.HostConfig,
        networkingConfig *network.NetworkingConfig, platform *specs.Platform, 
containerName string) (containerType.CreateResponse, error) {
-       return containerType.CreateResponse{}, ErrNotImplemented
+       return containerType.CreateResponse{ID: "dryRunId"}, nil
+}
+
+func (d *DryRunClient) ContainerInspect(ctx context.Context, container string) 
(moby.ContainerJSON, error) {
+       containerJSON, err := d.apiClient.ContainerInspect(ctx, container)
+       if err != nil {
+               return moby.ContainerJSON{
+                       ContainerJSONBase: &moby.ContainerJSONBase{
+                               ID: "dryRunId",
+                       },
+                       Mounts:          nil,
+                       Config:          &containerType.Config{},
+                       NetworkSettings: &moby.NetworkSettings{},
+               }, nil
+       }
+       return containerJSON, err
 }
 
 func (d *DryRunClient) ContainerKill(ctx context.Context, container, signal 
string) error {
@@ -108,7 +130,7 @@
 }
 
 func (d *DryRunClient) ContainerRename(ctx context.Context, container, 
newContainerName string) error {
-       return ErrNotImplemented
+       return nil
 }
 
 func (d *DryRunClient) ContainerRestart(ctx context.Context, container string, 
options containerType.StopOptions) error {
@@ -116,7 +138,7 @@
 }
 
 func (d *DryRunClient) ContainerStart(ctx context.Context, container string, 
options moby.ContainerStartOptions) error {
-       return ErrNotImplemented
+       return nil
 }
 
 func (d *DryRunClient) ContainerStop(ctx context.Context, container string, 
options containerType.StopOptions) error {
@@ -147,7 +169,14 @@
 }
 
 func (d *DryRunClient) ImageInspectWithRaw(ctx context.Context, imageName 
string) (moby.ImageInspect, []byte, error) {
-       return moby.ImageInspect{ID: "dryRunId"}, nil, nil
+       caller := getCallingFunction()
+       switch caller {
+       case "pullServiceImage", "buildContainerVolumes":
+               return moby.ImageInspect{ID: "dryRunId"}, nil, nil
+       default:
+               return d.apiClient.ImageInspectWithRaw(ctx, imageName)
+       }
+
 }
 
 func (d *DryRunClient) ImagePull(ctx context.Context, ref string, options 
moby.ImagePullOptions) (io.ReadCloser, error) {
@@ -181,23 +210,26 @@
 }
 
 func (d *DryRunClient) ImageRemove(ctx context.Context, imageName string, 
options moby.ImageRemoveOptions) ([]moby.ImageDeleteResponseItem, error) {
-       return nil, ErrNotImplemented
+       return nil, nil
 }
 
 func (d *DryRunClient) NetworkConnect(ctx context.Context, networkName, 
container string, config *network.EndpointSettings) error {
-       return ErrNotImplemented
+       return nil
 }
 
 func (d *DryRunClient) NetworkCreate(ctx context.Context, name string, options 
moby.NetworkCreate) (moby.NetworkCreateResponse, error) {
-       return moby.NetworkCreateResponse{}, ErrNotImplemented
+       return moby.NetworkCreateResponse{
+               ID:      name,
+               Warning: "",
+       }, nil
 }
 
 func (d *DryRunClient) NetworkDisconnect(ctx context.Context, networkName, 
container string, force bool) error {
-       return ErrNotImplemented
+       return nil
 }
 
 func (d *DryRunClient) NetworkRemove(ctx context.Context, networkName string) 
error {
-       return ErrNotImplemented
+       return nil
 }
 
 func (d *DryRunClient) VolumeCreate(ctx context.Context, options 
volume.CreateOptions) (volume.Volume, error) {
@@ -205,7 +237,7 @@
 }
 
 func (d *DryRunClient) VolumeRemove(ctx context.Context, volumeID string, 
force bool) error {
-       return ErrNotImplemented
+       return nil
 }
 
 func (d *DryRunClient) ContainerExecCreate(ctx context.Context, container 
string, config moby.ExecConfig) (moby.IDResponse, error) {
@@ -275,10 +307,6 @@
        return d.apiClient.ContainerExport(ctx, container)
 }
 
-func (d *DryRunClient) ContainerInspect(ctx context.Context, container string) 
(moby.ContainerJSON, error) {
-       return d.apiClient.ContainerInspect(ctx, container)
-}
-
 func (d *DryRunClient) ContainerInspectWithRaw(ctx context.Context, container 
string, getSize bool) (moby.ContainerJSON, []byte, error) {
        return d.apiClient.ContainerInspectWithRaw(ctx, container, getSize)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/build.go 
new/compose-2.17.3/pkg/compose/build.go
--- old/compose-2.17.2/pkg/compose/build.go     2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/build.go     2023-04-20 11:12:07.000000000 
+0200
@@ -53,6 +53,7 @@
        }, s.stderr())
 }
 
+//nolint:gocyclo
 func (s *composeService) build(ctx context.Context, project *types.Project, 
options api.BuildOptions) (map[string]string, error) {
        args := options.Args.Resolve(envResolver(project.Environment))
 
@@ -74,8 +75,22 @@
                                return nil
                        }
 
+                       //TODO:glours - condition to be removed when dry-run 
support of build will be implemented.
+                       if s.dryRun {
+                               builder := "buildkit"
+                               if !buildkitEnabled {
+                                       builder = "legacy builder"
+                               }
+                               fmt.Printf("%sBuilding image %s with %s\n", 
api.DRYRUN_PREFIX, service.Image, builder)
+                               return nil
+                       }
+
                        if !buildkitEnabled {
-                               service.Build.Args = 
service.Build.Args.OverrideBy(args)
+                               if service.Build.Args == nil {
+                                       service.Build.Args = args
+                               } else {
+                                       service.Build.Args = 
service.Build.Args.OverrideBy(args)
+                               }
                                id, err := s.doBuildClassic(ctx, service)
                                if err != nil {
                                        return err
@@ -418,10 +433,10 @@
        return ret
 }
 
-func toBuildContexts(additionalContexts map[string]*string) 
map[string]build.NamedContext {
+func toBuildContexts(additionalContexts types.Mapping) 
map[string]build.NamedContext {
        namedContexts := map[string]build.NamedContext{}
-       for name, buildContext := range additionalContexts {
-               namedContexts[name] = build.NamedContext{Path: *buildContext}
+       for name, context := range additionalContexts {
+               namedContexts[name] = build.NamedContext{Path: context}
        }
        return namedContexts
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/compose.go 
new/compose-2.17.3/pkg/compose/compose.go
--- old/compose-2.17.2/pkg/compose/compose.go   2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/compose.go   2023-04-20 11:12:07.000000000 
+0200
@@ -123,12 +123,8 @@
 
 func (s *composeService) Config(ctx context.Context, project *types.Project, 
options api.ConfigOptions) ([]byte, error) {
        if options.ResolveImageDigests {
-               info, err := s.apiClient().Info(ctx)
-               if err != nil {
-                       return nil, err
-               }
-               err = project.ResolveImages(func(named reference.Named) 
(digest.Digest, error) {
-                       auth, err := encodedAuth(named, info, s.configFile())
+               err := project.ResolveImages(func(named reference.Named) 
(digest.Digest, error) {
+                       auth, err := encodedAuth(named, s.configFile())
                        if err != nil {
                                return "", err
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/create.go 
new/compose-2.17.3/pkg/compose/create.go
--- old/compose-2.17.2/pkg/compose/create.go    2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/create.go    2023-04-20 11:12:07.000000000 
+0200
@@ -659,25 +659,25 @@
        for _, b := range blkio.DeviceReadBps {
                resources.BlkioDeviceReadBps = 
append(resources.BlkioDeviceReadBps, &blkiodev.ThrottleDevice{
                        Path: b.Path,
-                       Rate: b.Rate,
+                       Rate: uint64(b.Rate),
                })
        }
        for _, b := range blkio.DeviceReadIOps {
                resources.BlkioDeviceReadIOps = 
append(resources.BlkioDeviceReadIOps, &blkiodev.ThrottleDevice{
                        Path: b.Path,
-                       Rate: b.Rate,
+                       Rate: uint64(b.Rate),
                })
        }
        for _, b := range blkio.DeviceWriteBps {
                resources.BlkioDeviceWriteBps = 
append(resources.BlkioDeviceWriteBps, &blkiodev.ThrottleDevice{
                        Path: b.Path,
-                       Rate: b.Rate,
+                       Rate: uint64(b.Rate),
                })
        }
        for _, b := range blkio.DeviceWriteIOps {
                resources.BlkioDeviceWriteIOps = 
append(resources.BlkioDeviceWriteIOps, &blkiodev.ThrottleDevice{
                        Path: b.Path,
-                       Rate: b.Rate,
+                       Rate: uint64(b.Rate),
                })
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/down.go 
new/compose-2.17.3/pkg/compose/down.go
--- old/compose-2.17.2/pkg/compose/down.go      2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/down.go      2023-04-20 11:12:07.000000000 
+0200
@@ -237,21 +237,25 @@
        return err
 }
 
+func (s *composeService) stopContainer(ctx context.Context, w progress.Writer, 
container moby.Container, timeout *time.Duration) error {
+       eventName := getContainerProgressName(container)
+       w.Event(progress.StoppingEvent(eventName))
+       timeoutInSecond := utils.DurationSecondToInt(timeout)
+       err := s.apiClient().ContainerStop(ctx, container.ID, 
containerType.StopOptions{Timeout: timeoutInSecond})
+       if err != nil {
+               w.Event(progress.ErrorMessageEvent(eventName, "Error while 
Stopping"))
+               return err
+       }
+       w.Event(progress.StoppedEvent(eventName))
+       return nil
+}
+
 func (s *composeService) stopContainers(ctx context.Context, w 
progress.Writer, containers []moby.Container, timeout *time.Duration) error {
        eg, ctx := errgroup.WithContext(ctx)
        for _, container := range containers {
                container := container
                eg.Go(func() error {
-                       eventName := getContainerProgressName(container)
-                       w.Event(progress.StoppingEvent(eventName))
-                       timeoutInSecond := utils.DurationSecondToInt(timeout)
-                       err := s.apiClient().ContainerStop(ctx, container.ID, 
containerType.StopOptions{Timeout: timeoutInSecond})
-                       if err != nil {
-                               w.Event(progress.ErrorMessageEvent(eventName, 
"Error while Stopping"))
-                               return err
-                       }
-                       w.Event(progress.StoppedEvent(eventName))
-                       return nil
+                       return s.stopContainer(ctx, w, container, timeout)
                })
        }
        return eg.Wait()
@@ -263,10 +267,8 @@
                container := container
                eg.Go(func() error {
                        eventName := getContainerProgressName(container)
-                       w.Event(progress.StoppingEvent(eventName))
-                       err := s.stopContainers(ctx, w, 
[]moby.Container{container}, timeout)
+                       err := s.stopContainer(ctx, w, container, timeout)
                        if err != nil {
-                               w.Event(progress.ErrorMessageEvent(eventName, 
"Error while Stopping"))
                                return err
                        }
                        w.Event(progress.RemovingEvent(eventName))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/pull.go 
new/compose-2.17.3/pkg/compose/pull.go
--- old/compose-2.17.2/pkg/compose/pull.go      2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/pull.go      2023-04-20 11:12:07.000000000 
+0200
@@ -48,15 +48,6 @@
 }
 
 func (s *composeService) pull(ctx context.Context, project *types.Project, 
opts api.PullOptions) error { //nolint:gocyclo
-       info, err := s.apiClient().Info(ctx)
-       if err != nil {
-               return err
-       }
-
-       if info.IndexServerAddress == "" {
-               info.IndexServerAddress = registry.IndexServer
-       }
-
        images, err := s.getLocalImagesDigests(ctx, project)
        if err != nil {
                return err
@@ -123,7 +114,7 @@
                imagesBeingPulled[service.Image] = service.Name
 
                eg.Go(func() error {
-                       _, err := s.pullServiceImage(ctx, service, info, 
s.configFile(), w, false, project.Environment["DOCKER_DEFAULT_PLATFORM"])
+                       _, err := s.pullServiceImage(ctx, service, 
s.configFile(), w, false, project.Environment["DOCKER_DEFAULT_PLATFORM"])
                        if err != nil {
                                pullErrors[i] = err
                                if service.Build != nil {
@@ -173,7 +164,7 @@
        return ok && tagged.Tag() != "latest"
 }
 
-func (s *composeService) pullServiceImage(ctx context.Context, service 
types.ServiceConfig, info moby.Info,
+func (s *composeService) pullServiceImage(ctx context.Context, service 
types.ServiceConfig,
        configFile driver.Auth, w progress.Writer, quietPull bool, 
defaultPlatform string) (string, error) {
        w.Event(progress.Event{
                ID:     service.Name,
@@ -185,7 +176,7 @@
                return "", err
        }
 
-       encodedAuth, err := encodedAuth(ref, info, configFile)
+       encodedAuth, err := encodedAuth(ref, configFile)
        if err != nil {
                return "", err
        }
@@ -249,17 +240,13 @@
        return inspected.ID, nil
 }
 
-func encodedAuth(ref reference.Named, info moby.Info, configFile driver.Auth) 
(string, error) {
+func encodedAuth(ref reference.Named, configFile driver.Auth) (string, error) {
        repoInfo, err := registry.ParseRepositoryInfo(ref)
        if err != nil {
                return "", err
        }
 
-       key := repoInfo.Index.Name
-       if repoInfo.Index.Official {
-               key = info.IndexServerAddress
-       }
-
+       key := registry.GetAuthConfigKey(repoInfo.Index)
        authConfig, err := configFile.GetAuthConfig(key)
        if err != nil {
                return "", err
@@ -273,15 +260,6 @@
 }
 
 func (s *composeService) pullRequiredImages(ctx context.Context, project 
*types.Project, images map[string]string, quietPull bool) error {
-       info, err := s.apiClient().Info(ctx)
-       if err != nil {
-               return err
-       }
-
-       if info.IndexServerAddress == "" {
-               info.IndexServerAddress = registry.IndexServer
-       }
-
        var needPull []types.ServiceConfig
        for _, service := range project.Services {
                if service.Image == "" {
@@ -311,7 +289,7 @@
                for i, service := range needPull {
                        i, service := i, service
                        eg.Go(func() error {
-                               id, err := s.pullServiceImage(ctx, service, 
info, s.configFile(), w, quietPull, 
project.Environment["DOCKER_DEFAULT_PLATFORM"])
+                               id, err := s.pullServiceImage(ctx, service, 
s.configFile(), w, quietPull, project.Environment["DOCKER_DEFAULT_PLATFORM"])
                                pulledImages[i] = id
                                if err != nil && isServiceImageToBuild(service, 
project.Services) {
                                        // image can be built, so we can ignore 
pull failure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/remove.go 
new/compose-2.17.3/pkg/compose/remove.go
--- old/compose-2.17.2/pkg/compose/remove.go    2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/remove.go    2023-04-20 11:12:07.000000000 
+0200
@@ -31,6 +31,17 @@
 
 func (s *composeService) Remove(ctx context.Context, projectName string, 
options api.RemoveOptions) error {
        projectName = strings.ToLower(projectName)
+
+       if options.Stop {
+               err := s.Stop(ctx, projectName, api.StopOptions{
+                       Services: options.Services,
+                       Project:  options.Project,
+               })
+               if err != nil {
+                       return err
+               }
+       }
+
        containers, err := s.getContainers(ctx, projectName, oneOffExclude, 
true, options.Services...)
        if err != nil {
                if api.IsNotFoundError(err) {
@@ -44,14 +55,27 @@
                containers = 
containers.filter(isService(options.Project.ServiceNames()...))
        }
 
-       stoppedContainers := containers.filter(func(c moby.Container) bool {
-               return c.State != ContainerRunning || (options.Stop && s.dryRun)
-       })
+       var stoppedContainers Containers
+       for _, container := range containers {
+               // We have to inspect containers, as State reported by 
getContainers suffers a race condition
+               inspected, err := s.apiClient().ContainerInspect(ctx, 
container.ID)
+               if api.IsNotFoundError(err) {
+                       // Already removed. Maybe configured with auto-remove
+                       continue
+               }
+               if err != nil {
+                       return err
+               }
+               if !inspected.State.Running || (options.Stop && s.dryRun) {
+                       stoppedContainers = append(stoppedContainers, container)
+               }
+       }
 
        var names []string
        stoppedContainers.forEach(func(c moby.Container) {
                names = append(names, getCanonicalContainerName(c))
        })
+       fmt.Fprintln(s.stderr(), names)
 
        if len(names) == 0 {
                fmt.Fprintln(s.stderr(), "No stopped containers")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/start.go 
new/compose-2.17.3/pkg/compose/start.go
--- old/compose-2.17.2/pkg/compose/start.go     2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/start.go     2023-04-20 11:12:07.000000000 
+0200
@@ -22,6 +22,8 @@
        "strings"
        "time"
 
+       "github.com/docker/docker/errdefs"
+
        "github.com/docker/compose/v2/pkg/api"
        "github.com/docker/compose/v2/pkg/progress"
        "github.com/docker/compose/v2/pkg/utils"
@@ -169,14 +171,16 @@
        err := s.Events(ctx, projectName, api.EventsOptions{
                Services: services,
                Consumer: func(event api.Event) error {
-                       if event.Status == "destroy" {
-                               // This container can't be inspected, because 
it's gone.
-                               // It's already been removed from the watched 
map.
-                               return nil
-                       }
-
                        inspected, err := s.apiClient().ContainerInspect(ctx, 
event.Container)
                        if err != nil {
+                               if errdefs.IsNotFound(err) {
+                                       // it's possible to get "destroy" or 
"kill" events but not
+                                       // be able to inspect in time before 
they're gone from the
+                                       // API, so just remove the watch 
without erroring
+                                       delete(watched, event.Container)
+                                       expected = utils.Remove(expected, 
event.Container)
+                                       return nil
+                               }
                                return err
                        }
                        container := moby.Container{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/compose/watch.go 
new/compose-2.17.3/pkg/compose/watch.go
--- old/compose-2.17.2/pkg/compose/watch.go     2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/compose/watch.go     2023-04-20 11:12:07.000000000 
+0200
@@ -75,7 +75,7 @@
        ContainerPath string
 }
 
-func (s *composeService) Watch(ctx context.Context, project *types.Project, 
services []string, _ api.WatchOptions) error {
+func (s *composeService) Watch(ctx context.Context, project *types.Project, 
services []string, _ api.WatchOptions) error { //nolint: gocyclo
        needRebuild := make(chan fileMapping)
        needSync := make(chan fileMapping)
 
@@ -103,10 +103,22 @@
                if err != nil {
                        return err
                }
+
+               if config != nil && len(config.Watch) > 0 && service.Build == 
nil {
+                       // service configured with watchers but no build section
+                       return fmt.Errorf("can't watch service %q without a 
build context", service.Name)
+               }
+
+               if len(services) > 0 && service.Build == nil {
+                       // service explicitly selected for watch has no build 
section
+                       return fmt.Errorf("can't watch service %q without a 
build context", service.Name)
+               }
+
+               if len(services) == 0 && service.Build == nil {
+                       continue
+               }
+
                if config == nil {
-                       if service.Build == nil {
-                               continue
-                       }
                        config = &DevelopmentConfig{
                                Watch: []Trigger{
                                        {
@@ -116,6 +128,7 @@
                                },
                        }
                }
+
                name := service.Name
                bc := service.Build.Context
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/e2e/build_test.go 
new/compose-2.17.3/pkg/e2e/build_test.go
--- old/compose-2.17.2/pkg/e2e/build_test.go    2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/e2e/build_test.go    2023-04-20 11:12:07.000000000 
+0200
@@ -29,100 +29,104 @@
 )
 
 func TestLocalComposeBuild(t *testing.T) {
-       c := NewParallelCLI(t)
 
-       t.Run("build named and unnamed images", func(t *testing.T) {
-               // ensure local test run does not reuse previously build image
-               c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
-               c.RunDockerOrExitError(t, "rmi", "custom-nginx")
-
-               res := c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "build")
-
-               res.Assert(t, icmd.Expected{Out: "COPY static 
/usr/share/nginx/html"})
-               c.RunDockerCmd(t, "image", "inspect", "build-test-nginx")
-               c.RunDockerCmd(t, "image", "inspect", "custom-nginx")
-       })
-
-       t.Run("build with build-arg", func(t *testing.T) {
-               // ensure local test run does not reuse previously build image
-               c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
-               c.RunDockerOrExitError(t, "rmi", "custom-nginx")
-
-               c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "build", "--build-arg", "FOO=BAR")
-
-               res := c.RunDockerCmd(t, "image", "inspect", "build-test-nginx")
-               res.Assert(t, icmd.Expected{Out: `"FOO": "BAR"`})
-       })
-
-       t.Run("build with build-arg set by env", func(t *testing.T) {
-               // ensure local test run does not reuse previously build image
-               c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
-               c.RunDockerOrExitError(t, "rmi", "custom-nginx")
-
-               icmd.RunCmd(c.NewDockerComposeCmd(t,
-                       "--project-directory",
-                       "fixtures/build-test",
-                       "build",
-                       "--build-arg",
-                       "FOO"),
-                       func(cmd *icmd.Cmd) {
-                               cmd.Env = append(cmd.Env, "FOO=BAR")
-                       })
+       for _, env := range []string{"DOCKER_BUILDKIT=0", "DOCKER_BUILDKIT=1"} {
+               c := NewCLI(t, WithEnv(env))
+
+               t.Run(env+" build named and unnamed images", func(t *testing.T) 
{
+                       // ensure local test run does not reuse previously 
build image
+                       c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
+                       c.RunDockerOrExitError(t, "rmi", "custom-nginx")
+
+                       res := c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "build")
+
+                       res.Assert(t, icmd.Expected{Out: "COPY static 
/usr/share/nginx/html"})
+                       c.RunDockerCmd(t, "image", "inspect", 
"build-test-nginx")
+                       c.RunDockerCmd(t, "image", "inspect", "custom-nginx")
+               })
 
-               res := c.RunDockerCmd(t, "image", "inspect", "build-test-nginx")
-               res.Assert(t, icmd.Expected{Out: `"FOO": "BAR"`})
-       })
+               t.Run(env+" build with build-arg", func(t *testing.T) {
+                       // ensure local test run does not reuse previously 
build image
+                       c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
+                       c.RunDockerOrExitError(t, "rmi", "custom-nginx")
 
-       t.Run("build with multiple build-args ", func(t *testing.T) {
-               // ensure local test run does not reuse previously build image
-               c.RunDockerOrExitError(t, "rmi", "-f", "multi-args-multiargs")
-               cmd := c.NewDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test/multi-args", "build")
+                       c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "build", "--build-arg", "FOO=BAR")
 
-               icmd.RunCmd(cmd, func(cmd *icmd.Cmd) {
-                       cmd.Env = append(cmd.Env, "DOCKER_BUILDKIT=0")
+                       res := c.RunDockerCmd(t, "image", "inspect", 
"build-test-nginx")
+                       res.Assert(t, icmd.Expected{Out: `"FOO": "BAR"`})
                })
 
-               res := c.RunDockerCmd(t, "image", "inspect", 
"multi-args-multiargs")
-               res.Assert(t, icmd.Expected{Out: `"RESULT": "SUCCESS"`})
-       })
+               t.Run(env+" build with build-arg set by env", func(t 
*testing.T) {
+                       // ensure local test run does not reuse previously 
build image
+                       c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
+                       c.RunDockerOrExitError(t, "rmi", "custom-nginx")
+
+                       icmd.RunCmd(c.NewDockerComposeCmd(t,
+                               "--project-directory",
+                               "fixtures/build-test",
+                               "build",
+                               "--build-arg",
+                               "FOO"),
+                               func(cmd *icmd.Cmd) {
+                                       cmd.Env = append(cmd.Env, "FOO=BAR")
+                               })
 
-       t.Run("build as part of up", func(t *testing.T) {
-               c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
-               c.RunDockerOrExitError(t, "rmi", "custom-nginx")
+                       res := c.RunDockerCmd(t, "image", "inspect", 
"build-test-nginx")
+                       res.Assert(t, icmd.Expected{Out: `"FOO": "BAR"`})
+               })
 
-               res := c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "up", "-d")
-               t.Cleanup(func() {
-                       c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "down")
+               t.Run(env+" build with multiple build-args ", func(t 
*testing.T) {
+                       // ensure local test run does not reuse previously 
build image
+                       c.RunDockerOrExitError(t, "rmi", "-f", 
"multi-args-multiargs")
+                       cmd := c.NewDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test/multi-args", "build")
+
+                       icmd.RunCmd(cmd, func(cmd *icmd.Cmd) {
+                               cmd.Env = append(cmd.Env, "DOCKER_BUILDKIT=0")
+                       })
+
+                       res := c.RunDockerCmd(t, "image", "inspect", 
"multi-args-multiargs")
+                       res.Assert(t, icmd.Expected{Out: `"RESULT": "SUCCESS"`})
                })
 
-               res.Assert(t, icmd.Expected{Out: "COPY static 
/usr/share/nginx/html"})
-               res.Assert(t, icmd.Expected{Out: "COPY static2 
/usr/share/nginx/html"})
+               t.Run(env+" build as part of up", func(t *testing.T) {
+                       c.RunDockerOrExitError(t, "rmi", "build-test-nginx")
+                       c.RunDockerOrExitError(t, "rmi", "custom-nginx")
+
+                       res := c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "up", "-d")
+                       t.Cleanup(func() {
+                               c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "down")
+                       })
+
+                       res.Assert(t, icmd.Expected{Out: "COPY static 
/usr/share/nginx/html"})
+                       res.Assert(t, icmd.Expected{Out: "COPY static2 
/usr/share/nginx/html"})
+
+                       output := HTTPGetWithRetry(t, "http://localhost:8070";, 
http.StatusOK, 2*time.Second, 20*time.Second)
+                       assert.Assert(t, strings.Contains(output, "Hello from 
Nginx container"))
 
-               output := HTTPGetWithRetry(t, "http://localhost:8070";, 
http.StatusOK, 2*time.Second, 20*time.Second)
-               assert.Assert(t, strings.Contains(output, "Hello from Nginx 
container"))
+                       c.RunDockerCmd(t, "image", "inspect", 
"build-test-nginx")
+                       c.RunDockerCmd(t, "image", "inspect", "custom-nginx")
+               })
+
+               t.Run(env+" no rebuild when up again", func(t *testing.T) {
+                       res := c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "up", "-d")
+
+                       assert.Assert(t, !strings.Contains(res.Stdout(), "COPY 
static"), res.Stdout())
+               })
+
+               t.Run(env+" rebuild when up --build", func(t *testing.T) {
+                       res := c.RunDockerComposeCmd(t, "--workdir", 
"fixtures/build-test", "up", "-d", "--build")
+
+                       res.Assert(t, icmd.Expected{Out: "COPY static 
/usr/share/nginx/html"})
+                       res.Assert(t, icmd.Expected{Out: "COPY static2 
/usr/share/nginx/html"})
+               })
+
+               t.Run(env+" cleanup build project", func(t *testing.T) {
+                       c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "down")
+                       c.RunDockerCmd(t, "rmi", "build-test-nginx")
+                       c.RunDockerCmd(t, "rmi", "custom-nginx")
+               })
+       }
 
-               c.RunDockerCmd(t, "image", "inspect", "build-test-nginx")
-               c.RunDockerCmd(t, "image", "inspect", "custom-nginx")
-       })
-
-       t.Run("no rebuild when up again", func(t *testing.T) {
-               res := c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "up", "-d")
-
-               assert.Assert(t, !strings.Contains(res.Stdout(), "COPY 
static"), res.Stdout())
-       })
-
-       t.Run("rebuild when up --build", func(t *testing.T) {
-               res := c.RunDockerComposeCmd(t, "--workdir", 
"fixtures/build-test", "up", "-d", "--build")
-
-               res.Assert(t, icmd.Expected{Out: "COPY static 
/usr/share/nginx/html"})
-               res.Assert(t, icmd.Expected{Out: "COPY static2 
/usr/share/nginx/html"})
-       })
-
-       t.Run("cleanup build project", func(t *testing.T) {
-               c.RunDockerComposeCmd(t, "--project-directory", 
"fixtures/build-test", "down")
-               c.RunDockerCmd(t, "rmi", "build-test-nginx")
-               c.RunDockerCmd(t, "rmi", "custom-nginx")
-       })
 }
 
 func TestBuildSSH(t *testing.T) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/e2e/compose_test.go 
new/compose-2.17.3/pkg/e2e/compose_test.go
--- old/compose-2.17.2/pkg/e2e/compose_test.go  2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/e2e/compose_test.go  2023-04-20 11:12:07.000000000 
+0200
@@ -169,23 +169,34 @@
                c.RunDockerComposeCmd(t, "-f", 
"./fixtures/simple-composefile/compose.yaml", "-p", projectName, "up", "-d")
        })
 
-       t.Run("rm -sf", func(t *testing.T) {
+       t.Run("rm --stop --force simple", func(t *testing.T) {
                res := c.RunDockerComposeCmd(t, "-f", 
"./fixtures/simple-composefile/compose.yaml", "-p", projectName, "rm",
-                       "-sf", "simple")
+                       "--stop", "--force", "simple")
                res.Assert(t, icmd.Expected{Err: "Removed", ExitCode: 0})
        })
 
-       t.Run("check containers after rm -sf", func(t *testing.T) {
+       t.Run("check containers after rm", func(t *testing.T) {
                res := c.RunDockerCmd(t, "ps", "--all")
-               assert.Assert(t, !strings.Contains(res.Combined(), 
projectName+"_simple"), res.Combined())
+               assert.Assert(t, !strings.Contains(res.Combined(), 
projectName+"-simple"), res.Combined())
+               assert.Assert(t, strings.Contains(res.Combined(), 
projectName+"-another"), res.Combined())
        })
 
-       t.Run("rm -sf <none>", func(t *testing.T) {
+       t.Run("up (again)", func(t *testing.T) {
+               c.RunDockerComposeCmd(t, "-f", 
"./fixtures/simple-composefile/compose.yaml", "-p", projectName, "up", "-d")
+       })
+
+       t.Run("rm ---stop --force <none>", func(t *testing.T) {
                res := c.RunDockerComposeCmd(t, "-f", 
"./fixtures/simple-composefile/compose.yaml", "-p", projectName, "rm",
-                       "-sf", "simple")
+                       "--stop", "--force")
                res.Assert(t, icmd.Expected{ExitCode: 0})
        })
 
+       t.Run("check containers after rm", func(t *testing.T) {
+               res := c.RunDockerCmd(t, "ps", "--all")
+               assert.Assert(t, !strings.Contains(res.Combined(), 
projectName+"-simple"), res.Combined())
+               assert.Assert(t, !strings.Contains(res.Combined(), 
projectName+"-another"), res.Combined())
+       })
+
        t.Run("down", func(t *testing.T) {
                c.RunDockerComposeCmd(t, "-p", projectName, "down")
        })
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/progress/colors.go 
new/compose-2.17.3/pkg/progress/colors.go
--- old/compose-2.17.2/pkg/progress/colors.go   1970-01-01 01:00:00.000000000 
+0100
+++ new/compose-2.17.3/pkg/progress/colors.go   2023-04-20 11:12:07.000000000 
+0200
@@ -0,0 +1,47 @@
+/*
+   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 progress
+
+import (
+       "github.com/morikuni/aec"
+)
+
+type colorFunc func(string) string
+
+var (
+       nocolor colorFunc = func(s string) string {
+               return s
+       }
+
+       DoneColor    colorFunc = aec.BlueF.Apply
+       TimerColor   colorFunc = aec.BlueF.Apply
+       CountColor   colorFunc = aec.YellowF.Apply
+       WarningColor colorFunc = aec.YellowF.With(aec.Bold).Apply
+       SuccessColor colorFunc = aec.GreenF.Apply
+       ErrorColor   colorFunc = aec.RedF.With(aec.Bold).Apply
+       PrefixColor  colorFunc = aec.CyanF.Apply
+)
+
+func NoColor() {
+       DoneColor = nocolor
+       TimerColor = nocolor
+       CountColor = nocolor
+       WarningColor = nocolor
+       SuccessColor = nocolor
+       ErrorColor = nocolor
+       PrefixColor = nocolor
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/progress/event.go 
new/compose-2.17.3/pkg/progress/event.go
--- old/compose-2.17.2/pkg/progress/event.go    2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/progress/event.go    2023-04-20 11:12:07.000000000 
+0200
@@ -18,23 +18,21 @@
 
 import (
        "time"
-
-       "github.com/morikuni/aec"
 )
 
 // EventStatus indicates the status of an action
 type EventStatus int
 
-func (s EventStatus) color() aec.ANSI {
+func (s EventStatus) colorFn() colorFunc {
        switch s {
        case Done:
-               return aec.GreenF
+               return SuccessColor
        case Warning:
-               return aec.YellowF.With(aec.Bold)
+               return WarningColor
        case Error:
-               return aec.RedF.With(aec.Bold)
+               return ErrorColor
        default:
-               return aec.DefaultF
+               return nocolor
        }
 }
 
@@ -170,19 +168,19 @@
 }
 
 var (
-       spinnerDone    = aec.Apply("✔", aec.GreenF)
-       spinnerWarning = aec.Apply("!", aec.YellowF)
-       spinnerError   = aec.Apply("✘", aec.RedF)
+       spinnerDone    = "✔"
+       spinnerWarning = "!"
+       spinnerError   = "✘"
 )
 
 func (e *Event) Spinner() any {
        switch e.Status {
        case Done:
-               return spinnerDone
+               return SuccessColor(spinnerDone)
        case Warning:
-               return spinnerWarning
+               return WarningColor(spinnerWarning)
        case Error:
-               return spinnerError
+               return ErrorColor(spinnerError)
        default:
                return e.spinner.String()
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/progress/tty.go 
new/compose-2.17.3/pkg/progress/tty.go
--- old/compose-2.17.2/pkg/progress/tty.go      2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/progress/tty.go      2023-04-20 11:12:07.000000000 
+0200
@@ -151,7 +151,7 @@
 
        firstLine := fmt.Sprintf("[+] Running %d/%d", numDone(w.events), 
w.numLines)
        if w.numLines != 0 && numDone(w.events) == w.numLines {
-               firstLine = aec.Apply(firstLine, aec.BlueF)
+               firstLine = DoneColor(firstLine)
        }
        fmt.Fprintln(w.out, firstLine)
 
@@ -210,7 +210,7 @@
        }
        prefix := ""
        if dryRun {
-               prefix = aec.Apply(api.DRYRUN_PREFIX, aec.CyanF)
+               prefix = PrefixColor(api.DRYRUN_PREFIX)
        }
 
        elapsed := endTime.Sub(event.startTime).Seconds()
@@ -234,8 +234,8 @@
        if len(completion) > 0 {
                txt = fmt.Sprintf("%s %s [%s] %7s/%-7s %s",
                        event.ID,
-                       aec.Apply(fmt.Sprintf("%d layers", len(completion)), 
aec.YellowF),
-                       aec.Apply(strings.Join(completion, ""), aec.GreenF, 
aec.Bold),
+                       CountColor(fmt.Sprintf("%d layers", len(completion))),
+                       SuccessColor(strings.Join(completion, "")),
                        units.HumanSize(float64(current)), 
units.HumanSize(float64(total)),
                        event.Text)
        } else {
@@ -260,10 +260,10 @@
                prefix,
                txt,
                strings.Repeat(" ", padding),
-               aec.Apply(status, event.Status.color()),
+               event.Status.colorFn()(status),
        )
        timer := fmt.Sprintf("%.1fs ", elapsed)
-       o := align(text, aec.Apply(timer, aec.BlueF), terminalWidth)
+       o := align(text, TimerColor(timer), terminalWidth)
 
        return o
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/progress/tty_test.go 
new/compose-2.17.3/pkg/progress/tty_test.go
--- old/compose-2.17.2/pkg/progress/tty_test.go 2023-03-26 16:09:47.000000000 
+0200
+++ new/compose-2.17.3/pkg/progress/tty_test.go 2023-04-20 11:12:07.000000000 
+0200
@@ -42,7 +42,7 @@
        lineWidth := len(fmt.Sprintf("%s %s", ev.ID, ev.Text))
 
        out := tty().lineText(ev, "", 50, lineWidth, false)
-       assert.Equal(t, out, " . id Text \x1b[39mStatus\x1b[0m                  
          \x1b[34m0.0s \x1b[0m\n")
+       assert.Equal(t, out, " . id Text Status                            
\x1b[34m0.0s \x1b[0m\n")
 
        ev.Status = Done
        out = tty().lineText(ev, "", 50, lineWidth, false)
@@ -50,11 +50,11 @@
 
        ev.Status = Error
        out = tty().lineText(ev, "", 50, lineWidth, false)
-       assert.Equal(t, out, " \x1b[31m✘\x1b[0m id Text 
\x1b[31m\x1b[1mStatus\x1b[0m                            \x1b[34m0.0s \x1b[0m\n")
+       assert.Equal(t, out, " \x1b[31m\x1b[1m✘\x1b[0m id Text 
\x1b[31m\x1b[1mStatus\x1b[0m                            \x1b[34m0.0s \x1b[0m\n")
 
        ev.Status = Warning
        out = tty().lineText(ev, "", 50, lineWidth, false)
-       assert.Equal(t, out, " \x1b[33m!\x1b[0m id Text 
\x1b[33m\x1b[1mStatus\x1b[0m                            \x1b[34m0.0s \x1b[0m\n")
+       assert.Equal(t, out, " \x1b[33m\x1b[1m!\x1b[0m id Text 
\x1b[33m\x1b[1mStatus\x1b[0m                            \x1b[34m0.0s \x1b[0m\n")
 }
 
 func TestLineTextSingleEvent(t *testing.T) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compose-2.17.2/pkg/watch/watcher_darwin.go 
new/compose-2.17.3/pkg/watch/watcher_darwin.go
--- old/compose-2.17.2/pkg/watch/watcher_darwin.go      2023-03-26 
16:09:47.000000000 +0200
+++ new/compose-2.17.3/pkg/watch/watcher_darwin.go      2023-04-20 
11:12:07.000000000 +0200
@@ -20,6 +20,7 @@
 package watch
 
 import (
+       "os"
        "path/filepath"
        "time"
 
@@ -38,7 +39,6 @@
 
        pathsWereWatching map[string]interface{}
        ignore            PathMatcher
-       sawAnyHistoryDone bool
 }
 
 func (d *fseventNotify) loop() {
@@ -52,7 +52,7 @@
                        }
 
                        for _, e := range events {
-                               e.Path = filepath.Join("/", e.Path)
+                               e.Path = 
filepath.Join(string(os.PathSeparator), e.Path)
 
                                _, isPathWereWatching := 
d.pathsWereWatching[e.Path]
                                if e.Flags&fsevents.ItemIsDir == 
fsevents.ItemIsDir && e.Flags&fsevents.ItemCreated == fsevents.ItemCreated && 
isPathWereWatching {

++++++ compose.obsinfo ++++++
--- /var/tmp/diff_new_pack.hJkKiC/_old  2023-04-21 14:17:12.882649030 +0200
+++ /var/tmp/diff_new_pack.hJkKiC/_new  2023-04-21 14:17:12.886649053 +0200
@@ -1,5 +1,5 @@
 name: compose
-version: 2.17.2
-mtime: 1679839787
-commit: 0b6133f75b1678413a588a80440a3b239e686467
+version: 2.17.3
+mtime: 1681981927
+commit: 7b0ed13209894b5981608f7d9e329a3a58af957d
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/docker-compose/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.docker-compose.new.1533/vendor.tar.gz differ: char 
5, line 1

Reply via email to