Merge "Add a prebuilt module type for usr/share."
am: fc46f28b6f
Change-Id: Ic28afc4af2cb1de3db65f01669431259a986b234
This commit is contained in:
@@ -20,12 +20,12 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// prebuilt_etc is for prebuilts that will be installed to
|
// TODO(jungw): Now that it handles more than the ones in etc/, consider renaming this file.
|
||||||
// <partition>/etc/<subdir>
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
RegisterModuleType("prebuilt_etc", PrebuiltEtcFactory)
|
RegisterModuleType("prebuilt_etc", PrebuiltEtcFactory)
|
||||||
RegisterModuleType("prebuilt_etc_host", PrebuiltEtcHostFactory)
|
RegisterModuleType("prebuilt_etc_host", PrebuiltEtcHostFactory)
|
||||||
|
RegisterModuleType("prebuilt_usr_share", PrebuiltUserShareFactory)
|
||||||
|
|
||||||
PreDepsMutators(func(ctx RegisterMutatorsContext) {
|
PreDepsMutators(func(ctx RegisterMutatorsContext) {
|
||||||
ctx.BottomUp("prebuilt_etc", prebuiltEtcMutator).Parallel()
|
ctx.BottomUp("prebuilt_etc", prebuiltEtcMutator).Parallel()
|
||||||
@@ -60,8 +60,10 @@ type PrebuiltEtc struct {
|
|||||||
|
|
||||||
properties prebuiltEtcProperties
|
properties prebuiltEtcProperties
|
||||||
|
|
||||||
sourceFilePath Path
|
sourceFilePath Path
|
||||||
outputFilePath OutputPath
|
outputFilePath OutputPath
|
||||||
|
// The base install location, e.g. "etc" for prebuilt_etc, "usr/share" for prebuilt_usr_share.
|
||||||
|
installDirBase string
|
||||||
installDirPath OutputPath
|
installDirPath OutputPath
|
||||||
additionalDependencies *Paths
|
additionalDependencies *Paths
|
||||||
}
|
}
|
||||||
@@ -124,7 +126,7 @@ func (p *PrebuiltEtc) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
p.outputFilePath = PathForModuleOut(ctx, filename).OutputPath
|
p.outputFilePath = PathForModuleOut(ctx, filename).OutputPath
|
||||||
p.installDirPath = PathForModuleInstall(ctx, "etc", String(p.properties.Sub_dir))
|
p.installDirPath = PathForModuleInstall(ctx, p.installDirBase, String(p.properties.Sub_dir))
|
||||||
|
|
||||||
// This ensures that outputFilePath has the correct name for others to
|
// This ensures that outputFilePath has the correct name for others to
|
||||||
// use, as the source file may have a different name.
|
// use, as the source file may have a different name.
|
||||||
@@ -174,8 +176,9 @@ func InitPrebuiltEtcModule(p *PrebuiltEtc) {
|
|||||||
p.AddProperties(&p.properties)
|
p.AddProperties(&p.properties)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// prebuilt_etc is for prebuilts that will be installed to <partition>/etc/<subdir>
|
||||||
func PrebuiltEtcFactory() Module {
|
func PrebuiltEtcFactory() Module {
|
||||||
module := &PrebuiltEtc{}
|
module := &PrebuiltEtc{installDirBase: "etc"}
|
||||||
InitPrebuiltEtcModule(module)
|
InitPrebuiltEtcModule(module)
|
||||||
// This module is device-only
|
// This module is device-only
|
||||||
InitAndroidArchModule(module, DeviceSupported, MultilibFirst)
|
InitAndroidArchModule(module, DeviceSupported, MultilibFirst)
|
||||||
@@ -183,13 +186,22 @@ func PrebuiltEtcFactory() Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func PrebuiltEtcHostFactory() Module {
|
func PrebuiltEtcHostFactory() Module {
|
||||||
module := &PrebuiltEtc{}
|
module := &PrebuiltEtc{installDirBase: "etc"}
|
||||||
InitPrebuiltEtcModule(module)
|
InitPrebuiltEtcModule(module)
|
||||||
// This module is host-only
|
// This module is host-only
|
||||||
InitAndroidArchModule(module, HostSupported, MultilibCommon)
|
InitAndroidArchModule(module, HostSupported, MultilibCommon)
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// prebuilt_usr_share is for prebuilts that will be installed to <partition>/usr/share/<subdir>
|
||||||
|
func PrebuiltUserShareFactory() Module {
|
||||||
|
module := &PrebuiltEtc{installDirBase: "usr/share"}
|
||||||
|
InitPrebuiltEtcModule(module)
|
||||||
|
// This module is device-only
|
||||||
|
InitAndroidArchModule(module, DeviceSupported, MultilibFirst)
|
||||||
|
return module
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// coreMode is the variant for modules to be installed to system.
|
// coreMode is the variant for modules to be installed to system.
|
||||||
coreMode = "core"
|
coreMode = "core"
|
||||||
|
@@ -29,6 +29,7 @@ func testPrebuiltEtc(t *testing.T, bp string) *TestContext {
|
|||||||
ctx := NewTestArchContext()
|
ctx := NewTestArchContext()
|
||||||
ctx.RegisterModuleType("prebuilt_etc", ModuleFactoryAdaptor(PrebuiltEtcFactory))
|
ctx.RegisterModuleType("prebuilt_etc", ModuleFactoryAdaptor(PrebuiltEtcFactory))
|
||||||
ctx.RegisterModuleType("prebuilt_etc_host", ModuleFactoryAdaptor(PrebuiltEtcHostFactory))
|
ctx.RegisterModuleType("prebuilt_etc_host", ModuleFactoryAdaptor(PrebuiltEtcHostFactory))
|
||||||
|
ctx.RegisterModuleType("prebuilt_usr_share", ModuleFactoryAdaptor(PrebuiltUserShareFactory))
|
||||||
ctx.PreDepsMutators(func(ctx RegisterMutatorsContext) {
|
ctx.PreDepsMutators(func(ctx RegisterMutatorsContext) {
|
||||||
ctx.BottomUp("prebuilt_etc", prebuiltEtcMutator).Parallel()
|
ctx.BottomUp("prebuilt_etc", prebuiltEtcMutator).Parallel()
|
||||||
})
|
})
|
||||||
@@ -193,3 +194,19 @@ func TestPrebuiltEtcHost(t *testing.T) {
|
|||||||
t.Errorf("host bit is not set for a prebuilt_etc_host module.")
|
t.Errorf("host bit is not set for a prebuilt_etc_host module.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPrebuiltUserShareInstallDirPath(t *testing.T) {
|
||||||
|
ctx := testPrebuiltEtc(t, `
|
||||||
|
prebuilt_usr_share {
|
||||||
|
name: "foo.conf",
|
||||||
|
src: "foo.conf",
|
||||||
|
sub_dir: "bar",
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
p := ctx.ModuleForTests("foo.conf", "android_arm64_armv8-a_core").Module().(*PrebuiltEtc)
|
||||||
|
expected := "target/product/test_device/system/usr/share/bar"
|
||||||
|
if p.installDirPath.RelPathString() != expected {
|
||||||
|
t.Errorf("expected %q, got %q", expected, p.installDirPath.RelPathString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user