Builds of the esp32s2 targets frequently fail:
```
-- Found Git: /usr/bin/git (found version "2.28.0")
-- Initialising new submodule components/asio/asio...
warning: could not look up configuration 'remote.origin.url'. Assuming this repository is its own authoritative upstream.
Submodule 'components/asio/asio' (/home/runner/work/circuitpython/circuitpython/ports/espressif/asio.git) registered for path 'components/asio/asio'
fatal: repository '/home/runner/work/circuitpython/circuitpython/ports/espressif/asio.git' does not exist
fatal: clone of '/home/runner/work/circuitpython/circuitpython/ports/espressif/asio.git' into submodule path '/home/runner/work/circuitpython/circuitpython/ports/esp32s2/esp-idf/components/asio/asio' failed
Failed to clone 'components/asio/asio'. Retry scheduled
fatal: repository '/home/runner/work/circuitpython/circuitpython/ports/espressif/asio.git' does not exist
fatal: clone of '/home/runner/work/circuitpython/circuitpython/ports/espressif/asio.git' into submodule path '/home/runner/work/circuitpython/circuitpython/ports/esp32s2/esp-idf/components/asio/asio' failed
Failed to clone 'components/asio/asio' a second time, aborting
CMake Error at esp-idf/tools/cmake/git_submodules.cmake:48 (message):
Git submodule init failed for components/asio/asio
Call Stack (most recent call first):
esp-idf/tools/cmake/build.cmake:78 (git_submodule_check)
esp-idf/tools/cmake/build.cmake:160 (__build_get_idf_git_revision)
esp-idf/tools/cmake/idf.cmake:49 (__build_init)
esp-idf/tools/cmake/project.cmake:7 (include)
CMakeLists.txt:8 (include)
```
It's not clear how/why this happens--is it something to do with our
multithreaded build?. Attempt to clear it up by manually checking out these
submodules ourselves.
Few peripherals are actually tested. However, USB, I2C and GPIO seem to work.
Most pins are silkscreened with the "PX00" style, so the board module
only includes the small number that are screened differently.
The default SPI, I2C, and UART are the ones on the EXT2 header. This is
arbitrary, but the I2C on this connector is shared with the on-board I2C
devices and the PCC header, making it the most versatile.
This version is supposed to
> Fetch all history for all tags and branches when fetch-depth=0
We leave the tags fetch in place so that actions _in cloned repos_
work. Cloned repos' tags do not necessarily match adafruit/circuitpython,
but we want version reporting to be able to use adafruit/circuitpython
tags when they are most relevant according to "git describe"'s heuristics.
Submodules are different, as they always point to the repo specified
in .gitmodules, so they don't need special handling to get the most
relevant tags.
We were seeing actions failures where the cache would be restored
"successfully" but then "Install CircuitPython deps" would fail:
# Step "Fetch IDF tool cache"
Cache Size: ~247 MB (259277989 B)
/bin/tar -xz -f /home/runner/work/_temp/a990f24d-c365-4685-b739-10e052812c81/cache.tgz -C /home/runner/work/circuitpython/circuitpython/.idf_tools
Cache restored from key: Linux-idf-tools-731ed12bcdfbfa8b5dd37e03703992271b3ce85dd629e45130f80f43b84ce3a8
...
# Step "Install CircuitPython deps"
Adding ESP-IDF tools to PATH...
Not using an unsupported version of tool cmake found in PATH: 3.17.0.
I checked locally, and (even when dist/* is removed) it is very quick to
run each of the `idf_tools install` steps, about 2s total.
Try doing this to see whether it fixes the CI problems.
'brew' apparently introduced an incompatible change, where even
"--force" does not actually make the commands available in the default path.
Also switch to a numbered macos release instead of "latest", though this
did not save us from breaking changes in brew or other preinstalled sw.
In order to get tags, including in submodules, we use our own fetching
procedure on top of checkout@v2.
A problem occuring in about 1% of jobs was that some submodules inexplicably
did not have an "origin" remote configured. "git submodule sync"
configures the "origin" remote in those cases. No cause for the problem
was determined.
Besides keeping up to date on actions/checkout, @v2 is supposed to fix a bug
where "re-run" of a pull request would fail checking out the code.