Documentation ¶
Overview ¶
Package inputprocessor is used to find non-obvious inputs for action types like C++ compile, Java compile, C++ link etc.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrIPTimeout is an error returned when IP action times out ErrIPTimeout = errors.New("Input Processor timeout") )
Functions ¶
This section is empty.
Types ¶
type CommandIO ¶
type CommandIO struct { // InputSpec holds information about files and environment variables required to // run the command. InputSpec *command.InputSpec // OutputFiles is a list of output files produced by the command. OutputFiles []string // OutputDirectories is a list of output directories produced by the command. OutputDirectories []string // EmiitedDependencyFile is the name of the dependency file produced by the command. EmittedDependencyFile string // UsedShallowMode indicates whether the shallow input processor was used to // determine inputs. UsedShallowMode bool }
CommandIO encapsulates the inputs and outputs a command. All paths are relative to the exec root.
type Executor ¶
type Executor interface { Execute(ctx context.Context, cmd *command.Command) (string, string, error) ExecuteInBackground(ctx context.Context, cmd *command.Command, oe outerr.OutErr, ch chan *command.Result) error }
Executor can run commands and retrieve their outputs.
type InputProcessor ¶
type InputProcessor struct {
// contains filtered or unexported fields
}
InputProcessor retrieves the input spec for commands.
func NewInputProcessor ¶
func NewInputProcessor(ctx context.Context, executor Executor, resMgr *localresources.Manager, fmc filemetadata.Cache, l *logger.Logger, opt *Options) (*InputProcessor, func(), error)
NewInputProcessor creates a new input processor. Its resources are bound by the local resources manager.
func NewInputProcessorWithStubDependencyScanner ¶
func NewInputProcessorWithStubDependencyScanner(ds cppcompile.CPPDependencyScanner, cppLinkDeepScan bool, executor Executor, resMgr *localresources.Manager) *InputProcessor
NewInputProcessorWithStubDependencyScanner creates a new input processor with given parallelism and a stub CPP dependency scanner. It is meant to be only used for testing.
func (*InputProcessor) ProcessInputs ¶
func (p *InputProcessor) ProcessInputs(ctx context.Context, opts *ProcessInputsOptions, rec *logger.LogRecord) (*CommandIO, error)
ProcessInputs receives a valid action command and returns the set of inputs needed to successfully run the command remotely. Also returns a struct of parsed flags and the .d file produced by the command if exists.
type Options ¶
type Options struct { EnableDepsCache bool CacheDir string LogDir string DepsCacheMaxMb int CppLinkDeepScan bool IPTimeout time.Duration DepsScannerAddress string ProxyServerAddress string }
Options adds extra control for the input processor
type ProcessInputsOptions ¶
type ProcessInputsOptions struct { // ExecutionID is the ID of the action. ExecutionID string // Cmd is the list of args. Cmd []string // WorkingDir is the working directory of the action. WorkingDir string // ExecRoot is the exec root of the action. ExecRoot string // Inputs is the InputSpec passed explicitly with the action request. Inputs *command.InputSpec // Labels is a map of label keys to values. Labels map[string]string // ToolchainInputs is a list of toolchain inputs in addition to the toolchains // inferred from the command. ToolchainInputs []string // WindowsCross indicates whether use linux worker for Windows. WindowsCross bool // ExecStrategy indicates which execution strategy was used ExecStrategy ppb.ExecutionStrategy_Value // CmdEnvironment captures the environment of the command to be executed, in the form "key=value" strings. CmdEnvironment []string }
ProcessInputsOptions encapsulates options for a ProcessInputs call.