On Sat, Oct 07, 2017 at 12:06:51AM -0400, Mark H Weaver wrote: > Ricardo Wurmus writes: > > > Hi Ludo, > > > >>> Here are some important items I can think of: > > […] > >>> • Guile 2.2 compiler terrible issue: > >>> . > > > > One way to side-step this issue for the upcoming release is to use one > > Guile process per file when running “guix pull”. This will make it run > > a lot slower, but that would be better than the current situation. > > I've attached a workaround that I've been using for the last 6 weeks on > my MIPS-based Yeeloong running GuixSD, since it only has 1 GB of RAM and > otherwise it would not be able to successfully build the 'guix' package. > > Note that I never use 'guix pull', so I'm not sure off-hand whether this > solves the problem there, but it certainly greatly reduces the memory > needed to run 'make' and thus to build the 'guix' package. > > This patch modifies build-aux/compile-all.scm to work as follows: after > loading all modules in the parent process, it then forks off a child and > compiles 20 modules in parallel within that child while the parent > waits. When the child is finished compiling those 20 modules, the child > exits (thus freeing the memory leaked during compilation), and then the > parent spawns a new child to compile the next 20 modules, and so on, > until all the modules are compiled. > > We should probably consider applying this to master. Thoughts? > > Mark > > Can we give it a set to compile in order? For example building guix/build[-system] and then gnu/build, and then only at the end build gnu/services {guix,gnu}/tests? It might be slightly faster to build the modules that don't pull in gnu/packages/* first and then end with those that would use those modules. -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted