Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions cmd/image-builder/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"github.com/osbuild/images/pkg/customizations/subscription"
"github.com/osbuild/images/pkg/distro/bootc"
"github.com/osbuild/images/pkg/imagefilter"
"github.com/osbuild/images/pkg/manifestgen"
"github.com/osbuild/images/pkg/osbuild"
"github.com/osbuild/images/pkg/ostree"

Expand Down Expand Up @@ -138,6 +139,9 @@ type cmdManifestWrapperOptions struct {
useBootstrapIfNeeded bool
}

// used in tests
var manifestgenDepsolver manifestgen.DepsolveFunc

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{}
Expand Down Expand Up @@ -304,27 +308,31 @@ func cmdManifestWrapper(pbar progress.ProgressBar, cmd *cobra.Command, args []st
}

opts := &manifestOptions{
ManifestgenOptions: manifestgen.Options{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Frankly, I do not like Options suffix. We have one extreme when everything is SomethingCustomizations. I suggest to consider naming this just Manifestgen

Cachedir: rpmmdCacheDir,
CustomSeed: customSeed,
RpmDownloader: rpmDownloader,
DepsolveWarningsOutput: wd,
Depsolve: manifestgenDepsolver,
},
OutputDir: outputDir,
OutputFilename: outputFilename,
BlueprintPath: blueprintPath,
Ostree: ostreeImgOpts,
BootcRef: bootcRef,
BootcInstallerPayloadRef: bootcInstallerPayloadRef,
RpmDownloader: rpmDownloader,
WithSBOM: withSBOM,
IgnoreWarnings: ignoreWarnings,
CustomSeed: customSeed,
Subscription: subscription,
RpmmdCacheDir: rpmmdCacheDir,

ForceRepos: forceRepos,
}
opts.UseBootstrapContainer = wrapperOpts.useBootstrapIfNeeded && (img.ImgType.Arch().Name() != arch.Current().String())
if opts.UseBootstrapContainer {
opts.ManifestgenOptions.UseBootstrapContainer = wrapperOpts.useBootstrapIfNeeded && (img.ImgType.Arch().Name() != arch.Current().String())
if opts.ManifestgenOptions.UseBootstrapContainer {
fmt.Fprintf(os.Stderr, "WARNING: using experimental cross-architecture building to build %q\n", img.ImgType.Arch().Name())
}

err = generateManifest(dataDir, extraRepos, img, w, wd, opts)
err = generateManifest(dataDir, extraRepos, img, w, opts)
return img, err
}

Expand Down
21 changes: 5 additions & 16 deletions cmd/image-builder/manifest.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import (
)

type manifestOptions struct {
ManifestgenOptions manifestgen.Options

OutputDir string
OutputFilename string
BlueprintPath string
Expand All @@ -30,11 +32,8 @@ type manifestOptions struct {
RpmDownloader osbuild.RpmDownloader
WithSBOM bool
IgnoreWarnings bool
CustomSeed *int64
RpmmdCacheDir string

ForceRepos []string
UseBootstrapContainer bool
ForceRepos []string
}

func sbomWriter(outputDir, filename string, content io.Reader) error {
Expand All @@ -55,23 +54,13 @@ func sbomWriter(outputDir, filename string, content io.Reader) error {
return f.Sync()
}

// used in tests
var manifestgenDepsolver manifestgen.DepsolveFunc

// XXX: just return []byte instead of using output writer
func generateManifest(dataDir string, extraRepos []string, img *imagefilter.Result, output io.Writer, depsolveWarningsOutput io.Writer, opts *manifestOptions) error {
func generateManifest(dataDir string, extraRepos []string, img *imagefilter.Result, output io.Writer, opts *manifestOptions) error {
repos, err := newRepoRegistry(dataDir, extraRepos)
if err != nil {
return err
}
manifestGenOpts := &manifestgen.Options{
DepsolveWarningsOutput: depsolveWarningsOutput,
RpmDownloader: opts.RpmDownloader,
UseBootstrapContainer: opts.UseBootstrapContainer,
CustomSeed: opts.CustomSeed,
Depsolve: manifestgenDepsolver,
Cachedir: opts.RpmmdCacheDir,
}
manifestGenOpts := &opts.ManifestgenOptions
if opts.WithSBOM {
outputDir := basenameFor(img, opts.OutputDir)
manifestGenOpts.SBOMWriter = func(filename string, content io.Reader, docType sbom.StandardType) error {
Expand Down