28 KiB
Final report — merge feature/qt6-migration-basis-modules-merge-viewer-validation into feature/migrate-lts-projects-and-application (+ cherry-pick 5501d1e50, + tools containment)
Status: COMPLETE — all 3 validation runs done (no merge regressions found); merge commit 593c221d2 created and verified. Not pushed (per prompt).
Commits on result branch feature/qt6-migration-projects-app-tools-viewer-validation
| Commit | Kind | Author | Signed |
|---|---|---|---|
b2e787a70 |
cherry-pick of 5501d1e50 (bugfix/dds-fix-pre-existing-errors) |
Torsten Wierschin (original author preserved) | yes — see signature nuance below |
593c221d2 |
merge of 9c1ac7cbe (theirs), parents b2e787a70 + 9c1ac7cbe |
berrux_dev berrux.kana@axilinx.com (user, sole author and committer) | yes — explicit git commit -S, verifies G (ED25519, berrux.kana@axilinx.com); message exactly 2 lines, no attribution lines |
- Base:
origin/feature/migrate-lts-projects-and-application=b18844a20 - Tools containment:
2b8f3f02c(feature/migrate-lts-tools-d-and-l) is an ancestor ofb18844a20→ all LTS Tools D/L content already in the base; no merge of the tools branch needed (verified pre-start) - Cherry-pick supersession:
5501d1e50≡4223ca2ff(theirs-side viewer-val copy): same author/subject; patches byte-identical exceptinclude/→.forward-declarations/include/path prefix;BUILD_STATUS_REPORT.mdbyte-identical on both sides; service fileLts/Services/ParticipantManagement/ppm_types.hconverges to identical content → auto-merged
Cherry-pick handling (step-by-step evidence)
- Cherry-picked first onto a clean projects base (
b18844a20) in a throwaway worktree — applied cleanly, 0 conflicts (40 files: 38 stub headers +BUILD_STATUS_REPORT.md+Lts/Services/ParticipantManagement/ppm_types.h) - Original author preserved (Torsten Wierschin);
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>line dropped; cherry-pick ref line(cherry picked from commit 5501d1e5019f116ef4700912e6a582891dd5103b)kept - Signed via
git cherry-pick -S(repocommit.gpgsign=false); commit message subject unchanged:Qt6 Migration: Update stub headers to include generated files - Signature nuance: at commit time the verification showed U (
No principal matched) becausegpg.ssh.allowedsignersfilepoints at the working-tree fileci/allowed_signers, which on the projects side does not yet contain the signer's ED25519 key (it is added by viewer-val'se748e82c8). After the merge, the file contains the key andgit verify-commit b2e787a70re-verifies G (cryptographic signature was Good in both states — the U was only a principal-matching artifact of the pre-merge file content)
Conflict resolution
24 UD (modify/delete) stub conflicts — all resolved as deletions
Theirs (viewer-val) relocated all include/*/*_dtc.h / pdm_enums.hpp stubs to .forward-declarations/include/ (commit 4223ca2ff). Our side (cherry-pick) modified them at the old location. Git auto-merged rename+modify for the 14 files whose cherry-pick modification matched the rename target; the remaining 24 raised UD conflicts.
For each of the 24, content check: git show :0:<file> (cherry-pick content) vs the already-relocated .forward-declarations/include/<file> content at theirs HEAD → 24/24 MATCH → git rm (keep deletion).
Deviation from prompt prediction (honestly documented): the prompt predicted "14 non-relocated files stay at old include/ location". Actual: all 38 cherry-pick stub files are deleted at the old location; the 14 that the prompt expected to stay were auto-merged into .forward-declarations/include/ by git's rename tracking (rename on theirs + modify on ours = no conflict). Final state is the canonical one: 0 stub files under include/, all 38 present under .forward-declarations/include/ with content verified identical to the cherry-pick content (38/38).
The 24 resolved files (all under qt6-after/qt6-migrated-legatus/include/):
AlarmManagement/alm_dtc.h, AreaEffectSimulation/aes_dtc.h, AssetManagement/asm_dtc.h, AudioVideoManagement/avm_dtc.h, Buildings/bld_dtc.h, CentralEffectSimulation/ces_dtc.h, ComponentMonitor/cmo_dtc.h, Core/core_dtc.h, EffectShowClient/esc_dtc.h, EffectShowManagement/esm_dtc.h, Evaluations/evl_dtc.h, ExerciseManagement/exm_dtc.h, GuezIedManagement/gim_dtc.h, GuezNasat/gna_dtc.h, NotificationManagement/nom_dtc.h, OcSituationServer/oss_dtc.h, ScenarioManagement/scm_dtc.h, SituationReplay/srp_dtc.h, SituationReplayManagement/srm_dtc.h, Skeleton/skl_dtc.h, SoundManagement/som_dtc.h, TrainingAreaBase/tab_dtc.h, TrainingAreaBaseOC/taboc_dtc.h, ProjectDataManagement/pdm_enums.hpp
1 UU — qt6-after/qt6-migrated-legatus/new_docker_build.sh (3 hunks, union per prompt recipe)
| Hunk | Location | Resolution |
|---|---|---|
| 1 | usage text (~line 48) | kept ours' --group6–--group11 option lines + theirs' corrected --build-viewer-only line (implies --group5 --codification; ctest runs); dropped ours' stale --no-ctest line (no longer exists in script) |
| 2 | export line (~line 898) | union: export BUILD_ALL BUILD_RTI BUILD_GRANTLEE BUILD_ARCGIS BUILD_CODIFICATION BUILD_GROUP1 … BUILD_GROUP11 BUILD_VIEWER_ONLY RUN_CTEST TESTS_ONLY INTEGRATION_TEST USE_PREBUILT_IMAGE BUILD_PREBUILT_IMAGE DELETE_PREBUILT_IMAGE DOCKER_IMAGE CMAKE_BUILD_FLAGS |
| 3 | log_group calls (~line 1053) |
theirs' Group 3/4/5 labels + ours' Group 7–11; added log_group "Build Group 6 (LTS Tools)" "$BUILD_GROUP6" — text-only consistency fix (Group 6 was built but not logged), recorded here |
Post-resolution script checks (all passed): bash -n clean; no conflict markers; GROUP3 = 179 service targets incl. PDM block; GROUP4 single invocation with 3 DDS test targets; GROUP5 four-way split (BUILD_ARCGIS × BUILD_VIEWER_ONLY); GROUP6–11 six arrays with 6 target sets; 11 run_build_group calls; 11 × 3 container default values; 11 -e BUILD_GROUP* passthroughs (+ -e BUILD_ARCGIS at line 1277); viewer-only block present; prebuilt-image name ×6; --help renders all options; unknown option → exit 1; only 4 historical docker_build.sh comments remain (0 functional refs).
Legacy comparison audit (qt5-before/qt5-legatus-legacy)
new_docker_build.sh has no legacy counterpart (pipeline-new script; legacy build entry point was docker_build.sh, deleted on ours side and staying deleted — confirmed absent at merge HEAD). Audit category for the resolved file: build/merge-union only — all 3 hunks are union/label changes to the build orchestration; no Qt5/Qt6 or rtiddsgen semantic changes in this file. (The other 24 conflicted files are stub-header deletions; their content is byte-identical to the canonical relocated copies and was already covered by the prior migration audits in the branch histories.)
Files changed beyond the conflicted set
All other merge files auto-merged (per dry run): tests/CMakeLists.txt (GLOB of test_*.cpp — 34 tool test files from projects side auto-register; both sides' existing registrations structurally intact), BUILD_STATUS_REPORT.md (cherry-pick ≡ theirs-side copy, byte-identical), Lts/Services/ParticipantManagement/ppm_types.h (convergent content), GROUP6–11 CMake/target plumbing from projects side, GROUP3/4/5/codification/prebuilt plumbing from viewer-val side. No files added vs the cherry-pick base beyond the merge's auto-merged theirs-side additions. Deletion sweep: git diff --diff-filter=A <merge-base> HEAD checked — merge adds no files vs ours side beyond theirs-side additions already accounted for; docker_build.sh stays deleted; LogViewer preserved (31 files under Lts/Tools/LogViewer/ at merge HEAD = merge base = both pre-merge heads — unchanged by the merge; GROUP6 target present).
Folded-in base-state fixes (not merge conflicts — pre-existing defects that blocked the mandatory run-2 ArcGIS-ON path, fixed per the prompt's "fix or report as a blocker" and folded into the merge commit, cf. the prior merge's 23 folded-in fixes): 9 files, all in the ArcGIS-only advancedSymbology module / its CMake, none touched by either branch since the merge base:
cmake/FindArcGIS.cmake(APPEND vs overwrite ofINTERFACE_INCLUDE_DIRECTORIES)Lts/Viewer/SituationMap/SymbologyImpl/base_symbol_model.{h,cpp}Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.hLts/Viewer/SituationMap/SymbologyImpl/symbol_dictionary_impl.{h,cpp}Lts/Viewer/SituationMap/Symbology/symbol_dictionary.cppLts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor_app6d.cppLts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor_mil2525d.cpp
Each is a mechanical Qt5→Qt6 / SDK include / CMake fix (documented per-file in the Run-2 section above). The one remaining base-state defect (TaskWatcher removed from ArcGIS SDK 300.0.0) is a semantic redesign and is reported as a blocker, not fixed.
Qt5 references
No active Qt5 references introduced by the merge. All Qt5 mentions in the merged tree are the previously-verified benign class: comments in root CMakeLists.txt (stale "fallback to Qt5" comment — no find_package(Qt5…) exists anywhere), the qt5compat aqtinstall package name (= Qt6 Qt5Compat module) in new_docker_build.sh, "Qt6 only – no Qt5 fallback" in cmake/FindKDReports.cmake, and the allowed compat shims QT5_WRAP_UI/QT5_ADD_RESOURCES/QT5_WRAP_CPP/QT5_ADD_BIG_RESOURCES in cmake/NGLMacros.cmake.
CTest registration union
- Run 1: 614 registered — 584 Passed, 30 Not Run (pre-existing class: executables only built in groups 4/5), 0 Failed, 0 Timeout; the 30 newly registered projects-side tool tests that build in groups 1–3 all Passed.
- Run 2 (coverage): 615 registered — 577 Passed, 34 Not Run (pre-existing classes, incl. the
DdsUnitTestsPlaceholder_smoke/_gtestduplicate registrations andLtsFileDialogTestblocked by the LtsSession link failure), 2 Failed + 2 Timeout = exactly the 4 documented base-state failures, 0 NEW. 34 tool tests fromtests/CMakeLists.txtGLOB registered;LtsDataViewTestPassed;LtsFileDialogTestNot Run (blocked by the base-state LtsSession link failure — could not reach its expected Timeout). - Run 3 (viewer-only):
LtsDataViewTestran and Passed (1.04s) — 34 registered, 1 Passed, 33 Not Run (pre-existing viewer-only class), 0 Failed, 0 Timeout. - Expected base-state first-run failures (from prior FINAL-REPORT, allowed to remain — only NEW failures beyond these count as merge regressions):
ddsFunctionTopicTests(deterministic FTS/FTC signal-count defect),bld_bsm_test+taboc_serialtest(hardware waits, Timeout),bld_vwm_test+bld_vwm_xml_test(manual databldg_7_building_config.xmlabsent),LtsFileDialogTest(GUI blocks before auto-exit timer, Timeout)
GROUP11 / svcPdmClient classification (run 2)
Projects side blocked GROUP11 (OperatorApplication/thp_viewer/aarApp) on a pre-existing svcPdmClient Qt6 MOC failure (see GROUP10_VALIDATION_RESULTS.md on projects side). Viewer-val side contains the PDM service migration (a41001955, 36f077bce).
Result: svcPdmClient builds successfully — confirmed in run 1 ([100%] Built target svcPdmClient, log merge-pav-run1.log line 94010) and again in run 2's GROUP3 phase. The pre-existing projects-side Qt6 MOC blocker is cleared by the viewer-val PDM service migration (a41001955, 36f077bce) — a merge success, not a regression. GROUP11 application targets (run-2 continuation): OperatorApplication blocked by the base-state LtsSession.so link failure (no own error); aarApp fails on its own base-state stale generated-DDS field names (m_id → id); thp_viewer is not a configured target (ADD_SUBDIRECTORY(THP) commented out — VLC dependency unavailable, pre-existing at merge base).
Docker validation runs
All runs from qt6-after/qt6-migrated-legatus/, repo qt6-after/qt6-migrated-legatus, container build dir build4 (fresh per run — the script does rm -rf build4 at the start of every build; the run-2 continuation reused run-2f's build4 because it ran make/ctest directly inside it), prebuilt image legatus-qt6-prebuilt:latest (KDReports-qt6 2.3.95 only available there).
- Run 1 (default groups 1–3):
BUILD_RTI=ON BUILD_GRANTLEE=ON ./new_docker_build.sh --use-prebuilt-image --docker-image legatus-qt6-prebuilt:latest→ logmerge-pav-run1.log- Result: build 100% green (no CMake errors; no compile/link errors — the only "error" log matches are rtiddsgen codegen lines for IDL member names like
configError/IedError). KDReports-qt6 found via prebuilt image (Found KDReports-qt6 package config×4; only the legacy-nameKDReports::KDReportsstub target created, benign).svcPdmClientbuilds successfully ([100%] Built target svcPdmClient) — the pre-existing projects-side Qt6 MOC blocker that blocked GROUP11 is cleared by the viewer-val PDM service migration. - ctest: 614 tests — 584 Passed, 30 Not Run, 0 Failed, 0 Timeout. The 30 Not Run are the pre-existing class (executables only built in groups 4/5: nglcomp/NGLToolsQtSmoke/nglpdfwidget, 9× dds* (incl.
_gtestduplicate registrations), GrantleeParserSmoke, lts_coord_trans_unit_test, aes_crypt_test, utils_test, 7× aesUnitTest*, bld_bsm_test, bld_vwm_test, bld_vwm_xml_test, bld_vwm_math_unit_test, taboc_serialtest, LtsDataViewTest, LtsFileDialogTest). The 30 newly registered projects-side tool tests that build in groups 1–3 all Passed. No NEW failures beyond the documented base-state class.
- Result: build 100% green (no CMake errors; no compile/link errors — the only "error" log matches are rtiddsgen codegen lines for IDL member names like
- Run 2 (coverage: groups 4–11 + codification, ArcGIS ON):
BUILD_RTI=ON BUILD_GRANTLEE=ON BUILD_ARCGIS=ON ./new_docker_build.sh --use-prebuilt-image --docker-image legatus-qt6-prebuilt:latest --group4 --group5 --group6 --group7 --group8 --group9 --group10 --group11 --codification→ logsmerge-pav-run2*.log- Result: GROUP1–4 build 100% green (incl.
svcWirelessLocationSystem+wlsJsonClientTestafter adding the script's documented--cmake_build_flags "-DBUILD_WLS=ON"— see WLS note below). GROUP5 (ArcGIS branch) surfaced a series of base-state defects in the ArcGIS-onlyadvancedSymbologymodule (never compiled in this pipeline before — all prior runs were ArcGIS-OFF, where the target is not in the list). Each was a pre-existing defect (no branch touched these files since the merge base), fixed and folded into the merge commit (9 files, listed below); the one irreducible SDK blocker (TaskWatcher) is reported, not fixed. The continuation (GROUP5 minusadvancedSymbology+ GROUP6–11) classified every remaining failing target as base-state — no merge regression found (full classification below).cmake/FindArcGIS.cmake:SET_PROPERTY ... INTERFACE_INCLUDE_DIRECTORIESoverwrote the ArcGIS SDK include dir set two lines earlier (identical defect in the legacy Qt5 file) →APPEND PROPERTY. Without this, no ArcGIS header (Symbol.hetc.) resolved for any consumer.SymbologyImpl/{base_symbol_model.h, esri_dictionary_processor.h, symbol_dictionary_impl.h}: missing#include <QUuid>(Qt6: no transitive include;QUuidused as member fields / slot params).SymbologyImpl/esri_dictionary_processor.h: missing#include <SymbolStyleSearchResult.h>(class exists in SDK 300.0.0; transitive include gone).Symbology/symbol_dictionary.cpp:NGL::INGLLogger &m_loggerreference member never initialized (a localLOGGER_T m_loggershadowed it) → initialized in the ctor init-list (codebase idiom).SymbologyImpl/{esri_dictionary_processor_mil2525d.cpp, esri_dictionary_processor_app6d.cpp, base_symbol_model.cpp, symbol_dictionary_impl.cpp}: removed Qt5 APIs —rightRef/leftRef/midRef→right/left/mid;QString::split()now returnsQStringList(was bound toQVector<QStringView>),QStringView::split()returnsQList<QStringView>;.last().toString()→.last()(QStringhas notoString()in Qt 6.10, verified against the container header).
- Remaining base-state blocker (reported, not fixed):
Esri::ArcGISRuntime::TaskWatcherwas removed from ArcGIS Maps SDK Qt 300.0.0 (TaskWatcher.habsent from the SDK include dir). The module's completion-matching design is built onTaskWatcher::taskId()(QUuid) +isValid(); the new SDK exposesfetchSymbolAsync()→QFuture<Symbol*>andcreateSwatchAsync()→QFuture<QImage>(no task ID). Migrating this is a semantic redesign (QFuture/QFutureWatcher), not a mechanical one, and it cannot be validated headlessly (needs a live ArcGIS runtime + GUI symbol rendering). Per the prompt's "fix or report as a blocker", this is reported as a base-state blocker, out of scope for this merge. The mechanical fixes above are kept (they are real migration debt required for any future build of the module). - WLS note:
--group4requires--cmake_build_flags "-DBUILD_WLS=ON"because the (theirs-side, auto-merged)GROUP4_TARGETSlistssvcWirelessLocationSystem/wlsJsonClientTestunconditionally while those CMake targets only exist withBUILD_WLS=ON. This is a pre-existing theirs-side latent defect (present at9c1ac7cbe; prior viewer-val runs only ever ran group 4 with the flag). The merge preserved theirs' behavior verbatim; run 2 was executed with the flag, per the script's own documented usage. - Continuation (same container/mounts/build dir, script's exact make+ctest): to still validate the merge's actual scope past the blocked
advancedSymbology, a continuation ranmake -j8 -kover the GROUP5 (minusadvancedSymbology) + GROUP6–11 target lists, thenctest --test-dir . --output-on-failure. (GROUP10/11 do not depend onadvancedSymbology/ArcGIS — the only ArcGIS/BUILD_ARCGIS consumers inLts/areCentralEffectSimulationandSymbology, neither in the GROUP10/11 target set.) Log:merge-pav-run2-continue.log(MAKE_STATUS=2 CTEST_STATUS=8). - ctest (615 tests): 577 Passed, 34 Not Run, 2 Failed, 2 Timeout — the 2+2 are EXACTLY the documented base-state first-run failures (
bld_vwm_test0.04s Failed,bld_vwm_xml_test0.02s Failed — manual data absent;bld_bsm_test1500s Timeout,taboc_serialtest1500.01s Timeout — hardware waits). No NEW ctest regressions.LtsDataViewTestbuilt and Passed (not in the Not Run list). The 34 Not Run are the pre-existing classes:nglcomp_test/NGLToolsQtSmoke/test_nglpdfwidget(executables never built), 9× dds* incl. 3_smoke+ 3_gtestduplicate registrations (Lts/DDS/DdsUnitTestsPlaceholderregisters same-named tests against never-built_smoke/_gtestexecutables — base-state placeholder quirk, same class as run 1),GrantleeParserSmoke,lts_coord_trans_unit_test,aes_crypt_test,utils_test, 7× aesUnitTest*,bld_vwm_math_unit_test,LtsFileDialogTest(blocked by the LtsSession link failure below), 7×LtsWidgetsQt6.*,exmDtUnitTest/scmDtUnitTest. - Build-failure classification (make, groups 5–11): every failing target is a BASE-STATE defect — per-file
git diff --name-only fd3e5e838..{b18844a20,9c1ac7cbe}check shows 0 of the failing files touched by either branch since the merge base; none is a merge regression. Groups of base-state defects:LtsSession.solink failure (undefinedLtsSession::TopicLockHandler::*,TopicLockHanderData::*,Core::Interface::Ftc::create) → cascades toSplash,OperatorApplication,LtsFileDialog,LtsFileDialogTest(no own errors). Root cause:Lts/Common/LtsSession/lts_session_lock_handler.cppis an empty-namespace stub (11 lines, "STUB implementations – RTI DDS not available") while the header declares a full class — commitb1ff11043"LtsSession: STUB-Entfernung" predates the merge base; the stub only links withBUILD_RTI=OFF(its intended mode), but the pipeline always runsBUILD_RTI=ON. AdditionallyCore::Interface::Ftc::create(generated Core client) is not linked. Reported as a base-state blocker (fixing = porting the 290-line legacy Qt5 implementation + wiring the generated Core client — out of merge scope; silently stubbing the methods would hide runtime behavior).- Qt6 API debt in tool sources (never compiled in the pipeline):
LogViewer(Qt::TextColorRole→Qt::ForegroundRole,QtWidgets/QAction→QtGui/QAction,QString::SkipEmptyParts→Qt::SkipEmptyParts),ProjectSettingsEditor+AdlerWebSocketSimulator(QtWidgets/QAction),qledline(QHBoxLayout::setMargin→setContentsMargins) → cascades todisplayPanelSimulator. - Stale generated-DDS (rtiddsgen 7.7.0) field/API names:
ddsview(m_description→description),aarApp(m_id→id),ParticipantDataGenerator(omg::types::optional<int>not callable;ErrorConfigSelfTestenum member missing),tDataSampleGenerator/tDataSampleReceiver(optional/std::string wrapper APIs). CnrProxyTester:mainwindow.uiabsent from the source dir (autouic fails) — base-state missing file.- 4 GROUP10 plugins (
ProjectEtsPlugin/ProjectAhtcPlugin/ProjectQatarPlugin/ProjectL400P2Plugin): PRE_BUILDLtsAppDescriptorChecker(macroNGL_TEST_APPS_JSON) fails:resources/apps.jsonreferences IIDs (e.g.tln.view) with no matching*_gui_plugin.hunderLts/Plugins/— theEventTimelineClassic(tln.view) plugin was removed pre-merge-base (commit92ad7d468"remove all unneeded module listed from Niklas");apps.jsonstill references it. Identical at both pre-merge branch heads (not changed by the merge). Note: this contradicts the projects-sideGROUP10_VALIDATION_RESULTS.mdclaim "all 9 built" (same tree content atb18844a20; that run's conditions must have differed). - 16× "No rule to make target" (target absent from the generated Makefile — CMake wiring, not compile errors): 5 GROUP10 plugins (
ProjectGuezPlugin,ProjectQatarMOUTPlugin,ProjectLegatusPlugin,ProjectDemoTabletPlugin,ProjectComMasterPlugin) — their CMakeLists callNGL_COMPILE_RESOURCESwhose Qt6 path ends inreturn()inside amacro(), which CMake treats as return-from-current-CMakeLists →NGL_ADD_LIBRARYand everything after is silently skipped, so the target is never created (verified viacmake --trace-source;NGL_COMPILE_RESOURCESunchanged since merge base; the 4 working plugins useNGL_ADD_BIG_RESOURCESinstead);thp_viewer(# ADD_SUBDIRECTORY(THP) # Disabled: VLC dependency not availableinLts/Application/CMakeLists.txt, pre-MB);videoimport(#ADD_SUBDIRECTORY(VideoImport)commented, pre-MB);AsmWorkstationCertifier(if(BOTAN_FOUND)— botan2 dev package absent from the prebuilt image); and 8 GROUP7/9 script-array name mismatches (projects-side latent defect, same class as the WLS flag issue):QLedLine→qledline,QLedMatrix→qledmatrix,Times→ctime/stime,TopicDiscover→topicdiscover(+topicdiscoverexe),VapixConfig→vapixconfig,SqlBrowser→sqlbrowser,TextEditorTest→textEditorTest,TrajectoryWidget→TrajectoryShader(the real lowercase targets exist; e.g.qledlinehas its own base-state compile failure above).
- GROUP11 / application classification:
svcPdmClientbuilds (run 1 + run 2 GROUP3) — the projects-side GROUP11 blocker is cleared (see section above).OperatorApplicationandaarAppdo not build:OperatorApplicationis blocked by theLtsSession.solink cascade (base-state, item 1);aarAppfails compilation on its own base-state stale-DDS field names (item 3).thp_vieweris not a configured target (VLC-disabled subdir, base-state).
- Result: GROUP1–4 build 100% green (incl.
- Run 3 (viewer-only):
BUILD_RTI=ON BUILD_GRANTLEE=ON ./new_docker_build.sh --build-viewer-only --use-prebuilt-image --docker-image legatus-qt6-prebuilt:latest→ logmerge-pav-run3.log- Result: viewer group 100% built (
situationMapCommon,advancedSymbologyXML,LtsDataView,LtsDataViewTest,LtsReportDisplay— viewer-only implies--group5 --codification, ArcGIS OFF, so theadvancedSymbology/TaskWatcher blocker is not on this path). ctest (34 tests): 1 Passed —LtsDataViewTest(1.04s) — the mandatory requirement is met; 33 Not Run (the pre-existing viewer-only class: those test executables are only built in the other groups — dds placeholder dupes, bld_* hardware tests,LtsFileDialogTest(blocked by the base-state LtsSession link failure),migration_tests_NOT_BUILT); 0 Failed, 0 Timeout → no new regressions. Script exit 8 is ctest's "Not Run present" status, not a build failure.
- Result: viewer group 100% built (
Jenkins / CI policy
- Signature gate (
ci/check_pr_policies.py): pre-existing blocker — 8 unsigned/mismatched (U) ancestor commits on the projects side since merge basefd3e5e838. Both new commits on this branch verify G at branch head (cherry-pick nuance above). - Jenkins
jenkins/Jenkinsfileunchanged by this merge.
Confirmations
- Tools containment:
2b8f3f02cancestor ofb18844a20(no tools-branch merge needed) - Cherry-pick: clean apply, 24/24 content check before
git rm, all 38 stubs at canonical.forward-declarations/location (deviation documented) docker_build.shstays deleted (absent at HEAD; onlynew_docker_build.shpresent)- LogViewer: 31 files preserved (identical count at merge base / both pre-merge heads / merge HEAD), GROUP6 target present
- Both
BUILD_STATUS_REPORT.mdandGROUP10_VALIDATION_RESULTS.mdpresent in merged tree - Merge commit
593c221d2: parentsb2e787a70+9c1ac7cbe, sole author/committerberrux_dev <berrux.kana@axilinx.com>, 2-line message, no attribution lines,git verify-commit= Good - Working tree clean after merge commit; dry-run worktree removed; not pushed
Remaining blockers / risks
- Signature gate (pre-existing, projects side): 8 unsigned/mismatched (U) ancestor commits since merge base
fd3e5e838. Both new commits on this branch verify G at branch head. advancedSymbologyArcGIS-ON build (base-state blocker, reported):Esri::ArcGISRuntime::TaskWatcherremoved from ArcGIS Maps SDK Qt 300.0.0 → the completion-matching design needs a semantic QFuture/QFutureWatcher redesign, not a mechanical migration; not verifiable headless. The 9 mechanical fixes are folded into the merge (they are real migration debt for any future build of the module).LtsSession.solink failure (base-state blocker, reported): empty-namespacelts_session_lock_handler.cppstub (pre-MB) + missingCore::Interface::Ftc::create→ blocksSplash,OperatorApplication,LtsFileDialog,LtsFileDialogTestunder the pipeline'sBUILD_RTI=ON. Fixing = porting the 290-line legacy Qt5 implementation + wiring the generated Core client (out of merge scope).- Base-state tool/app build defects (groups 4–11, never compiled in the pipeline before): Qt6 API debt (
LogViewer,ProjectSettingsEditor,AdlerWebSocketSimulator,qledline), stale generated-DDS naming (ddsview,aarApp,ParticipantDataGenerator,tDataSampleGenerator/Receiver), missingCnrProxyTester/mainwindow.ui,apps.jsonIIDs without matching*_gui_plugin.h(4 GROUP10 plugins), and 16 missing/mismatched make targets (5 plugin CMakeListsreturn()-in-macro,thp_viewer/videoimportsubdirs commented,AsmWorkstationCertifierneeds botan2, 8 GROUP7/9 array-name mismatches). None is a merge regression; none blocks the merge's validated scope (services, viewer core, GROUP1–5 non-ArcGIS). - Documented base-state first-run ctest failures (allowed to remain):
bld_vwm_test/bld_vwm_xml_test(Failed, manual data absent),bld_bsm_test/taboc_serialtest(Timeout, hardware),ddsFunctionTopicTests(deterministic FTS/FTC defect — Not Run here due to the placeholder_smokeregistration),LtsFileDialogTest(Not Run here — blocked by the LtsSession link failure above). - GROUP11/svcPdmClient: cleared —
svcPdmClientbuilds (the projects-side MOC blocker is removed by the viewer-val PDM migration). Application targets:OperatorApplicationblocked by the LtsSession cascade (base-state),aarAppfails on base-state stale-DDS naming,thp_viewernot configured (VLC). - Run-specific blockers: none beyond the above.