blob: b86b34f642f6f527e0664a0c1837dabcf95905e4 [file] [log] [blame]
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import platform
import os
import subprocess
import sys
def normalize_path(p):
if platform.system() == "Windows":
# Sure. Good idea, bazel.
return p.replace("\\", "/")
return p
def write_platform(bazelrc):
platform_config = "generic_clang"
if platform.system() == "Windows":
platform_config = "windows"
print("build --config={}".format(platform_config), file=bazelrc)
def write_python_bin(bazelrc):
python_bin = normalize_path(sys.executable)
print("build --python_path=\"{}\"".format(python_bin), file=bazelrc)
# IREE extension compilation requires PYTHON_BIN
print("build --action_env PYTHON_BIN=\"{}\"".format(python_bin), file=bazelrc)
# TensorFlow defines this one. No idea why.
print("build --action_env PYTHON_BIN_PATH=\"{}\"".format(python_bin),
file=bazelrc)
def write_python_path(bazelrc):
# For some reason, bazel doesn't always find the user site path, which
# is typically where "pip install --user" libraries end up. Inject it.
try:
user_site = subprocess.run(
[sys.executable, "-m", "site", "--user-site"],
check=True,
# TODO(#4131) python>=3.7: Use capture_output=True.
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
# TODO(#4131) python>=3.7: Replace 'universal_newlines' with 'text'.
universal_newlines=True,
).stdout.strip()
print("Found user site directory:", user_site)
except subprocess.CalledProcessError:
print("Could not resolve user site directory")
return
print("build --action_env PYTHONPATH=\"{}\"".format(
normalize_path(user_site)),
file=bazelrc)
if len(sys.argv) > 1:
local_bazelrc = sys.argv[1]
else:
local_bazelrc = os.path.join(os.path.dirname(__file__), "configured.bazelrc")
with open(local_bazelrc, "wt") as bazelrc:
write_platform(bazelrc)
write_python_bin(bazelrc)
write_python_path(bazelrc)
print("Wrote", local_bazelrc)