-
Notifications
You must be signed in to change notification settings - Fork 77
Description
Problem
The c-v0.0.1 implementation Docker build fails with the following error:
CMake Error at CMakeLists.txt:99 (message):
LIBP2P_VENDOR_PICOQUIC is ON, but the picoquic submodule is missing. Run
`git submodule update --init --recursive`.
Root Cause
The build process in transport/scripts/build-images.sh downloads GitHub repositories as zip archives when source.type: github. However, GitHub zip archives do not include git submodules, and the c-libp2p repository requires the picoquic submodule for the build to succeed.
The impls.yaml already has a requiresSubmodules: true flag for c-v0.0.1, but the build script doesn't handle this flag.
Solution
The build script should detect when requiresSubmodules: true is set and use git clone instead of downloading a zip archive. The fix should:
- Check for
requiresSubmodules: trueflag in the implementation configuration - Use
git cloneinstead of zip download when submodules are required - Checkout the specific commit
- Run
git submodule update --init --recursiveto initialize submodules - Cache the cloned repository for future builds
Steps to Reproduce
cd transport
./run_tests.sh --cache-dir ~/.cache/test-plans --test-select 'c-v0.0.1' --test-ignore '!c-v0.0.1' --force-image-rebuild --yesExpected Behavior
The Docker image should build successfully with all required submodules initialized.
Actual Behavior
The build fails during CMake configuration because the picoquic submodule is missing.