package solver import ( "github.com/osbuild/images/pkg/arch" "github.com/osbuild/images/pkg/bib/osinfo" "github.com/particle-os/debian-bootc-image-builder/bib/internal/aptsolver" ) // Solver interface for Debian package dependency resolution type Solver interface { Depsolve(packages []string, maxAttempts int) (interface{}, error) GetArch() arch.Arch GetOSInfo() *osinfo.Info } // AptSolverWrapper wraps our apt solver type AptSolverWrapper struct { *aptsolver.AptSolver } // NewAptSolver creates a new apt solver func NewAptSolver(cacheDir string, arch arch.Arch, osInfo *osinfo.Info) *AptSolverWrapper { return &AptSolverWrapper{ AptSolver: aptsolver.NewAptSolver(cacheDir, arch, osInfo), } } // Depsolve resolves package dependencies using apt func (s *AptSolverWrapper) Depsolve(packages []string, maxAttempts int) (interface{}, error) { return s.AptSolver.Depsolve(packages, maxAttempts) } // GetArch returns the architecture for this solver func (s *AptSolverWrapper) GetArch() arch.Arch { return s.AptSolver.GetArch() } // GetOSInfo returns the OS information for this solver func (s *AptSolverWrapper) GetOSInfo() *osinfo.Info { return s.AptSolver.GetOSInfo() } // NewSolver creates a Debian-focused solver func NewSolver(osInfo *osinfo.Info, cacheDir string, arch arch.Arch) (Solver, error) { // For now, we'll always use the APT solver since this is a Debian fork // In the future, we could add support for other Debian-based distributions return NewAptSolver(cacheDir, arch, osInfo), nil }