fcm
fcm copied to clipboard
fcm make mirror continuation: build inheritance anormaly
Consider an extract-build with inheritance.
The original make has extracted the following targets:
foo.f90
bar.f90
baz.f90
In its build, the user has explicitly excluded baz.f90
with a build.ns-excl
statement.
In the current make, the user has written a new source file qux.f90
, that requires baz.f90
for the build to work, so he removes exclusion with a new build.ns-excl
statement, which should override the original statement.
In a one-stage extract-build, the current build obtains its sources from:
- The inherited build - no
baz.f90
because it was excluded. - The current extract - no
baz.f90
because it is unchanged.- which sees the full source of the inherited extract - has
baz.f90
.
- which sees the full source of the inherited extract - has
So, the current build is able to see baz.f90
via the extract step.
However, if we have a extract-mirror, then build in an alternate location, the current build will obtain its sources from:
- The inherited build - no
baz.f90
because it was excluded. - The
source=extract
statement - nobaz.f90
because it is unchanged.
So, the current build is unable to see baz.f90
, and so it fails.
The intention of the current logic is such that the current step only needs to walk one step to obtain the full source tree - by assuming that the immediate predecessors have all the knowledge required.
This assumption clearly does not work well in this case.