Documentation ¶
Overview ¶
Package inputprocessor contains code for processing actions to determine their inputs/outputs.
Index ¶
- type ActionSpec
- type BasePreprocessor
- func (c *BasePreprocessor) AppendSpec(s *ActionSpec)
- func (c *BasePreprocessor) ComputeSpec() error
- func (c *BasePreprocessor) Error() error
- func (c *BasePreprocessor) FilterInputsUnderExecRoot()
- func (c *BasePreprocessor) FilterVirtualInputs()
- func (c *BasePreprocessor) FlagsToActionSpec()
- func (c *BasePreprocessor) Init(options Options)
- func (c *BasePreprocessor) ParseFlags() error
- func (c *BasePreprocessor) ProcessToolchains() error
- func (c *BasePreprocessor) RewriteEnvironmentVariables()
- func (c *BasePreprocessor) Sanitize()
- func (c *BasePreprocessor) Spec() (*ActionSpec, error)
- type Executor
- type Options
- type Preprocessor
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActionSpec ¶
type ActionSpec 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 }
ActionSpec encapsulates the inputs and outputs a command. All paths are relative to the exec root.
func Compute ¶
func Compute(p Preprocessor, options Options) (*ActionSpec, error)
Compute computes the ActionSpec using the given preprocessor and options.
type BasePreprocessor ¶
type BasePreprocessor struct { // Ctx is the context to use for internal preprocessing actions. Ctx context.Context // Executor is an entity that can execute commands on the local system. Executor Executor // ResourceManager manages available local resources to ensure local operations do not // overwhelm the machine. ResourceManager *localresources.Manager // Options is the options used to initialize the preprocessor. Should not change once the // preprocessor is initialized. Options Options // Flags is the set of flags determined from parsing the command. Should not change once // ParseFlags has been called. Flags *flags.CommandFlags // Err is an error encountered during preprocessing. An action that has an error could // not be remotely executed or cached. Err error // FileMetadataCache is used to obtain the metadata of files. FileMetadataCache filemetadata.Cache // NormalizedFileCache is used to cache normalized paths. NormalizedFileCache *cache.SingleFlight // FileStatCache caches the results of os.Stat calls. FileStatCache *cache.SingleFlight // contains filtered or unexported fields }
BasePreprocessor is the base preprocessor with commonly objects and preprocessing logic.
func (*BasePreprocessor) AppendSpec ¶
func (c *BasePreprocessor) AppendSpec(s *ActionSpec)
AppendSpec appends the given ActionSpec to the ActionSpec stored in the preprocessor.
func (*BasePreprocessor) ComputeSpec ¶
func (c *BasePreprocessor) ComputeSpec() error
ComputeSpec computes any further action specification that is not immediately inferrable from flags or toolchain configuration.
func (*BasePreprocessor) Error ¶
func (c *BasePreprocessor) Error() error
Error returns the fatal error encountered during input processing if exists.
func (*BasePreprocessor) FilterInputsUnderExecRoot ¶
func (c *BasePreprocessor) FilterInputsUnderExecRoot()
FilterInputsUnderExecRoot removes any inputs that do not exist under the exec root.
func (*BasePreprocessor) FilterVirtualInputs ¶
func (c *BasePreprocessor) FilterVirtualInputs()
FilterVirtualInputs removes virtual inputs that are not physically existing directories.
func (*BasePreprocessor) FlagsToActionSpec ¶
func (c *BasePreprocessor) FlagsToActionSpec()
FlagsToActionSpec populates the ActionSpec struct with inputs parsed fromt the command flags.
func (*BasePreprocessor) Init ¶
func (c *BasePreprocessor) Init(options Options)
Init initializes the preprocessor with the given options.
func (*BasePreprocessor) ParseFlags ¶
func (c *BasePreprocessor) ParseFlags() error
ParseFlags parses the commands flags and populates the ActionSpec object with inferred information.
func (*BasePreprocessor) ProcessToolchains ¶
func (c *BasePreprocessor) ProcessToolchains() error
ProcessToolchains determines toolchain inputs required for the command.
func (*BasePreprocessor) RewriteEnvironmentVariables ¶
func (c *BasePreprocessor) RewriteEnvironmentVariables()
RewriteEnvironmentVariables makes all environment variables specified in the input spec relative to the working directory.
func (*BasePreprocessor) Sanitize ¶
func (c *BasePreprocessor) Sanitize()
Sanitize cleans up the spec by removing unwanted entries. Normally this includes deduping and removing non-existent inputs.
func (*BasePreprocessor) Spec ¶
func (c *BasePreprocessor) Spec() (*ActionSpec, error)
Spec retrieves the ActionSpec currently inferred for the options passed to the context. For complete input/output processing, call ComputeSpec first.
type Executor ¶
type Executor interface {
Execute(ctx context.Context, cmd *command.Command) (string, string, error)
}
Executor can run commands and retrieve their outputs.
type Options ¶
type Options 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 // ShallowFallback indicates whether preprocessing is allowed to fallback to shallow // mode if an error is encountered. ShallowFallback bool // WindowsCross indicates whether to use Linux worker for Windows. WindowsCross bool }
Options encapsulates options for initializing a preprocessor.
type Preprocessor ¶
type Preprocessor interface { // Init initializes the preprocessor with the given options. Init(options Options) // ParseFlags parses the commands flags and populates the ActionSpec object with inferred // information. Returning an error means preprocessing should not continue, and the user // should Sanitize() the currently processed ActionSpec and then read it if available using // Spec(). ParseFlags() error // ProcessToolchains determines toolchain inputs required for the command. Returning an // error means preprocessing should not continue, and the user should Sanitize() the // currently processed ActionSpec and then read it if available using Spec(). ProcessToolchains() error // ComputeSpec computes any further action specification that is not immediately inferrable // from flags or toolchain configuration. Returning an error means preprocessing should not // continue, and the user should Sanitize() the currently processed ActionSpec and then read // it if available using Spec(). ComputeSpec() error // Sanitize cleans up the spec by removing unwanted entries. Normally this includes // deduping and removing non-existent inputs. Sanitize() // Spec retrieves the ActionSpec currently inferred for the options passed to the // context. Spec() (*ActionSpec, error) // Error returns the fatal error encountered during preprocessing, if exists. Error() error }
Preprocessor is an interface for determining specs of an action. Refer to Compute() below to see how implementers of the interface should be called.
Directories ¶
Path | Synopsis |
---|---|
action
|
|
clangcl
Package clangcl performs include processing given a valid clangCl action.
|
Package clangcl performs include processing given a valid clangCl action. |
clanglink
Package clanglink performs include processing given a valid clang link action.
|
Package clanglink performs include processing given a valid clang link action. |
clanglint
Package clanglint performs include processing given a valid clang-tidy action.
|
Package clanglint performs include processing given a valid clang-tidy action. |
headerabi
Package headerabi performs include processing given a valid ABI header dump action.
|
Package headerabi performs include processing given a valid ABI header dump action. |
javac
Package javac performs include processing given a valid javac action.
|
Package javac performs include processing given a valid javac action. |
nacl
Package nacl performs include processing given a valid nacl action.
|
Package nacl performs include processing given a valid nacl action. |
r8
Package r8 performs include processing of r8 actions.
|
Package r8 performs include processing of r8 actions. |
Package clangparser provides functionalities to understand clang-family command line flags.
|
Package clangparser provides functionalities to understand clang-family command line flags. |
gen_clang_flags
Binary gen_clang_flags generates clang_flags.go from Options.td json output.
|
Binary gen_clang_flags generates clang_flags.go from Options.td json output. |
Package flags provides structs for holding information about an action's command flags.
|
Package flags provides structs for holding information about an action's command flags. |
Package flagsparser provides functionalities to understand command line flags associated with various action types so that they can be used during input processing.
|
Package flagsparser provides functionalities to understand command line flags associated with various action types so that they can be used during input processing. |
Package toolchain is responsible for determining the toolchain inputs for a specific command.
|
Package toolchain is responsible for determining the toolchain inputs for a specific command. |