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 2025-06-13 18:45:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/docker-compose (Old) and /work/SRC/openSUSE:Factory/.docker-compose.new.19631 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker-compose" Fri Jun 13 18:45:32 2025 rev:69 rq:1285308 version:2.37.1 Changes: -------- --- /work/SRC/openSUSE:Factory/docker-compose/docker-compose.changes 2025-06-06 22:42:08.702536649 +0200 +++ /work/SRC/openSUSE:Factory/.docker-compose.new.19631/docker-compose.changes 2025-06-13 18:45:56.476031900 +0200 @@ -1,0 +2,31 @@ +Fri Jun 13 04:44:15 UTC 2025 - Johannes Kastl <opensuse_buildserv...@ojkastl.de> + +- Update to version 2.37.1: + * Improvements + - Add support for extra_hosts building with bake by @ndeloof in + #12935 + * Fixes + - Fix SIGSEGV on Enable Watch by @ndeloof in #12909 + - Revert docker compose images JSON output to array format by + @x0rw in #12917 + - Sanitize service name so they can be used as bake targets by + @ndeloof in #12925 + - Only look for required image in bake metadata by @ndeloof in + #12930 + - Don't create metadatafile, just generate a random name by + @ndeloof in #12931 + - Fix the generated manifest for compose artifacts by @jcarter3 + in #12933 + - Fix support for additional_contexts with service + sub-dependencies by @ndeloof in #12936 + - Fix panic on failure starting plugin server by @ndeloof in + #12914 + * Internal + - Do not forget to remove the bake metadata file by @glours in + #12912 + * Dependencies + - Bump golang.org/x/sync v0.15.0 by @ndeloof in #12913 + - Build(deps): bump google.golang.org/grpc from 1.72.2 to + 1.73.0 by @dependabot in #12910 + +------------------------------------------------------------------- Old: ---- docker-compose-2.37.0.obscpio New: ---- docker-compose-2.37.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ docker-compose.spec ++++++ --- /var/tmp/diff_new_pack.2QpJA3/_old 2025-06-13 18:45:57.248063457 +0200 +++ /var/tmp/diff_new_pack.2QpJA3/_new 2025-06-13 18:45:57.248063457 +0200 @@ -17,7 +17,7 @@ Name: docker-compose -Version: 2.37.0 +Version: 2.37.1 Release: 0 Summary: Define and run multi-container applications with Docker License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.2QpJA3/_old 2025-06-13 18:45:57.280064765 +0200 +++ /var/tmp/diff_new_pack.2QpJA3/_new 2025-06-13 18:45:57.284064928 +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.37.0</param> + <param name="revision">v2.37.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.2QpJA3/_old 2025-06-13 18:45:57.304065746 +0200 +++ /var/tmp/diff_new_pack.2QpJA3/_new 2025-06-13 18:45:57.308065909 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/docker/compose</param> - <param name="changesrevision">9b67a48c333f99f648dc5dc2daf06d2479b76410</param></service></servicedata> + <param name="changesrevision">343117233b901110b464786a4daccc264babb56b</param></service></servicedata> (No newline at EOF) ++++++ docker-compose-2.37.0.obscpio -> docker-compose-2.37.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/cmd/compose/images.go new/docker-compose-2.37.1/cmd/compose/images.go --- old/docker-compose-2.37.0/cmd/compose/images.go 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/cmd/compose/images.go 2025-06-12 10:18:57.000000000 +0200 @@ -87,6 +87,14 @@ } return nil } + if opts.Format == "json" { + // Convert map to slice + var imageList []api.ImageSummary + for _, img := range images { + imageList = append(imageList, img) + } + return formatter.Print(imageList, opts.Format, dockerCli.Out(), nil) + } return formatter.Print(images, opts.Format, dockerCli.Out(), func(w io.Writer) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/go.mod new/docker-compose-2.37.1/go.mod --- old/docker-compose-2.37.0/go.mod 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/go.mod 2025-06-12 10:18:57.000000000 +0200 @@ -53,9 +53,9 @@ go.opentelemetry.io/otel/trace v1.35.0 go.uber.org/goleak v1.3.0 go.uber.org/mock v0.5.2 - golang.org/x/sync v0.14.0 + golang.org/x/sync v0.15.0 golang.org/x/sys v0.33.0 - google.golang.org/grpc v1.72.2 + google.golang.org/grpc v1.73.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools/v3 v3.5.2 tags.cncf.io/container-device-interface v1.0.1 @@ -186,8 +186,8 @@ golang.org/x/term v0.31.0 // indirect golang.org/x/text v0.24.0 // indirect golang.org/x/time v0.11.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/go.sum new/docker-compose-2.37.1/go.sum --- old/docker-compose-2.37.0/go.sum 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/go.sum 2025-06-12 10:18:57.000000000 +0200 @@ -569,8 +569,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.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -618,13 +618,13 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.0.5/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= -google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/internal/ocipush/push.go new/docker-compose-2.37.1/internal/ocipush/push.go --- old/docker-compose-2.37.0/internal/ocipush/push.go 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/internal/ocipush/push.go 2025-06-12 10:18:57.000000000 +0200 @@ -105,7 +105,9 @@ ) error { // Check if we need an extra empty layer for the manifest config if ociVersion == api.OCIVersion1_1 || ociVersion == "" { - layers = append(layers, Pushable{Descriptor: v1.DescriptorEmptyJSON, Data: []byte("{}")}) + if err := resolver.Push(ctx, named, v1.DescriptorEmptyJSON, v1.DescriptorEmptyJSON.Data); err != nil { + return err + } } // prepare to push the manifest by pushing the layers layerDescriptors := make([]v1.Descriptor, len(layers)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/compose/build.go new/docker-compose-2.37.1/pkg/compose/build.go --- old/docker-compose-2.37.0/pkg/compose/build.go 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/pkg/compose/build.go 2025-06-12 10:18:57.000000000 +0200 @@ -628,7 +628,11 @@ func addBuildDependencies(services []string, project *types.Project) []string { servicesWithDependencies := utils.NewSet(services...) for _, service := range services { - b := project.Services[service].Build + s, ok := project.Services[service] + if !ok { + s = project.DisabledServices[service] + } + b := s.Build if b != nil { for _, target := range b.AdditionalContexts { if s, found := strings.CutPrefix(target, types.ServicePrefix); found { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/compose/build_bake.go new/docker-compose-2.37.1/pkg/compose/build_bake.go --- old/docker-compose-2.37.0/pkg/compose/build_bake.go 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/pkg/compose/build_bake.go 2025-06-12 10:18:57.000000000 +0200 @@ -23,6 +23,7 @@ "encoding/json" "errors" "fmt" + "math/rand" "os" "os/exec" "path/filepath" @@ -113,6 +114,7 @@ Ulimits []string `json:"ulimits,omitempty"` Call string `json:"call,omitempty"` Entitlements []string `json:"entitlements,omitempty"` + ExtraHosts map[string]string `json:"extra-hosts,omitempty"` Outputs []string `json:"output,omitempty"` } @@ -140,13 +142,25 @@ Targets: map[string]bakeTarget{}, } var ( - group bakeGroup - privileged bool - read []string - expectedImages = make(map[string]string, len(serviceToBeBuild)) // service name -> expected image + group bakeGroup + privileged bool + read []string + targets = make(map[string]string, len(serviceToBeBuild)) // service name -> build target ) - for serviceName, service := range serviceToBeBuild { + // produce a unique ID for service used as bake target + for serviceName := range project.Services { + t := strings.ReplaceAll(serviceName, ".", "_") + for { + if _, ok := targets[serviceName]; !ok { + targets[serviceName] = t + break + } + t += "_" + } + } + + for serviceName, service := range project.Services { if service.Build == nil { continue } @@ -160,9 +174,6 @@ args[k] = *v } - image := api.GetImageNameOrDefault(service, project.Name) - expectedImages[serviceName] = image - entitlements := build.Entitlements if slices.Contains(build.Entitlements, "security.insecure") { privileged = true @@ -192,14 +203,15 @@ } } - cfg.Targets[serviceName] = bakeTarget{ + target := targets[serviceName] + cfg.Targets[target] = bakeTarget{ Context: build.Context, - Contexts: additionalContexts(build.AdditionalContexts), + Contexts: additionalContexts(build.AdditionalContexts, targets), Dockerfile: dockerFilePath(build.Context, build.Dockerfile), DockerfileInline: strings.ReplaceAll(build.DockerfileInline, "${", "$${"), Args: args, Labels: build.Labels, - Tags: append(build.Tags, image), + Tags: append(build.Tags, api.GetImageNameOrDefault(service, project.Name)), CacheFrom: build.CacheFrom, // CacheTo: TODO @@ -212,11 +224,19 @@ ShmSize: build.ShmSize, Ulimits: toBakeUlimits(build.Ulimits), Entitlements: entitlements, + ExtraHosts: toBakeExtraHosts(build.ExtraHosts), Outputs: outputs, Call: call, } - group.Targets = append(group.Targets, serviceName) + } + + // create a bake group with targets for services to build + for serviceName, service := range serviceToBeBuild { + if service.Build == nil { + continue + } + group.Targets = append(group.Targets, targets[serviceName]) } cfg.Groups["default"] = group @@ -232,17 +252,25 @@ } logrus.Debugf("bake build config:\n%s", string(b)) - metadata, err := os.CreateTemp(os.TempDir(), "compose") - if err != nil { - return nil, err + var metadataFile string + for { + // we don't use os.CreateTemp here as we need a temporary file name, but don't want it actually created + // as bake relies on atomicwriter and this creates conflict during rename + metadataFile = filepath.Join(os.TempDir(), fmt.Sprintf("compose-build-metadataFile-%d.json", rand.Int31())) + if _, err = os.Stat(metadataFile); os.IsNotExist(err) { + break + } } + defer func() { + _ = os.Remove(metadataFile) + }() buildx, err := manager.GetPlugin("buildx", s.dockerCli, &cobra.Command{}) if err != nil { return nil, err } - args := []string{"bake", "--file", "-", "--progress", "rawjson", "--metadata-file", metadata.Name()} + args := []string{"bake", "--file", "-", "--progress", "rawjson", "--metadata-file", metadataFile} mustAllow := buildx.Version != "" && versions.GreaterThanOrEqualTo(buildx.Version[1:], "0.17.0") if mustAllow { // FIXME we should prompt user about this, but this is a breaking change in UX @@ -269,9 +297,8 @@ // Use docker/cli mechanism to propagate termination signal to child process server, err := socket.NewPluginServer(nil) - if err != nil { + if err == nil { defer server.Close() //nolint:errcheck - cmd.Cancel = server.Close cmd.Env = replace(cmd.Env, socket.EnvKey, server.Addr().String()) } @@ -323,7 +350,7 @@ return nil, fmt.Errorf("failed to execute bake: %w", err) } - b, err = os.ReadFile(metadata.Name()) + b, err = os.ReadFile(metadataFile) if err != nil { return nil, err } @@ -336,10 +363,11 @@ cw := progress.ContextWriter(ctx) results := map[string]string{} - for service, name := range expectedImages { - built, ok := md[service] // bake target == service name + for name := range serviceToBeBuild { + target := targets[name] + built, ok := md[target] if !ok { - return nil, fmt.Errorf("build result not found in Bake metadata for service %s", service) + return nil, fmt.Errorf("build result not found in Bake metadata for service %s", name) } results[name] = built.Digest cw.Event(progress.BuiltEvent(name)) @@ -347,11 +375,19 @@ return results, nil } -func additionalContexts(contexts types.Mapping) map[string]string { +func toBakeExtraHosts(hosts types.HostsList) map[string]string { + m := make(map[string]string) + for k, v := range hosts { + m[k] = strings.Join(v, ",") + } + return m +} + +func additionalContexts(contexts types.Mapping, targets map[string]string) map[string]string { ac := map[string]string{} for k, v := range contexts { if target, found := strings.CutPrefix(v, types.ServicePrefix); found { - v = "target:" + target + v = "target:" + targets[target] } ac[k] = v } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/compose/plugins.go new/docker-compose-2.37.1/pkg/compose/plugins.go --- old/docker-compose-2.37.0/pkg/compose/plugins.go 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/pkg/compose/plugins.go 2025-06-12 10:18:57.000000000 +0200 @@ -207,7 +207,6 @@ server, err := socket.NewPluginServer(nil) if err == nil { defer server.Close() //nolint:errcheck - cmd.Cancel = server.Close cmd.Env = replace(cmd.Env, socket.EnvKey, server.Addr().String()) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/compose/up.go new/docker-compose-2.37.1/pkg/compose/up.go --- old/docker-compose-2.37.0/pkg/compose/up.go 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/pkg/compose/up.go 2025-06-12 10:18:57.000000000 +0200 @@ -72,12 +72,9 @@ var isTerminated atomic.Bool printer := newLogPrinter(options.Start.Attach) - var watcher *Watcher - if options.Start.Watch { - watcher, err = NewWatcher(project, options, s.watch) - if err != nil { - return err - } + watcher, err := NewWatcher(project, options, s.watch) + if err != nil && options.Start.Watch { + return err } var navigationMenu *formatter.LogKeyboard diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/e2e/build_test.go new/docker-compose-2.37.1/pkg/e2e/build_test.go --- old/docker-compose-2.37.0/pkg/e2e/build_test.go 2025-06-05 16:48:05.000000000 +0200 +++ new/docker-compose-2.37.1/pkg/e2e/build_test.go 2025-06-12 10:18:57.000000000 +0200 @@ -536,3 +536,47 @@ out := res.Combined() assert.Check(t, strings.Contains(out, "test1 Built")) } + +func TestBuildSubset(t *testing.T) { + c := NewParallelCLI(t) + + t.Cleanup(func() { + c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/subset/compose.yaml", "down", "--rmi=local") + }) + + res := c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/subset/compose.yaml", "build", "main") + out := res.Combined() + assert.Check(t, strings.Contains(out, "main Built")) +} + +func TestBuildDependentImage(t *testing.T) { + c := NewParallelCLI(t) + + t.Cleanup(func() { + c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/dependencies/compose.yaml", "down", "--rmi=local") + }) + + res := c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/dependencies/compose.yaml", "build", "firstbuild") + out := res.Combined() + assert.Check(t, strings.Contains(out, "firstbuild Built")) + + res = c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/dependencies/compose.yaml", "build", "secondbuild") + out = res.Combined() + assert.Check(t, strings.Contains(out, "secondbuild Built")) +} + +func TestBuildSubDependencies(t *testing.T) { + c := NewParallelCLI(t) + + t.Cleanup(func() { + c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/sub-dependencies/compose.yaml", "down", "--rmi=local") + }) + + res := c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/sub-dependencies/compose.yaml", "build", "main") + out := res.Combined() + assert.Check(t, strings.Contains(out, "main Built")) + + res = c.RunDockerComposeCmd(t, "-f", "fixtures/build-test/sub-dependencies/compose.yaml", "up", "--build", "main") + out = res.Combined() + assert.Check(t, strings.Contains(out, "main Built")) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/e2e/fixtures/build-test/dependencies/compose.yaml new/docker-compose-2.37.1/pkg/e2e/fixtures/build-test/dependencies/compose.yaml --- old/docker-compose-2.37.0/pkg/e2e/fixtures/build-test/dependencies/compose.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.1/pkg/e2e/fixtures/build-test/dependencies/compose.yaml 2025-06-12 10:18:57.000000000 +0200 @@ -0,0 +1,26 @@ +services: + firstbuild: + build: + dockerfile_inline: | + FROM alpine + additional_contexts: + dep1: service:dep1 + entrypoint: ["echo", "Hello from firstbuild"] + depends_on: + - dep1 + + secondbuild: + build: + dockerfile_inline: | + FROM alpine + additional_contexts: + dep1: service:dep1 + entrypoint: ["echo", "Hello from secondbuild"] + depends_on: + - dep1 + + dep1: + build: + dockerfile_inline: | + FROM alpine + entrypoint: ["echo", "Hello from dep1"] \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/e2e/fixtures/build-test/sub-dependencies/compose.yaml new/docker-compose-2.37.1/pkg/e2e/fixtures/build-test/sub-dependencies/compose.yaml --- old/docker-compose-2.37.0/pkg/e2e/fixtures/build-test/sub-dependencies/compose.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.1/pkg/e2e/fixtures/build-test/sub-dependencies/compose.yaml 2025-06-12 10:18:57.000000000 +0200 @@ -0,0 +1,36 @@ +services: + main: + build: + dockerfile_inline: | + FROM alpine + additional_contexts: + dep1: service:dep1 + dep2: service:dep2 + entrypoint: ["echo", "Hello from main"] + + dep1: + build: + dockerfile_inline: | + FROM alpine + additional_contexts: + subdep1: service:subdep1 + subdep2: service:subdep2 + entrypoint: ["echo", "Hello from dep1"] + + dep2: + build: + dockerfile_inline: | + FROM alpine + entrypoint: ["echo", "Hello from dep2"] + + subdep1: + build: + dockerfile_inline: | + FROM alpine + entrypoint: ["echo", "Hello from subdep1"] + + subdep2: + build: + dockerfile_inline: | + FROM alpine + entrypoint: ["echo", "Hello from subdep2"] \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-compose-2.37.0/pkg/e2e/fixtures/build-test/subset/compose.yaml new/docker-compose-2.37.1/pkg/e2e/fixtures/build-test/subset/compose.yaml --- old/docker-compose-2.37.0/pkg/e2e/fixtures/build-test/subset/compose.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-compose-2.37.1/pkg/e2e/fixtures/build-test/subset/compose.yaml 2025-06-12 10:18:57.000000000 +0200 @@ -0,0 +1,14 @@ +services: + main: + build: + dockerfile_inline: | + FROM alpine + entrypoint: ["echo", "Hello from main"] + depends_on: + - dep1 + + dep1: + build: + dockerfile_inline: | + FROM alpine + entrypoint: ["echo", "Hello from dep1"] \ No newline at end of file ++++++ docker-compose.obsinfo ++++++ --- /var/tmp/diff_new_pack.2QpJA3/_old 2025-06-13 18:45:57.616078499 +0200 +++ /var/tmp/diff_new_pack.2QpJA3/_new 2025-06-13 18:45:57.620078663 +0200 @@ -1,5 +1,5 @@ name: docker-compose -version: 2.37.0 -mtime: 1749134885 -commit: 9b67a48c333f99f648dc5dc2daf06d2479b76410 +version: 2.37.1 +mtime: 1749716337 +commit: 343117233b901110b464786a4daccc264babb56b ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/docker-compose/vendor.tar.gz /work/SRC/openSUSE:Factory/.docker-compose.new.19631/vendor.tar.gz differ: char 13, line 1