fune/toolkit/components/glean/docs/dev/updating_sdk.md
Jan-Erik Rediger 9ff433d96b Bug 1670261 - Ensure the Glean versions in the project match. r=agi,chutten
In GeckoView we need to depend on the same Glean version as the included
Glean Rust crate has.
We _could_ let Gradle read that from Cargo.lock directly,
but that complicates the build.

Instead we manually update both versions to the same
and have Gradle ensure we don't forget that.

Differential Revision: https://phabricator.services.mozilla.com/D116602
2021-08-10 07:49:08 +00:00

42 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Updating the Glean SDK
Project FOG uses the published Glean SDK.
It currently depends on [glean-core] from crates.io.
[glean-core]: https://crates.io/crates/glean-core
To update the dependency:
1. Bump the version of the `glean` crate in
`toolkit/components/glean/Cargo.toml` and `toolkit/components/glean/api/Cargo.toml`.
2. Run `mach vendor rust`.
This fetches all dependencies and adds them to `third_pary/rust`.
3. Update the version of `gleanVersion` in `build.gradle` to the same version.
## Version mismatches of Rust dependencies
Other crates that are already vendored might require a different version of the same dependencies that the Glean SDK requires.
The general strategy for Rust dependencies is to keep one single version of the dependency in-tree
(see [comment #8 in bug 1591555](https://bugzilla.mozilla.org/show_bug.cgi?id=1591555#c8)).
This might be hard to do in reality since some dependencies might require tweaks in order to work.
The following strategy can be followed to decide on version mismatches:
* If the versions only **differ by the patch version**, Cargo will keep the vendored version,
unless some other dependency pinned specific patch versions;
assuming it doesnt break the Glean SDK;
if it does, follow the next steps;
* If the version of the **vendored dependency is newer** (greater major or minor version) than the version required by the Glean SDK,
[file a bug in the Glean SDK component][glean-bug] to get Glean to require the same version;
* If the version of the **vendored dependency is older** (lower major or minor version), consider updating the vendored version to the newer one;
seek review from the person who vendored that dependency in the first place;
if that is not possible or breaks mozilla-central build, then consider keeping both versions vendored in-tree; please note that this option will probably only be approved for small crates.
## Keeping versions in sync
The Glean SDK and `glean_parser` are currently released as separate projects.
However each Glean SDK release requires a specific `glean_parser` version.
When updating one or the other ensure versions stay compatible.
You can find the currently used `glean_parser` version in the Glean SDK source tree, e.g. in [sdk_generator.sh].
[sdk_generator.sh]: https://github.com/mozilla/glean/blob/main/glean-core/ios/sdk_generator.sh#L28
[glean-bug]: https://bugzilla.mozilla.org/enter_bug.cgi?product=Data+Platform+and+Tools&component=Glean%3A+SDK&priority=P3&status_whiteboard=%5Btelemetry%3Aglean-rs%3Am%3F%5D