builder

package
v5.0.0-...-a64333a Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2018 License: BSD-3-Clause Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Builders = map[string]Builder{
	"bb":     BBBuilder{},
	"source": SourceBuilder{},
	"binary": BinaryBuilder{},
}

Functions

This section is empty.

Types

type BBBuilder

type BBBuilder struct{}

BBBuilder is an implementation of Builder that compiles many Go commands into one busybox-style binary.

func (BBBuilder) Build

func (BBBuilder) Build(af initramfs.Files, opts Opts) error

Build is an implementation of uroot.Builder.Build for a busybox-like initramfs.

Build rewrites the source files of the packages given to create one busybox-like binary containing all commands in opts.Packages.

See bb/README.md for a detailed explanation of busybox mode.

func (BBBuilder) DefaultBinaryDir

func (BBBuilder) DefaultBinaryDir() string

type BinaryBuilder

type BinaryBuilder struct{}

func (BinaryBuilder) Build

func (BinaryBuilder) Build(af initramfs.Files, opts Opts) error

Build builds all given packages as separate binaries and includes them in the archive.

func (BinaryBuilder) DefaultBinaryDir

func (BinaryBuilder) DefaultBinaryDir() string

type Builder

type Builder interface {
	// Build uses the given options to build Go packages and adds its files
	// to be included in the initramfs to the given ArchiveFiles.
	Build(initramfs.Files, Opts) error

	// DefaultBinaryDir is the initramfs' default directory for binaries
	// built using this builder.
	DefaultBinaryDir() string
}

Builder builds Go packages and adds the binaries to an initramfs.

The resulting files need not be binaries per se, but exec'ing the resulting file should result in the Go program being executed.

func GetBuilder

func GetBuilder(name string) (Builder, error)

GetBuilder returns the Build function for the named build mode.

type Opts

type Opts struct {
	// Env is the Go compiler environment.
	Env golang.Environ

	// Packages are the Go packages to compile.
	//
	// Only an explicit list of Go import paths is accepted.
	//
	// E.g. cmd/go or github.com/u-root/u-root/cmds/ls.
	Packages []string

	// TempDir is a temporary directory where the compilation mode compiled
	// binaries can be placed.
	//
	// TempDir should contain no files.
	TempDir string

	// BinaryDir is the initramfs directory for built binaries.
	//
	// BinaryDir must be specified.
	BinaryDir string
}

Opts are arguments to the Builder.Build function.

type SourceBuilder

type SourceBuilder struct{}

SourceBuilder

func (SourceBuilder) Build

func (SourceBuilder) Build(af initramfs.Files, opts Opts) error

Build is an implementation of Build that includes opts.Packages' full source in the initramfs.

It then also includes the Go toolchain (go, compile, link, asm) and an init process that can compile other programs in the initramfs.

func (SourceBuilder) DefaultBinaryDir

func (SourceBuilder) DefaultBinaryDir() string

DefaultBinaryDir implements Builder.DefaultBinaryDir.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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