Loading android/hooks.go +4 −4 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ func (x *hooks) runArchHooks(ctx ArchHookContext, m *ModuleBase) { type InstallHookContext interface { ModuleContext Path() OutputPath Path() InstallPath Symlink() bool } Loading @@ -89,11 +89,11 @@ func AddInstallHook(m blueprint.Module, hook func(InstallHookContext)) { type installHookContext struct { ModuleContext path OutputPath path InstallPath symlink bool } func (x *installHookContext) Path() OutputPath { func (x *installHookContext) Path() InstallPath { return x.path } Loading @@ -101,7 +101,7 @@ func (x *installHookContext) Symlink() bool { return x.symlink } func (x *hooks) runInstallHooks(ctx ModuleContext, path OutputPath, symlink bool) { func (x *hooks) runInstallHooks(ctx ModuleContext, path InstallPath, symlink bool) { if len(x.install) > 0 { mctx := &installHookContext{ ModuleContext: ctx, Loading android/module.go +13 −13 Original line number Diff line number Diff line Loading @@ -147,10 +147,10 @@ type ModuleContext interface { ExpandSource(srcFile, prop string) Path ExpandOptionalSource(srcFile *string, prop string) OptionalPath InstallExecutable(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath InstallFile(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath InstallSymlink(installPath OutputPath, name string, srcPath OutputPath) OutputPath InstallAbsoluteSymlink(installPath OutputPath, name string, absPath string) OutputPath InstallExecutable(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath InstallFile(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath InstallSymlink(installPath InstallPath, name string, srcPath InstallPath) InstallPath InstallAbsoluteSymlink(installPath InstallPath, name string, absPath string) InstallPath CheckbuildFile(srcPath Path) InstallInData() bool Loading Loading @@ -1536,7 +1536,7 @@ func (m *moduleContext) InstallBypassMake() bool { return m.module.InstallBypassMake() } func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool { func (m *moduleContext) skipInstall(fullInstallPath InstallPath) bool { if m.module.base().commonProperties.SkipInstall { return true } Loading @@ -1561,18 +1561,18 @@ func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool { return false } func (m *moduleContext) InstallFile(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath { func (m *moduleContext) InstallFile(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath { return m.installFile(installPath, name, srcPath, Cp, deps) } func (m *moduleContext) InstallExecutable(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath { func (m *moduleContext) InstallExecutable(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath { return m.installFile(installPath, name, srcPath, CpExecutable, deps) } func (m *moduleContext) installFile(installPath OutputPath, name string, srcPath Path, rule blueprint.Rule, deps []Path) OutputPath { func (m *moduleContext) installFile(installPath InstallPath, name string, srcPath Path, rule blueprint.Rule, deps []Path) InstallPath { fullInstallPath := installPath.Join(m, name) m.module.base().hooks.runInstallHooks(m, fullInstallPath, false) Loading Loading @@ -1607,7 +1607,7 @@ func (m *moduleContext) installFile(installPath OutputPath, name string, srcPath return fullInstallPath } func (m *moduleContext) InstallSymlink(installPath OutputPath, name string, srcPath OutputPath) OutputPath { func (m *moduleContext) InstallSymlink(installPath InstallPath, name string, srcPath InstallPath) InstallPath { fullInstallPath := installPath.Join(m, name) m.module.base().hooks.runInstallHooks(m, fullInstallPath, true) Loading Loading @@ -1636,7 +1636,7 @@ func (m *moduleContext) InstallSymlink(installPath OutputPath, name string, srcP // installPath/name -> absPath where absPath might be a path that is available only at runtime // (e.g. /apex/...) func (m *moduleContext) InstallAbsoluteSymlink(installPath OutputPath, name string, absPath string) OutputPath { func (m *moduleContext) InstallAbsoluteSymlink(installPath InstallPath, name string, absPath string) InstallPath { fullInstallPath := installPath.Join(m, name) m.module.base().hooks.runInstallHooks(m, fullInstallPath, true) Loading android/notices.go +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ func MergeNotices(ctx ModuleContext, mergedNotice WritablePath, noticePaths []Pa }) } func BuildNoticeOutput(ctx ModuleContext, installPath OutputPath, installFilename string, func BuildNoticeOutput(ctx ModuleContext, installPath InstallPath, installFilename string, noticePaths []Path) NoticeOutputs { // Merge all NOTICE files into one. // TODO(jungjw): We should just produce a well-formatted NOTICE.html file in a single pass. Loading android/paths.go +50 −10 Original line number Diff line number Diff line Loading @@ -793,7 +793,7 @@ func (p SourcePath) OverlayPath(ctx ModuleContext, path Path) OptionalPath { return OptionalPathForPath(PathForSource(ctx, relPath)) } // OutputPath is a Path representing a file path rooted from the build directory // OutputPath is a Path representing an intermediates file path rooted from the build directory type OutputPath struct { basePath } Loading Loading @@ -824,12 +824,12 @@ func PathForOutput(ctx PathContext, pathComponents ...string) OutputPath { // pathForInstallInMakeDir is used by PathForModuleInstall when the module returns true // for InstallBypassMake to produce an OutputPath that installs to $OUT_DIR instead of // $OUT_DIR/soong. func pathForInstallInMakeDir(ctx PathContext, pathComponents ...string) OutputPath { func pathForInstallInMakeDir(ctx PathContext, pathComponents ...string) InstallPath { path, err := validatePath(pathComponents...) if err != nil { reportPathError(ctx, err) } return OutputPath{basePath{"../" + path, ctx.Config(), ""}} return InstallPath{basePath{"../" + path, ctx.Config(), ""}} } // PathsForOutput returns Paths rooted from buildDir Loading @@ -847,10 +847,6 @@ func (p OutputPath) String() string { return filepath.Join(p.config.buildDir, p.path) } func (p OutputPath) RelPathString() string { return p.path } // Join creates a new OutputPath with paths... joined with the current path. The // provided paths... may not use '..' to escape from the current path. func (p OutputPath) Join(ctx PathContext, paths ...string) OutputPath { Loading Loading @@ -1119,9 +1115,39 @@ func PathForModuleRes(ctx ModuleContext, pathComponents ...string) ModuleResPath return ModuleResPath{PathForModuleOut(ctx, "res", p)} } // InstallPath is a Path representing a installed file path rooted from the build directory type InstallPath struct { basePath } func (p InstallPath) writablePath() {} func (p InstallPath) String() string { return filepath.Join(p.config.buildDir, p.path) } // Join creates a new InstallPath with paths... joined with the current path. The // provided paths... may not use '..' to escape from the current path. func (p InstallPath) Join(ctx PathContext, paths ...string) InstallPath { path, err := validatePath(paths...) if err != nil { reportPathError(ctx, err) } return p.withRel(path) } func (p InstallPath) withRel(rel string) InstallPath { p.basePath = p.basePath.withRel(rel) return p } func (p InstallPath) RelPathString() string { return p.path } // PathForModuleInstall returns a Path representing the install path for the // module appended with paths... func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string) OutputPath { func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string) InstallPath { var outPaths []string if ctx.Device() { partition := modulePartition(ctx) Loading @@ -1144,10 +1170,24 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string if ctx.InstallBypassMake() && ctx.Config().EmbeddedInMake() { return pathForInstallInMakeDir(ctx, outPaths...) } return PathForOutput(ctx, outPaths...) path, err := validatePath(outPaths...) if err != nil { reportPathError(ctx, err) } return InstallPath{basePath{path, ctx.Config(), ""}} } func PathForNdkInstall(ctx PathContext, paths ...string) InstallPath { paths = append([]string{"ndk"}, paths...) path, err := validatePath(paths...) if err != nil { reportPathError(ctx, err) } return InstallPath{basePath{path, ctx.Config(), ""}} } func InstallPathToOnDevicePath(ctx PathContext, path OutputPath) string { func InstallPathToOnDevicePath(ctx PathContext, path InstallPath) string { rel := Rel(ctx, PathForOutput(ctx, "target", "product", ctx.Config().DeviceName()).String(), path.String()) return "/" + rel Loading android/prebuilt_etc.go +2 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ type PrebuiltEtc struct { installDirBase string // The base install location when soc_specific property is set to true, e.g. "firmware" for prebuilt_firmware. socInstallDirBase string installDirPath OutputPath installDirPath InstallPath additionalDependencies *Paths } Loading @@ -91,7 +91,7 @@ func (p *PrebuiltEtc) SourceFilePath(ctx ModuleContext) Path { return PathForModuleSrc(ctx, String(p.properties.Src)) } func (p *PrebuiltEtc) InstallDirPath() OutputPath { func (p *PrebuiltEtc) InstallDirPath() InstallPath { return p.installDirPath } Loading Loading
android/hooks.go +4 −4 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ func (x *hooks) runArchHooks(ctx ArchHookContext, m *ModuleBase) { type InstallHookContext interface { ModuleContext Path() OutputPath Path() InstallPath Symlink() bool } Loading @@ -89,11 +89,11 @@ func AddInstallHook(m blueprint.Module, hook func(InstallHookContext)) { type installHookContext struct { ModuleContext path OutputPath path InstallPath symlink bool } func (x *installHookContext) Path() OutputPath { func (x *installHookContext) Path() InstallPath { return x.path } Loading @@ -101,7 +101,7 @@ func (x *installHookContext) Symlink() bool { return x.symlink } func (x *hooks) runInstallHooks(ctx ModuleContext, path OutputPath, symlink bool) { func (x *hooks) runInstallHooks(ctx ModuleContext, path InstallPath, symlink bool) { if len(x.install) > 0 { mctx := &installHookContext{ ModuleContext: ctx, Loading
android/module.go +13 −13 Original line number Diff line number Diff line Loading @@ -147,10 +147,10 @@ type ModuleContext interface { ExpandSource(srcFile, prop string) Path ExpandOptionalSource(srcFile *string, prop string) OptionalPath InstallExecutable(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath InstallFile(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath InstallSymlink(installPath OutputPath, name string, srcPath OutputPath) OutputPath InstallAbsoluteSymlink(installPath OutputPath, name string, absPath string) OutputPath InstallExecutable(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath InstallFile(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath InstallSymlink(installPath InstallPath, name string, srcPath InstallPath) InstallPath InstallAbsoluteSymlink(installPath InstallPath, name string, absPath string) InstallPath CheckbuildFile(srcPath Path) InstallInData() bool Loading Loading @@ -1536,7 +1536,7 @@ func (m *moduleContext) InstallBypassMake() bool { return m.module.InstallBypassMake() } func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool { func (m *moduleContext) skipInstall(fullInstallPath InstallPath) bool { if m.module.base().commonProperties.SkipInstall { return true } Loading @@ -1561,18 +1561,18 @@ func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool { return false } func (m *moduleContext) InstallFile(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath { func (m *moduleContext) InstallFile(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath { return m.installFile(installPath, name, srcPath, Cp, deps) } func (m *moduleContext) InstallExecutable(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath { func (m *moduleContext) InstallExecutable(installPath InstallPath, name string, srcPath Path, deps ...Path) InstallPath { return m.installFile(installPath, name, srcPath, CpExecutable, deps) } func (m *moduleContext) installFile(installPath OutputPath, name string, srcPath Path, rule blueprint.Rule, deps []Path) OutputPath { func (m *moduleContext) installFile(installPath InstallPath, name string, srcPath Path, rule blueprint.Rule, deps []Path) InstallPath { fullInstallPath := installPath.Join(m, name) m.module.base().hooks.runInstallHooks(m, fullInstallPath, false) Loading Loading @@ -1607,7 +1607,7 @@ func (m *moduleContext) installFile(installPath OutputPath, name string, srcPath return fullInstallPath } func (m *moduleContext) InstallSymlink(installPath OutputPath, name string, srcPath OutputPath) OutputPath { func (m *moduleContext) InstallSymlink(installPath InstallPath, name string, srcPath InstallPath) InstallPath { fullInstallPath := installPath.Join(m, name) m.module.base().hooks.runInstallHooks(m, fullInstallPath, true) Loading Loading @@ -1636,7 +1636,7 @@ func (m *moduleContext) InstallSymlink(installPath OutputPath, name string, srcP // installPath/name -> absPath where absPath might be a path that is available only at runtime // (e.g. /apex/...) func (m *moduleContext) InstallAbsoluteSymlink(installPath OutputPath, name string, absPath string) OutputPath { func (m *moduleContext) InstallAbsoluteSymlink(installPath InstallPath, name string, absPath string) InstallPath { fullInstallPath := installPath.Join(m, name) m.module.base().hooks.runInstallHooks(m, fullInstallPath, true) Loading
android/notices.go +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ func MergeNotices(ctx ModuleContext, mergedNotice WritablePath, noticePaths []Pa }) } func BuildNoticeOutput(ctx ModuleContext, installPath OutputPath, installFilename string, func BuildNoticeOutput(ctx ModuleContext, installPath InstallPath, installFilename string, noticePaths []Path) NoticeOutputs { // Merge all NOTICE files into one. // TODO(jungjw): We should just produce a well-formatted NOTICE.html file in a single pass. Loading
android/paths.go +50 −10 Original line number Diff line number Diff line Loading @@ -793,7 +793,7 @@ func (p SourcePath) OverlayPath(ctx ModuleContext, path Path) OptionalPath { return OptionalPathForPath(PathForSource(ctx, relPath)) } // OutputPath is a Path representing a file path rooted from the build directory // OutputPath is a Path representing an intermediates file path rooted from the build directory type OutputPath struct { basePath } Loading Loading @@ -824,12 +824,12 @@ func PathForOutput(ctx PathContext, pathComponents ...string) OutputPath { // pathForInstallInMakeDir is used by PathForModuleInstall when the module returns true // for InstallBypassMake to produce an OutputPath that installs to $OUT_DIR instead of // $OUT_DIR/soong. func pathForInstallInMakeDir(ctx PathContext, pathComponents ...string) OutputPath { func pathForInstallInMakeDir(ctx PathContext, pathComponents ...string) InstallPath { path, err := validatePath(pathComponents...) if err != nil { reportPathError(ctx, err) } return OutputPath{basePath{"../" + path, ctx.Config(), ""}} return InstallPath{basePath{"../" + path, ctx.Config(), ""}} } // PathsForOutput returns Paths rooted from buildDir Loading @@ -847,10 +847,6 @@ func (p OutputPath) String() string { return filepath.Join(p.config.buildDir, p.path) } func (p OutputPath) RelPathString() string { return p.path } // Join creates a new OutputPath with paths... joined with the current path. The // provided paths... may not use '..' to escape from the current path. func (p OutputPath) Join(ctx PathContext, paths ...string) OutputPath { Loading Loading @@ -1119,9 +1115,39 @@ func PathForModuleRes(ctx ModuleContext, pathComponents ...string) ModuleResPath return ModuleResPath{PathForModuleOut(ctx, "res", p)} } // InstallPath is a Path representing a installed file path rooted from the build directory type InstallPath struct { basePath } func (p InstallPath) writablePath() {} func (p InstallPath) String() string { return filepath.Join(p.config.buildDir, p.path) } // Join creates a new InstallPath with paths... joined with the current path. The // provided paths... may not use '..' to escape from the current path. func (p InstallPath) Join(ctx PathContext, paths ...string) InstallPath { path, err := validatePath(paths...) if err != nil { reportPathError(ctx, err) } return p.withRel(path) } func (p InstallPath) withRel(rel string) InstallPath { p.basePath = p.basePath.withRel(rel) return p } func (p InstallPath) RelPathString() string { return p.path } // PathForModuleInstall returns a Path representing the install path for the // module appended with paths... func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string) OutputPath { func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string) InstallPath { var outPaths []string if ctx.Device() { partition := modulePartition(ctx) Loading @@ -1144,10 +1170,24 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string if ctx.InstallBypassMake() && ctx.Config().EmbeddedInMake() { return pathForInstallInMakeDir(ctx, outPaths...) } return PathForOutput(ctx, outPaths...) path, err := validatePath(outPaths...) if err != nil { reportPathError(ctx, err) } return InstallPath{basePath{path, ctx.Config(), ""}} } func PathForNdkInstall(ctx PathContext, paths ...string) InstallPath { paths = append([]string{"ndk"}, paths...) path, err := validatePath(paths...) if err != nil { reportPathError(ctx, err) } return InstallPath{basePath{path, ctx.Config(), ""}} } func InstallPathToOnDevicePath(ctx PathContext, path OutputPath) string { func InstallPathToOnDevicePath(ctx PathContext, path InstallPath) string { rel := Rel(ctx, PathForOutput(ctx, "target", "product", ctx.Config().DeviceName()).String(), path.String()) return "/" + rel Loading
android/prebuilt_etc.go +2 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ type PrebuiltEtc struct { installDirBase string // The base install location when soc_specific property is set to true, e.g. "firmware" for prebuilt_firmware. socInstallDirBase string installDirPath OutputPath installDirPath InstallPath additionalDependencies *Paths } Loading @@ -91,7 +91,7 @@ func (p *PrebuiltEtc) SourceFilePath(ctx ModuleContext) Path { return PathForModuleSrc(ctx, String(p.properties.Src)) } func (p *PrebuiltEtc) InstallDirPath() OutputPath { func (p *PrebuiltEtc) InstallDirPath() InstallPath { return p.installDirPath } Loading