- Add LIBSODIUM_PKG_CONFIG_FIX.md specific to PR #102 changes - Update LIBSODIUM_BUILD_FIX.md to indicate it covers both PR #101 and #102 - Label each section with which PR introduced the change Addresses automated review feedback about documentation not matching changed files list (reviewer only saw PR #102 files, but doc covered both PRs). Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
3.5 KiB
libsodium pkg-config Detection Fix
Description
This PR fixes libsodium build failures that persisted after adding libsodium-dev packages to Docker images (PR #101). The issue was that libsodium-sys-stable's build script wasn't being explicitly told how to find libsodium.
Remaining build failures after PR #101:
- Linux amd64/arm64:
libsodium not found via pkg-config or vcpkg(despitelibsodium-dev+pkg-configbeing installed) - Windows cross-build:
SODIUM_LIB_DIR is incompatible with SODIUM_USE_PKG_CONFIG(conflicting detection methods)
Root Cause
The libsodium-sys-stable crate's build.rs checks environment variables in this precedence:
- If
SODIUM_LIB_DIRis set → use explicit path (incompatible withSODIUM_USE_PKG_CONFIGmode) - If
SODIUM_USE_PKG_CONFIG≠ "no" → try pkg-config detection - Fall back to vcpkg or fail with error
What went wrong:
- Linux: Had the packages installed but wasn't explicitly told to use pkg-config → fell through to vcpkg → failed
- Windows: Set
SODIUM_LIB_DIR(from previous PR) but also had pkg-config available → conflicting modes → build script error
Changes in This PR
.gitea/workflows/auto-tag.yml
Linux amd64 build (line ~347)
env:
SODIUM_USE_PKG_CONFIG: "1" # NEW: Force pkg-config detection
Why: Ensures libsodium-sys-stable uses the installed libsodium-dev package via pkg-config.
Linux arm64 build (line ~633)
env:
SODIUM_USE_PKG_CONFIG: "1" # NEW: Force pkg-config for cross-compile
Why: Same as amd64 - force pkg-config to find the arm64 libsodium package.
Windows cross-compile build (line ~448)
env:
SODIUM_LIB_DIR: /usr/x86_64-w64-mingw32/lib # Already present from PR #101
SODIUM_STATIC: "1" # Already present from PR #101
SODIUM_USE_PKG_CONFIG: "no" # NEW: Disable pkg-config
Why: Prevents conflict between explicit path mode (SODIUM_LIB_DIR) and pkg-config detection. Windows uses pre-built libsodium from Dockerfile, not system packages.
LIBSODIUM_BUILD_FIX.md
Updated documentation section 2 (CI/CD Pipeline Fix) to explain:
- Platform-specific environment variable strategy
- Build script precedence order
- Rationale for each approach
Strategy Summary
| Platform | Method | Env Vars | Reason |
|---|---|---|---|
| Linux amd64 | pkg-config | SODIUM_USE_PKG_CONFIG=1 |
Has libsodium-dev + pkg-config installed |
| Linux arm64 | pkg-config | SODIUM_USE_PKG_CONFIG=1 |
Has libsodium-dev:arm64 + pkg-config |
| Windows | explicit path | SODIUM_LIB_DIR=... + SODIUM_USE_PKG_CONFIG=no |
Pre-built lib in known location, disable pkg-config |
Testing
This PR only modifies CI workflow environment variables. Testing occurs via CI pipeline:
- Linux amd64 build succeeds with pkg-config detection
- Linux arm64 build succeeds with cross-compile pkg-config
- Windows build succeeds with explicit lib path (no pkg-config conflict)
- All platforms produce valid
.deb,.rpm,.exe,.msiartifacts
Relationship to PR #101
PR #101 (already merged):
- Added
libsodium-devto Linux Docker images - Added
SODIUM_LIB_DIR+SODIUM_STATICto Windows workflow - Added smoke test in
src-tauri/src/state.rs
This PR (new):
- Adds
SODIUM_USE_PKG_CONFIGenv vars to tell build script how to find libsodium - Fixes detection failures that persisted after package installation
Both PRs together form the complete fix.