mattytrentini / mpbuild

MicroPython build tool
MIT License
7 stars 4 forks source link

mpbuild errors when run from WSL2 #37

Open Josverl opened 1 day ago

Josverl commented 1 day ago

TLDR:

jos@josverl-sb5:~/micropython$ mpbuild build RPI_PICO
╭─ Build rp2/RPI_PICO ─────────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                                                      │
│ docker run -it --rm -v /sys/bus:/sys/bus -v /dev:/dev --net=host --privileged -v None:None -w None --user 1000:1000  │
│ -v /home/jos:/home/jos -e HOME=/home/jos micropython/build-micropython-arm bash -c "git config --global --add        │
│ safe.directory '*' 2> /dev/null;make -C mpy-cross && make -C ports/rp2 submodules BOARD=RPI_PICO && make -j 6 -C     │
│ ports/rp2 BOARD=RPI_PICO "                                                                                           │
│                                                                                                                      │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
docker: Error response from daemon: the working directory 'None' is invalid, it needs to be an absolute path.
See 'docker run --help'.
....
TypeError: sequence item 0: expected str instance, NoneType found
jos@josverl-sb5:~/micropython$

The suspects are -v None:None -w None

hosts specs:

Win11 + WSL2 Docker Desktop 4.34.2 (167172) WSL2:

Also , the backtrace is soo long , it make understanding the problem harder , not simpler IMO. ( in VScode terminal it scrolls the initial error out of the default terminal buffer)

It is also too long to put into this issue There was an error creating your Issue: body is too long, body is too long (maximum is 65536 characters).

the partial BT

jos@josverl-sb5:~/micropython$ mpbuild build RPI_PICO ╭─ Build rp2/RPI_PICO ─────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ docker run -it --rm -v /sys/bus:/sys/bus -v /dev:/dev --net=host --privileged -v None:None -w None --user 1000:1000 │ │ -v /home/jos:/home/jos -e HOME=/home/jos micropython/build-micropython-arm bash -c "git config --global --add │ │ safe.directory '*' 2> /dev/null;make -C mpy-cross && make -C ports/rp2 submodules BOARD=RPI_PICO && make -j 6 -C │ │ ports/rp2 BOARD=RPI_PICO " │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ docker: Error response from daemon: the working directory 'None' is invalid, it needs to be an absolute path. See 'docker run --help'. ╭───────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────╮ │ /home/jos/.local/share/pipx/venvs/mpbuild/lib/python3.10/site-packages/mpbuild/cli.py:34 in build │ │ │ │ 31 │ """ │ │ 32 │ Build a MicroPython board. │ │ 33 │ """ │ │ ❱ 34 │ build_board(board, variant, extra_args or [], build_container, idf) │ │ 35 │ │ 36 │ │ 37 @app.command() │ │ │ │ ╭─────────── locals ───────────╮ │ │ │ board = 'RPI_PICO' │ │ │ │ build_container = None │ │ │ │ extra_args = None │ │ │ │ idf = 'v5.2.2' │ │ │ │ variant = None │ │ │ ╰──────────────────────────────╯ │ │ │ │ /home/jos/.local/share/pipx/venvs/mpbuild/lib/python3.10/site-packages/mpbuild/build.py:123 in build_board │ │ │ │ 120 │ # 169 # 3x boards are the 'special' boards without deployment instructions. │ │ 121 │ if _board.deploy and "clean" not in extra_args: │ │ 122 │ │ deploy_filename = Path( │ │ ❱ 123 │ │ │ "/".join( │ │ 124 │ │ │ │ [ │ │ 125 │ │ │ │ │ mpy_dir, │ │ 126 │ │ │ │ │ "ports", │ │ │ │ ╭───────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │ │ │ _board = Board( │ │ │ │ │ name='RPI_PICO', │ │ │ │ │ variants=[], │ │ │ │ │ url='https://www.raspberrypi.com/products/raspberry-pi-pico/', │ │ │ │ │ mcu='rp2040', │ │ │ │ │ product='Pico', │ │ │ │ │ vendor='Raspberry Pi', │ │ │ │ │ images=['rp2-pico.jpg'], │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ port=Port( │ │ │ │ │ │ name='rp2', │ │ │ │ │ │ boards={ │ │ │ │ │ │ │ 'RPI_PICO_W': Board( │ │ │ │ │ │ │ │ name='RPI_PICO_W', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://www.raspberrypi.com/products/raspberry-pi-pico/', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Pico W', │ │ │ │ │ │ │ │ vendor='Raspberry Pi', │ │ │ │ │ │ │ │ images=['rp2-pico-w.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'W5100S_EVB_PICO': Board( │ │ │ │ │ │ │ │ name='W5100S_EVB_PICO', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://www.wiznet.io/product-item/w5100s-evb-pico/', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Wiznet W5100S-EVB-Pico', │ │ │ │ │ │ │ │ vendor='Wiznet', │ │ │ │ │ │ │ │ images=['W5100S-EVB-Pico.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'ADAFRUIT_ITSYBITSY_RP2040': Board( │ │ │ │ │ │ │ │ name='ADAFRUIT_ITSYBITSY_RP2040', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://www.adafruit.com/product/4888', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='ItsyBitsy RP2040', │ │ │ │ │ │ │ │ vendor='Adafruit', │ │ │ │ │ │ │ │ images=['4888-05.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'PIMORONI_TINY2040': Board( │ │ │ │ │ │ │ │ name='PIMORONI_TINY2040', │ │ │ │ │ │ │ │ variants=[Variant(name='FLASH_8M', text='8 MiB Flash', board=...)], │ │ │ │ │ │ │ │ url='https://shop.pimoroni.com/products/tiny-2040', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Tiny2040', │ │ │ │ │ │ │ │ vendor='Pimoroni', │ │ │ │ │ │ │ │ images=['tiny-2040-on-white-1_1024x1024.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'ADAFRUIT_QTPY_RP2040': Board( │ │ │ │ │ │ │ │ name='ADAFRUIT_QTPY_RP2040', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://www.adafruit.com/product/4900', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='QT Py RP2040', │ │ │ │ │ │ │ │ vendor='Adafruit', │ │ │ │ │ │ │ │ images=['4900-12.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'ADAFRUIT_FEATHER_RP2040': Board( │ │ │ │ │ │ │ │ name='ADAFRUIT_FEATHER_RP2040', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://www.adafruit.com/product/4884', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Feather RP2040', │ │ │ │ │ │ │ │ vendor='Adafruit', │ │ │ │ │ │ │ │ images=['4884-06.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'POLOLU_ZUMO_2040_ROBOT': Board( │ │ │ │ │ │ │ │ name='POLOLU_ZUMO_2040_ROBOT', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://www.pololu.com/zumo', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Pololu Zumo 2040 Robot', │ │ │ │ │ │ │ │ vendor='Pololu', │ │ │ │ │ │ │ │ images=['pololu_zumo_2040_robot.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'NULLBITS_BIT_C_PRO': Board( │ │ │ │ │ │ │ │ name='NULLBITS_BIT_C_PRO', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://nullbits.co/bit-c-pro', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Bit-C PRO', │ │ │ │ │ │ │ │ vendor='nullbits', │ │ │ │ │ │ │ │ images=['nullbits_bit_c_pro.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'W5500_EVB_PICO': Board( │ │ │ │ │ │ │ │ name='W5500_EVB_PICO', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://docs.wiznet.io/Product/iEthernet/W5500/w5500-evb-pico', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Wiznet W5500-EVB-Pico', │ │ │ │ │ │ │ │ vendor='Wiznet', │ │ │ │ │ │ │ │ images=['W5500-EVB-Pico.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ 'POLOLU_3PI_2040_ROBOT': Board( │ │ │ │ │ │ │ │ name='POLOLU_3PI_2040_ROBOT', │ │ │ │ │ │ │ │ variants=[], │ │ │ │ │ │ │ │ url='https://www.pololu.com/3pi', │ │ │ │ │ │ │ │ mcu='rp2040', │ │ │ │ │ │ │ │ product='Pololu 3pi+ 2040 Robot', │ │ │ │ │ │ │ │ vendor='Pololu', │ │ │ │ │ │ │ │ images=['pololu_3pi_2040_robot.jpg'], │ │ │ │ │ │ │ │ deploy=['../deploy.md'], │ │ │ │ │ │ │ │ port=... │ │ │ │ │ │ │ ), │ │ │ │ │ │ │ ... +8 │ │ │ │ │ │ } │ │ │ │ │ ) │ │ │ │ ) │ │ │ │ args = ' ' │ │ │ │ board = 'RPI_PICO' │ │ │ │ build_cmd = 'docker run -it --rm -v /sys/bus:/sys/bus -v /dev:/dev --net=host --privileged │ │ │ │ -v'+285 │ │ │ │ build_container = 'micropython/build-micropython-arm' │ │ │ │ build_container_override = None │ │ │ │ db = Database( │ │ │ │ │ │ │ │ │ ... +8 │ │ │ │ │ │ │ │ } │ │ │ │ │ │ │ ) │ │ │ │ │ │ ), │ │ │ │ │ │ ... +158 │ │ │ │ │ } │ │ │ │ ) │ │ │ │ extra_args = [] │ │ │ │ gid = 1000 │ │ │ │ home = '/home/jos' │ │ │ │ idf = 'v5.2.2' │ │ │ │ make_mpy_cross_cmd = 'make -C mpy-cross && ' │ │ │ │ mpy_dir = None │ │ │ │ port = 'rp2' │ │ │ │ title = 'Build rp2/RPI_PICO' │ │ │ │ uid = 1000 │ │ │ │ update_submodules_cmd = 'make -C ports/rp2 submodules BOARD=RPI_PICO && ' │ │ │ │ variant = None │ │ │ │ variant_cmd = '' │ │ │ │ variant_param = 'BOARD_VARIANT' │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ TypeError: sequence item 0: expected str instance, NoneType found jos@josverl-sb5:~/micropython$

Josverl commented 2 hours ago

Related : https://github.com/mattytrentini/mpbuild/pull/38

I traced to the same problem, and also found a few other code paths that had undefined outcomes, i think due to mixing str and Path in the Database class and associated functions. I will rebase and send a PR