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 <supakeen@redhat.com>
This commit is contained in:
Simon de Vlieger 2025-04-03 08:53:03 +02:00
parent bda86863ff
commit ad9943e99d
2 changed files with 13 additions and 9 deletions

View file

@ -101,7 +101,7 @@ type cmdManifestWrapperOptions struct {
useBootstrapIfNeeded bool 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 { if wrapperOpts == nil {
wrapperOpts = &cmdManifestWrapperOptions{} 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()) 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 return img, err
} }
@ -216,7 +216,7 @@ func cmdManifest(cmd *cobra.Command, args []string) error {
if err != nil { if err != nil {
return err return err
} }
_, err = cmdManifestWrapper(pbar, cmd, args, osStdout, nil) _, err = cmdManifestWrapper(pbar, cmd, args, osStdout, osStderr, nil)
return err return err
} }
@ -287,7 +287,10 @@ func cmdBuild(cmd *cobra.Command, args []string) error {
opts := &cmdManifestWrapperOptions{ opts := &cmdManifestWrapperOptions{
useBootstrapIfNeeded: true, 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 { if err != nil {
return err return err
} }

View file

@ -46,17 +46,18 @@ func sbomWriter(outputDir, filename string, content io.Reader) error {
return nil 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) repos, err := newRepoRegistry(dataDir, extraRepos)
if err != nil { if err != nil {
return err return err
} }
// XXX: add --rpmmd/cachedir option like bib // XXX: add --rpmmd/cachedir option like bib
manifestGenOpts := &manifestgen.Options{ manifestGenOpts := &manifestgen.Options{
Output: output, Output: output,
RpmDownloader: opts.RpmDownloader, DepsolveWarningsOutput: depsolveWarningsOutput,
UseBootstrapContainer: opts.UseBootstrapContainer, RpmDownloader: opts.RpmDownloader,
CustomSeed: opts.CustomSeed, UseBootstrapContainer: opts.UseBootstrapContainer,
CustomSeed: opts.CustomSeed,
} }
if opts.WithSBOM { if opts.WithSBOM {
outputDir := basenameFor(img, opts.OutputDir) outputDir := basenameFor(img, opts.OutputDir)