fprime icon indicating copy to clipboard operation
fprime copied to clipboard

fprime-util generate hides FPP error reports

Open bocchino opened this issue 2 years ago • 0 comments

If an FPP error occurs during fprime-util generate, sometimes the F Prime tools don't fully report the error information provided by the FPP tools. For example, here is a manufactured error (introducing a duplicate port Fw.Time in Fw/Cmd/Cmd.fpp) that causes a failure during the generation step:

[I] bocchino@MT-306179 ~/J/T/F/fprime (devel)> echo 'module Fw { port Time }' >> Fw/Cmd/Cmd.fpp

Here is what happens when I run fprime-util generate after injecting this error:

[I] bocchino@MT-306179 ~/J/T/F/fprime (devel)> fprime-util generate
...
-- Performing CMake source prescan
-- Performing CMake source prescan - DONE
-- Generating FPP location index
-- Generating FPP location index - DONE
-- Generating FPP dependency caches
[ERROR] Failed to run '/Users/bocchino/JPL/Tools/FPrime/fprime/fprime-venv/bin/fpp-depend /Users/bocchino/JPL/Tools/FPrime/fprime/build-fprime-automatic-native/locs.fpp /Users/bocchino/JPL/Tools/FPrime/fprime/Fw/Buffer/Buffer.fpp -d direct.txt -m missing.txt -f framework.txt -g generated.txt -i include.txt'
CMake Error at cmake/target/fpp_locs.cmake:64 (message):
-- Configuring incomplete, errors occurred!
  Failed to run fpp-depend in parallel mode
See also "/Users/bocchino/JPL/Tools/FPrime/fprime/build-fprime-automatic-native/CMakeFiles/CMakeOutput.log".
Call Stack (most recent call first):
See also "/Users/bocchino/JPL/Tools/FPrime/fprime/build-fprime-automatic-native/CMakeFiles/CMakeError.log".
  cmake/target/fpp_locs.cmake:82 (fpp_depend_in_parallel)
  cmake/target/fpp_locs.cmake:96 (generate_dependencies)
  cmake/target/target.cmake:67 (fpp_locs_add_global_target)
  cmake/target/target.cmake:67 (cmake_language)
  cmake/API.cmake:428 (setup_global_target)
  cmake/FPrime.cmake:73 (register_fprime_target)
  CMakeLists.txt:12 (include)


[ERROR] CMake erred with return code 1. Partial build cache remains. Run purge to clean-up.

It does tell me what FPP command failed. However, I have to rerun that command to see the actual error:

[I] bocchino@MT-306179 ~/J/T/F/fprime (devel) [1]> /Users/bocchino/JPL/Tools/FPrime/fprime/fprime-venv/bin/fpp-depend /Users/bocchino/JPL/Tools/FPrime/fprime/build-fprime-automatic-native/locs.fpp /Users/bocchino/JPL/Tools/FPrime/fprime/Fw/Buffer/Buffer.fpp -d direct.txt -m missing.txt -f framework.txt -g generated.txt -i include.txt
fpp-depend
/Users/bocchino/JPL/Tools/FPrime/fprime/build-fprime-automatic-native/locs.fpp: 70.24
locate port Fw.Time at "../Fw/Time/Time.fpp"
                       ^
error: inconsistent location path /Users/bocchino/JPL/Tools/FPrime/fprime/Fw/Time/Time.fpp
/Users/bocchino/JPL/Tools/FPrime/fprime/build-fprime-automatic-native/locs.fpp: 69.24
locate port Fw.Time at "../Fw/Cmd/Cmd.fpp"
                       ^
previous path is /Users/bocchino/JPL/Tools/FPrime/fprime/Fw/Cmd/Cmd.fpp

It would be better if this error were reported in the initial error report.

bocchino avatar Aug 20 '22 18:08 bocchino