Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package buildpacks-cli for openSUSE:Factory 
checked in at 2026-05-04 12:53:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/buildpacks-cli (Old)
 and      /work/SRC/openSUSE:Factory/.buildpacks-cli.new.30200 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "buildpacks-cli"

Mon May  4 12:53:50 2026 rev:17 rq:1350499 version:0.40.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/buildpacks-cli/buildpacks-cli.changes    
2026-04-23 17:13:27.050498603 +0200
+++ /work/SRC/openSUSE:Factory/.buildpacks-cli.new.30200/buildpacks-cli.changes 
2026-05-04 12:57:01.366136566 +0200
@@ -1,0 +2,13 @@
+Sun May 03 06:45:04 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 0.40.4:
+  * Features
+    - fix: fetch builder image per platform (#2589 by @ddusht)
+  * Dependencies
+    - build(deps): bump uuid and @actions/core (#2583)
+    - build(deps): bump yaml in
+      /.github/workflows/actions/release-notes (#2554)
+    - build(deps): bump github.com/docker/cli in the
+      go-dependencies group (#2585)
+
+-------------------------------------------------------------------

Old:
----
  buildpacks-cli-0.40.3.obscpio

New:
----
  buildpacks-cli-0.40.4.obscpio

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

Other differences:
------------------
++++++ buildpacks-cli.spec ++++++
--- /var/tmp/diff_new_pack.OFiNZn/_old  2026-05-04 12:57:02.882198963 +0200
+++ /var/tmp/diff_new_pack.OFiNZn/_new  2026-05-04 12:57:02.886199127 +0200
@@ -19,7 +19,7 @@
 %define executable_name pack
 
 Name:           buildpacks-cli
-Version:        0.40.3
+Version:        0.40.4
 Release:        0
 Summary:        CLI for building apps using Cloud Native Buildpacks
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.OFiNZn/_old  2026-05-04 12:57:02.938201268 +0200
+++ /var/tmp/diff_new_pack.OFiNZn/_new  2026-05-04 12:57:02.942201433 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/buildpacks/pack</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.40.3</param>
+    <param name="revision">v0.40.4</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.OFiNZn/_old  2026-05-04 12:57:02.974202750 +0200
+++ /var/tmp/diff_new_pack.OFiNZn/_new  2026-05-04 12:57:02.978202915 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/buildpacks/pack</param>
-              <param 
name="changesrevision">7a70737d0f32ca8db41a6e9b47a5aaa981eb7584</param></service></servicedata>
+              <param 
name="changesrevision">3ebbecd20f477a4711d5cd28427956c61f6b13e3</param></service></servicedata>
 (No newline at EOF)
 

++++++ buildpacks-cli-0.40.3.obscpio -> buildpacks-cli-0.40.4.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/buildpacks-cli-0.40.3/Dockerfile 
new/buildpacks-cli-0.40.4/Dockerfile
--- old/buildpacks-cli-0.40.3/Dockerfile        2026-04-22 17:41:04.000000000 
+0200
+++ new/buildpacks-cli-0.40.4/Dockerfile        2026-05-02 23:59:24.000000000 
+0200
@@ -1,3 +1,4 @@
+# syntax=docker/dockerfile:1
 ARG base_image=gcr.io/distroless/static
 
 FROM golang:1.25 as builder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/linux/build/Dockerfile 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/linux/build/Dockerfile
--- 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/linux/build/Dockerfile 
    2026-04-22 17:41:04.000000000 +0200
+++ 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/linux/build/Dockerfile 
    2026-05-02 23:59:24.000000000 +0200
@@ -1,3 +1,4 @@
+# syntax=docker/dockerfile:1
 FROM ubuntu:bionic
 
 ENV CNB_USER_ID=2222
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/linux/run/Dockerfile 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/linux/run/Dockerfile
--- 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/linux/run/Dockerfile   
    2026-04-22 17:41:04.000000000 +0200
+++ 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/linux/run/Dockerfile   
    2026-05-02 23:59:24.000000000 +0200
@@ -1,3 +1,4 @@
+# syntax=docker/dockerfile:1
 FROM ubuntu:bionic
 
 ENV CNB_USER_ID=2222
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/windows/build/Dockerfile
 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/windows/build/Dockerfile
--- 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/windows/build/Dockerfile
   2026-04-22 17:41:04.000000000 +0200
+++ 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/windows/build/Dockerfile
   2026-05-02 23:59:24.000000000 +0200
@@ -1,3 +1,4 @@
+# syntax=docker/dockerfile:1
 FROM mcr.microsoft.com/windows/nanoserver:1809
 
 # non-zero sets all user-owned directories to BUILTIN\Users
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/windows/run/Dockerfile 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/windows/run/Dockerfile
--- 
old/buildpacks-cli-0.40.3/acceptance/testdata/mock_stack/windows/run/Dockerfile 
    2026-04-22 17:41:04.000000000 +0200
+++ 
new/buildpacks-cli-0.40.4/acceptance/testdata/mock_stack/windows/run/Dockerfile 
    2026-05-02 23:59:24.000000000 +0200
@@ -1,3 +1,4 @@
+# syntax=docker/dockerfile:1
 FROM golang:1.17-nanoserver-1809 AS gobuild
 
 # bake in a simple server util
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/buildpacks-cli-0.40.3/go.mod 
new/buildpacks-cli-0.40.4/go.mod
--- old/buildpacks-cli-0.40.3/go.mod    2026-04-22 17:41:04.000000000 +0200
+++ new/buildpacks-cli-0.40.4/go.mod    2026-05-02 23:59:24.000000000 +0200
@@ -9,7 +9,7 @@
        github.com/buildpacks/lifecycle v0.21.0
        github.com/chainguard-dev/kaniko v1.25.13
        github.com/containerd/errdefs v1.0.0
-       github.com/docker/cli v29.4.0+incompatible
+       github.com/docker/cli v29.4.1+incompatible
        github.com/docker/docker v28.5.2+incompatible
        github.com/dustin/go-humanize v1.0.1
        github.com/gdamore/tcell/v2 v2.13.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/buildpacks-cli-0.40.3/go.sum 
new/buildpacks-cli-0.40.4/go.sum
--- old/buildpacks-cli-0.40.3/go.sum    2026-04-22 17:41:04.000000000 +0200
+++ new/buildpacks-cli-0.40.4/go.sum    2026-05-02 23:59:24.000000000 +0200
@@ -133,8 +133,8 @@
 github.com/dimchansky/utfbom v1.1.1/go.mod 
h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
 github.com/distribution/reference v0.6.0 
h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
 github.com/distribution/reference v0.6.0/go.mod 
h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
-github.com/docker/cli v29.4.0+incompatible 
h1:+IjXULMetlvWJiuSI0Nbor36lcJ5BTcVpUmB21KBoVM=
-github.com/docker/cli v29.4.0+incompatible/go.mod 
h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v29.4.1+incompatible 
h1:02RT8QqqwtGRn+6SYypv8IUEbD/ltY6sfKCJIoUcGzk=
+github.com/docker/cli v29.4.1+incompatible/go.mod 
h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
 github.com/docker/distribution v2.8.3+incompatible 
h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
 github.com/docker/distribution v2.8.3+incompatible/go.mod 
h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
 github.com/docker/docker v28.5.2+incompatible 
h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/buildpacks-cli-0.40.3/internal/build/testdata/fake-lifecycle/Dockerfile 
new/buildpacks-cli-0.40.4/internal/build/testdata/fake-lifecycle/Dockerfile
--- old/buildpacks-cli-0.40.3/internal/build/testdata/fake-lifecycle/Dockerfile 
2026-04-22 17:41:04.000000000 +0200
+++ new/buildpacks-cli-0.40.4/internal/build/testdata/fake-lifecycle/Dockerfile 
2026-05-02 23:59:24.000000000 +0200
@@ -1,3 +1,4 @@
+# syntax=docker/dockerfile:1
 FROM golang:1.23
 
 RUN mkdir /lifecycle
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/buildpacks-cli-0.40.3/internal/fakes/fake_image_fetcher.go 
new/buildpacks-cli-0.40.4/internal/fakes/fake_image_fetcher.go
--- old/buildpacks-cli-0.40.3/internal/fakes/fake_image_fetcher.go      
2026-04-22 17:41:04.000000000 +0200
+++ new/buildpacks-cli-0.40.4/internal/fakes/fake_image_fetcher.go      
2026-05-02 23:59:24.000000000 +0200
@@ -18,16 +18,18 @@
 }
 
 type FakeImageFetcher struct {
-       LocalImages  map[string]imgutil.Image
-       RemoteImages map[string]imgutil.Image
-       FetchCalls   map[string]*FetchArgs
+       LocalImages           map[string]imgutil.Image
+       RemoteImages          map[string]imgutil.Image
+       FetchCalls            map[string]*FetchArgs
+       FetchForPlatformCalls map[string]*FetchArgs
 }
 
 func NewFakeImageFetcher() *FakeImageFetcher {
        return &FakeImageFetcher{
-               LocalImages:  map[string]imgutil.Image{},
-               RemoteImages: map[string]imgutil.Image{},
-               FetchCalls:   map[string]*FetchArgs{},
+               LocalImages:           map[string]imgutil.Image{},
+               RemoteImages:          map[string]imgutil.Image{},
+               FetchCalls:            map[string]*FetchArgs{},
+               FetchForPlatformCalls: map[string]*FetchArgs{},
        }
 }
 
@@ -61,8 +63,8 @@
 }
 
 func (f *FakeImageFetcher) FetchForPlatform(ctx context.Context, name string, 
options image.FetchOptions) (imgutil.Image, error) {
-       // For the fake implementation, FetchForPlatform behaves the same as 
Fetch
-       // since we don't need to simulate the platform-specific digest 
resolution
+       f.FetchForPlatformCalls[name] = &FetchArgs{Daemon: options.Daemon, 
PullPolicy: options.PullPolicy, Target: options.Target, LayoutOption: 
options.LayoutOption}
+       // For the fake, platform-specific digest resolution is a no-op; 
delegate to Fetch.
        return f.Fetch(ctx, name, options)
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/buildpacks-cli-0.40.3/pkg/client/build.go 
new/buildpacks-cli-0.40.4/pkg/client/build.go
--- old/buildpacks-cli-0.40.3/pkg/client/build.go       2026-04-22 
17:41:04.000000000 +0200
+++ new/buildpacks-cli-0.40.4/pkg/client/build.go       2026-05-02 
23:59:24.000000000 +0200
@@ -367,7 +367,7 @@
                }
        }()
 
-       rawBuilderImage, err := c.imageFetcher.Fetch(
+       rawBuilderImage, err := c.imageFetcher.FetchForPlatform(
                ctx,
                builderRef.Name(),
                image.FetchOptions{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/buildpacks-cli-0.40.3/pkg/client/build_test.go 
new/buildpacks-cli-0.40.4/pkg/client/build_test.go
--- old/buildpacks-cli-0.40.3/pkg/client/build_test.go  2026-04-22 
17:41:04.000000000 +0200
+++ new/buildpacks-cli-0.40.4/pkg/client/build_test.go  2026-05-02 
23:59:24.000000000 +0200
@@ -2334,6 +2334,13 @@
                                        h.AssertEq(t, args.PullPolicy, 
image.PullAlways)
                                        h.AssertEq(t, 
args.Target.ValuesAsPlatform(), "linux/arm64")
 
+                                       // builder must be fetched via 
FetchForPlatform so that containerd-backed daemons
+                                       // return the platform-specific image 
config (and its labels) instead of the
+                                       // manifest list or the host-arch image.
+                                       platformArgs := 
fakeImageFetcher.FetchForPlatformCalls[defaultBuilderName]
+                                       h.AssertNotNil(t, platformArgs)
+                                       h.AssertEq(t, 
platformArgs.Target.ValuesAsPlatform(), "linux/arm64")
+
                                        args = 
fakeImageFetcher.FetchCalls["default/run"]
                                        h.AssertEq(t, args.Daemon, true)
                                        h.AssertEq(t, args.PullPolicy, 
image.PullAlways)
@@ -2349,6 +2356,24 @@
                                        h.AssertEq(t, args.PullPolicy, 
image.PullAlways)
                                        h.AssertEq(t, 
args.Target.ValuesAsPlatform(), "linux/arm64")
                                })
+
+                               it("fetches the builder image via 
FetchForPlatform to resolve platform-specific labels on containerd daemons", 
func() {
+                                       // Regression test for: pack build 
--platform linux/arm64 on a containerd-backed
+                                       // daemon returning 'missing label 
io.buildpacks.builder.metadata' because the
+                                       // host-arch (amd64) image config was 
inspected instead of the arm64 one.
+                                       h.AssertNil(t, 
subject.Build(context.TODO(), BuildOptions{
+                                               Image:      "some/app",
+                                               Builder:    defaultBuilderName,
+                                               Platform:   "linux/arm64",
+                                               PullPolicy: image.PullAlways,
+                                       }))
+
+                                       // FetchForPlatform must have been 
called for the builder (not plain Fetch),
+                                       // which ensures the platform-specific 
digest is resolved before the daemon
+                                       // reads the image config.
+                                       h.AssertNotNil(t, 
fakeImageFetcher.FetchForPlatformCalls[defaultBuilderName])
+                                       h.AssertEq(t, 
fakeImageFetcher.FetchForPlatformCalls[defaultBuilderName].Target.ValuesAsPlatform(),
 "linux/arm64")
+                               })
                        })
 
                        when("not provided", func() {
@@ -2369,6 +2394,9 @@
                                        h.AssertEq(t, args.PullPolicy, 
image.PullAlways)
                                        h.AssertEq(t, args.Target, 
(*dist.Target)(nil))
 
+                                       // builder is always fetched via 
FetchForPlatform regardless of --platform
+                                       h.AssertNotNil(t, 
fakeImageFetcher.FetchForPlatformCalls[defaultBuilderName])
+
                                        args = 
fakeImageFetcher.FetchCalls["default/run"]
                                        h.AssertEq(t, args.Daemon, true)
                                        h.AssertEq(t, args.PullPolicy, 
image.PullAlways)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/buildpacks-cli-0.40.3/pkg/image/fetcher.go 
new/buildpacks-cli-0.40.4/pkg/image/fetcher.go
--- old/buildpacks-cli-0.40.3/pkg/image/fetcher.go      2026-04-22 
17:41:04.000000000 +0200
+++ new/buildpacks-cli-0.40.4/pkg/image/fetcher.go      2026-05-02 
23:59:24.000000000 +0200
@@ -258,12 +258,18 @@
 
        platformStr := options.Target.ValuesAsPlatform()
 
+       // Log the pull attempt upfront so it appears in output regardless of 
whether
+       // digest resolution succeeds (mirrors the log emitted by Fetch for 
non-FetchForPlatform paths).
+       if options.Daemon {
+               f.logger.Debugf("Pulling image %s with platform %s", 
style.Symbol(name), style.Symbol(platformStr))
+       }
+
        // When PullPolicy is PullNever, skip platform-specific digest 
resolution as it requires
        // network access to fetch the manifest list. Instead, use the image 
as-is from the daemon.
        // Note: This may cause issues with containerd storage. Users should 
pre-pull the platform-specific
        // digest if they encounter errors.
        if options.Daemon && options.PullPolicy == PullNever {
-               f.logger.Debugf("Using lifecycle %s with platform %s (skipping 
digest resolution due to --pull-policy never)", name, platformStr)
+               f.logger.Debugf("Using image %s with platform %s (skipping 
digest resolution due to --pull-policy never)", name, platformStr)
                return f.Fetch(ctx, name, options)
        }
 
@@ -285,7 +291,7 @@
        }
 
        // Log the resolution for visibility
-       f.logger.Debugf("Using lifecycle %s; pulling digest %s for platform 
%s", name, resolvedName, platformStr)
+       f.logger.Debugf("Using image %s; pulling digest %s for platform %s", 
name, resolvedName, platformStr)
 
        return f.Fetch(ctx, resolvedName, options)
 }

++++++ buildpacks-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.OFiNZn/_old  2026-05-04 12:57:06.654354215 +0200
+++ /var/tmp/diff_new_pack.OFiNZn/_new  2026-05-04 12:57:06.666354709 +0200
@@ -1,5 +1,5 @@
 name: buildpacks-cli
-version: 0.40.3
-mtime: 1776872464
-commit: 7a70737d0f32ca8db41a6e9b47a5aaa981eb7584
+version: 0.40.4
+mtime: 1777759164
+commit: 3ebbecd20f477a4711d5cd28427956c61f6b13e3
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/buildpacks-cli/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.buildpacks-cli.new.30200/vendor.tar.gz differ: char 
142, line 1

Reply via email to