[Scons-users] Problems with SCons parallel build

Brady Johnson bradyallenjohnson at gmail.com
Fri Mar 21 18:30:32 EDT 2014


Wow, I fixed it!! Actually a few emails ago when I reported that removing
all the calls to cd from the Command() builders failed, it failed because
of what I commented out, later parts of the build needed these files. I
changed all the calls to "cd /some/dest/dir ; jar xf /some/file" with
"unzip -d /some/dest/dir /some/file" (no cd's anywhere) and now it works
great with "-j 4"

So then either Command() isnt creating a sub process, or the child process
is somehow affecting the parent. Either way, calling "cd" in a Command()
causes parallel building to not work.

Thanks for your help Gary, Dirk, and Evan!!

Regards,

Brady



On Fri, Mar 21, 2014 at 10:56 PM, Evan Driscoll <driscoll at cs.wisc.edu>wrote:


> On 2014-03-21 16:50, Brady Johnson wrote:

>

>> I commented out all the cd's from the Command() builders, and its

>> still failing.

>>

>> Something else that I just considered: I build several RPMs by

>> calling os.system('rpmbuild...') directly instead of calling the

>> SCons rpm builder. I wonder if rpmbuild changes directories,

>> subsequently changing it for the SCons process. Anybody know if this

>> could cause problems?

>>

>

> A child process can't change the directory of the parent (or, maybe

> there's a way if you try really hard and jump through hoops or something).

> That shouldn't be the cause.

>

> One thought you could try: change env['ENV']['PATH'] so that

> x86_64-dx-linux-gnu-g++ is a script you write that outputs the current

> directory before running. Would at least tell you if this is a wild goose

> chase. :-)

>

> Evan

>

>

>

>> Thanks,

>>

>> Brady

>>

>> On Fri, Mar 21, 2014 at 10:30 PM, Brady Johnson

>> <bradyallenjohnson at gmail.com> wrote:

>>

>> The only cd in the entire project is in the aforementioned call to

>>> Command(), chdir isn't used anywhere, neither via os nor via

>>> builders.

>>>

>>> Regards,

>>>

>>> Brady

>>>

>>> On Mar 21, 2014 10:26 PM, "Evan Driscoll" <driscoll at cs.wisc.edu>

>>> wrote:

>>> On 2014-03-21 16:04, Gary Oberbrunner wrote:

>>> "cd" in a command is OK, since that runs in a subprocess. But a

>>> python chdir() would be very bad, since the whole process has only

>>> one

>>> current dir, so you're changing it for all threads if you do that.

>>>

>>> Don't forget chdir arguments to builders too.

>>>

>>> In other words, when using a parallel build:

>>>

>>> 1) Command("cd blah && whatever") is OK

>>> 2) AnyBuilder(..., chdir=1) or AnyBuilder(..., chdir='blah') is NOT

>>> 3) os.chdir() from a Python function called by a builder is NOT

>>>

>>> Evan

>>>

>>> _______________________________________________

>>> Scons-users mailing list

>>> Scons-users at scons.org

>>> http://four.pairlist.net/mailman/listinfo/scons-users [1]

>>>

>>

>>

>>

>> Links:

>> ------

>> [1] http://four.pairlist.net/mailman/listinfo/scons-users

>>

>>

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://four.pairlist.net/pipermail/scons-users/attachments/20140321/6f6eef94/attachment.htm


More information about the Scons-users mailing list