All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denys Dmytriyenko <denis@denix.org>
To: openembedded-devel@lists.openembedded.org
Subject: Re: [Patch] locking in do_package_tar
Date: Fri, 23 Apr 2010 11:55:15 -0400	[thread overview]
Message-ID: <20100423155515.GA27322@denix.org> (raw)
In-Reply-To: <4BD170BC.8020103@road.de>

On Fri, Apr 23, 2010 at 12:04:44PM +0200, Jens Erdmann wrote:
> 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?

Ah, I've been suffering from this problem for quite some time now, when making 
parallel builds with BB_NUMBER_THREADS. I was trying to debug it and noticed 
it would fail when kernel recipe would try to do_deploy at the same time 
another package would try to do_package_stage, so I was digging in the 
packaged staging direction. Tom Rini even made a patch to add an extra lock in 
there, which didn't help with my issue...
So, let me try your patch and see if this problem is gone for good! Thanks.

-- 
Denys

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

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

> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel




  reply	other threads:[~2010-04-23 15:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-23 10:04 [Patch] locking in do_package_tar Jens Erdmann
2010-04-23 15:55 ` Denys Dmytriyenko [this message]
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=20100423155515.GA27322@denix.org \
    --to=denis@denix.org \
    --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.