115 lines
3.8 KiB
Markdown
115 lines
3.8 KiB
Markdown
# Conan Dependency Upgrade Implementation Plan
|
|
|
|
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
|
|
**Goal:** Upgrade `lsp-server` Conan dependencies to the latest versions available on ConanCenter and adapt the project until it builds and passes targeted verification.
|
|
|
|
**Architecture:** Treat ConanCenter as the version authority for this task. Update only the versions that have newer published recipes, regenerate the build with the existing profiles, and make the smallest necessary source/build changes to restore compatibility. Keep unchanged packages pinned when ConanCenter has no newer recipe.
|
|
|
|
**Tech Stack:** Conan 2, CMake 4.2, Ninja, Clang toolchain, C++23 Modules
|
|
|
|
---
|
|
|
|
## Plan Meta
|
|
|
|
- **Plan Group:** deps-upgrade
|
|
- **Parent Plan:** none
|
|
- **Verification Scope:** local
|
|
- **Verification Gate:** must-pass
|
|
|
|
### Task 1: Update Conan dependency declarations
|
|
|
|
**Files:**
|
|
|
|
- Modify: `lsp-server/conanfile.txt`
|
|
|
|
- [x] Confirm the latest ConanCenter recipes:
|
|
`glaze/7.4.0`, `spdlog/1.17.0`, `fmt/12.1.0`,
|
|
`taskflow/4.0.0`, `tree-sitter/0.25.9`
|
|
- [x] Update `lsp-server/conanfile.txt`:
|
|
`glaze/7.0.2 -> glaze/7.4.0`
|
|
`taskflow/3.10.0 -> taskflow/4.0.0`
|
|
- [x] Leave `spdlog/1.17.0`, `fmt/12.1.0`, and `tree-sitter/0.25.9`
|
|
unchanged because ConanCenter does not expose newer recipes
|
|
|
|
### Task 2: Regenerate dependencies and capture compatibility failures
|
|
|
|
**Files:**
|
|
|
|
- Modify: `lsp-server/build/clang-linux/Release/**` (generated)
|
|
- Inspect: `lsp-server/src/**`
|
|
- Inspect: `lsp-server/test/**`
|
|
|
|
- [x] Run Conan install with the existing Linux Clang profile:
|
|
|
|
```bash
|
|
CONAN_HOME=/tmp/conan-home conan install lsp-server \
|
|
-pr:h=lsp-server/conan/profiles/linux-x86_64-clang \
|
|
-pr:b=lsp-server/conan/profiles/linux-x86_64-clang \
|
|
-of lsp-server/build/clang-linux/Release \
|
|
--build=missing
|
|
```
|
|
|
|
- [x] Reconfigure the existing build directory:
|
|
|
|
```bash
|
|
cmake -S lsp-server -B lsp-server/build/clang-linux/Release -G Ninja \
|
|
-DCMAKE_TOOLCHAIN_FILE=$PWD/lsp-server/build/clang-linux/Release/generators/conan_toolchain.cmake \
|
|
-DBUILD_TESTS=ON
|
|
```
|
|
|
|
- [x] Build to identify required source-level adaptations:
|
|
|
|
```bash
|
|
cmake --build lsp-server/build/clang-linux/Release
|
|
```
|
|
|
|
### Task 3: Adapt code only where the upgraded APIs require it
|
|
|
|
**Files:**
|
|
|
|
- Modify: exact files reported by the build, likely under
|
|
`lsp-server/src/bridge/`, `lsp-server/src/codec/`,
|
|
`lsp-server/src/core/`, or related test targets
|
|
|
|
- [x] For `glaze` breakages, update serialization/meta/JSON-RPC call sites
|
|
to the current `glaze/7.4.0` API with the smallest possible diff
|
|
- [x] For `taskflow` breakages, update executor/task API usage to the
|
|
`taskflow/4.0.0` API with the smallest possible diff
|
|
- [x] Rebuild after each focused fix until the full build succeeds:
|
|
|
|
```bash
|
|
cmake --build lsp-server/build/clang-linux/Release
|
|
```
|
|
|
|
### Task 4: Run targeted verification and summarize the upgrade result
|
|
|
|
**Files:**
|
|
|
|
- Verify: `lsp-server/conanfile.txt`
|
|
- Verify: any source files touched in Task 3
|
|
|
|
- [x] Run dependency-focused tests:
|
|
|
|
```bash
|
|
ctest --test-dir lsp-server/build/clang-linux/Release \
|
|
-R 'test_ast|test_provider|test_semantic|test_symbol|test_scheduler' \
|
|
--output-on-failure
|
|
```
|
|
|
|
- [x] Run whitespace / patch hygiene check:
|
|
|
|
```bash
|
|
git -c core.trustctime=false -c core.checkStat=minimal diff --check
|
|
```
|
|
|
|
- [x] Report three facts in the final handoff:
|
|
upgraded versions, any compatibility edits made, and the exact
|
|
verification commands that passed
|
|
|
|
Known residual verification:
|
|
|
|
- `test_ast_script`, `test_symbol_script`, and `test_semantic_script` still fail on existing
|
|
TSF fixture parse/load errors under `lsp-server/test/test_tree_sitter/test`.
|
|
Dependency-focused targets `test_lsp_any`, `test_provider`, and `test_scheduler` pass.
|