Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package apko for openSUSE:Factory checked in at 2026-02-02 14:55:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/apko (Old) and /work/SRC/openSUSE:Factory/.apko.new.1995 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apko" Mon Feb 2 14:55:57 2026 rev:91 rq:1330319 version:1.1.2 Changes: -------- --- /work/SRC/openSUSE:Factory/apko/apko.changes 2026-01-30 18:23:31.036627451 +0100 +++ /work/SRC/openSUSE:Factory/.apko.new.1995/apko.changes 2026-02-02 14:56:22.965532216 +0100 @@ -1,0 +2,12 @@ +Mon Feb 02 05:46:05 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 1.1.2: + * tests: improve passwd/group parsing tests (#2045) + +------------------------------------------------------------------- +Sun Feb 01 19:30:46 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 1.1.1: + * Format README (#2044) + +------------------------------------------------------------------- Old: ---- apko-1.1.0.obscpio New: ---- apko-1.1.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ apko.spec ++++++ --- /var/tmp/diff_new_pack.8NBWXQ/_old 2026-02-02 14:56:23.961574317 +0100 +++ /var/tmp/diff_new_pack.8NBWXQ/_new 2026-02-02 14:56:23.965574486 +0100 @@ -17,7 +17,7 @@ Name: apko -Version: 1.1.0 +Version: 1.1.2 Release: 0 Summary: Build OCI images from APK packages directly without Dockerfile License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.8NBWXQ/_old 2026-02-02 14:56:24.001576008 +0100 +++ /var/tmp/diff_new_pack.8NBWXQ/_new 2026-02-02 14:56:24.005576176 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/chainguard-dev/apko</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v1.1.0</param> + <param name="revision">v1.1.2</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.8NBWXQ/_old 2026-02-02 14:56:24.025577022 +0100 +++ /var/tmp/diff_new_pack.8NBWXQ/_new 2026-02-02 14:56:24.029577191 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/chainguard-dev/apko</param> - <param name="changesrevision">2be3903fe194ad46351840f0569b35f5ac965f09</param></service></servicedata> + <param name="changesrevision">aee88fb0b3633ca59825330fb5f97b13f08736e5</param></service></servicedata> (No newline at EOF) ++++++ apko-1.1.0.obscpio -> apko-1.1.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-1.1.0/README.md new/apko-1.1.2/README.md --- old/apko-1.1.0/README.md 2026-01-30 02:49:26.000000000 +0100 +++ new/apko-1.1.2/README.md 2026-01-31 11:59:27.000000000 +0100 @@ -4,13 +4,13 @@ apko has the following key features: - - **Fully reproducible by default.** Run apko twice and you will get exactly the same binary. - - **Fast.** apko aims to build images in ms. - - **Small.** apko generated images only contain what's needed by the application, - in the style of [distroless](https://github.com/GoogleContainerTools/distroless). - - **SBOM Support.** apko produces a Software Bill of Materials (SBOM) for images, detailing all the packages inside. - - **Services.** apko supports using the [s6 supervision suite](https://skarnet.org/software/s6) to run multiple processes - in a container without reaping or signalling issues. +- **Fully reproducible by default.** Run apko twice and you will get exactly the same binary. +- **Fast.** apko aims to build images in ms. +- **Small.** apko generated images only contain what's needed by the application, + in the style of [distroless](https://github.com/GoogleContainerTools/distroless). +- **SBOM Support.** apko produces a Software Bill of Materials (SBOM) for images, detailing all the packages inside. +- **Services.** apko supports using the [s6 supervision suite](https://skarnet.org/software/s6) to run multiple processes + in a container without reaping or signalling issues. Please note that apko is a work in progress and details are subject to change! @@ -58,11 +58,13 @@ environment: PATH: /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin ``` + We can build this with apko from any environment with apk tooling: ```shell apko build examples/alpine-base.yaml apko-alpine:test apko-alpine.tar ``` + ``` ... 2022/04/08 13:22:31 apko (aarch64): generating SBOM @@ -83,12 +85,15 @@ ```shell docker load < apko-alpine.tar ``` + ```shell Loaded image: apko-alpine:test ``` + ```shell docker run -it apko-alpine:test ``` + ``` e289dc84c4ad:/# echo boo! boo! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-1.1.0/pkg/passwd/group_test.go new/apko-1.1.2/pkg/passwd/group_test.go --- old/apko-1.1.0/pkg/passwd/group_test.go 2026-01-30 02:49:26.000000000 +0100 +++ new/apko-1.1.2/pkg/passwd/group_test.go 2026-01-31 11:59:27.000000000 +0100 @@ -1,4 +1,4 @@ -// Copyright 2022, 2023 Chainguard, Inc. +// Copyright 2022-2026 Chainguard, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ "bytes" "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" apkfs "chainguard.dev/apko/pkg/apk/fs" @@ -28,15 +29,40 @@ gf, err := ReadOrCreateGroupFile(fsys, "group") require.NoError(t, err) + require.NotEmpty(t, gf, "group file in existing testdata file should not be empty") + + found_root := false + found_daemon := false + found_nobody := false for _, ge := range gf.Entries { if ge.GID == 0 { - require.Equal(t, "root", ge.GroupName, "gid 0 is not root") + assert.Equal(t, "root", ge.GroupName, "gid 0 is not root") + assert.Equal(t, "x", ge.Password, "gid 0 password entry is not set to x") + assert.Equal(t, []string{"root"}, ge.Members, "gid 0 members should just be the root user") + found_root = true + } + + if ge.GID == 2 { + assert.Equal(t, "daemon", ge.GroupName, "gid 2 is not daemon") + assert.Equal(t, "x", ge.Password, "gid 2 password entry is not set to x") + assert.ElementsMatch(t, []string{"root", "bin", "daemon"}, ge.Members, "gid 2 members should contain root, bin, and daemon users") + found_daemon = true } if ge.GID == 65534 { - require.Equal(t, "nobody", ge.GroupName, "gid 65534 is not nobody") + assert.Equal(t, "nobody", ge.GroupName, "gid 65534 is not nobody") + assert.Equal(t, "x", ge.Password, "gid 65534 password entry is not set to x") + // XXX if there's no users listed as group members, Parse + // returns a list with one empty string as a result, not + // sure if that's intended behavior. + assert.Equal(t, []string{""}, ge.Members, "gid 65534 members should be empty") + found_nobody = true } } + + assert.True(t, found_root, "group file should contain the root group") + assert.True(t, found_daemon, "group file should contain the daemon group") + assert.True(t, found_nobody, "group file should contain the nobody group") } func TestGroupWriter(t *testing.T) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-1.1.0/pkg/passwd/passwd_test.go new/apko-1.1.2/pkg/passwd/passwd_test.go --- old/apko-1.1.0/pkg/passwd/passwd_test.go 2026-01-30 02:49:26.000000000 +0100 +++ new/apko-1.1.2/pkg/passwd/passwd_test.go 2026-01-31 11:59:27.000000000 +0100 @@ -1,4 +1,4 @@ -// Copyright 2022, 2023 Chainguard, Inc. +// Copyright 2022-2026 Chainguard, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ "os" "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" apkfs "chainguard.dev/apko/pkg/apk/fs" @@ -34,16 +35,27 @@ require.NoError(t, err) uf, err := ReadOrCreateUserFile(fsys, "etc/passwd") require.NoError(t, err) + require.NotEmpty(t, uf, "parsed passwd file should not be empty") + found_root := false + found_nobody := false for _, ue := range uf.Entries { if ue.UID == 0 { - require.Equal(t, "root", ue.UserName, "uid 0 is not root") + assert.Equal(t, "root", ue.UserName, "uid 0 is not root") + assert.Equal(t, "/bin/ash", ue.Shell, "uid 0 shell is not /bin/ash") + assert.Equal(t, "/root", ue.HomeDir, "uid 0 homedir is not /root") + found_root = true } if ue.UID == 65534 { - require.Equal(t, "nobody", ue.UserName, "uid 65534 is not nobody") + assert.Equal(t, "nobody", ue.UserName, "uid 65534 is not nobody") + assert.Equal(t, "/bin/false", ue.Shell, "uid 65534 shell is not /bin/false") + assert.Equal(t, "/", ue.HomeDir, "uid 65534 homedir is not /") + found_nobody = true } } + assert.True(t, found_root, "passwd file should contain the root user") + assert.True(t, found_nobody, "passwd file should contain the nobody user") } func TestWriter(t *testing.T) { ++++++ apko.obsinfo ++++++ --- /var/tmp/diff_new_pack.8NBWXQ/_old 2026-02-02 14:56:24.681604751 +0100 +++ /var/tmp/diff_new_pack.8NBWXQ/_new 2026-02-02 14:56:24.685604920 +0100 @@ -1,5 +1,5 @@ name: apko -version: 1.1.0 -mtime: 1769737766 -commit: 2be3903fe194ad46351840f0569b35f5ac965f09 +version: 1.1.2 +mtime: 1769857167 +commit: aee88fb0b3633ca59825330fb5f97b13f08736e5 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/apko/vendor.tar.gz /work/SRC/openSUSE:Factory/.apko.new.1995/vendor.tar.gz differ: char 135, line 1
