Google GN support


Joel Winarske
 

I'm looking into best practice LTS support for Google GN based projects.  This includes Chromium, Flutter, SKIA, etc.

The weakness I see today for GN projects is that it's a build system within a build system, and doesn't  support idiomatic download caching, download vs patching isn't clear as it should be, etc.

Two approaches to resolve this come to mind:
1. Do something similar to how meta-rust does it.  Pre-process GN build files and generate Yocto recipes using a hostside tool (similar to cargo-bitbake for meta-rust).  This would skip usage of gclient entirely, and the tradeoff is to incur download performance penalty.

2. Implement build parsing in a gclient/gn fetcher class.

I feel the first approach would be easier to maintain and provide better flexibility.  It would incur a new host dependency, and require an additional step to generate an updated recipe.

I suspect the second approach would be an OE maintenance headache, as complexities would be directly exposed in OE.  Is this why gclient fetcher support came and went?

I'm figuring/hoping there are a few opinions floating around on this subject.

Is there a better approach?

Thanks,
Joel

Join yocto@lists.yoctoproject.org to automatically receive all group messages.