Automatically generated start_list.txt

Change-Id: Ia0d3c7f8673c584ef0d0911f98d0faefde48583d
diff --git a/aos/BUILD b/aos/BUILD
index 4b7fe3a..e2c5e87 100644
--- a/aos/BUILD
+++ b/aos/BUILD
@@ -3,9 +3,15 @@
   visibility = ['//visibility:public'],
   srcs = [
     '//aos/linux_code:core',
-    '//aos/linux_code/logging:binary_log_writer',
     '//aos/linux_code/logging:log_streamer',
     '//aos/linux_code/logging:log_displayer',
     '//aos/linux_code/starter',
   ],
 )
+filegroup(
+  name = 'prime_start_binaries',
+  visibility = ['//visibility:public'],
+  srcs = [
+    '//aos/linux_code/logging:binary_log_writer',
+  ],
+)
diff --git a/aos/prime/downloader/downloader.bzl b/aos/prime/downloader/downloader.bzl
index e960f27..dd21011 100644
--- a/aos/prime/downloader/downloader.bzl
+++ b/aos/prime/downloader/downloader.bzl
@@ -1,4 +1,5 @@
 def _aos_downloader_impl(ctx):
+  all_files = ctx.files.srcs + ctx.files.start_srcs
   ctx.file_action(
     output = ctx.outputs.executable,
     executable = True,
@@ -6,14 +7,19 @@
       '#!/bin/bash',
       'cd "${BASH_SOURCE[@]}.runfiles"',
       'exec %s %s -- %s "$@"' % (ctx.executable._downloader.short_path,
-                                 ' '.join([src.short_path for src in ctx.files.srcs]),
+                                 ' '.join([src.short_path for src in all_files]),
                                  ctx.attr.default_target),
     ]),
   )
 
+  ctx.file_action(
+    output = ctx.outputs._startlist,
+    content = '\n'.join([f.basename for f in ctx.files.start_srcs]) + '\n',
+  )
+
   return struct(
     runfiles = ctx.runfiles(
-      files = ctx.files.srcs + ctx.files._downloader,
+      files = all_files + ctx.files._downloader + [ctx.outputs._startlist],
       collect_data = True,
       collect_default = True,
     ),
@@ -37,6 +43,10 @@
       cfg = HOST_CFG,
       default = Label('//aos/prime/downloader'),
     ),
+    'start_srcs': attr.label_list(
+      mandatory = True,
+      allow_files = True,
+    ),
     'srcs': attr.label_list(
       mandatory = True,
       allow_files = True,
@@ -46,4 +56,7 @@
     ),
   },
   executable = True,
+  outputs = {
+    '_startlist': '%{name}.start_list.dir/start_list.txt',
+  },
 )
diff --git a/bot3/prime/BUILD b/bot3/prime/BUILD
index 343e748..d30e1c1 100644
--- a/bot3/prime/BUILD
+++ b/bot3/prime/BUILD
@@ -4,13 +4,17 @@
 
 aos_downloader(
   name = 'download',
-  srcs = [
-    '//aos:prime_binaries',
+  start_srcs = [
+    '//aos:prime_start_binaries',
     '//bot3/control_loops/drivetrain:drivetrain_bot3',
     '//bot3/control_loops/intake:intake',
     '//bot3:joystick_reader_bot3',
     '//bot3/control_loops/elevator:elevator',
     '//bot3/autonomous:auto_bot3',
     '//bot3/actors:binaries',
+    '//bot3/wpilib:wpilib_interface',
+  ],
+  srcs = [
+    '//aos:prime_binaries',
   ],
 )
diff --git a/bot3/prime/start_list.txt b/bot3/prime/start_list.txt
deleted file mode 100644
index 2dcfd90..0000000
--- a/bot3/prime/start_list.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-joystick_reader_bot3
-wpilib_interface_bot3
-binary_log_writer
-drivetrain_bot3
-drivetrain_action_bot3
-intake
-elevator
-auto_bot3
diff --git a/bot3/wpilib/BUILD b/bot3/wpilib/BUILD
index 77b90b8..5e0b057 100644
--- a/bot3/wpilib/BUILD
+++ b/bot3/wpilib/BUILD
@@ -1,7 +1,7 @@
 package(default_visibility = ['//visibility:public'])
 
 cc_binary(
-  name = 'wpilib_interface_bot3',
+  name = 'wpilib_interface',
   srcs = [
     'wpilib_interface.cc',
   ],
diff --git a/y2014/prime/BUILD b/y2014/prime/BUILD
index f44802a..f504aba 100644
--- a/y2014/prime/BUILD
+++ b/y2014/prime/BUILD
@@ -4,8 +4,7 @@
 
 aos_downloader(
   name = 'download',
-  srcs = [
-    '//aos:prime_binaries',
+  start_srcs = [
     '//y2014/control_loops/drivetrain:drivetrain',
     '//y2014/control_loops/claw:claw',
     '//y2014/control_loops/shooter:shooter',
@@ -14,7 +13,10 @@
     '//y2014:joystick_reader',
     '//y2014/actors:binaries',
     ':hot_goal_reader',
-    ':start_list.txt',
+    '//aos:prime_start_binaries',
+  ],
+  srcs = [
+    '//aos:prime_binaries',
   ],
 )
 
diff --git a/y2014/prime/start_list.txt b/y2014/prime/start_list.txt
deleted file mode 100644
index 891f83c..0000000
--- a/y2014/prime/start_list.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-binary_log_writer
-wpilib_interface
-joystick_reader
-drivetrain
-auto
-claw
-shooter
-shoot_action
-drivetrain_action
-hot_goal_reader
diff --git a/y2015/prime/BUILD b/y2015/prime/BUILD
index ac34fd2..d25bedd 100644
--- a/y2015/prime/BUILD
+++ b/y2015/prime/BUILD
@@ -4,8 +4,8 @@
 
 aos_downloader(
   name = 'download',
-  srcs = [
-    '//aos:prime_binaries',
+  start_srcs = [
+    '//aos:prime_start_binaries',
     '//y2015/control_loops/drivetrain:drivetrain',
     '//y2015/control_loops/fridge:fridge',
     '//y2015/control_loops/claw:claw',
@@ -13,6 +13,9 @@
     '//y2015:joystick_reader',
     '//y2015/http_status:http_status',
     '//y2015/actors:binaries',
-    ':start_list.txt',
+    '//y2015/wpilib:wpilib_interface',
+  ],
+  srcs = [
+    '//aos:prime_binaries',
   ],
 )
diff --git a/y2015/prime/start_list.txt b/y2015/prime/start_list.txt
deleted file mode 100644
index e4f0a8a..0000000
--- a/y2015/prime/start_list.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-can_pickup_action
-joystick_reader
-pickup_action
-score_action
-stack_action
-wpilib_interface
-binary_log_writer
-claw
-fridge
-horizontal_can_pickup_action
-lift_action
-stack_and_lift_action
-stack_and_hold_action
-held_to_lift_action
-drivetrain
-auto
-drivetrain_action
-http_status