Files
allwpilib/wpilibj/BUILD.bazel
PJ Reiniger e7e51c9c05 [bazel][ci] Add CI action to generate pregen patch (#8816)
There were complaints about no patch files being created from CI when
the examples pre-gen fails for people who don't build with bazel. This
adds a new action step to run just the non-robotpy pregen.

I also added an argument to the diff tests to make it a unified diff,
which might make it easier to hand fix.
2026-04-25 11:06:02 -07:00

166 lines
4.6 KiB
Python

load("@allwpilib_pip_deps//:requirements.bzl", "requirement")
load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files")
load("@rules_cc//cc:defs.bzl", "cc_binary")
load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_pkg//:mappings.bzl", "pkg_files")
load("@rules_python//python:defs.bzl", "py_binary")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test", "wpilib_java_library")
load("//shared/bazel/rules/gen:gen-version-file.bzl", "generate_version_file")
load("//wpilibj:generate.bzl", "generate_wpilibj")
py_binary(
name = "generate_hids",
srcs = ["generate_hids.py"],
target_compatible_with = select({
"@rules_bzlmodrio_toolchains//constraints/is_roborio:roborio": ["@platforms//:incompatible"],
"@rules_bzlmodrio_toolchains//constraints/is_systemcore:systemcore": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
deps = [requirement("jinja2")],
)
py_binary(
name = "generate_pwm_motor_controllers",
srcs = ["generate_pwm_motor_controllers.py"],
target_compatible_with = select({
"@rules_bzlmodrio_toolchains//constraints/is_roborio:roborio": ["@platforms//:incompatible"],
"@rules_bzlmodrio_toolchains//constraints/is_systemcore:systemcore": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
deps = [requirement("jinja2")],
)
py_binary(
name = "generate_wpilibj_py",
srcs = ["generate_wpilibj.py"],
main = "generate_wpilibj.py",
target_compatible_with = select({
"@rules_bzlmodrio_toolchains//constraints/is_roborio:roborio": ["@platforms//:incompatible"],
"@rules_bzlmodrio_toolchains//constraints/is_systemcore:systemcore": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
deps = [
":generate_hids",
":generate_pwm_motor_controllers",
],
)
generate_wpilibj(
name = "generate_wpilibj",
)
write_source_files(
name = "write_wpilibj",
diff_args = ["-u"],
files = {
"src/generated": ":generate_wpilibj",
},
suggested_update_target = "//:write_all",
tags = ["pregeneration"],
visibility = ["//visibility:public"],
)
generate_version_file(
name = "generate-version",
output_file = "WPILibVersion.java",
template = "src/generate/WPILibVersion.java.in",
)
filegroup(
name = "generated_java",
srcs = glob(["src/generated/main/java/**/*.java"]),
)
wpilib_java_library(
name = "wpilibj-java",
srcs = [
":generate-version",
":generated_java",
] + glob(["src/main/java/**/*.java"]),
extra_source_pkgs = ["generated_version_files"],
maven_artifact_name = "wpilibj-java",
maven_group_id = "org.wpilib.wpilibj",
visibility = ["//visibility:public"],
deps = [
"//cameraserver:cameraserver-java",
"//cscore:cscore-java",
"//datalog:datalog-java",
"//hal:hal-java",
"//ntcore:ntcore-java",
"//wpimath:wpimath-java",
"//wpinet:wpinet-java",
"//wpiunits:wpiunits-java",
"//wpiutil:wpiutil-java",
"@maven//:org_ejml_ejml_core",
"@maven//:org_ejml_ejml_simple",
],
)
pkg_files(
name = "generated_version_files",
srcs = [
":generate-version",
],
prefix = "edu/wpi/first/wpilibj/util/",
)
wpilib_java_junit5_test(
name = "wpilibj-java-test",
srcs = glob(["src/test/java/**/*.java"]),
resource_strip_prefix = "wpilibj/src/test/resources",
resources = glob(["src/test/resources/**"]),
deps = [
":wpilibj-java",
"//hal:hal-java",
"//ntcore:ntcore-java",
"//wpimath:wpimath-java",
"//wpiunits:wpiunits-java",
"//wpiutil:wpiutil-java",
],
)
cc_binary(
name = "DevMain-Cpp",
srcs = ["src/dev/native/cpp/main.cpp"],
deps = [
],
)
java_binary(
name = "DevMain-Java",
srcs = ["src/dev/java/org/wpilib/DevMain.java"],
main_class = "org.wpilib.DevMain",
deps = [
"//hal:hal-java",
"//ntcore:ntcore-java",
"//wpimath:wpimath-java",
"//wpiutil:wpiutil-java",
],
)
filegroup(
name = "hid_schema",
srcs = [
"src/generate/hids.json",
"src/generate/hids.schema.json",
],
visibility = ["//visibility:public"],
)
filegroup(
name = "pwm_schema",
srcs = [
"src/generate/pwm_motor_controllers.json",
],
visibility = ["//visibility:public"],
)
filegroup(
name = "templates",
srcs = glob(["src/generate/**/*.jinja"]) + [
":hid_schema",
":pwm_schema",
],
visibility = ["//visibility:public"],
)