-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
| F´ Version | 4.0.0 |
| Affected Component | Build system |
Problem Description
Modifying a component's FPP does not trigger a rebuild of the dictionary artifact. Dictionary elements added or modified in component FPP (e.g. events, event parameters, channels, enums) do not feed into the JSON dictionary unless the build cache is purged or deployment FPP is touched with a newer modified date.
In development cycles with quick turnaround to test, or in general if purging is not performed before hand-off, dictionaries would be inconsistent with FSW.
Note that component autocode and (if UTs are built) component UT autocode get updated with the newest dictionary-related elements without purging, while the dictionary itself becomes out of sync.
Context / Environment
(fprime-venv) ~/fprime/test-build-dictionary$ fprime-util version-check
Operating System: Linux
CPU Architecture: x86_64
Platform: Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.35
Python version: 3.10.12
CMake version: 3.26.0
Pip version: 25.3
Pip packages:
fprime-tools==4.0.1
fprime-gds==4.0.1
fprime-fpp==3.0.0
Project submodules:
https://github.com/nasa/fprime.git @ v4.0.0
How to Reproduce
- Bootstrap a project
- Generate default build cache
- Create a component
- Add an event to the component
- Add a deployment
- Add an instance of the component to the topology (instances.fpp and topology.fpp)
- Run
fprime-util buildat the root of the project. Observe command output:
[16/24] Running utility command for TestDeployment_dictionary -- Install configuration: "" -- Installing: /home/promano/fprime/test-build-dictionary/build-artifacts/Linux/TestDeployment/dict/TestDeploymentTopologyDictionary.json - Observe creation of the dictionary under ./build-artifacts
- Observe existence of the event in the dictionary
- Add an argument to the event in the component
- (Doesn't matter whether this is done:) Build the component
- Run
fprime-util buildat the root of the project. Observe command output:
[1/5] Running utility command for TestDeployment_dictionary
-- Install configuration: ""
-- Up-to-date: /home/promano/fprime/test-build-dictionary/build-artifacts/Linux/TestDeployment/dict/TestDeploymentTopologyDictionary.json
- Observe the dictionary did not change timestamp.
- Observe the event in the dictionary does not have the new argument.
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$ ll build-artifacts/Linux/TestDeployment/dict/TestDeploymentTopologyDictionary.json
-rw-r--r-- 1 promano promano 199519 Aug 20 13:02 build-artifacts/Linux/TestDeployment/dict/TestDeploymentTopologyDictionary.json
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$ ll Components/ComponentWithEvent/ComponentWithEvent.fpp
-rw-r--r-- 1 promano promano 2124 Aug 20 12:49 Components/ComponentWithEvent/ComponentWithEvent.fpp
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$ ll Components/ComponentWithEvent/ComponentWithEvent.fpp
-rw-r--r-- 1 promano promano 2231 Aug 20 13:07 Components/ComponentWithEvent/ComponentWithEvent.fpp
(fprime-venv) ~/fprime/test-build-dictionary$
(fprime-venv) ~/fprime/test-build-dictionary$ ll build-artifacts/Linux/TestDeployment/dict/TestDeploymentTopologyDictionary.json
-rw-r--r-- 1 promano promano 199519 Aug 20 13:02 build-artifacts/Linux/TestDeployment/dict/TestDeploymentTopologyDictionary.json
(fprime-venv) ~/fprime/test-build-dictionary$
Expected Behavior
Updates to component FPP, which contains elements that feed into the dictionary, should trigger an update of the dictionary artifact when running fprime-util build at the deployment and project level.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status