This saves two build-jobs from performing the same (expensive!)
compilation+installation over and over again, when it is much cheaper to
cache it in the image instead.
It is common for GStreamer crates to reexport all their
(GStreamer-related) dependencies, and the GL windowing crates should not
be an exception to this rule. Furthermore EGL documentation references
`crate::gst_gl::GLDisplayType` in the crate root which would be
unreachable otherwise.
This version adds a `--strip-docs` flag to `generator.py`, used in
conjunction with `--strip-docs --embed-docs` to clean documentation
first before re-embedding it (otherwise the same text would show up
multiple times). It is also used in the CI to check that no
documentation disappears on stripping, ie. all documentation is properly
annotated with `// rustdoc-stripper-ignore-next`.
The generator does not read Gir.toml from dependencies, missing out on
trait renames like `ObjectExt` turning into GstObjectExt` (to prevent
clashes with `glib`'s `ObjectExt`). Renaming through `trait_name` is
now taken into account in `gir` thanks to [1], but the renames still
need to be availble to all crates referencing this type. Fortunately
only `Gst.Object` is affected - other renamed traits are not extended in
any of the other crates.
[1]: https://github.com/gtk-rs/gir/pull/1108
Also separate the lower/upper bound in the name with an underscore. This
cannot be added between `Range` and the first number, that's violating
`non_camel_case_types`.
When importing the prelude of a crate like `gst` the `glib` prelude is
provided too. Shedding these imports saves quite a few lines and
adheres to keeping it simple; we're not reexporting base/parent preludes
for no reason :)
For cleanliness the prelude module only needs to reexport preludes from
direct, "top-most" crates, which themselves take care of reexporting
preludes from its dependencies again. This shaves off some code while
maintaining the same set of exports.
This was temporarily allowed by Value trait refactoring, but the root
cause of the unused imports has been found (`glib::ToValue` for property
getters) and fixed in https://github.com/gtk-rs/gir/pull/1117.
In gir it was brought up [1] that some traits (in particular
`*ExtManual`) are exported from the crate root in addition to the
prelude, cluttering the environment unnecessarily. This commit removes
all these reexports, leaving those in prelude (that were already there)
only.
After this commit everything matching `Ext(Manual)?\b` in `lib.rs` sits
within `pub mod prelude {};`.
[1]: https://github.com/gtk-rs/gir/pull/1111