> -----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]]
-=-=-=-=-=-=-=-=-=-=-=-

  • Re: [OE-core] [PATCH v3] g... Peter Kjellerstedt via lists.openembedded.org

Reply via email to