Merge "Fail if non-allowlisted host system tool is used."

This commit is contained in:
Treehugger Robot 2020-11-24 07:02:30 +00:00 committed by Gerrit Code Review
commit 5bca812a4e
2 changed files with 13 additions and 6 deletions

View File

@ -230,7 +230,8 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string
envCopy[k] = v
}
// Copy the real PATH value to the test environment, it's needed by HostSystemTool() used in x86_darwin_host.go
// Copy the real PATH value to the test environment, it's needed by
// NonHermeticHostSystemTool() used in x86_darwin_host.go
envCopy["PATH"] = originalEnv["PATH"]
config := &config{
@ -513,9 +514,12 @@ func (c *config) HostJavaToolPath(ctx PathContext, path string) Path {
return PathForOutput(ctx, "host", c.PrebuiltOS(), "framework", path)
}
// HostSystemTool looks for non-hermetic tools from the system we're running on.
// Generally shouldn't be used, but useful to find the XCode SDK, etc.
func (c *config) HostSystemTool(name string) string {
// NonHermeticHostSystemTool looks for non-hermetic tools from the system we're
// running on. These tools are not checked-in to AOSP, and therefore could lead
// to reproducibility problems. Should not be used for other than finding the
// XCode SDK (xcrun, sw_vers), etc. See ui/build/paths/config.go for the
// allowlist of host system tools.
func (c *config) NonHermeticHostSystemTool(name string) string {
for _, dir := range filepath.SplitList(c.Getenv("PATH")) {
path := filepath.Join(dir, name)
if s, err := os.Stat(path); err != nil {
@ -524,7 +528,10 @@ func (c *config) HostSystemTool(name string) string {
return path
}
}
return name
panic(fmt.Errorf(
"Unable to use '%s' as a host system tool for build system "+
"hermeticity reasons. See build/soong/ui/build/paths/config.go "+
"for the full list of allowed host tools on your system.", name))
}
// PrebuiltOS returns the name of the host OS used in prebuilts directories

View File

@ -135,7 +135,7 @@ var macTools = &macPlatformTools{}
func getMacTools(ctx android.PackageVarContext) *macPlatformTools {
macTools.once.Do(func() {
xcrunTool := ctx.Config().HostSystemTool("xcrun")
xcrunTool := ctx.Config().NonHermeticHostSystemTool("xcrun")
xcrun := func(args ...string) string {
if macTools.err != nil {