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: true flag in the implementation configuration
- Use
git clone instead of zip download when submodules are required
- Checkout the specific commit
- Run
git submodule update --init --recursive to 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 --yes
Expected 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.
Problem
The
c-v0.0.1implementation Docker build fails with the following error:Root Cause
The build process in
transport/scripts/build-images.shdownloads GitHub repositories as zip archives whensource.type: github. However, GitHub zip archives do not include git submodules, and the c-libp2p repository requires thepicoquicsubmodule for the build to succeed.The
impls.yamlalready has arequiresSubmodules: trueflag for c-v0.0.1, but the build script doesn't handle this flag.Solution
The build script should detect when
requiresSubmodules: trueis set and usegit cloneinstead of downloading a zip archive. The fix should:requiresSubmodules: trueflag in the implementation configurationgit cloneinstead of zip download when submodules are requiredgit submodule update --init --recursiveto initialize submodulesSteps to Reproduce
Expected 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.