Skip to content
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

jhbuild: update gstreamer to 1.24.6 #39

Merged
merged 4 commits into from
Sep 10, 2024

Conversation

dpino
Copy link
Member

@dpino dpino commented Sep 2, 2024

This PR updates JHBuild's gstramer to the same version as Flatpak: 1.24.6. Also, now GStreamer modules 'rs' (Rust) and 'webrtc' are enabled.

When the 'rs' module is enabled, compilation fails with the following error:

../subprojects/gst-plugins-rs/meson.build:28:2: ERROR: Problem encountered: cargo-c missing, install it with: 'cargo install cargo-c'

A full log can be found at /home/buildbot/workspace/gstreamer/build/meson-logs/meson-log.txt
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.
main buildbot@wkdev ~/workspace/gstreamer/build $ cargo install cargo-c
	Updating crates.io index
error: cannot install package `cargo-c 0.10.3+cargo-0.81.0`, it requires rustc 1.78 or newer, while the currently active rustc version is 1.75.0
`cargo-c 0.9.31+cargo-0.78.0` supports rustc 1.75

To install a more up-to-date version of 'rustc' I ran the following steps:

curl https://sh.rustup.rs -sSf | sh
rustup toolchain install nightly
rustup default nightly
source $HOME/.bashrc

These step should be run at some point in the container. I don't know where would be the best place to put them.

This change doesn't bring the container SDK to exactly what Flatpak SDK does regarding GStreamer, but after this change the crashes after running layout-tests are solved.

Lastly, this commit: jhbuild: Do not build custom gstreamer removed gstreamer from the list of modules to be built via JHBuild since Ubuntu 24.04 provided a more up-to-date version. The commit also unsets several environment variables. I wonder if those variables should be restored?

@dpino dpino marked this pull request as draft September 2, 2024 12:02
@TingPing
Copy link
Member

TingPing commented Sep 2, 2024

The commit also unsets several environment variables. I wonder if those variables should be restored?

Yes.

To install a more up-to-date version of 'rustc' I ran the following steps:

You would run it in images/wkdev_sdk/Containerfile. The question is just should these tools be in the final image, or removed afterwards?

It also means we can remove cargo from images/wkdev_sdk/required_system_packages/04-devtools.lst

@dpino dpino self-assigned this Sep 2, 2024
@TingPing
Copy link
Member

TingPing commented Sep 2, 2024

@dpino Could you try installing the Ubuntu rustup package, and then just running rustup toolchain install 1.78 or whatever is needed?

EDIT: The following is thinking about keeping around a whole rust build area for development, but in practice we probably don't need that.

To be system wide you might have to set some env vars, just based on what others have written:

RUSTUP_HOME=/opt/rust
CARGO_HOME=/opt/rust

Using ENV in the containerfile.

Then in .wkdev-init have a similar function to try_setup_permissions_jhbuild_directory() for the cargo directory.

@dpino dpino force-pushed the jhbuild-update-gstreamer branch 5 times, most recently from 8a91be3 to 2576892 Compare September 3, 2024 11:11
@dpino dpino force-pushed the jhbuild-update-gstreamer branch 3 times, most recently from 321b655 to af3311b Compare September 4, 2024 08:25
@dpino dpino marked this pull request as ready for review September 4, 2024 09:23
@dpino dpino requested a review from philn September 4, 2024 09:23
@philn
Copy link
Member

philn commented Sep 4, 2024

Would it be possible to a QA step that would verify the gst plugins are available? gst-inspect-1.0 can be used for that.

@philn
Copy link
Member

philn commented Sep 4, 2024

Would it be possible to a QA step that would verify the gst plugins are available? gst-inspect-1.0 can be used for that.

That's what we do in the old sdk:

Tools/buildstream/elements/sdk/gst-plugin-dav1d.bst:      PAGER=this-is-not-a-pager gst-inspect-1.0 dav1ddec
Tools/buildstream/elements/sdk/gst-plugin-rtp.bst:      PAGER=this-is-not-a-pager gst-inspect-1.0 rsrtp
Tools/buildstream/elements/sdk/gst-plugin-livesync.bst:      PAGER=this-is-not-a-pager gst-inspect-1.0 livesync
Tools/buildstream/elements/sdk/gst-plugin-closedcaption.bst:      PAGER=this-is-not-a-pager gst-inspect-1.0 cea608tott
Tools/buildstream/elements/sdk/gst-plugin-audiofx.bst:      PAGER=this-is-not-a-pager gst-inspect-1.0 audiornnoise

# Check GStreamer plugins are installed.
RUN gst-inspect-1.0 audiornnoise && \
gst-inspect-1.0 cea608tott && \
# gst-inspect-1.0 dav1ddec && \ FIXME(dpino): Not installed.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

