- define CIRCUITPY_BUILD_EXTENSIONS to predefined values
- set CIRCUITPY_BUILD_EXTENSIONS in port and board config
- reuse the support matrix "get_settings_from_makefile" to get it
- move the existing port and board specific values
- remove the C3 specific board values because it's not the default
- update build_release_files.py to use get_settings_from_makefile
- fix the list of frozen modules in the board info, separate it from the builtin modules
- frozen modules are listed along with the link to their repository
- get the repository by running the git command in the frozen directory
- frozen modules are listed at the end
- they copy the style of the other modules
- frozen modules in build_board_info don't need the URLs, they are filtered out
This targets the 64-bit CPU Raspberry Pis. The BCM2711 on the Pi 4
and the BCM2837 on the Pi 3 and Zero 2W. There are 64-bit fixes
outside of the ports directory for it.
There are a couple other cleanups that were incidental:
* Use const mcu_pin_obj_t instead of omitting the const. The structs
themselves are const because they are in ROM.
* Use PTR <-> OBJ conversions in more places. They were found when
mp_obj_t was set to an integer type rather than pointer.
* Optimize submodule checkout because the Pi submodules are heavy
and unnecessary for the vast majority of builds.
Fixes#4314
.. hard-coding ulab for now.
It also fixes a problem where board_name was unassigned when
use_branded_name was False, which only happened at release-building
time.
Trying to change this caused multiple problems in the release process.
.. this makes it take a fraction of the time, at least on systems
with a lot of CPU threads. Even on my old laptop with a 2-core CPU
it reduces the time from 55s to 27s.
Sommersoft noticed that without submodules (as RTD currently does),
the "make -qp" failed due to trying to find files within submodules.
The "print-VAR" target doesn't have any dependencies, so it sidesteps
the problem.
If we move ulab's pyi files into the submodule, though, we'll need to
fetch submodules anyway during doc building.
Revisiting this because I noticed the support matrix said that pyruler
had several modules it obviously didn't, such as the recently added
vectorio.
It is less error-prone because we can use the final values instead
of re-coding the Makefile logic in python. The only things we need
to do are invoke make in "print-database" mode, then chase any
indirect references like CIRCUITPY_VECTORIO = $(CIRCUITPY_DISPLAYIO)
It does take longer, about 45s on my laptop.