All of lore.kernel.org
 help / color / mirror / Atom feed
* [Patch] locking in do_package_tar
@ 2010-04-23 10:04 Jens Erdmann
  2010-04-23 15:55 ` Denys Dmytriyenko
  0 siblings, 1 reply; 4+ messages in thread
From: Jens Erdmann @ 2010-04-23 10:04 UTC (permalink / raw)
  To: openembedded-devel

[-- 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 () {

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-04-26  9:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-23 10:04 [Patch] locking in do_package_tar Jens Erdmann
2010-04-23 15:55 ` Denys Dmytriyenko
2010-04-24 16:56   ` Denys Dmytriyenko
2010-04-26  8:57     ` Jens Erdmann

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.