[build] Replace JSON packages with group targets (part 2)

This CL replaces the JSON build packages in this repository with GN
group declarations.

Change-Id: I5207b99a25b278cd8afb734864c9b33e874b5c43
diff --git a/bundles/BUILD.gn b/bundles/BUILD.gn
new file mode 100644
index 0000000..c1d286f
--- /dev/null
+++ b/bundles/BUILD.gn
@@ -0,0 +1,12 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("buildbot") {
+  testonly = true
+  public_deps = [
+    "//peridot/packages:peridot",
+    "//topaz/packages:all",
+    "//topaz/public/sdk",
+  ]
+}
diff --git a/bundles/buildbot b/bundles/buildbot
deleted file mode 100644
index 101d76e..0000000
--- a/bundles/buildbot
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "imports": [
-        "peridot/packages/peridot",
-        "topaz/packages/all"
-    ]
-}
diff --git a/packages/BUILD.gn b/packages/BUILD.gn
new file mode 100644
index 0000000..4550cd9
--- /dev/null
+++ b/packages/BUILD.gn
@@ -0,0 +1,46 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("all") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/benchmarks:all",
+    "//topaz/packages/examples:all",
+    "//topaz/packages/prod:all",
+    "//topaz/packages/tests:all",
+    "//topaz/packages/tools:all",
+  ]
+}
+
+group("buildbot") {
+  testonly = true
+  public_deps = [
+    "//peridot/packages:peridot",
+    "//topaz/packages:all",
+  ]
+}
+
+group("kitchen_sink") {
+  testonly = true
+  public_deps = [
+    "//peridot/packages:kitchen_sink",
+    "//topaz/packages:all",
+  ]
+}
+
+group("topaz") {
+  testonly = true
+  public_deps = [
+    "//peridot/packages:peridot",
+    "//topaz/packages/prod:all",
+  ]
+}
+
+group("default") {
+  testonly = true
+  public_deps = [
+    "//peridot/packages:peridot",
+    "//topaz/packages:all",
+  ]
+}
diff --git a/packages/all b/packages/all
deleted file mode 100644
index d355baf..0000000
--- a/packages/all
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/benchmarks/all",
-        "topaz/packages/examples/all",
-        "topaz/packages/prod/all",
-        "topaz/packages/sdk/all",
-        "topaz/packages/tests/all",
-        "topaz/packages/tools/all"
-    ]
-}
diff --git a/packages/benchmarks/BUILD.gn b/packages/benchmarks/BUILD.gn
new file mode 100644
index 0000000..eb6a878
--- /dev/null
+++ b/packages/benchmarks/BUILD.gn
@@ -0,0 +1,18 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("all") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/benchmarks:topaz",
+  ]
+}
+
+group("topaz") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/benchmarks:buildbot",
+    "//topaz/tests/benchmarks:topaz_benchmarks",
+  ]
+}
diff --git a/packages/benchmarks/all b/packages/benchmarks/all
deleted file mode 100644
index c18be35..0000000
--- a/packages/benchmarks/all
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/benchmarks/topaz"
-    ]
-}
diff --git a/packages/benchmarks/topaz b/packages/benchmarks/topaz
deleted file mode 100644
index b9ccd42..0000000
--- a/packages/benchmarks/topaz
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/benchmarks/buildbot"
-    ],
-    "packages": [
-        "//topaz/tests/benchmarks:topaz_benchmarks"
-    ]
-}
diff --git a/packages/buildbot b/packages/buildbot
deleted file mode 100644
index 101d76e..0000000
--- a/packages/buildbot
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "imports": [
-        "peridot/packages/peridot",
-        "topaz/packages/all"
-    ]
-}
diff --git a/packages/config/BUILD.gn b/packages/config/BUILD.gn
new file mode 100644
index 0000000..34c15a8
--- /dev/null
+++ b/packages/config/BUILD.gn
@@ -0,0 +1,19 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("term") {
+  testonly = true
+  public_deps = [
+    "//topaz/app/term:config",
+  ]
+}
+
+group("ermine") {
+  testonly = true
+  public_deps = [
+    "//topaz/shell/ermine:launch_ermine",
+    "//topaz/shell/ermine:ermine_basemgr",
+    "//topaz/shell/ermine:ermine_fonts",
+  ]
+}
diff --git a/packages/config/ermine b/packages/config/ermine
deleted file mode 100644
index faadeb7..0000000
--- a/packages/config/ermine
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "packages": [
-        "//topaz/shell/ermine:launch_ermine",
-        "//topaz/shell/ermine:ermine_basemgr",
-        "//topaz/shell/ermine:ermine_fonts"
-    ]
-}
diff --git a/packages/config/term b/packages/config/term
deleted file mode 100644
index efe0ea9..0000000
--- a/packages/config/term
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/app/term:config"
-    ]
-}
diff --git a/packages/default b/packages/default
deleted file mode 100644
index 101d76e..0000000
--- a/packages/default
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "imports": [
-        "peridot/packages/peridot",
-        "topaz/packages/all"
-    ]
-}
diff --git a/packages/examples/BUILD.gn b/packages/examples/BUILD.gn
new file mode 100644
index 0000000..19a7ccb
--- /dev/null
+++ b/packages/examples/BUILD.gn
@@ -0,0 +1,135 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("dart") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_aot",
+    "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_jit",
+    "//topaz/runtime/dart_runner/examples/hello_app_dart:hello_app_dart_aot",
+    "//topaz/runtime/dart_runner/examples/hello_app_dart:hello_app_dart_jit",
+    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_aot",
+    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_aot_product",
+    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_debug",
+    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_jit",
+    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_jit_product",
+  ]
+}
+
+group("all") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/examples:dart",
+    "//topaz/packages/examples:dart_sdk",
+    "//topaz/packages/examples:fidl",
+    "//topaz/packages/examples:inspect",
+    "//topaz/packages/examples:misc",
+    "//topaz/packages/examples:modular",
+    "//topaz/packages/examples:mondrian",
+    "//topaz/packages/examples:noodles",
+    "//topaz/packages/examples:simple_flutter",
+    "//topaz/packages/examples:spinning_cube",
+    "//topaz/packages/examples:tests",
+    "//topaz/packages/examples:ui",
+  ]
+}
+
+group("dart_sdk") {
+  testonly = true
+  public_deps = [
+    "//topaz/public/dart/fuchsia_services/examples/mind_reader/bin:mind_reader_dart",
+  ]
+}
+
+group("fidl") {
+  testonly = true
+  public_deps = [
+    "//topaz/examples/fidl/echo_client_async_dart",
+    "//topaz/examples/fidl:echo_dart",
+    "//topaz/examples/fidl/echo_server_async_dart",
+    "//topaz/examples/fidl/fidl_bindings_performance",
+    "//topaz/examples/fidl/compiler",
+  ]
+}
+
+group("tests") {
+  testonly = true
+  public_deps = [
+    "//topaz/examples/test/driver_example_mod",
+    "//topaz/examples/test/driver_example_mod:driver_example_mod_tests",
+    "//topaz/public/dart/fuchsia_modular/examples/slider_mod",
+    "//topaz/public/dart/fuchsia_modular/examples/slider_mod:slider_mod_tests",
+  ]
+}
+
+group("misc") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/prod:drivers",
+    "//topaz/examples/mediaplayer/mediaplayer_flutter",
+    "//topaz/examples/mediaplayer/mediaplayer_skia",
+    "//topaz/examples/mine_digger",
+    "//topaz/examples/ledger/todo_list",
+    "//topaz/examples/ledger/todo_list_sledge",
+    "//topaz/examples/media/vu_meter:package",
+  ]
+}
+
+group("ui") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/examples:noodles",
+    "//topaz/examples/ui/button_flutter",
+    "//topaz/examples/ui/jank:package",
+    "//topaz/examples/ui/localized_mod",
+    "//topaz/examples/ui/paint:package",
+    "//topaz/examples/ui/view_config_demo",
+  ]
+}
+
+group("noodles") {
+  testonly = true
+  public_deps = [
+    "//topaz/examples/ui/noodles",
+  ]
+}
+
+group("spinning_cube") {
+  testonly = true
+  public_deps = [
+    "//topaz/app/spinning_cube",
+  ]
+}
+
+group("mondrian") {
+  testonly = true
+  public_deps = [
+    "//topaz/lib/story_shell/examples/example_manual_relationships",
+    "//topaz/lib/story_shell/examples/mondrian_test",
+  ]
+}
+
+group("simple_flutter") {
+  testonly = true
+  public_deps = [
+    "//topaz/examples/ui/simple_flutter:simple_flutter",
+  ]
+}
+
+group("modular") {
+  testonly = true
+  public_deps = [
+    "//topaz/public/dart/fuchsia_modular/examples/fibonacci_agent",
+    "//topaz/public/dart/fuchsia_modular/examples/multilevel_mod",
+    "//topaz/public/dart/fuchsia_modular/examples/shapes_mod",
+    "//topaz/public/dart/fuchsia_modular/examples/slider_mod",
+  ]
+}
+
+group("inspect") {
+  testonly = true
+  public_deps = [
+    "//topaz/public/dart/fuchsia_inspect/examples/inspect_mod",
+  ]
+}
diff --git a/packages/examples/all b/packages/examples/all
deleted file mode 100644
index 657c8ea..0000000
--- a/packages/examples/all
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/examples/dart",
-        "topaz/packages/examples/dart_sdk",
-        "topaz/packages/examples/fidl",
-        "topaz/packages/examples/inspect",
-        "topaz/packages/examples/misc",
-        "topaz/packages/examples/modular",
-        "topaz/packages/examples/mondrian",
-        "topaz/packages/examples/noodles",
-        "topaz/packages/examples/simple_flutter",
-        "topaz/packages/examples/spinning_cube",
-        "topaz/packages/examples/tests",
-        "topaz/packages/examples/ui"
-    ]
-}
diff --git a/packages/examples/dart b/packages/examples/dart
deleted file mode 100644
index ebe7e46..0000000
--- a/packages/examples/dart
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-    "packages": [
-        "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_aot",
-        "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_jit",
-        "//topaz/runtime/dart_runner/examples/hello_app_dart:hello_app_dart_aot",
-        "//topaz/runtime/dart_runner/examples/hello_app_dart:hello_app_dart_jit",
-        "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_aot",
-        "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_aot_product",
-        "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_debug",
-        "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_jit",
-        "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_jit_product"
-    ]
-}
diff --git a/packages/examples/dart_sdk b/packages/examples/dart_sdk
deleted file mode 100644
index 8cf7dbf..0000000
--- a/packages/examples/dart_sdk
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "packages": [
-      "//topaz/public/dart/fuchsia_services/examples/mind_reader/bin:mind_reader_dart"
-  ]
-}
diff --git a/packages/examples/disabled/BUILD.gn b/packages/examples/disabled/BUILD.gn
new file mode 100644
index 0000000..2e91782
--- /dev/null
+++ b/packages/examples/disabled/BUILD.gn
@@ -0,0 +1,10 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("flutter_gallery") {
+  testonly = true
+  public_deps = [
+    "//third_party/dart-pkg/git/flutter/examples/flutter_gallery",
+  ]
+}
diff --git a/packages/examples/disabled/flutter_gallery b/packages/examples/disabled/flutter_gallery
deleted file mode 100644
index a914696..0000000
--- a/packages/examples/disabled/flutter_gallery
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//third_party/dart-pkg/git/flutter/examples/flutter_gallery"
-    ]
-}
diff --git a/packages/examples/fidl b/packages/examples/fidl
deleted file mode 100644
index 837877e..0000000
--- a/packages/examples/fidl
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "labels": [
-        "//topaz/examples/fidl/compiler"
-    ],
-    "packages": [
-        "//topaz/examples/fidl/echo_client_async_dart",
-        "//topaz/examples/fidl:echo_dart",
-        "//topaz/examples/fidl/echo_server_async_dart",
-        "//topaz/examples/fidl/fidl_bindings_performance"
-    ]
-}
diff --git a/packages/examples/inspect b/packages/examples/inspect
deleted file mode 100644
index fcb19c7..0000000
--- a/packages/examples/inspect
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/public/dart/fuchsia_inspect/examples/inspect_mod"
-    ]
-}
diff --git a/packages/examples/misc b/packages/examples/misc
deleted file mode 100644
index 518210e..0000000
--- a/packages/examples/misc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/prod/drivers"
-    ],
-    "packages": [
-        "//topaz/examples/mediaplayer/mediaplayer_flutter",
-        "//topaz/examples/mediaplayer/mediaplayer_skia",
-        "//topaz/examples/mine_digger",
-        "//topaz/examples/ledger/todo_list",
-        "//topaz/examples/ledger/todo_list_sledge",
-        "//topaz/examples/media/vu_meter:package"
-    ]
-}
diff --git a/packages/examples/modular b/packages/examples/modular
deleted file mode 100644
index 6129ad2..0000000
--- a/packages/examples/modular
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "packages": [
-        "//topaz/public/dart/fuchsia_modular/examples/fibonacci_agent",
-        "//topaz/public/dart/fuchsia_modular/examples/multilevel_mod",
-        "//topaz/public/dart/fuchsia_modular/examples/shapes_mod",
-        "//topaz/public/dart/fuchsia_modular/examples/slider_mod"
-    ]
-}
diff --git a/packages/examples/mondrian b/packages/examples/mondrian
deleted file mode 100644
index 9d3e695..0000000
--- a/packages/examples/mondrian
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "packages": [
-        "//topaz/lib/story_shell/examples/example_manual_relationships",
-        "//topaz/lib/story_shell/examples/mondrian_test"
-    ]
-}
diff --git a/packages/examples/noodles b/packages/examples/noodles
deleted file mode 100644
index a98a069..0000000
--- a/packages/examples/noodles
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/examples/ui/noodles"
-    ]
-}
diff --git a/packages/examples/simple_flutter b/packages/examples/simple_flutter
deleted file mode 100644
index 673ebe7..0000000
--- a/packages/examples/simple_flutter
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/examples/ui/simple_flutter:simple_flutter"
-    ]
-}
diff --git a/packages/examples/spinning_cube b/packages/examples/spinning_cube
deleted file mode 100644
index f30fe67..0000000
--- a/packages/examples/spinning_cube
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/app/spinning_cube"
-    ]
-}
diff --git a/packages/examples/tests b/packages/examples/tests
deleted file mode 100644
index be220bb..0000000
--- a/packages/examples/tests
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "packages": [
-    "//topaz/examples/test/driver_example_mod",
-    "//topaz/examples/test/driver_example_mod:driver_example_mod_tests",
-    "//topaz/public/dart/fuchsia_modular/examples/slider_mod",
-    "//topaz/public/dart/fuchsia_modular/examples/slider_mod:slider_mod_tests"
-  ]
-}
-
diff --git a/packages/examples/ui b/packages/examples/ui
deleted file mode 100644
index f4a7569..0000000
--- a/packages/examples/ui
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/examples/noodles"
-    ],
-    "packages": [
-        "//topaz/examples/ui/button_flutter",
-        "//topaz/examples/ui/jank:package",
-        "//topaz/examples/ui/localized_mod",
-        "//topaz/examples/ui/paint:package",
-        "//topaz/examples/ui/view_config_demo"
-    ]
-}
diff --git a/packages/kitchen_sink b/packages/kitchen_sink
deleted file mode 100644
index 203bfb0..0000000
--- a/packages/kitchen_sink
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "imports": [
-        "peridot/packages/kitchen_sink",
-        "topaz/packages/all"
-    ]
-}
diff --git a/packages/prod/BUILD.gn b/packages/prod/BUILD.gn
new file mode 100644
index 0000000..8017175
--- /dev/null
+++ b/packages/prod/BUILD.gn
@@ -0,0 +1,278 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("display_settings") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/display_settings",
+  ]
+}
+
+group("web_runner") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/prod:chromium",
+    "//topaz/runtime/chromium:web_runner",
+  ]
+}
+
+group("system_dashboard") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/system_dashboard",
+  ]
+}
+
+group("dart") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/dart:dart",
+  ]
+}
+
+group("flutter") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/prod:flutter_aot_product",
+    "//topaz/packages/prod:flutter_aot",
+    "//topaz/packages/prod:flutter_jit_product",
+    "//topaz/packages/prod:flutter_jit",
+  ]
+}
+
+group("all") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/prod:accessibility_settings",
+    "//topaz/packages/prod:bluetooth_settings",
+    "//topaz/packages/prod:cast_runner",
+    "//topaz/packages/prod:chromium",
+    "//topaz/packages/prod:dart",
+    "//topaz/packages/prod:dart_aot_product_runner",
+    "//topaz/packages/prod:dart_aot_runner",
+    "//topaz/packages/prod:dart_jit_product_runner",
+    "//topaz/packages/prod:dart_jit_runner",
+    "//topaz/packages/prod:dart_runner",
+    "//topaz/packages/prod:device_settings",
+    "//topaz/packages/prod:display_settings",
+    "//topaz/packages/prod:ermine",
+    "//topaz/packages/prod:flutter",
+    "//topaz/packages/prod:flutter_aot",
+    "//topaz/packages/prod:flutter_aot_product",
+    "//topaz/packages/prod:flutter_jit",
+    "//topaz/packages/prod:flutter_jit_product",
+    "//topaz/packages/prod:google_auth_provider",
+    "//topaz/packages/prod:latin-ime",
+    "//topaz/packages/prod:modules_index",
+    "//topaz/packages/prod:mondrian",
+    "//topaz/packages/prod:skottie_viewer",
+    "//topaz/packages/prod:system_dashboard",
+    "//topaz/packages/prod:term",
+    "//topaz/packages/prod:text_input_mod",
+    "//topaz/packages/prod:userpicker_base_shell",
+    "//topaz/packages/prod:web_runner",
+    "//topaz/packages/prod:wifi_settings",
+    "//topaz/packages/prod:xi",
+  ]
+}
+
+group("google_auth_provider") {
+  testonly = true
+  public_deps = [
+    "//topaz/auth_providers/google:google_auth_provider",
+  ]
+}
+
+group("text_input_mod") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/ui/text_input_mod",
+  ]
+}
+
+group("flutter_aot") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/prod:scenic",
+    "//topaz/runtime/flutter_runner:flutter_aot_runner",
+  ]
+}
+
+group("wifi_settings") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/wifi_settings",
+  ]
+}
+
+group("flutter_aot_product") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/prod:scenic",
+    "//topaz/runtime/flutter_runner:flutter_aot_product_runner",
+  ]
+}
+
+group("accessibility_settings") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/accessibility_settings",
+  ]
+}
+
+group("dart_jit_runner") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/dart_runner:dart_jit_runner",
+  ]
+}
+
+group("dart_aot_product_runner") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/dart_runner:dart_aot_product_runner",
+  ]
+}
+
+group("skottie_viewer") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/ui/skottie_viewer:package",
+  ]
+}
+
+group("dart_jit_product_runner") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/dart_runner:dart_jit_product_runner",
+  ]
+}
+
+group("userpicker_base_shell") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/prod:flutter",
+    "//topaz/bin/userpicker_base_shell",
+  ]
+}
+
+group("dart_aot_runner") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/dart_runner:dart_aot_runner",
+  ]
+}
+
+group("dart_runner") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/prod:dart_aot_runner",
+    "//topaz/packages/prod:dart_aot_product_runner",
+    "//topaz/packages/prod:dart_jit_runner",
+    "//topaz/packages/prod:dart_jit_product_runner",
+  ]
+}
+
+group("flutter_jit_product") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/prod:scenic",
+    "//topaz/runtime/flutter_runner:flutter_jit_product_runner",
+  ]
+}
+
+group("modules_index") {
+  testonly = true
+  public_deps = [
+    "//topaz:topaz_modules_index",
+  ]
+}
+
+group("latin-ime") {
+  testonly = true
+  public_deps = [
+    "//topaz/app/latin-ime",
+  ]
+}
+
+group("term") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/prod:fonts",
+    "//garnet/bin/fonts:font_provider_tests",
+    "//topaz/app/term",
+    "//third_party/vulkan_loader_and_validation_layers/loader:vulkan_loader",
+  ]
+}
+
+group("bluetooth_settings") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/bluetooth_settings",
+  ]
+}
+
+group("device_settings") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/device_settings",
+  ]
+}
+
+group("chromium") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/chromium",
+    "//topaz/runtime/chromium:web_runner",
+  ]
+}
+
+group("mondrian") {
+  testonly = true
+  public_deps = [
+    "//topaz/shell/mondrian_story_shell:mondrian",
+  ]
+}
+
+group("flutter_jit") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/prod:scenic",
+    "//topaz/runtime/flutter_runner:flutter_jit_runner",
+  ]
+}
+
+group("xi") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/xi/xi_mod",
+    "//topaz/bin/xi/xi_embeddable",
+    "//topaz/bin/xi/xi_session_agent",
+    "//topaz/bin/xi/xi_session_demo",
+    "//garnet/bin/xi_core",
+    "//topaz/bin/xi",
+  ]
+}
+
+group("ermine") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/prod:chromium",
+    "//topaz/packages/prod:dart_jit_runner",
+    "//topaz/packages/prod:dart_jit_product_runner",
+    "//topaz/packages/prod:google_auth_provider",
+    "//topaz/packages/prod:mondrian",
+    "//topaz/packages/prod:userpicker_base_shell",
+    "//topaz/packages/prod:wifi_settings",
+    "//topaz/shell/ermine:ermine",
+    "//topaz/shell/ermine:ermine_ask_module",
+  ]
+}
+
+group("cast_runner") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/cast_runner",
+  ]
+}
diff --git a/packages/prod/accessibility_settings b/packages/prod/accessibility_settings
deleted file mode 100644
index c129d43..0000000
--- a/packages/prod/accessibility_settings
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/accessibility_settings"
-    ]
-}
diff --git a/packages/prod/all b/packages/prod/all
deleted file mode 100644
index 4e29a39..0000000
--- a/packages/prod/all
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/prod/accessibility_settings",
-        "topaz/packages/prod/bluetooth_settings",
-        "topaz/packages/prod/cast_runner",
-        "topaz/packages/prod/chromium",
-        "topaz/packages/prod/dart",
-        "topaz/packages/prod/dart_aot_product_runner",
-        "topaz/packages/prod/dart_aot_runner",
-        "topaz/packages/prod/dart_jit_product_runner",
-        "topaz/packages/prod/dart_jit_runner",
-        "topaz/packages/prod/dart_runner",
-        "topaz/packages/prod/device_settings",
-        "topaz/packages/prod/display_settings",
-        "topaz/packages/prod/ermine",
-        "topaz/packages/prod/flutter",
-        "topaz/packages/prod/flutter_aot",
-        "topaz/packages/prod/flutter_aot_product",
-        "topaz/packages/prod/flutter_jit",
-        "topaz/packages/prod/flutter_jit_product",
-        "topaz/packages/prod/google_auth_provider",
-        "topaz/packages/prod/latin-ime",
-        "topaz/packages/prod/modules_index",
-        "topaz/packages/prod/mondrian",
-        "topaz/packages/prod/skottie_viewer",
-        "topaz/packages/prod/system_dashboard",
-        "topaz/packages/prod/term",
-        "topaz/packages/prod/text_input_mod",
-        "topaz/packages/prod/userpicker_base_shell",
-        "topaz/packages/prod/web_runner",
-        "topaz/packages/prod/wifi_settings",
-        "topaz/packages/prod/xi"
-    ]
-}
diff --git a/packages/prod/bluetooth_settings b/packages/prod/bluetooth_settings
deleted file mode 100644
index 10b58ea..0000000
--- a/packages/prod/bluetooth_settings
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/bluetooth_settings"
-    ]
-}
diff --git a/packages/prod/cast_runner b/packages/prod/cast_runner
deleted file mode 100644
index 2d6b1f6..0000000
--- a/packages/prod/cast_runner
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "packages": [
-    "//topaz/runtime/cast_runner"
-  ]
-}
diff --git a/packages/prod/chromium b/packages/prod/chromium
deleted file mode 100644
index 0bb7ce9..0000000
--- a/packages/prod/chromium
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "packages": [
-    "//topaz/runtime/chromium",
-    "//topaz/runtime/chromium:web_runner"
-  ]
-}
diff --git a/packages/prod/dart b/packages/prod/dart
deleted file mode 100644
index 3e444dd..0000000
--- a/packages/prod/dart
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/runtime/dart:dart"
-    ]
-}
diff --git a/packages/prod/dart_aot_product_runner b/packages/prod/dart_aot_product_runner
deleted file mode 100644
index 598d88f..0000000
--- a/packages/prod/dart_aot_product_runner
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/runtime/dart_runner:dart_aot_product_runner"
-    ]
-}
diff --git a/packages/prod/dart_aot_runner b/packages/prod/dart_aot_runner
deleted file mode 100644
index 91f8ff5..0000000
--- a/packages/prod/dart_aot_runner
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/runtime/dart_runner:dart_aot_runner"
-    ]
-}
diff --git a/packages/prod/dart_jit_product_runner b/packages/prod/dart_jit_product_runner
deleted file mode 100644
index 5e9b41b..0000000
--- a/packages/prod/dart_jit_product_runner
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/runtime/dart_runner:dart_jit_product_runner"
-    ]
-}
diff --git a/packages/prod/dart_jit_runner b/packages/prod/dart_jit_runner
deleted file mode 100644
index 38cb812..0000000
--- a/packages/prod/dart_jit_runner
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/runtime/dart_runner:dart_jit_runner"
-    ]
-}
diff --git a/packages/prod/dart_runner b/packages/prod/dart_runner
deleted file mode 100644
index 69744ac..0000000
--- a/packages/prod/dart_runner
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/prod/dart_aot_runner",
-        "topaz/packages/prod/dart_aot_product_runner",
-        "topaz/packages/prod/dart_jit_runner",
-        "topaz/packages/prod/dart_jit_product_runner"
-    ]
-}
diff --git a/packages/prod/device_settings b/packages/prod/device_settings
deleted file mode 100644
index a662a68..0000000
--- a/packages/prod/device_settings
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/device_settings"
-    ]
-}
diff --git a/packages/prod/display_settings b/packages/prod/display_settings
deleted file mode 100644
index fee35c1..0000000
--- a/packages/prod/display_settings
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/display_settings"
-    ]
-}
diff --git a/packages/prod/ermine b/packages/prod/ermine
deleted file mode 100644
index 4b5b60e..0000000
--- a/packages/prod/ermine
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/prod/chromium",
-        "topaz/packages/prod/dart_jit_runner",
-        "topaz/packages/prod/dart_jit_product_runner",
-        "topaz/packages/prod/google_auth_provider",
-        "topaz/packages/prod/mondrian",
-        "topaz/packages/prod/userpicker_base_shell",
-        "topaz/packages/prod/wifi_settings"
-    ],
-    "packages": [
-        "//topaz/shell/ermine:ermine",
-        "//topaz/shell/ermine:ermine_ask_module"
-    ]
-}
diff --git a/packages/prod/flutter b/packages/prod/flutter
deleted file mode 100644
index 8d662e3..0000000
--- a/packages/prod/flutter
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/prod/flutter_aot_product",
-        "topaz/packages/prod/flutter_aot",
-        "topaz/packages/prod/flutter_jit_product",
-        "topaz/packages/prod/flutter_jit"
-    ]
-}
diff --git a/packages/prod/flutter_aot b/packages/prod/flutter_aot
deleted file mode 100644
index 92274d1..0000000
--- a/packages/prod/flutter_aot
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/prod/scenic"
-    ],
-    "packages": [
-        "//topaz/runtime/flutter_runner:flutter_aot_runner"
-    ]
-}
diff --git a/packages/prod/flutter_aot_product b/packages/prod/flutter_aot_product
deleted file mode 100644
index 180641b..0000000
--- a/packages/prod/flutter_aot_product
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/prod/scenic"
-    ],
-    "packages": [
-        "//topaz/runtime/flutter_runner:flutter_aot_product_runner"
-    ]
-}
diff --git a/packages/prod/flutter_jit b/packages/prod/flutter_jit
deleted file mode 100644
index 237c6b5..0000000
--- a/packages/prod/flutter_jit
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/prod/scenic"
-    ],
-    "packages": [
-        "//topaz/runtime/flutter_runner:flutter_jit_runner"
-    ]
-}
diff --git a/packages/prod/flutter_jit_product b/packages/prod/flutter_jit_product
deleted file mode 100644
index df876a3..0000000
--- a/packages/prod/flutter_jit_product
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/prod/scenic"
-    ],
-    "packages": [
-        "//topaz/runtime/flutter_runner:flutter_jit_product_runner"
-    ]
-}
diff --git a/packages/prod/google_auth_provider b/packages/prod/google_auth_provider
deleted file mode 100644
index 6f5276d..0000000
--- a/packages/prod/google_auth_provider
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/auth_providers/google:google_auth_provider"
-    ]
-}
diff --git a/packages/prod/latin-ime b/packages/prod/latin-ime
deleted file mode 100644
index 0f96e0e..0000000
--- a/packages/prod/latin-ime
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/app/latin-ime"
-    ]
-}
diff --git a/packages/prod/modules_index b/packages/prod/modules_index
deleted file mode 100644
index 2cd2306..0000000
--- a/packages/prod/modules_index
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz:topaz_modules_index"
-    ]
-}
diff --git a/packages/prod/mondrian b/packages/prod/mondrian
deleted file mode 100644
index d0ec989..0000000
--- a/packages/prod/mondrian
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/shell/mondrian_story_shell:mondrian"
-    ]
-}
diff --git a/packages/prod/skottie_viewer b/packages/prod/skottie_viewer
deleted file mode 100644
index 7ad3e90..0000000
--- a/packages/prod/skottie_viewer
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/ui/skottie_viewer:package"
-    ]
-}
diff --git a/packages/prod/system_dashboard b/packages/prod/system_dashboard
deleted file mode 100644
index de3e2cc..0000000
--- a/packages/prod/system_dashboard
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "packages": [
-		"//topaz/bin/system_dashboard"
-	]
-}
-
diff --git a/packages/prod/term b/packages/prod/term
deleted file mode 100644
index 7ec4c1e..0000000
--- a/packages/prod/term
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/prod/fonts"
-    ],
-    "packages": [
-        "//garnet/bin/fonts:font_provider_tests",
-        "//topaz/app/term",
-        "//third_party/vulkan_loader_and_validation_layers/loader:vulkan_loader"
-    ]
-}
diff --git a/packages/prod/text_input_mod b/packages/prod/text_input_mod
deleted file mode 100644
index 6ff5af2..0000000
--- a/packages/prod/text_input_mod
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/ui/text_input_mod"
-    ]
-}
diff --git a/packages/prod/userpicker_base_shell b/packages/prod/userpicker_base_shell
deleted file mode 100644
index 420c45d..0000000
--- a/packages/prod/userpicker_base_shell
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/prod/flutter"
-    ],
-    "packages": [
-        "//topaz/bin/userpicker_base_shell"
-    ]
-}
diff --git a/packages/prod/web_runner b/packages/prod/web_runner
deleted file mode 100644
index 4b88cc2..0000000
--- a/packages/prod/web_runner
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "imports": [
-    "topaz/packages/prod/chromium"
-  ],
-  "packages": [
-    "//topaz/runtime/chromium:web_runner"
-  ]
-}
diff --git a/packages/prod/wifi_settings b/packages/prod/wifi_settings
deleted file mode 100644
index 38ce256..0000000
--- a/packages/prod/wifi_settings
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/wifi_settings"
-    ]
-}
diff --git a/packages/prod/xi b/packages/prod/xi
deleted file mode 100644
index 634cab5..0000000
--- a/packages/prod/xi
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "labels": [
-        "//topaz/bin/xi"
-    ],
-    "packages": [
-        "//topaz/bin/xi/xi_mod",
-        "//topaz/bin/xi/xi_embeddable",
-        "//topaz/bin/xi/xi_session_agent",
-        "//topaz/bin/xi/xi_session_demo",
-        "//garnet/bin/xi_core"
-    ]
-}
diff --git a/packages/products/BUILD.gn b/packages/products/BUILD.gn
new file mode 100644
index 0000000..401fefa
--- /dev/null
+++ b/packages/products/BUILD.gn
@@ -0,0 +1,13 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("term") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/products:graphical",
+    "//garnet/packages/tools:scenic",
+    "//topaz/packages/config:term",
+    "//topaz/packages/prod:term",
+  ]
+}
diff --git a/packages/products/term b/packages/products/term
deleted file mode 100644
index 6d1c849..0000000
--- a/packages/products/term
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/products/graphical",
-        "garnet/packages/tools/scenic",
-        "topaz/packages/config/term",
-        "topaz/packages/prod/term"
-    ]
-}
diff --git a/packages/sdk/BUILD.gn b/packages/sdk/BUILD.gn
new file mode 100644
index 0000000..7759057
--- /dev/null
+++ b/packages/sdk/BUILD.gn
@@ -0,0 +1,17 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("all") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/sdk:topaz",
+  ]
+}
+
+group("topaz") {
+  testonly = true
+  public_deps = [
+    "//topaz/public/sdk:topaz",
+  ]
+}
diff --git a/packages/sdk/all b/packages/sdk/all
deleted file mode 100644
index 0a5ae1b..0000000
--- a/packages/sdk/all
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "imports": [
-    "topaz/packages/sdk/topaz"
-  ]
-}
diff --git a/packages/sdk/topaz b/packages/sdk/topaz
deleted file mode 100644
index acc09f0..0000000
--- a/packages/sdk/topaz
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "labels": [
-    "//topaz/public/sdk:topaz"
-  ]
-}
diff --git a/packages/tests/BUILD.gn b/packages/tests/BUILD.gn
new file mode 100644
index 0000000..5261ca6
--- /dev/null
+++ b/packages/tests/BUILD.gn
@@ -0,0 +1,197 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("auth_provider_tests") {
+  testonly = true
+  public_deps = [
+    "//topaz/auth_providers:auth_provider_tests",
+  ]
+}
+
+group("scenic") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/tests:scenic",
+    "//topaz/bin/ui/benchmarks/image_grid_flutter",
+    "//garnet/examples/ui:tile_view",
+  ]
+}
+
+group("dart_unittests") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/dart_fidl_json/test:dart_fidl_json_test($host_toolchain)",
+    "//topaz/examples/test/flutter_widget_test($host_toolchain)",
+    "//topaz/lib/keyboard/flutter:keyboard_test($host_toolchain)",
+    "//topaz/lib/setui/common:lib_setui_common_test($host_toolchain)",
+    "//topaz/lib/setui/flutter:lib_setui_flutter_test($host_toolchain)",
+    "//topaz/lib/setui/settings/client:lib_setui_settings_client_test($host_toolchain)",
+    "//topaz/lib/setui/settings/common:lib_setui_settings_common_test($host_toolchain)",
+    "//topaz/lib/setui/settings/service:lib_setui_service_test($host_toolchain)",
+    "//topaz/lib/setui/settings/testing:lib_setui_settings_testing_test($host_toolchain)",
+    "//topaz/public/dart/fuchsia_inspect:fuchsia_inspect_package_unittests($host_toolchain)",
+    "//topaz/public/dart/fuchsia_logger:fuchsia_logger_package_unittests($host_toolchain)",
+    "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_unittests($host_toolchain)",
+    "//topaz/public/dart/fuchsia_services:fuchsia_services_package_unittests($host_toolchain)",
+    "//topaz/public/dart/fuchsia_scenic_flutter:fuchsia_scenic_flutter_unittests($host_toolchain)",
+    "//topaz/public/dart/sledge:dart_sledge_tests($host_toolchain)",
+    "//topaz/public/dart/widgets:dart_widget_tests($host_toolchain)",
+    "//topaz/public/lib/app/dart:dart_app_tests($host_toolchain)",
+    "//topaz/public/lib/display/flutter:display_test($host_toolchain)",
+    "//topaz/public/lib/mondrian/dart:mondrian_lib_tests($host_toolchain)",
+    "//topaz/public/lib/schemas/dart:dart_schema_tests($host_toolchain)",
+    "//topaz/public/lib/testing/app_driver/dart:fake_module_driver_test($host_toolchain)",
+    "//topaz/shell/mondrian_story_shell:mondrian_story_shell_tests($host_toolchain)",
+  ]
+}
+
+group("bindings_tests") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/fidl_bindings_test/test:fidl_bindings_test",
+    "//topaz/bin/fidl_bindings_test/server:fidl_bindings_test_server",
+  ]
+}
+
+group("dart") {
+  testonly = true
+  public_deps = [
+    "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_test",
+    "//topaz/runtime/dart_runner/integration:dart_aot_runner_test",
+    "//topaz/runtime/dart_runner/integration:dart_jit_runner_test",
+    "//topaz/public/dart/zircon:test_extract_zircon_constants($host_toolchain)",
+  ]
+}
+
+group("all") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/tests:run_test_component",
+    "//topaz/packages/examples:tests",
+    "//topaz/packages/tests:auth_provider_tests",
+    "//topaz/packages/tests:bindings_tests",
+    "//topaz/packages/tests:crasher_dart",
+    "//topaz/packages/tests:crasher_flutter",
+    "//topaz/packages/tests:dart",
+    "//topaz/packages/tests:dart_target_unittests",
+    "//topaz/packages/tests:dart_target_integration_tests",
+    "//topaz/packages/tests:dart_unittests",
+    "//topaz/packages/tests:fidl_changes",
+    "//topaz/packages/tests:fidl_compatibility_test",
+    "//topaz/packages/tests:fidl_compatibility_test_server_dart",
+    "//topaz/packages/tests:flutter_runner_tests",
+    "//topaz/packages/tests:flutter_screencap_test",
+    "//topaz/packages/tests:flutter_screencap_test_app",
+    "//topaz/packages/tests:key_listener_test",
+    "//topaz/packages/tests:scenic",
+    "//topaz/packages/tests:sledge",
+    "//topaz/packages/tests:web_runner_tests",
+  ]
+}
+
+group("crasher_flutter") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/crasher_flutter",
+  ]
+}
+
+group("flutter_screencap_test_app") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/tools:scenic",
+    "//topaz/bin/flutter_screencap_test:flutter_screencap_test_app",
+  ]
+}
+
+group("dart_target_unittests") {
+  testonly = true
+  public_deps = [
+    "//topaz/public/dart-pkg/zircon:dart_zircon_test",
+    "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_integration_tests",
+    "//topaz/public/dart/fuchsia_services:fuchsia_services_package_integration_tests",
+    "//topaz/public/dart/fuchsia_vfs:fuchsia_vfs_package_unittests",
+    "//topaz/runtime/dart/utils:run_vmservice_object_tests",
+  ]
+}
+
+group("fidl_compatibility_test_server_dart") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/fidl_compatibility_test/dart:fidl_compatibility_test_server_dart",
+  ]
+}
+
+group("crasher_dart") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/crasher_dart",
+  ]
+}
+
+group("fidl_compatibility_test") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/tests:fidl_compatibility_test_bin",
+    "//garnet/packages/tests:fidl_compatibility_test_server_cpp",
+    "//garnet/packages/tests:fidl_compatibility_test_server_go",
+    "//garnet/packages/tests:fidl_compatibility_test_server_rust",
+    "//topaz/packages/tests:fidl_compatibility_test_server_dart",
+    "//topaz/bin/fidl_compatibility_test:package",
+  ]
+}
+
+group("web_runner_tests") {
+  testonly = true
+  public_deps = [
+    "//topaz/tests/web_runner_tests",
+  ]
+}
+
+group("key_listener_test") {
+  testonly = true
+  public_deps = [
+    "//topaz/lib/story_shell/examples/story_shell_test:key_listener_device_tests",
+  ]
+}
+
+group("flutter_screencap_test") {
+  testonly = true
+  public_deps = [
+    "//peridot/packages/prod:integration_testing",
+    "//topaz/packages/tests:flutter_screencap_test_app",
+    "//topaz/bin/flutter_screencap_test",
+  ]
+}
+
+group("dart_target_integration_tests") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/examples:fidl",
+    "//topaz/tests/dart_app_service_tests:dart_app_service_tests",
+  ]
+}
+
+group("fidl_changes") {
+  testonly = true
+  public_deps = [
+    "//topaz/tests/fidl-changes",
+  ]
+}
+
+group("sledge") {
+  testonly = true
+  public_deps = [
+    "//peridot/packages/tests:ledger",
+    "//topaz/public/dart/sledge:sledge_integration_tests",
+  ]
+}
+
+group("flutter_runner_tests") {
+  testonly = true
+  public_deps = [
+    "//garnet/packages/prod:fonts",
+    "//topaz/runtime/flutter_runner:flutter_runner_tests",
+  ]
+}
diff --git a/packages/tests/all b/packages/tests/all
deleted file mode 100644
index a232bb0..0000000
--- a/packages/tests/all
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/tests/run_test_component",
-        "topaz/packages/examples/tests",
-        "topaz/packages/tests/auth_provider_tests",
-        "topaz/packages/tests/bindings_tests",
-        "topaz/packages/tests/crasher_dart",
-        "topaz/packages/tests/crasher_flutter",
-        "topaz/packages/tests/dart",
-        "topaz/packages/tests/dart_target_unittests",
-        "topaz/packages/tests/dart_target_integration_tests",
-        "topaz/packages/tests/dart_unittests",
-        "topaz/packages/tests/fidl_changes",
-        "topaz/packages/tests/fidl_compatibility_test",
-        "topaz/packages/tests/fidl_compatibility_test_server_dart",
-        "topaz/packages/tests/flutter_runner_tests",
-        "topaz/packages/tests/flutter_screencap_test",
-        "topaz/packages/tests/flutter_screencap_test_app",
-        "topaz/packages/tests/key_listener_test",
-        "topaz/packages/tests/scenic",
-        "topaz/packages/tests/sledge",
-        "topaz/packages/tests/web_runner_tests"
-    ]
-}
diff --git a/packages/tests/auth_provider_tests b/packages/tests/auth_provider_tests
deleted file mode 100644
index 04485d9..0000000
--- a/packages/tests/auth_provider_tests
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/auth_providers:auth_provider_tests"
-    ]
-}
diff --git a/packages/tests/bindings_tests b/packages/tests/bindings_tests
deleted file mode 100644
index 1688658..0000000
--- a/packages/tests/bindings_tests
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/fidl_bindings_test/test:fidl_bindings_test",
-        "//topaz/bin/fidl_bindings_test/server:fidl_bindings_test_server"
-    ]
-}
diff --git a/packages/tests/crasher_dart b/packages/tests/crasher_dart
deleted file mode 100644
index 67e0ecd..0000000
--- a/packages/tests/crasher_dart
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/crasher_dart"
-    ]
-}
diff --git a/packages/tests/crasher_flutter b/packages/tests/crasher_flutter
deleted file mode 100644
index ecde71c..0000000
--- a/packages/tests/crasher_flutter
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/crasher_flutter"
-    ]
-}
diff --git a/packages/tests/dart b/packages/tests/dart
deleted file mode 100644
index 469dff4..0000000
--- a/packages/tests/dart
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "packages": [
-        "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_test",
-        "//topaz/runtime/dart_runner/integration:dart_aot_runner_test",
-        "//topaz/runtime/dart_runner/integration:dart_jit_runner_test"
-    ],
-    "host_tests": [
-        "//topaz/public/dart/zircon:test_extract_zircon_constants"
-    ]
-}
diff --git a/packages/tests/dart_target_integration_tests b/packages/tests/dart_target_integration_tests
deleted file mode 100644
index ba57f16..0000000
--- a/packages/tests/dart_target_integration_tests
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/examples/fidl"
-    ],
-    "packages": [
-        "//topaz/tests/dart_app_service_tests:dart_app_service_tests"
-    ]
-}
diff --git a/packages/tests/dart_target_unittests b/packages/tests/dart_target_unittests
deleted file mode 100644
index 44cdb69..0000000
--- a/packages/tests/dart_target_unittests
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "packages": [
-        "//topaz/public/dart-pkg/zircon:dart_zircon_test",
-        "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_integration_tests",
-        "//topaz/public/dart/fuchsia_services:fuchsia_services_package_integration_tests",
-        "//topaz/public/dart/fuchsia_vfs:fuchsia_vfs_package_unittests",
-        "//topaz/runtime/dart/utils:run_vmservice_object_tests"
-    ]
-}
diff --git a/packages/tests/dart_unittests b/packages/tests/dart_unittests
deleted file mode 100644
index 70740b4..0000000
--- a/packages/tests/dart_unittests
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "host_tests" : [
-      "//topaz/bin/dart_fidl_json/test:dart_fidl_json_test",
-      "//topaz/examples/test/flutter_widget_test",
-      "//topaz/lib/keyboard/flutter:keyboard_test",
-      "//topaz/lib/setui/common:lib_setui_common_test",
-      "//topaz/lib/setui/flutter:lib_setui_flutter_test",
-      "//topaz/lib/setui/settings/client:lib_setui_settings_client_test",
-      "//topaz/lib/setui/settings/common:lib_setui_settings_common_test",
-      "//topaz/lib/setui/settings/service:lib_setui_service_test",
-      "//topaz/lib/setui/settings/testing:lib_setui_settings_testing_test",
-      "//topaz/public/dart/fuchsia_inspect:fuchsia_inspect_package_unittests",
-      "//topaz/public/dart/fuchsia_logger:fuchsia_logger_package_unittests",
-      "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_unittests",
-      "//topaz/public/dart/fuchsia_services:fuchsia_services_package_unittests",
-      "//topaz/public/dart/fuchsia_scenic_flutter:fuchsia_scenic_flutter_unittests",
-      "//topaz/public/dart/sledge:dart_sledge_tests",
-      "//topaz/public/dart/widgets:dart_widget_tests",
-      "//topaz/public/lib/app/dart:dart_app_tests",
-      "//topaz/public/lib/display/flutter:display_test",
-      "//topaz/public/lib/mondrian/dart:mondrian_lib_tests",
-      "//topaz/public/lib/schemas/dart:dart_schema_tests",
-      "//topaz/public/lib/testing/app_driver/dart:fake_module_driver_test",
-      "//topaz/shell/mondrian_story_shell:mondrian_story_shell_tests"
-    ]
-}
diff --git a/packages/tests/disabled/BUILD.gn b/packages/tests/disabled/BUILD.gn
new file mode 100644
index 0000000..75bc999
--- /dev/null
+++ b/packages/tests/disabled/BUILD.gn
@@ -0,0 +1,18 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("dart_unittests") {
+  testonly = true
+  public_deps = [
+    "//topaz/shell/keyboard:keyboard_tests($host_toolchain)",
+    "//topaz/bin/session_shell/capybara_session_shell:capybara_session_shell_tests($host_toolchain)",
+  ]
+}
+
+group("dart_remote_unittests") {
+  testonly = true
+  public_deps = [
+    "//topaz/examples/test/driver_example_mod:driver_mod_integration_tests($host_toolchain)",
+  ]
+}
diff --git a/packages/tests/disabled/dart_remote_unittests b/packages/tests/disabled/dart_remote_unittests
deleted file mode 100644
index b06809c..0000000
--- a/packages/tests/disabled/dart_remote_unittests
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "host_tests" : [
-      "//topaz/examples/test/driver_example_mod:driver_mod_integration_tests"
-    ]
-}
diff --git a/packages/tests/disabled/dart_unittests b/packages/tests/disabled/dart_unittests
deleted file mode 100644
index 94c4e6a..0000000
--- a/packages/tests/disabled/dart_unittests
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "host_tests" : [
-      "//topaz/shell/keyboard:keyboard_tests",
-      "//topaz/bin/session_shell/capybara_session_shell:capybara_session_shell_tests"
-    ]
-}
diff --git a/packages/tests/fidl_changes b/packages/tests/fidl_changes
deleted file mode 100644
index 1718a11..0000000
--- a/packages/tests/fidl_changes
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "labels": [
-      "//topaz/tests/fidl-changes"
-    ]
-}
-
diff --git a/packages/tests/fidl_compatibility_test b/packages/tests/fidl_compatibility_test
deleted file mode 100644
index f5c014f..0000000
--- a/packages/tests/fidl_compatibility_test
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/tests/fidl_compatibility_test_bin",
-        "garnet/packages/tests/fidl_compatibility_test_server_cpp",
-        "garnet/packages/tests/fidl_compatibility_test_server_go",
-        "garnet/packages/tests/fidl_compatibility_test_server_rust",
-        "topaz/packages/tests/fidl_compatibility_test_server_dart"
-    ],
-    "packages": [
-        "//topaz/bin/fidl_compatibility_test:package"
-    ]
-}
diff --git a/packages/tests/fidl_compatibility_test_server_dart b/packages/tests/fidl_compatibility_test_server_dart
deleted file mode 100644
index 7bfb65a..0000000
--- a/packages/tests/fidl_compatibility_test_server_dart
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "packages": [
-        "//topaz/bin/fidl_compatibility_test/dart:fidl_compatibility_test_server_dart"
-
-    ]
-}
diff --git a/packages/tests/flutter_runner_tests b/packages/tests/flutter_runner_tests
deleted file mode 100644
index 5750b34..0000000
--- a/packages/tests/flutter_runner_tests
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/prod/fonts"
-    ],
-    "packages": [
-        "//topaz/runtime/flutter_runner:flutter_runner_tests"
-    ]
-}
diff --git a/packages/tests/flutter_screencap_test b/packages/tests/flutter_screencap_test
deleted file mode 100644
index 9f2d96d..0000000
--- a/packages/tests/flutter_screencap_test
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "imports": [
-        "peridot/packages/prod/integration_testing",
-        "topaz/packages/tests/flutter_screencap_test_app"
-    ],
-    "packages": [
-        "//topaz/bin/flutter_screencap_test"
-    ]
-}
diff --git a/packages/tests/flutter_screencap_test_app b/packages/tests/flutter_screencap_test_app
deleted file mode 100644
index c67b987..0000000
--- a/packages/tests/flutter_screencap_test_app
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/tools/scenic"
-    ],
-    "packages": [
-        "//topaz/bin/flutter_screencap_test:flutter_screencap_test_app"
-    ]
-}
diff --git a/packages/tests/key_listener_test b/packages/tests/key_listener_test
deleted file mode 100644
index 890f173..0000000
--- a/packages/tests/key_listener_test
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "packages": [
-        "//topaz/lib/story_shell/examples/story_shell_test:key_listener_device_tests"
-    ]
-}
diff --git a/packages/tests/scenic b/packages/tests/scenic
deleted file mode 100644
index bbf52c8..0000000
--- a/packages/tests/scenic
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-    "imports": [
-        "garnet/packages/tests/scenic"
-    ],
-    "packages": [
-        "//topaz/bin/ui/benchmarks/image_grid_flutter",
-        "//garnet/examples/ui:tile_view"
-    ]
-}
diff --git a/packages/tests/sledge b/packages/tests/sledge
deleted file mode 100644
index fb8f4ff..0000000
--- a/packages/tests/sledge
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "imports": [
-        "peridot/packages/tests/ledger"
-    ],
-    "packages": [
-        "//topaz/public/dart/sledge:sledge_integration_tests"
-    ]
-}
diff --git a/packages/tests/web_runner_tests b/packages/tests/web_runner_tests
deleted file mode 100644
index 460e885..0000000
--- a/packages/tests/web_runner_tests
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "packages": [
-        "//topaz/tests/web_runner_tests"
-    ]
-}
diff --git a/packages/tools/BUILD.gn b/packages/tools/BUILD.gn
new file mode 100644
index 0000000..b513b5a
--- /dev/null
+++ b/packages/tools/BUILD.gn
@@ -0,0 +1,32 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+group("fidlgen_dart") {
+  testonly = true
+  public_deps = [
+    "//topaz/bin/fidlgen_dart:install(//build/toolchain:host_x64)",
+  ]
+}
+
+group("dart") {
+  testonly = true
+  public_deps = [
+  ]
+}
+
+group("all") {
+  testonly = true
+  public_deps = [
+    "//topaz/packages/tools:dart",
+    "//topaz/packages/tools:doc_checker",
+    "//topaz/packages/tools:fidlgen_dart",
+  ]
+}
+
+group("doc_checker") {
+  testonly = true
+  public_deps = [
+    "//topaz/tools/doc_checker(//build/toolchain:host_x64)",
+  ]
+}
diff --git a/packages/tools/all b/packages/tools/all
deleted file mode 100644
index 96aee43..0000000
--- a/packages/tools/all
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "imports": [
-        "topaz/packages/tools/dart",
-        "topaz/packages/tools/doc_checker",
-        "topaz/packages/tools/fidlgen_dart"
-    ]
-}
diff --git a/packages/tools/dart b/packages/tools/dart
deleted file mode 100644
index 628607d..0000000
--- a/packages/tools/dart
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "labels": [
-    ]
-}
diff --git a/packages/tools/doc_checker b/packages/tools/doc_checker
deleted file mode 100644
index cfd53f0..0000000
--- a/packages/tools/doc_checker
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "labels": [
-        "//topaz/tools/doc_checker(//build/toolchain:host_x64)"
-    ]
-}
diff --git a/packages/tools/fidlgen_dart b/packages/tools/fidlgen_dart
deleted file mode 100644
index 31a420c..0000000
--- a/packages/tools/fidlgen_dart
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "labels": [
-        "//topaz/bin/fidlgen_dart:install(//build/toolchain:host_x64)"
-    ]
-}
diff --git a/packages/topaz b/packages/topaz
deleted file mode 100644
index ca56e61..0000000
--- a/packages/topaz
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "imports": [
-        "peridot/packages/peridot",
-        "topaz/packages/prod/all"
-    ]
-}
diff --git a/public/sdk/BUILD.gn b/public/sdk/BUILD.gn
index 02ee78f..f674a3a 100644
--- a/public/sdk/BUILD.gn
+++ b/public/sdk/BUILD.gn
@@ -7,6 +7,11 @@
 import("//build/sdk/sdk_molecule.gni")
 import("//sdk/config.gni")
 
+# This default target is empty because there are multiple flavors of SDKs and
+# there is no "default" one. The empty target is still needed so that all the
+# other targets in this file are attached to the build graph.
+group("sdk") {}
+
 # Tools and libraries required to generate and use FIDL bindings in Dart.
 sdk_molecule("fidl_dart") {
   deps = [