Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package melange for openSUSE:Factory checked in at 2026-03-16 14:17:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/melange (Old) and /work/SRC/openSUSE:Factory/.melange.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "melange" Mon Mar 16 14:17:34 2026 rev:146 rq:1339217 version:0.45.4 Changes: -------- --- /work/SRC/openSUSE:Factory/melange/melange.changes 2026-03-11 20:57:22.627015435 +0100 +++ /work/SRC/openSUSE:Factory/.melange.new.8177/melange.changes 2026-03-16 14:20:57.306320119 +0100 @@ -1,0 +2,11 @@ +Mon Mar 16 06:08:08 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.45.4: + * test: strip sed integration test down to just git-checkout + (#2420) + * qemu: log VM resources (arch, cpus, memory) before boot (#2417) + * qemu: always attach serial console for boot diagnostics (#2416) + * chore(config): Support var substitutions for update monitors + (#2413) + +------------------------------------------------------------------- Old: ---- melange-0.45.3.obscpio New: ---- melange-0.45.4.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ melange.spec ++++++ --- /var/tmp/diff_new_pack.YP1Wed/_old 2026-03-16 14:20:58.190356878 +0100 +++ /var/tmp/diff_new_pack.YP1Wed/_new 2026-03-16 14:20:58.194357045 +0100 @@ -17,7 +17,7 @@ Name: melange -Version: 0.45.3 +Version: 0.45.4 Release: 0 Summary: Build APKs from source code License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.YP1Wed/_old 2026-03-16 14:20:58.230358541 +0100 +++ /var/tmp/diff_new_pack.YP1Wed/_new 2026-03-16 14:20:58.234358708 +0100 @@ -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.45.3</param> + <param name="revision">v0.45.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.YP1Wed/_old 2026-03-16 14:20:58.258359706 +0100 +++ /var/tmp/diff_new_pack.YP1Wed/_new 2026-03-16 14:20:58.262359872 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/chainguard-dev/melange</param> - <param name="changesrevision">2a226faac364a05b188a3afcbbdc45b35b395ff3</param></service></servicedata> + <param name="changesrevision">42d118f8a48cb613c92c10974757c9da0b6a0343</param></service></servicedata> (No newline at EOF) ++++++ melange-0.45.3.obscpio -> melange-0.45.4.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/melange-0.45.3/pkg/build/testdata/build_configs/sed.yaml new/melange-0.45.4/pkg/build/testdata/build_configs/sed.yaml --- old/melange-0.45.3/pkg/build/testdata/build_configs/sed.yaml 2026-03-11 00:53:12.000000000 +0100 +++ new/melange-0.45.4/pkg/build/testdata/build_configs/sed.yaml 2026-03-13 16:39:07.000000000 +0100 @@ -5,24 +5,16 @@ description: "GNU stream editor" copyright: - license: GPL-3.0-or-later - resources: - cpu: "7" - memory: 7Gi environment: contents: packages: - - autoconf - - automake - - build-base - busybox - ca-certificates-bundle - - coreutils - - gettext-dev - - rsync # for gnulib translations - - texinfo - - wget # for gnulib translations +# This test exists to exercise git-checkout with recurse-submodules, +# shallow-submodules, and submodule-jobs under set -u. We don't need +# to actually build sed — just verify the checkout succeeds. pipeline: - uses: git-checkout with: @@ -33,31 +25,12 @@ shallow-submodules: true submodule-jobs: $(nproc) - # - name: git.savannah.gnu.org is flaky - # runs: git submodule set-url gnulib https://github.com/coreutils/gnulib.git - - - runs: echo ${{package.version}} >.tarball-version - - - runs: ./bootstrap - - - uses: autoconf/configure - - - uses: autoconf/make - - - uses: autoconf/make-install - - runs: | - rm -f "${{targets.destdir}}"/usr/share/info/dir - - - uses: strip + mkdir -p "${{targets.destdir}}"/usr/bin + echo "#!/bin/sh" > "${{targets.destdir}}"/usr/bin/sed + chmod +x "${{targets.destdir}}"/usr/bin/sed update: enabled: true release-monitor: identifier: 4789 - -test: - pipeline: - - runs: | - sed --version - sed --help diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/melange-0.45.3/pkg/config/config.go new/melange-0.45.4/pkg/config/config.go --- old/melange-0.45.3/pkg/config/config.go 2026-03-11 00:53:12.000000000 +0100 +++ new/melange-0.45.4/pkg/config/config.go 2026-03-13 16:39:07.000000000 +0100 @@ -1419,6 +1419,43 @@ } } +func replaceUpdate(r *strings.Replacer, in Update) Update { + out := in + + if in.ReleaseMonitor != nil { + out.ReleaseMonitor = &ReleaseMonitor{ + Identifier: in.ReleaseMonitor.Identifier, + StripPrefix: in.ReleaseMonitor.StripPrefix, + StripSuffix: in.ReleaseMonitor.StripSuffix, + VersionFilterContains: r.Replace(in.ReleaseMonitor.VersionFilterContains), + VersionFilterPrefix: r.Replace(in.ReleaseMonitor.VersionFilterPrefix), + } + } + + if in.GitHubMonitor != nil { + out.GitHubMonitor = &GitHubMonitor{ + Identifier: r.Replace(in.GitHubMonitor.Identifier), + StripPrefix: in.GitHubMonitor.StripPrefix, + StripSuffix: in.GitHubMonitor.StripSuffix, + TagFilter: r.Replace(in.GitHubMonitor.TagFilter), + TagFilterPrefix: r.Replace(in.GitHubMonitor.TagFilterPrefix), + TagFilterContains: r.Replace(in.GitHubMonitor.TagFilterContains), + UseTags: in.GitHubMonitor.UseTags, + } + } + + if in.GitMonitor != nil { + out.GitMonitor = &GitMonitor{ + StripPrefix: in.GitMonitor.StripPrefix, + StripSuffix: in.GitMonitor.StripSuffix, + TagFilterPrefix: r.Replace(in.GitMonitor.TagFilterPrefix), + TagFilterContains: r.Replace(in.GitMonitor.TagFilterContains), + } + } + + return out +} + func replaceScriptlets(r *strings.Replacer, in *Scriptlets) *Scriptlets { if in == nil { return nil @@ -1660,6 +1697,8 @@ cfg.Test = replaceTest(replacer, cfg.Test) + cfg.Update = replaceUpdate(replacer, cfg.Update) + cfg.Data = nil // TODO: zero this out or not? // TODO: validate that subpackage ranges have been consumed and applied diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/melange-0.45.3/pkg/config/config_test.go new/melange-0.45.4/pkg/config/config_test.go --- old/melange-0.45.3/pkg/config/config_test.go 2026-03-11 00:53:12.000000000 +0100 +++ new/melange-0.45.4/pkg/config/config_test.go 2026-03-13 16:39:07.000000000 +0100 @@ -185,6 +185,71 @@ require.Equal(t, "/usr/local/FOO", cfg.Test.Environment.Environment["LD_LIBRARY_PATH"]) } +func Test_updateBlockVarSubstitution(t *testing.T) { + ctx := slogtest.Context(t) + + fp := filepath.Join(os.TempDir(), "melange-test-updateBlockVarSubstitution") + if err := os.WriteFile(fp, []byte(` +package: + name: test-update-vars + version: 1.2.3 + epoch: 0 + description: test variable substitution in update block + +vars: + stream: "1.2" + +update: + enabled: true + github: + identifier: myorg/${{package.name}} + tag-filter-prefix: v${{vars.stream}} +`), 0o644); err != nil { + t.Fatal(err) + } + cfg, err := ParseConfiguration(ctx, fp) + if err != nil { + t.Fatalf("failed to parse configuration: %s", err) + } + + require.True(t, cfg.Update.Enabled) + + // GitHub monitor fields should have vars resolved + require.NotNil(t, cfg.Update.GitHubMonitor) + require.Equal(t, "myorg/test-update-vars", cfg.Update.GitHubMonitor.Identifier) + require.Equal(t, "v1.2", cfg.Update.GitHubMonitor.TagFilterPrefix) +} + +func Test_updateBlockVarSubstitutionGitMonitor(t *testing.T) { + ctx := slogtest.Context(t) + + fp := filepath.Join(os.TempDir(), "melange-test-updateBlockVarSubstitutionGit") + if err := os.WriteFile(fp, []byte(` +package: + name: test-update-vars-git + version: 5.0.0 + epoch: 0 + description: test variable substitution in update block with git monitor + +vars: + prefix: release- + +update: + enabled: true + git: + tag-filter-prefix: ${{vars.prefix}} +`), 0o644); err != nil { + t.Fatal(err) + } + cfg, err := ParseConfiguration(ctx, fp) + if err != nil { + t.Fatalf("failed to parse configuration: %s", err) + } + + require.NotNil(t, cfg.Update.GitMonitor) + require.Equal(t, "release-", cfg.Update.GitMonitor.TagFilterPrefix) +} + func Test_rangeSubstitutions(t *testing.T) { ctx := slogtest.Context(t) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/melange-0.45.3/pkg/container/qemu_runner.go new/melange-0.45.4/pkg/container/qemu_runner.go --- old/melange-0.45.3/pkg/container/qemu_runner.go 2026-03-11 00:53:12.000000000 +0100 +++ new/melange-0.45.4/pkg/container/qemu_runner.go 2026-03-13 16:39:07.000000000 +0100 @@ -642,25 +642,21 @@ baseargs := []string{} - kernelConsole := "" - // If the log level is debug, then crank up the logging. - // Otherwise, use quiet mode. + // Always attach the serial console so guest kernel and init output is + // captured through QEMU's stdout, giving visibility into boot failures + // (e.g. when SSH never comes up). Kernel verbosity is still gated on + // the log level. + kernelConsole := "console=hvc0" if log.Enabled(ctx, slog.LevelDebug) { kernelConsole += " debug loglevel=7" } else { kernelConsole += " quiet" } - // Only enable console on debug runs. - // Spare some boot time and memory - serialArgs := []string{} - if log.Enabled(ctx, slog.LevelDebug) { - kernelConsole = "console=hvc0" - serialArgs = []string{ - "-device", "virtio-serial-pci,id=virtio-serial0,max_ports=2", - "-chardev", "stdio,id=charconsole0", - "-device", "virtconsole,chardev=charconsole0,id=console0", - } + serialArgs := []string{ + "-device", "virtio-serial-pci,id=virtio-serial0,max_ports=2", + "-chardev", "stdio,id=charconsole0", + "-device", "virtconsole,chardev=charconsole0,id=console0", } // Helper to add memory-backend suffix for virtiofs shared memory @@ -868,6 +864,7 @@ // qemu-system-x86_64 or qemu-system-aarch64... // #nosec G204 - Architecture is from validated configuration, not user input qemuCmd := exec.CommandContext(ctx, fmt.Sprintf("qemu-system-%s", cfg.Arch.ToAPK()), baseargs...) + clog.FromContext(ctx).Infof("qemu: VM resources: arch=%s cpus=%d memory=%dMiB", cfg.Arch.ToAPK(), nproc, mem/1024) clog.FromContext(ctx).Info("qemu: starting VM") clog.FromContext(ctx).Debugf("qemu: executing - %s", strings.Join(qemuCmd.Args, " ")) ++++++ melange.obsinfo ++++++ --- /var/tmp/diff_new_pack.YP1Wed/_old 2026-03-16 14:21:00.146438214 +0100 +++ /var/tmp/diff_new_pack.YP1Wed/_new 2026-03-16 14:21:00.150438380 +0100 @@ -1,5 +1,5 @@ name: melange -version: 0.45.3 -mtime: 1773186792 -commit: 2a226faac364a05b188a3afcbbdc45b35b395ff3 +version: 0.45.4 +mtime: 1773416347 +commit: 42d118f8a48cb613c92c10974757c9da0b6a0343 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/melange/vendor.tar.gz /work/SRC/openSUSE:Factory/.melange.new.8177/vendor.tar.gz differ: char 132, line 1
