diff options
author | Jiyong Park <jiyong@google.com> | 2019-02-06 00:16:29 +0900 |
---|---|---|
committer | Jiyong Park <jiyong@google.com> | 2019-02-06 23:09:30 +0900 |
commit | 04480cf35bee1717fbbfbcc7b8e27cfb6a5f0a1b (patch) | |
tree | 647bc5a2cb8fa43c91db7d8c430c1ec905414874 /apex | |
parent | 94427265d1e4de783cec0ebe24057268bd87cc5b (diff) | |
download | build_soong-04480cf35bee1717fbbfbcc7b8e27cfb6a5f0a1b.tar.gz build_soong-04480cf35bee1717fbbfbcc7b8e27cfb6a5f0a1b.tar.bz2 build_soong-04480cf35bee1717fbbfbcc7b8e27cfb6a5f0a1b.zip |
sh_binary can be included in APEX
Bug: 123891899
Test: m (apex_test amended)
Change-Id: Idebe577b20019fe9cd0fb6617f3b8c52a5b87714
Diffstat (limited to 'apex')
-rw-r--r-- | apex/apex.go | 14 | ||||
-rw-r--r-- | apex/apex_test.go | 29 |
2 files changed, 41 insertions, 2 deletions
diff --git a/apex/apex.go b/apex/apex.go index ad1b57c2..3584896b 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -274,6 +274,7 @@ const ( etc apexFileClass = iota nativeSharedLib nativeExecutable + shBinary javaSharedLib ) @@ -333,7 +334,7 @@ func (class apexFileClass) NameInMake() string { return "ETC" case nativeSharedLib: return "SHARED_LIBRARIES" - case nativeExecutable: + case nativeExecutable, shBinary: return "EXECUTABLES" case javaSharedLib: return "JAVA_LIBRARIES" @@ -570,6 +571,12 @@ func getCopyManifestForExecutable(cc *cc.Module) (fileToCopy android.Path, dirIn return } +func getCopyManifestForShBinary(sh *android.ShBinary) (fileToCopy android.Path, dirInApex string) { + dirInApex = filepath.Join("bin", sh.SubDir()) + fileToCopy = sh.OutputFile() + return +} + func getCopyManifestForJavaLibrary(java *java.Library) (fileToCopy android.Path, dirInApex string) { dirInApex = "javalib" fileToCopy = java.DexJarFile() @@ -626,8 +633,11 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { fileToCopy, dirInApex := getCopyManifestForExecutable(cc) filesInfo = append(filesInfo, apexFile{fileToCopy, depName, dirInApex, nativeExecutable, cc, cc.Symlinks()}) return true + } else if sh, ok := child.(*android.ShBinary); ok { + fileToCopy, dirInApex := getCopyManifestForShBinary(sh) + filesInfo = append(filesInfo, apexFile{fileToCopy, depName, dirInApex, shBinary, sh, nil}) } else { - ctx.PropertyErrorf("binaries", "%q is not a cc_binary module", depName) + ctx.PropertyErrorf("binaries", "%q is neithher cc_binary nor sh_binary", depName) } case javaLibTag: if java, ok := child.(*java.Library); ok { diff --git a/apex/apex_test.go b/apex/apex_test.go index 1315c25d..56ddd5f9 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -47,6 +47,7 @@ func testApex(t *testing.T, bp string) *android.TestContext { ctx.RegisterModuleType("llndk_library", android.ModuleFactoryAdaptor(cc.LlndkLibraryFactory)) ctx.RegisterModuleType("toolchain_library", android.ModuleFactoryAdaptor(cc.ToolchainLibraryFactory)) ctx.RegisterModuleType("prebuilt_etc", android.ModuleFactoryAdaptor(android.PrebuiltEtcFactory)) + ctx.RegisterModuleType("sh_binary", android.ModuleFactoryAdaptor(android.ShBinaryFactory)) ctx.PreDepsMutators(func(ctx android.RegisterMutatorsContext) { ctx.BottomUp("image", cc.ImageMutator).Parallel() ctx.BottomUp("link", cc.LinkageMutator).Parallel() @@ -975,3 +976,31 @@ func TestApexWithTarget(t *testing.T) { ensureListContains(t, ctx.ModuleVariantsForTests("mylib_common"), "android_arm64_armv8-a_core_shared") ensureListContains(t, ctx.ModuleVariantsForTests("mylib2"), "android_arm64_armv8-a_core_shared") } + +func TestApexWithShBinary(t *testing.T) { + ctx := testApex(t, ` + apex { + name: "myapex", + key: "myapex.key", + binaries: ["myscript"], + } + + apex_key { + name: "myapex.key", + public_key: "testkey.avbpubkey", + private_key: "testkey.pem", + } + + sh_binary { + name: "myscript", + src: "mylib.cpp", + filename: "myscript.sh", + sub_dir: "script", + } + `) + + apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule") + copyCmds := apexRule.Args["copy_commands"] + + ensureContains(t, copyCmds, "image.apex/bin/script/myscript.sh") +} |