Skip to content

Commit

Permalink
More
Browse files Browse the repository at this point in the history
  • Loading branch information
pjreiniger committed Dec 25, 2023
1 parent b1769d9 commit 9edff63
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 31 deletions.
4 changes: 4 additions & 0 deletions robotbuild_generation/pybind_gen_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 2 additions & 4 deletions rules_robotpy_utils/generate_robotpy_project_files.bzl
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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",
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -123,4 +122,3 @@ __generate_on_build_dl_files = rule(
),
},
)

31 changes: 20 additions & 11 deletions rules_robotpy_utils/pybind_rules.bzl
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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"],
Expand All @@ -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"],
)
Expand All @@ -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,
)
Expand Down
23 changes: 10 additions & 13 deletions rules_robotpy_utils/pybind_subproject_rules.bzl
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -24,7 +21,7 @@ def create_robotpy_pybind_subproject(
create_pybind_library(
name,
extension_visibility = visibility,
**pybind_library_kwargs,
**pybind_library_kwargs
)

native.filegroup(
Expand Down
1 change: 0 additions & 1 deletion test/python/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -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(
Expand Down
4 changes: 2 additions & 2 deletions test/python/example/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -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",
],
)
)

0 comments on commit 9edff63

Please sign in to comment.