From 6d58ec031fdbdfbb5610b6e5d27f33d0515befa3 Mon Sep 17 00:00:00 2001 From: twi-devel Date: Thu, 24 Sep 2026 17:37:16 +0200 Subject: [PATCH] Adds ArcGIS build requirements analysis --- ARC_GIS_BUILD_REQUIREMENTS.md | 175 ++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 ARC_GIS_BUILD_REQUIREMENTS.md diff --git a/ARC_GIS_BUILD_REQUIREMENTS.md b/ARC_GIS_BUILD_REQUIREMENTS.md new file mode 100644 index 000000000..5011ad63a --- /dev/null +++ b/ARC_GIS_BUILD_REQUIREMENTS.md @@ -0,0 +1,175 @@ +# ArcGIS Build Requirements Analysis + +## Overview + +This document analyzes the requirements for building full ArcGIS-enabled Qt6 applications in the Qt6 migration pipeline. + +**Date:** 2026-09-24 +**Branch:** feature/lts-viewer-validation-testing-phase +**Submodule:** qt6-migration-pipeline/qt-migration-legatus/qt6-after/qt6-migrated-legatus + +--- + +## SDK Structure + +**Location:** `./external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk/` + +### Components Status + +| Component | Status | Location | +|-----------|--------|----------| +| **Headers** | ✅ Present | `sdk/include/` (37K+ header files) | +| **Linux x64 Libraries** | ✅ Present | `sdk/linux/x64/lib/` | +| - libruntimecore.so | ✅ 162MB | Core runtime engine | +| - libEsriCommonQt.so | ✅ 27MB | Common Qt bindings | +| - libEsriRuntimeQt.a | ✅ 86MB | Static C++ API library | +| **CMake Config** | ✅ Present | `sdk/ideintegration/ArcGISRuntime.cmake` | + +### CMake Targets Defined + +The `ArcGISRuntime.cmake` module defines the following imported targets: + +- `ArcGIS::Core` - Core runtime (shared library) +- `ArcGIS::Cpp` - C++ API (static library) + +--- + +## Missing Requirements for Full Builds + +### 1. ArcGIS Runtime SDK License ⚠️ + +The ArcGIS Maps SDK for Qt is **proprietary software** from Esri: +- Requires a valid license for production use +- Must be obtained separately from Esri +- Not included in this repository + +### 2. Runtime Dependencies + +For deployment, the following are needed: +- No `bin/` or `plugins/` directory in SDK (Qt plugins not bundled) +- Application must bundle required Qt plugins separately +- Runtime library path must include `/sdk/linux/x64/lib/` + +### 3. Docker Build Integration + +The SDK must be **mounted into Docker container** during build: + +```bash +-v /path/to/sdk:/workspace/external/ArcGIS +``` + +The `install_arcgis.sh` script: +- Expects SDK at `/workspace/external/ArcGIS` +- Creates symlink to `/repo/external/ArcGIS/MapsSDK_Qt_300.0.0/...` + +--- + +## Build Configuration + +### Enable ArcGIS Builds + +```bash +./new_docker_build.sh --arcgis --group5 +``` + +This will: +- Set `BUILD_ARCGIS=ON` +- Add ArcGIS SDK to `CMAKE_PREFIX_PATH` +- Enable `advancedSymbology` library build +- Link against `ArcGIS::ArcGIS` target + +### CMake Configuration + +CMake expects the following prefix path: + +```cmake +-DCMAKE_PREFIX_PATH="...;/workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk;/usr/local" +``` + +--- + +## Dependency Chain + +``` +advancedSymbology (Lts/Viewer/SituationMap/Symbology/) + └── ArcGIS::ArcGIS (ArcGIS Runtime SDK) + ├── libruntimecore.so (162MB) + ├── libEsriCommonQt.so (27MB) + └── libEsriRuntimeQt.a (86MB) + +Lts/Plugins/AdvancedSymbology/ + ├── AsbDataPlugin → advancedSymbology + ├── AsbSymbolProxyGuiPlugin → advancedSymbology + └── AsbData → advancedSymbology +``` + +### Key CMake Files + +| File | Purpose | +|------|---------| +| `Lts/Viewer/SituationMap/Symbology/CMakeLists.txt` | Contains `BUILD_ARCGIS` conditional for advancedSymbology | +| `Lts/Plugins/AdvancedSymbology/Data/CMakeLists.txt` | Links AsbData, AsbDataPlugin against advancedSymbology | +| `Lts/Plugins/AdvancedSymbology/Gui/SymbolProxy/CMakeLists.txt` | Links AsbSymbolProxyGuiPlugin against advancedSymbology | +| `cmake/FindArcGISRuntime.cmake` | Locates ArcGIS SDK (via ArcGISRuntime.cmake) | + +--- + +## Current Status + +### Viewer-Only Builds (Without ArcGIS) + +| Component | Status | +|-----------|--------| +| LtsDataView | ✅ Builds successfully | +| LtsDataViewTest | ✅ Passes CTest (headless) | +| LtsReportDisplay | ✅ Builds with KDReports | +| situationMapCommon | ✅ Builds successfully | +| advancedSymbology | ⚠️ NOT built (requires ArcGIS license) | +| Qt6 Deprecation Warnings | ✅ Zero warnings | + +### Full ArcGIS-Enabled Builds + +To enable full ArcGIS functionality: + +1. ✅ SDK folder structure is complete +2. ⚠️ Obtain ArcGIS Runtime SDK for Qt license from Esri +3. ⚠️ Mount SDK into Docker build environment +4. ⚠️ Build with `--arcgis` flag +5. ⚠️ Ensure runtime library path includes ArcGIS libraries + +--- + +## Verification Commands + +### Check SDK Libraries + +```bash +find ./external/ArcGIS -name "*.so" -o -name "*.a" +``` + +### Build with ArcGIS Support + +```bash +./new_docker_build.sh --arcgis --group5 +``` + +### Verify advancedSymbology Build + +```bash +# Check if library was built +ls -la build4/lib/libadvancedSymbology.so + +# Check CMake configure output for ArcGIS +grep -i "arcgis" build4/CMakeCache.txt +``` + +--- + +## Conclusion + +The SDK folder structure is **complete** for building ArcGIS-enabled applications. The only missing pieces are: + +1. **Valid ArcGIS Runtime SDK license** (must be obtained from Esri) +2. **Docker mount configuration** for CI/CD pipelines + +For viewer-only validation testing, ArcGIS is **optional** — the core Viewer module (LtsDataView, LtsReportDisplay, situationMapCommon) builds and tests successfully without it. \ No newline at end of file