> -----Original Message----- > From: [email protected] > <[email protected]> On Behalf Of Alexander Kanavin via > lists.openembedded.org > Sent: den 24 maj 2026 12:12 > To: [email protected] > Cc: [email protected]; [email protected]; > [email protected] > Subject: Re: [OE-core] [PATCH v3] gstreamer1.0-plugins-rs: add new package > > Sorry, no. Carrying and maintaining this gigantic Cargo.lock in > oe-core isn't right. You need to place and maintain it upstream. > > Or, perhaps a better approach is to maintain individual recipes for > each of the plugins, and fetch them using crate://crates.io/... > > I think they're all available there? > https://crates.io/search?q=gst-plugin > > The recipes themselves will likely be very short, and share most of > the metadata through a common .inc file. > > Alex > > On Sun, 24 May 2026 at 10:35, Taruntej Kanakamalla via lists.openembedded.org > <[email protected]> wrote: > > > > Adapted from an existing patch: > > https://patchwork.yoctoproject.org/project/oe-core/patch/[email protected] > > > > Update the recipe to track the latest upstream release of the official > > GStreamer Rust plugins. > > > > Extend update_crates to capture the packages which are git source based > > and packages which start with gst-plugin-. Get the crates-io url of those > > and add them the SRC_URI along other packages in the -crates.inc > > > > Prepend do_configure to create a local Cargo.toml manifest with workspace > > members pointing to the vendored local paths of all the gst-plugin- > > directories and patch the crates-io with local vendored path for the > > gst-plugin packages which are dependencies of other plugins. > > > > Unlike the other GStreamer submodules, the Rust plugins follow a > > separate release cycle and versioning scheme. These plugins are fully > > stable and required for a fully-featured GStreamer installation, as most > > new features and plugins are being written in Rust. They are also shipped > > by multiple Linux distributions such as Fedora. > > > > Based on patch by: Bartosz Golaszewski <[email protected]> > > > > Signed-off-by: Taruntej Kanakamalla <[email protected]> > > --- > > Changes in V3: > > - removed the git urls of all the sources in the SRC_URI > > - we need only the LICENSE files and Cargo.lock, so ship them along > > with .bb recipe > > - update_crates:append: > > - get the crates.io url of all the git sourced deps and gst-plugin- > > packages from the Cargo.lock > > - add them to the SRC_URI in -crates.inc along with other crates.io > > dependencies > > - configure:prepend: > > - create a custom manifest file Cargo.toml, to add to each of the > > gst-plugin-xxx plugins as workspace > > members that fetched to the cargo vendoring directory > > - add dependency overrides of few plugins which are dependencies of > > other > > plugins > > - declare one PACKAGE per plugin and added them to PACKAGES and their > > corresponding .so to FILES > > > > > > meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs-crates.inc > > | 2325 +++++++ > > meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/Cargo.lock > > | 13062 ++++++++++++++++++++++++++++++++++++ > > meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/LICENSE-APACHE > > | 201 + > > meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/LICENSE-MPL-2.0 > > | 373 + > > meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs_0.15.2.bb > > | 520 ++ > > 5 files changed, 16481 insertions(+) > > > > diff --git > > a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs-crates.inc > > b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs-crates.inc > > new file mode 100644 > > index 0000000000..2c0e137547 > > --- /dev/null > > +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs-crates.inc
[cut] > > diff --git > > a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/Cargo.lock > > b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/Cargo.lock > > new file mode 100644 > > index 0000000000..43228d70a0 > > --- /dev/null > > +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/Cargo.lock [cut] > > diff --git > > a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/LICENSE-APACHE > > b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/LICENSE-APACHE > > new file mode 100644 > > index 0000000000..16fe87b06e > > --- /dev/null > > +++ > > b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs/LICENSE-APACHE [cut] > > diff --git > > a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs_0.15.2.bb > > b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs_0.15.2.bb > > new file mode 100644 > > index 0000000000..eef2d143dd > > --- /dev/null > > +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-rs_0.15.2.bb > > @@ -0,0 +1,520 @@ > > +SUMMARY = "GStreamer Rust Plugins" > > +HOMEPAGE = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs" > > + > > +LICENSE = "MPL-2.0 & Apache-2.0" > > + > > +# Cargo.lock is needed only for the `update_crates` task, which is executed > > +# manually as a standalone task whenever we need to update the version of > > the recipe. > > +# It is not executed in a normal build process. Keeping the lock file > > along with > > +# the recipe unpacks it to default sources directory which is also the > > default > > +# CARGO_LOCK_SRC_DIR. > > +# > > +# We only need Cargo.lock and the LICENSE files from the gst-plugins-rs > > git repository, > > +# all the plugins and the dependent packages can be fetched from > > crates.io. So we just > > +# ship these along with the recipe instead of fetching the complete > > repository everytime > > +# from git. > > +SRC_URI += "\ > > +file://LICENSE-MPL-2.0 \ > > +file://LICENSE-APACHE \ > > +file://Cargo.lock \ > > +" Use four space indentation for SRC_URI. > > + > > +LIC_FILES_CHKSUM = " \ > > + file://LICENSE-MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad \ > > + file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \ > > +" > > + > > +inherit cargo cargo-update-recipe-crates pkgconfig > > +require ${BPN}-crates.inc > > + > > +DEPENDS = " \ > > + glib-2.0 \ > > + gstreamer1.0 \ > > + gstreamer1.0-plugins-good \ > > + gstreamer1.0-plugins-bad \ > > + gstreamer1.0-plugins-base \ > > + gst-devtools \ > > + gtk4 \ > > +" > > + > > +S = "${UNPACKDIR}" > > + > > +# For the purpose of reproducibility, modification of Cargo.lock is > > disabled > > +# by default by the cargo_common class using the --frozen flag. > > +# > > +# For some dependencies (for example, cairo-rs), the version recorded in > > the > > +# released Cargo.lock (0.22.7) may not match the actual version we fetch > > +# (0.22.0); the lockfile entry is based on the gtk-rs-core git release > > while > > +# we retrieve 0.22.0. > > +# > > +# Few other dependencies which specify a version range, the version > > fetched by cargo > > +# can differ from the one in the original Cargo.lock even though both > > satisfy > > +# the range. > > +# > > +# As a result, Cargo.lock may be updated with different dependency > > versions for > > +# a few packages. To allow this exception, disable the --frozen flag so > > Cargo.lock > > +# can be modified, but still prevent network access by using the --offline > > flag > > +# in CARGO_BUILD_FLAGS. > > +CARGO_BUILD_FLAGS:remove = "--frozen" > > +CARGO_BUILD_FLAGS:append = " --offline" > > + > > +# Need the network enabled for do_update_crates:append to access crates.io > > +# It fetches the checksum and version of few crates. See below for more > > details > > +do_update_crates[network] = "1" > > + > > +# The `update_crates` in base class by default only parses packages whose > > source is > > +# crates.io in the Cargo.lock file. But we need the other packages and > > +# dependencies whose source is a git repository (for example gstreamer-rs, > > gtk-rs-core etc.) > > +# or the individual plugins (for example gst-plugin-audiofx) which are > > listed in Cargo.lock > > +# but do not have any source specified since they are members of the > > gst-plugins-rs workspace. > > +# > > +# This append checks for those additional packages and generates the > > crates.io URIs to those > > +# and appends them to SRC_URI packages in the ${BPN}-crates.inc file. > > +# > > +do_update_crates:append() { > > + nativepython3 -m ensurepip --upgrade > > + > > + nativepython3 -m pip install packaging --target=${WORKDIR}/pydeps -q > > + > > + export PYTHONPATH="${WORKDIR}/pydeps:$PYTHONPATH" > > + TARGET_FILE="${THISDIR}/${BPN}-crates.inc" > > + nativepython3 - <<EOF > > + > > +import os > > +import re > > +import urllib.request > > +import json > > +import ssl > > +import sys > > +try: > > + import tomllib > > +except ImportError: > > + try: > > + import tomli as tomllib > > + except ImportError: > > + print(f"Requires python>=3.11 for tomllib module or install tomli > > module") > > + sys.exit(1) > > + > > +from packaging.version import Version > > + > > +CA_BUNDLE = > > "${COMPONENTS_DIR}/${BUILD_ARCH}/ca-certificates-native/etc/ssl/certs/ca-certificates.crt" > > +if not os.path.exists(CA_BUNDLE): > > + raise RuntimeError(f"CA bundle not found at {CA_BUNDLE}") > > + > > +ctx = ssl.create_default_context(cafile=CA_BUNDLE) > > + > > +def fetch_json(url): > > + try: > > + req = urllib.request.Request(url, ) > > + with urllib.request.urlopen(req, timeout=10, context=ctx) as r: > > + return json.loads(r.read()) > > + except Exception as e: > > + print(f" ERROR fetching {url}: {e}") > > + return None > > + > > +def check_crates_io(name, max_version): > > + """Check if crate exists on crates.io and get its default version or > > max_version > > + if it is older than the latest version. Return the version and > > checksum or None""" > > + # Strip alpha/pre-release as crates.io may not have it > > + data = fetch_json(f"https://crates.io/api/v1/crates/{name}") > > + if not data: > > + return None, None > > + > > + latest_version = data.get("crate", {}).get("default_version") > > + > > + if Version(latest_version) > Version(max_version): > > + # Make sure we use the version no later than max_version that is > > mentioned > > + # in Cargo.lock to be in sync with the ${PV} of the gst-plugins-rs > > + use_version = max_version > > + print(f"using max version {max_version}") > > + else: > > + # As mentioned above, for some packages, the version captured in > > the released > > + # Cargo.lock could be different than the actual version we fetch. > > So, if the max > > + # version does not actually exist in the crates.io, use the latest > > version > > + use_version = latest_version > > + print(f"using latest version {latest_version}") > > + for v in data.get("versions", []): > > + if v["num"] == use_version: > > + return v["num"], v.get("checksum") > > + return None, None > > + > > +# Read Cargo.lock > > +lockfile = None > > +for root, dirs, files in os.walk('${CARGO_LOCK_SRC_DIR}'): > > + if root.startswith(os.path.join('${CARGO_LOCK_SRC_DIR}', '.pc')): > > + continue > > + if root.startswith(os.path.join('${CARGO_LOCK_SRC_DIR}', '.git')): > > + continue > > + for f in files: > > + if f == 'Cargo.lock': > > + lockfile = os.path.join(root, f) > > + break > > + > > +if not lockfile: > > + raise ValueError("No Cargo.lock found") > > + > > +print(f" cargo lock: {lockfile}") > > +with open(lockfile, 'rb') as f: > > + lock = tomllib.load(f) > > + > > +packages = lock.get('package', []) > > + > > +print(f"Total packages: {len(packages)}") > > +print(f"gst-plugin packages: {[p['name'] for p in packages if > > p['name'].startswith('gst-plugin-')]}") > > +print(f"git sourced packages: {[p['name'] for p in packages if > > p.get('source', '').startswith('git+')]}") > > + > > +# Handle git sourced and gst-plugin dependencies > > +git_src_uri = '\n# Git sourced dependencies and gst-plugin- crates' > > +git_src_uri += '\nSRC_URI += " \\\\\n' > > +git_checksums = '' > > +git_entries = [] > > + > > +for pkg in packages: > > + source = pkg.get('source', '') > > + name = pkg['name'] > > + max_version = pkg['version'] > > + if not source.startswith('git+') and not > > name.startswith('gst-plugin-'): > > + continue > > + > > + print(f"package: {pkg}") > > + # Try crates.io first > > + print(f"Checking for crate {name} with max version {max_version}") > > + cio_version, checksum = check_crates_io(name, max_version) > > + if checksum: > > + git_entries.append(' crate://crates.io/' + name + '/' + > > cio_version + ' \\\\\n') > > + git_checksums += f'\nSRC_URI[{name}-{cio_version}.sha256sum] = > > "{checksum}"' > > + print(f" Using crates.io for git dep: {name} {cio_version}") > > + > > +git_src_uri += ''.join(git_entries) > > +git_src_uri += '"\n' > > +git_src_uri += git_checksums > > +git_src_uri += '\n' > > + > > +with open("${TARGET_FILE}", 'a') as f: > > + f.write(git_src_uri) > > + > > +print("Successfully updated git deps' ${TARGET_FILE}'") > > +EOF > > +} > > + > > +# Since the default top-level manifest in the gst-plugins-rs repository > > +# points to the members from its subdirectories, we want to create a custom > > +# Cargo.toml to build all the plugins in a single workspace, which are > > located > > +# in the vendoring directory as individual crates/packages > > +# > > +# We also need to override the crates-io path of few gst-plugin-packages > > which are > > +# dependencies of the other plugins and point them with their path in the > > vendoring directory > > +# so that there won't be multiple listings of same package in the project > > +# > > +do_configure:prepend() { > > + nativepython3 -m ensurepip --upgrade > > + export PYTHONPATH="${WORKDIR}/pydeps:$PYTHONPATH" > > + nativepython3 << 'EOF' > > +import os > > +import glob > > +import sys > > + > > +try: > > + import tomllib > > +except ImportError: > > + try: > > + import tomli as tomllib > > + except ImportError: > > + print(f"Requires python>=3.11 for tomllib module or install tomli > > module") > > + sys.exit(1) > > + > > +vendors = "${CARGO_VENDORING_DIRECTORY}" > > +unpackdir = "${UNPACKDIR}" > > + > > +print(f"Generating Cargo.toml with {vendors} and {unpackdir} ") > > +members = [] > > +patches = {} > > + > > +# Find all gst-plugin-* dirs and their transitive gst-plugin-* deps > > +# to add their path as workspace members in the top-level manifest > > +for pkg_dir in glob.glob(os.path.join(vendors, 'gst-plugin-*')): > > + cargo_toml = os.path.join(pkg_dir, 'Cargo.toml') > > + if not os.path.exists(cargo_toml): > > + continue > > + print(f"{pkg_dir}") > > + members.append(pkg_dir) > > + > > + with open(cargo_toml, 'rb') as f: > > + data = tomllib.load(f) > > + > > + for section in ['dependencies', 'dev-dependencies', > > 'build-dependencies']: > > + for dep_name, dep_spec in data.get(section, {}).items(): > > + # Get actual package name (may differ from dep_name via > > 'package' field) > > + if isinstance(dep_spec, dict): > > + pkg_name = dep_spec.get('package', dep_name) > > + version = dep_spec.get('version', '') > > + else: > > + pkg_name = dep_name > > + version = dep_spec if isinstance(dep_spec, str) else '' > > + > > + if pkg_name.startswith('gst-plugin-') and pkg_name not in > > patches: > > + # Try exact version match first, fallback to glob > > + if version: > > + dep_dirs = glob.glob(os.path.join(vendors, pkg_name + > > '-' + version)) > > + if not version or not dep_dirs: > > + dep_dirs = glob.glob(os.path.join(vendors, pkg_name + > > '-*')) > > + if dep_dirs: > > + patches[pkg_name] = dep_dirs[0] > > + > > +# Write Cargo.toml > > +with open(os.path.join(unpackdir, 'Cargo.toml'), 'w') as f: > > + f.write('[workspace]\n') > > + f.write('members = [\n') > > + for member in sorted(members): > > + f.write(f' "{member}",\n') > > + f.write(']\n') > > + f.write('resolver = "2"\n') > > + f.write('\n') > > + if patches: > > + f.write('[patch.crates-io]\n') > > + for pkg, path in sorted(patches.items()): > > + f.write(f'{pkg} = {{ path = "{path}" }}\n') > > + > > +print(f"Generated Cargo.toml with {len(members)} members and > > {len(patches)} patches") > > +EOF > > +} > > + > > +# Analytics > > +PACKAGECONFIG[analytics] = "-p gst-plugin-analytics" > > +PACKAGECONFIG[burn] = "-p gst-plugin-burn" > > + > > +# Audio > > +PACKAGECONFIG[audioparsers] = "-p gst-plugin-audioparsers" > > +PACKAGECONFIG[audiofx] = "-p gst-plugin-audiofx" > > +PACKAGECONFIG[claxon] = "-p gst-plugin-claxon" > > +# FIXME build errors > > +# PACKAGECONFIG[csound] = "-p gst-plugin-csound" > > +PACKAGECONFIG[demucs] = "-p gst-plugin-demucs" > > +PACKAGECONFIG[elevenlabs] = "-p gst-plugin-elevenlabs" > > +PACKAGECONFIG[lewton] = "-p gst-plugin-lewton" > > +PACKAGECONFIG[spotify] = "-p gst-plugin-spotify" > > +PACKAGECONFIG[speechmatics] = "-p gst-plugin-speechmatics" > > +# FIXME build errors > > +# PACKAGECONFIG[whisper] = "-p gst-plugin-whisper" > > + > > +# Generic > > +PACKAGECONFIG[file] = "-p gst-plugin-file" > > +PACKAGECONFIG[originalbuffer] = "-p gst-plugin-originalbuffer" > > +PACKAGECONFIG[gopbuffer] = "-p gst-plugin-gopbuffer" > > +PACKAGECONFIG[sodium] = "-p gst-plugin-sodium" > > +PACKAGECONFIG[threadshare] = "-p gst-plugin-threadshare" > > +PACKAGECONFIG[inter] = "-p gst-plugin-inter" > > +PACKAGECONFIG[streamgrouper] = "-p gst-plugin-streamgrouper" > > + > > +# Mux > > +PACKAGECONFIG[flavors] = "-p gst-plugin-flavors" > > +PACKAGECONFIG[isobmff] = "-p gst-plugin-isobmff" > > + > > +# Net > > +PACKAGECONFIG[aws] = "-p gst-plugin-aws" > > +PACKAGECONFIG[deepgram] = "-p gst-plugin-deepgram" > > +PACKAGECONFIG[hlsmultivariantsink] = "-p gst-plugin-hlsmultivariantsink" > > +PACKAGECONFIG[hlssink3] = "-p gst-plugin-hlssink3" > > +PACKAGECONFIG[icecast] = "-p gst-plugin-icecast" > > +PACKAGECONFIG[mpegtslive] = "-p gst-plugin-mpegtslive" > > +PACKAGECONFIG[ndi] = "-p gst-plugin-ndi" > > +PACKAGECONFIG[onvif] = "-p gst-plugin-onvif" > > +PACKAGECONFIG[raptorq] = "-p gst-plugin-raptorq" > > +PACKAGECONFIG[reqwest] = "-p gst-plugin-reqwest" > > +PACKAGECONFIG[rtsp] = "-p gst-plugin-rtsp" > > +PACKAGECONFIG[rtp] = "-p gst-plugin-rtp" > > +PACKAGECONFIG[webrtc] = "-p gst-plugin-webrtc" > > +PACKAGECONFIG[webrtc-signalling] = "-p gst-plugin-webrtc-signalling" > > +PACKAGECONFIG[webrtc-signalling-protocol] = "-p > > gst-plugin-webrtc-signalling-protocol" > > +PACKAGECONFIG[webrtchttp] = "-p gst-plugin-webrtchttp" > > +PACKAGECONFIG[quinn] = "-p gst-plugin-quinn" > > + > > +# Text > > +PACKAGECONFIG[textaccumulate] = "-p gst-plugin-textaccumulate" > > +PACKAGECONFIG[textahead] = "-p gst-plugin-textahead" > > +PACKAGECONFIG[json] = "-p gst-plugin-json" > > +PACKAGECONFIG[regex] = "-p gst-plugin-regex" > > +PACKAGECONFIG[textwrap] = "-p gst-plugin-textwrap" > > + > > +# Utils > > +PACKAGECONFIG[fallbackswitch] = "-p gst-plugin-fallbackswitch" > > +PACKAGECONFIG[livesync] = "-p gst-plugin-livesync" > > +PACKAGECONFIG[debugseimetainserter] = "-p gst-plugin-debugseimetainserter" > > +PACKAGECONFIG[togglerecord] = "-p gst-plugin-togglerecord" > > +PACKAGECONFIG[tracers] = "-p gst-plugin-tracers" > > +PACKAGECONFIG[uriplaylistbin] = "-p gst-plugin-uriplaylistbin" > > +PACKAGECONFIG[validate] = "-p gst-plugin-validate" > > + > > +# Video > > +PACKAGECONFIG[cdg] = "-p gst-plugin-cdg" > > +PACKAGECONFIG[closedcaption] = "-p gst-plugin-closedcaption" > > +# need dav1d recipe meta-openembedded/meta-multimedia > > +PACKAGECONFIG[dav1d] = "-p gst-plugin-dav1d,,dav1d, dav1d" > > +PACKAGECONFIG[ffv1] = "-p gst-plugin-ffv1" > > +PACKAGECONFIG[gif] = "-p gst-plugin-gif" > > +PACKAGECONFIG[gtk4] = "-p gst-plugin-gtk4" > > +PACKAGECONFIG[hsv] = "-p gst-plugin-hsv" > > +PACKAGECONFIG[png] = "-p gst-plugin-png" > > +PACKAGECONFIG[rav1e] = "-p gst-plugin-rav1e" > > +# FIXME failing to download skia from > > +# https://codeload.github.com/rust-skia/skia/tar.gz/m145-0.92.0 > > +# PACKAGECONFIG[skia] = "-p gst-plugin-skia" > > +PACKAGECONFIG[videofx] = "-p gst-plugin-videofx" > > +# TODO no vvdec recipe > > +# PACKAGECONFIG[vvdec] = "-p gst-plugin-vvdec" > > +PACKAGECONFIG[webp] = "-p gst-plugin-webp" > > + > > +# Default members > > +PACKAGECONFIG ??= " \ > > + audiofx \ > > + closedcaption \ > > + file \ > > + fallbackswitch \ > > + tracers \ > > + isobmff \ > > + threadshare \ > > + rtp \ > > + inter \ > > + isobmff \ > > + hlssink3 \ > > + mpegtslive \ > > + reqwest \ > > + rtsp \ > > + webrtc \ > > + webrtc-signalling \ > > + videofx \ > > + webp \ > > +" > > + > > +do_install:append() { > > + install -d ${D}${libdir}/gstreamer-1.0/ > > + install -m 0755 ${B}/target/${CARGO_TARGET_SUBDIR}/*.so > > ${D}${libdir}/gstreamer-1.0/ > > +} > > + > > +PACKAGES =+ " \ > > + gstreamer1.0-plugins-rs-tutorial \ > > + gstreamer1.0-plugins-rs-analytics \ > > + gstreamer1.0-plugins-rs-burn \ > > + gstreamer1.0-plugins-rs-audiofx \ > > + gstreamer1.0-plugins-rs-audioparsers \ > > + gstreamer1.0-plugins-rs-claxon \ > > + gstreamer1.0-plugins-rs-csound \ > > + gstreamer1.0-plugins-rs-demucs \ > > + gstreamer1.0-plugins-rs-elevenlabs \ > > + gstreamer1.0-plugins-rs-lewton \ > > + gstreamer1.0-plugins-rs-speechmatics \ > > + gstreamer1.0-plugins-rs-spotify \ > > + gstreamer1.0-plugins-rs-whisper \ > > + gstreamer1.0-plugins-rs-file \ > > + gstreamer1.0-plugins-rs-originalbuffer \ > > + gstreamer1.0-plugins-rs-sodium \ > > + gstreamer1.0-plugins-rs-threadshare \ > > + gstreamer1.0-plugins-rs-inter \ > > + gstreamer1.0-plugins-rs-streamgrouper \ > > + gstreamer1.0-plugins-rs-gopbuffer \ > > + gstreamer1.0-plugins-rs-flavors \ > > + gstreamer1.0-plugins-rs-isobmff \ > > + gstreamer1.0-plugins-rs-aws \ > > + gstreamer1.0-plugins-rs-deepgram \ > > + gstreamer1.0-plugins-rs-hlsmultivariantsink \ > > + gstreamer1.0-plugins-rs-hlssink3 \ > > + gstreamer1.0-plugins-rs-icecast \ > > + gstreamer1.0-plugins-rs-mpegtslive \ > > + gstreamer1.0-plugins-rs-ndi \ > > + gstreamer1.0-plugins-rs-onvif \ > > + gstreamer1.0-plugins-rs-raptorq \ > > + gstreamer1.0-plugins-rs-reqwest \ > > + gstreamer1.0-plugins-rs-rtp \ > > + gstreamer1.0-plugins-rs-rtsp \ > > + gstreamer1.0-plugins-rs-webrtchttp \ > > + gstreamer1.0-plugins-rs-webrtc \ > > + gstreamer1.0-plugins-rs-quinn \ > > + gstreamer1.0-plugins-rs-textaccumulate \ > > + gstreamer1.0-plugins-rs-textahead \ > > + gstreamer1.0-plugins-rs-json \ > > + gstreamer1.0-plugins-rs-regex \ > > + gstreamer1.0-plugins-rs-textwrap \ > > + gstreamer1.0-plugins-rs-fallbackswitch \ > > + gstreamer1.0-plugins-rs-livesync \ > > + gstreamer1.0-plugins-rs-debugseimetainserter \ > > + gstreamer1.0-plugins-rs-togglerecord \ > > + gstreamer1.0-plugins-rs-tracers \ > > + gstreamer1.0-plugins-rs-uriplaylistbin \ > > + gstreamer1.0-plugins-rs-validate \ > > + gstreamer1.0-plugins-rs-cdg \ > > + gstreamer1.0-plugins-rs-closedcaption \ > > + gstreamer1.0-plugins-rs-dav1d \ > > + gstreamer1.0-plugins-rs-ffv1 \ > > + gstreamer1.0-plugins-rs-gif \ > > + gstreamer1.0-plugins-rs-gtk4 \ > > + gstreamer1.0-plugins-rs-hsv \ > > + gstreamer1.0-plugins-rs-png \ > > + gstreamer1.0-plugins-rs-rav1e \ > > + gstreamer1.0-plugins-rs-skia \ > > + gstreamer1.0-plugins-rs-videofx \ > > + gstreamer1.0-plugins-rs-vvdec \ > > + gstreamer1.0-plugins-rs-webp \ > > +" Rather than explicitly listing the PACKAGES above, and their files below, you should make use of the do_split_packages() function, which will do this automatically. Unless of course you follow Alex' suggestion and split this into one recipe per plugin. > > + > > +FILES:gstreamer1.0-plugins-rs-tutorial = > > "/usr/lib/gstreamer-1.0/libgstrstutorial.so" > > +FILES:gstreamer1.0-plugins-rs-analytics = > > "/usr/lib/gstreamer-1.0/libgstrsanalytics.so" > > +FILES:gstreamer1.0-plugins-rs-burn = "/usr/lib/gstreamer-1.0/libgstburn.so" > > +FILES:gstreamer1.0-plugins-rs-audiofx = > > "/usr/lib/gstreamer-1.0/libgstrsaudiofx.so" > > +FILES:gstreamer1.0-plugins-rs-audioparsers = > > "/usr/lib/gstreamer-1.0/libgstrsaudioparsers.so" > > +FILES:gstreamer1.0-plugins-rs-claxon = > > "/usr/lib/gstreamer-1.0/libgstclaxon.so" > > +FILES:gstreamer1.0-plugins-rs-csound = > > "/usr/lib/gstreamer-1.0/libgstcsound.so" > > +FILES:gstreamer1.0-plugins-rs-demucs = > > "/usr/lib/gstreamer-1.0/libgstdemucs.so" > > +FILES:gstreamer1.0-plugins-rs-elevenlabs = > > "/usr/lib/gstreamer-1.0/libgstelevenlabs.so" > > +FILES:gstreamer1.0-plugins-rs-lewton = > > "/usr/lib/gstreamer-1.0/libgstlewton.so" > > +FILES:gstreamer1.0-plugins-rs-speechmatics = > > "/usr/lib/gstreamer-1.0/libgstspeechmatics.so" > > +FILES:gstreamer1.0-plugins-rs-spotify = > > "/usr/lib/gstreamer-1.0/libgstspotify.so" > > +FILES:gstreamer1.0-plugins-rs-whisper = > > "/usr/lib/gstreamer-1.0/libgstwhisper.so" > > +FILES:gstreamer1.0-plugins-rs-file = > > "/usr/lib/gstreamer-1.0/libgstrsfile.so" > > +FILES:gstreamer1.0-plugins-rs-originalbuffer = > > "/usr/lib/gstreamer-1.0/libgstoriginalbuffer.so" > > +FILES:gstreamer1.0-plugins-rs-sodium = > > "/usr/lib/gstreamer-1.0/libgstsodium.so" > > +FILES:gstreamer1.0-plugins-rs-threadshare = > > "/usr/lib/gstreamer-1.0/libgstthreadshare.so" > > +FILES:gstreamer1.0-plugins-rs-inter = > > "/usr/lib/gstreamer-1.0/libgstrsinter.so" > > +FILES:gstreamer1.0-plugins-rs-streamgrouper = > > "/usr/lib/gstreamer-1.0/libgststreamgrouper.so" > > +FILES:gstreamer1.0-plugins-rs-gopbuffer = > > "/usr/lib/gstreamer-1.0/libgstgopbuffer.so" > > +FILES:gstreamer1.0-plugins-rs-flavors = > > "/usr/lib/gstreamer-1.0/libgstrsflv.so" > > +FILES:gstreamer1.0-plugins-rs-isobmff = > > "/usr/lib/gstreamer-1.0/libgstisobmff.so" > > +FILES:gstreamer1.0-plugins-rs-aws = "/usr/lib/gstreamer-1.0/libgstaws.so" > > +FILES:gstreamer1.0-plugins-rs-deepgram = > > "/usr/lib/gstreamer-1.0/libgstdeepgram.so" > > +FILES:gstreamer1.0-plugins-rs-hlsmultivariantsink = > > "/usr/lib/gstreamer-1.0/libgsthlsmultivariantsink.so" > > +FILES:gstreamer1.0-plugins-rs-hlssink3 = > > "/usr/lib/gstreamer-1.0/libgsthlssink3.so" > > +FILES:gstreamer1.0-plugins-rs-icecast = > > "/usr/lib/gstreamer-1.0/libgsticecast.so" > > +FILES:gstreamer1.0-plugins-rs-mpegtslive = > > "/usr/lib/gstreamer-1.0/libgstmpegtslive.so" > > +FILES:gstreamer1.0-plugins-rs-ndi = "/usr/lib/gstreamer-1.0/libgstndi.so" > > +FILES:gstreamer1.0-plugins-rs-onvif = > > "/usr/lib/gstreamer-1.0/libgstrsonvif.so" > > +FILES:gstreamer1.0-plugins-rs-raptorq = > > "/usr/lib/gstreamer-1.0/libgstraptorq.so" > > +FILES:gstreamer1.0-plugins-rs-reqwest = > > "/usr/lib/gstreamer-1.0/libgstreqwest.so" > > +FILES:gstreamer1.0-plugins-rs-rtp = "/usr/lib/gstreamer-1.0/libgstrsrtp.so" > > +FILES:gstreamer1.0-plugins-rs-rtsp = > > "/usr/lib/gstreamer-1.0/libgstrsrtsp.so" > > +FILES:gstreamer1.0-plugins-rs-webrtchttp = > > "/usr/lib/gstreamer-1.0/libgstwebrtchttp.so" > > +FILES:gstreamer1.0-plugins-rs-webrtc = > > "/usr/lib/gstreamer-1.0/libgstrswebrtc.so" > > +FILES:gstreamer1.0-plugins-rs-quinn = > > "/usr/lib/gstreamer-1.0/libgstquinn.so" > > +FILES:gstreamer1.0-plugins-rs-textaccumulate = > > "/usr/lib/gstreamer-1.0/libgsttextaccumulate.so" > > +FILES:gstreamer1.0-plugins-rs-textahead = > > "/usr/lib/gstreamer-1.0/libgsttextahead.so" > > +FILES:gstreamer1.0-plugins-rs-json = "/usr/lib/gstreamer-1.0/libgstjson.so" > > +FILES:gstreamer1.0-plugins-rs-regex = > > "/usr/lib/gstreamer-1.0/libgstregex.so" > > +FILES:gstreamer1.0-plugins-rs-textwrap = > > "/usr/lib/gstreamer-1.0/libgsttextwrap.so" > > +FILES:gstreamer1.0-plugins-rs-fallbackswitch = > > "/usr/lib/gstreamer-1.0/libgstfallbackswitch.so" > > +FILES:gstreamer1.0-plugins-rs-livesync = > > "/usr/lib/gstreamer-1.0/libgstlivesync.so" > > +FILES:gstreamer1.0-plugins-rs-debugseimetainserter = > > "/usr/lib/gstreamer-1.0/libgstdebugseimetainserter.so" > > +FILES:gstreamer1.0-plugins-rs-togglerecord = > > "/usr/lib/gstreamer-1.0/libgsttogglerecord.so" > > +FILES:gstreamer1.0-plugins-rs-tracers = > > "/usr/lib/gstreamer-1.0/libgstrstracers.so" > > +FILES:gstreamer1.0-plugins-rs-uriplaylistbin = > > "/usr/lib/gstreamer-1.0/libgsturiplaylistbin.so" > > +FILES:gstreamer1.0-plugins-rs-validate = > > "/usr/lib/gstreamer-1.0/libgstrsvalidate.so" > > +FILES:gstreamer1.0-plugins-rs-cdg = "/usr/lib/gstreamer-1.0/libgstcdg.so" > > +FILES:gstreamer1.0-plugins-rs-closedcaption = > > "/usr/lib/gstreamer-1.0/libgstrsclosedcaption.so" > > +FILES:gstreamer1.0-plugins-rs-dav1d = > > "/usr/lib/gstreamer-1.0/libgstdav1d.so" > > +FILES:gstreamer1.0-plugins-rs-ffv1 = "/usr/lib/gstreamer-1.0/libgstffv1.so" > > +FILES:gstreamer1.0-plugins-rs-gif = "/usr/lib/gstreamer-1.0/libgstgif.so" > > +FILES:gstreamer1.0-plugins-rs-gtk4 = "/usr/lib/gstreamer-1.0/libgstgtk4.so" > > +FILES:gstreamer1.0-plugins-rs-hsv = "/usr/lib/gstreamer-1.0/libgsthsv.so" > > +FILES:gstreamer1.0-plugins-rs-png = "/usr/lib/gstreamer-1.0/libgstrspng.so" > > +FILES:gstreamer1.0-plugins-rs-rav1e = > > "/usr/lib/gstreamer-1.0/libgstrav1e.so" > > +FILES:gstreamer1.0-plugins-rs-skia = "/usr/lib/gstreamer-1.0/libgstskia.so" > > +FILES:gstreamer1.0-plugins-rs-videofx = > > "/usr/lib/gstreamer-1.0/libgstrsvideofx.so" > > +FILES:gstreamer1.0-plugins-rs-vvdec = > > "/usr/lib/gstreamer-1.0/libgstvvdec.so" > > +FILES:gstreamer1.0-plugins-rs-webp = > > "/usr/lib/gstreamer-1.0/libgstrswebp.so" //Peter
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#237576): https://lists.openembedded.org/g/openembedded-core/message/237576 Mute This Topic: https://lists.openembedded.org/mt/119464494/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
