Frozen modules in the embed port does not generate frozen_content.c
Port, board and/or hardware
embed
MicroPython version
1.23.0
Reproduction
make -f micropython_embed.mk
This file is part of the MicroPython project, http://micropython.org/
The MIT License (MIT)
Copyright (c) 2022-2023 Damien P. George
Set the location of the top of the MicroPython repository.
MICROPYTHON_TOP = ../upstream
add the custom modules to the build
SRC_QSTR += modules/.c
SRC_QSTR += modules//.c
//SRC_QSTR += modules_poc/.c
//SRC_QSTR += modules_poc//.c
#add the uwb applicatioon folder as an include
CFLAGS += -I../../devkit-uwb-ses/uwbiot-top/apps/app_sunway_devkit
FROZEN_MANIFEST = manifest.py
Include the main makefile fragment to build the MicroPython component.
include $(MICROPYTHON_TOP)/ports/embed/embed.mk
Expected behaviour
frozen_content.c should be generated in the BUILD folder
Observed behaviour
When building on a Windows PC the manifest.py does not get invoked. I know this because added a syntax error and there is no complaint so it never got invoked.
Additional Information
I managed to find that bug which is down to requiring a make variable defining mpy-cross instead of mpy-cross.exe.
I can generate the frozen_content.c and it builds into my firmware but it always gets to fail the import
Code of Conduct
Yes, I agree
Build for Pyboard V1.x does not handle frozen modules
This is since the manifest mod. Modules in the stm32/modules directory are cross compiled but they aren't included in the build. For example the build output includes
MPY modules/font10.py
but I can't import it and it doesn't appear in help('modules').
I notice that at the end of the output there is
MPY dht.py
MPY lcd160cr.py
MPY lcd160cr_test.py
MPY onewire.py
GEN build-PYBV10/frozen_content.c
CC build-PYBV10/frozen_content.c
These modules do appear as frozen modules. I suspect that my attempt to override the manifest file works only for Pyboard D.
My build script works on Pyboard D:
MPDEVICE='/dev/pyboard'
# Determine board type
BOARD=$(pyb_check $MPDEVICE)
# Check for user override of frozen directory
if [ $FROZEN_DIR ]
then
echo Frozen modules located in $FROZEN_DIR
else
FROZEN_DIR='modules'
fi
if [ $BOARD ]
then
echo Building for $BOARD
cd $MPDIR/ports/stm32
if [ $# -eq 1 ] && [ $1 = "--clean" ]
then
make BOARD=$BOARD clean
fi
if make -j 8 BOARD=$BOARD FROZEN_MPY_DIR=$FROZEN_DIR FROZEN_MANIFEST= && pyb_boot $MPDEVICE
then
sleep 1
make PYTHON=python3 BOARD=$BOARD deploy
else
echo Build failure
fi
cd -
else
echo Incorrect board type
fi
Full listing:
Building for PYBV10
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
mkdir -p build-PYBV10/genhdr
make: Warning: File 'build-PYBV10/' has modification time 13 s in the future
mkdir -p build-PYBV10/build-PYBV10/
mkdir -p build-PYBV10/drivers/bus/
mkdir -p build-PYBV10/drivers/dht/
mkdir -p build-PYBV10/drivers/memory/
mkdir -p build-PYBV10/extmod/
mkdir -p build-PYBV10/lib/embed/
mkdir -p build-PYBV10/lib/libc/
mkdir -p build-PYBV10/lib/libm/
mkdir -p build-PYBV10/lib/mp-readline/
mkdir -p build-PYBV10/lib/netutils/
mkdir -p build-PYBV10/lib/oofatfs/
mkdir -p build-PYBV10/lib/stm32lib/CMSIS/STM32F4xx/Source/Templates/
mkdir -p build-PYBV10/lib/stm32lib/CMSIS/STM32F4xx/Source/Templates/gcc/
mkdir -p build-PYBV10/lib/stm32lib/STM32F4xx_HAL_Driver/Src/
mkdir -p build-PYBV10/lib/timeutils/
mkdir -p build-PYBV10/lib/utils/
mkdir -p build-PYBV10/py/
mkdir -p build-PYBV10/usbdev/class/src/
mkdir -p build-PYBV10/usbdev/core/src/
MPY modules/font10.py
MPY modules/micropower.py
MPY modules/ssd1306.py
MPY modules/freesans20.py
MPY modules/upysh.py
MPY modules/upower.py
MPY modules/courier20.py
MPY modules/freeserif.py
MPY modules/ugui.py
MPY modules/uasyncio/synchro.py
MPY modules/uasyncio/core.py
MPY modules/uasyncio/__init__.py
MPY modules/uasyncio/queues.py
MPY modules/collections/__init__.py
MPY modules/collections/deque.py
MPY modules/native_misc.py
MPY modules/errno.py
MPY modules/font14.py
MPY modules/logging.py
GEN stmconst build-PYBV10/genhdr/modstm_const.h
GEN build-PYBV10/pins_PYBV10.c
GEN build-PYBV10/genhdr/pybcdc.inf
GEN build-PYBV10/genhdr/pllfreqtable.h
GEN build-PYBV10/genhdr/pybcdc_inf.h
GEN build-PYBV10/genhdr/mpversion.h
GEN build-PYBV10/genhdr/moduledefs.h
GEN build-PYBV10/genhdr/qstr.i.last
GEN build-PYBV10/genhdr/qstr.split
GEN build-PYBV10/genhdr/qstrdefs.collected.h
QSTR updated
GEN build-PYBV10/genhdr/qstrdefs.generated.h
CC ../../py/mpstate.c
CC ../../py/nlr.c
CC ../../py/nlrx86.c
CC ../../py/nlrx64.c
CC ../../py/nlrthumb.c
CC ../../py/nlrxtensa.c
CC ../../py/nlrsetjmp.c
CC ../../py/malloc.c
CC ../../py/gc.c
CC ../../py/pystack.c
CC ../../py/qstr.c
CC ../../py/vstr.c
CC ../../py/mpprint.c
CC ../../py/unicode.c
CC ../../py/mpz.c
CC ../../py/reader.c
CC ../../py/lexer.c
CC ../../py/parse.c
CC ../../py/scope.c
CC ../../py/compile.c
CC ../../py/emitcommon.c
CC ../../py/emitbc.c
CC ../../py/asmbase.c
CC ../../py/asmx64.c
CC ../../py/emitnx64.c
CC ../../py/asmx86.c
CC ../../py/emitnx86.c
CC ../../py/asmthumb.c
CC ../../py/emitnthumb.c
CC ../../py/emitinlinethumb.c
CC ../../py/asmarm.c
CC ../../py/emitnarm.c
CC ../../py/asmxtensa.c
CC ../../py/emitnxtensa.c
CC ../../py/emitinlinextensa.c
CC ../../py/emitnxtensawin.c
CC ../../py/formatfloat.c
CC ../../py/parsenumbase.c
CC ../../py/parsenum.c
CC ../../py/emitglue.c
CC ../../py/persistentcode.c
CC ../../py/runtime.c
CC ../../py/runtime_utils.c
CC ../../py/scheduler.c
CC ../../py/nativeglue.c
CC ../../py/ringbuf.c
CC ../../py/stackctrl.c
CC ../../py/argcheck.c
CC ../../py/warning.c
CC ../../py/profile.c
CC ../../py/map.c
CC ../../py/obj.c
CC ../../py/objarray.c
CC ../../py/objattrtuple.c
CC ../../py/objbool.c
CC ../../py/objboundmeth.c
CC ../../py/objcell.c
CC ../../py/objclosure.c
CC ../../py/objcomplex.c
CC ../../py/objdeque.c
CC ../../py/objdict.c
CC ../../py/objenumerate.c
CC ../../py/objexcept.c
CC ../../py/objfilter.c
CC ../../py/objfloat.c
CC ../../py/objfun.c
CC ../../py/objgenerator.c
CC ../../py/objgetitemiter.c
CC ../../py/objint.c
CC ../../py/objint_longlong.c
CC ../../py/objint_mpz.c
CC ../../py/objlist.c
CC ../../py/objmap.c
CC ../../py/objmodule.c
CC ../../py/objobject.c
CC ../../py/objpolyiter.c
CC ../../py/objproperty.c
CC ../../py/objnone.c
CC ../../py/objnamedtuple.c
CC ../../py/objrange.c
CC ../../py/objreversed.c
CC ../../py/objset.c
CC ../../py/objsingleton.c
CC ../../py/objslice.c
CC ../../py/objstr.c
CC ../../py/objstrunicode.c
CC ../../py/objstringio.c
CC ../../py/objtuple.c
CC ../../py/objtype.c
CC ../../py/objzip.c
CC ../../py/opmethods.c
CC ../../py/sequence.c
CC ../../py/stream.c
CC ../../py/binary.c
CC ../../py/builtinimport.c
CC ../../py/builtinevex.c
CC ../../py/builtinhelp.c
CC ../../py/modarray.c
CC ../../py/modbuiltins.c
CC ../../py/modcollections.c
CC ../../py/modgc.c
CC ../../py/modio.c
CC ../../py/modmath.c
CC ../../py/modcmath.c
CC ../../py/modmicropython.c
CC ../../py/modstruct.c
CC ../../py/modsys.c
CC ../../py/moduerrno.c
CC ../../py/modthread.c
CC ../../py/vm.c
CC ../../py/bc.c
CC ../../py/showbc.c
CC ../../py/repl.c
CC ../../py/smallint.c
CC ../../py/frozenmod.c
CC ../../extmod/moductypes.c
CC ../../extmod/modujson.c
CC ../../extmod/modure.c
CC ../../extmod/moduzlib.c
CC ../../extmod/moduheapq.c
CC ../../extmod/modutimeq.c
CC ../../extmod/moduhashlib.c
CC ../../extmod/moducryptolib.c
CC ../../extmod/modubinascii.c
CC ../../extmod/virtpin.c
CC ../../extmod/machine_mem.c
CC ../../extmod/machine_pinbase.c
CC ../../extmod/machine_signal.c
CC ../../extmod/machine_pulse.c
CC ../../extmod/machine_i2c.c
CC ../../extmod/machine_spi.c
CC ../../extmod/modbluetooth.c
CC ../../extmod/modussl_axtls.c
CC ../../extmod/modussl_mbedtls.c
CC ../../extmod/modurandom.c
CC ../../extmod/moduselect.c
CC ../../extmod/moduwebsocket.c
CC ../../extmod/modwebrepl.c
CC ../../extmod/modframebuf.c
CC ../../extmod/vfs.c
CC ../../extmod/vfs_reader.c
CC ../../extmod/vfs_posix.c
CC ../../extmod/vfs_posix_file.c
CC ../../extmod/vfs_fat.c
CC ../../extmod/vfs_fat_diskio.c
CC ../../extmod/vfs_fat_file.c
CC ../../extmod/utime_mphal.c
CC ../../extmod/uos_dupterm.c
CC ../../lib/embed/abort_.c
CC ../../lib/utils/printf.c
GEN build-PYBV10/frozen_mpy.c
CC ../../lib/libc/string0.c
CC ../../lib/oofatfs/ff.c
CC ../../lib/oofatfs/ffunicode.c
CC ../../lib/mp-readline/readline.c
CC ../../lib/netutils/netutils.c
CC ../../lib/netutils/trace.c
CC ../../lib/netutils/dhcpserver.c
CC ../../lib/timeutils/timeutils.c
CC ../../lib/utils/pyexec.c
CC ../../lib/utils/interrupt_char.c
CC ../../lib/utils/sys_stdio_mphal.c
CC ../../lib/utils/mpirq.c
CC ../../lib/libm/math.c
CC ../../lib/libm/acoshf.c
CC ../../lib/libm/asinfacosf.c
CC ../../lib/libm/asinhf.c
CC ../../lib/libm/atan2f.c
CC ../../lib/libm/atanf.c
CC ../../lib/libm/atanhf.c
CC ../../lib/libm/ef_rem_pio2.c
CC ../../lib/libm/erf_lgamma.c
CC ../../lib/libm/fmodf.c
CC ../../lib/libm/kf_cos.c
CC ../../lib/libm/kf_rem_pio2.c
CC ../../lib/libm/kf_sin.c
CC ../../lib/libm/kf_tan.c
CC ../../lib/libm/log1pf.c
CC ../../lib/libm/nearbyintf.c
CC ../../lib/libm/sf_cos.c
CC ../../lib/libm/sf_erf.c
CC ../../lib/libm/sf_frexp.c
CC ../../lib/libm/sf_ldexp.c
CC ../../lib/libm/sf_modf.c
CC ../../lib/libm/sf_sin.c
CC ../../lib/libm/sf_tan.c
CC ../../lib/libm/wf_lgamma.c
CC ../../lib/libm/wf_tgamma.c
CC ../../lib/libm/thumb_vfp_sqrtf.c
CC ../../extmod/modonewire.c
CC ../../drivers/bus/softspi.c
CC ../../drivers/bus/softqspi.c
CC ../../drivers/memory/spiflash.c
CC ../../drivers/dht/dht.c
CC main.c
CC stm32_it.c
CC usbd_conf.c
CC usbd_desc.c
CC usbd_cdc_interface.c
CC usbd_hid_interface.c
CC usbd_msc_interface.c
CC mphalport.c
CC mpthreadport.c
CC irq.c
CC pendsv.c
CC systick.c
CC powerctrl.c
CC powerctrlboot.c
CC pybthread.c
CC factoryreset.c
CC timer.c
CC led.c
CC pin.c
CC pin_defs_stm32.c
CC pin_named_pins.c
CC bufhelper.c
CC dma.c
CC i2c.c
CC pyb_i2c.c
CC spi.c
CC pyb_spi.c
CC qspi.c
CC uart.c
CC can.c
CC fdcan.c
CC pyb_can.c
CC usb.c
CC wdt.c
CC eth.c
CC gccollect.c
CC help.c
CC machine_adc.c
CC machine_i2c.c
CC machine_spi.c
CC machine_uart.c
CC modmachine.c
CC modpyb.c
CC modstm.c
CC moduos.c
CC modutime.c
CC modusocket.c
CC network_lan.c
CC modnetwork.c
CC extint.c
CC usrsw.c
CC rng.c
CC rtc.c
CC flash.c
CC flashbdev.c
CC spibdev.c
CC storage.c
CC sdcard.c
CC sdram.c
CC fatfs_port.c
CC lcd.c
CC accel.c
CC servo.c
CC dac.c
CC adc.c
AS ../../lib/stm32lib/CMSIS/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.s
CC ../../lib/stm32lib/CMSIS/STM32F4xx/Source/Templates/system_stm32f4xx.c
CC system_stm32.c
AS resethandler.s
AS ../../lib/utils/gchelper_m3.s
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_mmc.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi.c
CC ../../lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c
CC usbdev/core/src/usbd_core.c
CC usbdev/core/src/usbd_ctlreq.c
CC usbdev/core/src/usbd_ioreq.c
CC usbdev/class/src/usbd_cdc_msc_hid.c
CC usbdev/class/src/usbd_msc_bot.c
CC usbdev/class/src/usbd_msc_scsi.c
CC build-PYBV10/pins_PYBV10.c
CC build-PYBV10/frozen_mpy.c
LINK build-PYBV10/firmware.elf
text data bss dec hex filename
404004 32 27844 431880 69708 build-PYBV10/firmware.elf
GEN build-PYBV10/firmware.dfu
GEN build-PYBV10/firmware.hex
make: warning: Clock skew detected. Your build may be incomplete.
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
make: Warning: File 'build-PYBV10/pins_PYBV10.P' has modification time 6.2 s in the future
MPY dht.py
MPY lcd160cr.py
MPY lcd160cr_test.py
MPY onewire.py
GEN build-PYBV10/frozen_content.c
CC build-PYBV10/frozen_content.c
LINK build-PYBV10/firmware.elf
text data bss dec hex filename
335188 32 27844 363064 58a38 build-PYBV10/firmware.elf
GEN build-PYBV10/firmware.dfu
Writing build-PYBV10/firmware.dfu to the board
File: build-PYBV10/firmware.dfu
b'DfuSe' v1, image size: 335525, targets: 1
b'Target' 0, alt setting: 0, name: "ST...", size: 335240, elements: 2
0, address: 0x08000000, size: 14872
1, address: 0x08020000, size: 320352
usb: 0483:df11, device: 0x0000, dfu: 0x011a, b'UFD', 16, 0x9377312e
Writing memory...
0x08000000 14872 [=========================] 100%
0x08020000 320352 [=========================] 100%
Exiting DFU...
make: warning: Clock skew detected. Your build may be incomplete.
/mnt/qnap2/data/Projects/MicroPython/micropython_ra8875
[adminpete@capybara]: /mnt/qnap2/data/Projects/MicroPython/micropython_ra8875