Keep same autogenerated files structure between fbcode and OSS builds (#35951)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/35951
Change generate_code to keep folder structure the same regardless of whether install path is provide
Amend build_variables.bzl accordingly
Another preliminary step to merge https://github.com/pytorch/pytorch/pull/35220
Test Plan: CI
Reviewed By: EscapeZero, seemethere
Differential Revision: D20839410
fbshipit-source-id: 02297560a7e48aa7c6271f7a8517fc4a1ab35271
diff --git a/tools/autograd/templates/python_functions.cpp b/tools/autograd/templates/python_functions.cpp
index 34f1321..858029c 100644
--- a/tools/autograd/templates/python_functions.cpp
+++ b/tools/autograd/templates/python_functions.cpp
@@ -5,7 +5,7 @@
#include <Python.h>
#include <ATen/ATen.h>
-#include "Functions.h"
+#include "torch/csrc/autograd/generated/Functions.h"
#include "torch/csrc/autograd/python_cpp_function.h"
namespace torch { namespace autograd { namespace generated {
diff --git a/tools/build_variables.bzl b/tools/build_variables.bzl
index 51c10cd..7dbe7bf 100644
--- a/tools/build_variables.bzl
+++ b/tools/build_variables.bzl
@@ -1,37 +1,36 @@
-# In the open-source build, these are generated into
-# torch/csrc/{autgrad,jit}/generated. In fbcode, this distinction is
-# not currently relevant so they are combined into one list.
+# In both open-source and fbcode builds, these are generated into
+# torch/csrc/{autgrad,jit}/generated.i
load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library")
load("@fbcode_macros//build_defs:cpp_python_extension.bzl", "cpp_python_extension")
load("@fbsource//xplat/caffe2/caffe2/fb:defs_gpu.bzl", "gpu_library_selector")
GENERATED_CPP = [
- "Functions.cpp",
- "VariableType_0.cpp",
- "VariableType_1.cpp",
- "VariableType_2.cpp",
- "VariableType_3.cpp",
- "VariableType_4.cpp",
- "register_aten_ops_0.cpp",
- "register_aten_ops_1.cpp",
- "register_aten_ops_2.cpp",
- "python_functions.cpp",
- "python_nn_functions.cpp",
- "python_torch_functions.cpp",
- "python_variable_methods.cpp",
+ "autograd/generated/Functions.cpp",
+ "autograd/generated/VariableType_0.cpp",
+ "autograd/generated/VariableType_1.cpp",
+ "autograd/generated/VariableType_2.cpp",
+ "autograd/generated/VariableType_3.cpp",
+ "autograd/generated/VariableType_4.cpp",
+ "jit/generated/register_aten_ops_0.cpp",
+ "jit/generated/register_aten_ops_1.cpp",
+ "jit/generated/register_aten_ops_2.cpp",
+ "autograd/generated/python_functions.cpp",
+ "autograd/generated/python_nn_functions.cpp",
+ "autograd/generated/python_torch_functions.cpp",
+ "autograd/generated/python_variable_methods.cpp",
]
# copied from https://github.com/pytorch/pytorch/blob/master/tools/cpp_build/torch/CMakeLists.txt
libtorch_sources = [
- ":generate-code=Functions.cpp",
- ":generate-code=register_aten_ops_0.cpp",
- ":generate-code=register_aten_ops_1.cpp",
- ":generate-code=register_aten_ops_2.cpp",
- ":generate-code=VariableType_0.cpp",
- ":generate-code=VariableType_1.cpp",
- ":generate-code=VariableType_2.cpp",
- ":generate-code=VariableType_3.cpp",
- ":generate-code=VariableType_4.cpp",
+ ":generate-code=autograd/generated/Functions.cpp",
+ ":generate-code=jit/generated/register_aten_ops_0.cpp",
+ ":generate-code=jit/generated/register_aten_ops_1.cpp",
+ ":generate-code=jit/generated/register_aten_ops_2.cpp",
+ ":generate-code=autograd/generated/VariableType_0.cpp",
+ ":generate-code=autograd/generated/VariableType_1.cpp",
+ ":generate-code=autograd/generated/VariableType_2.cpp",
+ ":generate-code=autograd/generated/VariableType_3.cpp",
+ ":generate-code=autograd/generated/VariableType_4.cpp",
"torch/csrc/autograd/VariableTypeManual.cpp",
"torch/csrc/autograd/anomaly_mode.cpp",
"torch/csrc/autograd/autograd.cpp",
@@ -331,10 +330,10 @@
torch_cpp_headers = native.glob(["torch/csrc/api/include/**/*.h"]) + ["torch/script.h"]
libtorch_python_sources = [
- ":generate-code=python_functions.cpp",
- ":generate-code=python_nn_functions.cpp",
- ":generate-code=python_torch_functions.cpp",
- ":generate-code=python_variable_methods.cpp",
+ ":generate-code=autograd/generated/python_functions.cpp",
+ ":generate-code=autograd/generated/python_nn_functions.cpp",
+ ":generate-code=autograd/generated/python_torch_functions.cpp",
+ ":generate-code=autograd/generated/python_variable_methods.cpp",
"torch/csrc/CudaIPCTypes.cpp",
"torch/csrc/DataLoader.cpp",
"torch/csrc/Device.cpp",
diff --git a/tools/setup_helpers/generate_code.py b/tools/setup_helpers/generate_code.py
index 5ab6f2b..6a73264 100644
--- a/tools/setup_helpers/generate_code.py
+++ b/tools/setup_helpers/generate_code.py
@@ -34,27 +34,32 @@
from tools.jit.gen_jit_dispatch import gen_jit_dispatch
# Build ATen based Variable classes
- autograd_gen_dir = install_dir or 'torch/csrc/autograd/generated'
- jit_gen_dir = install_dir or 'torch/csrc/jit/generated'
+ install_dir = install_dir or 'torch/csrc'
+ autograd_gen_dir = os.path.join(install_dir, 'autograd', 'generated')
+ jit_gen_dir = os.path.join(install_dir, 'jit', 'generated')
for d in (autograd_gen_dir, jit_gen_dir):
if not os.path.exists(d):
os.makedirs(d)
+ runfiles_dir = os.environ.get("RUNFILES_DIR", None)
+ data_dir = os.path.join(runfiles_dir, 'pytorch') if runfiles_dir else ''
+ autograd_dir = os.path.join(data_dir, 'tools', 'autograd')
+ tools_jit_templates = os.path.join(data_dir, 'tools', 'jit', 'templates')
if subset == "pybindings" or not subset:
- gen_autograd_python(declarations_path or DECLARATIONS_PATH, autograd_gen_dir, 'tools/autograd')
+ gen_autograd_python(declarations_path or DECLARATIONS_PATH, autograd_gen_dir, autograd_dir)
if subset == "libtorch" or not subset:
gen_autograd(
declarations_path or DECLARATIONS_PATH,
autograd_gen_dir,
- 'tools/autograd',
+ autograd_dir,
disable_autograd=disable_autograd,
disable_trace=disable_trace,
)
gen_jit_dispatch(
declarations_path or DECLARATIONS_PATH,
jit_gen_dir,
- 'tools/jit/templates',
+ tools_jit_templates,
disable_autograd=disable_autograd,
selected_op_list_path=selected_op_list_path)