From: John Ripple <john.ripple@keysight.com>
To: openembedded-core@lists.openembedded.org
Cc: John Ripple <john.ripple@keysight.com>
Subject: [meta][PATCH v2 3/3] go-vendor.bbclass: Run vendor_unlink task under fakeroot
Date: Wed, 15 Jul 2026 09:20:09 -0600 [thread overview]
Message-ID: <20260715152011.3542412-4-john.ripple@keysight.com> (raw)
In-Reply-To: <20260715152011.3542412-1-john.ripple@keysight.com>
do_install and do_package both run under fakeroot (pseudo), which keeps
pseudo's ownership/inode database in sync with what is actually on disk
under D. do_vendor_unlink runs between them but was never marked
fakeroot, so its os.unlink() of the vendor symlink happened outside of
pseudo's view: the file disappeared from disk but pseudo's database
still held a stale record for that path/inode.
The next fakeroot task to touch that path (do_package) then finds the
on-disk state and pseudo's database disagreeing, and pseudo aborts with
"path mismatch" / "inode mismatch" errors, failing do_package.
Mark do_vendor_unlink fakeroot, matching do_install and do_package, so
its filesystem operations are tracked by pseudo consistently.
Signed-off-by: John Ripple <john.ripple@keysight.com>
---
meta/classes/go-vendor.bbclass | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/meta/classes/go-vendor.bbclass b/meta/classes/go-vendor.bbclass
index 85a3c1b586..5bb4e8e876 100644
--- a/meta/classes/go-vendor.bbclass
+++ b/meta/classes/go-vendor.bbclass
@@ -40,13 +40,14 @@ def go_src_uri(repo, version, path=None, subdir=None, \
return src_uri
-python do_vendor_unlink() {
+fakeroot python do_vendor_unlink() {
go_import = d.getVar('GO_IMPORT')
linkname = os.path.join(d.getVar('D') + d.getVar('libdir'), 'go', 'src', go_import, 'vendor')
if os.path.islink(linkname):
os.unlink(linkname)
}
+do_vendor_unlink[depends] += "virtual/fakeroot-native:do_populate_sysroot"
addtask vendor_unlink before do_package after do_install
python do_go_vendor() {
prev parent reply other threads:[~2026-07-15 15:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-15 15:20 [PATCH v2 0/3] Create selftest suite for go-vendor.bbclass John Ripple
2026-07-15 15:20 ` [meta][PATCH v2 1/3] go-vendor.bbclass: Fix test file exclusion and license propagation John Ripple
2026-07-15 15:20 ` [meta][meta-selftest][PATCH v2 2/3] oeqa/selftest: Add go-vendor.bbclass selftest suite John Ripple
2026-07-16 14:08 ` [OE-core] " Mathieu Dubois-Briand
2026-07-15 15:20 ` John Ripple [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260715152011.3542412-4-john.ripple@keysight.com \
--to=john.ripple@keysight.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.