toitlang/toit

components/lwip/lwip issue on Toitware esp-idf fork

mikini opened this issue · 5 comments

There seems to be a problem with the registered hash of the components/lwip/lwip submodule in Toitware esp-idf fork.

Relevant excerpt when following README.md procedure:

Submodule 'components/lwip/lwip' (https://github.com/espressif/esp-lwip.git) registered for path 'components/lwip/lwip'
...
Cloning into 'components/lwip/lwip'...
remote: Enumerating objects: 50148, done.
remote: Counting objects: 100% (182/182), done.
remote: Compressing objects: 100% (121/121), done.
remote: Total 50148 (delta 108), reused 110 (delta 59), pack-reused 49966
Receiving objects: 100% (501Cloning into 'components/lwip/lwip'...48/50148), 9.94 MiB | 2.56 MiB/s, done.
Resolving deltas: 100% (37849/37849), done.
Checking connectivity... done.
fatal: reference is not a tree: 02638065e72ea689eb0d3509b1960b31c515616e
...
Unable to checkout '02638065e72ea689eb0d3509b1960b31c515616e' in submodule path 'components/lwip/lwip'

Complete dump:

$ git clone https://github.com/toitlang/toit toit_new
Cloning into 'toit_new'...
remote: Enumerating objects: 1113, done.
remote: Counting objects: 100% (1113/1113), done.
remote: Compressing objects: 100% (879/879), done.
remote: Total 1113 (delta 307), reused 1005 (delta 210), pack-reused 0
Receiving objects: 100% (1113/1113), 4.91 MiB | 2.94 MiB/s, done.
Resolving deltas: 100% (307/307), done.
Checking connectivity... done.
$ cd toit_new/
$ git clone https://github.com/toitware/esp-idf.git
Cloning into 'esp-idf'...
remote: Enumerating objects: 201213, done.
remote: Total 201213 (delta 0), reused 0 (delta 0), pack-reused 201213
Receiving objects: 100% (201213/201213), 124.99 MiB | 2.34 MiB/s, done.
Resolving deltas: 100% (148837/148837), done.
Checking connectivity... done.
$ pushd esp-idf/
~/toit_new/esp-idf ~/toit_new
$ git checkout patch-head-4.3-3
Branch patch-head-4.3-3 set up to track remote branch patch-head-4.3-3 from origin.
Switched to a new branch 'patch-head-4.3-3'
$ git submodule update --init --recursive
Submodule 'components/asio/asio' (https://github.com/espressif/asio.git) registered for path 'components/asio/asio'
Submodule 'components/bootloader/subproject/components/micro-ecc/micro-ecc' (https://github.com/kmackay/micro-ecc.git) registered for path 'components/bootloader/subproject/components/micro-ecc/micro-ecc'
Submodule 'components/bt/controller/lib_esp32' (https://github.com/espressif/esp32-bt-lib.git) registered for path 'components/bt/controller/lib_esp32'
Submodule 'components/bt/controller/lib_esp32c3_family' (https://github.com/espressif/esp32c3-bt-lib.git) registered for path 'components/bt/controller/lib_esp32c3_family'
Submodule 'components/bt/host/nimble/nimble' (https://github.com/espressif/esp-nimble.git) registered for path 'components/bt/host/nimble/nimble'
Submodule 'components/cbor/tinycbor' (https://github.com/intel/tinycbor.git) registered for path 'components/cbor/tinycbor'
Submodule 'components/cmock/CMock' (https://github.com/ThrowTheSwitch/CMock.git) registered for path 'components/cmock/CMock'
Submodule 'components/coap/libcoap' (https://github.com/obgm/libcoap.git) registered for path 'components/coap/libcoap'
Submodule 'components/esp_wifi/lib' (https://github.com/espressif/esp32-wifi-lib.git) registered for path 'components/esp_wifi/lib'
Submodule 'components/esptool_py/esptool' (https://github.com/espressif/esptool.git) registered for path 'components/esptool_py/esptool'
Submodule 'components/expat/expat' (https://github.com/libexpat/libexpat.git) registered for path 'components/expat/expat'
Submodule 'components/json/cJSON' (https://github.com/DaveGamble/cJSON.git) registered for path 'components/json/cJSON'
Submodule 'components/libsodium/libsodium' (https://github.com/jedisct1/libsodium.git) registered for path 'components/libsodium/libsodium'
Submodule 'components/lwip/lwip' (https://github.com/espressif/esp-lwip.git) registered for path 'components/lwip/lwip'
Submodule 'components/mbedtls/mbedtls' (https://github.com/espressif/mbedtls.git) registered for path 'components/mbedtls/mbedtls'
Submodule 'components/mqtt/esp-mqtt' (https://github.com/espressif/esp-mqtt.git) registered for path 'components/mqtt/esp-mqtt'
Submodule 'components/nghttp/nghttp2' (https://github.com/nghttp2/nghttp2.git) registered for path 'components/nghttp/nghttp2'
Submodule 'components/protobuf-c/protobuf-c' (https://github.com/protobuf-c/protobuf-c.git) registered for path 'components/protobuf-c/protobuf-c'
Submodule 'components/spiffs/spiffs' (https://github.com/pellepl/spiffs.git) registered for path 'components/spiffs/spiffs'
Submodule 'components/tinyusb/tinyusb' (https://github.com/espressif/tinyusb.git) registered for path 'components/tinyusb/tinyusb'
Submodule 'components/unity/unity' (https://github.com/ThrowTheSwitch/Unity.git) registered for path 'components/unity/unity'
Submodule 'examples/build_system/cmake/import_lib/main/lib/tinyxml2' (https://github.com/leethomason/tinyxml2.git) registered for path 'examples/build_system/cmake/import_lib/main/lib/tinyxml2'
Submodule 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib' (https://github.com/espressif/esp-cryptoauthlib.git) registered for path 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib'
Cloning into 'components/asio/asio'...
remote: Enumerating objects: 48394, done.
remote: Counting objects: 100% (15174/15174), done.
remote: Compressing objects: 100% (1324/1324), done.
remote: Total 48394 (delta 14750), reused 13850 (delta 13850), pack-reused 33220
Receiving objects: 100% (48394/48394), 15.04 MiB | 2.39 MiB/s, done.
Resolving deltas: 100% (33906/33906), done.
Checking connectivity... done.
Submodule path 'components/asio/asio': checked out 'f31694c9f1746ba189a4bcae2e34db15135ddb22'
Cloning into 'components/bootloader/subproject/components/micro-ecc/micro-ecc'...
remote: Enumerating objects: 1143, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 1143 (delta 21), reused 28 (delta 9), pack-reused 1095
Receiving objects: 100% (1143/1143), 687.07 KiB | 0 bytes/s, done.
Resolving deltas: 100% (664/664), done.
Checking connectivity... done.
Submodule path 'components/bootloader/subproject/components/micro-ecc/micro-ecc': checked out 'd037ec89546fad14b5c4d5456c2e23a71e554966'
Cloning into 'components/bt/controller/lib_esp32'...
remote: Enumerating objects: 1614, done.
remote: Counting objects: 100% (734/734), done.
remote: Compressing objects: 100% (399/399), done.
remote: Total 1614 (delta 465), reused 575 (delta 306), pack-reused 880
Receiving objects: 100% (1614/1614), 6.30 MiB | 2.63 MiB/s, done.
Resolving deltas: 100% (1063/1063), done.
Checking connectivity... done.
Submodule path 'components/bt/controller/lib_esp32': checked out 'fb49791b7c1a8a35f06e68124c90022667b4cff1'
Cloning into 'components/bt/controller/lib_esp32c3_family'...
remote: Enumerating objects: 116, done.
remote: Counting objects: 100% (116/116), done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 116 (delta 50), reused 94 (delta 28), pack-reused 0
Receiving objects: 100% (116/116), 387.52 KiB | 0 bytes/s, done.
Resolving deltas: 100% (50/50), done.
Checking connectivity... done.
Submodule path 'components/bt/controller/lib_esp32c3_family': checked out '12f00c45ce9c8cf9a9b2e607b4954f12d4191ffb'
Cloning into 'components/bt/host/nimble/nimble'...
remote: Enumerating objects: 40897, done.
remote: Counting objects: 100% (453/453), done.
remote: Compressing objects: 100% (160/160), done.
remote: Total 40897 (delta 315), reused 408 (delta 288), pack-reused 40444
Receiving objects: 100% (40897/40897), 11.93 MiB | 3.04 MiB/s, done.
Resolving deltas: 100% (25043/25043), done.
Checking connectivity... done.
Submodule path 'components/bt/host/nimble/nimble': checked out 'aef55bbf636ed580d4d6408a5c2e75d1f70a875e'
Cloning into 'components/cbor/tinycbor'...
remote: Enumerating objects: 3024, done.
remote: Counting objects: 100% (225/225), done.
remote: Compressing objects: 100% (110/110), done.
remote: Total 3024 (delta 143), reused 177 (delta 115), pack-reused 2799
Receiving objects: 100% (3024/3024), 1.42 MiB | 2.29 MiB/s, done.
Resolving deltas: 100% (2038/2038), done.
Checking connectivity... done.
Submodule path 'components/cbor/tinycbor': checked out '085ca40781f7c39febe6d14fb7e5cba342e1804b'
Cloning into 'components/cmock/CMock'...
remote: Enumerating objects: 5724, done.
remote: Counting objects: 100% (113/113), done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 5724 (delta 54), reused 60 (delta 24), pack-reused 5611
Receiving objects: 100% (5724/5724), 3.60 MiB | 3.13 MiB/s, done.
Resolving deltas: 100% (3883/3883), done.
Checking connectivity... done.
Submodule path 'components/cmock/CMock': checked out 'eeecc49ce8af123cf8ad40efdb9673e37b56230f'
Submodule 'vendor/c_exception' (https://github.com/throwtheswitch/cexception.git) registered for path 'vendor/c_exception'
Submodule 'vendor/unity' (https://github.com/throwtheswitch/unity.git) registered for path 'vendor/unity'
Cloning into 'vendor/c_exception'...
remote: Enumerating objects: 326, done.
remote: Counting objects: 100% (61/61), done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 326 (delta 23), reused 34 (delta 9), pack-reused 265
Receiving objects: 100% (326/326), 547.04 KiB | 0 bytes/s, done.
Resolving deltas: 100% (150/150), done.
Checking connectivity... done.
Submodule path 'components/cmock/CMock/vendor/c_exception': checked out '71b47be7c950f1bf5f7e5303779fa99a16224bb6'
Cloning into 'vendor/unity'...
remote: Enumerating objects: 5869, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 5869 (delta 44), reused 68 (delta 32), pack-reused 5777
Receiving objects: 100% (5869/5869), 6.62 MiB | 3.67 MiB/s, done.
Resolving deltas: 100% (3628/3628), done.
Checking connectivity... done.
Submodule path 'components/cmock/CMock/vendor/unity': checked out 'cf949f45ca6d172a177b00da21310607b97bc7a7'
Cloning into 'components/coap/libcoap'...
remote: Enumerating objects: 12565, done.
remote: Counting objects: 100% (1636/1636), done.
remote: Compressing objects: 100% (582/582), done.
remote: Total 12565 (delta 1081), reused 1414 (delta 985), pack-reused 10929
Receiving objects: 100% (12565/12565), 5.77 MiB | 2.86 MiB/s, done.
Resolving deltas: 100% (8889/8889), done.
Checking connectivity... done.
Submodule path 'components/coap/libcoap': checked out '98954eb30a2e728e172a6cd29430ae5bc999b585'
Submodule 'ext/tinydtls' (https://github.com/eclipse/tinydtls.git) registered for path 'ext/tinydtls'
Cloning into 'ext/tinydtls'...
remote: Enumerating objects: 3404, done.
remote: Counting objects: 100% (833/833), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 3404 (delta 708), reused 696 (delta 679), pack-reused 2571
Receiving objects: 100% (3404/3404), 1011.04 KiB | 0 bytes/s, done.
Resolving deltas: 100% (2419/2419), done.
Checking connectivity... done.
Submodule path 'components/coap/libcoap/ext/tinydtls': checked out '7f8c86e501e690301630029fa9bae22424adf618'
Cloning into 'components/esp_wifi/lib'...
remote: Enumerating objects: 15759, done.
remote: Counting objects: 100% (3504/3504), done.
remote: Compressing objects: 100% (737/737), done.
remote: Total 15759 (delta 2844), reused 3425 (delta 2767), pack-reused 12255
Receiving objects: 100% (15759/15759), 181.13 MiB | 2.44 MiB/s, done.
Resolving deltas: 100% (12899/12899), done.
Checking connectivity... done.
Submodule path 'components/esp_wifi/lib': checked out 'e6945e61f7c63545a77b0575c3770a85b4de948e'
Cloning into 'components/esptool_py/esptool'...
remote: Enumerating objects: 3849, done.
remote: Counting objects: 100% (886/886), done.
remote: Compressing objects: 100% (541/541), done.
remote: Total 3849 (delta 550), reused 629 (delta 333), pack-reused 2963
Receiving objects: 100% (3849/3849), 11.03 MiB | 2.36 MiB/s, done.
Resolving deltas: 100% (2421/2421), done.
Checking connectivity... done.
Submodule path 'components/esptool_py/esptool': checked out '4698b396730b23fb4aab023c5fb1744db957fc4c'
Cloning into 'components/expat/expat'...
remote: Enumerating objects: 17557, done.
remote: Counting objects: 100% (1101/1101), done.
remote: Compressing objects: 100% (409/409), done.
remote: Total 17557 (delta 764), reused 943 (delta 682), pack-reused 16456
Receiving objects: 100% (17557/17557), 14.39 MiB | 3.01 MiB/s, done.
Resolving deltas: 100% (13076/13076), done.
Checking connectivity... done.
Submodule path 'components/expat/expat': checked out '968b8cc46dbee47b83318d5f31a8e7907199614b'
Cloning into 'components/json/cJSON'...
remote: Enumerating objects: 4516, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 4516 (delta 14), reused 12 (delta 3), pack-reused 4482
Receiving objects: 100% (4516/4516), 2.48 MiB | 2.01 MiB/s, done.
Resolving deltas: 100% (2997/2997), done.
Checking connectivity... done.
Submodule path 'components/json/cJSON': checked out 'd348621ca93571343a56862df7de4ff3bc9b5667'
Cloning into 'components/libsodium/libsodium'...
remote: Enumerating objects: 33124, done.
remote: Counting objects: 100% (732/732), done.
remote: Compressing objects: 100% (402/402), done.
remote: Total 33124 (delta 393), reused 590 (delta 315), pack-reused 32392
Receiving objects: 100% (33124/33124), 8.72 MiB | 2.36 MiB/s, done.
Resolving deltas: 100% (19648/19648), done.
Checking connectivity... done.
Submodule path 'components/libsodium/libsodium': checked out '4f5e89fa84ce1d178a6765b8b46f2b6f91216677'
Cloning into 'components/lwip/lwip'...
remote: Enumerating objects: 50148, done.
remote: Counting objects: 100% (182/182), done.
remote: Compressing objects: 100% (121/121), done.
remote: Total 50148 (delta 108), reused 110 (delta 59), pack-reused 49966
Receiving objects: 100% (501Cloning into 'components/lwip/lwip'...48/50148), 9.94 MiB | 2.56 MiB/s, done.
Resolving deltas: 100% (37849/37849), done.
Checking connectivity... done.
fatal: reference is not a tree: 02638065e72ea689eb0d3509b1960b31c515616e
Cloning into 'components/mbedtls/mbedtls'...
remote: Enumerating objects: 127088, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 127088 (delta 9), reused 18 (delta 8), pack-reused 127061
Receiving objects: 100% (127088/127088), 56.90 MiB | 1.58 MiB/s, done.
Resolving deltas: 100% (98432/98432), done.
Checking connectivity... done.
Submodule path 'components/mbedtls/mbedtls': checked out '6465247f67167518b8813ae2faaf422704e4b1a3'
Cloning into 'components/mqtt/esp-mqtt'...
remote: Enumerating objects: 2625, done.
remote: Counting objects: 100% (335/335), done.
remote: Compressing objects: 100% (186/186), done.
remote: Total 2625 (delta 188), reused 289 (delta 144), pack-reused 2290
Receiving objects: 100% (2625/2625), 1.54 MiB | 2.90 MiB/s, done.
Resolving deltas: 100% (1419/1419), done.
Checking connectivity... done.
Submodule path 'components/mqtt/esp-mqtt': checked out 'f10321a53b53a146ee299cfecc320b89c0cf6611'
Cloning into 'components/nghttp/nghttp2'...
remote: Enumerating objects: 43021, done.
remote: Counting objects: 100% (2294/2294), done.
remote: Compressing objects: 100% (697/697), done.
remote: Total 43021 (delta 1636), reused 2207 (delta 1583), pack-reused 40727
Receiving objects: 100% (43021/43021), 34.97 MiB | 3.34 MiB/s, done.
Resolving deltas: 100% (31977/31977), done.
Checking connectivity... done.
Submodule path 'components/nghttp/nghttp2': checked out '8f7b008b158e12de0e58247afd170f127dbb6456'
Submodule 'third-party/mruby' (https://github.com/mruby/mruby) registered for path 'third-party/mruby'
Submodule 'third-party/neverbleed' (https://github.com/tatsuhiro-t/neverbleed.git) registered for path 'third-party/neverbleed'
Cloning into 'third-party/mruby'...
remote: Enumerating objects: 66686, done.
remote: Counting objects: 100% (2235/2235), done.
remote: Compressing objects: 100% (893/893), done.
remote: Total 66686 (delta 1343), reused 2041 (delta 1235), pack-reused 64451
Receiving objects: 100% (66686/66686), 18.22 MiB | 3.40 MiB/s, done.
Resolving deltas: 100% (41749/41749), done.
Checking connectivity... done.
Submodule path 'components/nghttp/nghttp2/third-party/mruby': checked out '7c91efc1ffda769a5f1a872c646c82b00698f1b8'
Cloning into 'third-party/neverbleed'...
remote: Enumerating objects: 234, done.
remote: Total 234 (delta 0), reused 0 (delta 0), pack-reused 234
Receiving objects: 100% (234/234), 83.16 KiB | 0 bytes/s, done.
Resolving deltas: 100% (144/144), done.
Checking connectivity... done.
Submodule path 'components/nghttp/nghttp2/third-party/neverbleed': checked out 'b967ca054f48a36f82d8fcdd32e54ec5144f2751'
Cloning into 'components/protobuf-c/protobuf-c'...
remote: Enumerating objects: 3650, done.
remote: Counting objects: 100% (117/117), done.
remote: Compressing objects: 100% (81/81), done.
remote: Total 3650 (delta 59), reused 72 (delta 31), pack-reused 3533
Receiving objects: 100% (3650/3650), 1.50 MiB | 2.41 MiB/s, done.
Resolving deltas: 100% (2326/2326), done.
Checking connectivity... done.
Submodule path 'components/protobuf-c/protobuf-c': checked out 'dac1a65feac4ad72f612aab99f487056fbcf5c1a'
Cloning into 'components/spiffs/spiffs'...
remote: Enumerating objects: 1502, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 1502 (delta 7), reused 12 (delta 5), pack-reused 1483
Receiving objects: 100% (1502/1502), 1.06 MiB | 1.53 MiB/s, done.
Resolving deltas: 100% (1042/1042), done.
Checking connectivity... done.
Submodule path 'components/spiffs/spiffs': checked out 'f5e26c4e933189593a71c6b82cda381a7b21e41c'
Cloning into 'components/tinyusb/tinyusb'...
remote: Enumerating objects: 56755, done.
remote: Counting objects: 100% (261/261), done.
remote: Compressing objects: 100% (167/167), done.
remote: Total 56755 (delta 79), reused 209 (delta 60), pack-reused 56494
Receiving objects: 100% (56755/56755), 29.59 MiB | 3.14 MiB/s, done.
Resolving deltas: 100% (37387/37387), done.
Checking connectivity... done.
Submodule path 'components/tinyusb/tinyusb': checked out '334e95fac52a607150157ae5199a19e11f843982'
Cloning into 'components/unity/unity'...
remote: Enumerating objects: 5869, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 5869 (delta 44), reused 68 (delta 32), pack-reused 5777
Receiving objects: 100% (5869/5869), 6.62 MiB | 3.28 MiB/s, done.
Resolving deltas: 100% (3628/3628), done.
Checking connectivity... done.
Submodule path 'components/unity/unity': checked out '7d2bf62b7e6afaf38153041a9d53c21aeeca9a25'
Cloning into 'examples/build_system/cmake/import_lib/main/lib/tinyxml2'...
remote: Enumerating objects: 4460, done.
remote: Counting objects: 100% (307/307), done.
remote: Compressing objects: 100% (147/147), done.
remote: Total 4460 (delta 231), reused 192 (delta 160), pack-reused 4153
Receiving objects: 100% (4460/4460), 3.21 MiB | 3.89 MiB/s, done.
Resolving deltas: 100% (2963/2963), done.
Checking connectivity... done.
Submodule path 'examples/build_system/cmake/import_lib/main/lib/tinyxml2': checked out '7e8e249990ec491ec15990cf95b6d871a66cf64a'
Cloning into 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib'...
remote: Enumerating objects: 695, done.
remote: Counting objects: 100% (695/695), done.
remote: Compressing objects: 100% (347/347), done.
remote: Total 695 (delta 385), reused 641 (delta 332), pack-reused 0
Receiving objects: 100% (695/695), 1.02 MiB | 0 bytes/s, done.
Resolving deltas: 100% (385/385), done.
Checking connectivity... done.
Submodule path 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib': checked out 'bb672b0437485fc7420add178299631692b15ac3'
Unable to checkout '02638065e72ea689eb0d3509b1960b31c515616e' in submodule path 'components/lwip/lwip'
$ 

This works for me. I ran the same commands as your dump and it worked. You have a strange line:

remote: Enumerating objects: 50148, done.
remote: Counting objects: 100% (182/182), done.
remote: Compressing objects: 100% (121/121), done.
remote: Total 50148 (delta 108), reused 110 (delta 59), pack-reused 49966
Receiving objects: 100% (501Cloning into 'components/lwip/lwip'...48/50148), 9.94 MiB | 2.56 MiB/s, done.
Resolving deltas: 100% (37849/37849), done.

In the middle of the text "50148/50148" there is an inserted text "Cloning into 'components/lwip/lwip'..."

It's as if there are two clones going on at once, or you have a background program and a foreground program trying to do the same thing twice?

Does it work to delete everything and start over?

You're right, that looks really strange. I did it a couple fo times, but have nothing of any sorts, that could trigger anything running in parallel. Although I pasted the 5 commands into the shell in one go, but that usually works fine.

This is on a spare machine running Ubuntu 16.04 (EOL'ed) with git version 2.7.4. On Ubuntu 20.04 it also works for me, but when I inspect the repo I can't locate the 0263 commit that the containing repo wants to checkout, consistent with the error message.

I just redid it from scratch, manually pasting the lines one-by-one and I get the same result., don't see any sign of it being accessed multiple time. My best guess ATM is that this is an "old git" artefact;

:~$ git clone https://github.com/toitlang/toit toit_lwip-test
Cloning into 'toit_lwip-test'...
remote: Enumerating objects: 1166, done.
remote: Counting objects: 100% (1166/1166), done.
remote: Compressing objects: 100% (915/915), done.
remote: Total 1166 (delta 352), reused 1027 (delta 226), pack-reused 0
Receiving objects: 100% (1166/1166), 4.93 MiB | 4.48 MiB/s, done.
Resolving deltas: 100% (352/352), done.
Checking connectivity... done.
:~$ cd toit_lwip-test/
:~/toit_lwip-test (master=)$ git clone https://github.com/toitware/esp-idf.git
Cloning into 'esp-idf'...
remote: Enumerating objects: 201220, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 201220 (delta 0), reused 2 (delta 0), pack-reused 201213
Receiving objects: 100% (201220/201220), 125.06 MiB | 2.83 MiB/s, done.
Resolving deltas: 100% (148821/148821), done.
Checking connectivity... done.
:~/toit_lwip-test (master %=)$ pushd esp-idf/
~/toit_lwip-test/esp-idf ~/toit_lwip-test
:~/toit_lwip-test/esp-idf (master=)$ git checkout patch-head-4.3-3
Branch patch-head-4.3-3 set up to track remote branch patch-head-4.3-3 from origin.
Switched to a new branch 'patch-head-4.3-3'
:~/toit_lwip-test/esp-idf (patch-head-4.3-3=)$ git submodule update --init --recursive
Submodule 'components/asio/asio' (https://github.com/espressif/asio.git) registered for path 'components/asio/asio'
Submodule 'components/bootloader/subproject/components/micro-ecc/micro-ecc' (https://github.com/kmackay/micro-ecc.git) registered for path 'components/bootloader/subproject/components/micro-ecc/micro-ecc'
Submodule 'components/bt/controller/lib_esp32' (https://github.com/espressif/esp32-bt-lib.git) registered for path 'components/bt/controller/lib_esp32'
Submodule 'components/bt/controller/lib_esp32c3_family' (https://github.com/espressif/esp32c3-bt-lib.git) registered for path 'components/bt/controller/lib_esp32c3_family'
Submodule 'components/bt/host/nimble/nimble' (https://github.com/espressif/esp-nimble.git) registered for path 'components/bt/host/nimble/nimble'
Submodule 'components/cbor/tinycbor' (https://github.com/intel/tinycbor.git) registered for path 'components/cbor/tinycbor'
Submodule 'components/cmock/CMock' (https://github.com/ThrowTheSwitch/CMock.git) registered for path 'components/cmock/CMock'
Submodule 'components/coap/libcoap' (https://github.com/obgm/libcoap.git) registered for path 'components/coap/libcoap'
Submodule 'components/esp_wifi/lib' (https://github.com/espressif/esp32-wifi-lib.git) registered for path 'components/esp_wifi/lib'
Submodule 'components/esptool_py/esptool' (https://github.com/espressif/esptool.git) registered for path 'components/esptool_py/esptool'
Submodule 'components/expat/expat' (https://github.com/libexpat/libexpat.git) registered for path 'components/expat/expat'
Submodule 'components/json/cJSON' (https://github.com/DaveGamble/cJSON.git) registered for path 'components/json/cJSON'
Submodule 'components/libsodium/libsodium' (https://github.com/jedisct1/libsodium.git) registered for path 'components/libsodium/libsodium'
Submodule 'components/lwip/lwip' (https://github.com/espressif/esp-lwip.git) registered for path 'components/lwip/lwip'
Submodule 'components/mbedtls/mbedtls' (https://github.com/espressif/mbedtls.git) registered for path 'components/mbedtls/mbedtls'
Submodule 'components/mqtt/esp-mqtt' (https://github.com/espressif/esp-mqtt.git) registered for path 'components/mqtt/esp-mqtt'
Submodule 'components/nghttp/nghttp2' (https://github.com/nghttp2/nghttp2.git) registered for path 'components/nghttp/nghttp2'
Submodule 'components/protobuf-c/protobuf-c' (https://github.com/protobuf-c/protobuf-c.git) registered for path 'components/protobuf-c/protobuf-c'
Submodule 'components/spiffs/spiffs' (https://github.com/pellepl/spiffs.git) registered for path 'components/spiffs/spiffs'
Submodule 'components/tinyusb/tinyusb' (https://github.com/espressif/tinyusb.git) registered for path 'components/tinyusb/tinyusb'
Submodule 'components/unity/unity' (https://github.com/ThrowTheSwitch/Unity.git) registered for path 'components/unity/unity'
Submodule 'examples/build_system/cmake/import_lib/main/lib/tinyxml2' (https://github.com/leethomason/tinyxml2.git) registered for path 'examples/build_system/cmake/import_lib/main/lib/tinyxml2'
Submodule 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib' (https://github.com/espressif/esp-cryptoauthlib.git) registered for path 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib'
Cloning into 'components/asio/asio'...
remote: Enumerating objects: 48394, done.
remote: Counting objects: 100% (15174/15174), done.
remote: Compressing objects: 100% (1324/1324), done.
remote: Total 48394 (delta 14750), reused 13850 (delta 13850), pack-reused 33220
Receiving objects: 100% (48394/48394), 15.04 MiB | 3.90 MiB/s, done.
Resolving deltas: 100% (33906/33906), done.
Checking connectivity... done.
Submodule path 'components/asio/asio': checked out 'f31694c9f1746ba189a4bcae2e34db15135ddb22'
Cloning into 'components/bootloader/subproject/components/micro-ecc/micro-ecc'...
remote: Enumerating objects: 1143, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 1143 (delta 21), reused 28 (delta 9), pack-reused 1095
Receiving objects: 100% (1143/1143), 687.07 KiB | 0 bytes/s, done.
Resolving deltas: 100% (664/664), done.
Checking connectivity... done.
Submodule path 'components/bootloader/subproject/components/micro-ecc/micro-ecc': checked out 'd037ec89546fad14b5c4d5456c2e23a71e554966'
Cloning into 'components/bt/controller/lib_esp32'...
remote: Enumerating objects: 1614, done.
remote: Counting objects: 100% (734/734), done.
remote: Compressing objects: 100% (399/399), done.
remote: Total 1614 (delta 465), reused 575 (delta 306), pack-reused 880
Receiving objects: 100% (1614/1614), 6.30 MiB | 2.30 MiB/s, done.
Resolving deltas: 100% (1063/1063), done.
Checking connectivity... done.
Submodule path 'components/bt/controller/lib_esp32': checked out 'fb49791b7c1a8a35f06e68124c90022667b4cff1'
Cloning into 'components/bt/controller/lib_esp32c3_family'...
remote: Enumerating objects: 116, done.
remote: Counting objects: 100% (116/116), done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 116 (delta 50), reused 94 (delta 28), pack-reused 0
Receiving objects: 100% (116/116), 387.52 KiB | 0 bytes/s, done.
Resolving deltas: 100% (50/50), done.
Checking connectivity... done.
Submodule path 'components/bt/controller/lib_esp32c3_family': checked out '12f00c45ce9c8cf9a9b2e607b4954f12d4191ffb'
Cloning into 'components/bt/host/nimble/nimble'...
remote: Enumerating objects: 40897, done.
remote: Counting objects: 100% (454/454), done.
remote: Compressing objects: 100% (161/161), done.
remote: Total 40897 (delta 317), reused 407 (delta 288), pack-reused 40443
Receiving objects: 100% (40897/40897), 11.92 MiB | 2.50 MiB/s, done.
Resolving deltas: 100% (25045/25045), done.
Checking connectivity... done.
Submodule path 'components/bt/host/nimble/nimble': checked out 'aef55bbf636ed580d4d6408a5c2e75d1f70a875e'
Cloning into 'components/cbor/tinycbor'...
remote: Enumerating objects: 3024, done.
remote: Counting objects: 100% (225/225), done.
remote: Compressing objects: 100% (110/110), done.
remote: Total 3024 (delta 143), reused 177 (delta 115), pack-reused 2799
Receiving objects: 100% (3024/3024), 1.42 MiB | 2.13 MiB/s, done.
Resolving deltas: 100% (2038/2038), done.
Checking connectivity... done.
Submodule path 'components/cbor/tinycbor': checked out '085ca40781f7c39febe6d14fb7e5cba342e1804b'
Cloning into 'components/cmock/CMock'...
remote: Enumerating objects: 5724, done.
remote: Counting objects: 100% (113/113), done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 5724 (delta 54), reused 60 (delta 24), pack-reused 5611
Receiving objects: 100% (5724/5724), 3.60 MiB | 1.19 MiB/s, done.
Resolving deltas: 100% (3883/3883), done.
Checking connectivity... done.
Submodule path 'components/cmock/CMock': checked out 'eeecc49ce8af123cf8ad40efdb9673e37b56230f'
Submodule 'vendor/c_exception' (https://github.com/throwtheswitch/cexception.git) registered for path 'vendor/c_exception'
Submodule 'vendor/unity' (https://github.com/throwtheswitch/unity.git) registered for path 'vendor/unity'
Cloning into 'vendor/c_exception'...
remote: Enumerating objects: 326, done.
remote: Counting objects: 100% (61/61), done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 326 (delta 23), reused 34 (delta 9), pack-reused 265
Receiving objects: 100% (326/326), 547.04 KiB | 0 bytes/s, done.
Resolving deltas: 100% (150/150), done.
Checking connectivity... done.
Submodule path 'components/cmock/CMock/vendor/c_exception': checked out '71b47be7c950f1bf5f7e5303779fa99a16224bb6'
Cloning into 'vendor/unity'...
remote: Enumerating objects: 5869, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 5869 (delta 44), reused 68 (delta 32), pack-reused 5777
Receiving objects: 100% (5869/5869), 6.62 MiB | 3.48 MiB/s, done.
Resolving deltas: 100% (3628/3628), done.
Checking connectivity... done.
Submodule path 'components/cmock/CMock/vendor/unity': checked out 'cf949f45ca6d172a177b00da21310607b97bc7a7'
Cloning into 'components/coap/libcoap'...
remote: Enumerating objects: 12565, done.
remote: Counting objects: 100% (1636/1636), done.
remote: Compressing objects: 100% (582/582), done.
remote: Total 12565 (delta 1081), reused 1413 (delta 985), pack-reused 10929
Receiving objects: 100% (12565/12565), 5.75 MiB | 3.64 MiB/s, done.
Resolving deltas: 100% (8891/8891), done.
Checking connectivity... done.
Submodule path 'components/coap/libcoap': checked out '98954eb30a2e728e172a6cd29430ae5bc999b585'
Submodule 'ext/tinydtls' (https://github.com/eclipse/tinydtls.git) registered for path 'ext/tinydtls'
Cloning into 'ext/tinydtls'...
remote: Enumerating objects: 3404, done.
remote: Counting objects: 100% (833/833), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 3404 (delta 708), reused 696 (delta 679), pack-reused 2571
Receiving objects: 100% (3404/3404), 1010.93 KiB | 0 bytes/s, done.
Resolving deltas: 100% (2419/2419), done.
Checking connectivity... done.
Submodule path 'components/coap/libcoap/ext/tinydtls': checked out '7f8c86e501e690301630029fa9bae22424adf618'
Cloning into 'components/esp_wifi/lib'...
remote: Enumerating objects: 15771, done.
remote: Counting objects: 100% (3516/3516), done.
remote: Compressing objects: 100% (739/739), done.
remote: Total 15771 (delta 2854), reused 3437 (delta 2777), pack-reused 12255
Receiving objects: 100% (15771/15771), 181.21 MiB | 4.96 MiB/s, done.
Resolving deltas: 100% (12909/12909), done.
Checking connectivity... done.
Submodule path 'components/esp_wifi/lib': checked out 'e6945e61f7c63545a77b0575c3770a85b4de948e'
Cloning into 'components/esptool_py/esptool'...
remote: Enumerating objects: 3849, done.
remote: Counting objects: 100% (886/886), done.
remote: Compressing objects: 100% (541/541), done.
remote: Total 3849 (delta 550), reused 629 (delta 333), pack-reused 2963
Receiving objects: 100% (3849/3849), 11.04 MiB | 4.16 MiB/s, done.
Resolving deltas: 100% (2418/2418), done.
Checking connectivity... done.
Submodule path 'components/esptool_py/esptool': checked out '4698b396730b23fb4aab023c5fb1744db957fc4c'
Cloning into 'components/expat/expat'...
remote: Enumerating objects: 17557, done.
remote: Counting objects: 100% (911/911), done.
remote: Compressing objects: 100% (359/359), done.
remote: Total 17557 (delta 622), reused 774 (delta 545), pack-reused 16646
Receiving objects: 100% (17557/17557), 14.43 MiB | 3.89 MiB/s, done.
Resolving deltas: 100% (13065/13065), done.
Checking connectivity... done.
Submodule path 'components/expat/expat': checked out '968b8cc46dbee47b83318d5f31a8e7907199614b'
Cloning into 'components/json/cJSON'...
remote: Enumerating objects: 4516, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 4516 (delta 14), reused 12 (delta 3), pack-reused 4482
Receiving objects: 100% (4516/4516), 2.48 MiB | 2.67 MiB/s, done.
Resolving deltas: 100% (2998/2998), done.
Checking connectivity... done.
Submodule path 'components/json/cJSON': checked out 'd348621ca93571343a56862df7de4ff3bc9b5667'
Cloning into 'components/libsodium/libsodium'...
remote: Enumerating objects: 33124, done.
remote: Counting objects: 100% (732/732), done.
remote: Compressing objects: 100% (403/403), done.
remote: Total 33124 (delta 393), reused 589 (delta 314), pack-reused 32392
Receiving objects: 100% (33124/33124), 8.72 MiB | 2.93 MiB/s, done.
Resolving deltas: 100% (19649/19649), done.
Checking connectivity... done.
Submodule path 'components/libsodium/libsodium': checked out '4f5e89fa84ce1d178a6765b8b46f2b6f91216677'
Cloning into 'components/lwip/lwip'...
remote: Enumerating objects: 50156, done.
remote: Counting objects: 100% (190/190), done.
remote: Compressing objects: 100% (124/124), done.
remote: Total 50156 (delta 113), reused 118 (delta 64), pack-reused 49966
Receiving objects: 100% (50156/50156), 9.95 MiB | 3.81 MiB/s, done.
Resolving deltas: 100% (37854/37854), done.
Checking connectivity... done.
fatal: reference is not a tree: 02638065e72ea689eb0d3509b1960b31c515616e
Cloning into 'components/mbedtls/mbedtls'...
remote: Enumerating objects: 127088, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 127088 (delta 9), reused 18 (delta 8), pack-reused 127061
Receiving objects: 100% (127088/127088), 56.84 MiB | 4.25 MiB/s, done.
Resolving deltas: 100% (98443/98443), done.
Checking connectivity... done.
Submodule path 'components/mbedtls/mbedtls': checked out '6465247f67167518b8813ae2faaf422704e4b1a3'
Cloning into 'components/mqtt/esp-mqtt'...
remote: Enumerating objects: 2625, done.
remote: Counting objects: 100% (335/335), done.
remote: Compressing objects: 100% (186/186), done.
remote: Total 2625 (delta 188), reused 289 (delta 144), pack-reused 2290
Receiving objects: 100% (2625/2625), 1.54 MiB | 1.31 MiB/s, done.
Resolving deltas: 100% (1419/1419), done.
Checking connectivity... done.
Submodule path 'components/mqtt/esp-mqtt': checked out 'f10321a53b53a146ee299cfecc320b89c0cf6611'
Cloning into 'components/nghttp/nghttp2'...
remote: Enumerating objects: 43021, done.
remote: Counting objects: 100% (2294/2294), done.
remote: Compressing objects: 100% (697/697), done.
remote: Total 43021 (delta 1636), reused 2207 (delta 1583), pack-reused 40727
Receiving objects: 100% (43021/43021), 34.97 MiB | 4.96 MiB/s, done.
Resolving deltas: 100% (31977/31977), done.
Checking connectivity... done.
Submodule path 'components/nghttp/nghttp2': checked out '8f7b008b158e12de0e58247afd170f127dbb6456'
Submodule 'third-party/mruby' (https://github.com/mruby/mruby) registered for path 'third-party/mruby'
Submodule 'third-party/neverbleed' (https://github.com/tatsuhiro-t/neverbleed.git) registered for path 'third-party/neverbleed'
Cloning into 'third-party/mruby'...
remote: Enumerating objects: 66686, done.
remote: Counting objects: 100% (2236/2236), done.
remote: Compressing objects: 100% (895/895), done.
remote: Total 66686 (delta 1343), reused 2041 (delta 1234), pack-reused 64450
Receiving objects: 100% (66686/66686), 18.24 MiB | 3.62 MiB/s, done.
Resolving deltas: 100% (41743/41743), done.
Checking connectivity... done.
Submodule path 'components/nghttp/nghttp2/third-party/mruby': checked out '7c91efc1ffda769a5f1a872c646c82b00698f1b8'
Cloning into 'third-party/neverbleed'...
remote: Enumerating objects: 234, done.
remote: Total 234 (delta 0), reused 0 (delta 0), pack-reused 234
Receiving objects: 100% (234/234), 83.16 KiB | 0 bytes/s, done.
Resolving deltas: 100% (144/144), done.
Checking connectivity... done.
Submodule path 'components/nghttp/nghttp2/third-party/neverbleed': checked out 'b967ca054f48a36f82d8fcdd32e54ec5144f2751'
Cloning into 'components/protobuf-c/protobuf-c'...
remote: Enumerating objects: 3650, done.
remote: Counting objects: 100% (117/117), done.
remote: Compressing objects: 100% (81/81), done.
remote: Total 3650 (delta 59), reused 72 (delta 31), pack-reused 3533
Receiving objects: 100% (3650/3650), 1.50 MiB | 807.00 KiB/s, done.
Resolving deltas: 100% (2326/2326), done.
Checking connectivity... done.
Submodule path 'components/protobuf-c/protobuf-c': checked out 'dac1a65feac4ad72f612aab99f487056fbcf5c1a'
Cloning into 'components/spiffs/spiffs'...
remote: Enumerating objects: 1502, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 1502 (delta 7), reused 12 (delta 5), pack-reused 1483
Receiving objects: 100% (1502/1502), 1.06 MiB | 1.71 MiB/s, done.
Resolving deltas: 100% (1042/1042), done.
Checking connectivity... done.
Submodule path 'components/spiffs/spiffs': checked out 'f5e26c4e933189593a71c6b82cda381a7b21e41c'
Cloning into 'components/tinyusb/tinyusb'...
remote: Enumerating objects: 56755, done.
remote: Counting objects: 100% (261/261), done.
remote: Compressing objects: 100% (165/165), done.
remote: Total 56755 (delta 79), reused 210 (delta 62), pack-reused 56494
Receiving objects: 100% (56755/56755), 29.60 MiB | 4.63 MiB/s, done.
Resolving deltas: 100% (37390/37390), done.
Checking connectivity... done.
Submodule path 'components/tinyusb/tinyusb': checked out '334e95fac52a607150157ae5199a19e11f843982'
Cloning into 'components/unity/unity'...
remote: Enumerating objects: 5869, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 5869 (delta 44), reused 68 (delta 32), pack-reused 5777
Receiving objects: 100% (5869/5869), 6.62 MiB | 3.55 MiB/s, done.
Resolving deltas: 100% (3628/3628), done.
Checking connectivity... done.
Submodule path 'components/unity/unity': checked out '7d2bf62b7e6afaf38153041a9d53c21aeeca9a25'
Cloning into 'examples/build_system/cmake/import_lib/main/lib/tinyxml2'...
remote: Enumerating objects: 4460, done.
remote: Counting objects: 100% (307/307), done.
remote: Compressing objects: 100% (147/147), done.
remote: Total 4460 (delta 231), reused 192 (delta 160), pack-reused 4153
Receiving objects: 100% (4460/4460), 3.21 MiB | 1.99 MiB/s, done.
Resolving deltas: 100% (2963/2963), done.
Checking connectivity... done.
Submodule path 'examples/build_system/cmake/import_lib/main/lib/tinyxml2': checked out '7e8e249990ec491ec15990cf95b6d871a66cf64a'
Cloning into 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib'...
remote: Enumerating objects: 695, done.
remote: Counting objects: 100% (695/695), done.
remote: Compressing objects: 100% (347/347), done.
remote: Total 695 (delta 385), reused 641 (delta 332), pack-reused 0
Receiving objects: 100% (695/695), 1.02 MiB | 1.84 MiB/s, done.
Resolving deltas: 100% (385/385), done.
Checking connectivity... done.
Submodule path 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib': checked out 'bb672b0437485fc7420add178299631692b15ac3'
Unable to checkout '02638065e72ea689eb0d3509b1960b31c515616e' in submodule path 'components/lwip/lwip'
:~/toit_lwip-test/esp-idf (patch-head-4.3-3 *=)$ 

Should we close this is as 'working as intended' for now, @mikini?

I've been looking a bit into this as I think I see an inconsistency on the Toitware fork, that is somehow mitigated by more recent git clients.

The fork is actually referencing a commit for the submodule which is part of another repository than the repository indicated by .gitmodules (Toitware vs Espressif). Whether this can lead to other problems than the one I experienced using an old git client is hard for me to predict, but to me a non-ambiguous description of the repositories' relationship is preferable.

I'll try to substantiate this with some facts, everything done on command line is on Ubuntu 20.04/git 2.25.1.

components/lwip/lwip submodule is cloned from espressif:

:~/toit_new/esp-idf (patch-head-4.3-3)$ grep lwip -A2 .gitmodules 
[submodule "components/lwip/lwip"]
	path = components/lwip/lwip
	url = ../../espressif/esp-lwip.git

[submodule "components/mqtt/esp-mqtt"]
:~/toit_new/esp-idf (patch-head-4.3-3)$ 

However, the submodule reference points to commit 02638065e72ea689eb0d3509b1960b31c515616e which is not included on any branches of the espressif repository, but which has somehow been checked out as a detached HEAD by new git clients anyhow:

:~/toit_new/esp-idf (patch-head-4.3-3)$ git log -1 -p components/lwip/lwip/
commit 34edcb4ad64e21818e0d2ed482a30cb6782de9b2
Author: Erik Corry <erik@toitware.com>
Date:   Mon Nov 15 14:15:15 2021 +0100

    Roll to LWIP with unix contrib dir (#43)

diff --git a/components/lwip/lwip b/components/lwip/lwip
index c1195e00a..02638065e 160000
--- a/components/lwip/lwip
+++ b/components/lwip/lwip
@@ -1 +1 @@
-Subproject commit c1195e00a4edfa03e92eb24adb675154747f6db5
+Subproject commit 02638065e72ea689eb0d3509b1960b31c515616e
:~/toit_new/esp-idf (patch-head-4.3-3)$ 

:~/toit_new/esp-idf (patch-head-4.3-3)$ 
 git -C components/lwip/lwip/ branch --contains 02638065e72ea689eb0d3509b1960b31c515616e
* (HEAD detached at 02638065)
:~/toit_new/esp-idf (patch-head-4.3-3)$ 

Trying to reference this commit on a plain clone of esp-lwip will fail, but on the web interface github will show the commit but warn that it is contained on a fork:

:~$ git clone git@github.com:espressif/esp-lwip
Cloning into 'esp-lwip'...
remote: Enumerating objects: 50156, done.
remote: Counting objects: 100% (190/190), done.
remote: Compressing objects: 100% (124/124), done.
remote: Total 50156 (delta 113), reused 118 (delta 64), pack-reused 49966
Receiving objects: 100% (50156/50156), 9.95 MiB | 4.28 MiB/s, done.
Resolving deltas: 100% (37854/37854), done.
:~$ cd esp-lwip/
:~/esp-lwip (2.1.2-esp)$ git show 02638065e72ea689eb0d3509b1960b31c515616e
fatal: bad object 02638065e72ea689eb0d3509b1960b31c515616e
:~/esp-lwip (2.1.2-esp)$

It seems that somehow the checkout of an unknown commit reference from a submodule reference will/can result in a search or traversal of forks and fetching of objects from that fork. Maybe that is why duplicated "Cloning into 'components/lwip/lwip'..." is seen when done on older git (but somehow still doesn't fetch the correct objects)?

Looking at what happens during recursive submodule update and init on git 2.25.1 actually shows a subtle extra fetch being done during checkout on components/lwip/lwip (for reference complete dump below):

...
Submodule path 'components/json/cJSON': checked out 'd348621ca93571343a56862df7de4ff3bc9b5667'
Submodule path 'components/libsodium/libsodium': checked out '4f5e89fa84ce1d178a6765b8b46f2b6f91216677'
remote: Enumerating objects: 62, done.
remote: Counting objects: 100% (62/62), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 62 (delta 22), reused 60 (delta 22), pack-reused 0
Unpacking objects: 100% (62/62), 54.42 KiB | 995.00 KiB/s, done.
From https://github.com/espressif/esp-lwip
 * branch              02638065e72ea689eb0d3509b1960b31c515616e -> FETCH_HEAD
Submodule path 'components/lwip/lwip': checked out '02638065e72ea689eb0d3509b1960b31c515616e'
Submodule path 'components/mbedtls/mbedtls': checked out '6465247f67167518b8813ae2faaf422704e4b1a3'
...

Complete esp-idf checkout

:~$ git clone https://github.com/toitware/esp-idf 
Cloning into 'esp-idf'...
remote: Enumerating objects: 201220, done.
remote: Total 201220 (delta 0), reused 0 (delta 0), pack-reused 201220
Receiving objects: 100% (201220/201220), 124.99 MiB | 7.24 MiB/s, done.
Resolving deltas: 100% (148840/148840), done.
:~$ cd esp-idf/
:~/esp-idf (master)$ git co patch-head-4.3-3
Branch 'patch-head-4.3-3' set up to track remote branch 'patch-head-4.3-3' from 'origin'.
Switched to a new branch 'patch-head-4.3-3'
:~/esp-idf (patch-head-4.3-3)$ git submodule update --init --recursive
Submodule 'components/asio/asio' (https://github.com/espressif/asio.git) registered for path 'components/asio/asio'
Submodule 'components/bootloader/subproject/components/micro-ecc/micro-ecc' (https://github.com/kmackay/micro-ecc.git) registered for path 'components/bootloader/subproject/components/micro-ecc/micro-ecc'
Submodule 'components/bt/controller/lib_esp32' (https://github.com/espressif/esp32-bt-lib.git) registered for path 'components/bt/controller/lib_esp32'
Submodule 'components/bt/controller/lib_esp32c3_family' (https://github.com/espressif/esp32c3-bt-lib.git) registered for path 'components/bt/controller/lib_esp32c3_family'
Submodule 'components/bt/host/nimble/nimble' (https://github.com/espressif/esp-nimble.git) registered for path 'components/bt/host/nimble/nimble'
Submodule 'components/cbor/tinycbor' (https://github.com/intel/tinycbor.git) registered for path 'components/cbor/tinycbor'
Submodule 'components/cmock/CMock' (https://github.com/ThrowTheSwitch/CMock.git) registered for path 'components/cmock/CMock'
Submodule 'components/coap/libcoap' (https://github.com/obgm/libcoap.git) registered for path 'components/coap/libcoap'
Submodule 'components/esp_wifi/lib' (https://github.com/espressif/esp32-wifi-lib.git) registered for path 'components/esp_wifi/lib'
Submodule 'components/esptool_py/esptool' (https://github.com/espressif/esptool.git) registered for path 'components/esptool_py/esptool'
Submodule 'components/expat/expat' (https://github.com/libexpat/libexpat.git) registered for path 'components/expat/expat'
Submodule 'components/json/cJSON' (https://github.com/DaveGamble/cJSON.git) registered for path 'components/json/cJSON'
Submodule 'components/libsodium/libsodium' (https://github.com/jedisct1/libsodium.git) registered for path 'components/libsodium/libsodium'
Submodule 'components/lwip/lwip' (https://github.com/espressif/esp-lwip.git) registered for path 'components/lwip/lwip'
Submodule 'components/mbedtls/mbedtls' (https://github.com/espressif/mbedtls.git) registered for path 'components/mbedtls/mbedtls'
Submodule 'components/mqtt/esp-mqtt' (https://github.com/espressif/esp-mqtt.git) registered for path 'components/mqtt/esp-mqtt'
Submodule 'components/nghttp/nghttp2' (https://github.com/nghttp2/nghttp2.git) registered for path 'components/nghttp/nghttp2'
Submodule 'components/protobuf-c/protobuf-c' (https://github.com/protobuf-c/protobuf-c.git) registered for path 'components/protobuf-c/protobuf-c'
Submodule 'components/spiffs/spiffs' (https://github.com/pellepl/spiffs.git) registered for path 'components/spiffs/spiffs'
Submodule 'components/tinyusb/tinyusb' (https://github.com/espressif/tinyusb.git) registered for path 'components/tinyusb/tinyusb'
Submodule 'components/unity/unity' (https://github.com/ThrowTheSwitch/Unity.git) registered for path 'components/unity/unity'
Submodule 'examples/build_system/cmake/import_lib/main/lib/tinyxml2' (https://github.com/leethomason/tinyxml2.git) registered for path 'examples/build_system/cmake/import_lib/main/lib/tinyxml2'
Submodule 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib' (https://github.com/espressif/esp-cryptoauthlib.git) registered for path 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib'
Cloning into '/home/miki/esp-idf/components/asio/asio'...
Cloning into '/home/miki/esp-idf/components/bootloader/subproject/components/micro-ecc/micro-ecc'...
Cloning into '/home/miki/esp-idf/components/bt/controller/lib_esp32'...
Cloning into '/home/miki/esp-idf/components/bt/controller/lib_esp32c3_family'...
Cloning into '/home/miki/esp-idf/components/bt/host/nimble/nimble'...
Cloning into '/home/miki/esp-idf/components/cbor/tinycbor'...
Cloning into '/home/miki/esp-idf/components/cmock/CMock'...
Cloning into '/home/miki/esp-idf/components/coap/libcoap'...
Cloning into '/home/miki/esp-idf/components/esp_wifi/lib'...
Cloning into '/home/miki/esp-idf/components/esptool_py/esptool'...
Cloning into '/home/miki/esp-idf/components/expat/expat'...
Cloning into '/home/miki/esp-idf/components/json/cJSON'...
Cloning into '/home/miki/esp-idf/components/libsodium/libsodium'...
Cloning into '/home/miki/esp-idf/components/lwip/lwip'...
Cloning into '/home/miki/esp-idf/components/mbedtls/mbedtls'...
Cloning into '/home/miki/esp-idf/components/mqtt/esp-mqtt'...
Cloning into '/home/miki/esp-idf/components/nghttp/nghttp2'...
Cloning into '/home/miki/esp-idf/components/protobuf-c/protobuf-c'...
Cloning into '/home/miki/esp-idf/components/spiffs/spiffs'...
Cloning into '/home/miki/esp-idf/components/tinyusb/tinyusb'...
Cloning into '/home/miki/esp-idf/components/unity/unity'...
Cloning into '/home/miki/esp-idf/examples/build_system/cmake/import_lib/main/lib/tinyxml2'...
Cloning into '/home/miki/esp-idf/examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib'...
Submodule path 'components/asio/asio': checked out 'f31694c9f1746ba189a4bcae2e34db15135ddb22'
Submodule path 'components/bootloader/subproject/components/micro-ecc/micro-ecc': checked out 'd037ec89546fad14b5c4d5456c2e23a71e554966'
Submodule path 'components/bt/controller/lib_esp32': checked out 'fb49791b7c1a8a35f06e68124c90022667b4cff1'
Submodule path 'components/bt/controller/lib_esp32c3_family': checked out '12f00c45ce9c8cf9a9b2e607b4954f12d4191ffb'
Submodule path 'components/bt/host/nimble/nimble': checked out 'aef55bbf636ed580d4d6408a5c2e75d1f70a875e'
Submodule path 'components/cbor/tinycbor': checked out '085ca40781f7c39febe6d14fb7e5cba342e1804b'
Submodule path 'components/cmock/CMock': checked out 'eeecc49ce8af123cf8ad40efdb9673e37b56230f'
Submodule 'vendor/c_exception' (https://github.com/throwtheswitch/cexception.git) registered for path 'components/cmock/CMock/vendor/c_exception'
Submodule 'vendor/unity' (https://github.com/throwtheswitch/unity.git) registered for path 'components/cmock/CMock/vendor/unity'
Cloning into '/home/miki/esp-idf/components/cmock/CMock/vendor/c_exception'...
Cloning into '/home/miki/esp-idf/components/cmock/CMock/vendor/unity'...
Submodule path 'components/cmock/CMock/vendor/c_exception': checked out '71b47be7c950f1bf5f7e5303779fa99a16224bb6'
Submodule path 'components/cmock/CMock/vendor/unity': checked out 'cf949f45ca6d172a177b00da21310607b97bc7a7'
Submodule path 'components/coap/libcoap': checked out '98954eb30a2e728e172a6cd29430ae5bc999b585'
Submodule 'ext/tinydtls' (https://github.com/eclipse/tinydtls.git) registered for path 'components/coap/libcoap/ext/tinydtls'
Cloning into '/home/miki/esp-idf/components/coap/libcoap/ext/tinydtls'...
Submodule path 'components/coap/libcoap/ext/tinydtls': checked out '7f8c86e501e690301630029fa9bae22424adf618'
Submodule path 'components/esp_wifi/lib': checked out 'e6945e61f7c63545a77b0575c3770a85b4de948e'
Submodule path 'components/esptool_py/esptool': checked out '4698b396730b23fb4aab023c5fb1744db957fc4c'
Submodule path 'components/expat/expat': checked out '968b8cc46dbee47b83318d5f31a8e7907199614b'
Submodule path 'components/json/cJSON': checked out 'd348621ca93571343a56862df7de4ff3bc9b5667'
Submodule path 'components/libsodium/libsodium': checked out '4f5e89fa84ce1d178a6765b8b46f2b6f91216677'
remote: Enumerating objects: 62, done.
remote: Counting objects: 100% (62/62), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 62 (delta 22), reused 60 (delta 22), pack-reused 0
Unpacking objects: 100% (62/62), 54.42 KiB | 995.00 KiB/s, done.
From https://github.com/espressif/esp-lwip
 * branch              02638065e72ea689eb0d3509b1960b31c515616e -> FETCH_HEAD
Submodule path 'components/lwip/lwip': checked out '02638065e72ea689eb0d3509b1960b31c515616e'
Submodule path 'components/mbedtls/mbedtls': checked out '6465247f67167518b8813ae2faaf422704e4b1a3'
Submodule path 'components/mqtt/esp-mqtt': checked out 'f10321a53b53a146ee299cfecc320b89c0cf6611'
Submodule path 'components/nghttp/nghttp2': checked out '8f7b008b158e12de0e58247afd170f127dbb6456'
Submodule 'third-party/mruby' (https://github.com/mruby/mruby) registered for path 'components/nghttp/nghttp2/third-party/mruby'
Submodule 'third-party/neverbleed' (https://github.com/tatsuhiro-t/neverbleed.git) registered for path 'components/nghttp/nghttp2/third-party/neverbleed'
Cloning into '/home/miki/esp-idf/components/nghttp/nghttp2/third-party/mruby'...
Cloning into '/home/miki/esp-idf/components/nghttp/nghttp2/third-party/neverbleed'...
Submodule path 'components/nghttp/nghttp2/third-party/mruby': checked out '7c91efc1ffda769a5f1a872c646c82b00698f1b8'
Submodule path 'components/nghttp/nghttp2/third-party/neverbleed': checked out 'b967ca054f48a36f82d8fcdd32e54ec5144f2751'
Submodule path 'components/protobuf-c/protobuf-c': checked out 'dac1a65feac4ad72f612aab99f487056fbcf5c1a'
Submodule path 'components/spiffs/spiffs': checked out 'f5e26c4e933189593a71c6b82cda381a7b21e41c'
Submodule path 'components/tinyusb/tinyusb': checked out '334e95fac52a607150157ae5199a19e11f843982'
Submodule path 'components/unity/unity': checked out '7d2bf62b7e6afaf38153041a9d53c21aeeca9a25'
Submodule path 'examples/build_system/cmake/import_lib/main/lib/tinyxml2': checked out '7e8e249990ec491ec15990cf95b6d871a66cf64a'
Submodule path 'examples/peripherals/secure_element/atecc608_ecdsa/components/esp-cryptoauthlib': checked out 'bb672b0437485fc7420add178299631692b15ac3'
:~/esp-idf (patch-head-4.3-3)$ 

We believe this has been fixed as part of upgrading to ESP-IDF v4.4.