platformio/platformio-core

Platform restrictions on dependencies of submodule in project not honored

Open

#5.073 aberto em 25 de jan. de 2025

Ver no GitHub
 (1 comment) (1 reaction) (0 assignees)Python (791 forks)batch import
LDFhelp wanted

Métricas do repositório

Stars
 (7.329 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

This issue is created on advise from @maxgerhardt after posting on the forum at https://community.platformio.org/t/platform-restrictions-on-dependencies-of-submodule-in-project-not-honored/45493


Using: PlatformIO 6.1.16 VSCode: 1.96.4 PlatformIO IDE extension: 3.3.4


Our project makes use of submodules, including our own specific libraries into a project. A submodule has its own dependencies, listed in the library.json file. Of course the dependencies listed in the submodule have their own dependencies.

Example:

 ProjectX
   /lib/Sense_Modbus (submodule)
      miq19/eModbus
          AsyncTcp   restricted to platforms: ["espressif32"]
          Ethernet     restricted to platform: ["espressif32"]
          ESPAsyncTCP restricted to platforms: ["espressif8266"]

When compiling and downloading dependencies using espressif32 platform, all three dependencies of eModbus are installed in .pio/libdeps and this will cause compile errors in the ESPAsyncTCP library.

When I open the Sense_Modbus library as a standalone project and build it using espressif32, the ESPAsyncTCP dependency is NOT downloaded.

There are no references to any source files from the ESPAsyncTCP library in the code, so it looks like the dependency finder does not use the platform setting when adding dependencies of dependencies of submodules to the list.

Tried to add library_compat_mode = strict or lib_compat to the library.json of Sense-Modbus but that does not change the outcome

library.json of Sense_Modbus (relevant part)

  "frameworks": "Arduino",
  "platforms": [
    "espressif32"
  ],
  "dependencies": [
    {
      "name": "EspSoftwareSerial",
      "version": "plerup/EspSoftwareSerial @ ^6.17.0"
    },
    {
      "name": "eModbus",
      "version": "miq19/eModbus @ 1.7.2"
    }
  ]

library.json of eModbus (relevant portion)

  "repository": {
    "type": "git",
    "url": "https://github.com/eModbus/eModbus",
    "branch": "master"
  },
  "dependencies": [
    {
      "owner": "me-no-dev",
      "name": "AsyncTCP",
      "version": "*",
      "platforms": ["espressif32"]
    },
    {
      "owner": "me-no-dev",
      "name": "ESPAsyncTCP",
      "version": "*",
      "platforms": ["espressif8266"]
    },
    {
      "name": "Ethernet",
      "version": "https://github.com/arduino-libraries/Ethernet.git",
      "platforms": ["espressif32"]
    }
  ],
  "frameworks": "arduino",
  "platforms": [
    "espressif32",
    "espressif8266"
  ]


Guia do colaborador