fix(linux): remove yaze_editor dependency from yaze_emu_test to resolve FLAGS symbol conflicts
Resolves Linux build failure where multiple definition of FLAGS_rom and FLAGS_norom occurred. The yaze_emu_test is a minimal headless test that should not link to yaze_editor (which pulls in yaze_agent containing flags.cc). The test defines its own flags (FLAGS_emu_test_rom, etc.) which were conflicting with the agent's flags. Root cause: - yaze_emu_test linked to yaze_editor - yaze_editor links to yaze_agent (when agent UI enabled) - yaze_agent includes cli/flags.cc with FLAGS_rom/FLAGS_norom definitions - This created ODR (One Definition Rule) violations with emu_test's own flags Solution: - Remove yaze_editor and yaze_app_core_lib dependencies from yaze_emu_test - Only link minimal dependencies: yaze_emulator, yaze_util, and Abseil flags Affected platforms: Linux (Ubuntu 22.04 GCC-12) Related commits:0812a84a22(circular dependency fix),43118254e6(Windows fix) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -334,3 +334,51 @@ Example request line:
|
||||
- REQUESTS:
|
||||
- INFO → CLAUDE_RELEASE_COORD: macOS platform is stable and ready. Code formatting violations need separate attention (not macOS-specific).
|
||||
|
||||
### 2025-11-20 23:58 PST CLAUDE_LIN_BUILD – update
|
||||
- TASK: Linux Build Monitoring (CI Run #19528789779)
|
||||
- STATUS: FAIL
|
||||
- SCOPE: feat/http-api-phase2 branch, Ubuntu 22.04 (GCC-12)
|
||||
- NOTES:
|
||||
- ❌ **Build - Ubuntu 22.04 (GCC-12)**: FAILURE at linking yaze_emu_test
|
||||
- ❌ **Test - Ubuntu 22.04**: SKIPPED (build did not complete)
|
||||
- **Root cause**: Symbol redefinition & missing symbol in libyaze_agent.a
|
||||
- Multiple definition: `FLAGS_rom` defined in both flags.cc.o and emu_test.cc.o
|
||||
- Multiple definition: `FLAGS_norom` defined in both flags.cc.o and emu_test.cc.o
|
||||
- Undefined reference: `FLAGS_quiet` (called from simple_chat_command.cc:61)
|
||||
- **Analysis**: This is NOT the circular dependency from commit 0812a84a22 - that was fixed. This is a new FLAGS (Abseil) symbol conflict in the agent library vs. emulator test
|
||||
- **Error location**: Linker fails at [3685/3691] while linking yaze_emu_test; ninja build stopped
|
||||
- **Affected binaries**: yaze_emu_test (blocked), but z3ed and yaze continued building successfully
|
||||
- BLOCKERS:
|
||||
- FLAGS symbol redefinition in libyaze_agent.a - need to reconcile duplicate symbol definitions
|
||||
- Missing FLAGS_quiet definition - check flags.cc vs. other flag declarations
|
||||
- Likely root: flags.cc being compiled into agent library without proper ODR (One Definition Rule) isolation
|
||||
- REQUESTS:
|
||||
- BLOCKER → CLAUDE_AIINF: Linux build broken by FLAGS symbol conflicts in agent library; needs investigation on flags.cc compilation and agent target linking
|
||||
- INFO → CLAUDE_RELEASE_COORD: Linux platform BLOCKED - cannot proceed with release prep until symbol conflicts resolved
|
||||
|
||||
### 2025-11-20 02:45 PST CLAUDE_RELEASE_COORD – plan
|
||||
- TASK: Release Coordination - Platform Validation for feat/http-api-phase2
|
||||
- SCOPE: CI monitoring, release checklist creation, platform validation coordination
|
||||
- STATUS: IN_PROGRESS
|
||||
- PLATFORM STATUS:
|
||||
- Windows: ⏳ TESTING (CI Run #485, commit 43118254e6)
|
||||
- Linux: ⏳ TESTING (CI Run #485, commit 43118254e6)
|
||||
- macOS: ⏳ TESTING (CI Run #485, commit 43118254e6)
|
||||
- NOTES:
|
||||
- ✅ Created release checklist: docs/internal/release-checklist.md
|
||||
- ✅ Triggered CI run #485 for correct commit 43118254e6
|
||||
- ✅ All previous platform fixes present in branch:
|
||||
- Windows: Unconditional /std:c++latest flag (43118254e6)
|
||||
- Linux: Circular dependency fix (0812a84a22)
|
||||
- macOS: z3ed linker fix (9c562df277)
|
||||
- ✅ HTTP API Phase 2 complete and validated on macOS
|
||||
- ⏳ CI run URL: https://github.com/scawful/yaze/actions/runs/19529565598
|
||||
- 🎯 User requirement: "we absolutely need a release soon" - HIGH PRIORITY
|
||||
- ⚠️ CRITICAL: Previous run #19528789779 revealed NEW Linux blocker (FLAGS symbol conflicts) - monitoring if fix commit resolves this
|
||||
- BLOCKERS: Awaiting CI validation - previous run showed Linux FLAGS symbol conflicts
|
||||
- NEXT: Monitor CI run #485 every 5 minutes, update checklist with job results
|
||||
- REQUESTS:
|
||||
- INFO → CLAUDE_AIINF: Release coordination active, monitoring your Windows fix in CI
|
||||
- INFO → CLAUDE_LIN_BUILD: Tracking if new commit resolves FLAGS conflicts you identified
|
||||
- INFO → CODEX: Release checklist created at docs/internal/release-checklist.md
|
||||
|
||||
|
||||
164
docs/internal/release-checklist.md
Normal file
164
docs/internal/release-checklist.md
Normal file
@@ -0,0 +1,164 @@
|
||||
# Release Checklist - feat/http-api-phase2 → master
|
||||
|
||||
**Release Coordinator**: CLAUDE_RELEASE_COORD
|
||||
**Target Commit**: 43118254e6 - "fix: apply /std:c++latest unconditionally on Windows for std::filesystem"
|
||||
**CI Run**: #485 - https://github.com/scawful/yaze/actions/runs/19529565598
|
||||
**Status**: IN_PROGRESS
|
||||
**Last Updated**: 2025-11-20 02:50 PST
|
||||
|
||||
## Critical Context
|
||||
- Windows std::filesystem build has been BROKEN for 2+ weeks
|
||||
- Latest fix simplifies approach: apply /std:c++latest unconditionally on Windows
|
||||
- Multiple platform-specific fixes merged into feat/http-api-phase2 branch
|
||||
- User demands: "we absolutely need a release soon"
|
||||
|
||||
## Platform Build Status
|
||||
|
||||
### Windows Build
|
||||
- **Status**: ⏳ IN_PROGRESS (CI Run #485 - Job "Build - Windows 2022 (Core)")
|
||||
- **Previous Failures**: std::filesystem compilation errors (runs #480-484)
|
||||
- **Fix Applied**: Unconditional /std:c++latest flag in src/util/util.cmake
|
||||
- **Blocker**: None (fix deployed, awaiting CI validation)
|
||||
- **Owner**: CLAUDE_AIINF
|
||||
- **Test Command**: `cmake --preset win-dbg && cmake --build build`
|
||||
- **CI Job Status**: Building...
|
||||
|
||||
### Linux Build
|
||||
- **Status**: ⏳ IN_PROGRESS (CI Run #485 - Job "Build - Ubuntu 22.04 (GCC-12)")
|
||||
- **Previous Failures**:
|
||||
- Circular dependency resolved (commit 0812a84a22) ✅
|
||||
- FLAGS symbol conflicts in run #19528789779 ❌ (NEW BLOCKER)
|
||||
- **Known Issues**: FLAGS symbol redefinition (FLAGS_rom, FLAGS_norom, FLAGS_quiet)
|
||||
- **Blocker**: CRITICAL - Previous run showed FLAGS conflicts in yaze_emu_test linking
|
||||
- **Owner**: CLAUDE_LIN_BUILD (specialist agent monitoring)
|
||||
- **Test Command**: `cmake --preset lin-dbg && cmake --build build`
|
||||
- **CI Job Status**: Building...
|
||||
|
||||
### macOS Build
|
||||
- **Status**: ⏳ IN_PROGRESS (CI Run #485 - Job "Build - macOS 14 (Clang)")
|
||||
- **Previous Fixes**: z3ed linker error resolved (commit 9c562df277) ✅
|
||||
- **Previous Run**: PASSED in run #19528789779 ✅
|
||||
- **Known Issues**: None active
|
||||
- **Blocker**: None
|
||||
- **Owner**: CLAUDE_MAC_BUILD (specialist agent confirmed stable)
|
||||
- **Test Command**: `cmake --preset mac-dbg && cmake --build build`
|
||||
- **CI Job Status**: Building...
|
||||
|
||||
## HTTP API Validation
|
||||
|
||||
### Phase 2 Implementation Status
|
||||
- **Status**: ✅ COMPLETE (validated locally on macOS)
|
||||
- **Scope**: cmake/options.cmake, src/cli/cli_main.cc, src/cli/service/api/
|
||||
- **Endpoints Tested**:
|
||||
- ✅ GET /api/v1/health → 200 OK
|
||||
- ✅ GET /api/v1/models → 200 OK (empty list expected)
|
||||
- **CI Testing**: ⏳ PENDING (enable_http_api_tests=false for this run)
|
||||
- **Documentation**: ✅ Complete (src/cli/service/api/README.md)
|
||||
- **Owner**: CLAUDE_AIINF
|
||||
|
||||
## Test Execution Status
|
||||
|
||||
### Unit Tests
|
||||
- **Status**: ⏳ TESTING (CI Run #485)
|
||||
- **Expected**: All pass (no unit test changes in this branch)
|
||||
|
||||
### Integration Tests
|
||||
- **Status**: ⏳ TESTING (CI Run #485)
|
||||
- **Expected**: All pass (platform fixes shouldn't break integration)
|
||||
|
||||
### E2E Tests
|
||||
- **Status**: ⏳ TESTING (CI Run #485)
|
||||
- **Expected**: All pass (no UI changes)
|
||||
|
||||
## GO/NO-GO Decision Criteria
|
||||
|
||||
### GREEN LIGHT (GO) Requirements
|
||||
- ✅ All 3 platforms build successfully in CI
|
||||
- ✅ All test suites pass on all platforms
|
||||
- ✅ No new compiler warnings introduced
|
||||
- ✅ HTTP API validated on at least one platform (already done: macOS)
|
||||
- ✅ No critical security issues introduced
|
||||
- ✅ All coordination board blockers resolved
|
||||
|
||||
### RED LIGHT (NO-GO) Triggers
|
||||
- ❌ Any platform build failure
|
||||
- ❌ Test regression on any platform
|
||||
- ❌ New critical warnings/errors
|
||||
- ❌ Security vulnerabilities detected
|
||||
- ❌ Unresolved blocker from coordination board
|
||||
|
||||
## Current Blockers
|
||||
|
||||
### ACTIVE BLOCKERS
|
||||
|
||||
**BLOCKER #1: Linux FLAGS Symbol Conflicts (CRITICAL)**
|
||||
- **Status**: ⚠️ UNDER OBSERVATION (waiting for CI run #485 results)
|
||||
- **First Seen**: CI Run #19528789779
|
||||
- **Description**: Multiple definition of FLAGS_rom and FLAGS_norom; undefined FLAGS_quiet
|
||||
- **Impact**: Blocks yaze_emu_test linking on Linux
|
||||
- **Root Cause**: flags.cc compiled into agent library without ODR isolation
|
||||
- **Owner**: CLAUDE_LIN_BUILD
|
||||
- **Resolution Plan**: If persists in run #485, requires agent library linking fix
|
||||
- **Severity**: CRITICAL - blocks Linux release
|
||||
|
||||
**BLOCKER #2: Code Quality - clang-format violations**
|
||||
- **Status**: ❌ FAILED (CI Run #485)
|
||||
- **Description**: Formatting violations in test_manager.h, editor_manager.h, menu_orchestrator.cc
|
||||
- **Impact**: Non-blocking for release (cosmetic), but should be fixed before merge
|
||||
- **Owner**: TBD
|
||||
- **Resolution Plan**: Run `cmake --build build --target format` before merge
|
||||
- **Severity**: LOW - does not block release, can be fixed in follow-up
|
||||
|
||||
### RESOLVED BLOCKERS
|
||||
|
||||
**✅ Windows std::filesystem compilation** - Fixed in commit 43118254e6
|
||||
**✅ Linux circular dependency** - Fixed in commit 0812a84a22
|
||||
**✅ macOS z3ed linker error** - Fixed in commit 9c562df277
|
||||
|
||||
## Release Merge Plan
|
||||
|
||||
### When GREEN LIGHT Achieved:
|
||||
1. **Verify CI run #485 passes all jobs**
|
||||
2. **Run smoke build verification**: `scripts/agents/smoke-build.sh {preset} {target}` on all platforms
|
||||
3. **Update coordination board** with final status
|
||||
4. **Create merge commit**: `git checkout develop && git merge feat/http-api-phase2 --no-ff`
|
||||
5. **Run final test suite**: `scripts/agents/run-tests.sh {preset}`
|
||||
6. **Merge to master**: `git checkout master && git merge develop --no-ff`
|
||||
7. **Tag release**: `git tag -a v0.x.x -m "Release v0.x.x - Windows std::filesystem fix + HTTP API Phase 2"`
|
||||
8. **Push with tags**: `git push origin master develop --tags`
|
||||
9. **Trigger release workflow**: CI will automatically build release artifacts
|
||||
|
||||
### If RED LIGHT (Failure):
|
||||
1. **Identify failing job** in CI run #485
|
||||
2. **Assign to specialized agent**:
|
||||
- Windows failures → CLAUDE_AIINF (Windows Build Specialist)
|
||||
- Linux failures → CLAUDE_AIINF (Linux Build Specialist)
|
||||
- macOS failures → CLAUDE_AIINF (macOS Build Specialist)
|
||||
- Test failures → CLAUDE_CORE (Test Specialist)
|
||||
3. **Create emergency fix** on feat/http-api-phase2 branch
|
||||
4. **Trigger new CI run** and update this checklist
|
||||
5. **Repeat until GREEN LIGHT**
|
||||
|
||||
## Monitoring Protocol
|
||||
|
||||
**CLAUDE_RELEASE_COORD will check CI status every 5 minutes and update coordination board with:**
|
||||
- Platform build progress (queued/in_progress/success/failure)
|
||||
- Test execution status
|
||||
- Any new blockers discovered
|
||||
- ETA to GREEN LIGHT decision
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. ⏳ Monitor CI run #485 - https://github.com/scawful/yaze/actions/runs/19529565598
|
||||
2. ⏳ Wait for Windows build job to complete (critical validation)
|
||||
3. ⏳ Wait for Linux build job to complete
|
||||
4. ⏳ Wait for macOS build job to complete
|
||||
5. ⏳ Wait for test jobs to complete on all platforms
|
||||
6. ⏳ Make GO/NO-GO decision
|
||||
7. ⏳ Execute merge plan if GREEN LIGHT
|
||||
|
||||
---
|
||||
|
||||
**Coordination Board**: `docs/internal/agents/coordination-board.md`
|
||||
**Build Reference**: `docs/public/build/quick-reference.md`
|
||||
**HTTP API Docs**: `src/cli/service/api/README.md`
|
||||
@@ -47,8 +47,6 @@ if(YAZE_BUILD_EMU AND NOT YAZE_MINIMAL_BUILD)
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
target_link_libraries(yaze_emu_test PRIVATE
|
||||
yaze_app_core_lib
|
||||
yaze_editor
|
||||
yaze_emulator
|
||||
yaze_util
|
||||
absl::flags
|
||||
|
||||
Reference in New Issue
Block a user