-
Notifications
You must be signed in to change notification settings - Fork 59
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
Proposal: CPRJ Extensions #171
Comments
I have been thinking about the original use case for the The original solution was well designed for this use case and it has also been particularly suitable as an interface between services and tools. There is a single file that defines the build and that is the only data (a link tor path to the file) that needs to be provided. This means the build manager could be encapsulated in the service, with a simple interface that provides an excellent separation of concerns. My understanding of the proposal:
Assuming I understand the proposal correctly, my concern is that this proposal threatens the efficacy of the build manager for both these use cases. There will no longer be a single file that will provide a reproducible build.
The interface to the build manager is more complex:
A potential alternative is to extend the However, another concern is that we are creating a dependency system that already exists in systems such as CMake, which is already used by the Build Manager. Perhaps this is the time to revisit the decision to have a proprietary format as a lock file and instead use CMake. |
@madchutney thanks for the comments.
The multi-project-contexts use case was never supported by
A normal single project will continue to have a single
With references in both directions
If only the
Error messages.
This was considered when elaborating this proposal, in my opinion separated files are conceptually cleaner.
We don't create a dependency system, we inform CMake about the existing dependencies using standard CMake functions. CMake is fully responsible for the dependency handling.
CMake does not know about CMSIS versioning, alone it can not create environment-independent lock files. |
Conceptually we have a solution where the user selects an active build-type / target-type combination. csolution's convert command will then generate the mcprj + the cprj file for all resulting contexts at once. In other words we could also generate the content of multiple files into a single file, as they cannot be updated separately. |
Per Open-CMSIS weekly call Open-CMSIS-Pack+Technical+Meeting+2022-03-08 sounds we were getting some agreement *cprj is going to act as a lock file if build process. Sounds fine to me closing possibly [projmgr] Using existing .cprj as lockfile. Would say no strong opinion / concerns about
Would just highlight two key concerns to me embracing foreseen way of working then:
|
The
You are right, this has to be solved, probably by making the cprj aware of it and extending the build manager handling. |
Not sure if it is proper to raise this question/issue here, that is, is there any extension point in CPRJ to add vendor specific debug related information? |
@tcsunhao is Please be aware, just in cas, a vendor specific capability has been added to *.yml stuff: [projmgr] Open door to vendor specific data addon |
@VGRSTM , thanks. *.yml can support this, it should be ok. |
@jkrech , continue with last meeting's discussion about extension point. <debug_configuration id="com.crt.advproject.config.exe.release" name="Release Configuration" probe="LinkServer">
<scripts>
<script type="init" silent="false" emulators="${gdb.stub} -mi -info-emu">
<script>
set remotetimeout 60000
##target_extended_remote##
set mem inaccessible-by-default ${mem.access}
mon ondisconnect ${ondisconnect}
set arm force-mode thumb
${load}</script>
</script>
<script type="run" silent="false" emulators="${gdb.stub} -mi -info-emu">
<script>${run}</script>
</script>
</scripts>
<params>
<params id="vector.catch.release.mcuxpresso" name="vector.catch" value="false"/>
<params id="internal.cache.release.mcuxpresso" name="internal.cache" value="Disable"/>
</params>
</debug_configuration> I see 2 place for such example specific data:
<project>
<environment name="uv" load="mdk/freertos_event.uvprojx"/>
<environment name="iar" load="iar/freertos_event.ewp"/>
<environment name="mcux" load="special_debug_configuration.xml"/>
<environment name="csolution" load="csolution.yml" />
</project>
I know csolution/cprj focus on build, but it should provide place for debug configuration data. |
As we will deprecate CPRJ in a future version of CMSIS-Toolbox, I suggest to close that. Also it is somewhat a duplicate with #662 |
The CPRJ format shall be extended to cope with several add-ons introduced within the csolution concept:
Proposal: Multi CPRJ collection = MCPRJ
CPRJ schemas extension proposal: #170
After hearing @madchutney concerns I believe a good complementary information to add to this proposal could be the explicit back reference from a
cprj
to its parentmcprj
. In such case the Build Manager can unequivocally recognize whether the cprj is part of a multi-project solution. For example:The text was updated successfully, but these errors were encountered: