Deduplicate the stripped and non-stripped download targets
I'm really tired of mentally checking that they match all the time.
Change-Id: I0a7956857a07144eddcf5921b7cc073f1b706337
diff --git a/frc971/downloader.bzl b/frc971/downloader.bzl
new file mode 100644
index 0000000..2967127
--- /dev/null
+++ b/frc971/downloader.bzl
@@ -0,0 +1,37 @@
+load('//aos/downloader:downloader.bzl', 'aos_downloader')
+load('//tools/build_rules:label.bzl', 'expand_label')
+
+def robot_downloader(start_binaries, binaries=[], dirs=None, default_target=None):
+ '''Sets up the standard robot download targets.
+
+ Attrs:
+ start_binaries: A list of cc_binary targets to start on the robot.
+ dirs: Passed through to aos_downloader.
+ default_target: Passed through to aos_downloader.
+ '''
+
+ aos_downloader(
+ name = 'download',
+ start_srcs = [
+ '//aos:prime_start_binaries',
+ ] + start_binaries,
+ srcs = [
+ '//aos:prime_binaries',
+ ] + binaries,
+ dirs = dirs,
+ default_target = default_target,
+ restricted_to = ['//tools:roborio'],
+ )
+
+ aos_downloader(
+ name = 'download_stripped',
+ start_srcs = [
+ '//aos:prime_start_binaries_stripped',
+ ] + [expand_label(binary) + ".stripped" for binary in start_binaries],
+ srcs = [
+ '//aos:prime_binaries_stripped',
+ ] + [expand_label(binary) + ".stripped" for binary in binaries],
+ dirs = dirs,
+ default_target = default_target,
+ restricted_to = ['//tools:roborio'],
+ )
diff --git a/tools/build_rules/label.bzl b/tools/build_rules/label.bzl
new file mode 100644
index 0000000..ff02327
--- /dev/null
+++ b/tools/build_rules/label.bzl
@@ -0,0 +1,5 @@
+# This file provides any necessary label abstractions since it doesn't seem like
+# Starlark provides them itself
+
+def expand_label(label):
+ return '%s' % label if ':' in label else '%s:%s' % (label, label.split('/')[-1])
diff --git a/y2012/BUILD b/y2012/BUILD
index 68dcc49..fd9119b 100644
--- a/y2012/BUILD
+++ b/y2012/BUILD
@@ -1,4 +1,4 @@
-load("//aos/downloader:downloader.bzl", "aos_downloader")
+load("//frc971:downloader.bzl", "robot_downloader")
cc_binary(
name = "joystick_reader",
@@ -19,18 +19,12 @@
],
)
-aos_downloader(
- name = "download",
- srcs = [
- "//aos:prime_binaries",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
+robot_downloader(
+ start_binaries = [
":joystick_reader",
":wpilib_interface",
"//y2012/control_loops/drivetrain",
"//y2012/control_loops/accessories",
- "//aos:prime_start_binaries",
],
)
diff --git a/y2014/BUILD b/y2014/BUILD
index 28569d0..dfd2325 100644
--- a/y2014/BUILD
+++ b/y2014/BUILD
@@ -1,4 +1,4 @@
-load("//aos/downloader:downloader.bzl", "aos_downloader")
+load("//frc971:downloader.bzl", "robot_downloader")
cc_library(
name = "constants",
@@ -42,13 +42,8 @@
],
)
-aos_downloader(
- name = "download",
- srcs = [
- "//aos:prime_binaries",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
+robot_downloader(
+ start_binaries = [
":hot_goal_reader",
":joystick_reader",
":wpilib_interface",
@@ -57,7 +52,6 @@
"//y2014/control_loops/shooter:shooter",
"//y2014/autonomous:auto",
"//y2014/actors:binaries",
- "//aos:prime_start_binaries",
],
)
diff --git a/y2014/actors/BUILD b/y2014/actors/BUILD
index 1b9cf8e..09eb3b0 100644
--- a/y2014/actors/BUILD
+++ b/y2014/actors/BUILD
@@ -10,6 +10,14 @@
],
)
+filegroup(
+ name = 'binaries.stripped',
+ srcs = [
+ ':drivetrain_action.stripped',
+ ':shoot_action.stripped',
+ ],
+)
+
queue_library(
name = 'shoot_action_queue',
srcs = [
diff --git a/y2014_bot3/BUILD b/y2014_bot3/BUILD
index 3654191..ea79dac 100644
--- a/y2014_bot3/BUILD
+++ b/y2014_bot3/BUILD
@@ -1,4 +1,4 @@
-load("//aos/downloader:downloader.bzl", "aos_downloader")
+load("//frc971:downloader.bzl", "robot_downloader")
cc_binary(
name = "joystick_reader",
@@ -19,19 +19,13 @@
],
)
-aos_downloader(
- name = "download_stripped",
- srcs = [
- "//aos:prime_binaries_stripped",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
- ":joystick_reader.stripped",
- ":wpilib_interface.stripped",
- "//aos:prime_start_binaries_stripped",
- "//y2014_bot3/autonomous:auto.stripped",
- "//y2014_bot3/control_loops/drivetrain:drivetrain.stripped",
- "//y2014_bot3/control_loops/rollers:rollers.stripped",
+robot_downloader(
+ start_binaries = [
+ ":joystick_reader",
+ ":wpilib_interface",
+ "//y2014_bot3/autonomous:auto",
+ "//y2014_bot3/control_loops/drivetrain:drivetrain",
+ "//y2014_bot3/control_loops/rollers:rollers",
],
)
diff --git a/y2016/BUILD b/y2016/BUILD
index 3414331..c7622f8 100644
--- a/y2016/BUILD
+++ b/y2016/BUILD
@@ -1,4 +1,4 @@
-load("//aos/downloader:downloader.bzl", "aos_downloader")
+load('//frc971:downloader.bzl', 'robot_downloader')
cc_library(
name = "constants",
@@ -50,52 +50,22 @@
],
)
-aos_downloader(
- name = "download",
- srcs = [
- "//aos:prime_binaries",
- ],
- dirs = [
- "//y2016/dashboard:www_files",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
- ":joystick_reader",
- ":wpilib_interface",
- "//aos:prime_start_binaries",
- "//y2016/control_loops/drivetrain:drivetrain",
- "//y2016/control_loops/superstructure:superstructure",
- "//y2016/control_loops/shooter:shooter",
- "//y2016/dashboard:dashboard",
- "//y2016/actors:autonomous_action",
- "//y2016/actors:superstructure_action",
- "//y2016/actors:vision_align_action",
- "//y2016/vision:target_receiver",
- ],
-)
-
-aos_downloader(
- name = "download_stripped",
- srcs = [
- "//aos:prime_binaries_stripped",
- ],
- dirs = [
- "//y2016/dashboard:www_files",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
- ":joystick_reader.stripped",
- ":wpilib_interface.stripped",
- "//aos:prime_start_binaries_stripped",
- "//y2016/control_loops/drivetrain:drivetrain.stripped",
- "//y2016/control_loops/superstructure:superstructure.stripped",
- "//y2016/control_loops/shooter:shooter.stripped",
- "//y2016/dashboard:dashboard.stripped",
- "//y2016/actors:autonomous_action.stripped",
- "//y2016/actors:superstructure_action.stripped",
- "//y2016/actors:vision_align_action.stripped",
- "//y2016/vision:target_receiver.stripped",
- ],
+robot_downloader(
+ start_binaries = [
+ ':joystick_reader',
+ ':wpilib_interface',
+ '//y2016/control_loops/drivetrain:drivetrain',
+ '//y2016/control_loops/superstructure:superstructure',
+ '//y2016/control_loops/shooter:shooter',
+ '//y2016/dashboard:dashboard',
+ '//y2016/actors:autonomous_action',
+ '//y2016/actors:superstructure_action',
+ '//y2016/actors:vision_align_action',
+ '//y2016/vision:target_receiver',
+ ],
+ dirs = [
+ '//y2016/dashboard:www_files',
+ ],
)
cc_binary(
diff --git a/y2017/BUILD b/y2017/BUILD
index aa67a78..e002758 100644
--- a/y2017/BUILD
+++ b/y2017/BUILD
@@ -1,4 +1,4 @@
-load("//aos/downloader:downloader.bzl", "aos_downloader")
+load('//frc971:downloader.bzl', 'robot_downloader')
cc_library(
name = "constants",
@@ -85,38 +85,14 @@
],
)
-aos_downloader(
- name = "download",
- srcs = [
- "//aos:prime_binaries",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
- ":joystick_reader",
- ":wpilib_interface",
- "//aos:prime_start_binaries",
- "//y2017/actors:autonomous_action",
- "//y2017/control_loops/drivetrain:drivetrain",
- "//y2017/control_loops/superstructure:superstructure",
- "//y2017/vision:target_receiver",
- ],
-)
-
-aos_downloader(
- name = "download_stripped",
- srcs = [
- "//aos:prime_binaries_stripped",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
- ":joystick_reader.stripped",
- ":wpilib_interface.stripped",
- "//aos:prime_start_binaries_stripped",
- "//y2017/actors:autonomous_action.stripped",
- "//y2017/control_loops/drivetrain:drivetrain.stripped",
- "//y2017/control_loops/superstructure:superstructure.stripped",
- "//y2017/vision:target_receiver.stripped",
- ],
+robot_downloader(
+ start_binaries = [
+ ':joystick_reader',
+ ':wpilib_interface',
+ '//y2017/control_loops/drivetrain:drivetrain',
+ '//y2017/control_loops/superstructure:superstructure',
+ '//y2017/actors:autonomous_action',
+ ],
)
py_library(
diff --git a/y2018/BUILD b/y2018/BUILD
index 09d2bc9..6173702 100644
--- a/y2018/BUILD
+++ b/y2018/BUILD
@@ -1,41 +1,18 @@
-load("//aos/downloader:downloader.bzl", "aos_downloader")
+load("//frc971:downloader.bzl", "robot_downloader")
load("//aos/build:queues.bzl", "queue_library")
load("@com_google_protobuf//:protobuf.bzl", "cc_proto_library")
-aos_downloader(
- name = "download",
- srcs = [
- "//aos:prime_binaries",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
+robot_downloader(
+ start_binaries = [
":joystick_reader",
":wpilib_interface",
"//y2018/vision:vision_status",
- "//aos:prime_start_binaries",
- "//y2018/control_loops/drivetrain:drivetrain",
"//y2018/actors:autonomous_action",
+ "//y2018/control_loops/drivetrain:drivetrain",
"//y2018/control_loops/superstructure:superstructure",
],
)
-aos_downloader(
- name = "download_stripped",
- srcs = [
- "//aos:prime_binaries_stripped",
- ],
- restricted_to = ["//tools:roborio"],
- start_srcs = [
- ":joystick_reader.stripped",
- ":wpilib_interface.stripped",
- "//y2018/vision:vision_status.stripped",
- "//aos:prime_start_binaries_stripped",
- "//y2018/actors:autonomous_action.stripped",
- "//y2018/control_loops/drivetrain:drivetrain.stripped",
- "//y2018/control_loops/superstructure:superstructure.stripped",
- ],
-)
-
cc_binary(
name = "joystick_reader",
srcs = [