Closed hiker closed 1 month ago
The analysis situation can actually be more complicated:
all_source
(since the artefact storage does not contain the details of the copied .f90 files), i.e. the potentially wrong file - it will actually detect the cached result (since the hash is the same) and use it, i.e. the analysis is based on build_output, not all_source, even though the debug output states it is . BUT, if an additional step would modify the file in build_output after running psyclone, this would not be detected:
This at least indicates that a new step that potentially modified files must be inserted before psyclone is run(??)
The artefact storage has inconsistent information, for example, when pre-processing Fortran files, the F90 files will be processed and added to the artefact as
preprocessed_fortran
. Then the same code will copy all .f90 files fromall_source
into the build directory, but they are NOT added to the artefact.The preprocess_x90 will pre-process all X90 files, but does NOT copy the .x90 files into the build tree.
This then results in e.g. analyses doing:
So it needs to access
all_source
to find files that were not pre-processed in the first place - and it accesses these files from the all_source artifact (i.e. the source directory).Compilation then is doing:
So it takes the files from the build_output, which could be different from the ones contained in source.
Additionally, it is hard to introduce a new phase if the various steps are so dependent on where files are without using the artefact store.
As a suggested fix I will try to introduce two new artefact store categories: "all_fortran", "all_c", "all_x90", with the idea that these language dependent steps will just have one (or two) fixed artefacts to look at.
This will also make it much easier to introduce new steps