Merge "Add recovery_available property to sysprop module"
diff --git a/apex/apex.go b/apex/apex.go
index 8f89ca6..9ab5187 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1006,7 +1006,10 @@
if ctx.Config().FlattenApex() {
for _, fi := range a.filesInfo {
dir := filepath.Join("apex", ctx.ModuleName(), fi.installDir)
- ctx.InstallFile(android.PathForModuleInstall(ctx, dir), fi.builtFile.Base(), fi.builtFile)
+ target := ctx.InstallFile(android.PathForModuleInstall(ctx, dir), fi.builtFile.Base(), fi.builtFile)
+ for _, sym := range fi.symlinks {
+ ctx.InstallSymlink(android.PathForModuleInstall(ctx, dir), sym, target)
+ }
}
}
}
@@ -1045,6 +1048,9 @@
// /system/apex/<name>/{lib|framework|...}
fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", filepath.Join("$(OUT_DIR)",
a.installDir.RelPathString(), name, fi.installDir))
+ if len(fi.symlinks) > 0 {
+ fmt.Fprintln(w, "LOCAL_MODULE_SYMLINKS :=", strings.Join(fi.symlinks, " "))
+ }
} else {
// /apex/<name>/{lib|framework|...}
fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", filepath.Join("$(PRODUCT_OUT)",
diff --git a/cmd/soong_build/writedocs.go b/cmd/soong_build/writedocs.go
index de2182f..e86ef82 100644
--- a/cmd/soong_build/writedocs.go
+++ b/cmd/soong_build/writedocs.go
@@ -108,14 +108,9 @@
}
// Produce the top-level, package list page first.
- tmpl, err := template.New("file").Parse(packageListTemplate)
- if err != nil {
- return err
- }
+ tmpl := template.Must(template.Must(template.New("file").Parse(packageListTemplate)).Parse(copyBaseUrl))
buf := &bytes.Buffer{}
- if err == nil {
- err = tmpl.Execute(buf, packages)
- }
+ err = tmpl.Execute(buf, packages)
if err == nil {
err = ioutil.WriteFile(filename, buf.Bytes(), 0666)
}
@@ -125,18 +120,16 @@
// We need a module name getter/setter function because I couldn't
// find a way to keep it in a variable defined within the template.
currentModuleName := ""
- tmpl, err := template.New("file").Funcs(map[string]interface{}{
- "setModule": func(moduleName string) string {
- currentModuleName = moduleName
- return ""
- },
- "getModule": func() string {
- return currentModuleName
- },
- }).Parse(perPackageTemplate)
- if err != nil {
- return err
- }
+ tmpl := template.Must(
+ template.Must(template.New("file").Funcs(map[string]interface{}{
+ "setModule": func(moduleName string) string {
+ currentModuleName = moduleName
+ return ""
+ },
+ "getModule": func() string {
+ return currentModuleName
+ },
+ }).Parse(perPackageTemplate)).Parse(copyBaseUrl))
buf := &bytes.Buffer{}
modules := moduleTypeDocsToTemplates(pkg.ModuleTypes)
data := perPackageTemplateData{Name: pkg.Name, Modules: modules}
@@ -173,6 +166,7 @@
word-wrap:break-word;
}
</style>
+{{template "copyBaseUrl"}}
</head>
<body>
<div id="main">
@@ -203,9 +197,7 @@
</body>
</html>
`
-)
-const (
perPackageTemplate = `
<html>
<head>
@@ -243,6 +235,7 @@
color: white;
}
</style>
+{{template "copyBaseUrl"}}
</head>
<body>
{{- /* Fixed sidebar with module types */ -}}
@@ -309,4 +302,23 @@
</script>
</body>
`
+
+ copyBaseUrl = `
+{{define "copyBaseUrl"}}
+<script type="text/javascript">
+window.addEventListener('message', (e) => {
+ if (e != null && e.data != null && e.data.type === "SET_BASE" && e.data.base != null) {
+ const existingBase = document.querySelector('base');
+ if (existingBase != null) {
+ existingBase.parentElement.removeChild(existingBase);
+ }
+
+ const base = document.createElement('base');
+ base.setAttribute('href', e.data.base);
+ document.head.appendChild(base);
+ }
+});
+</script>
+{{end}}
+`
)