[meta-lts-mixins][scarthgap/rust][PATCH 26/35] cargo_common.bbclass: add subdir argument to git dependency to let cargo find crate

Scott Murray <[email protected]> Fri, 31 Jul 2026 07:32:56 -0400
Newsgroups org.yoctoproject.lists.yocto-patches
Message-ID <7a7dc78d2a9e44ad487246222cd19eaffe42c237.1785496469.git.scott.murray@konsulko.com>
From: George Refseth <[email protected]>

When git referenced crate dependency dependens on (root) workspace virtual
manifest, when patching path the path to the folder containing the crate
within the referenced repo need to be added to the patching process.
A subdir argument is added to address this need.

Example usage when repo contains an api crate defining the api for org/repo:
SRC_URI:append = "git://[email protected]/<org>/<repo>.git;name=api;destsuffix=repo-api;subdir=crates/api;type=git-dependency"

Cc: Erik Wierich <[email protected]>
Signed-off-by: George Refseth <[email protected]>
Signed-off-by: Antonin Godard <[email protected]>
Signed-off-by: Richard Purdie <[email protected]>
(adapted from oe-core commit e955099a2eeff111709de180b127db866b217600)
Signed-off-by: Scott Murray <[email protected]>
---
 classes-recipe/cargo_common.bbclass | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/classes-recipe/cargo_common.bbclass b/classes-recipe/cargo_common.bbclass
index db050ca..34fd1e7 100644
--- a/classes-recipe/cargo_common.bbclass
+++ b/classes-recipe/cargo_common.bbclass
@@ -154,6 +154,9 @@ python cargo_common_do_patch_paths() {
                     repo = '%s://%s@%s%s' % (ud.proto, ud.user, ud.host, ud.path)
                 else:
                     repo = '%s://%s%s' % (ud.proto, ud.host, ud.path)
+                subdir = ud.parm.get('subdir')
+                if subdir is not None:
+                    destsuffix = os.path.join(destsuffix, subdir)
                 path = '%s = { path = "%s" }' % (name, os.path.join(workdir, destsuffix))
                 patches.setdefault(repo, []).append(path)
 
-- 
2.55.0