-
Notifications
You must be signed in to change notification settings - Fork 5
502 ignore mo dependencies #503
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
First requesting a review from Jason, since he analysed the original failure. |
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.
I think this does not solve the problem of analyse being coupled with psyclone, i.e. psyclone and analyse steps use the same fortran analyser:
fab/source/fab/steps/psyclone.py
Line 248 in c0f543a
# todo: We'd like to separate that from the general fortran analyser at some point, to reduce coupling. |
With these changes, if psyclone step is called with psyclone(self.config, kernel_roots=[(self.config.build_output)],
, i.e. not limiting the kernel_root
to the kernel
folder, the ignore_dependencies would not take effects in the anaylse step for ignoring Fortran module names in USE statements and 'DEPENDS ON' modules. This is because the fortran analyser is already run in the psyclone step without having the ignore_dependencies
as input:
fab/source/fab/steps/psyclone.py
Line 250 in c0f543a
fortran_analyser = FortranAnalyser(config=config) |
mo.py
.
Maybe adding a way to trigger re-analysis of a file if the fortran analyser inputs have changed could be a solution?
Maybe my patch worked, because it also avoided the Or is the issue when the That might be acceptable. Checking my runs, I just noticed one additional change: I changed the ignore dependency in lfricinputs from But, when I use the
So that might be the real, or an additional problem: the conversion of Searching during the PSyclone analysis step only in So, a few things to evaluate:
|
… used for ignore lists when converting DEPENDS dependencies to file dependencies.
I have done that properly now: the analysis step will store the original When converting the module dependencies to file name (in mo.py), it will now now check for the original ( So for now, in PSyclone's analysis part the So fixing the original crash is a kind of two step process: first letting the original Am happy to discuss alternative solutions (e.g. add ignore list to psyclone step?). But this solution now seems to work properly with LFRic applications (lfricinputs esp), that have a dependency to shumlib and use |
I have opened #505 to address some incorrect timer issues that I noticed. |
This now uses the ignore list also while parsing kernels during the PSyclone step. I still left the additional code in mo.py in place, since it's up to the application to make sure both steps receive (the same :) ) list. This way, we get what I think is a better user experience(?), but am happy to discuss this with the reviewer. |
I have discussed this with @jasonjunweilyu , and we agreed to add ignoring to the psyclone step (which should avoid some warning messages). This is now ready for review, @allynt |
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.
Thanks @hiker for the efforts. With ignore_dependencies added to the psyclone step and .c file also accepted as input for ignore_dependencies, now the functionality of ignoring certain modules or files is more robust and should satisfy users' needs. Therefore I approve this change.
Fixed #502 (and fixed a #todo)