-
Notifications
You must be signed in to change notification settings - Fork 613
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
multitasks continue their execution even if prerequisite fails #190
Comments
I wonder if this is the same issue I'm experiencing #189. For what it's worth, in my contrived example the behavior is intermittent. |
I don't know, but my log above shows another issue: the items in my example aren't actually executed in parallel. Look at the timestamps of the "Compiling" lines — they're emitted by the Again, drake handles this correctly and executes those |
The following PR attempts to fix this issue |
Problem summary: With the following Rakefile rake v12.0.0 continues building the "apps" even though one of its prerequisites (the "sources") fails.
This Rakefile is a dumbed-down version of my application's build system. There are several applications that all depend on a common library. This library in turn depends on several object files, and for each object file there's a single source file. There's a
rule
that compiles those source files into object files.It's the basic C++ application model: several
.cpp
get turned into.o
, those.o
are linked into a.a
, several applications link against that.a
.What happens, though, is that even if turning one of those
.cpp
into an.o
fails (and therefore the.a
cannot be built) the linker for the applications is still invoked. That linking step fails, as the library isn't found.Here's the synthetic Rakefile that reproduces this issue:
First, run
rake clean
. This will create the dummy source filessource1.cpp
throughsource20.cpp
. Next, runrake -m
. You'll observe the following output:You can see that Rake aborts building
app1
, but it it still tries to createapp4
andapp5
. Neither of those should have been continued as their prerequisitelibrary
has failed. Which of those otherappX
targets is continued depends on timing; it's not always 4 and 5.Just for fun I've tried the same Rakefile with
drake -j8
instead ofrake -m
.drake
handles this case correctly and doesn't continue building any of the otherappX
targets.The text was updated successfully, but these errors were encountered: