Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a "pub workspace" to the root of the engine repository #53539

Merged
merged 35 commits into from
Jul 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
54d1ca6
Move one package to a workspace.
matanlurey Jun 24, 2024
2068ba1
++
matanlurey Jun 24, 2024
fcde54c
++
matanlurey Jun 24, 2024
50fa853
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jun 25, 2024
144ec4a
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jun 26, 2024
d78b88a
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jul 1, 2024
9f49e49
++
matanlurey Jul 1, 2024
ff2aa36
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jul 3, 2024
7812873
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jul 11, 2024
a467fb6
Modify pub_get_offline.py to respect resolution: workspace.
matanlurey Jul 11, 2024
901b47f
++
matanlurey Jul 11, 2024
4f99625
++
matanlurey Jul 11, 2024
d1ba509
Use pyyaml.
matanlurey Jul 11, 2024
b4c4186
++
matanlurey Jul 11, 2024
9485af8
Oops.
matanlurey Jul 11, 2024
2638753
++
matanlurey Jul 11, 2024
627d84c
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jul 11, 2024
46853e1
++
matanlurey Jul 11, 2024
339abd3
++
matanlurey Jul 11, 2024
3ed2f04
++
matanlurey Jul 11, 2024
d889220
++|
matanlurey Jul 11, 2024
2ba6436
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jul 17, 2024
eb2303a
Update pubspec.yaml
matanlurey Jul 17, 2024
ef6605d
Update pubspec.yaml
matanlurey Jul 17, 2024
2d727a6
Update pubspec.yaml
matanlurey Jul 17, 2024
8ee0c85
Fix DEPS merge.
matanlurey Jul 17, 2024
d2aa032
++
matanlurey Jul 17, 2024
d1a92b4
++
matanlurey Jul 17, 2024
d4fa1df
++
matanlurey Jul 17, 2024
7703083
Merge remote-tracking branch 'upstream/main' into engine-mono-worskpa…
matanlurey Jul 17, 2024
e0c31a8
++
matanlurey Jul 17, 2024
784b9d8
Exempt a folder.
matanlurey Jul 17, 2024
77f04a8
Add // ignores for https://github.com/flutter/flutter/issues/151917.
matanlurey Jul 17, 2024
da0d118
More lintos.
matanlurey Jul 17, 2024
9ee12d0
++
matanlurey Jul 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ci/licenses_golden/excluded_files
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
../../../flutter/.ci.yaml
../../../flutter/.clang-format
../../../flutter/.clang-tidy
../../../flutter/.dart_tool
../../../flutter/.git
../../../flutter/.gitattributes
../../../flutter/.github
Expand Down Expand Up @@ -253,6 +254,8 @@
../../../flutter/lib/web_ui/pubspec.yaml
../../../flutter/lib/web_ui/test
../../../flutter/prebuilts
../../../flutter/pubspec.lock
../../../flutter/pubspec.yaml
../../../flutter/runtime/dart_isolate_unittests.cc
../../../flutter/runtime/dart_lifecycle_unittests.cc
../../../flutter/runtime/dart_plugin_registrant_unittests.cc
Expand Down
2 changes: 2 additions & 0 deletions lib/ui/channel_buffers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,8 @@ class ChannelBuffers {
@Native<Void Function(Handle, Bool)>(symbol: 'PlatformConfigurationNativeApi::SendChannelUpdate')
external static void _sendChannelUpdate(String name, bool listening);

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
void sendChannelUpdate(String name, {required bool listening}) => _sendChannelUpdate(name, listening);

/// Deprecated. Migrate to [setListener] instead.
Expand Down
2 changes: 2 additions & 0 deletions lib/ui/compositing.dart
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,8 @@ class ShaderMaskEngineLayer extends _EngineLayerWrapper {
/// This does not apply when using the `dart:ui` API directly, without using the
/// Flutter framework bindings, `flutter_test` framework, et al.
abstract class SceneBuilder {
// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
factory SceneBuilder() = _NativeSceneBuilder;

/// Pushes a transform operation onto the operation stack.
Expand Down
25 changes: 25 additions & 0 deletions lib/ui/experiments/scene.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,24 +50,34 @@ base class SceneNode extends NativeFieldWrapperClass1 {
return result;
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
static SceneNodeValue fromTransform(Float64List matrix4) {
final SceneNode sceneNode = SceneNode._create();
sceneNode._initFromTransform(matrix4);
return SceneNodeValue.fromValue(sceneNode);
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
void addChild(SceneNode sceneNode) {
_addChild(sceneNode);
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
void setTransform(Float64List matrix4) {
_setTransform(matrix4);
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
void setAnimationState(String animationName, bool playing, bool loop, double weight, double timeScale) {
_setAnimationState(animationName, playing, loop, weight, timeScale);
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
void seekAnimation(String animationName, double time) {
_seekAnimation(animationName, time);
}
Expand Down Expand Up @@ -126,32 +136,45 @@ base class SceneNode extends NativeFieldWrapperClass1 {

/// Returns a fresh instance of [SceneShader].
SceneShader sceneShader() => SceneShader._(this, debugName: _debugName);

}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
class SceneNodeValue {
SceneNodeValue._(this._future, this._value) {
_future?.then((SceneNode result) => _value = result);
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
static SceneNodeValue fromFuture(Future<SceneNode> future) {
return SceneNodeValue._(future, null);
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
static SceneNodeValue fromValue(SceneNode value) {
return SceneNodeValue._(null, value);
}

final Future<SceneNode>? _future;
SceneNode? _value;

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
bool get isComplete {
return _value != null;
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
Future<SceneNode>? get future {
return _future;
}

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
SceneNode? get value {
return _value;
}
Expand Down Expand Up @@ -186,6 +209,8 @@ base class SceneShader extends Shader {
// ignore: unused_field
final String? _debugName;

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
void setCameraTransform(Float64List matrix4) {
_setCameraTransform(matrix4);
}
Expand Down
4 changes: 4 additions & 0 deletions lib/ui/key.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ enum KeyEventType {
/// The key is held, causing a repeated key input.
repeat;

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
String get label {
return switch (this) {
down => 'Key Down',
Expand Down Expand Up @@ -46,6 +48,8 @@ enum KeyEventDeviceType {
/// The device is a device connected to an HDMI bus.
hdmi;

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
String get label {
return switch (this) {
keyboard => 'Keyboard',
Expand Down
2 changes: 2 additions & 0 deletions lib/ui/painting.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2598,6 +2598,8 @@ base class _NativeEngineLayer extends NativeFieldWrapperClass1 implements Engine
/// Paths can be drawn on canvases using [Canvas.drawPath], and can
/// used to create clip regions using [Canvas.clipPath].
abstract class Path {
// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
factory Path() = _NativePath;

/// Creates a copy of another [Path].
Expand Down
2 changes: 2 additions & 0 deletions lib/ui/platform_dispatcher.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2195,6 +2195,8 @@ class ViewConstraints {
/// [DisplayFeatureState.postureHalfOpened]. For [DisplayFeatureType.cutout],
/// the state is not used and has the [DisplayFeatureState.unknown] value.
class DisplayFeature {
// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
const DisplayFeature({
required this.bounds,
required this.type,
Expand Down
8 changes: 8 additions & 0 deletions lib/ui/semantics.dart
Original file line number Diff line number Diff line change
Expand Up @@ -284,8 +284,12 @@ class SemanticsAction {
_kFocusIndex: focus,
};

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
static List<SemanticsAction> get values => _kActionById.values.toList(growable: false);

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
static SemanticsAction? fromIndex(int index) => _kActionById[index];

@override
Expand Down Expand Up @@ -638,8 +642,12 @@ class SemanticsFlag {
_kIsExpandedIndex: isExpanded,
};

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
static List<SemanticsFlag> get values => _kFlagById.values.toList(growable: false);

// TODO(matanlurey): have original authors document; see https://github.com/flutter/flutter/issues/151917.
// ignore: public_member_api_docs
static SemanticsFlag? fromIndex(int index) => _kFlagById[index];

@override
Expand Down
173 changes: 173 additions & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
# This file represents a "workspace" that applies to the whole repository.
#
# See <https://flutter.dev/go/pub-workspace> 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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These comments are phenomenal, excellent work!


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:
- tools/engine_tool

# 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a TODO for now, thanks!

# 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

# 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:
# <https://flutter.googlesource.com/>.
#
# - `./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:
# <https://github.com/dart-lang/sdk/tree/main/pkg>.
#
# - `./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:
# <https://github.com/dart-lang/sdk/blob/main/DEPS>.
dependency_overrides:
jtmcdole marked this conversation as resolved.
Show resolved Hide resolved
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
collection:
path: ./third_party/dart/third_party/pkg/collection
engine_build_configs:
path: ./tools/pkg/engine_build_configs
engine_repo_tools:
path: ./tools/pkg/engine_repo_tools
expect:
path: ./third_party/dart/pkg/expect
file:
path: ./third_party/dart/third_party/pkg/file/packages/file
litetest:
path: ./testing/litetest
logging:
path: ./third_party/dart/third_party/pkg/logging
meta:
path: ./third_party/dart/pkg/meta
path:
path: ./third_party/dart/third_party/pkg/path
platform:
path: ./third_party/pkg/platform
process:
path: ./third_party/pkg/process
process_fakes:
path: ./tools/pkg/process_fakes
process_runner:
path: ./third_party/pkg/process_runner
smith:
path: ./third_party/dart/pkg/smith
source_span:
path: ./third_party/dart/third_party/pkg/source_span
string_scanner:
path: ./third_party/dart/third_party/pkg/string_scanner
term_glyph:
path: ./third_party/dart/third_party/pkg/term_glyph
yaml:
path: ./third_party/dart/third_party/pkg/yaml
1 change: 1 addition & 0 deletions tools/clang_tidy/test/header_filter_regex_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ void main() {
test('contains every root directory in the regex', () {
// These are a list of directories that should _not_ be included.
const Set<String> intentionallyOmitted = <String>{
'.dart_tool',
'.git',
'.github',
'build_overrides',
Expand Down
Loading