Skip to content

Commit

Permalink
Merge pull request #337 from DataDog/paulcacheux/opensuse-kernel-devel
Browse files Browse the repository at this point in the history
opensuse/sles: download both `kernel-<flavor>-devel` and `kernel-devel` when possible
  • Loading branch information
paulcacheux authored Oct 11, 2024
2 parents 9130a80 + 4922a28 commit 52c8328
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 12 deletions.
34 changes: 28 additions & 6 deletions rpm/opensuse.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,38 @@ func (b *OpenSUSEBackend) GetKernelHeaders(directory string) error {
}
pkgNevra += "-devel"

pkgMatcher := func(pkg *repo.PkgInfoHeader) bool {
return pkg.Name == pkgNevra && kernelRelease == fmt.Sprintf("%s-%s", pkg.Version.Ver, pkg.Version.Rel) && pkg.Arch == b.target.Uname.Machine
packagesToInstall := []string{pkgNevra}
if pkgNevra != "kernel-devel" {
packagesToInstall = append(packagesToInstall, "kernel-devel")
}

pkg, data, err := b.dnfBackend.FetchPackage(pkgMatcher)
if err != nil {
return fmt.Errorf("failed to fetch `%s` package: %w", pkgNevra, err)
installedPackages := 0
for _, targetPackageName := range packagesToInstall {
pkgMatcher := func(pkg *repo.PkgInfoHeader) bool {
return pkg.Name == targetPackageName &&
kernelRelease == fmt.Sprintf("%s-%s", pkg.Version.Ver, pkg.Version.Rel) &&
(pkg.Arch == b.target.Uname.Machine || pkg.Arch == "noarch")
}

pkg, data, err := b.dnfBackend.FetchPackage(pkgMatcher)
if err != nil {
b.logger.Errorf("failed to fetch `%s` package: %v", targetPackageName, err)
continue
}

if err := dnfv2.ExtractPackage(pkg, data, directory, b.target, b.logger); err != nil {
b.logger.Errorf("failed to extract `%s` package: %v", targetPackageName, err)
continue
}

installedPackages++
}

if installedPackages == 0 {
return fmt.Errorf("failed to find a valid package")
}

return dnfv2.ExtractPackage(pkg, data, directory, b.target, b.logger)
return nil
}

func (b *OpenSUSEBackend) Close() {
Expand Down
28 changes: 22 additions & 6 deletions rpm/sles.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,32 @@ type SLESBackend struct {

func (b *SLESBackend) GetKernelHeaders(directory string) error {
pkgNevra := "kernel" + b.flavour + "-devel"
pkgMatcher := func(pkg *repo.PkgInfoHeader) bool {
return pkg.Name == pkgNevra && b.kernelRelease == fmt.Sprintf("%s-%s", pkg.Version.Ver, pkg.Version.Rel) && pkg.Arch == b.target.Uname.Machine
packagesToInstall := []string{pkgNevra, "kernel-devel"}

installedPackages := 0
for _, targetPackageName := range packagesToInstall {
pkgMatcher := func(pkg *repo.PkgInfoHeader) bool {
return pkg.Name == targetPackageName &&
b.kernelRelease == fmt.Sprintf("%s-%s", pkg.Version.Ver, pkg.Version.Rel) &&
(pkg.Arch == b.target.Uname.Machine || pkg.Arch == "noarch")
}
pkg, data, err := b.dnfBackend.FetchPackage(pkgMatcher)
if err != nil {
return fmt.Errorf("failed to fetch `%s` package: %w", pkgNevra, err)
}

if err := dnfv2.ExtractPackage(pkg, data, directory, b.target, b.logger); err != nil {
return fmt.Errorf("failed to extract `%s` package: %w", pkgNevra, err)
}

installedPackages++
}

pkg, data, err := b.dnfBackend.FetchPackage(pkgMatcher)
if err != nil {
return fmt.Errorf("failed to fetch `%s` package: %w", pkgNevra, err)
if installedPackages == 0 {
return fmt.Errorf("failed to find a valid package")
}

return dnfv2.ExtractPackage(pkg, data, directory, b.target, b.logger)
return nil
}

func (b *SLESBackend) Close() {
Expand Down

0 comments on commit 52c8328

Please sign in to comment.