Gst-plugins-rs build fails in Docker with SIGKILL

I’m at a loss and almost about to pack it in with no way to get a binary of this plugin for Linux. If it was released with Debian I wouldn’t have to go to so much trouble. I needed it to demonstrate a background streaming service I have working on Windows. The Windows GVSbuild took minutes. Trying to build gst-plugin-rs in the meson build constantly fails with a SIGKILL at the webrtc plugins which is what I need. Ironically I had it built once somehow and then further attempts to build fails. The ram and cpu isn’t that high at that point.

It seems to be at the linker stage. Rust seems incredibly bloaty and system intensive. I only have 16GB of ram and doesn’t seem enough for it, I think Rust is a big mistake and overcomplicates things unnecessarily. The C code builds very fast up to this point. I’ve given Docker 15gb of ram and 20gb of swap space. And set cargo jobs to 1 and still fails. I made my image setup with alot of tricks to prevent the process stopping but nothing helped. I had to edit the meson options for this subproject to manually disable options as options as arguments doesn’t work with this plugin. Which I think is a bug.

I was able to somehow build with Cerbero in Docker. But Cerbero doesn’t build gst-python I need and disables things for the arm64 build. So Cerbero is a fail too. It was failing due to Windows case insensitive on mounts and a problem with rust packages poor naming conventions.

Any ideas ?

 meson setup \
  --buildtype=release \
  --strip \
  --pkgconfig.relocatable \
  --prefix=/opt/gstreamer \
  -Dlibdir=lib \
  -Dgst-full-libraries=app,video,player \
  -Dgst-examples=disabled\
  -Dwebrtc=enabled \
  -Drtsp_server=disabled \
  -Dlibav=disabled \
  -Dges=disabled \
  -Dpython=enabled \
  -Drs=enabled \
  -Dgpl=enabled \
  -Dqt5=disabled \
  -Dqt6=disabled \
  -Dtests=enabled \
  -Dgtk_doc=disabled \
  -Dgstreamer:examples=disabled \
  -Dgstreamer:tests=disabled \
  -Dgstreamer:doc=disabled \
  -Dgst-plugins-base:examples=disabled \
  -Dgst-plugins-bad:magicleap=disabled \
  -Dgst-plugins-bad:examples=disabled \
  -Dgst-plugins-good:examples=disabled \
  -Dgst-plugins-rs:audiofx=disabled \
  -Dgst-plugins-rs:claxon=disabled \
  -Dgst-plugins-rs:csound=disabled \
  -Dgst-plugins-rs:lewton=disabled \
  -Dgst-plugins-rs:spotify=disabled \
  -Dgst-plugins-rs:sodium=disabled \
  -Dgst-plugins-rs:textahead=disabled \
  -Dgst-plugins-rs:json=disabled \
  -Dgst-plugins-rs:regex=disabled \
  -Dgst-plugins-rs:textwrap=disabled \
  -Dgst-plugins-rs:gtk4=disabled \
  -Dgst-plugins-rs:webp=disabled \
  -Dgst-plugins-rs:gif=disabled \
  -Dgst-plugins-rs:quinn=disabled \
  -Dgst-plugins-rs:reqwest=disabled \
  -Dgst-plugins-rs:raptorq=disabled \
  -Dgst-plugins-rs:reqwest=disabled \
  -Dgst-plugins-rs:onvif=disabled \
  --reconfigure \
  build-gst-full
error: could not compile `gst-plugin-webrtc` (lib)

Caused by:
  process didn't exit successfully: `rustc --crate-name gstrswebrtc --edition=2021 net/webrtc/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=254 --crate-type staticlib --crate-type cdylib --emit=dep-info,link -C opt-level=3 -C lto -C debuginfo=2 -C link-arg=-Wl,-soname,libgstrswebrtc.so --cfg cargo_c --print native-static-libs --cfg 'feature="aws"' --cfg 'feature="capi"' --cfg 'feature="default"' --cfg 'feature="janus"' --cfg 'feature="livekit"' --cfg 'feature="v1_22"' --cfg 'feature="web_server"' --cfg 'feature="whip"' --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values("aws", "capi", "default", "doc", "janus", "livekit", "static", "v1_22", "web_server", "whip"))' -C metadata=4e0c532bc61a974c --out-dir /root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps --target x86_64-unknown-linux-gnu -L dependency=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps -L dependency=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/release/deps --extern anyhow=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libanyhow-ee3482b7a55fca8f.rlib --extern async_recursion=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/release/deps/libasync_recursion-72cf369141464b13.so --extern async_tungstenite=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libasync_tungstenite-850f70f36d25a8c1.rlib --extern aws_config=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_config-fc0321fe8e916916.rlib --extern aws_credential_types=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_credential_types-5475a68acf5ba637.rlib --extern aws_sdk_kinesisvideo=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_sdk_kinesisvideo-065ad911618e032d.rlib --extern aws_sdk_kinesisvideosignaling=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_sdk_kinesisvideosignaling-115d9e87bf4819a8.rlib --extern aws_sigv4=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_sigv4-cf58d1d4aeba47c3.rlib --extern aws_smithy_http=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_smithy_http-718fdfb190ba010f.rlib --extern aws_smithy_types=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_smithy_types-a619e550a7d6720e.rlib --extern aws_types=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libaws_types-f00d0ddeb1489967.rlib --extern chrono=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libchrono-4b1f941dee18cb20.rlib --extern ctrlc=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libctrlc-a65b99c7d3d51d1d.rlib --extern data_encoding=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libdata_encoding-c478152b7ce59531.rlib --extern fastrand=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libfastrand-db2f7363fa0ba9a3.rlib --extern futures=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libfutures-9f49f20f7908813a.rlib --extern gst_plugin_webrtc_signalling=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgst_plugin_webrtc_signalling-e33c36dad4f51148.rlib --extern gst_plugin_webrtc_protocol=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgst_plugin_webrtc_signalling_protocol-f340ee55630b3d0f.rlib --extern gst=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer-ac600e73faa14ed0.rlib --extern gst_app=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_app-af6ed29b94ea264d.rlib --extern gst_audio=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_audio-971156bade665fb8.rlib --extern gst_base=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_base-847f5c467c408c8b.rlib --extern gst_net=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_net-80f207b495ecca00.rlib --extern gst_rtp=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_rtp-22e15ba5188d7411.rlib --extern gst_sdp=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_sdp-29171c598ba3c54f.rlib --extern gst_utils=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_utils-8434275f87acfe24.rlib --extern gst_video=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_video-9ed2985bdf258c76.rlib --extern gst_webrtc=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libgstreamer_webrtc-ac94a07992be3fa5.rlib --extern http=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libhttp-36d28c4c5d7b66f1.rlib --extern human_bytes=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libhuman_bytes-7a9a71fd7ce4aa21.rlib --extern itertools=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libitertools-a569bb4c549efc77.rlib --extern livekit_api=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/liblivekit_api-e1bba729973b986a.rlib --extern livekit_protocol=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/liblivekit_protocol-644f96940a6139eb.rlib --extern once_cell=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libonce_cell-4b50ea7c7e138538.rlib --extern parse_link_header=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libparse_link_header-9cec396f2e7bdaf2.rlib --extern rand=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/librand-be6e65199feb2c15.rlib --extern reqwest=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libreqwest-888aa68cc1a1ea5b.rlib --extern serde=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libserde-122306a44813265c.rlib --extern serde_json=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libserde_json-402f85bf2b4e97b9.rlib --extern thiserror=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libthiserror-7a8c5e9ced0cdae5.rlib --extern tokio=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libtokio-5f14e2a032e12daf.rlib --extern tokio_native_tls=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libtokio_native_tls-b0965c3d45583753.rlib --extern tokio_stream=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libtokio_stream-af71e1a5746998c4.rlib --extern tracing=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libtracing-da60cd643be61609.rlib --extern tracing_log=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libtracing_log-d1dc6737db7a026e.rlib --extern tracing_subscriber=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libtracing_subscriber-7c367253fc9c689b.rlib --extern url=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/liburl-ec7c8a5aa4d5a2e0.rlib --extern url_escape=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/liburl_escape-453e75e05a709f74.rlib --extern uuid=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libuuid-a734a9e21a2e09cf.rlib --extern warp=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/deps/libwarp-fde9d19595c16cfc.rlib -C linker=cc -Z threads=1 -L native=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs/target/x86_64-unknown-linux-gnu/release/build/ring-e269624d400a8855/out -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-base/gst-libs/gst/app -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/libs/gst/base -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/libs/gst/base -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-base/gst-libs/gst/audio -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/libs/gst/base -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/libs/gst/net -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-base/gst-libs/gst/rtp -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/libs/gst/base -L native=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-base/gst-libs/gst/sdp -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-base/gst-libs/gst/video -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/libs/gst/base -L native=/root/build/gstreamer/build-gst-full/subprojects/gst-plugins-bad/gst-libs/gst/webrtc -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/gst -L native=/root/build/gstreamer/build-gst-full/subprojects/gstreamer/libs/gst/base` (signal: 9, SIGKILL: kill)
Error: CliError { error: Some(1 job failed), exit_code: 101 }
FAILED: subprojects/gst-plugins-rs/libgstrsrtp.so subprojects/gst-plugins-rs/libgstwebrtchttp.so subprojects/gst-plugins-rs/libgstrswebrtc.so 
env PKG_CONFIG=/usr/bin/pkg-config 'RUSTC=rustc -C linker=cc' /usr/bin/python3 /root/build/gstreamer/subprojects/gst-plugins-rs/cargo_wrapper.py build /root/build/gstreamer/build-gst-full/subprojects/gst-plugins-rs /root/build/gstreamer/subprojects/gst-plugins-rs /root/build/gstreamer/build-gst-full release /opt/gstreamer lib --packages gst-plugin-rtp gst-plugin-webrtchttp gst-plugin-webrtc --depfile subprojects/gst-plugins-rs/gst-plugins-rs.dep --lib-suffixes so --features gst/v1_22 gst-sdp/v1_22 gst-video/v1_22 gst-webrtc/v1_22 gst-rtp/v1_22 gst-app/v1_22 --disable-doc
ninja: build stopped: subcommand failed.
root@docker-desktop:/build# 

The Docker image I came up with. It almost worked.

# syntax = docker/dockerfile:1.2
FROM debian:bookworm-slim
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV CARGO_HTTP_DEBUG=true
ENV CARGO_LOG=cargo::ops::registry=debug
ENV CARGO_HOME=/root/.cargo
ENV RUSTUP_HOME=/root/.cargo
ENV PATH=$RUSTUP_HOME/bin:$PATH
ENV XDG_CACHE_HOME=/build/src/.cache
ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
ENV RUSTFLAGS="-Z threads=1"
ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
#ENV NSS_UNKNOWN_HOME=/home/user
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /build
# GStreamer needs meson version >= 1.1.
#$RUN groupadd -r builduser && useradd -r -g builduser builduser

COPY scripts/nsswitch/nsswitch.conf /etc/nsswitch.conf

RUN --mount=type=cache,target=/var/cache/apt \
    dpkg --add-architecture arm64 && \
    apt update && \
    apt install -y  dbus-system-bus-common && \
    dpkg --configure -a && \ 
    apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl  gstreamer1.0-pulseaudio && \
    apt-get remove -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-pulseaudio && \
    apt remove -y gir1.2-gst-plugins-bad-1.0 gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 libgstreamer* && \
    apt install -y \
      --no-install-recommends \
      binutils-aarch64-linux-gnu \
      g++-aarch64-linux-gnu \
      gcc-aarch64-linux-gnu \
      libssl-dev \
      libssl-dev:arm64 \
      libogg-dev \
      libpng-dev \
      libtiff-dev \
      libnice-dev \
      libglib2.0-dev \
      libgirepository1.0-dev \
      libglib2.0-doc \
      liborc-0.4-dev-bin \
      git \
      cpio \
      build-essential \
      bison \
      flex \
      autotools-dev \
      automake \
      autoconf \
      libtool \
      g++ \
      autopoint \
      make \
      cmake \
      ninja-build \
      bison \
      flex \
      nasm \
      pkg-config \
      libxv-dev \
      libpulse-dev \
      python3 \
      python3-setuptools \
      ninja-build \
      python3-pip \
      python3-venv \
      python-gi-dev \
      python3-all-dev \
      python3-cairo-dev \
      libcairo2-dev \
      libogg-dev \
      libopus-dev \
      libsrt-openssl-dev \
      openssl \
      curl \
      nano && \
      apt-get clean && \
      rm -rf /var/lib/apt/lists/* && \
      pip3 install \
      --break-system-packages \
      meson \
      distro

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --target x86_64-unknown-linux-gnu && \
rustup toolchain install nightly && \
rustup default nightly && \
cargo +nightly install cargo-c && \
echo "alias cargo=\"RUSTFLAGS='-Z threads=8' cargo +nightly\"" >> $HOME/.bashrc && \
printf "[net]\ngit-fetch-with-cli = true" >> "$CARGO_HOME/config.toml" && \
printf "\n[build]\njobs = 1" >> "$CARGO_HOME/config.toml"


COPY scripts/gst-plugins-rs/meson_options.txt /tmp
RUN mkdir $HOME/build && \
    cd $HOME/build && \
      git clone https://gitlab.freedesktop.org/gstreamer/gstreamer.git gstreamer && \
      cd gstreamer && \
      meson subprojects update && \
      #meson wrap install openssl 
      meson wrap install openssl && \
      meson setup --auto-features=disabled -Drs=enabled /tmp/tmpbuild && \
      cp /tmp/meson_options.txt subprojects/gst-plugins-rs/ && \
      rm /tmp/meson_options.txt && \
      rm -rf /tmp/tmpbuild



  
  ENTRYPOINT /build/scripts/build.sh

Building gstreamer, which takes minutes and very fast. Install into a prefix.

meson install -C build-gst-full/

Setup

export LD_LIBRARY_PATH =/opt/gstreamer/lib

Then build the plugin project from a fresh git checkout with this seems to work I get compiled library files and the whepsrc shows up with gst-inspect. Im increasing threads and cpu and see if it fails so far nothing. So its a bug with the meson build. Wasted lots of time.

cd gst-plugins-rs
cargo cbuild --prefix=/opt/gstreamer --libdir=lib

Rerunning the whole build fails. An individual build is ok

cargo cinstall --target=x86_64-unknown-linux-gnu --release -v --prefix=/opt/gstreamer --libdir=lib -p gst-plugin-webrtchttp

Does sound like a Meson issue. Are you setting backend_max_links in Meson?

I don’t understand your comment about the cargo build. You’re saying the first time you run cargo cbuild works fine, but if you run it a second time it fails? Have you tried limiting the number of parallel jobs with -jX?

You could also try changing the lto = true in Cargo.toml to lto = thin to see if that helps (not sure if it can be overridden/set on the command line).

I tried alot of tricks and the rust plugins can’t be built with gstreamer I set jobs to 1 and still fails. It has to be done seperate and linked to the meson uninstalled directory. You have to build one plugin at a time basically.

I’ve had to build a build respository with an environment that will work out of the box after finding out all the issues to deal with. I have the build packaging up the rust plugin with gstreamer.

I’m working on a Ubuntu image now which I found one extra dep needed compared to Debian. And then trying a Qemu PI to build for PI as cross compiling is too difficult for all the stuff needed and I really just needed the software built to get a python solution I made working. I have python pointing to the built libraries in /opt/gstreamer and works perfect now.

here is the config tricks for Cargo but I had set it to one and threads on rustflags to 1.

I can give this a go. But to be honest the meson flags are ignored so a bug. It tries to compile dependencies for plugins I dont want and takes ages. Building the individual plugin is quicker.

I couldn’t see anywhere to pass -l flags so set it like this for now. The scripts are run from a mount so customisable still.

This config avoided the crash. However the build is still extremely slow and bloaty chewing cpu. It’s trying to compile packages that has nothing to do with the whepsrc plugin like aws. So a dep bug ? It seems modifying meson_options, disabling every plugin apart from the ones you need works around the bug not accepting options externally to disable plugins. Turning off auto features causes segfaults so cant do that.

I think it still needs to be an individual build of each plugin needed using cargo. Faster and less intensive.

lto = "thin"