Merge "Arch-specific source for prebuilt_apex"
This commit is contained in:
50
apex/apex.go
50
apex/apex.go
@@ -1300,7 +1300,23 @@ type Prebuilt struct {
|
|||||||
|
|
||||||
type PrebuiltProperties struct {
|
type PrebuiltProperties struct {
|
||||||
// the path to the prebuilt .apex file to import.
|
// the path to the prebuilt .apex file to import.
|
||||||
Src string `android:"arch_variant"`
|
Source string `blueprint:"mutated"`
|
||||||
|
|
||||||
|
Src *string
|
||||||
|
Arch struct {
|
||||||
|
Arm struct {
|
||||||
|
Src *string
|
||||||
|
}
|
||||||
|
Arm64 struct {
|
||||||
|
Src *string
|
||||||
|
}
|
||||||
|
X86 struct {
|
||||||
|
Src *string
|
||||||
|
}
|
||||||
|
X86_64 struct {
|
||||||
|
Src *string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// the name of the apex_key module that contains the matching public key to be installed.
|
// the name of the apex_key module that contains the matching public key to be installed.
|
||||||
Key *string
|
Key *string
|
||||||
@@ -1312,11 +1328,37 @@ func (p *Prebuilt) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.AddDependency(ctx.Module(), keyTag, *p.properties.Key)
|
ctx.AddDependency(ctx.Module(), keyTag, *p.properties.Key)
|
||||||
|
|
||||||
|
// This is called before prebuilt_select and prebuilt_postdeps mutators
|
||||||
|
// The mutators requires that src to be set correctly for each arch so that
|
||||||
|
// arch variants are disabled when src is not provided for the arch.
|
||||||
|
if len(ctx.MultiTargets()) != 1 {
|
||||||
|
ctx.ModuleErrorf("compile_multilib shouldn't be \"both\" for prebuilt_apex")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var src string
|
||||||
|
switch ctx.MultiTargets()[0].Arch.ArchType {
|
||||||
|
case android.Arm:
|
||||||
|
src = String(p.properties.Arch.Arm.Src)
|
||||||
|
case android.Arm64:
|
||||||
|
src = String(p.properties.Arch.Arm64.Src)
|
||||||
|
case android.X86:
|
||||||
|
src = String(p.properties.Arch.X86.Src)
|
||||||
|
case android.X86_64:
|
||||||
|
src = String(p.properties.Arch.X86_64.Src)
|
||||||
|
default:
|
||||||
|
ctx.ModuleErrorf("prebuilt_apex does not support %q", ctx.MultiTargets()[0].Arch.String())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if src == "" {
|
||||||
|
src = String(p.properties.Src)
|
||||||
|
}
|
||||||
|
p.properties.Source = src
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
// TODO(jungjw): Check the key validity.
|
// TODO(jungjw): Check the key validity.
|
||||||
p.inputApex = p.prebuilt.SingleSourcePath(ctx)
|
p.inputApex = p.Prebuilt().SingleSourcePath(ctx)
|
||||||
p.installDir = android.PathForModuleInstall(ctx, "apex")
|
p.installDir = android.PathForModuleInstall(ctx, "apex")
|
||||||
ctx.InstallFile(p.installDir, ctx.ModuleName()+imageApexSuffix, p.inputApex)
|
ctx.InstallFile(p.installDir, ctx.ModuleName()+imageApexSuffix, p.inputApex)
|
||||||
}
|
}
|
||||||
@@ -1348,7 +1390,7 @@ func (p *Prebuilt) AndroidMk() android.AndroidMkData {
|
|||||||
func PrebuiltFactory() android.Module {
|
func PrebuiltFactory() android.Module {
|
||||||
module := &Prebuilt{}
|
module := &Prebuilt{}
|
||||||
module.AddProperties(&module.properties)
|
module.AddProperties(&module.properties)
|
||||||
android.InitSingleSourcePrebuiltModule(module, &module.properties.Src)
|
android.InitSingleSourcePrebuiltModule(module, &module.properties.Source)
|
||||||
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibCommon)
|
android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon)
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
@@ -171,7 +171,8 @@ func testApex(t *testing.T, bp string) *android.TestContext {
|
|||||||
"custom_notice": nil,
|
"custom_notice": nil,
|
||||||
"testkey2.avbpubkey": nil,
|
"testkey2.avbpubkey": nil,
|
||||||
"testkey2.pem": nil,
|
"testkey2.pem": nil,
|
||||||
"myapex.apex": nil,
|
"myapex-arm64.apex": nil,
|
||||||
|
"myapex-arm.apex": nil,
|
||||||
})
|
})
|
||||||
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
|
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
|
||||||
android.FailIfErrored(t, errs)
|
android.FailIfErrored(t, errs)
|
||||||
@@ -1243,7 +1244,14 @@ func TestPrebuilt(t *testing.T) {
|
|||||||
ctx := testApex(t, `
|
ctx := testApex(t, `
|
||||||
prebuilt_apex {
|
prebuilt_apex {
|
||||||
name: "myapex",
|
name: "myapex",
|
||||||
src: "myapex.apex",
|
arch: {
|
||||||
|
arm64: {
|
||||||
|
src: "myapex-arm64.apex",
|
||||||
|
},
|
||||||
|
arm: {
|
||||||
|
src: "myapex-arm.apex",
|
||||||
|
},
|
||||||
|
},
|
||||||
key: "myapex.key"
|
key: "myapex.key"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1257,6 +1265,11 @@ func TestPrebuilt(t *testing.T) {
|
|||||||
|
|
||||||
prebuilt := ctx.ModuleForTests("myapex", "android_common").Module().(*Prebuilt)
|
prebuilt := ctx.ModuleForTests("myapex", "android_common").Module().(*Prebuilt)
|
||||||
|
|
||||||
|
expectedInput := "myapex-arm64.apex"
|
||||||
|
if prebuilt.inputApex.String() != expectedInput {
|
||||||
|
t.Errorf("inputApex invalid. expected: %q, actual: %q", expectedInput, prebuilt.inputApex.String())
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the key module is added as a required module.
|
// Check if the key module is added as a required module.
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
prebuilt.AndroidMk().Extra[0](buf, nil)
|
prebuilt.AndroidMk().Extra[0](buf, nil)
|
||||||
|
Reference in New Issue
Block a user