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 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.