mip / package.json: Allow 'deps' to come from another repository
Problem
In repo https://github.com/hmaerki/experiment_micropython_mip, I create a mip-package which may be install as follows:
import mip
mip.install("dryer2023", version="main", index="https://hmaerki.github.io/experiment_micropython_mip")
This is the package.json file:
{
"version": "0.1",
"hashes": [
["dryer2023/statemachine.mpy", "a47f24f2064b"],
["dryer2023/__init__.mpy", "c4104085da6d"]
],
"deps": [
["umqtt.simple", "latest"] <== ERROR A
["https://micropython.org/pi/v2/package/6/umqtt.simple/latest.json", "dummy"] <== ERROR B
]
}
The installation of the hashes works nice.
In the deps section, I would like to install umqtt.simple from another index (the micropython default) but I could not make it working.
- ERROR A: Will search in my index (https://hmaerki.github.io/experiment_micropython_mip) which is wrong.
- ERROR B: This will correctly download 'latest.json' but then again will try to get the mpy-files from my index which is wrong.
Proposed: Solution
["umqtt.simple", "latest"] should always search in https://micropython.org/pi/v2
["github:org/repo/path/latest.json", "latest"] should search in github:org/repo/path/latest.json
Are there other suggestions/thoughs?
mpremote: Support relative URLs in mip package.json file.
Allow URLs in mip package.json files to be specified relative to the base URL of the package.json file.
This simplifies use of mip packages from forked or copied repos. When taken together with PR #12476, it also simplifies installing from repos cloned to the local filesystem. Is also useful during testing and development.
Example package.json (adapted from https://github.com/glenn20/micropython-esp32-ota/blob/main/mip/ota/package.json):
{
"urls": [
["ota/rollback.py", "rollback.py"],
["ota/status.py", "status.py"],
["ota/update.py", "update.py"],
["ota/blockdev_writer.py", "blockdev_writer.py"]
],
"deps": [
],
"version": "0.2"
}
Take a look at my work in #676