-
Notifications
You must be signed in to change notification settings - Fork 3k
Support for multiple compile queues/jobs, stats cache and compile order consistency #395
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Add header stats cache for need_update() routine Add compile order consistency
Multiple compile jobs are not enabled by default unless -j 0 or -j >1 is specified
This can't be merged yet, it has a few important problems:
|
|
…ancing based on apply_async(); Use the returned result by apply_async() to fetch compile_worker() results and get rid of python queues; Optimize the threads handling code Reuse compile threads via self.mp_pool
Added get_dep_opt for ARM class
|
I've been looking at merging this lately, but I've found a new problem and I'm not sure what's the best way to fix this. The problem is that the "assemble" method for ARM is actually a two step process: it first preprocesses the file, and then assembles the output of the preprocessor:
I added this in commit e69956a in order to be able to compile the new (back then) CMSIS-DSP library. If you try to compile the DSP library with your patch in place (build.py -t ARM -m LPC1768 -d), you'll see that it fails because this change is now ignored. Integrating it is problematic, because as it is above the "assemble" step of ARM actually consists of two separate commands (preprocess and then assemble) which must run in order (assemble needs to run after preprocess finishes). Can you think of a simple way to integrate this into your architecture? By the way, this illustrates pretty well why "The concept of separation between .s, .c, .cpp file is unnecessary over-complication of the toolchain compile logic" is false. There's no good point in making asumptions about how a particular toolchain works, it's much better to let the toolchain implementation worry about its internal details. |
Conflicts: workspace_tools/build.py
…ds per source file Support multiple commands per compile Reuse _assemble() and _compile() for sequential and parallel compiles Preserve compile(), compile_c(), compile_cpp() and assemble() methods functionality
if itr > 6000: | ||
p.terminate() | ||
p.join() | ||
raise ToolException("Compile did not finish in 5 minutes") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I understand '5 minutes' here. You are executing this loop with a 10 ms delay at the end of the loop for 6000 times, which translates to 1 minute.
Support for multiple compile queues/jobs, stats cache and compile order consistency
Update mbed-client-c lib
This patch set adds:
The compile queues feature is controlled via -j flag to build.py, build_releases.py and make.py. The default value is 1 which effectively disables the support. If -j 0 is specified, then the number of host machines CPUs will be used to determine the number of jobs.