Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57bb5081 authored by Sasha Smundak's avatar Sasha Smundak
Browse files

Always use /bin/sh to run the command.

SHELL environment variable cannot be relied on because the rbcrun
can be run as `env - rbcrun ...`

Fixes: 184278019
Test: build/soong/soong_ui.bash --make-mode USE_BAZEL=1 TARGET_PRODUCT=aosp_arm64 TARGET_BUILD_VARIANT=userdebug droid dist platform_tests
Change-Id: Id8fc7fd1ae8f2e674028ba5ffb3616f87eea6bc4
parent 98c85072
Loading
Loading
Loading
Loading
+7 −3
Original line number Original line Diff line number Diff line
@@ -182,7 +182,7 @@ func shell(_ *starlark.Thread, b *starlark.Builtin, args starlark.Tuple,
	}
	}
	if shellPath == "" {
	if shellPath == "" {
		return starlark.None,
		return starlark.None,
			fmt.Errorf("cannot run shell, SHELL environment variable is not set (running on Windows?)")
			fmt.Errorf("cannot run shell, /bin/sh is missing (running on Windows?)")
	}
	}
	cmd := exec.Command(shellPath, "-c", command)
	cmd := exec.Command(shellPath, "-c", command)
	// We ignore command's status
	// We ignore command's status
@@ -234,8 +234,12 @@ func setup(env []string) {
		"rblf_wildcard": starlark.NewBuiltin("rblf_wildcard", wildcard),
		"rblf_wildcard": starlark.NewBuiltin("rblf_wildcard", wildcard),
	}
	}


	// NOTE(asmundak): OS-specific.
	// NOTE(asmundak): OS-specific. Behave similar to Linux `system` call,
	shellPath, _ = os.LookupEnv("SHELL")
	// which always uses /bin/sh to run the command
	shellPath = "/bin/sh"
	if _, err := os.Stat(shellPath); err != nil {
		shellPath = ""
	}
}
}


// Parses, resolves, and executes a Starlark file.
// Parses, resolves, and executes a Starlark file.