aboutsummaryrefslogtreecommitdiffstats
path: root/apex
diff options
context:
space:
mode:
authorJiyong Park <jiyong@google.com>2019-02-06 00:16:29 +0900
committerJiyong Park <jiyong@google.com>2019-02-06 23:09:30 +0900
commit04480cf35bee1717fbbfbcc7b8e27cfb6a5f0a1b (patch)
tree647bc5a2cb8fa43c91db7d8c430c1ec905414874 /apex
parent94427265d1e4de783cec0ebe24057268bd87cc5b (diff)
downloadbuild_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.go14
-rw-r--r--apex/apex_test.go29
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")
+}