From 9edff63a0afa02a0434b90ebd76d760a32986a74 Mon Sep 17 00:00:00 2001 From: PJ Reiniger Date: Sun, 24 Dec 2023 21:23:46 -0500 Subject: [PATCH] More --- robotbuild_generation/pybind_gen_utils.py | 4 +++ .../generate_robotpy_project_files.bzl | 6 ++-- rules_robotpy_utils/pybind_rules.bzl | 31 ++++++++++++------- .../pybind_subproject_rules.bzl | 23 ++++++-------- test/python/BUILD.bazel | 1 - test/python/example/BUILD.bazel | 4 +-- 6 files changed, 38 insertions(+), 31 deletions(-) diff --git a/robotbuild_generation/pybind_gen_utils.py b/robotbuild_generation/pybind_gen_utils.py index 9616596..4cb5ff0 100644 --- a/robotbuild_generation/pybind_gen_utils.py +++ b/robotbuild_generation/pybind_gen_utils.py @@ -132,6 +132,10 @@ def _collect_wrappers(self, output_directory): cfg.generation_data = ( f"apriltag/src/main/python/" + cfg.generation_data ) + elif self.project.base_package == "wpimath_test": + cfg.generation_data = ( + f"wpimath/src/test/python/cpp/" + cfg.generation_data + ) else: cfg.generation_data = ( f"{self.project.base_package}/src/main/python/" + cfg.generation_data diff --git a/rules_robotpy_utils/generate_robotpy_project_files.bzl b/rules_robotpy_utils/generate_robotpy_project_files.bzl index 829c3d7..68e5e8a 100644 --- a/rules_robotpy_utils/generate_robotpy_project_files.bzl +++ b/rules_robotpy_utils/generate_robotpy_project_files.bzl @@ -1,5 +1,5 @@ load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files") -load("@rules_python//python:defs.bzl", "py_binary", "py_library") +load("@rules_python//python:defs.bzl", "py_binary") def generate_robotpy_project_files( name, @@ -11,7 +11,6 @@ def generate_robotpy_project_files( visibility = None, init_file = None, parent_folder = ""): - py_binary( name = name + ".pybind_on_build_dl_exe", main = "pybind_on_build_dl_shim.py", @@ -67,7 +66,7 @@ def generate_robotpy_project_files( files = file_mapping, suggested_update_target = "//:write_on_build_dl_files", visibility = ["//visibility:public"], - diff_test = not disable_gen_test + diff_test = not disable_gen_test, ) native.filegroup( @@ -123,4 +122,3 @@ __generate_on_build_dl_files = rule( ), }, ) - diff --git a/rules_robotpy_utils/pybind_rules.bzl b/rules_robotpy_utils/pybind_rules.bzl index 7e30653..d5c1796 100644 --- a/rules_robotpy_utils/pybind_rules.bzl +++ b/rules_robotpy_utils/pybind_rules.bzl @@ -1,6 +1,6 @@ +load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file") load("@pybind11_bazel//:build_defs.bzl", "pybind_extension", "pybind_library") load("@rules_cc//cc:defs.bzl", "cc_library") -load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file") def create_pybind_library( name, @@ -12,10 +12,19 @@ def create_pybind_library( deps = [], entry_point = [], local_defines = [], - extension_visibility = None): - rpy_include_libs = [generation_helper_prefix + "_rpy_includes"] - generated_srcs = [generation_helper_prefix + "_generated_sources"] - gensrc_headers = [generation_helper_prefix + "_gensrc_headers"] + extension_visibility = None, + extension_name = None): + extension_name = extension_name or "_{}".format(name) + + if generation_helper_prefix: + rpy_include_libs = [generation_helper_prefix + "_rpy_includes"] + generated_srcs = [generation_helper_prefix + "_generated_sources"] + gensrc_headers = [generation_helper_prefix + "_gensrc_headers"] + else: + rpy_include_libs = [] + generated_srcs = [] + gensrc_headers = [] + pybind_library( name = "{}_pybind_library".format(name), srcs = generated_srcs + extra_srcs, @@ -48,10 +57,10 @@ def create_pybind_library( ) pybind_extension( - name = "_{}".format(name), + name = extension_name, srcs = entry_point, deps = gensrc_headers + [":{}_pybind_library".format(name)], - defines = ["RPYBUILD_MODULE_NAME=_{}".format(name)], + defines = ["RPYBUILD_MODULE_NAME={}".format(extension_name)], visibility = ["//visibility:private"], target_compatible_with = select({ "@rules_bzlmodrio_toolchains//constraints/is_bullseye32:bullseye32": ["@platforms//:incompatible"], @@ -66,11 +75,11 @@ def create_pybind_library( "no-roborio", ], ) - + copy_file( name = name + ".win_pyd", - src = "_" + name + ".so", - out = "_" + name + ".pyd", + src = extension_name + ".so", + out = extension_name + ".pyd", visibility = ["//visibility:public"], tags = ["manual"], ) @@ -79,7 +88,7 @@ def create_pybind_library( name = name + ".pyso", actual = select({ "@rules_bazelrio//conditions:windows": name + ".win_pyd", - "//conditions:default": "_{}.so".format(name), + "//conditions:default": "{}.so".format(extension_name), }), visibility = extension_visibility, ) diff --git a/rules_robotpy_utils/pybind_subproject_rules.bzl b/rules_robotpy_utils/pybind_subproject_rules.bzl index f43b01a..92ab733 100644 --- a/rules_robotpy_utils/pybind_subproject_rules.bzl +++ b/rules_robotpy_utils/pybind_subproject_rules.bzl @@ -1,20 +1,17 @@ -load("@//shared/bazel/rules/python/pybind_generator:pybind_rules.bzl", "create_pybind_library") load("@//shared/bazel/rules/python/pybind_generator:generate_robotpy_project_files.bzl", "generate_robotpy_project_files") - +load("@//shared/bazel/rules/python/pybind_generator:pybind_rules.bzl", "create_pybind_library") def create_robotpy_pybind_subproject( - name, - config_file, - visibility, - internal_project_dependencies = [], - python_deps = [], - parent_folder = "", - **pybind_library_kwargs, -): - + name, + config_file, + visibility, + internal_project_dependencies = [], + python_deps = [], + parent_folder = "", + **pybind_library_kwargs): generate_robotpy_project_files( name = name, - config_file =config_file, + config_file = config_file, internal_project_dependencies = internal_project_dependencies, python_deps = python_deps, parent_folder = parent_folder, @@ -24,7 +21,7 @@ def create_robotpy_pybind_subproject( create_pybind_library( name, extension_visibility = visibility, - **pybind_library_kwargs, + **pybind_library_kwargs ) native.filegroup( diff --git a/test/python/BUILD.bazel b/test/python/BUILD.bazel index fa0e400..f506333 100644 --- a/test/python/BUILD.bazel +++ b/test/python/BUILD.bazel @@ -1,5 +1,4 @@ load("@rules_robotpy_utils//rules_robotpy_utils:generate_robopy_files.bzl", "generate_robopy_files") -load("@rules_robotpy_utils//rules_robotpy_utils:pybind_rules.bzl", "create_pybind_library") load("@rules_robotpy_utils//rules_robotpy_utils:pybind_rules.bzl", "generated_files_helper") generated_files_helper( diff --git a/test/python/example/BUILD.bazel b/test/python/example/BUILD.bazel index c282afc..bda8b71 100644 --- a/test/python/example/BUILD.bazel +++ b/test/python/example/BUILD.bazel @@ -2,9 +2,9 @@ load("@rules_robotpy_utils//rules_robotpy_utils:pybind_rules.bzl", "create_pybin create_pybind_library( "example", - generation_helper_prefix = "//python:example", entry_point = ["main.cpp"], + generation_helper_prefix = "//python:example", deps = [ "//cpp:example", ], -) \ No newline at end of file +)