From ad9943e99de6ebec0dbc7ad34c51d0790dac5dc8 Mon Sep 17 00:00:00 2001 From: Simon de Vlieger Date: Thu, 3 Apr 2025 08:53:03 +0200 Subject: [PATCH] main: eat depsolve warnings When running `image-builder` warnings are emitted during manifest generation. Depending on the definitions or customizations packages can be excluded from groups which leads to: ``` No match for group package "dracut-config-rescue" ``` Interspersing with normal output. Let's pass along another byte buffer for the warnings from manifest generation to be written into. Note that this also needs plumbing [1] to land in `images` first. [1]: https://github.com/osbuild/images/pull/1384 Signed-off-by: Simon de Vlieger --- cmd/image-builder/main.go | 11 +++++++---- cmd/image-builder/manifest.go | 11 ++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/cmd/image-builder/main.go b/cmd/image-builder/main.go index 043fdb9..5fd4629 100644 --- a/cmd/image-builder/main.go +++ b/cmd/image-builder/main.go @@ -101,7 +101,7 @@ type cmdManifestWrapperOptions struct { useBootstrapIfNeeded bool } -func cmdManifestWrapper(pbar progress.ProgressBar, cmd *cobra.Command, args []string, w io.Writer, wrapperOpts *cmdManifestWrapperOptions) (*imagefilter.Result, error) { +func cmdManifestWrapper(pbar progress.ProgressBar, cmd *cobra.Command, args []string, w io.Writer, wd io.Writer, wrapperOpts *cmdManifestWrapperOptions) (*imagefilter.Result, error) { if wrapperOpts == nil { wrapperOpts = &cmdManifestWrapperOptions{} } @@ -207,7 +207,7 @@ func cmdManifestWrapper(pbar progress.ProgressBar, cmd *cobra.Command, args []st fmt.Fprintf(os.Stderr, "WARNING: using experimental cross-architecture building to build %q\n", img.Arch.Name()) } - err = generateManifest(dataDir, extraRepos, img, w, opts) + err = generateManifest(dataDir, extraRepos, img, w, wd, opts) return img, err } @@ -216,7 +216,7 @@ func cmdManifest(cmd *cobra.Command, args []string) error { if err != nil { return err } - _, err = cmdManifestWrapper(pbar, cmd, args, osStdout, nil) + _, err = cmdManifestWrapper(pbar, cmd, args, osStdout, osStderr, nil) return err } @@ -287,7 +287,10 @@ func cmdBuild(cmd *cobra.Command, args []string) error { opts := &cmdManifestWrapperOptions{ useBootstrapIfNeeded: true, } - res, err := cmdManifestWrapper(pbar, cmd, args, &mf, opts) + + // We discard any warnings from the depsolver until we figure out a better + // idea (likely in manifestgen) + res, err := cmdManifestWrapper(pbar, cmd, args, &mf, io.Discard, opts) if err != nil { return err } diff --git a/cmd/image-builder/manifest.go b/cmd/image-builder/manifest.go index 4d9e884..2508bd6 100644 --- a/cmd/image-builder/manifest.go +++ b/cmd/image-builder/manifest.go @@ -46,17 +46,18 @@ func sbomWriter(outputDir, filename string, content io.Reader) error { return nil } -func generateManifest(dataDir string, extraRepos []string, img *imagefilter.Result, output io.Writer, opts *manifestOptions) error { +func generateManifest(dataDir string, extraRepos []string, img *imagefilter.Result, output io.Writer, depsolveWarningsOutput io.Writer, opts *manifestOptions) error { repos, err := newRepoRegistry(dataDir, extraRepos) if err != nil { return err } // XXX: add --rpmmd/cachedir option like bib manifestGenOpts := &manifestgen.Options{ - Output: output, - RpmDownloader: opts.RpmDownloader, - UseBootstrapContainer: opts.UseBootstrapContainer, - CustomSeed: opts.CustomSeed, + Output: output, + DepsolveWarningsOutput: depsolveWarningsOutput, + RpmDownloader: opts.RpmDownloader, + UseBootstrapContainer: opts.UseBootstrapContainer, + CustomSeed: opts.CustomSeed, } if opts.WithSBOM { outputDir := basenameFor(img, opts.OutputDir)