ARMmbed / icetea

DEPRECATED mbed test framework
Apache License 2.0
6 stars 7 forks source link

Potential dependency conflicts between icetea and mbed-ls #112

Closed NeolithEra closed 3 years ago

NeolithEra commented 4 years ago

Hi, as shown in the following full dependency graph of icetea, icetea requires mbed-ls >=1.5.1,<2.0, icetea requires mbed-flasher >=0.10.1,<0.11 (mbed-flasher 0.10.1 will be installed, i.e., the newest version satisfying the version constraint), and directed dependency mbed-flasher 0.10.1 transitively introduces mbed-ls <2.0,>=1.5.1.

Obviously, there are multiple version constraints set for mbed-ls in this project. However, according to pip's “first found wins” installation strategy, mbed-ls 1.7.10 (i.e., the newest version satisfying constraint >=1.5.1,<2.0) is the actually installed version.

Although the first found package version mbed-ls 1.7.10 just satisfies the later dependency constraint (mbed-ls >=1.5.1,<2.0), such installed version is very close to the upper bound of the version constraint of mbed-ls specified by mbed-flasher 0.10.1.

Once mbed-flasher upgrades,its newest version will be installed. Therefore, it will easily cause a dependency conflict (build failure), if the upgraded mbed-flasher version introduces a higher version of mbed-ls, violating its another version constraint >=1.5.1,<2.0.

According to the release history of mbed-flasher, it habitually upgrates Mbed-ls in its recent releases. For instance, mbed-flasher mbedls_v1711 upgrated Mbed-ls’s constraint from **==1.5.1 to >=1.5.1,==1._,mbed-flasher pyocd_mbedls_v178_1 upgrated Mbed-ls’s constraint from >=1.5.1,==1. to ==1.7.7 and mbed-flasher pyocd_mbedls_v178_1 upgrated Mbed-ls’s constraint from ==1.7.7 to ==1.7.8**.

As such, it is a warm warning of a potential dependency conflict issue for icetea.

Dependency tree

icetea - 2.0.1
| +- jsonmerge(install version:1.7.0 version range:>=1.4.0,<2.0)
| | +- jsonschema(install version:2.6.0 version range:*)
| +- jsonschema(install version:2.6.0 version range:<3.0.0)
| +- mbed-flasher(install version:0.10.1 version range:>=0.10.1,<0.11)
| | +- mbed-ls(install version:1.7.10 version range:<2.0,>=1.5.1)
| | +- pyserial(install version:3.4 version range:==3.)
| | +- six(install version:1.14.0version range:==1.)
| +- mbed-ls(install version:1.7.10 version range:>=1.5.1,<2.0)
| | +- mbed-os-tools(install version:0.0.13 version range:>=0.0.9,<0.1.0)
| | +- prettytable(install version:0.7.2 version range:>=0.7.2)
| +- prettytable(install version:0.7.2 version range:<1.0)
| +- pydash(install version:4.7.6 version range:<5.0,>=4.0)
| +- pyserial(install version:3.4 version range:>2.5)
| +- requests(install version:2.23.0 version range:*)
| | +- certifi(install version:2020.4.5.1 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | +- idna(install version:2.9 version range:>=2.5,<3)
| | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| +- semver(install version:2.10.1 version range:<3.0,>=2.0)
| +- six(install version:1.14.0 version range:>=1.0,<2.0)
| +- transitions(install version:0.8.1 version range:<1.0)
| | +- six(install version:1.14.0 version range:*)
| +- yattag(install version:1.13.2 version range:>=1.0,<2.0)

Thanks for your help. Best, Neolith

NeolithEra commented 4 years ago

Suggested Solution

  1. Loosen the version range of mbed-ls to be >=1.5.1.
  2. Remove your direct dependency mbed-ls, and use the mbed-ls transitively introduced by mbed-flasher.
  3. Change your direct dependency mbed-flasher to be <=0.10.1. @jonikula Which solution do you prefer, 1 ,2or 3? Please let me know your choice. May I pull a request to solve this issue?
jonikula commented 4 years ago

I don't think this is an issue that we will have to tackle. Mbed-flasher is restricted to between 0.10.1 - 0.11.0 and mbed-ls in turn to version 1.5.1 - 2.0. I would at least hope that if mbed-ls does a 2.0 release and mbed-flasher moves to use it, it would upgrade it's version number to 0.11.0. Icetea would still continue to use the older version of mbed-flasher and mbed-ls, until we want to upgrade.

This is still an issue we should keep an eye on, though.

NeolithEra commented 4 years ago

@jonikula Thank you for your reply. We just wanted to remind you to keep an eye on the evolution of mbed-flasher, to avoid such build failures caused by dependency conflicts. : )

0xc0170 commented 3 years ago

This repository is no longer maintained and it is deprecated. As result, we are closing all issues/pull request.