daviddec 0.13 supports only the most recent libdav1d (iirc 1.2.x). So you might need to add libdav1d in jhbuild too.

Copy link
Member

@TingPing TingPing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dpino
Copy link
Member Author

dpino commented Sep 5, 2024

It seems the CI bot is getting stuck.

@philn
Copy link
Member

philn commented Sep 5, 2024

LGTM

Well, withou an AV1 decoder you will get webcodecs failures.

@TingPing
Copy link
Member

TingPing commented Sep 5, 2024

Sure, building libdav1d can come next.

@dpino dpino force-pushed the jhbuild-update-gstreamer branch 4 times, most recently from 2a97292 to 9d25773 Compare September 9, 2024 08:26
@dpino
Copy link
Member Author

dpino commented Sep 9, 2024

Failing due to lack of space in the CI bot:

2024-09-09T09:20:10.6042001Z [2407/2627] Linking target testsuite/a11y/text
2024-09-09T09:20:10.6043023Z FAILED: testsuite/a11y/text
2024-09-09T09:20:10.6060232Z cc  -o testsuite/a11y/text testsuite/a11y/text.p/text.c.o -L/jhbuild/install/lib -Wl,--as-needed -Wl,--no-undefined -Wl,--start-group gtk/libgtk.a gtk/css/libgtk_css.a gdk/libgdk.a gdk/wayland/cursor/libwayland+cursor.a gsk/libgsk.a gsk/libgsk_f1
2024-09-09T09:20:10.6086316Z /usr/bin/ld: final link failed: No space left on device
2024-09-09T09:20:10.6086998Z collect2: error: ld returned 1 exit status
2024-09-09T09:20:10.6606224Z [2408/2627] Linking target testsuite/a11y/textview
2024-09-09T09:20:10.6606951Z FAILED: testsuite/a11y/textview
2024-09-09T09:20:10.6621644Z cc  -o testsuite/a11y/textview testsuite/a11y/textview.p/textview.c.o -L/jhbuild/install/lib -Wl,--as-needed -Wl,--no-undefined -Wl,--start-group gtk/libgtk.a gtk/css/libgtk_css.a gdk/libgdk.a gdk/wayland/cursor/libwayland+cursor.a gsk/libgsk.a g
2024-09-09T09:20:10.6634062Z /usr/bin/ld: final link failed: No space left on device
2024-09-09T09:20:10.6634705Z collect2: error: ld returned 1 exit status
2024-09-09T09:20:10.7096069Z [2409/2627] Compiling C object testsuite/a11y/names.p/names.c.o
2024-09-09T09:20:10.7096963Z FAILED: testsuite/a11y/names.p/names.c.o
2024-09-09T09:20:10.7116409Z sccache cc -Itestsuite/a11y/names.p -Itestsuite/a11y -I../../../../../jhbuild/checkout/gtk4/testsuite/a11y -I. -I../../../../../jhbuild/checkout/gtk4 -Igtk -I../../../../../jhbuild/checkout/gtk4/gtk -Igdk/x11 -I../../../../../jhbuild/checkout/gtk
2024-09-09T09:20:10.7134413Z ../../../../../jhbuild/checkout/gtk4/testsuite/a11y/names.c:223:1: fatal error: error writing to /tmp/ccfwezBH.s: No space left on device
2024-09-09T09:20:10.7135626Z   223 | }
2024-09-09T09:20:10.7135959Z       | ^
2024-09-09T09:20:10.7136329Z compilation terminated.
2024-09-09T09:20:10.7167625Z [2410/2627] Linking target testsuite/a11y/label
2024-09-09T09:20:10.7168640Z FAILED: testsuite/a11y/label
2024-09-09T09:20:10.7178581Z cc  -o testsuite/a11y/label testsuite/a11y/label.p/label.c.o -L/jhbuild/install/lib -Wl,--as-needed -Wl,--no-undefined -Wl,--start-group gtk/libgtk.a gtk/css/libgtk_css.a gdk/libgdk.a gdk/wayland/cursor/libwayland+cursor.a gsk/libgsk.a gsk/libgsk
2024-09-09T09:20:10.7187526Z /usr/bin/ld: final link failed: No space left on device

dpino added a commit that referenced this pull request Sep 10, 2024
…le (#43)

There are modules that by default build examples, tests and tools. All
these things are not necessary when building these libraries as
subprojects. My goal disabling these features is to prevent the GitHub
CI bot aborts due to lack of space, as it has happened in
#39
@dpino dpino enabled auto-merge (squash) September 10, 2024 08:02
@dpino dpino disabled auto-merge September 10, 2024 08:05
@dpino dpino merged commit aa9e726 into Igalia:main Sep 10, 2024
2 checks passed
@dpino dpino deleted the jhbuild-update-gstreamer branch September 10, 2024 10:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants