Build documentation for rust plugins

- Update the docker image we use, starting using the standard one adding
  `gtk4-doc` as required by rust plugins
- Update the plugins_doc_caches as required, some more plugins are built
  with the new image
- Install ninja from pip as the version from F31 is too old
- Avoid buildings all GSreamer plugins when building the doc as it takes
  time and resources for no good reason
- Stop linking to `GInstanceInitFunc` as it is not present in latest GLib
  documentation, leading to warnings in hotdoc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2954>
This commit is contained in:
Thibault Saunier 2022-08-26 08:43:34 -04:00 committed by GStreamer Marge Bot
parent a75f74d2cd
commit 339e5916c6
6 changed files with 59 additions and 27 deletions

View file

@ -24,7 +24,7 @@ variables:
# If you are hacking on them or need a them to rebuild, its enough
# to change any part of the string of the image you want.
###
FEDORA_TAG: '2022-09-02.0'
FEDORA_TAG: '2022-09-14.0'
INDENT_TAG: '2022-03-07.1'
WINDOWS_TAG: "2022-09-02.0"
@ -658,25 +658,28 @@ valgrind ges:
# ---- Integration ----- #
.documentation:
image: $FEDORA_DOCS_IMAGE
extends:
- '.build_ccache_vars'
extends: '.build fedora x86_64'
variables:
MESON_ARGS: *simple_build
MESON_BUILDTYPE_ARGS: "-Ddoc=enabled -Drs=enabled"
MESON_BUILDTYPE_ARGS: "-Ddoc=enabled -Drs=enabled -Dgst-docs:fatal_warnings=true"
# Disable werror for the docs build, we don't need it
MESON_GST_WERROR: ''
CI_ARTIFACTS_URL: "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/"
script:
# FIXME: should rebuild the image with newer versions!
- pip3 install --upgrade hotdoc
- pip3 install --upgrade meson
- *build
- export PATH=/usr/local/cargo/bin/:/usr/local/bin/:$PATH
- export RUSTUP_HOME='/usr/local/rustup'
- ci/scripts/handle-subprojects-cache.py subprojects/
- echo $MESON_ARGS
- meson build/ $MESON_ARGS
- ccache --show-stats
- ./gst-env.py ninja -C build/ plugins_doc_caches
# Ignore modifications to wrap files made by meson
- git checkout subprojects/*.wrap
- ./ci/scripts/check-documentation-diff.py
- ./gst-env.py hotdoc run --conf-file=build/subprojects/gst-docs/GStreamer-doc.json --fatal-warnings
- ./gst-env.py ninja -C build subprojects/gst-docs/GStreamer-doc
- mv build/subprojects/gst-docs/GStreamer-doc/html documentation/
artifacts:
@ -694,7 +697,8 @@ documentation:
stage: integrate
extends:
- '.documentation'
needs: []
needs:
- "fedora amd64 docker"
rules:
- if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == "main"'
@ -707,7 +711,7 @@ build documentation:
- '.documentation'
stage: build
needs:
- "trigger"
- "fedora amd64 docker"
rules:
# Never run post merge, we have the `documentation` always running for that
- if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'

View file

@ -4,7 +4,7 @@ set -eux
# We need them to cleanly build our doc.
sed -i "s/tsflags=nodocs//g" /etc/dnf/dnf.conf
dnf install -y git-core ninja-build dnf-plugins-core python3-pip
dnf install -y git-core dnf-plugins-core python3-pip
# Configure git for various usage
git config --global user.email "gstreamer@gstreamer.net"
@ -41,6 +41,8 @@ dnf install -y \
glslc \
gtk3 \
gtk3-devel \
gtk4 \
gtk4-devel \
gtest \
gtest-devel \
graphene \
@ -202,7 +204,10 @@ dnf builddep -y gstreamer1 \
python3-gstreamer1
dnf remove -y meson
pip3 install meson==0.60.3 hotdoc python-gitlab
# FIXME: Install ninja from rpm when we update our base image as we fail building
# documentation with rust plugins as we the version from F31 we hit:
# `ninja: error: build.ninja:26557: multiple outputs aren't (yet?) supported by depslog; bring this up on the mailing list if it affects you
pip3 install meson==0.60.3 hotdoc python-gitlab ninja tomli
# Remove gst-devel packages installed by builddep above
@ -210,13 +215,13 @@ dnf remove -y "gstreamer1*devel"
# FIXME: Why does installing directly with dnf doesn't actually install
# the documentation files?
dnf download glib2-doc gdk-pixbuf2-devel*x86_64* gtk3-devel-docs
dnf download glib2-doc gdk-pixbuf2-devel*x86_64* gtk3-devel-docs gtk4-devel-docs
rpm -i --reinstall *.rpm
rm -f *.rpm
# Install Rust
RUSTUP_VERSION=1.24.3
RUST_VERSION=1.55.0
RUSTUP_VERSION=1.25.1
RUST_VERSION=1.63.0
RUST_ARCH="x86_64-unknown-linux-gnu"
dnf install -y wget
@ -233,6 +238,7 @@ chmod +x rustup-init;
rm rustup-init;
chmod -R a+w $RUSTUP_HOME $CARGO_HOME
cargo install cargo-c --version 0.9.12+cargo-0.64
rustup --version
cargo --version
rustc --version

View file

@ -44016,7 +44016,7 @@
"long-name": "libav Avid 1:1 10-bit RGB Packer encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n",
"caps": "video/x-raw:\n format: GBR_10LE\n",
"direction": "sink",
"presence": "always"
},
@ -64983,7 +64983,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
"default": "128000",
"default": "6300",
"max": "2147483647",
"min": "0",
"mutable": "null",
@ -100948,7 +100948,7 @@
"long-name": "libav Apple ProRes encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { I422_10LE, Y444_10LE }\n",
"caps": "video/x-raw:\n format: { I422_10LE, Y444_10LE, A444_10LE }\n",
"direction": "sink",
"presence": "always"
},
@ -102118,7 +102118,7 @@
"long-name": "libav Apple ProRes encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { I422_10LE, Y444_10LE }\n",
"caps": "video/x-raw:\n format: { I422_10LE, Y444_10LE, A444_10LE }\n",
"direction": "sink",
"presence": "always"
},
@ -105682,7 +105682,7 @@
"long-name": "libav AJA Kona 10-bit RGB Codec encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n",
"caps": "video/x-raw:\n format: GBR_10LE\n",
"direction": "sink",
"presence": "always"
},
@ -134070,7 +134070,7 @@
"long-name": "libav Zip Motion Blocks Video encoder",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: RGB8P\n",
"caps": "video/x-raw:\n format: { RGB8P, RGB15, RGB16, BGRx }\n",
"direction": "sink",
"presence": "always"
},
@ -141543,6 +141543,11 @@
"name": "qpel",
"value": "0x00000010"
},
{
"desc": "Drop frames whose parameters differ from first decoded frame",
"name": "drop_changed",
"value": "0x00000020"
},
{
"desc": "use loop filter",
"name": "loop",

View file

@ -221367,6 +221367,17 @@
"tracers": {},
"url": "Unknown package origin"
},
"qsv": {
"description": "Intel Quick Sync Video plugin",
"elements": {},
"filename": "gstqsv",
"license": "LGPL",
"other-types": {},
"package": "GStreamer Bad Plug-ins",
"source": "gst-plugins-bad",
"tracers": {},
"url": "Unknown package origin"
},
"removesilence": {
"description": "Removes silence from an audio stream",
"elements": {

View file

@ -21,6 +21,12 @@
#include "config.h"
#endif
/**
* plugin-qsv:
*
* Since: 1.22
*/
#include <gst/gst.h>
#include <mfx.h>
#include "gstqsvav1enc.h"

View file

@ -1759,9 +1759,9 @@ gst_element_get_metadata (GstElement * element, const gchar * key)
*
* Retrieves a list of the pad templates associated with @element_class. The
* list must not be modified by the calling code.
* > If you use this function in the #GInstanceInitFunc of an object class
* > If you use this function in the GInstanceInitFunc of an object class
* > that has subclasses, make sure to pass the g_class parameter of the
* > #GInstanceInitFunc here.
* > GInstanceInitFunc here.
*
* Returns: (transfer none) (element-type Gst.PadTemplate): the #GList of
* pad templates.
@ -1801,9 +1801,9 @@ gst_element_get_pad_template_list (GstElement * element)
* @name: the name of the #GstPadTemplate to get.
*
* Retrieves a padtemplate from @element_class with the given name.
* > If you use this function in the #GInstanceInitFunc of an object class
* > If you use this function in the GInstanceInitFunc of an object class
* > that has subclasses, make sure to pass the g_class parameter of the
* > #GInstanceInitFunc here.
* > GInstanceInitFunc here.
*
* Returns: (transfer none) (nullable): the #GstPadTemplate with the
* given name, or %NULL if none was found. No unreferencing is