Compare commits

...

3 Commits

Author SHA1 Message Date
93201fbfb7 Merge pull request 'fix(ci): use vendored libsodium build instead of pkg-config' (#103) from fix/libsodium-ci-all-platforms into beta
Some checks failed
Release Beta / autotag (push) Successful in 9s
Release Beta / changelog (push) Successful in 1m28s
Test / frontend-tests (push) Successful in 1m49s
Test / frontend-typecheck (push) Successful in 1m55s
Release Beta / build-macos-arm64 (push) Successful in 4m11s
Release Beta / build-linux-amd64 (push) Failing after 4m14s
Release Beta / build-windows-amd64 (push) Failing after 5m11s
Release Beta / build-linux-arm64 (push) Failing after 5m21s
Test / rust-fmt-check (push) Successful in 15m28s
Test / rust-clippy (push) Successful in 17m26s
Test / rust-tests (push) Successful in 19m45s
Reviewed-on: #103
2026-06-14 10:43:06 +00:00
Shaun Arman
149f170435 docs: clarify two-phase fix approach in summary
Some checks failed
Test / frontend-tests (pull_request) Successful in 1m46s
Test / frontend-typecheck (pull_request) Successful in 1m55s
PR Review Automation / review (pull_request) Successful in 3m42s
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
The automated reviewer was confused by comments like 'Changed from' in
the Windows section, which implied this commit changed Windows config.

Clarified that:
- Phase 1 (commit 7316339a): Fixed Windows, attempted Linux with pkg-config
- Phase 2 (commit 44ba1bd4): Revised Linux to use vendored builds
- Windows config was fixed in Phase 1 and unchanged in Phase 2

This should resolve the automated reviewer's concern about Windows
configuration appearing incomplete.
2026-06-14 05:34:47 -05:00
Shaun Arman
44ba1bd4e7 fix(ci): use vendored libsodium build instead of pkg-config
All checks were successful
Test / frontend-tests (pull_request) Successful in 1m45s
Test / frontend-typecheck (pull_request) Successful in 1m52s
PR Review Automation / review (pull_request) Successful in 3m54s
Test / rust-fmt-check (pull_request) Successful in 12m41s
Test / rust-clippy (pull_request) Successful in 14m10s
Test / rust-tests (pull_request) Successful in 16m1s
## Problem
Previous approach with SODIUM_USE_PKG_CONFIG=1 still failed:
"libsodium not found via pkg-config or vcpkg"

pkg-config couldn't locate libsodium.pc in CI containers despite
libsodium-dev being installed.

## Solution
Use vendored build approach: Remove all SODIUM_* environment variables
and let libsodium-sys-stable build from source automatically.

## Changes
- **release-beta.yml**: Removed SODIUM_USE_PKG_CONFIG from linux-amd64 and linux-arm64
- **auto-tag.yml**: Removed SODIUM_USE_PKG_CONFIG from linux-amd64 and linux-arm64
- **Windows**: Kept SODIUM_LIB_DIR approach (uses pre-built from Dockerfile)

## Why This Works
libsodium-sys-stable build priority:
1. SODIUM_LIB_DIR (if set) → use pre-built
2. SODIUM_USE_PKG_CONFIG (if set) → use pkg-config
3. Neither set → build from source (vendored) 

Vendored builds are more reliable in CI as they don't depend on
system package installation or pkg-config configuration.

## Validation
 Local clean build with vendored libsodium: passed
 CI validation: pending

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-14 04:48:51 -05:00
3 changed files with 30 additions and 22 deletions

View File

@ -344,7 +344,6 @@ jobs:
- name: Build
env:
APPIMAGE_EXTRACT_AND_RUN: "1"
SODIUM_USE_PKG_CONFIG: "1"
run: |
npm ci --legacy-peer-deps
CI=true npx tauri build --target x86_64-unknown-linux-gnu
@ -633,7 +632,6 @@ jobs:
PKG_CONFIG_SYSROOT_DIR: /usr/aarch64-linux-gnu
PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig:/usr/aarch64-linux-gnu/lib/pkgconfig
PKG_CONFIG_ALLOW_CROSS: "1"
SODIUM_USE_PKG_CONFIG: "1"
OPENSSL_NO_VENDOR: "0"
OPENSSL_STATIC: "1"
APPIMAGE_EXTRACT_AND_RUN: "1"

View File

@ -224,7 +224,6 @@ jobs:
- name: Build
env:
APPIMAGE_EXTRACT_AND_RUN: "1"
SODIUM_USE_PKG_CONFIG: "1"
run: |
npm ci --legacy-peer-deps
CI=true npx tauri build --target x86_64-unknown-linux-gnu
@ -492,7 +491,6 @@ jobs:
PKG_CONFIG_SYSROOT_DIR: /usr/aarch64-linux-gnu
PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig:/usr/aarch64-linux-gnu/lib/pkgconfig
PKG_CONFIG_ALLOW_CROSS: "1"
SODIUM_USE_PKG_CONFIG: "1"
OPENSSL_NO_VENDOR: "0"
OPENSSL_STATIC: "1"
APPIMAGE_EXTRACT_AND_RUN: "1"

View File

@ -42,16 +42,32 @@ The `libsodium-sys-stable` crate (dependency chain: `tauri-plugin-stronghold`
## Solution
### Two-Phase Fix
This fix was implemented in two commits:
**Phase 1 (Commit `7316339a`):** Fixed Windows configuration and attempted Linux fixes with `SODIUM_USE_PKG_CONFIG=1`
- Windows: Changed `SODIUM_LIB_DIR` from `""` to `/usr/x86_64-w64-mingw32/lib`
- Linux: Added `SODIUM_USE_PKG_CONFIG=1` ❌ (still failed)
**Phase 2 (Commit `44ba1bd4`):** Revised Linux approach to use vendored builds
- Linux: Removed `SODIUM_USE_PKG_CONFIG` to trigger vendored build from source ✅
- Windows: No changes (already correct from Phase 1)
### Revised Approach: Use Vendored libsodium Build
After initial attempt with `SODIUM_USE_PKG_CONFIG=1` still failed (pkg-config couldn't find libsodium.pc in CI containers), switched to the **vendored build** approach: remove all SODIUM_* environment variables and let libsodium-sys-stable build from source.
### Changes to `.gitea/workflows/release-beta.yml`
#### 1. Linux amd64 Build
```yaml
env:
APPIMAGE_EXTRACT_AND_RUN: "1"
SODIUM_USE_PKG_CONFIG: "1" # Added
# Removed SODIUM_USE_PKG_CONFIG - let it build from source
```
**Why:** Forces libsodium-sys to use pkg-config, which finds `libsodium-dev` package installed in the Docker image.
**Why:** Vendored build is more reliable in CI. libsodium-sys-stable will download and compile libsodium from source automatically.
#### 2. Windows amd64 Build
```yaml
@ -62,15 +78,15 @@ env:
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER: x86_64-w64-mingw32-gcc
OPENSSL_NO_VENDOR: "0"
OPENSSL_STATIC: "1"
SODIUM_LIB_DIR: /usr/x86_64-w64-mingw32/lib # Changed from ""
SODIUM_STATIC: "1" # Changed from "yes"
SODIUM_USE_PKG_CONFIG: "no" # Added (explicit disable)
SODIUM_LIB_DIR: /usr/x86_64-w64-mingw32/lib
SODIUM_STATIC: "1"
SODIUM_USE_PKG_CONFIG: "no"
```
**Why:**
- Points `SODIUM_LIB_DIR` to the actual pre-built libsodium location (installed by Dockerfile.windows-cross)
- Explicitly disables pkg-config to prevent conflict
- Standardizes `SODIUM_STATIC` to "1" (matches auto-tag.yml)
- Uses pre-built libsodium from Dockerfile.windows-cross (installed to `/usr/x86_64-w64-mingw32/lib`)
- Explicitly disables pkg-config to prevent conflict with SODIUM_LIB_DIR
- **Note:** This configuration was fixed in commit `7316339a` and remains unchanged in current commit
#### 3. Linux arm64 Build
```yaml
@ -80,26 +96,22 @@ env:
AR_aarch64_unknown_linux_gnu: aarch64-linux-gnu-ar
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
PKG_CONFIG_SYSROOT_DIR: /usr/aarch64-linux-gnu
PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig:/usr/aarch64-linux-gnu/lib/pkgconfig # Extended
PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig:/usr/aarch64-linux-gnu/lib/pkgconfig
PKG_CONFIG_ALLOW_CROSS: "1"
SODIUM_USE_PKG_CONFIG: "1" # Added
# Removed SODIUM_USE_PKG_CONFIG - let it build from source
OPENSSL_NO_VENDOR: "0"
OPENSSL_STATIC: "1"
APPIMAGE_EXTRACT_AND_RUN: "1"
```
**Why:**
- Added `SODIUM_USE_PKG_CONFIG=1` to force pkg-config detection
- Extended PKG_CONFIG_PATH to include `/usr/aarch64-linux-gnu/lib/pkgconfig` where arm64 libsodium.pc is located
- Vendored build approach for consistency with linux-amd64
- Cross-compilation toolchain env vars still needed for the C compiler
### Changes to `.gitea/workflows/auto-tag.yml`
#### Linux arm64 Build Only
```yaml
PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig:/usr/aarch64-linux-gnu/lib/pkgconfig
```
**Why:** Same PKG_CONFIG_PATH extension as release-beta.yml for consistency.
#### Linux amd64 & arm64 Builds
Removed `SODIUM_USE_PKG_CONFIG=1` from both builds to match release-beta.yml vendored approach.
## Technical Details