feat: match only stable debian releases, backports, and updates
This commit is contained in:
		| @@ -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": | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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)) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user