PlatformIO Community

Need guidance moving IoAbstraction and LiquidCrystalIO to use the library.json file

I’ve recently completed a lot of work that has made IoAbstraction and LiquidCrystalIO libraries compatible with both mbed and Arduino. Previously I had relied on the library.properties file as the means of library definition. However, now, at least for platformIO users, there is a need to use the JSON format, to describe the extra available platforms and frameworks.

The IoAbstraction library is used by a lot of people, on both Arduino IDE and platformIO. I cannot remove the library.properties, but I think platformIO is using that instead of the JSON file.

My question is if I re-register the libraries will that work, and are the two JSON files in the projects below correctly formed? I ask this because there are quite a few users, and I don’t want to break them. There’s a lot of people I know of with large projects built on these libraries, and I need to apply as much care as possible before proceeding.

Libraries in question are:

and

Any help appreciated.
Thanks,
Dave

Also, if this is a big job, can we include tcMenu in with the others at the same time. That also has a library.json file that is not being picked up. My main concern is that if I re-register all of these, then they’ll end up with different IDs or something similar, and break peoples projects and dependencies.

If you don’t want a fork, maybe play the changes back into the original repositories? Or make them available as separately named libraries?

Hi there, thanks for the reply. The changes are in the original repository, and they are picked up and published by platformIO (in fact the mbed support is in 1.5.0 of IoAbstraction, and the library.json is there too but not being used by library manager).

I can force install the library into an mbed project and it works as expected, it’s just not picking up the json file that is in the repo, I think it’s in the right place in all three repos.

I would like platformIO to use the library.json file as the project descriptor instead of the library.properties. I cannot remove the library.properties file because it will stop working for Arduino IDE. If at all possible, I’d rather not have to manage separate repos for that. Is there any way to make library manager use the library.json file over the library.properties?

See Library.json or library.properties, which one takes precedence, there seems to be a static preference already…

Mmmh now I’m confused, so it looks like it should be picking up the library.json that’s in the top level directory of all three modules, since I’m pretty new to platformIO, it’s more than possible that I’ve got a mistake in the JSON file. Could this prevent it from being used?

Here is the IoAbstraction library.json file: https://github.com/davetcc/IoAbstraction/blob/master/library.json

How could I tell if the library.json file is valid?

Is there a URL that contains any kind of diagnostic info about the library scanning?

Huh I think I know what you’re getting at now. https://github.com/davetcc/IoAbstraction/blob/master/library.json#L20 declares both Arduino and mbed but at the library page only Arduino shows up.

This is interesting because there are other libraries which declare it in the same style like https://os.mbed.com/users/cassyarduino/code/UIPEthernet/file/7ba5d53df0f2/library.json/ and their library page shows Arduino and Mbed correctly. The fact that MBED is capitilized shouldn’t matter I gues…

@ivankravets any idea why “Mbed” won’t show up as compatible framework in the lib page although the library.json delcares it? Are repositories containing a library.properties auto-declared to be Arduino only?

2 Likes

Thanks for looking into this.

What’s also interesting is that looking at the manifest in the library manager shows the contents of library.properties:

We’ve just switched these libraries to library.json manifest.

1 Like