Merge "Use module name as intermediates name for android_app modules"
diff --git a/android/module.go b/android/module.go
index aed16b3..551824d 100644
--- a/android/module.go
+++ b/android/module.go
@@ -16,6 +16,7 @@
 
 import (
 	"fmt"
+	"path"
 	"path/filepath"
 	"sort"
 	"strings"
@@ -1268,6 +1269,10 @@
 
 	if !a.skipInstall(fullInstallPath) {
 
+		relPath, err := filepath.Rel(path.Dir(fullInstallPath.String()), srcPath.String())
+		if err != nil {
+			panic(fmt.Sprintf("Unable to generate symlink between %q and %q: %s", fullInstallPath.Base(), srcPath.Base(), err))
+		}
 		a.Build(pctx, BuildParams{
 			Rule:        Symlink,
 			Description: "install symlink " + fullInstallPath.Base(),
@@ -1275,7 +1280,7 @@
 			OrderOnly:   Paths{srcPath},
 			Default:     !a.Config().EmbeddedInMake(),
 			Args: map[string]string{
-				"fromPath": srcPath.String(),
+				"fromPath": relPath,
 			},
 		})
 
diff --git a/ui/build/paths/config.go b/ui/build/paths/config.go
index 1d8684b..b2d7a8a 100644
--- a/ui/build/paths/config.go
+++ b/ui/build/paths/config.go
@@ -96,7 +96,6 @@
 	"javap":     Allowed,
 	"lsof":      Allowed,
 	"m4":        Allowed,
-	"md5sum":    Allowed,
 	"openssl":   Allowed,
 	"patch":     Allowed,
 	"pgrep":     Allowed,
@@ -110,9 +109,6 @@
 	"rsync":     Allowed,
 	"sed":       Allowed,
 	"sh":        Allowed,
-	"sha1sum":   Allowed,
-	"sha256sum": Allowed,
-	"sha512sum": Allowed,
 	"tar":       Allowed,
 	"timeout":   Allowed,
 	"tr":        Allowed,
@@ -137,46 +133,50 @@
 	"ld.gold":    Forbidden,
 	"pkg-config": Forbidden,
 
-	// On linux we'll use the toybox version of these instead
-	"basename": Toybox,
-	"cat":      Toybox,
-	"chmod":    Toybox,
-	"cmp":      Toybox,
-	"comm":     Toybox,
-	"cut":      Toybox,
-	"dirname":  Toybox,
-	"du":       Toybox,
-	"echo":     Toybox,
-	"env":      Toybox,
-	"expr":     Toybox,
-	"head":     Toybox,
-	"getconf":  Toybox,
-	"id":       Toybox,
-	"ln":       Toybox,
-	"ls":       Toybox,
-	"mkdir":    Toybox,
-	"mktemp":   Toybox,
-	"mv":       Toybox,
-	"od":       Toybox,
-	"paste":    Toybox,
-	"pwd":      Toybox,
-	"readlink": Toybox,
-	"rm":       Toybox,
-	"rmdir":    Toybox,
-	"setsid":   Toybox,
-	"sleep":    Toybox,
-	"sort":     Toybox,
-	"stat":     Toybox,
-	"tail":     Toybox,
-	"tee":      Toybox,
-	"touch":    Toybox,
-	"true":     Toybox,
-	"uname":    Toybox,
-	"uniq":     Toybox,
-	"unix2dos": Toybox,
-	"whoami":   Toybox,
-	"xargs":    Toybox,
-	"xxd":      Toybox,
+	// On Linux we'll use the toybox versions of these instead.
+	"basename":  Toybox,
+	"cat":       Toybox,
+	"chmod":     Toybox,
+	"cmp":       Toybox,
+	"comm":      Toybox,
+	"cut":       Toybox,
+	"dirname":   Toybox,
+	"du":        Toybox,
+	"echo":      Toybox,
+	"env":       Toybox,
+	"expr":      Toybox,
+	"head":      Toybox,
+	"getconf":   Toybox,
+	"id":        Toybox,
+	"ln":        Toybox,
+	"ls":        Toybox,
+	"md5sum":    Toybox,
+	"mkdir":     Toybox,
+	"mktemp":    Toybox,
+	"mv":        Toybox,
+	"od":        Toybox,
+	"paste":     Toybox,
+	"pwd":       Toybox,
+	"readlink":  Toybox,
+	"rm":        Toybox,
+	"rmdir":     Toybox,
+	"setsid":    Toybox,
+	"sha1sum":   Toybox,
+	"sha256sum": Toybox,
+	"sha512sum": Toybox,
+	"sleep":     Toybox,
+	"sort":      Toybox,
+	"stat":      Toybox,
+	"tail":      Toybox,
+	"tee":       Toybox,
+	"touch":     Toybox,
+	"true":      Toybox,
+	"uname":     Toybox,
+	"uniq":      Toybox,
+	"unix2dos":  Toybox,
+	"whoami":    Toybox,
+	"xargs":     Toybox,
+	"xxd":       Toybox,
 }
 
 func init() {