Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package melange for openSUSE:Factory checked 
in at 2025-06-16 11:12:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/melange (Old)
 and      /work/SRC/openSUSE:Factory/.melange.new.19631 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "melange"

Mon Jun 16 11:12:56 2025 rev:98 rq:1285936 version:0.26.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/melange/melange.changes  2025-06-13 
18:45:47.207653056 +0200
+++ /work/SRC/openSUSE:Factory/.melange.new.19631/melange.changes       
2025-06-16 11:13:04.036752830 +0200
@@ -1,0 +2,10 @@
+Mon Jun 16 04:56:22 UTC 2025 - Johannes Kastl 
<opensuse_buildserv...@ojkastl.de>
+
+- Update to version 0.26.12:
+  * Update RELEASE.md (#2046)
+  * docs: Regenerate to get rid of --guest-dir and --overlay-binsh
+  * bubblewrap: Rename guest dir pattern to "bubblewrap-guest-*"
+  * Replace apko.DirFS with tarfs; remove GuestDir concept
+  * Get rid of overlayBinSh
+
+-------------------------------------------------------------------

Old:
----
  melange-0.26.11.obscpio

New:
----
  melange-0.26.12.obscpio

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

Other differences:
------------------
++++++ melange.spec ++++++
--- /var/tmp/diff_new_pack.hSBaYr/_old  2025-06-16 11:13:05.372808037 +0200
+++ /var/tmp/diff_new_pack.hSBaYr/_new  2025-06-16 11:13:05.376808202 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           melange
-Version:        0.26.11
+Version:        0.26.12
 Release:        0
 Summary:        Build APKs from source code
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.hSBaYr/_old  2025-06-16 11:13:05.412809689 +0200
+++ /var/tmp/diff_new_pack.hSBaYr/_new  2025-06-16 11:13:05.416809855 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/chainguard-dev/melange</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.26.11</param>
+    <param name="revision">v0.26.12</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.hSBaYr/_old  2025-06-16 11:13:05.436810681 +0200
+++ /var/tmp/diff_new_pack.hSBaYr/_new  2025-06-16 11:13:05.440810846 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/chainguard-dev/melange</param>
-              <param 
name="changesrevision">097d11dd283c45cb51409ecdf33f45971e2e821d</param></service></servicedata>
+              <param 
name="changesrevision">65e385aff51b530faf6c3c001be62e5dc8b91aef</param></service></servicedata>
 (No newline at EOF)
 

++++++ melange-0.26.11.obscpio -> melange-0.26.12.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/RELEASE.md 
new/melange-0.26.12/RELEASE.md
--- old/melange-0.26.11/RELEASE.md      2025-06-13 09:33:43.000000000 +0200
+++ new/melange-0.26.12/RELEASE.md      2025-06-14 01:32:20.000000000 +0200
@@ -3,7 +3,7 @@
 To cut a release:
 
 1. Go to 
https://github.com/chainguard-dev/melange/actions/workflows/release.yaml.
-2. Click on the `Run workflow` button.
+2. Click on the `Run workflow ▼` button.
 3. In the dropdown, ensure that the `main` branch is selected.
 4. In the dropdown, click on the `Run workflow` button.
 5. Wait for the workflow to complete successfully.
@@ -19,4 +19,4 @@
 
 #### Automatic triggering
 
-In addition to being triggerable manually (as described at the top of this 
document), the workflow also runs automatically every Monday at midnight UTC. 
Just like with manual triggering, if there are no new changes since the last 
release, the workflow will end early without creating a new release.
+In addition to being triggerable manually (as described at the top of this 
document), the workflow also runs automatically every Monday at 00:00:00 UTC. 
Just like with manual triggering, if there are no new changes since the last 
release, the workflow will end early without creating a new release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/docs/BUILD-PROCESS.md 
new/melange-0.26.12/docs/BUILD-PROCESS.md
--- old/melange-0.26.11/docs/BUILD-PROCESS.md   2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/docs/BUILD-PROCESS.md   2025-06-14 01:32:20.000000000 
+0200
@@ -74,7 +74,6 @@
 
 The build process is as follows. The core routine is 
[`BuildPackage()`](../pkg/build/build.go#L716).
 
-1. Create the temporary working directory, known internally as the "guest 
directory" or `GuestDir`.
 1. Evaluate each step in the pipeline to see if it has a `needs` section. If 
so, then add its listed packages to the build time package requirements defined 
in `environment.contents`.
 1. Use [apko](https://github.com/chainguard-dev/apko) to create a tar stream 
of the packages listed in `environment.contents` and lay them out onto the 
workspace directory.
 1. Overlay `/bin/sh`. This is an optimization step, and is not discussed here. 
Read [Shell Overlay](./SHELL-OVERLAY.md) for more information.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/docs/SHELL-OVERLAY.md 
new/melange-0.26.12/docs/SHELL-OVERLAY.md
--- old/melange-0.26.11/docs/SHELL-OVERLAY.md   2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/docs/SHELL-OVERLAY.md   1970-01-01 01:00:00.000000000 
+0100
@@ -1,57 +0,0 @@
-# Shell Overlay
-
-When melange builds for the architecture on which it is running - amd64 on 
amd64, arm64 on arm64, riscv64 on riscv64
-etc. - all `runs` commands inside pipelines run natively on the processor.
-
-On the other hand, when building for alternative architecture, e.g. for arm64 
while on amd64, the commands are run
-using [binfmt_misc](https://en.wikipedia.org/wiki/Binfmt_misc) user-mode 
emulation.
-
-While this does work, it can be slow, sometimes painfully so.
-
-To speed up this process, we have the option to replace the actual `/bin/sh` 
shell used to execute commands with
-one for the native architecture. As shell scripts are just interpreted 
languages, this is a valid approach.
-
-When setting a shell overlay via `--overlay-binsh <shell>`, melange will copy 
the `<shell>` provided into the workspace.
-This replacement shell is expected to be for the actual host architecture, 
rather than the target architecture.
-Since it is the host's architecture, it will execute at native speed.
-
-To highlight how this works, look at this sample partial `melange.yaml` file:
-
-```yaml
-package:
-  name: shelltest
-  version: 0
-  epoch: 0
-  description: "a hello world program"
-  target-architecture:
-    - riscv64
-    - amd64
-  dependencies:
-    runtime:
-
-environment:
-  contents:
-    repositories:
-      - https://dl-cdn.alpinelinux.org/alpine/edge/main
-    packages:
-      - busybox
-
-pipeline:
-  - runs: |
-        echo "Hello World"
-        cat /etc/os-release
-```
-
-If I run this naively on an `amd64` machine, then two packages will be built, 
one each for amd64 and riscv64.
-
-The `amd64` build will run the two commands each in `/bin/sh` as available 
from the `busybox` package. Since
-we are running on `amd64`, these shell commands will execute at native speed.
-
-When it comes to building the `riscv64` package, the `/bin/sh` installed in 
the workspace from the `busybox` package
-is for `riscv64`. Running the two commands in the pipeline requires the kernel 
to use user-mode emulation
-via `binfmt_misc`.
-
-We can speed this up significantly by building for `riscv64`, but using an 
`amd64` `/bin/sh` to interpret the shell
-commands. To do this, we can use the `--overlay-binsh /bin/sh` option, which 
tells melange, "copy my local `/bin/sh`
-which is compiled for my native processor architecture `amd64`, into the 
workspace, and use that for interpreting
-shell commands." This means that all shell commands get executed at native 
speed.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/docs/md/melange_build.md 
new/melange-0.26.12/docs/md/melange_build.md
--- old/melange-0.26.11/docs/md/melange_build.md        2025-06-13 
09:33:43.000000000 +0200
+++ new/melange-0.26.12/docs/md/melange_build.md        2025-06-14 
01:32:20.000000000 +0200
@@ -47,7 +47,6 @@
       --generate-index                                          whether to 
generate APKINDEX.tar.gz (default true)
       --git-commit string                                       commit hash of 
the git repository containing the build config file (defaults to detecting HEAD)
       --git-repo-url string                                     URL of the git 
repository containing the build config file (defaults to detecting from 
configured git remotes)
-      --guest-dir string                                        directory used 
for the build environment guest
   -h, --help                                                    help for build
       --ignore-signatures                                       ignore 
repository signature verification
   -i, --interactive                                             when enabled, 
attaches stdin with a tty to the pod on failure
@@ -58,7 +57,6 @@
       --memory string                                           default memory 
resources to use for builds
       --namespace string                                        namespace to 
use in package URLs in SBOM (eg wolfi, alpine) (default "unknown")
       --out-dir string                                          directory 
where packages will be output (default "./packages/")
-      --overlay-binsh string                                    use specified 
file as /bin/sh overlay in build environment
       --override-host-triplet-libc-substitution-flavor string   override the 
flavor of libc for ${{host.triplet.*}} substitutions (e.g. gnu,musl) -- default 
is gnu (default "gnu")
       --package-append strings                                  extra packages 
to install for each of the build environments
       --pipeline-dir string                                     directory used 
to extend defined built-in pipelines
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/docs/md/melange_compile.md 
new/melange-0.26.12/docs/md/melange_compile.md
--- old/melange-0.26.11/docs/md/melange_compile.md      2025-06-13 
09:33:43.000000000 +0200
+++ new/melange-0.26.12/docs/md/melange_compile.md      2025-06-14 
01:32:20.000000000 +0200
@@ -45,7 +45,6 @@
       --generate-index              whether to generate APKINDEX.tar.gz 
(default true)
       --git-commit string           commit hash of the git repository 
containing the build config file (defaults to detecting HEAD)
       --git-repo-url string         URL of the git repository containing the 
build config file (defaults to detecting from configured git remotes)
-      --guest-dir string            directory used for the build environment 
guest
   -h, --help                        help for compile
   -i, --interactive                 when enabled, attaches stdin with a tty to 
the pod on failure
   -k, --keyring-append strings      path to extra keys to include in the build 
environment keyring
@@ -54,7 +53,6 @@
       --memory string               default memory resources to use for builds
       --namespace string            namespace to use in package URLs in SBOM 
(eg wolfi, alpine) (default "unknown")
       --out-dir string              directory where packages will be output 
(default "./packages/")
-      --overlay-binsh string        use specified file as /bin/sh overlay in 
build environment
       --package-append strings      extra packages to install for each of the 
build environments
       --pipeline-dir string         directory used to extend defined built-in 
pipelines
   -r, --repository-append strings   path to extra repositories to include in 
the build environment
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/docs/md/melange_test.md 
new/melange-0.26.12/docs/md/melange_test.md
--- old/melange-0.26.11/docs/md/melange_test.md 2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/docs/md/melange_test.md 2025-06-14 01:32:20.000000000 
+0200
@@ -35,12 +35,10 @@
       --debug                         enables debug logging of test pipelines 
(sets -x for steps)
       --debug-runner                  when enabled, the builder pod will 
persist after the build succeeds or fails
       --env-file string               file to use for preloaded environment 
variables
-      --guest-dir string              directory used for the build environment 
guest
   -h, --help                          help for test
       --ignore-signatures             ignore repository signature verification
   -i, --interactive                   when enabled, attaches stdin with a tty 
to the pod on failure
   -k, --keyring-append strings        path to extra keys to include in the 
build environment keyring
-      --overlay-binsh string          use specified file as /bin/sh overlay in 
build environment
       --pipeline-dirs strings         directories used to extend defined 
built-in pipelines
   -r, --repository-append strings     path to extra repositories to include in 
the build environment
       --rm                            clean up intermediate artifacts (e.g. 
container images, temp dirs) (default true)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/build/build.go 
new/melange-0.26.12/pkg/build/build.go
--- old/melange-0.26.11/pkg/build/build.go      2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/pkg/build/build.go      2025-06-14 01:32:20.000000000 
+0200
@@ -37,6 +37,7 @@
        "chainguard.dev/apko/pkg/apk/apk"
        apkofs "chainguard.dev/apko/pkg/apk/fs"
        apko_build "chainguard.dev/apko/pkg/build"
+       "chainguard.dev/apko/pkg/tarfs"
        apko_types "chainguard.dev/apko/pkg/build/types"
        "chainguard.dev/apko/pkg/options"
        "chainguard.dev/apko/pkg/sbom/generator/spdx"
@@ -102,10 +103,10 @@
        WorkspaceDir    string
        WorkspaceDirFS  apkofs.FullFS
        WorkspaceIgnore string
+       GuestFS apkofs.FullFS
        // Ordered directories where to find 'uses' pipelines.
        PipelineDirs          []string
        SourceDir             string
-       GuestDir              string
        SigningKey            string
        SigningPassphrase     string
        Namespace             string
@@ -156,6 +157,7 @@
                OutDir:          ".",
                CacheDir:        "./melange-cache/",
                Arch:            apko_types.ParseArchitecture(runtime.GOARCH),
+               GuestFS:         tarfs.New(),
        }
 
        for _, opt := range opts {
@@ -276,8 +278,6 @@
        log := clog.FromContext(ctx)
        errs := []error{}
        if b.Remove {
-               log.Debugf("deleting guest dir %s", b.GuestDir)
-               errs = append(errs, os.RemoveAll(b.GuestDir))
                log.Debugf("deleting workspace dir %s", b.WorkspaceDir)
                errs = append(errs, os.RemoveAll(b.WorkspaceDir))
                if b.containerConfig != nil && b.containerConfig.ImgRef != "" {
@@ -478,41 +478,6 @@
        return ignorePatterns, nil
 }
 
-func (b *Build) overlayBinSh() error {
-       if b.BinShOverlay == "" {
-               return nil
-       }
-
-       targetPath := filepath.Join(b.GuestDir, "bin", "sh")
-
-       inF, err := os.Open(b.BinShOverlay)
-       if err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-       defer inF.Close()
-
-       // We unlink the target first because it might be a symlink.
-       if err := os.Remove(targetPath); err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-
-       outF, err := os.Create(targetPath)
-       if err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-       defer outF.Close()
-
-       if _, err := io.Copy(outF, inF); err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-
-       if err := os.Chmod(targetPath, 0o755); err != nil {
-               return fmt.Errorf("setting overlay /bin/sh executable: %w", err)
-       }
-
-       return nil
-}
-
 // isBuildLess returns true if the build context does not actually do any 
building.
 // TODO(kaniini): Improve the heuristic for this by checking for uses/runs 
statements
 // in the pipeline.
@@ -658,18 +623,6 @@
        }
        pSBOM.AddPackageAndSetDescribed(apkPkg)
 
-       if b.GuestDir == "" {
-               guestDir, err := os.MkdirTemp(b.Runner.TempDir(), 
"melange-guest-*")
-               if err != nil {
-                       return fmt.Errorf("unable to make guest directory: %w", 
err)
-               }
-               b.GuestDir = guestDir
-
-               if b.Remove {
-                       defer os.RemoveAll(guestDir)
-               }
-       }
-
        log.Debugf("evaluating pipelines for package requirements")
        if err := b.Compile(ctx); err != nil {
                return fmt.Errorf("compiling %s: %w", b.ConfigFile, err)
@@ -725,15 +678,7 @@
        cfg := b.workspaceConfig(ctx)
 
        if !b.isBuildLess() {
-               // Prepare guest directory
-               if err := os.MkdirAll(b.GuestDir, 0o755); err != nil {
-                       return fmt.Errorf("mkdir -p %s: %w", b.GuestDir, err)
-               }
-
-               log.Infof("building workspace in '%s' with apko", b.GuestDir)
-
-               guestFS := apkofs.DirFS(b.GuestDir, apkofs.WithCreateDir())
-               imgRef, err := b.buildGuest(ctx, b.Configuration.Environment, 
guestFS)
+               imgRef, err := b.buildGuest(ctx, b.Configuration.Environment, 
b.GuestFS)
                if err != nil {
                        return fmt.Errorf("unable to build guest: %w", err)
                }
@@ -741,12 +686,6 @@
                cfg.ImgRef = imgRef
                log.Debugf("ImgRef = %s", cfg.ImgRef)
 
-               // TODO(kaniini): Make overlay-binsh work with Docker and 
Kubernetes.
-               // Probably needs help from apko.
-               if err := b.overlayBinSh(); err != nil {
-                       return fmt.Errorf("unable to install overlay /bin/sh: 
%w", err)
-               }
-
                if err := b.Runner.StartPod(ctx, cfg); err != nil {
                        return fmt.Errorf("unable to start pod: %w", err)
                }
@@ -952,13 +891,6 @@
                log.Warnf("unable to clean workspace: %s", err)
        }
 
-       if !b.isBuildLess() {
-               // clean build guest container
-               if err := os.RemoveAll(b.GuestDir); err != nil {
-                       log.Warnf("unable to clean guest container: %s", err)
-               }
-       }
-
        // generate APKINDEX.tar.gz and sign it
        if b.GenerateIndex {
                packageDir := filepath.Join(b.OutDir, b.Arch.ToAPK())
@@ -1051,10 +983,6 @@
 func (b *Build) SummarizePaths(ctx context.Context) {
        log := clog.FromContext(ctx)
        log.Debugf("  workspace dir: %s", b.WorkspaceDir)
-
-       if b.GuestDir != "" {
-               log.Debugf("  guest dir: %s", b.GuestDir)
-       }
 }
 
 func (b *Build) summarize(ctx context.Context) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/build/options.go 
new/melange-0.26.12/pkg/build/options.go
--- old/melange-0.26.11/pkg/build/options.go    2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/pkg/build/options.go    2025-06-14 01:32:20.000000000 
+0200
@@ -111,14 +111,6 @@
        }
 }
 
-// WithGuestDir sets the guest directory to use.
-func WithGuestDir(guestDir string) Option {
-       return func(b *Build) error {
-               b.GuestDir = guestDir
-               return nil
-       }
-}
-
 // WithWorkspaceIgnore sets the workspace ignore rules file to use.
 func WithWorkspaceIgnore(workspaceIgnore string) Option {
        return func(b *Build) error {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/build/package.go 
new/melange-0.26.12/pkg/build/package.go
--- old/melange-0.26.11/pkg/build/package.go    2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/pkg/build/package.go    2025-06-14 01:32:20.000000000 
+0200
@@ -453,7 +453,7 @@
        }
 
        // provide the tar writer etc/passwd and etc/group of guest filesystem
-       userinfofs := apkofs.DirFS(pc.Build.GuestDir)
+       userinfofs := pc.Build.GuestFS
 
        hdl := &SCABuildInterface{
                PackageBuild: pc,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/build/test.go 
new/melange-0.26.12/pkg/build/test.go
--- old/melange-0.26.11/pkg/build/test.go       2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/pkg/build/test.go       2025-06-14 01:32:20.000000000 
+0200
@@ -17,7 +17,6 @@
 import (
        "context"
        "fmt"
-       "io"
        "io/fs"
        "log/slog"
        "os"
@@ -30,6 +29,7 @@
        apko_build "chainguard.dev/apko/pkg/build"
        "chainguard.dev/apko/pkg/build/types"
        apko_types "chainguard.dev/apko/pkg/build/types"
+       "chainguard.dev/apko/pkg/tarfs"
        "chainguard.dev/apko/pkg/options"
        "github.com/chainguard-dev/clog"
        "github.com/yookoala/realpath"
@@ -50,7 +50,6 @@
        // Ordered directories where to find 'uses' pipelines.
        PipelineDirs      []string
        SourceDir         string
-       GuestDir          string
        Remove            bool
        Arch              apko_types.Architecture
        ExtraKeys         []string
@@ -184,43 +183,6 @@
        return ref, nil
 }
 
-func (t *Test) OverlayBinSh(suffix string) error {
-       if t.BinShOverlay == "" {
-               return nil
-       }
-
-       guestDir := fmt.Sprintf("%s-%s", t.GuestDir, suffix)
-
-       targetPath := filepath.Join(guestDir, "bin", "sh")
-
-       inF, err := os.Open(t.BinShOverlay)
-       if err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-       defer inF.Close()
-
-       // We unlink the target first because it might be a symlink.
-       if err := os.Remove(targetPath); err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-
-       outF, err := os.Create(targetPath)
-       if err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-       defer outF.Close()
-
-       if _, err := io.Copy(outF, inF); err != nil {
-               return fmt.Errorf("copying overlay /bin/sh: %w", err)
-       }
-
-       if err := os.Chmod(targetPath, 0o755); err != nil {
-               return fmt.Errorf("setting overlay /bin/sh executable: %w", err)
-       }
-
-       return nil
-}
-
 // IsTestless returns true if the test context does not actually do any
 // testing.
 func (t *Test) IsTestless() bool {
@@ -305,25 +267,10 @@
                return nil
        }
 
-       if t.GuestDir == "" {
-               guestDir, err := os.MkdirTemp(t.Runner.TempDir(), 
"melange-guest-*")
-               if err != nil {
-                       return fmt.Errorf("unable to make guest directory: %w", 
err)
-               }
-               t.GuestDir = guestDir
-
-               if t.Remove {
-                       defer os.RemoveAll(guestDir)
-               }
-       }
-
        imgRef := ""
        var err error
 
-       guestFS, err := t.guestFS(ctx, "main")
-       if err != nil {
-               return err
-       }
+       guestFS := t.guestFS(ctx)
 
        // If there are no 'main' test pipelines, we can skip building the 
guest.
        if !t.IsTestless() {
@@ -331,12 +278,6 @@
                if err != nil {
                        return fmt.Errorf("unable to build guest: %w", err)
                }
-
-               // TODO(kaniini): Make overlay-binsh work with Docker and 
Kubernetes.
-               // Probably needs help from apko.
-               if err := t.OverlayBinSh(""); err != nil {
-                       return fmt.Errorf("unable to install overlay /bin/sh: 
%w", err)
-               }
        }
 
        if t.SourceDir == "" {
@@ -411,18 +352,12 @@
                        }
                        log.Infof("running test pipeline for subpackage %s", 
sp.Name)
 
-                       guestFS, err := t.guestFS(ctx, sp.Name)
-                       if err != nil {
-                               return err
-                       }
+                       guestFS := t.guestFS(ctx)
 
                        spImgRef, err := t.BuildGuest(ctx, sp.Test.Environment, 
guestFS)
                        if err != nil {
                                return fmt.Errorf("unable to build guest: %w", 
err)
                        }
-                       if err := t.OverlayBinSh(sp.Name); err != nil {
-                               return fmt.Errorf("unable to install overlay 
/bin/sh: %w", err)
-                       }
                        subCfg, err := t.buildWorkspaceConfig(ctx, spImgRef, 
sp.Name, sp.Test.Environment)
                        if err != nil {
                                return fmt.Errorf("unable to build workspace 
config: %w", err)
@@ -469,10 +404,6 @@
 func (t *Test) SummarizePaths(ctx context.Context) {
        log := clog.FromContext(ctx)
        log.Debugf("  workspace dir: %s", t.WorkspaceDir)
-
-       if t.GuestDir != "" {
-               log.Debugf("  guest dir: %s", t.GuestDir)
-       }
 }
 
 func (t *Test) Summarize(ctx context.Context) {
@@ -538,17 +469,6 @@
        return &cfg, nil
 }
 
-func (t *Test) guestFS(ctx context.Context, suffix string) (apkofs.FullFS, 
error) {
-       log := clog.FromContext(ctx)
-       // Prepare guest directory. Note that we customize this for each unique
-       // Test by having a suffix, so we get a clean guest directory for each 
of
-       // them.
-       guestDir := fmt.Sprintf("%s-%s", t.GuestDir, suffix)
-       if err := os.MkdirAll(guestDir, 0o755); err != nil {
-               return nil, fmt.Errorf("mkdir -p %s: %w", guestDir, err)
-       }
-
-       log.Infof("building test workspace in: '%s' with apko", guestDir)
-
-       return apkofs.DirFS(guestDir, apkofs.WithCreateDir()), nil
+func (t *Test) guestFS(ctx context.Context) apkofs.FullFS {
+       return tarfs.New()
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/build/test_options.go 
new/melange-0.26.12/pkg/build/test_options.go
--- old/melange-0.26.11/pkg/build/test_options.go       2025-06-13 
09:33:43.000000000 +0200
+++ new/melange-0.26.12/pkg/build/test_options.go       2025-06-14 
01:32:20.000000000 +0200
@@ -38,14 +38,6 @@
        }
 }
 
-// WithGuestDir sets the guest directory to use.
-func WithTestGuestDir(guestDir string) TestOption {
-       return func(t *Test) error {
-               t.GuestDir = guestDir
-               return nil
-       }
-}
-
 // WithWorkspaceIgnore sets the workspace ignore rules file to use.
 func WithTestWorkspaceIgnore(workspaceIgnore string) TestOption {
        return func(t *Test) error {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/cli/build.go 
new/melange-0.26.12/pkg/cli/build.go
--- old/melange-0.26.11/pkg/cli/build.go        2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/pkg/cli/build.go        2025-06-14 01:32:20.000000000 
+0200
@@ -50,7 +50,6 @@
        var cacheDir string
        var cacheSource string
        var apkCacheDir string
-       var guestDir string
        var signingKey string
        var generateIndex bool
        var emptyWorkspace bool
@@ -60,7 +59,6 @@
        var extraKeys []string
        var extraRepos []string
        var dependencyLog string
-       var overlayBinSh string
        var envFile string
        var varsFile string
        var purlNamespace string
@@ -158,7 +156,6 @@
                                build.WithCacheDir(cacheDir),
                                build.WithCacheSource(cacheSource),
                                build.WithPackageCacheDir(apkCacheDir),
-                               build.WithGuestDir(guestDir),
                                build.WithSigningKey(signingKey),
                                build.WithGenerateIndex(generateIndex),
                                build.WithEmptyWorkspace(emptyWorkspace),
@@ -167,7 +164,6 @@
                                build.WithExtraRepos(extraRepos),
                                build.WithExtraPackages(extraPackages),
                                build.WithDependencyLog(dependencyLog),
-                               build.WithBinShOverlay(overlayBinSh),
                                build.WithStripOriginName(stripOriginName),
                                build.WithEnvFile(envFile),
                                build.WithVarsFile(varsFile),
@@ -227,7 +223,6 @@
        cmd.Flags().StringVar(&cacheDir, "cache-dir", "./melange-cache/", 
"directory used for cached inputs")
        cmd.Flags().StringVar(&cacheSource, "cache-source", "", "directory or 
bucket used for preloading the cache")
        cmd.Flags().StringVar(&apkCacheDir, "apk-cache-dir", "", "directory 
used for cached apk packages (default is system-defined cache directory)")
-       cmd.Flags().StringVar(&guestDir, "guest-dir", "", "directory used for 
the build environment guest")
        cmd.Flags().StringVar(&signingKey, "signing-key", "", "key to use for 
signing")
        cmd.Flags().StringVar(&envFile, "env-file", "", "file to use for 
preloaded environment variables")
        cmd.Flags().StringVar(&varsFile, "vars-file", "", "file to use for 
preloaded build configuration variables")
@@ -236,7 +231,6 @@
        cmd.Flags().BoolVar(&stripOriginName, "strip-origin-name", false, 
"whether origin names should be stripped (for bootstrap)")
        cmd.Flags().StringVar(&outDir, "out-dir", "./packages/", "directory 
where packages will be output")
        cmd.Flags().StringVar(&dependencyLog, "dependency-log", "", "log 
dependencies to a specified file")
-       cmd.Flags().StringVar(&overlayBinSh, "overlay-binsh", "", "use 
specified file as /bin/sh overlay in build environment")
        cmd.Flags().StringVar(&purlNamespace, "namespace", "unknown", 
"namespace to use in package URLs in SBOM (eg wolfi, alpine)")
        cmd.Flags().StringSliceVar(&archstrs, "arch", nil, "architectures to 
build for (e.g., x86_64,ppc64le,arm64) -- default is all, unless specified in 
config")
        cmd.Flags().StringVar(&libc, 
"override-host-triplet-libc-substitution-flavor", "gnu", "override the flavor 
of libc for ${{host.triplet.*}} substitutions (e.g. gnu,musl) -- default is 
gnu")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/cli/compile.go 
new/melange-0.26.12/pkg/cli/compile.go
--- old/melange-0.26.11/pkg/cli/compile.go      2025-06-13 09:33:43.000000000 
+0200
+++ new/melange-0.26.12/pkg/cli/compile.go      2025-06-14 01:32:20.000000000 
+0200
@@ -38,7 +38,6 @@
        var cacheDir string
        var cacheSource string
        var apkCacheDir string
-       var guestDir string
        var signingKey string
        var generateIndex bool
        var emptyWorkspace bool
@@ -48,7 +47,6 @@
        var extraKeys []string
        var extraRepos []string
        var dependencyLog string
-       var overlayBinSh string
        var envFile string
        var varsFile string
        var purlNamespace string
@@ -114,7 +112,6 @@
                                build.WithCacheDir(cacheDir),
                                build.WithCacheSource(cacheSource),
                                build.WithPackageCacheDir(apkCacheDir),
-                               build.WithGuestDir(guestDir),
                                build.WithSigningKey(signingKey),
                                build.WithGenerateIndex(generateIndex),
                                build.WithEmptyWorkspace(emptyWorkspace),
@@ -123,7 +120,6 @@
                                build.WithExtraRepos(extraRepos),
                                build.WithExtraPackages(extraPackages),
                                build.WithDependencyLog(dependencyLog),
-                               build.WithBinShOverlay(overlayBinSh),
                                build.WithStripOriginName(stripOriginName),
                                build.WithEnvFile(envFile),
                                build.WithVarsFile(varsFile),
@@ -181,7 +177,6 @@
        cmd.Flags().StringVar(&cacheDir, "cache-dir", "./melange-cache/", 
"directory used for cached inputs")
        cmd.Flags().StringVar(&cacheSource, "cache-source", "", "directory or 
bucket used for preloading the cache")
        cmd.Flags().StringVar(&apkCacheDir, "apk-cache-dir", "", "directory 
used for cached apk packages (default is system-defined cache directory)")
-       cmd.Flags().StringVar(&guestDir, "guest-dir", "", "directory used for 
the build environment guest")
        cmd.Flags().StringVar(&signingKey, "signing-key", "", "key to use for 
signing")
        cmd.Flags().StringVar(&envFile, "env-file", "", "file to use for 
preloaded environment variables")
        cmd.Flags().StringVar(&varsFile, "vars-file", "", "file to use for 
preloaded build configuration variables")
@@ -190,7 +185,6 @@
        cmd.Flags().BoolVar(&stripOriginName, "strip-origin-name", false, 
"whether origin names should be stripped (for bootstrap)")
        cmd.Flags().StringVar(&outDir, "out-dir", "./packages/", "directory 
where packages will be output")
        cmd.Flags().StringVar(&dependencyLog, "dependency-log", "", "log 
dependencies to a specified file")
-       cmd.Flags().StringVar(&overlayBinSh, "overlay-binsh", "", "use 
specified file as /bin/sh overlay in build environment")
        cmd.Flags().StringVar(&purlNamespace, "namespace", "unknown", 
"namespace to use in package URLs in SBOM (eg wolfi, alpine)")
        cmd.Flags().StringSliceVar(&buildOption, "build-option", []string{}, 
"build options to enable")
        cmd.Flags().StringSliceVar(&logPolicy, "log-policy", 
[]string{"builtin:stderr"}, "logging policy to use")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/cli/test.go 
new/melange-0.26.12/pkg/cli/test.go
--- old/melange-0.26.11/pkg/cli/test.go 2025-06-13 09:33:43.000000000 +0200
+++ new/melange-0.26.12/pkg/cli/test.go 2025-06-14 01:32:20.000000000 +0200
@@ -35,13 +35,11 @@
        var cacheDir string
        var cacheSource string
        var apkCacheDir string
-       var guestDir string
        var archstrs []string
        var pipelineDirs []string
        var extraKeys []string
        var extraRepos []string
        var envFile string
-       var overlayBinSh string
        var testOption []string
        var debug bool
        var debugRunner bool
@@ -70,11 +68,9 @@
                                build.WithTestCacheDir(cacheDir),
                                build.WithTestCacheSource(cacheSource),
                                build.WithTestPackageCacheDir(apkCacheDir),
-                               build.WithTestGuestDir(guestDir),
                                build.WithTestExtraKeys(extraKeys),
                                build.WithTestExtraRepos(extraRepos),
                                build.WithExtraTestPackages(extraTestPackages),
-                               build.WithTestBinShOverlay(overlayBinSh),
                                build.WithTestRunner(r),
                                build.WithTestEnvFile(envFile),
                                build.WithTestDebug(debug),
@@ -121,8 +117,6 @@
        cmd.Flags().StringVar(&cacheDir, "cache-dir", "", "directory used for 
cached inputs")
        cmd.Flags().StringVar(&cacheSource, "cache-source", "", "directory or 
bucket used for preloading the cache")
        cmd.Flags().StringVar(&apkCacheDir, "apk-cache-dir", "", "directory 
used for cached apk packages (default is system-defined cache directory)")
-       cmd.Flags().StringVar(&guestDir, "guest-dir", "", "directory used for 
the build environment guest")
-       cmd.Flags().StringVar(&overlayBinSh, "overlay-binsh", "", "use 
specified file as /bin/sh overlay in build environment")
        cmd.Flags().StringSliceVar(&archstrs, "arch", nil, "architectures to 
build for (e.g., x86_64,ppc64le,arm64) -- default is all, unless specified in 
config")
        cmd.Flags().StringSliceVar(&testOption, "test-option", []string{}, 
"build options to enable")
        cmd.Flags().StringVar(&runner, "runner", "", fmt.Sprintf("which runner 
to use to enable running commands, default is based on your platform. Options 
are %q", build.GetAllRunners()))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/melange-0.26.11/pkg/container/bubblewrap_runner.go 
new/melange-0.26.12/pkg/container/bubblewrap_runner.go
--- old/melange-0.26.11/pkg/container/bubblewrap_runner.go      2025-06-13 
09:33:43.000000000 +0200
+++ new/melange-0.26.12/pkg/container/bubblewrap_runner.go      2025-06-14 
01:32:20.000000000 +0200
@@ -241,7 +241,7 @@
 
        // bubblewrap does not have the idea of container images or layers or 
such, just
        // straight out chroot, so we create the guest dir
-       guestDir, err := os.MkdirTemp("", "melange-guest-*")
+       guestDir, err := os.MkdirTemp("", "bubblewrap-guest-*")
        if err != nil {
                return ref, fmt.Errorf("failed to create guest dir: %w", err)
        }

++++++ melange.obsinfo ++++++
--- /var/tmp/diff_new_pack.hSBaYr/_old  2025-06-16 11:13:05.664820103 +0200
+++ /var/tmp/diff_new_pack.hSBaYr/_new  2025-06-16 11:13:05.668820267 +0200
@@ -1,5 +1,5 @@
 name: melange
-version: 0.26.11
-mtime: 1749800023
-commit: 097d11dd283c45cb51409ecdf33f45971e2e821d
+version: 0.26.12
+mtime: 1749857540
+commit: 65e385aff51b530faf6c3c001be62e5dc8b91aef
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/melange/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.melange.new.19631/vendor.tar.gz differ: char 132, 
line 1

Reply via email to