Merge changes I918b4878,I85238d93,Iefee8a91
am: a48f8c8070
Change-Id: Icaea636b21c37c1017d11f104b100805c77459ab
diff --git a/README.md b/README.md
index 60d7d5a..18422ea 100644
--- a/README.md
+++ b/README.md
@@ -355,6 +355,18 @@
dlv connect :1234
```
+If you see an error:
+```
+Could not attach to pid 593: this could be caused by a kernel
+security setting, try writing "0" to /proc/sys/kernel/yama/ptrace_scope
+```
+you can temporarily disable
+[Yama's ptrace protection](https://www.kernel.org/doc/Documentation/security/Yama.txt)
+using:
+```bash
+sudo sysctl -w kernel.yama.ptrace_scope=0
+```
+
## Contact
Email android-building@googlegroups.com (external) for any questions, or see
diff --git a/android/config.go b/android/config.go
index 074dfc7..61370a0 100644
--- a/android/config.go
+++ b/android/config.go
@@ -689,10 +689,6 @@
return c.Targets[Android][0].Arch.ArchType
}
-func (c *config) SkipDeviceInstall() bool {
- return c.EmbeddedInMake()
-}
-
func (c *config) SkipMegaDeviceInstall(path string) bool {
return Bool(c.Mega_device) &&
strings.HasPrefix(path, filepath.Join(c.buildDir, "target", "product"))
diff --git a/android/module.go b/android/module.go
index 138b9cd..990a893 100644
--- a/android/module.go
+++ b/android/module.go
@@ -155,6 +155,7 @@
InstallInData() bool
InstallInSanitizerDir() bool
InstallInRecovery() bool
+ InstallBypassMake() bool
RequiredModuleNames() []string
HostRequiredModuleNames() []string
@@ -192,6 +193,7 @@
InstallInData() bool
InstallInSanitizerDir() bool
InstallInRecovery() bool
+ InstallBypassMake() bool
SkipInstall()
ExportedToMake() bool
NoticeFile() OptionalPath
@@ -837,6 +839,10 @@
return Bool(m.commonProperties.Recovery)
}
+func (m *ModuleBase) InstallBypassMake() bool {
+ return false
+}
+
func (m *ModuleBase) Owner() string {
return String(m.commonProperties.Owner)
}
@@ -1493,6 +1499,10 @@
return m.module.InstallInRecovery()
}
+func (m *moduleContext) InstallBypassMake() bool {
+ return m.module.InstallBypassMake()
+}
+
func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool {
if m.module.base().commonProperties.SkipInstall {
return true
@@ -1506,7 +1516,7 @@
}
if m.Device() {
- if m.Config().SkipDeviceInstall() {
+ if m.Config().EmbeddedInMake() && !m.InstallBypassMake() {
return true
}
diff --git a/android/paths.go b/android/paths.go
index e3f0544..0d99918 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -46,6 +46,7 @@
InstallInData() bool
InstallInSanitizerDir() bool
InstallInRecovery() bool
+ InstallBypassMake() bool
}
var _ ModuleInstallPathContext = ModuleContext(nil)
@@ -818,6 +819,17 @@
return OutputPath{basePath{path, ctx.Config(), ""}}
}
+// pathForInstallInMakeDir is used by PathForModuleInstall when the module returns true
+// for InstallBypassMake to produce an OutputPath that installs to $OUT_DIR instead of
+// $OUT_DIR/soong.
+func pathForInstallInMakeDir(ctx PathContext, pathComponents ...string) OutputPath {
+ path, err := validatePath(pathComponents...)
+ if err != nil {
+ reportPathError(ctx, err)
+ }
+ return OutputPath{basePath{"../" + path, ctx.Config(), ""}}
+}
+
// PathsForOutput returns Paths rooted from buildDir
func PathsForOutput(ctx PathContext, paths []string) WritablePaths {
ret := make(WritablePaths, len(paths))
@@ -1123,6 +1135,9 @@
outPaths = append([]string{"debug"}, outPaths...)
}
outPaths = append(outPaths, pathComponents...)
+ if ctx.InstallBypassMake() && ctx.Config().EmbeddedInMake() {
+ return pathForInstallInMakeDir(ctx, outPaths...)
+ }
return PathForOutput(ctx, outPaths...)
}
diff --git a/android/paths_test.go b/android/paths_test.go
index 8286e9a..f2996bf 100644
--- a/android/paths_test.go
+++ b/android/paths_test.go
@@ -227,6 +227,10 @@
return m.inRecovery
}
+func (m moduleInstallPathContextImpl) InstallBypassMake() bool {
+ return false
+}
+
func TestPathForModuleInstall(t *testing.T) {
testConfig := TestConfig("", nil)
diff --git a/java/java.go b/java/java.go
index fea38b5..3b789f6 100644
--- a/java/java.go
+++ b/java/java.go
@@ -370,6 +370,8 @@
return append(android.Paths{j.outputFile}, j.extraOutputFiles...), nil
case ".jar":
return android.Paths{j.implementationAndResourcesJar}, nil
+ case ".proguard_map":
+ return android.Paths{j.proguardDictionary}, nil
default:
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}