From: Jens Erdmann <j.erdmann@road.de>
To: openembedded-devel@lists.openembedded.org
Subject: [Patch] locking in do_package_tar
Date: Fri, 23 Apr 2010 12:04:44 +0200 [thread overview]
Message-ID: <4BD170BC.8020103@road.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 608 bytes --]
Hey folks,
I would like to introduce locking in do_package_tar. I had a case here
were do_package_tar and do_package_ipk where running parallel. Because
of this "tar: .: file changed as we read it" occurs. I fixed it by
introduce locking in do_package_tar. What do you think about it?
--
------- ROAD ...the handyPC Company - - - ) ) )
Jens Erdmann
Software Development
ROAD GmbH
Bennigsenstr. 14 | 12159 Berlin | Germany
fon: +49 (30) 230069 - 64 | fax: +49 (30) 230069 - 69
url: www.road.de
Amtsgericht Charlottenburg: HRB 96688 B
Managing director: Hans-Peter Constien
[-- Attachment #2: oe_tar_lock.patch --]
[-- Type: text/x-diff, Size: 1255 bytes --]
diff --git a/classes/package_tar.bbclass b/classes/package_tar.bbclass
index b905e17..47bf2cc 100644
--- a/classes/package_tar.bbclass
+++ b/classes/package_tar.bbclass
@@ -58,6 +58,7 @@ python do_package_tar () {
localdata = bb.data.createCopy(d)
pkgdest = bb.data.getVar('PKGDEST', d, 1)
root = "%s/%s" % (pkgdest, pkg)
+ lf = bb.utils.lockfile(root + ".lock")
bb.data.setVar('ROOT', '', localdata)
bb.data.setVar('ROOT_%s' % pkg, root, localdata)
@@ -65,6 +66,7 @@ python do_package_tar () {
overrides = bb.data.getVar('OVERRIDES', localdata)
if not overrides:
+ bb.utils.unlockfile(lf)
raise bb.build.FuncFailed('OVERRIDES not defined')
overrides = bb.data.expand(overrides, localdata)
bb.data.setVar('OVERRIDES', '%s:%s' % (overrides, pkg), localdata)
@@ -82,10 +84,12 @@ python do_package_tar () {
from glob import glob
if not glob('*') + glob('.[!.]*'):
bb.note("Not creating empty archive for %s-%s" % (pkg, bb.data.expand('${PV}-${PR}${DISTRO_PR}', d, True)))
+ bb.utils.unlockfile(lf)
continue
ret = os.system("tar -czf %s %s" % (tarfn, '.'))
if ret != 0:
bb.error("Creation of tar %s failed." % tarfn)
+ bb.utils.unlockfile(lf)
}
python () {
next reply other threads:[~2010-04-23 10:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-23 10:04 Jens Erdmann [this message]
2010-04-23 15:55 ` [Patch] locking in do_package_tar Denys Dmytriyenko
2010-04-24 16:56 ` Denys Dmytriyenko
2010-04-26 8:57 ` Jens Erdmann
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=4BD170BC.8020103@road.de \
--to=j.erdmann@road.de \
--cc=openembedded-devel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox