-
-
Notifications
You must be signed in to change notification settings - Fork 7k
New library handling scheme - invitation to criticisms #4347
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
Comments
Have you published your builder's code? |
I personally would appreciate very much to be able to choose the installation folder for additional libs, and in case there are duplicate ones, erase the duplicates (or all) by provided options. Currently the custom lib installation folder used by default is a big annoying mess as I need this for different purposes. Also there should be an uninstall option in the IDE to uninstall either lib. |
Having a single-file library format might be useful. There is currently the .zip format, which is used for distribution, but which is unpacked when installed. I'm not entirely sure if there are real advantages of keeping it packed, which is essentially what you're proposing, right? Can you say why you think adding this would be good? One downside of keeping things packed is that the files need to be unpacked for compilation (gcc doesn't like zip files), but the unpacking can probably be cached in the build dir. Another downside is that modifying a library becomes more tricky, but that can also be an upside - it becomes easier to verify that a library was unmodified (though to fully do that, this needs some out-of-band checksum mechanism like used for third-party cores). That's just some thoughts I had while thinking about this, they're by no means comprehensive. @VogonJ, your suggestions seem unrelated to the proposal in this issue, so please take the time to find a more appropriate issue to add your comments to (or, if there is none, create a new one). |
I disagree. |
@matthijskooijman @VogonJ for having started this one, and at the risk of breaking the rules, i am indeed inviting anyone to vent about libraries at large and criticize the scheme I very vaguely described. this is in the hope that the final solution will address as many use cases as possible. Thank you both for your help. @matthijskooijman his comment is valuable to me as it basically says that version numbers are an integral part of a the identity of a library. I dont view unpacking as a major tradeoff, because it is already done (in lib mgr) which means i could even consider blindly cut/paste the code... but you are right that i would have to consider some caching (which is also already done for the sketch source code, so again some possible lazzzzy cut/clean/paste). Right again that this is another verification opportunity with oob SHA1s However i look at it, I find myself going back to how homebrew deals with this ( basically what i described in #4065 ). |
Thank you for the feedback |
There are a number of known issues/annoyances with how libraries are handled in the IDE. I am not going to list them all, however here is a shortlist of a few other issues describing some:
I am currently working on #4206: I treat a single XXXXX.INZ just like the equivalent XXXXX folder is currently used. During compilation, my builder (I am sure the same behavior can be added to arduino-builder) takes care of expanding the content into the target build folder per the normal build process. When working with a INZ file, the IDE also normally takes care of the 'save-as' step if the user tries to modify any of the source files.
The benefits of this approach are in my mind that
As I was making good progress, it suddenly downed on me that this approach could be extended to libraries: the idea is to keep libraries inside a single container for as long as possible (i am voluntarily vague to avoid steering feedback in any particular direction). Does anyone have any thoughts about possible limitations of this scheme?! (writing the code is not a limitation, it is just a step).
My experience as a USER is still limited, so I would really appreciate any criticisms about the usability, workflow or use cases...
@mbanzi this might interest you as a simple way to reinforce the ties inside the Arduino LLC product line compared to external tools
The text was updated successfully, but these errors were encountered: