-
Notifications
You must be signed in to change notification settings - Fork 26.8k
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
☂️Merge flutter/buildroot into flutter/engine and retire the repository. #67373
Comments
Definitely in favour of merging buildoot into the engine repo. When we do this, we'll need to update the engine build wiki to eliminate the relevant instructions. One thing I run across relatively frequently are patches that have landed in the buildroot that were never rolled (or can't roll) to the engine repo. Whenever we hit this situation, it typically involves a minor archaeological expedition to figure out what the change was intended to fix and why it wasn't rolled as well as a decision on whether to revert those changes before applying my own or try to roll them through. |
The split is also super annoying when trying to maintain any relatively long-lived engine branch that involves buildroot changes (as a current example, the UWP development fork), because keeping up with current master involves maintaining two parallel branches, updating them both at the same time, and updating the DEPS in the fork. |
…re`. (#46729) As part of flutter/flutter#67373, we'll be adding, for example `third_party/glfw`. This PR will by default ignore folders, except for ones that have internal repo-sourced code (which are unlikely to change much, if at all during this transition). _/cc @Hixie, @chinmaygarde FYI only_.
This is now, once again, work in progress. I'll update the original post (thanks @chinmaygarde) with details. |
I am assigning myself since I'm actively working on a part of this, but this effort has room for a lot of parallelisation so I encourage others who want to actively work on this to self-assign as well. |
Part of flutter/flutter#67373. Pulled into the engine in flutter/engine#46989.
Now, both the DEPS and the custom GN rules for them are in the same repo and won't need a buildroot sibling patch + roll. Part of flutter/flutter#67373. Pending landing of the buildroot patch in flutter/buildroot#781 (the DEPS will be updated before landing and after the presubs pass).
Now, both the DEPS and the custom GN rules for them are in the same repo and won't need a buildroot sibling patch + roll. Part of flutter/flutter#67373. Pending landing of the buildroot patch in flutter/buildroot#781 (the DEPS will be updated before landing and after the presubs pass).
In flutter/engine#51258, all existing build_overrides from the buildroot were copied into the engine. This replaces each existing file under build_overrides in the buildroot with a shim that just imports the files landed in that patch. This allows the third-party dependencies to continue hardcoding the `//build_overrides/foo.gni` path, but provides a seamless path forward when we drop the buildroot. Issue: flutter/flutter#144790 Part of: flutter/flutter#67373 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read the [Flutter Style Guide] _recently_, and have followed its advice. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I updated/added relevant documentation (doc comments with `///`). - [ ] I added new tests to check the change I am making, or this PR is [test-exempt]. - [X] Do not start, operate, or service Flutter CI infra until you read and understand the operator's manual. Failure to do so could result in serious injury or death. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat
In flutter#51258, all existing build_overrides from the buildroot were copied into the engine. In flutter/buildroot#832, all buildroot build_overrides were converted into simple forwarding files that point to the ones in the engine such that we have a seamless path to eliminating the buildroot, while allowing third-party dependencies to continue to hardcode `//build_overrides/foo.gni`. This rolls the buildroot to the engine and switches everthing over to the new engine-based build_overrides. Issue: flutter/flutter#144790 Part of: flutter/flutter#67373
In #51258, all existing build_overrides from the buildroot were copied into the engine. In flutter/buildroot#832, all buildroot build_overrides were converted into simple forwarding files that point to the ones in the engine such that we have a seamless path to eliminating the buildroot, while allowing third-party dependencies to continue to hardcode `//build_overrides/foo.gni`. This rolls the buildroot to the engine and switches everthing over to the new engine-based build_overrides. Fixes: flutter/flutter#144790 Part of: flutter/flutter#67373 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [X] I'm pretty sure that despite no real changes that should affect the licence script, that it'll probably fail for some reason anyway and I'll spend 2 hours fixing it. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] I signed the [CLA]. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat
This moves Flutter out of the buildroot's third_party directory and into //flutter/third_party and updates all BUILD and gni files. Issue: flutter/flutter#144786 Part of: flutter/flutter#67373
Migrate perfetto from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144808 Part of: flutter/flutter#67373
This moves Flutter out of the buildroot's third_party directory and into //flutter/third_party and updates all BUILD and gni files. Issue: flutter/flutter#144786 Part of: flutter/flutter#67373 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [X] I listed at least one issue that this PR fixes in the description above. - [X] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [X] I updated/added relevant documentation (doc comments with `///`). - [X] The odds of this passing on its first CI run is 0%, because there's no way the licence script isn't going to have a fit over it, at which point I promise on my honour that I will dutifully fix all the things it complains about and re-run, probably more than once. - [X] This PR fulfils the minimum [Canadian Content](https://www.youtube.com/watch?v=h9NMnPm5kXc&list=PLJ7QPuvv91JuoPWrLhqX0zDFUoLdynMEk&index=3) regulations mandated by the CRTC. - [X] I signed the [CLA]. - [X] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat
Migrate perfetto from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144808 Part of: flutter/flutter#67373
Migrates vulkan_memory_allocator from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144812 Part of: flutter/flutter#67373
Migrates vulkan_memory_allocator from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144812 Part of: flutter/flutter#67373
Migrates vulkan_memory_allocator from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144812 Part of: flutter/flutter#67373
Migrates vulkan_memory_allocator from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144812 Part of: flutter/flutter#67373
Migrates vulkan_memory_allocator from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144812 Part of: flutter/flutter#67373 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
As part of merging Flutter's flutter/buildroot and flutter/engine repos, Flutter is migrating all third-party dependencies from //third_party to //flutter/third_party. This change allows consumers of the Dart SDK (notably Flutter), to override the path of their third_party/perfetto directory. Issue: flutter/flutter#144204 Part of: flutter/flutter#67373
As part of merging Flutter's flutter/buildroot and flutter/engine repos, Flutter is migrating all third-party dependencies from //third_party to //flutter/third_party. This change allows consumers of the Dart SDK (notably Flutter), to override the path of their third_party/perfetto directory by setting perfetto_root_path in //build_overrides/build.gn. The Dart SDK does not override perfetto's path, but does override other variables (perfetto_build_with_embedder) in the equivalent overrides file secondary/build_overrides/build.gn. TEST=None. Refactor only; no semantic changes. Issue: flutter/flutter#144204 Change-Id: Ie3835a5507a39bf2d68b1c86d42c626093358b17 Part of: flutter/flutter#67373 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/356622 Reviewed-by: Zach Anderson <zra@google.com> Commit-Queue: Chris Bracken <cbracken@google.com> Reviewed-by: Alexander Aprelev <aam@google.com>
Migrate perfetto from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144808 Part of: flutter/flutter#67373
Migrate perfetto from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144808 Part of: flutter/flutter#67373
In https://dart-review.googlesource.com/c/sdk/+/356622 we updated the perfetto include directory in libprotozero_config to use `perfetto_root_path` rather than hardcoding `//third_party/perfetto`. Some Perfetto headers, however, #include a generated header, which is located at `$root_gen_dir/$perfetto_root_path/build_config`. See declaration of perfetto_build_flags.h and buildflag_gen_dir_ at: https://flutter.googlesource.com/third_party/perfetto/+/refs/heads/main/gn/BUILD.gn#26 This was missed in the first patch since while the default local engine build of Flutter DOES do all gn processing, it DOES NOT do a full Dart build, our presubmits however, revealed the gap. This updates the include directories for the config to use the correct value as declared in perfetto. TEST=None. Refactor only; no semantic changes. Issue: flutter/flutter#144204 Change-Id: I44c1269af85e40eab8e397c3d099f5dc1bca1229 Part of: flutter/flutter#67373 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/356960 Commit-Queue: Chris Bracken <cbracken@google.com> Reviewed-by: Alexander Aprelev <aam@google.com>
Migrate perfetto from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144808 Part of: flutter/flutter#67373
Migrate perfetto from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144808 Part of: flutter/flutter#67373
Migrate perfetto from the buildroot's third_party directory to the engine's. Issue: flutter/flutter#144204 Part of: flutter/flutter#67373 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
Remaining work is now tracked by this label:
EDITED by @matanlurey so it's more visible to others. Original post is below:
Background on buildroot by @chinmaygarde
The Flutter Buildroot and the Engine used to live in a common repository. In 2016, in order to facilitate building the Flutter Engine in the Fuchsia as well Flutter buildroots, the buildroot used by Flutter was separated into its own repository with the engine DEPS file referencing the version of the buildroot to use. The Flutter Engine GN rules had to be written such that they worked when the engine was present in either buildroot.
Flutter no longer builds in the Fuchsia buildroot. Instead, Fuchsia artifacts are built from the Flutter buildroot using the Fuchsia SDK (which was not present at the time the split occurred) and vended to Flutter application authors. So, the original use case of the split is no longer present.
Even though there is no use-case served by the split, there are numerous downsides to this approach:
Personally, I dread instances where I have to update the buildroot. Not because it is hard, but because it is incredibly tedious. And quite unnecessarily so. The buildroot itself is a significant source of technical debt and having build rules split across two repos also makes incrementally tackling this debt hard. Merging the repos would get rid of one source of unnecessary complexity in the build process.
The buildroot has no presubmit or its own issue tracker, so I don't expect any infra related issues with this switch.
The original split occurred by preserving no history. The team has grown significantly since then and the Git history may be valuable. So maybe we should consider a subtree import instead of just copying over the files. But, I don't have a strong opinion either way.
The first PR is WIP, flutter/engine#46733, which moves
third_party/glfw
.Roughly, the process is:
Update
DEPS
forsrc/third_party
dependencies:Update source references, such as any
BUILD.gn
files (but other files are also possible):Update the license checker (WIP, @cbracken is hacking on this now).
Here is a list of all dependencies that need to be migrated.
Some of these (i.e.
skia
) will be more difficult, and might require a few incremental PRs, or closer work with folks on the engine team. Others, like the Dart packages, or leaf-level C++ packages that aren't highly used (likeglfw
) are simpler, and can be done more simply (see flutter/engine#46733).To volunteer, edit this table and replace
None
with<link-to-GH-issue>
, and assign yourself to the GH issue.You can follow this template:
C++ or Utilities
src/third_party/abseil-cpp
src/flutter/third_party/abseil-cpp
src/third_party/angle
src/flutter/third_party/angle
src/third_party/benchmark
src/flutter/third_party/benchmark
src/third_party/boringssl
src/flutter/third_party/boringssl
src/third_party/expat
src/flutter/third_party/expat
src/third_party/flatbuffers
src/flutter/third_party/flatbuffers
src/third_party/freetype2
src/flutter/third_party/freetype2
src/third_party/glfw
src/flutter/third_party/glfw
src/third_party/googletest
src/flutter/third_party/googletest
src/third_party/gtest-parallel
src/flutter/third_party/gtest-parallel
src/third_party/harfbuzz
src/flutter/third_party/harfbuzz
src/third_party/icu
src/flutter/third_party/icu
src/third_party/imgui
src/flutter/third_party/imgui
src/third_party/inja
src/flutter/third_party/inja
src/third_party/json
src/flutter/third_party/json
src/third_party/khronos
src/flutter/third_party/khronos
src/third_party/libcxx
src/flutter/third_party/libcxx
src/third_party/libcxxabi
src/flutter/third_party/libcxxabi
src/third_party/libjpeg-turbo
src/flutter/third_party/libjpeg-turbo
src/third_party/libpng
src/flutter/third_party/libpng
src/third_party/libtess2
src/flutter/third_party/libtess2
src/third_party/libwebp
src/flutter/third_party/libwebp
src/third_party/libxml
src/flutter/third_party/libxml
src/third_party/ocmock
src/flutter/third_party/ocmock
src/third_party/perfetto
src/flutter/third_party/perfetto
src/third_party/protobuf
src/flutter/third_party/protobuf
src/third_party/pyyaml
src/flutter/third_party/pyyaml
src/third_party/rapidjson
src/flutter/third_party/rapidjson
src/third_party/shaderc
src/flutter/third_party/shaderc
src/third_party/skia
src/flutter/third_party/skia
src/third_party/stb
src/flutter/third_party/stb
src/third_party/sqlite
src/flutter/third_party/sqlite
src/third_party/tinygltf
src/flutter/third_party/tinygltf
src/third_party/swiftshader
src/flutter/third_party/swiftshader
src/third_party/vulkan-deps
src/flutter/third_party/vulkan-deps
src/third_party/vulkan_memory_allocator
src/flutter/third_party/vulkan_memory_allocator
src/third_party/wuffs
src/flutter/third_party/wuffs
src/third_party/yapf
src/flutter/third_party/yapf
Android and Java
TBD.
Dart Packages
src/third_party/pkg/archive
src/flutter/third_party/pkg/archive
src/third_party/pkg/equatable
src/flutter/third_party/pkg/equatable
src/third_party/pkg/flutter_packages
src/flutter/third_party/pkg/flutter_packages
src/third_party/pkg/gcloud
src/flutter/third_party/pkg/gcloud
src/third_party/pkg/googleapis
src/flutter/third_party/pkg/googleapis
src/third_party/pkg/platform
src/flutter/third_party/pkg/platform
src/third_party/pkg/process
src/flutter/third_party/pkg/process
src/third_party/pkg/process_runner
src/flutter/third_party/pkg/process_runner
src/third_party/pkg/vector_math
src/flutter/third_party/pkg/vector_math
General build infra
src/build_overrides
src/flutter/build_overrides
The text was updated successfully, but these errors were encountered: