mpremote romfs deploy: Directory handling is arguably inconsistent with cp -r
Port, board and/or hardware
Board independent. Tested on RP2040
MicroPython version
MicroPython v1.25.0-dirty on 2025-04-19; Raspberry Pi Pico with RP2040
Built with romfs
Reproduction
Issue
$ mpremote deploy foo
where foo is a directory on the PC containing subdirectories
Expected behaviour
The command
$ mpremote cp -r foo :
copies the directory foo with contents and subdirectories to the host. This is consistent with
$ cp -r foo bar
Observed behaviour
By contrast
$ mpremote deploy foo
copies the contents of foo as per
$ cp -r foo/* bar
A typical project might consist of a Python package foo where the executable foo is contained in a directory holding documentation and other resources. The requirement is to copy foo and its contents. Currently this requires a workround involving a temporary directory and a symlink.
Additional Information
Options are either to change this behaviour or provide means of deploying either the directory + contents or contents alone.
Code of Conduct
Yes, I agree
mpremote gives false error if a destination directory doesn't exist for recursive copy
Port, board and/or hardware
rp2040
MicroPython version
MicroPython v1.24.0 on 2024-10-25; Raspberry Pi Pico with RP2040
Reproduction
create a directory 'test' on the target and 'local' on host
then run:
mpremote cp -r local :testt
note typo in destination
Expected behaviour
the error message should be 'destination doesn't exist'
Observed behaviour
cp local :testt
mpremote: cp: -r not specified; omitting directory
Additional Information
No, I've provided everything above.
Code of Conduct
Yes, I agree