[Scons-users] Problems with SCons parallel build

Robert Zeigler robert.zeigler at gmail.com
Fri Mar 21 20:00:12 EDT 2014


I think your success with -j 4 after removing the cd is a red herring. cd in a command works with parallel builds, and I have access to resources where the parallelization allows for dozens (and even hundreds) of parallel jobs.

Robert

On Mar 21, 2014, at 3/215:38 PM , Brady Johnson <bradyallenjohnson at gmail.com> wrote:


> Sorry guys, I spoke too soon. It worked with "-j 4", but then I got greedy and tried with "-j 12" and "-j 8" and it failed again, saying source files dont exist, even though they do indeed exist, and they are not generated. Seems like the "cd" in a Command() was one problem, because it wouldnt work before with -j 2 nor -j 4. Now there's something else.

>

> Regards,

>

> Brady

>

>

>

> On Fri, Mar 21, 2014 at 11:30 PM, Brady Johnson <bradyallenjohnson at gmail.com> wrote:

> 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

>

>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

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




More information about the Scons-users mailing list