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