# This file represents a "workspace" that applies to the whole repository. # # See for details. # # The `flutter/engine` repository is a quasi-monorepo, with multiple Dart tools # and packages that are all interdependent. Third party dependencies are managed # by the `DEPS` file in the root of the repository, and are synced to either the # `third_party` (i.e. `//flutter/third_party`) or `../third_party` (i.e. # `//third_party`) directories by `gclient sync`. # # Every dependency declared here are dependencies used by _one or more_ of the # packages in the repository (though there is no enforcement of this). This file # then generates a `.dart_tool/package_config.json` file that is used by the # rest of the repository to resolve dependencies. # # ============================================================================== # WORKFLOWS # ============================================================================== # # ------------------------------------------------------------------------------ # (1) ADDING A NEW DEPENDENCY # ------------------------------------------------------------------------------ # Dependencies need to be added either via the DEPS file, or by checking if they # are available in the vendored Dart SDK (see notes below on library locations). # If dependencies are available, see (4) for how to add dependencies to a package in the workspace. # # ------------------------------------------------------------------------------ # (2) CREATING A NEW PACKAGE # ------------------------------------------------------------------------------ # If creating a package, say in ./tools or ./tools/pkg, ensure the following # header in its respective `pubspec.yaml`: # ``` # # We don't publish packages to pub.dev from the engine repository. # publish_to: none # # # Required for workspace support. # environment: # sdk: ^3.5.0-294.0.dev # # # This package is managed as part of the engine workspace. # resolution: workspace # ``` # # See (4) for how to add dependencies to a package in the workspace. # # ------------------------------------------------------------------------------ # (3) MIGRATING A NON-WORKSPACE PACKAGE TO USING THE WORKSPACE # ------------------------------------------------------------------------------ # Many packages in this repo are still using a pre-workspace style pubspec.yaml, # either with manually declared `dependency_overrides` (much of ./tools) or by # using pub (./web_sdk, ./lib/web_ui). To migrate a package to the workspace: # # A. Add the `resolution: workspace` field to the pubspec.yaml. # B. Update the minimum SDK version to at least `^3.5.0-294.0.dev`. # C. Add the package to the `workspace` field in this file. # D. Ensure every dependency in the package is added to the `dependencies` field # in this file, following instructions in (4). # # Once `dart pub get` is run on the workspace, the package will be resolved as # part of the workspace, and the `dependency_overrides` in this file will be # applied to the package. # # ------------------------------------------------------------------------------ # (4) ADDING DEPENDENCIES TO A PACKAGE IN THIS WORKSPACE # ------------------------------------------------------------------------------ # When adding a dependency to a package in the workspace, add the dependency to # the `dependencies` field in this file. If the dependency is located within # the repository, use the `path` field to point to the package. # # If the dependency is a third party package, add it to the # `dependency_overrides` field in this file. The `any` version constraint is # used to indicate that the version of the package is not important, as it is # managed by the `DEPS` file. name: _engine_workspace # Required for workspace support. environment: sdk: ^3.5.0-294.0.dev # Declare all packages that are part of the workspace. workspace: - ci - flutter_frontend_server - impeller/tessellator/dart - shell/vmservice - testing/benchmark - testing/dart - testing/scenario_app - testing/skia_gold_client - testing/smoke_test_failure - testing/symbols - tools/android_lint - tools/api_check - tools/build_bucket_golden_scraper - tools/clang_tidy - tools/clangd_check - tools/compare_goldens - tools/const_finder - tools/dir_contents_diff - tools/engine_tool - tools/header_guard_check - tools/gen_web_locale_keymap - tools/githooks - tools/licenses - tools/path_ops/dart - tools/golden_tests_harvester - tools/pkg/engine_build_configs - tools/pkg/engine_repo_tools - tools/pkg/git_repo_tools - tools/pkg/process_fakes # Declare all dependencies that are used by one or more packages. # # A few notes: # 1. There is no distinction between "dependencies" and "dev_dependencies"; # those notions are for *publishing* packages, not for managing a workspace. # Specific packages in the workspace itself will declare whether they are # dependencies or dev_dependencies, but here it is a union of both. # # 2. The `any` version constraint is used to indicate that the version of the # package is not important, as it is managed by the `DEPS` file. In other # words, "if the test pass, ship it". # # While not enforced by tooling, try to keep this list in alphabetical order. # TODO(matanlurey): https://dart.dev/tools/linter-rules/sort_pub_dependencies. dependencies: args: any async_helper: any expect: any file: any logging: any meta: any path: any platform: any process_runner: any smith: any dev_dependencies: process_fakes: path: ./tools/pkg/process_fakes skia_gold_client: path: ./testing/skia_gold_client # Instructs pub on how to resolve the dependencies that are part of "DEPS". # # For historic reasons, there are ~3 or so places packages might be located: # # - `./third_party/pkg/{name}`: for packages vended directly as part of "DEPS". # Usually these are Flutter engine specific packages, i.e. they did not exist # in the Dart vended SDK (the other options below). Typically these originate # from pub (https://pub.dev) and are mirrored into a Google Git repository: # . # # - `./third_party/dart/pkg/{name}`: for packages that lives *in* the Dart SDK, # which is in turn vendored into the Flutter engine repository. You can see # a full list of available packages here: # . # # - `./third_party/dart/third_party/pkg/{name}`: for packages that are vendored # into the Dart SDK from pub.dev. These are often first-party packages from # the Dart team, but not part of the Dart SDK itself. You can see a full list # of available packages here: # . dependency_overrides: _discoveryapis_commons: path: ./third_party/pkg/googleapis/discoveryapis_commons _fe_analyzer_shared: path: ./third_party/dart/pkg/_fe_analyzer_shared _macros: path: ./third_party/dart/pkg/_macros analyzer: path: ./third_party/dart/pkg/analyzer archive: path: ./third_party/pkg/archive args: path: ./third_party/dart/third_party/pkg/args async: path: ./third_party/dart/third_party/pkg/async async_helper: path: ./third_party/dart/pkg/async_helper boolean_selector: path: ./third_party/dart/third_party/pkg/boolean_selector collection: path: ./third_party/dart/third_party/pkg/collection convert: path: ./third_party/dart/third_party/pkg/convert coverage: path: ./third_party/pkg/coverage crypto: path: ./third_party/dart/third_party/pkg/crypto equatable: path: ./third_party/pkg/equatable expect: path: ./third_party/dart/pkg/expect file: path: ./third_party/dart/third_party/pkg/file/packages/file ffi: path: ./third_party/dart/third_party/pkg/native/pkgs/ffi fixnum: path: ./third_party/dart/third_party/pkg/fixnum frontend_server_client: path: ./third_party/dart/third_party/pkg/webdev/frontend_server_client gcloud: path: ./third_party/pkg/gcloud glob: path: ./third_party/dart/third_party/pkg/glob googleapis: path: ./third_party/pkg/googleapis/generated/googleapis googleapis_auth: path: ./third_party/pkg/googleapis/googleapis_auth http: path: ./third_party/dart/third_party/pkg/http/pkgs/http http_multi_server: path: ./third_party/dart/third_party/pkg/http_multi_server http_parser: path: ./third_party/dart/third_party/pkg/http_parser io: path: ./third_party/pkg/io js: path: ./third_party/dart/pkg/js kernel: path: ./third_party/dart/pkg/kernel logging: path: ./third_party/dart/third_party/pkg/logging macros: path: ./third_party/dart/pkg/macros matcher: path: ./third_party/dart/third_party/pkg/matcher meta: path: ./third_party/dart/pkg/meta metrics_center: path: ./third_party/pkg/flutter_packages/packages/metrics_center mime: path: ./third_party/dart/third_party/pkg/tools/pkgs/mime node_preamble: path: ./third_party/pkg/node_preamble package_config: path: ./third_party/dart/third_party/pkg/package_config path: path: ./third_party/dart/third_party/pkg/path platform: path: ./third_party/pkg/platform pool: path: ./third_party/dart/third_party/pkg/pool process: path: ./third_party/pkg/process process_runner: path: ./third_party/pkg/process_runner protobuf: path: ./third_party/dart/third_party/pkg/protobuf/protobuf pub_semver: path: ./third_party/dart/third_party/pkg/pub_semver shelf: path: ./third_party/dart/third_party/pkg/shelf/pkgs/shelf shelf_packages_handler: path: ./third_party/dart/third_party/pkg/shelf/pkgs/shelf_packages_handler shelf_static: path: ./third_party/dart/third_party/pkg/shelf/pkgs/shelf_static shelf_web_socket: path: ./third_party/dart/third_party/pkg/shelf/pkgs/shelf_web_socket sky_engine: path: ./sky/packages/sky_engine smith: path: ./third_party/dart/pkg/smith source_map_stack_trace: path: ./third_party/dart/third_party/pkg/tools/pkgs/source_map_stack_trace source_maps: path: ./third_party/dart/third_party/pkg/source_maps source_span: path: ./third_party/dart/third_party/pkg/source_span stack_trace: path: ./third_party/dart/third_party/pkg/stack_trace stream_channel: path: ./third_party/dart/third_party/pkg/stream_channel string_scanner: path: ./third_party/dart/third_party/pkg/string_scanner term_glyph: path: ./third_party/dart/third_party/pkg/term_glyph test: path: ./third_party/dart/third_party/pkg/test/pkgs/test test_api: path: ./third_party/dart/third_party/pkg/test/pkgs/test_api test_core: path: ./third_party/dart/third_party/pkg/test/pkgs/test_core typed_data: path: ./third_party/dart/third_party/pkg/typed_data vector_math: path: ./third_party/pkg/vector_math vm_service: path: ./third_party/dart/pkg/vm_service vm_service_protos: path: ./third_party/dart/pkg/vm_service_protos watcher: path: ./third_party/dart/third_party/pkg/watcher web: path: ./third_party/dart/third_party/pkg/web/web web_socket: path: ./third_party/dart/third_party/pkg/http/pkgs/web_socket web_socket_channel: path: ./third_party/dart/third_party/pkg/web_socket_channel webkit_inspection_protocol: path: ./third_party/dart/third_party/pkg/webkit_inspection_protocol yaml: path: ./third_party/dart/third_party/pkg/yaml