← index #13385PR #5760
Related · medium · value 1.609
QUERY · ISSUE

Compiling with FROZEN_MANIFEST fails to build mpy-cross if it hasn't been built separately first

openby damzopened 2024-01-08updated 2024-01-08
bug

Compiling with FROZEN_MANIFEST fails to build mpy-cross if it hasn't been built separately first.

Reproducer

(on current master)

git clean -fdx && echo "" > manifest.py && make -C ports/unix submodules && make -C ports/unix FROZEN_MANIFEST="$PWD/manifest.py"

Fails linking with:

LINK build/mpy-cross
/usr/bin/ld: build/py/qstr.o: in function `qstr_init':
qstr.c:(.text.qstr_init+0x7): undefined reference to `mp_qstr_frozen_const_pool'
collect2: error: ld returned 1 exit status

Bisect

Bisect points to f01d5fb657159f1afa9d41cf39830d17b791a67e as the culprit.

I assume the problem is that the mpy-cross Makefile inherits the wrong CFLAGS? Also, interestingly cmake-based ports have the same problem.

CANDIDATE · PULL REQUEST

py/mkrules.mk: Add $(MPY_CROSS) as a dependency

closedby osresearchopened 2020-03-15updated 2021-11-30

By making $(MPY_CROSS) an order-only prerequisite of the various frozen files, it removes the need to remember to build ../../mpy-cross/mpy-cross by hand on a clean checkout.

More info on order-only prerequisites.

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied