build_api: disable stdin by default
We don't want BuildAPI calls to be interactive, so disable stdin in
all runs to enforce it. If a use case ever comes up, we can evaluate
it then.
BUG=b:244220188
TEST=`./bin/build_api ... chromite.api.BinhostService/RegenBuildCache` works
Change-Id: Id2c33f8c812398017aaf4b5b4347ba82886ebf49
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3863370
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/scripts/build_api.py b/scripts/build_api.py
index b7d8d94..c72856e 100644
--- a/scripts/build_api.py
+++ b/scripts/build_api.py
@@ -152,6 +152,10 @@
if opts.service_method == 'chromite.api.ImageService/Create':
namespaces.ReExecuteWithNamespace(sys.argv)
+ # We currently don't have any APIs that want to access stdin, so rebind.
+ sys.stdin = open(os.devnull, 'r') # pylint: disable=consider-using-with
+ os.dup2(sys.stdin.fileno(), 0)
+
if opts.config.log_path:
logging.warning('Ignoring log_path config option')
if 'BUILD_API_TEE_LOG_FILE' in os.environ: