Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/install_arcgis.sh
T
torstenandCopilot 850d10d8de Qt6 migration verification: RTI 7.7 Pro integration and path fixes
Major changes:
- Merged branches: feature/arcgis300-symbology-migration, feature/lts-viewer-validation-testing-phase, bugfix/fix-warning-issue
- Integrated RTI 7.7 Pro commercial library with proper CMake configuration
- Fixed all hardcoded /workspace paths to use /repo (Docker mount point)
- Added DOCKER_MOUNT_ROOT parameter to new_docker_build.sh for configurable mount points
- Fixed RPATH configuration for proper runtime library loading

Technical fixes:
- cmake/FindRTI.cmake: Set CMP0111 policy unconditionally, fixed IMPORTED_LOCATION property setting outside target creation block, added debug logging
- CMakeLists.txt: Added CMP0111 before find_package(RTI), updated path detection for /repo, configured RPATH
- Lts/DDS/CMakeLists.txt: Reordered DdsUnitTests before DdsUnitTestsPlaceholder to fix test executable naming
- ArcGIS symbology: Removed deprecated m_sssResult and m_esriSwatchTaskUuid members (ArcGIS 300 API changes)

Build verification:
- 10 CPU build: 100% success (error fixing phase)
- 1 CPU build: 100% success (final validation)
- CTest: 675 tests run, 97% pass rate (654/675 passed)
- RTI DDS integration test: PASSED

Known issues:
- 21 tests failed (mostly 'Not Run' for missing smoke test executables)
- Timeout issues in bld_bsm_test and taboc_serialtest (connection refused errors)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-04 09:04:01 +00:00

88 lines
3.8 KiB
Bash
Executable File

#!/bin/bash
# install_arcgis.sh - Install/setup ArcGIS Runtime SDK for Qt in Docker container
# This script prepares the ArcGIS SDK for use with Qt6 builds
set -e
# Use DOCKER_MOUNT_ROOT if set (supports both /repo and /workspace), default to /repo
DOCKER_MOUNT_ROOT="${DOCKER_MOUNT_ROOT:-/repo}"
ARCGIS_SRC="${DOCKER_MOUNT_ROOT}/external/ArcGIS"
ARCGIS_DEST="${DOCKER_MOUNT_ROOT}/qt-migration-legatus/qt6-after/qt6-migrated-legatus/external/ArcGIS"
echo "=== ArcGIS SDK Setup ==="
echo "Source: ${ARCGIS_SRC}"
echo "Destination: ${ARCGIS_DEST}"
# Check if source exists
if [ ! -d "${ARCGIS_SRC}" ]; then
echo "ERROR: ArcGIS SDK not found at ${ARCGIS_SRC}"
echo "Make sure the SDK is mounted in the Docker container"
exit 1
fi
# Create destination directory if needed
mkdir -p "$(dirname ${ARCGIS_DEST})"
# Remove existing symlink/directory if it exists (check for symlink first)
if [ -L "${ARCGIS_DEST}" ]; then
echo "Removing existing ArcGIS SDK symlink at ${ARCGIS_DEST}"
rm -f "${ARCGIS_DEST}"
elif [ -e "${ARCGIS_DEST}" ]; then
echo "Removing existing ArcGIS SDK directory at ${ARCGIS_DEST}"
rm -rf "${ARCGIS_DEST}"
fi
# Create symlink to the SDK
echo "Creating symlink: ${ARCGIS_DEST} -> ${ARCGIS_SRC}"
ln -s "${ARCGIS_SRC}" "${ARCGIS_DEST}"
# Verify the SDK structure
SDK_PATH="${ARCGIS_DEST}/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk"
if [ -d "${SDK_PATH}" ]; then
echo "✓ ArcGIS SDK found at: ${SDK_PATH}"
echo " Include dir: ${SDK_PATH}/include"
echo " Library dir: ${SDK_PATH}/linux/x64/lib"
# List available libraries
echo " Available libraries:"
ls -lh "${SDK_PATH}/linux/x64/lib/" | grep -E '\.(so|a)$' || true
else
echo "WARNING: Expected SDK structure not found at ${SDK_PATH}"
echo "Available contents:"
ls -la "${ARCGIS_DEST}/" || true
fi
# Run configure.sh to properly set up the SDK
# According to README.txt, this is required after extracting/copying the SDK
# It (a) headlessly accepts the Esri Master License Agreement and (b) writes
# $HOME/.config/EsriRuntimeQt/ArcGIS Runtime SDK for Qt 300.0.0.ini with the
# InstallDir. The ArcGIS runtime reads that ini at startup; without it the 300
# SDK refuses to initialize and the Situation map view will not load.
CONFIGURE_SCRIPT="${ARCGIS_DEST}/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/configure.sh"
if [ -x "${CONFIGURE_SCRIPT}" ]; then
echo "=== Running ArcGIS SDK Configuration ==="
echo "Running configure.sh with -a flag to accept EULA for headless install"
# Run configure.sh with -a to accept EULA automatically (headless install)
# The -np flag skips postInstall.sh which integrates with Qt Creator
# Remove -np if Qt Creator integration is needed.
#
# configure.sh is mounted read-only (new_docker_build.sh mounts external:ro),
# so its `sed -i` on ideintegration/*.pri (Qt Creator IDE patching only) fails
# with "Read-only file system" and exits 1. That step is NOT used by the CMake
# build (which consumes ArcGISRuntime.cmake, not the .pri files), and the
# runtime .ini is written to $HOME before it runs. So treat a non-zero exit
# as a warning, not fatal, or the whole build aborts before cmake.
if ! "${CONFIGURE_SCRIPT}" -a -np; then
echo "WARNING: configure.sh returned non-zero (expected: sed -i on the read-only external mount fails)."
echo " The runtime .ini (InstallDir) was written to \$HOME before that step; the .pri"
echo " patching is Qt Creator-only and not needed for the CMake build. Continuing."
else
echo "✓ ArcGIS SDK configuration complete"
fi
else
echo "WARNING: configure.sh not found or not executable at ${CONFIGURE_SCRIPT}"
echo "SDK may not be properly configured for use"
fi
echo "=== ArcGIS SDK Setup Complete ==="