Refactor install paths
Explicitly allow installation into the data partition instead of using "../data" for tests. At the same time, pipe through the information required for vendor modules. Change-Id: I6baf9d828c285e1080e43074beef8aebdbb38875
This commit is contained in:
parent
7b310eefb7
commit
782a2d116a
24
cc/cc.go
24
cc/cc.go
|
@ -1359,7 +1359,7 @@ func (c *CCLibrary) installSharedLibrary(ctx common.AndroidModuleContext, flags
|
|||
installDir = "lib64"
|
||||
}
|
||||
|
||||
ctx.InstallFile(filepath.Join(installDir, c.Properties.Relative_install_path), c.out)
|
||||
ctx.InstallFile(common.PathForModuleInstall(ctx, installDir, c.Properties.Relative_install_path), c.out)
|
||||
}
|
||||
|
||||
func (c *CCLibrary) installModule(ctx common.AndroidModuleContext, flags CCFlags) {
|
||||
|
@ -1611,7 +1611,7 @@ func (c *CCBinary) compileModule(ctx common.AndroidModuleContext,
|
|||
}
|
||||
|
||||
func (c *CCBinary) installModule(ctx common.AndroidModuleContext, flags CCFlags) {
|
||||
c.installFile = ctx.InstallFile(filepath.Join("bin", c.Properties.Relative_install_path), c.out)
|
||||
c.installFile = ctx.InstallFile(common.PathForModuleInstall(ctx, "bin", c.Properties.Relative_install_path), c.out)
|
||||
}
|
||||
|
||||
func (c *CCBinary) HostToolPath() common.OptionalPath {
|
||||
|
@ -1678,9 +1678,17 @@ func (c *CCTest) depNames(ctx common.AndroidBaseContext, depNames CCDeps) CCDeps
|
|||
return depNames
|
||||
}
|
||||
|
||||
func (c *CCTest) InstallInData() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (c *CCTest) installModule(ctx common.AndroidModuleContext, flags CCFlags) {
|
||||
if ctx.Device() {
|
||||
ctx.InstallFile("../data/nativetest"+ctx.Arch().ArchType.Multilib[3:]+"/"+ctx.ModuleName(), c.out)
|
||||
installDir := "nativetest"
|
||||
if flags.Toolchain.Is64Bit() {
|
||||
installDir = "nativetest64"
|
||||
}
|
||||
ctx.InstallFile(common.PathForModuleInstall(ctx, installDir, ctx.ModuleName()), c.out)
|
||||
} else {
|
||||
c.CCBinary.installModule(ctx, flags)
|
||||
}
|
||||
|
@ -1708,9 +1716,17 @@ func (c *CCBenchmark) depNames(ctx common.AndroidBaseContext, depNames CCDeps) C
|
|||
return depNames
|
||||
}
|
||||
|
||||
func (c *CCBenchmark) InstallInData() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (c *CCBenchmark) installModule(ctx common.AndroidModuleContext, flags CCFlags) {
|
||||
if ctx.Device() {
|
||||
ctx.InstallFile("../data/nativetest"+ctx.Arch().ArchType.Multilib[3:]+"/"+ctx.ModuleName(), c.out)
|
||||
installDir := "nativetest"
|
||||
if flags.Toolchain.Is64Bit() {
|
||||
installDir = "nativetest64"
|
||||
}
|
||||
ctx.InstallFile(common.PathForModuleInstall(ctx, installDir, ctx.ModuleName()), c.out)
|
||||
} else {
|
||||
c.CCBinary.installModule(ctx, flags)
|
||||
}
|
||||
|
|
|
@ -56,6 +56,8 @@ type androidBaseContext interface {
|
|||
Darwin() bool
|
||||
Debug() bool
|
||||
AConfig() Config
|
||||
Proprietary() bool
|
||||
InstallInData() bool
|
||||
}
|
||||
|
||||
type AndroidBaseContext interface {
|
||||
|
@ -74,8 +76,8 @@ type AndroidModuleContext interface {
|
|||
ExpandSources(srcFiles, excludes []string) Paths
|
||||
Glob(outDir, globPattern string, excludes []string) Paths
|
||||
|
||||
InstallFile(installPath string, srcPath Path, deps ...Path) Path
|
||||
InstallFileName(installPath, name string, srcPath Path, deps ...Path) Path
|
||||
InstallFile(installPath OutputPath, srcPath Path, deps ...Path) Path
|
||||
InstallFileName(installPath OutputPath, name string, srcPath Path, deps ...Path) Path
|
||||
CheckbuildFile(srcPath Path)
|
||||
}
|
||||
|
||||
|
@ -87,6 +89,7 @@ type AndroidModule interface {
|
|||
base() *AndroidModuleBase
|
||||
Enabled() bool
|
||||
HostOrDevice() HostOrDevice
|
||||
InstallInData() bool
|
||||
}
|
||||
|
||||
type commonProperties struct {
|
||||
|
@ -103,6 +106,9 @@ type commonProperties struct {
|
|||
// platform
|
||||
Compile_multilib string
|
||||
|
||||
// whether this is a proprietary vendor module, and should be installed into /vendor
|
||||
Proprietary bool
|
||||
|
||||
// Set by HostOrDeviceMutator
|
||||
CompileHostOrDevice HostOrDevice `blueprint:"mutated"`
|
||||
|
||||
|
@ -294,6 +300,10 @@ func (p *AndroidModuleBase) NoAddressSanitizer() bool {
|
|||
return p.noAddressSanitizer
|
||||
}
|
||||
|
||||
func (p *AndroidModuleBase) InstallInData() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (a *AndroidModuleBase) generateModuleTarget(ctx blueprint.ModuleContext) {
|
||||
if a != ctx.FinalModule().(AndroidModule).base() {
|
||||
return
|
||||
|
@ -352,10 +362,12 @@ func (a *AndroidModuleBase) generateModuleTarget(ctx blueprint.ModuleContext) {
|
|||
|
||||
func (a *AndroidModuleBase) androidBaseContextFactory(ctx blueprint.BaseModuleContext) androidBaseContextImpl {
|
||||
return androidBaseContextImpl{
|
||||
arch: a.commonProperties.CompileArch,
|
||||
hod: a.commonProperties.CompileHostOrDevice,
|
||||
ht: a.commonProperties.CompileHostType,
|
||||
config: ctx.Config().(Config),
|
||||
arch: a.commonProperties.CompileArch,
|
||||
hod: a.commonProperties.CompileHostOrDevice,
|
||||
ht: a.commonProperties.CompileHostType,
|
||||
proprietary: a.commonProperties.Proprietary,
|
||||
config: ctx.Config().(Config),
|
||||
installInData: a.module.InstallInData(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -387,11 +399,13 @@ func (a *AndroidModuleBase) GenerateBuildActions(ctx blueprint.ModuleContext) {
|
|||
}
|
||||
|
||||
type androidBaseContextImpl struct {
|
||||
arch Arch
|
||||
hod HostOrDevice
|
||||
ht HostType
|
||||
debug bool
|
||||
config Config
|
||||
arch Arch
|
||||
hod HostOrDevice
|
||||
ht HostType
|
||||
debug bool
|
||||
config Config
|
||||
proprietary bool
|
||||
installInData bool
|
||||
}
|
||||
|
||||
type androidModuleContext struct {
|
||||
|
@ -492,10 +506,18 @@ func (a *androidBaseContextImpl) AConfig() Config {
|
|||
return a.config
|
||||
}
|
||||
|
||||
func (a *androidModuleContext) InstallFileName(installPath, name string, srcPath Path,
|
||||
func (a *androidBaseContextImpl) Proprietary() bool {
|
||||
return a.proprietary
|
||||
}
|
||||
|
||||
func (a *androidBaseContextImpl) InstallInData() bool {
|
||||
return a.installInData
|
||||
}
|
||||
|
||||
func (a *androidModuleContext) InstallFileName(installPath OutputPath, name string, srcPath Path,
|
||||
deps ...Path) Path {
|
||||
|
||||
fullInstallPath := PathForModuleInstall(a, installPath, name)
|
||||
fullInstallPath := installPath.Join(a, name)
|
||||
|
||||
deps = append(deps, a.installDeps...)
|
||||
|
||||
|
@ -512,7 +534,7 @@ func (a *androidModuleContext) InstallFileName(installPath, name string, srcPath
|
|||
return fullInstallPath
|
||||
}
|
||||
|
||||
func (a *androidModuleContext) InstallFile(installPath string, srcPath Path, deps ...Path) Path {
|
||||
func (a *androidModuleContext) InstallFile(installPath OutputPath, srcPath Path, deps ...Path) Path {
|
||||
return a.InstallFileName(installPath, filepath.Base(srcPath.String()), srcPath, deps...)
|
||||
}
|
||||
|
||||
|
|
|
@ -601,10 +601,20 @@ func PathForModuleRes(ctx AndroidModuleContext, paths ...string) ModuleResPath {
|
|||
func PathForModuleInstall(ctx AndroidModuleContext, paths ...string) OutputPath {
|
||||
var outPaths []string
|
||||
if ctx.Device() {
|
||||
outPaths = []string{"target", "product", ctx.AConfig().DeviceName(), "system"}
|
||||
partition := "system"
|
||||
if ctx.Proprietary() {
|
||||
partition = "vendor"
|
||||
}
|
||||
if ctx.InstallInData() {
|
||||
partition = "data"
|
||||
}
|
||||
outPaths = []string{"target", "product", ctx.AConfig().DeviceName(), partition}
|
||||
} else {
|
||||
outPaths = []string{"host", ctx.HostType().String() + "-x86"}
|
||||
}
|
||||
if ctx.Debug() {
|
||||
outPaths = append([]string{"debug"}, outPaths...)
|
||||
}
|
||||
outPaths = append(outPaths, paths...)
|
||||
return PathForOutput(ctx, outPaths...)
|
||||
}
|
||||
|
|
|
@ -152,7 +152,7 @@ func (a *AndroidApp) GenerateJavaBuildActions(ctx common.AndroidModuleContext) {
|
|||
}
|
||||
|
||||
a.outputFile = CreateAppPackage(ctx, aaptPackageFlags, a.outputFile, certificates)
|
||||
ctx.InstallFileName("app", ctx.ModuleName()+".apk", a.outputFile)
|
||||
ctx.InstallFileName(common.PathForModuleInstall(ctx, "app"), ctx.ModuleName()+".apk", a.outputFile)
|
||||
}
|
||||
|
||||
var aaptIgnoreFilenames = []string{
|
||||
|
|
|
@ -442,7 +442,7 @@ type JavaLibrary struct {
|
|||
func (j *JavaLibrary) GenerateJavaBuildActions(ctx common.AndroidModuleContext) {
|
||||
j.javaBase.GenerateJavaBuildActions(ctx)
|
||||
|
||||
j.installFile = ctx.InstallFileName("framework", ctx.ModuleName()+".jar", j.outputFile)
|
||||
j.installFile = ctx.InstallFileName(common.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".jar", j.outputFile)
|
||||
}
|
||||
|
||||
func JavaLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
|
@ -479,7 +479,7 @@ func (j *JavaBinary) GenerateJavaBuildActions(ctx common.AndroidModuleContext) {
|
|||
|
||||
// Depend on the installed jar (j.installFile) so that the wrapper doesn't get executed by
|
||||
// another build rule before the jar has been installed.
|
||||
ctx.InstallFile("bin", common.PathForModuleSrc(ctx, j.binaryProperties.Wrapper),
|
||||
ctx.InstallFile(common.PathForModuleInstall(ctx, "bin"), common.PathForModuleSrc(ctx, j.binaryProperties.Wrapper),
|
||||
j.installFile)
|
||||
}
|
||||
|
||||
|
@ -526,7 +526,7 @@ func (j *JavaPrebuilt) GenerateAndroidBuildActions(ctx common.AndroidModuleConte
|
|||
j.classpathFile = prebuilt
|
||||
j.classJarSpecs = []jarSpec{classJarSpec}
|
||||
j.resourceJarSpecs = []jarSpec{resourceJarSpec}
|
||||
ctx.InstallFileName("framework", ctx.ModuleName()+".jar", j.classpathFile)
|
||||
ctx.InstallFileName(common.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".jar", j.classpathFile)
|
||||
}
|
||||
|
||||
var _ JavaDependency = (*JavaPrebuilt)(nil)
|
||||
|
|
Loading…
Reference in New Issue