Skip to content

lib list/core list might list the library/platform versions in a non-semver compliant way #1727

Closed
@kittaakos

Description

@kittaakos

Bug Report

Library authors can use a relaxed-semver. For example, 1.0 is OK. If such a library is installed, lib list will return with the 1.0 version, which is not a valid semver. Hence the library install will fail with this version.

Current behavior

Steps to reproduce:

% rm -rf ~/Documents/Arduino && rm -rf ~/Library/Arduino15
% ./arduino-cli version --format json
{
  "Application": "arduino-cli",
  "VersionString": "0.22.0",
  "Commit": "65f662a7",
  "Status": "",
  "Date": "2022-05-06T11:09:35Z"
}
% ./arduino-cli lib list --format json                    
[]
% ./arduino-cli lib install "ILI9341_t3"@1.0.0 --format json
% ./arduino-cli lib list --format json                      
[
  {
    "library": {
      "name": "ILI9341_t3",
      "author": "Limor Fried, Adafruit, Paul Stoffregen",
      "maintainer": "Paul Stoffregen",
      "sentence": "Optimized ILI9341 (320x240 Color TFT) Display",
      "website": "https://github.com/PaulStoffregen/ILI9341_t3",
      "category": "Display",
      "architectures": [
        "*"
      ],
      "install_dir": "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3",
      "source_dir": "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3",
      "real_name": "ILI9341_t3",
      "version": "1.0",
      "license": "Unspecified",
      "location": 1,
      "examples": [
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/breakouttouchpaint",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/graphicstest",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/onoffbutton",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/onoffbutton_breakout",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/spitftbitmap",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/touchpaint"
      ],
      "provides_includes": [
        "ILI9341_t3.h"
      ]
    }
  }
]
% rm -rf ~/Documents/Arduino && rm -rf ~/Library/Arduino15 
% ./arduino-cli lib list --format json                    
[]
% ./arduino-cli lib install "ILI9341_t3"@1.0 --format json 
Error installing ILI9341_t3: Library '[email protected]' not found
% 

Expected behavior

In this particular case, the lib list should return with such a JSON:

[
  {
    "library": {
      "name": "ILI9341_t3",
      "author": "Limor Fried, Adafruit, Paul Stoffregen",
      "maintainer": "Paul Stoffregen",
      "sentence": "Optimized ILI9341 (320x240 Color TFT) Display",
      "website": "https://github.com/PaulStoffregen/ILI9341_t3",
      "category": "Display",
      "architectures": [
        "*"
      ],
      "install_dir": "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3",
      "source_dir": "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3",
      "real_name": "ILI9341_t3",
      "version": "1.0.0", // <---- return with `1.0.0` instead of `1.0`
      "license": "Unspecified",
      "location": 1,
      "examples": [
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/breakouttouchpaint",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/graphicstest",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/onoffbutton",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/onoffbutton_breakout",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/spitftbitmap",
        "/Users/a.kitta/Documents/Arduino/libraries/ILI9341_t3/examples/touchpaint"
      ],
      "provides_includes": [
        "ILI9341_t3.h"
      ]
    }
  }
]

The lib list should result in a valid semver version.

Pipe-dream:
lib install should handle relaxed-semvers gracefully, and lib install "ILI9341_t3"@1.0 should succeed.

Environment

  • CLI version (output of arduino-cli version): arduino-cli Version: 0.22.0 Commit: 65f662a7 Date: 2022-05-06T11:09:35Z
  • OS and platform: macOS 12.3.1 (21E258)

Additional context

Metadata

Metadata

Assignees

Labels

topic: codeRelated to content of the project itselftype: imperfectionPerceived defect in any part of project

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions