github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/pkg/uroot/builder/builder.go (about) 1 // Copyright 2015-2017 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package builder 6 7 import ( 8 "github.com/u-root/u-root/pkg/golang" 9 "github.com/u-root/u-root/pkg/uroot/initramfs" 10 ) 11 12 var ( 13 BusyBox = BBBuilder{} 14 Source = SourceBuilder{} 15 Binary = BinaryBuilder{} 16 ) 17 18 // Opts are options passed to the Builder.Build function. 19 type Opts struct { 20 // Env is the Go compiler environment. 21 Env golang.Environ 22 23 // Packages are the Go packages to compile. 24 // 25 // Only an explicit list of Go import paths is accepted. 26 // 27 // E.g. cmd/go or github.com/u-root/u-root/cmds/ls. 28 Packages []string 29 30 // TempDir is a temporary directory where the compilation mode compiled 31 // binaries can be placed. 32 // 33 // TempDir should contain no files. 34 TempDir string 35 36 // BinaryDir is the initramfs directory for built binaries. 37 // 38 // BinaryDir must be specified. 39 BinaryDir string 40 41 // NoStrip builds unstripped binaries. 42 NoStrip bool 43 } 44 45 // Builder builds Go packages and adds the binaries to an initramfs. 46 // 47 // The resulting files need not be binaries per se, but exec'ing the resulting 48 // file should result in the Go program being executed. 49 type Builder interface { 50 // Build uses the given options to build Go packages and adds its files 51 // to be included in the initramfs to the given ArchiveFiles. 52 Build(*initramfs.Files, Opts) error 53 54 // DefaultBinaryDir is the initramfs' default directory for binaries 55 // built using this builder. 56 DefaultBinaryDir() string 57 }