migration: prefer ./external for RTI/ArcGIS; detect RTI arch in FindRTI; install/unpack ArcGIS into ./external

This commit is contained in:
Copilot authored and Torsten Wierschin committed 2026-07-20 12:48:23 +02:00
1 parent fe78be0afa
commit 7c080db59f
4 files changed
+42 -18

No files matched your search

+6 -3
View File
@@ -10,7 +10,8 @@ ENV DEBIAN_FRONTEND=noninteractive \
QT_BASE_DIR=/opt/Qt \
QT_ROOT=/opt/Qt/6.8.3/gcc_64 \
Qt6_ROOT=/opt/Qt/6.8.3/gcc_64 \
CMAKE_PREFIX_PATH=/usr/local:/opt/Qt/6.8.3/gcc_64 \
EXTERNAL_DIR=/repo/external \
CMAKE_PREFIX_PATH=/usr/local:/opt/Qt/6.8.3/gcc_64:/repo/external \
PATH=/opt/Qt/6.8.3/gcc_64/bin:$PATH
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
@@ -42,6 +43,8 @@ RUN apt-get update \
libbz2-dev \
libpoppler-dev \
libpoppler-qt6-dev \
libboost-dev \
unzip \
python3 \
python3-venv \
python3-pip \
@@ -85,8 +88,8 @@ RUN set -eux; \
/app/build_kdreports.sh || true; \
# If libgtest-dev provided sources, build+install them via script
/app/build_gtest.sh || true; \
# geographiclib already installed via apt; RTI (Proprietary) cannot be installed automatically
echo "Note: RTI Connext (RTI) is proprietary and must be installed manually into /opt/RTI if required."
# geographiclib already installed via apt; RTI and ArcGIS are proprietary and installed externally
echo "Note: RTI Connext and ArcGIS Maps SDK are expected to be provided under /repo/external (e.g. /repo/external/rti_connext_dds-7.7.0 and /repo/external/ArcGIS)."
# Add RPM/rpmbuild tools so make_rpm.py can run inside the image when requested
RUN set -eux; \
+9 -3
View File
@@ -6,7 +6,8 @@ set -euo pipefail
# Expects the zip at ../ArcGIS_Maps_SDK_Qt_linux_300.0.0.zip relative to repo root
ZIP_PATH="${1:-../ArcGIS_Maps_SDK_Qt_linux_300.0.0.zip}"
TARGET_DIR="/opt/ArcGIS/MapsSDK_Qt_300.0.0"
# Install into repo-local external by default so SDKs are colocated with RTI under ./external
TARGET_DIR="${2:-./external/ArcGIS/MapsSDK_Qt_300.0.0}"
if [[ ! -f "$ZIP_PATH" ]]; then
echo "ArcGIS zip not found at $ZIP_PATH"
@@ -14,8 +15,13 @@ if [[ ! -f "$ZIP_PATH" ]]; then
exit 1
fi
sudo mkdir -p "$TARGET_DIR"
sudo chown $(id -u):$(id -g) "$TARGET_DIR"
# Create target dir, prefer non-root but fall back to sudo when necessary
if ! mkdir -p "$TARGET_DIR" 2>/dev/null; then
sudo mkdir -p "$TARGET_DIR"
fi
if ! chown $(id -u):$(id -g) "$TARGET_DIR" 2>/dev/null; then
sudo chown $(id -u):$(id -g) "$TARGET_DIR" || true
fi
echo "Extracting $ZIP_PATH to $TARGET_DIR..."
unzip -q "$ZIP_PATH" -d "$TARGET_DIR"
+2 -2
View File
@@ -225,8 +225,8 @@ docker run --rm $DOCKER_TTY_FLAG \
-e WORKDIR_IN_CONTAINER="$WORKDIR_IN_CONTAINER" \
-e QT_ROOT="$QT_ROOT_OVERRIDE" \
-e Qt6_ROOT="$QT_ROOT_OVERRIDE" \
-e CMAKE_PREFIX_PATH="$QT_ROOT_OVERRIDE" \
-e PROJECT_BASE_DIR="${PROJECT_BASE_DIR:-./}" \
-e EXTERNAL_DIR="/repo/external" \
-e CMAKE_PREFIX_PATH="$QT_ROOT_OVERRIDE:/repo/external" \
-e PROJECT_BASE_DIR="${PROJECT_BASE_DIR:-./}" \
"$IMAGE_NAME" \
bash -s -- "${CMD_ARGS[@]}" <<'DOCKER_SCRIPT'
+25 -10
View File
@@ -71,16 +71,31 @@ IF(NOT RTI_DIR)
set(_RTI_DIR_NOT_FOUND TRUE)
set(_RTI_DIR "")
ENDIF()
SET(_rti_gcc_arch "x64Linux3gcc4.8.2")
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0.0)
SET(_rti_gcc_arch "x64Linux3gcc5.4.0")
SET(_tmp "${_RTI_DIR}/lib/${_rti_gcc_arch}")
IF (NOT EXISTS ${_tmp})
SET(_rti_gcc_arch "x64Linux4gcc7.3.0")
ENDIF()
ENDIF()
ENDIF()
SET(_rti_gcc_arch "x64Linux3gcc4.8.2")
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0.0)
# Prefer newer gcc-based RTI builds; try a sequence then fall back to any x64Linux4gcc* dir found under RTI lib
SET(_preferred_archs "x64Linux4gcc8.5.0;x64Linux4gcc7.3.0;x64Linux3gcc5.4.0")
SET(_found_arch "")
foreach(_cand IN LISTS _preferred_archs)
if(EXISTS "${_RTI_DIR}/lib/${_cand}")
SET(_found_arch "${_cand}")
break()
endif()
endforeach()
if(_found_arch STREQUAL "")
# fallback: pick any x64Linux* directory under lib
file(GLOB _rti_arch_dirs RELATIVE "${_RTI_DIR}/lib" "${_RTI_DIR}/lib/x64Linux*")
list(GET _rti_arch_dirs 0 _found_arch)
endif()
if(NOT _found_arch STREQUAL "")
SET(_rti_gcc_arch "${_found_arch}")
else()
# final fallbacks
SET(_rti_gcc_arch "x64Linux4gcc7.3.0")
endif()
ENDIF()
ENDIF()
SET(_arch "${_rti_gcc_arch}")
ENDIF()
SET(RTI_DIR "${_RTI_DIR}" CACHE STRING "RTI base path" FORCE)