diff --git a/distro/debian/debian.go b/distro/debian/debian.go index 960f563..d6e1e3e 100644 --- a/distro/debian/debian.go +++ b/distro/debian/debian.go @@ -133,6 +133,18 @@ func (cn Release) String() string { func ReleaseFromString(s string) (r Release) { switch strings.ToLower(s) { + case "1", "buzz": + r = Buzz + case "2", "hamm": + r = Hamm + case "3", "woody": + r = Woody + case "4", "etch": + r = Etch + case "5", "lenny": + r = Lenny + case "6", "squeeze": + r = Squeeze case "7", "wheezy": r = Wheezy case "8", "jessie": diff --git a/distro/debian/kernel.go b/distro/debian/kernel.go index 61ddd64..4096ac1 100644 --- a/distro/debian/kernel.go +++ b/distro/debian/kernel.go @@ -125,24 +125,7 @@ func getDebianKernel(version string) (dk DebianKernel, err error) { s := strings.Replace(dk.Image.Name, "linux-image-", "", -1) dk.Version.ABI = strings.Replace(s, "-amd64", "", -1) - p := dk.Image - repos, err := metasnap.GetRepos(p.Repo.Archive, p.Name, p.Arch, version) - if err != nil { - flog.Debug().Err(err).Msg("ignore metasnap") - err = nil - } - for _, repo := range repos { - for _, release := range ReleaseStrings[1:] { - if strings.Contains(repo.Suite, release) { - dk.Release = ReleaseFromString(release) - break - } - } - - if dk.Release != None { - break - } - } + dk.Release = getRelease(dk.Image) if dk.Release == None { flog.Warn().Msg("release not found") } else { @@ -152,6 +135,25 @@ func getDebianKernel(version string) (dk DebianKernel, err error) { return } +func getRelease(p snapshot.Package) Release { + repos, err := metasnap.GetRepos(p.Repo.Archive, p.Name, p.Arch, p.Version) + if err != nil { + log.Debug().Err(err).Msg("metasnap") + return None + } + + for _, repo := range repos { + for _, rel := range ReleaseStrings[1:] { + switch repo.Suite { + case rel, rel + "-backports", rel + "-updates": + return ReleaseFromString(rel) + } + } + } + + return None +} + // GetCachedKernel by deb package name func getCachedKernel(deb string) (dk DebianKernel, err error) { c, err := NewCache(CachePath) diff --git a/distro/debian/kernel_test.go b/distro/debian/kernel_test.go index 3ff7492..c627c9b 100644 --- a/distro/debian/kernel_test.go +++ b/distro/debian/kernel_test.go @@ -4,17 +4,16 @@ import ( "testing" "github.com/davecgh/go-spew/spew" + "github.com/stretchr/testify/assert" ) func TestGetDebianKernel(t *testing.T) { - dk, err := getDebianKernel("4.17.14-1") - if err != nil { - t.Fatal(err) - } + assert := assert.New(t) - if dk.Version.ABI != "4.17.0-2" { - t.Fatalf("wrong abi") - } + dk, err := getDebianKernel("4.6.4-1") + assert.Nil(err) + + assert.Equal(getRelease(dk.Image), Stretch) t.Logf("%s", spew.Sdump(dk)) }