WorldFamousElectronics / PulseSensorPlayground

A PulseSensor library (for Arduino) that collects our most popular projects in one place.
https://PulseSensor.com
MIT License
201 stars 97 forks source link

Revert library name change #150

Closed per1234 closed 2 years ago

per1234 commented 2 years ago

Libraries are locked to the name value specified by the library.properties metadata file in the release at the time of the Library Manager submission.

Any release with a different name is rejected by the Arduino Library Manager indexer. The previous name change caused the 1.6.0 release of the library to be rejected.

You can see this in the library's logs page here:

http://downloads.arduino.cc/libraries/logs/github.com/WorldFamousElectronics/PulseSensorPlayground/

2022/04/24 02:05:39 Checking out tag: v1.6.0
2022/04/24 02:05:39 Release PulseSensorPlayground:1.6.0 has wrong library name, should be PulseSensor Playground

Reference: https://github.com/arduino/library-registry/blob/main/FAQ.md#update-requirements

The name property in library.properties must not have changed from the value it had when the library was submitted.

It is possible to request Arduino for a library name change. However, I saw from https://github.com/WorldFamousElectronics/PulseSensorPlayground/pull/149 that the sole motivation for the name change was that releases were not picked up by Arduino Library Manager. The intended fix actually had the opposite of the intended result, so it might as well be reverted.


I didn't find the "v153" release mentioned by the PR message of https://github.com/WorldFamousElectronics/PulseSensorPlayground/pull/149 in the repo, but I do see a common problem with some of the other releases in the logs, so I suspect it was the same for 1.5.3.

I'll explain that problem, using the 1.4.10 release as the most straightforward example.

The problem is shown here in the logs:

2022/04/24 02:05:39 Checking out tag: 1.4.10
2022/04/24 02:05:39 Release PulseSensor Playground:1.4.9 already loaded, skipping

Unfortunately, the logs don't communicate about this particular thing very well, but what this tells us is that the version value in the library.properties metadata file was not updated before creating the 1.4.10 tag (note that the indexer checked out tag 1.4.10, only to find the release version was 1.4.9).

You can see it here:

https://github.com/WorldFamousElectronics/PulseSensorPlayground/blob/1.4.10/library.properties#L2

version=1.4.9

Even though Git tags are the unit of release for the Arduino Library Manager, all versioning is done according to the version field of the library.properties file. For this reason, the indexer will reject any tag that has the same value in its version field as a release already in the index.

So just make sure to always update the version field in the library.properties file before making a release.

biomurph commented 2 years ago

@per1234 Thanks for posting this issue. There was a problem earlier this year that came to light around the repository name. The problem was that my library updates were not getting picked up by Arduino Libraries Manager because the library name in library.properties did not match the name listed in the Arduino library register repo.

So, I took out the space ' ' between PulseSensor and Playground. I think that having that space might be the problem.?

When I go to the Libraries Manager tool on Arduino, I do see the library there, and it is up to date with the latest version available. I'm not sure I understand what replacing the space in the libraries.properties would do, except it might get broken again?

I want to be cautious in accepting your pull request until I understand the consequences.

per1234 commented 2 years ago

my library updates were not getting picked up by Arduino Libraries Manager because the library name in library.properties did not match the name listed in the Arduino library register repo.

The registered name is "PulseSensor Playground":

https://github.com/arduino/library-registry/blob/0c2b17fb97f7b473c9c997e46eccb10a6630011e/registry.txt#L1398 It is defined by the third of the pipe-separated fields:

https://github.com/WorldFamousElectronics/PulseSensorPlayground.git|Contributed|PulseSensor Playground

You can see this was the name the library was locked to during the original registration four years ago: https://github.com/arduino/library-registry/commit/1135c3b07c078db5449a33c917b25ca111ed9888

I do see the library there, and it is up to date with the latest version available.

It is actually not up to date. If you install the 1.6.0 release from Library Manager, you'll see the library.properties is missing this change contained in the v1.6.0 tag: https://github.com/WorldFamousElectronics/PulseSensorPlayground/commit/0826db6955ccb126df09b6ddc818a0b4a8552141

The reason is that the 1.6.0 release was made from the v1.5.2 tag (remember that the tag name is completely disregarded by the indexer):

https://github.com/WorldFamousElectronics/PulseSensorPlayground/blob/v1.5.2/library.properties#L2

version=1.6.0
biomurph commented 2 years ago

Oh, wow. OK, so I was looking at the main branch of the libraries register, and it does not have that additional |Contributed| portion.

Alright, I have made the change to the Playground, and created the release on github with an updated version number. It might take a minute to propagate to arduino.

per1234 commented 2 years ago

I was looking at the main branch of the libraries register

That list is only the repository URLs. The rest is determined automatically when the submission is accepted. There is no requirement for the name value to match the repository name and the repository name has no special significance in the Library Manager system.

I have made the change to the Playground

Excellent! I'll close this as superseded by https://github.com/WorldFamousElectronics/PulseSensorPlayground/commit/10b028bfed9231707b8fb2bce2f5ed062eb1ff78

It might take a minute to propagate to arduino.

The indexer job runs hourly. However, there can be some additional delay as the release propagates through the CDN and local cache to become available for installation via Library Manager. So we give a conservative estimate of one day's time for the release to become available to the users.