Merge changes I918b4878,I85238d93,Iefee8a91
* changes: Add an output file tag for proguard dictionaries Add InstallBypassMake Document wokaround for yama ptrace restrictions
This commit is contained in:
12
README.md
12
README.md
@@ -355,6 +355,18 @@ and then in another terminal:
|
|||||||
dlv connect :1234
|
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
|
## Contact
|
||||||
|
|
||||||
Email android-building@googlegroups.com (external) for any questions, or see
|
Email android-building@googlegroups.com (external) for any questions, or see
|
||||||
|
@@ -689,10 +689,6 @@ func (c *config) DevicePrimaryArchType() ArchType {
|
|||||||
return c.Targets[Android][0].Arch.ArchType
|
return c.Targets[Android][0].Arch.ArchType
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *config) SkipDeviceInstall() bool {
|
|
||||||
return c.EmbeddedInMake()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *config) SkipMegaDeviceInstall(path string) bool {
|
func (c *config) SkipMegaDeviceInstall(path string) bool {
|
||||||
return Bool(c.Mega_device) &&
|
return Bool(c.Mega_device) &&
|
||||||
strings.HasPrefix(path, filepath.Join(c.buildDir, "target", "product"))
|
strings.HasPrefix(path, filepath.Join(c.buildDir, "target", "product"))
|
||||||
|
@@ -155,6 +155,7 @@ type ModuleContext interface {
|
|||||||
InstallInData() bool
|
InstallInData() bool
|
||||||
InstallInSanitizerDir() bool
|
InstallInSanitizerDir() bool
|
||||||
InstallInRecovery() bool
|
InstallInRecovery() bool
|
||||||
|
InstallBypassMake() bool
|
||||||
|
|
||||||
RequiredModuleNames() []string
|
RequiredModuleNames() []string
|
||||||
HostRequiredModuleNames() []string
|
HostRequiredModuleNames() []string
|
||||||
@@ -192,6 +193,7 @@ type Module interface {
|
|||||||
InstallInData() bool
|
InstallInData() bool
|
||||||
InstallInSanitizerDir() bool
|
InstallInSanitizerDir() bool
|
||||||
InstallInRecovery() bool
|
InstallInRecovery() bool
|
||||||
|
InstallBypassMake() bool
|
||||||
SkipInstall()
|
SkipInstall()
|
||||||
ExportedToMake() bool
|
ExportedToMake() bool
|
||||||
NoticeFile() OptionalPath
|
NoticeFile() OptionalPath
|
||||||
@@ -837,6 +839,10 @@ func (m *ModuleBase) InstallInRecovery() bool {
|
|||||||
return Bool(m.commonProperties.Recovery)
|
return Bool(m.commonProperties.Recovery)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *ModuleBase) InstallBypassMake() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (m *ModuleBase) Owner() string {
|
func (m *ModuleBase) Owner() string {
|
||||||
return String(m.commonProperties.Owner)
|
return String(m.commonProperties.Owner)
|
||||||
}
|
}
|
||||||
@@ -1493,6 +1499,10 @@ func (m *moduleContext) InstallInRecovery() bool {
|
|||||||
return m.module.InstallInRecovery()
|
return m.module.InstallInRecovery()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *moduleContext) InstallBypassMake() bool {
|
||||||
|
return m.module.InstallBypassMake()
|
||||||
|
}
|
||||||
|
|
||||||
func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool {
|
func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool {
|
||||||
if m.module.base().commonProperties.SkipInstall {
|
if m.module.base().commonProperties.SkipInstall {
|
||||||
return true
|
return true
|
||||||
@@ -1506,7 +1516,7 @@ func (m *moduleContext) skipInstall(fullInstallPath OutputPath) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if m.Device() {
|
if m.Device() {
|
||||||
if m.Config().SkipDeviceInstall() {
|
if m.Config().EmbeddedInMake() && !m.InstallBypassMake() {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -46,6 +46,7 @@ type ModuleInstallPathContext interface {
|
|||||||
InstallInData() bool
|
InstallInData() bool
|
||||||
InstallInSanitizerDir() bool
|
InstallInSanitizerDir() bool
|
||||||
InstallInRecovery() bool
|
InstallInRecovery() bool
|
||||||
|
InstallBypassMake() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ ModuleInstallPathContext = ModuleContext(nil)
|
var _ ModuleInstallPathContext = ModuleContext(nil)
|
||||||
@@ -818,6 +819,17 @@ func PathForOutput(ctx PathContext, pathComponents ...string) OutputPath {
|
|||||||
return OutputPath{basePath{path, ctx.Config(), ""}}
|
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
|
// PathsForOutput returns Paths rooted from buildDir
|
||||||
func PathsForOutput(ctx PathContext, paths []string) WritablePaths {
|
func PathsForOutput(ctx PathContext, paths []string) WritablePaths {
|
||||||
ret := make(WritablePaths, len(paths))
|
ret := make(WritablePaths, len(paths))
|
||||||
@@ -1123,6 +1135,9 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string
|
|||||||
outPaths = append([]string{"debug"}, outPaths...)
|
outPaths = append([]string{"debug"}, outPaths...)
|
||||||
}
|
}
|
||||||
outPaths = append(outPaths, pathComponents...)
|
outPaths = append(outPaths, pathComponents...)
|
||||||
|
if ctx.InstallBypassMake() && ctx.Config().EmbeddedInMake() {
|
||||||
|
return pathForInstallInMakeDir(ctx, outPaths...)
|
||||||
|
}
|
||||||
return PathForOutput(ctx, outPaths...)
|
return PathForOutput(ctx, outPaths...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -227,6 +227,10 @@ func (m moduleInstallPathContextImpl) InstallInRecovery() bool {
|
|||||||
return m.inRecovery
|
return m.inRecovery
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m moduleInstallPathContextImpl) InstallBypassMake() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func TestPathForModuleInstall(t *testing.T) {
|
func TestPathForModuleInstall(t *testing.T) {
|
||||||
testConfig := TestConfig("", nil)
|
testConfig := TestConfig("", nil)
|
||||||
|
|
||||||
|
@@ -370,6 +370,8 @@ func (j *Module) OutputFiles(tag string) (android.Paths, error) {
|
|||||||
return append(android.Paths{j.outputFile}, j.extraOutputFiles...), nil
|
return append(android.Paths{j.outputFile}, j.extraOutputFiles...), nil
|
||||||
case ".jar":
|
case ".jar":
|
||||||
return android.Paths{j.implementationAndResourcesJar}, nil
|
return android.Paths{j.implementationAndResourcesJar}, nil
|
||||||
|
case ".proguard_map":
|
||||||
|
return android.Paths{j.proguardDictionary}, nil
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
|
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user