LEDE make -j flag for multiprocess compilation

Dear all,

i am recompiling LEDE using -j option for multiprocess compilation and it seems to work.
Are there reasons why make -j it is not documented, nor on OpenWRT or LEDE.

Does it fail on certain architectures or is it safe?

Kind regards,

Documented here:
https://lede-project.org/docs/guide-developer/quickstart-build-images

if this could be a problem for the quality of certain targets, please revert or add information.

OpenWRT had it documented:

https://wiki.openwrt.org/doc/faq/development

Cool, now it is documented in LEDE.

usually, often, but not always.

Using "-j X" can speed up the compilation, but can

  • lead to strange errors if packages' (build-time) dependencies are not 100% correct.
  • make debugging compilation errors much harder, as the actual errors may not be the last ones in the build log

It is really typical and annoying on bug trackers (main core, packages feed), that people write bugs and proudly copy the last few lines of the compilation log, without realising that the last few lines may not be the actual error...

So, "-j X" should be recommended only for people who are already familiar with the build system.

If you consider non-repeatable results "safe" then perhaps. The build process isn't deterministic with make -j N in my experience.

Thanks, I added a warning.

if i make an image firmware using this -j option, where do i get these "strange errors"? in the make compiling process or directly on my router with the flashed firmware?

i ask this because i don't get compiling errors using a -j5 option.

thanks

The problem is that the build will sometimes crash because another job hasn't finished downloading or compiling something that is pre-requisite. This usually resolves itself by re-running the make.

I do make download first to have all sources in place then run the multi-job make.

ciao!
how do you do?

i don't like it, for example i can only build with make V=s for D-LINK DIR860l B1 for example, it asks for a prompt that I have no idea where I can give a flag for, although I just have to press ENTER, when I have other Linksys WRT routers, they always fail.

For me, it is always make V=s and slow, but sure.
I built is 3-4 hours for 2 different type of targets.

How do you download for all the sources?

where is that info?

do you have a script to pre-download the sources in the dl directory? it would be cool to share it :slight_smile:

Make download

(that will take care of 99% of source downloads. There are some exceptions, e.g. build dependencies on complex packages, which dependencies will be noticed only during actual build make, but there are only a few of those.)

1 Like

that's it????????
ohh my god....

For what its worth, you can also run "make -j10 download" to have 10 download threads running if you have the bandwidth and in a hurry.

this is awesome! thanks so much! you are a god!