builder

package
v0.19.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: Apache-2.0 Imports: 27 Imported by: 2

Documentation

Index

Constants

View Source
const (
	DriverDirectory = "/tmp/driver"
)

DriverDirectory is the directory the processor uses to store the driver.

Variables

View Source
var HeadersNotFoundErr = errors.New("kernel headers not found")

Functions

func GetResolvingURLs added in v0.15.0

func GetResolvingURLs(urls []string) ([]string, error)

func KernelDownloadScript added in v0.18.0

func KernelDownloadScript(b Builder,
	kernelurls []string,
	kr kernelrelease.KernelRelease,
	printer *output.Printer,
) (string, error)

KernelDownloadScript returns the script that will download and extract kernel headers

func LibsDownloadScript added in v0.18.0

func LibsDownloadScript(c Config) (string, error)

LibsDownloadScript returns the script that downloads and configures libs repo at requested commit/tag

func Script added in v0.9.6

Script retrieves the actually drivers building script

func Targets

func Targets() []string

Targets returns the list of all the supported targets.

Types

type Build

type Build struct {
	TargetType        Type
	KernelConfigData  string
	KernelRelease     string
	KernelVersion     string
	DriverVersion     string
	Architecture      string
	ModuleFilePath    string
	ProbeFilePath     string
	ModuleDriverName  string
	ModuleDeviceName  string
	BuilderImage      string
	BuilderRepos      []string
	ImagesListers     []ImagesLister
	KernelUrls        []string
	GCCVersion        string
	RepoOrg           string
	RepoName          string
	Images            ImagesMap
	RegistryName      string
	RegistryUser      string
	RegistryPassword  string
	RegistryPlainHTTP bool

	*output.Printer
}

Build contains the info about the on-going build.

func (*Build) ClientForRegistry added in v0.14.0

func (b *Build) ClientForRegistry(registry string) *auth.Client

func (*Build) GetBuilderImage added in v0.10.0

func (b *Build) GetBuilderImage() string

func (*Build) KernelReleaseFromBuildConfig added in v0.9.3

func (b *Build) KernelReleaseFromBuildConfig() kernelrelease.KernelRelease

func (*Build) LoadImages added in v0.12.0

func (b *Build) LoadImages()

func (*Build) ToConfig added in v0.10.0

func (b *Build) ToConfig() Config

type Builder

type Builder interface {
	Name() string
	TemplateKernelUrlsScript() string
	TemplateScript() string
	URLs(kr kernelrelease.KernelRelease) ([]string, error)
	KernelTemplateData(kr kernelrelease.KernelRelease, urls []string) interface{} // error return type is managed
}

Builder represents a builder capable of generating a script for a driverkit target.

func Factory

func Factory(target Type) (Builder, error)

Factory returns a builder for the given target.

type BuilderImageNetworkMode added in v0.16.1

type BuilderImageNetworkMode interface {
	// sets the network mode of the builder image, allows individual builders to override
	BuilderImageNetMode() string
}

type Config

type Config struct {
	DriverName      string
	DeviceName      string
	DownloadBaseURL string
	*Build
}

Config contains all the configurations needed to build the kernel module or the eBPF probe.

func (Config) ToDriverFullPath added in v0.17.0

func (c Config) ToDriverFullPath() string

func (Config) ToProbeFullPath added in v0.17.0

func (c Config) ToProbeFullPath() string

type FileImagesLister added in v0.13.0

type FileImagesLister struct {
	FilePath string
	Arch     string
	Tag      string
	Target   string
}

func NewFileImagesLister added in v0.13.0

func NewFileImagesLister(filePath string, build *Build) (*FileImagesLister, error)

func (*FileImagesLister) LoadImages added in v0.13.0

func (f *FileImagesLister) LoadImages(printer *output.Printer) []Image

type GCCVersionRequestor added in v0.10.0

type GCCVersionRequestor interface {
	// GCCVersion returns the GCC version to be used.
	// If the returned value is empty, the default algorithm will be enforced.
	GCCVersion(kr kernelrelease.KernelRelease) semver.Version
}

type Image added in v0.10.0

type Image struct {
	Target     Type
	GCCVersion semver.Version // we expect images to internally link eg: gcc5 to gcc5.0.0
	Name       string
}

type ImageKey added in v0.12.0

type ImageKey string

type ImagesLister added in v0.13.0

type ImagesLister interface {
	LoadImages(printer *output.Printer) []Image
}

type ImagesMap added in v0.12.0

type ImagesMap map[ImageKey]Image

type LocalBuilder added in v0.16.0

type LocalBuilder struct {
	GccPath string
	UseDKMS bool
	SrcDir  string
}

func (*LocalBuilder) GetDriverBuildDir added in v0.16.0

func (l *LocalBuilder) GetDriverBuildDir() string

func (*LocalBuilder) GetModuleFullPath added in v0.16.0

func (l *LocalBuilder) GetModuleFullPath(c Config, kr kernelrelease.KernelRelease) string

func (*LocalBuilder) GetProbeFullPath added in v0.17.0

func (l *LocalBuilder) GetProbeFullPath(c Config) string

func (*LocalBuilder) KernelTemplateData added in v0.18.0

func (l *LocalBuilder) KernelTemplateData(_ kernelrelease.KernelRelease, _ []string) interface{}

func (*LocalBuilder) MinimumURLs added in v0.16.0

func (l *LocalBuilder) MinimumURLs() int

func (*LocalBuilder) Name added in v0.16.0

func (l *LocalBuilder) Name() string

func (*LocalBuilder) TemplateData added in v0.16.0

func (l *LocalBuilder) TemplateData(c Config, kr kernelrelease.KernelRelease) interface{}

func (*LocalBuilder) TemplateKernelUrlsScript added in v0.18.0

func (l *LocalBuilder) TemplateKernelUrlsScript() string

func (*LocalBuilder) TemplateScript added in v0.16.0

func (l *LocalBuilder) TemplateScript() string

func (*LocalBuilder) URLs added in v0.16.0

type MinimumURLsBuilder added in v0.9.6

type MinimumURLsBuilder interface {
	MinimumURLs() int
}

MinimumURLsBuilder is an optional interface implemented by builders to specify minimum number of requested headers urls

type RepoImagesLister added in v0.13.0

type RepoImagesLister struct {
	*repository.Repository
}

func NewRepoImagesLister added in v0.13.0

func NewRepoImagesLister(repo string, build *Build) (*RepoImagesLister, error)

func (*RepoImagesLister) LoadImages added in v0.13.0

func (repo *RepoImagesLister) LoadImages(printer *output.Printer) []Image

type TemplateDataSpecifier added in v0.18.0

type TemplateDataSpecifier interface {
	TemplateData(c Config, kr kernelrelease.KernelRelease) interface{}
}

TemplateDataSpecifier is an optional interface implemented by builders to specify a custom template data instead of the default one.

type Type

type Type string

Type is a type representing targets.

const TargetTypeAlinux Type = "alinux"

TargetTypeAlinux identifies the AliyunLinux 2 and 3 target.

const TargetTypeAlma Type = "almalinux"

TargetTypeAlma identifies the AlmaLinux target.

const TargetTypeAmazonLinux Type = "amazonlinux"

TargetTypeAmazonLinux identifies the AmazonLinux target.

const TargetTypeAmazonLinux2 Type = "amazonlinux2"

TargetTypeAmazonLinux2 identifies the AmazonLinux2 target.

const TargetTypeAmazonLinux2022 Type = "amazonlinux2022"

TargetTypeAmazonLinux2022 identifies the AmazonLinux2022 target.

const TargetTypeAmazonLinux2023 Type = "amazonlinux2023"

TargetTypeAmazonLinux2023 identifies the AmazonLinux2023 target.

const TargetTypeArchlinux Type = "arch"

TargetTypeArchlinux identifies the Archlinux target.

const TargetTypeBottlerocket Type = "bottlerocket"

TargetTypeBottlerocket identifies the Bottlerocket target.

const TargetTypeCentos Type = "centos"

TargetTypeCentos identifies the Centos target.

const TargetTypeDebian Type = "debian"

TargetTypeDebian identifies the Debian target.

const TargetTypeFedora Type = "fedora"

TargetTypeFedora identifies the Fedora target.

const TargetTypeFlatcar Type = "flatcar"

TargetTypeFlatcar identifies the Flatcar target.

const TargetTypeMinikube Type = "minikube"

TargetTypeMinikube identifies the Minikube target.

const TargetTypeOpenSUSE Type = "opensuse"

TargetTypeOpenSUSE identifies the OpenSUSE target.

const TargetTypePhoton Type = "photon"

TargetTypePhoton identifies the Photon target.

const TargetTypeRedhat Type = "redhat"

TargetTypeRedhat identifies the redhat target.

const TargetTypeRocky Type = "rocky"

TargetTypeRocky identifies the Rocky target.

const TargetTypeSLES Type = "sles"

TargetTypeSLES identifies the sles target.

const TargetTypeTalos Type = "talos"

TargetTypeTalos identifies the Talos target.

const TargetTypeUbuntu Type = "ubuntu"

TargetTypeUbuntu identifies the Ubuntu target.

const TargetTypeVanilla Type = "vanilla"

TargetTypeVanilla identifies the Vanilla target.

const TargetTypeoracle Type = "ol"

TargetTypeoracle identifies the oracle target ("ol" is the ID from /etc/os-release that Oracle uses)

func (Type) String

func (t Type) String() string

type YAMLImage added in v0.13.0

type YAMLImage struct {
	Target      string   `yaml:"target"`
	GCCVersions []string `yaml:"gcc_versions"` // we expect images to internally link eg: gcc5 to gcc5.0.0
	Name        string   `yaml:"name"`
	Arch        string   `yaml:"arch"`
	Tag         string   `yaml:"tag"`
}

type YAMLImagesList added in v0.13.0

type YAMLImagesList struct {
	Images []YAMLImage `yaml:"images"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL