Replies: 10 comments 4 replies
-
From: @0Grit Please 🥺🙏 consider looking at how Cargo and crates can be either used for inspiration or used directly to manage packs. Extend it if you have to. |
Beta Was this translation helpful? Give feedback.
-
From: @iomint |
Beta Was this translation helpful? Give feedback.
-
from: @0Grit I'm strapped for time and am unable to do much more than skimming of the materials. Just wanted to make sure these things are at least mentioned in the conversation. I've seen people like @ilg-ul who have a wealth of knowledge and work put into projects like this, get ignored in the past. from :@fred-r
I assume the major point you highlight is how to use both cargo and CMSIS packs ? from: @ilg-ul Thus I designed xPacks, which are a more generic version of the highly successful, industry standard, npm packs. In terms of the first criteria, layer separation, source xPacks are completely neutral to build processes, languages, platforms, etc. In practical terms, source xPacks are collections of files with static dependencies to other xPacks, the same as npm packs are nodejs modules with dependencies of other packages. Satisfying dependencies is a separate step that is executed before the build, to bring in all dependent packages, sources or binaries. As for the second criteria, reduced complexity, CMSIS Packs favour very large packages (I saw some weighting hundreds of MB), with many, many source files, grouped in lots of components, each with its own version. On the opposite end, xPacks (and npm packs), favour many small packages, each package having its own version, which applies to all files in the package. Another major difference is that the main CMSIS Packs repository is centralised and not automated (or at least it was not when I used it, it required someone to accept the packages, and to update the index, which is, most of the time, outdated with vendor packages). xPacks, being in essence npm packs, can be stored on any npm compatible server, like npmjs.com, GitHub, etc. My 2 cents... from @fred-r from: @0Grit The only thing preventing it from widespread usage is that he is basically the only person working on the project. It would bring a tear to my eye to see some of his work be used by open-cmsis-packs somehow. Even if only by inspiration; though just using xpacks by itself and adapting the open-cmsis-packs spec to it would save everybody some time. from: @ilg-ul For whatever reason, a project may decide that it needs one component from one package version and another component from another package version. I did not check the recent specs, so I apologise if this is nonsense, but can the proposed package manager handle cases like this? I don't know what the zones are, but I did a lot of thinking and experimenting with packages, and my current understanding of the subject is that any design that requires the packages to be identified by anything more than a (scoped) name and a semver, is a design too complicated. As for what a package is, according to the npm documentation, "a package is any of the following":
I personally could not find a more generic definition. |
Beta Was this translation helpful? Give feedback.
-
from: @fred-r I think we should not mix all topics:
So I would recommend focusing this discussion thread on subject 2 and maybe @jkrech can redirect the 1st topic to the appropriate issue ? from: @iomint from: @ilg-ul |
Beta Was this translation helpful? Give feedback.
-
I don't mind having my comments copied here, but I fail to see how they relate to Rust, Cargo and crates. Two more comments:
|
Beta Was this translation helpful? Give feedback.
-
Agree on all points. See #40 to understand why I resorted to commenting in an issue. |
Beta Was this translation helpful? Give feedback.
-
Regarding the topic: https://docs.rust-embedded.org/book/interoperability/rust-with-c.html |
Beta Was this translation helpful? Give feedback.
-
if someone thinks I can be of any help, sure, ask specific questions and I'll do my best to answer, but otherwise I don't plan to interfere with your project. |
Beta Was this translation helpful? Give feedback.
-
@ilg-ul : yes, could you please clarify this sentence statement "I took a quick look, but as long as you do not have a clearly layered design, and throw everything (dependencies, build, components, configuration, etc) into the same bucket, it is hard to flag any relevant differences." What do you call the same bucket ? For the layering, I think there is a proposal:
This cprj is more a format for build (generated), the real format for describing the proejct is more the cproject as far as I understand. |
Beta Was this translation helpful? Give feedback.
-
Well, if the design is already layered, then you should be fine. |
Beta Was this translation helpful? Give feedback.
-
CMSIS-Pack and CMSIS-Build focus on assembler, C and C++ as programming language at the moment.
@0Grit is requesting in the context of #43 to consider support for target software written in
Rust: https://www.rust-lang.org/
As well as looking at the concept of crates and packages managed using Cargo.
Crate: binary or library shipped as package
Cargo: the Rust package manager: https://doc.rust-lang.org/cargo/
Going forward we can expect to see Rust being combined with C:
Information regarding interoperability between Rust and C can be found here:
https://docs.rust-embedded.org/book/interoperability/rust-with-c.html
Beta Was this translation helpful? Give feedback.
All reactions