2022-04-07 02:20:39 +08:00
|
|
|
# This file is licensed under the Apache License v2.0 with LLVM Exceptions.
|
|
|
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
|
|
|
|
"""Helper macros to configure torch-mlir overlay project."""
|
|
|
|
|
|
|
|
# This is adapted from llvm-project's utils/bazel/configure.bzl
|
|
|
|
|
|
|
|
DEFAULT_OVERLAY_PATH = "torch-mlir-overlay"
|
|
|
|
|
|
|
|
def _overlay_directories(repository_ctx):
|
|
|
|
src_path = repository_ctx.path(Label("//:WORKSPACE")).dirname
|
|
|
|
bazel_path = src_path.get_child("utils").get_child("bazel")
|
|
|
|
overlay_path = bazel_path.get_child("torch-mlir-overlay")
|
|
|
|
script_path = bazel_path.get_child("overlay_directories.py")
|
|
|
|
|
|
|
|
python_bin = repository_ctx.which("python3")
|
|
|
|
if not python_bin:
|
|
|
|
# Windows typically just defines "python" as python3. The script itself
|
|
|
|
# contains a check to ensure python3.
|
|
|
|
python_bin = repository_ctx.which("python")
|
|
|
|
|
|
|
|
if not python_bin:
|
|
|
|
fail("Failed to find python3 binary")
|
|
|
|
|
|
|
|
cmd = [
|
|
|
|
python_bin,
|
|
|
|
script_path,
|
|
|
|
"--src",
|
|
|
|
src_path,
|
|
|
|
"--overlay",
|
|
|
|
overlay_path,
|
|
|
|
"--target",
|
|
|
|
".",
|
|
|
|
]
|
|
|
|
exec_result = repository_ctx.execute(cmd, timeout = 20)
|
|
|
|
|
|
|
|
if exec_result.return_code != 0:
|
|
|
|
fail(("Failed to execute overlay script: '{cmd}'\n" +
|
|
|
|
"Exited with code {return_code}\n" +
|
|
|
|
"stdout:\n{stdout}\n" +
|
|
|
|
"stderr:\n{stderr}\n").format(
|
|
|
|
cmd = " ".join([str(arg) for arg in cmd]),
|
|
|
|
return_code = exec_result.return_code,
|
|
|
|
stdout = exec_result.stdout,
|
|
|
|
stderr = exec_result.stderr,
|
|
|
|
))
|
|
|
|
|
|
|
|
def _torch_mlir_configure_impl(repository_ctx):
|
|
|
|
_overlay_directories(repository_ctx)
|
|
|
|
|
|
|
|
torch_mlir_configure = repository_rule(
|
|
|
|
implementation = _torch_mlir_configure_impl,
|
|
|
|
local = True,
|
2022-08-19 13:42:58 +08:00
|
|
|
configure = True,
|
2022-04-07 02:20:39 +08:00
|
|
|
)
|