update of libraries have elder version than installed ones

Hi,
recently I received a message that new updates for libraries are available.
Several libraries really needed updates.
But there are two libraries offered with elder versions than the installed ones.

  • Ethernet, version 1.1.1 installed, highest selectable version for update is 1.1.0
  • SPIFlash, version 2.7.0 installed, highest selectable version for update is 2.6.0

The library manager seems to be confused.
After installing version 1.1.0 for Ethernet I get version 1.1.1 as the highest version to be seleceted. After installing version 1.1.1 I get version 1.1.0 as the highest version to be selected, and so on.

What can I do to get out of this never ending loop?

A further library, SoftPWM, is not installed and I don't need it.
How can I avoid everytime to get the update message for it?

supArdu

It sounds like:

Which board do you have selected in the Tools > Board menu when this happens?

The library manager reports different versions depending on the board selected.
For example Ethernet:

  • for board Mega 2560, Ethernet version 1.1.2 is installed and 1.1.1 is offered for update
  • for Teensy 3.2, Ethernet version 1.1.1 is installed and 1.1.0 is offered for update

Therefore I mean that this effect is different from your link to issue 4189.

Reading the posts of your link to issue 4189 questions rise up.
In the link compatibility problems with built in libraries are reported, depending on the controller used.

Question1: how can I easily find out what version of library is compatible to my controller (Arduino Mega, Arduino Due, Teensy, etc.)?

Question2: If it is necessary to use different versions of libraries, it is recommended to change the name in the file library.properties. I guess that the name in library.properties shall match to the folder name where the library files are stored. Is this true?

Remark:
With a Teensy 3.2 I have problems building a project using a 3rd party library. I get a lot of curious error messages like
"Error: junk at end of line, first unrecognized character is (' " or " Error: bad instruction else if(pin==27){' "
where I cannot see an error.
The end of the huge error list is
"Please report this bug.

Error compiling for board Teensy 3.2 / 3.1. "

Perhaps this is such a compatibility problem. I did not post here concerning this problem because I want to do some more tests before. I guess I will post soon.

SupArdu:
The library manager reports different versions depending on the board selected.
For example Ethernet:

  • for board Mega 2560, Ethernet version 1.1.2 is installed and 1.1.1 is offered for update
  • for Teensy 3.2, Ethernet version 1.1.1 is installed and 1.1.0 is offered for update

Do those libraries appear under Type: Updatable? If not, that's the normal behavior. If so, then that's exactly the behavior of #4189.

SupArdu:
Question1: how can I easily find out what version of library is compatible to my controller (Arduino Mega, Arduino Due, Teensy, etc.)?

There is an architectures value in the library.properties file. Some libraries are written for any architecture and they will set the architectures value to *. Others are architecture-specific. For Arduino Mega the value will be avr, for Due: sam. For Teensy, the last I checked he was using "teensy" as the architecture. There is not a teensy architecture and the various Teensy boards have different architectures, avr and I believe samd but I suppose the libraries with "teensy" architecture will either be written to work for all Teensy boards or will have helpful error messages that tell you that they are not compatible with the specific Teensy board you have selected.

The Arduino IDE uses the architectures value of the library and the architecture of the selected board as one of the criteria for determining include priorities when multiple files match the include. So generally it just works and you don't have to worry about it. If you have verbose compilation output turned on you will see a message in the console that lists all the matching filenames and which was used when there are multiple files that match the include.

There is only one situation where this doesn't work: There are some 3rd party hardware packages that add support for AVR chips other than the common ATmega328P, ATmega32U4, ATmega2560. Some of the standard Arduino libraries that claim "avr" architectures are only written for the common chips and thus those 3rd party hardware packages must bundle their own modified versions of these libraries that have code added to support the additional chips. Here you have a situation where both libraries claim avr architecture so the Arduino IDE can't use architecture matching to determine include priority so the other criteria are used and these may not always result in the correct library being chosen. Luckily this doesn't happen very often so you probably don't need to worry about it. When it does, it should be clear what the problem is from the information displayed in the verbose compilation output.

SupArdu:
Question2: If it is necessary to use different versions of libraries, it is recommended to change the name in the file library.properties. I guess that the name in library.properties shall match to the folder name where the library files are stored. Is this true?

You can name it anything you like. The workaround for #4189 is to give it a unique name value but that could be anything.

When multiple filenames match the include, one of the criteria used to determine include priority is whether the filename matches the library folder name (the matching file gets priority). The way that GitHub adds the branch name to the repository download can sometimes cause problems since it results in the library folder being named something like FooBar-master instead of the intended FooBar. However, that's all unrelated to #4189.

SupArdu:
With a Teensy 3.2 I have problems building a project using a 3rd party library. I get a lot of curious error messages like
"Error: junk at end of line, first unrecognized character is (' " or " Error: bad instruction else if(pin==27){' "
where I cannot see an error.
The end of the huge error list is
"Please report this bug.

Error compiling for board Teensy 3.2 / 3.1. "

I don't have any experience with Teensyduino. Sometimes you will pick up hidden characters or characters that look right but are actually different when you copy and paste from websites. That might be the cause. I don't think it's related to the perpetually updatable libraries issue.