1
0

refactor: move container generation to distro modules

This commit is contained in:
2023-05-23 13:20:48 +00:00
parent ff7bed76f2
commit a1999115db
12 changed files with 212 additions and 152 deletions

View File

@ -60,6 +60,16 @@ func (d Debian) Equal(dd distro.Distro) bool {
}
func (d Debian) Packages() (packages []string, err error) {
c, err := container.New(d.container)
if err != nil {
return
}
err = c.Build(d.image(), d.envs(), d.runs())
if err != nil {
return
}
kernels, err := GetKernels()
if err != nil {
log.Error().Err(err).Msg("get kernels")
@ -178,15 +188,15 @@ func kernelRelease(deb string) (r Release, err error) {
return
}
func Envs(km config.Target) (envs []string) {
func (d Debian) envs() (envs []string) {
envs = append(envs, "DEBIAN_FRONTEND=noninteractive")
return
}
func ContainerImage(km config.Target) (image string) {
func (d Debian) image() (image string) {
image += "debian:"
switch ReleaseFromString(km.Distro.Release) {
switch d.release {
case Wheezy:
image += "wheezy-20190228"
case Jessie:
@ -194,7 +204,7 @@ func ContainerImage(km config.Target) (image string) {
case Stretch:
image += "stretch-20220622"
default:
image += km.Distro.Release
image += d.release.String()
}
return
@ -231,14 +241,12 @@ func repositories(release Release) (repos []string) {
return
}
func Runs(km config.Target) (commands []string) {
release := ReleaseFromString(km.Distro.Release)
func (d Debian) runs() (commands []string) {
cmdf := func(f string, s ...interface{}) {
commands = append(commands, fmt.Sprintf(f, s...))
}
repos := repositories(release)
repos := repositories(d.release)
if len(repos) != 0 {
cmdf("rm /etc/apt/sources.list")
@ -260,7 +268,7 @@ func Runs(km config.Target) (commands []string) {
"'^(gcc-[0-9].[0-9]|gcc-[0-9])$'",
}
if release < 9 {
if d.release < 9 {
pkglist = append(pkglist, "module-init-tools")
}

View File

@ -2,6 +2,10 @@ package debian
import (
"testing"
"github.com/stretchr/testify/assert"
"code.dumpstack.io/tools/out-of-tree/distro"
)
func TestKernelRelease(t *testing.T) {
@ -38,3 +42,16 @@ func TestKernelRelease(t *testing.T) {
}
}
}
func TestDebian(t *testing.T) {
assert := assert.New(t)
u := Debian{release: Wheezy, container: "out_of_tree_debian_7"}
assert.Equal(u.ID(), distro.Debian)
assert.Equal(u.Release(), "wheezy")
assert.True(u.Equal(distro.Distro{Release: "wheezy", ID: distro.Debian}))
assert.NotEmpty(u.Packages())
}