pkg build, const ArchitectureAmd64 Architecture
pkg build, const ArchitectureArm Architecture
pkg build, const ArchitectureX86 Architecture
pkg build, const FormatElf Format
pkg build, const FormatMach Format
pkg build, const FormatPe Format
pkg build, const OperatingSystemAndroid OperatingSystem
pkg build, const OperatingSystemDarwin OperatingSystem
pkg build, const OperatingSystemLinux OperatingSystem
pkg build, const OperatingSystemWindows OperatingSystem
pkg build, func ArchitectureFromString(string) (Architecture, error)
pkg build, func BuilderClient(string) BuilderClientStub
pkg build, func BuilderServer(BuilderServerMethods) BuilderServerStub
pkg build, func FormatFromString(string) (Format, error)
pkg build, func OperatingSystemFromString(string) (OperatingSystem, error)
pkg build, method (*Architecture) Set(string) error
pkg build, method (*Architecture) SetFromGoArch(string) error
pkg build, method (*BuilderBuildServerCallStub) Init(rpc.StreamServerCall)
pkg build, method (*BuilderBuildServerCallStub) RecvStream() interface {  Advance() bool; Value() File; Err() error;}
pkg build, method (*BuilderBuildServerCallStub) SendStream() interface {  Send(item File) error;}
pkg build, method (*Format) Set(string) error
pkg build, method (*OperatingSystem) Set(string) error
pkg build, method (*OperatingSystem) SetFromGoOS(string) error
pkg build, method (Architecture) String() string
pkg build, method (Architecture) ToGoArch() string
pkg build, method (Format) String() string
pkg build, method (OperatingSystem) String() string
pkg build, method (OperatingSystem) ToGoOS() string
pkg build, type Architecture int
pkg build, type BuilderBuildClientCall interface { Finish, RecvStream, SendStream }
pkg build, type BuilderBuildClientCall interface, Finish() ([]byte, error)
pkg build, type BuilderBuildClientCall interface, RecvStream() interface {  Advance() bool;; Value() File;; Err() error;}
pkg build, type BuilderBuildClientCall interface, SendStream() interface {  Send(item File) error;; Close() error;}
pkg build, type BuilderBuildClientStream interface { RecvStream, SendStream }
pkg build, type BuilderBuildClientStream interface, RecvStream() interface {  Advance() bool;; Value() File;; Err() error;}
pkg build, type BuilderBuildClientStream interface, SendStream() interface {  Send(item File) error;; Close() error;}
pkg build, type BuilderBuildServerCall interface { GrantedBlessings, LocalEndpoint, RecvStream, RemoteEndpoint, Security, SendStream, Server, Suffix }
pkg build, type BuilderBuildServerCall interface, GrantedBlessings() security.Blessings
pkg build, type BuilderBuildServerCall interface, LocalEndpoint() naming.Endpoint
pkg build, type BuilderBuildServerCall interface, RecvStream() interface {  Advance() bool;; Value() File;; Err() error;}
pkg build, type BuilderBuildServerCall interface, RemoteEndpoint() naming.Endpoint
pkg build, type BuilderBuildServerCall interface, Security() security.Call
pkg build, type BuilderBuildServerCall interface, SendStream() interface {  Send(item File) error;}
pkg build, type BuilderBuildServerCall interface, Server() Server
pkg build, type BuilderBuildServerCall interface, Suffix() string
pkg build, type BuilderBuildServerCallStub struct
pkg build, type BuilderBuildServerCallStub struct, embedded rpc.StreamServerCall
pkg build, type BuilderBuildServerStream interface { RecvStream, SendStream }
pkg build, type BuilderBuildServerStream interface, RecvStream() interface {  Advance() bool;; Value() File;; Err() error;}
pkg build, type BuilderBuildServerStream interface, SendStream() interface {  Send(item File) error;}
pkg build, type BuilderClientMethods interface { Build, Describe }
pkg build, type BuilderClientMethods interface, Build(*context.T, Architecture, OperatingSystem, ...rpc.CallOpt) (BuilderBuildClientCall, error)
pkg build, type BuilderClientMethods interface, Describe(*context.T, string, ...rpc.CallOpt) (binary.Description, error)
pkg build, type BuilderClientStub interface { Build, Describe }
pkg build, type BuilderClientStub interface, Build(*context.T, Architecture, OperatingSystem, ...rpc.CallOpt) (BuilderBuildClientCall, error)
pkg build, type BuilderClientStub interface, Describe(*context.T, string, ...rpc.CallOpt) (binary.Description, error)
pkg build, type BuilderServerMethods interface { Build, Describe }
pkg build, type BuilderServerMethods interface, Build(*context.T, BuilderBuildServerCall, Architecture, OperatingSystem) ([]byte, error)
pkg build, type BuilderServerMethods interface, Describe(*context.T, rpc.ServerCall, string) (binary.Description, error)
pkg build, type BuilderServerStub interface { Build, Describe, Describe__ }
pkg build, type BuilderServerStub interface, Build(*context.T, *BuilderBuildServerCallStub, Architecture, OperatingSystem) ([]byte, error)
pkg build, type BuilderServerStub interface, Describe(*context.T, rpc.ServerCall, string) (binary.Description, error)
pkg build, type BuilderServerStub interface, Describe__() []rpc.InterfaceDesc
pkg build, type BuilderServerStubMethods interface { Build, Describe }
pkg build, type BuilderServerStubMethods interface, Build(*context.T, *BuilderBuildServerCallStub, Architecture, OperatingSystem) ([]byte, error)
pkg build, type BuilderServerStubMethods interface, Describe(*context.T, rpc.ServerCall, string) (binary.Description, error)
pkg build, type File struct
pkg build, type File struct, Contents []byte
pkg build, type File struct, Name string
pkg build, type Format int
pkg build, type OperatingSystem int
pkg build, var ArchitectureAll [...]Architecture
pkg build, var BuilderDesc rpc.InterfaceDesc
pkg build, var FormatAll [...]Format
pkg build, var OperatingSystemAll [...]OperatingSystem
