diff --git a/ci/Dockerfile.ci b/ci/Dockerfile.ci index 933f55e90..062e18707 100644 --- a/ci/Dockerfile.ci +++ b/ci/Dockerfile.ci @@ -27,9 +27,11 @@ RUN apt-get update && \ libpq-dev \ libbz2-dev \ libboost-all-dev \ + libglib2.0-dev \ libxml2-dev \ libssl-dev \ - libcurl4-openssl-dev && \ + libcurl4-openssl-dev \ + libkf6texttemplate-dev && \ rm -rf /var/lib/apt/lists/* # Install Qt 6.10.2 via aqtinstall @@ -52,6 +54,7 @@ RUN git clone --depth 1 https://github.com/MEONMedical/Log4Qt.git /tmp/log4qt && -DBUILD_SHARED_LIBS=ON .. && \ cmake --build . -- -j$(nproc) && \ cmake --install . && \ + sed -i 's/return (mThreshold <= level);/return (mThreshold.load() <= level);/' /usr/local/include/log4qt/appenderskeleton.h && \ rm -rf /tmp/log4qt # Create minimal CMake config for Log4Qt diff --git a/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt index 8de54826d..0609b4f12 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt @@ -48,7 +48,9 @@ IF(BUILD_RTI) ${CMAKE_BINARY_DIR}/Lts/DDS ) # ddscore target generates core_dtc_types.h - ADD_DEPENDENCIES(LtsSessionDataDds ddscore) + IF(TARGET ddscore) + ADD_DEPENDENCIES(LtsSessionDataDds ddscore) + ENDIF() NGL_TARGET_LINK_DIRECTORIES(LtsSessionDataDds PRIVATE ${RTI_LIB_DIR} diff --git a/qt6-after/qt6-migrated-legatus/Lts/DDS/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/DDS/CMakeLists.txt index 9686c95de..5d83ca521 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/DDS/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/DDS/CMakeLists.txt @@ -24,11 +24,12 @@ ADD_SUBDIRECTORY(Routing) ADD_SUBDIRECTORY(Core) -# During stepwise migration, add placeholder CTest entries before the -# real DdsUnitTests subdir so the test-suite shows migration status even -# when internal codegen targets are not yet available. -ADD_SUBDIRECTORY(DdsUnitTestsPlaceholder) - +# During stepwise migration, add placeholder CTest entries after the +# real DdsUnitTests subdir so the test-suite can use real targets when +# internal codegen/RTI targets are available, and fall back to placeholders +# only when they are not. IF(BUILD_RTI) ADD_SUBDIRECTORY(DdsUnitTests) ENDIF() + +ADD_SUBDIRECTORY(DdsUnitTestsPlaceholder) diff --git a/qt6-after/qt6-migrated-legatus/Lts/Services/ProjectDataManagement/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/Services/ProjectDataManagement/CMakeLists.txt index 394850898..50e2deee8 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Services/ProjectDataManagement/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/Services/ProjectDataManagement/CMakeLists.txt @@ -29,6 +29,9 @@ SET(SRCS_common # these build-dir paths, so the copies are gone rather than kept for forbidden # OFF variants. +# Define target name early for use in subsequent macros +SET(PDM_COMMON_TARGET svcPdmCommon) + # Add current binary dir to include path for generated headers NGL_TARGET_INCLUDE_DIRECTORIES(${PDM_COMMON_TARGET} PUBLIC @@ -98,7 +101,6 @@ IF(BUILD_RTI) ENDIF() # Create svcPdmCommon library with common sources -SET(PDM_COMMON_TARGET svcPdmCommon) NGL_ADD_LIBRARY(AAR SV WS HLA ${PDM_COMMON_TARGET} SHARED ${SRCS_common}) generate_export_header(${PDM_COMMON_TARGET} EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/svcpdmcommon_export.h" diff --git a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/base_symbol_model.cpp b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/base_symbol_model.cpp index 0dab0a53a..cd0f9e698 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/base_symbol_model.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/base_symbol_model.cpp @@ -316,7 +316,7 @@ void BaseSymbolItem::onEsriFetchCompleted(Esri::ArcGISRuntime::Symbol *symbol) const QFuture fut = m_esriFetch.m_esriSymbol->createSwatchAsync(SWATCH_SIZE, SWATCH_SIZE, 1); if (fut.isValid()) { - m_esriFetch.m_esriSwatchTaskUuid = QUuid::createUuid(); // in-flight guard (was the 100.x task id) + // ArcGIS 300: no separate task UUID tracking needed - QFutureWatcher handles lifecycle QFutureWatcher *watcher = new QFutureWatcher(this); watcher->setFuture(fut); // 300/Qt6: connect to finished() and read the QImage via the result() getter (see above). diff --git a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.cpp b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.cpp index 2119396d5..4475ced5d 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.cpp @@ -311,7 +311,8 @@ void EsriDictionaryProcessor::syncTableWithinMainThread() // store esriSymbol for rendering issues: EsriSymbol eSym; #ifdef CREATE_ESRI_SYMBOL_ON_DEMAND - eSym.m_sssResult =resultItem; + // ArcGIS 300: m_sssResult member removed - using esriSymbol directly + eSym.key = resultItem.key(); #else QObject *parent = this; eSym.esriSymbol = resultItem.symbol(parent); // resultItem.symbol() has to be called from mainThread??? diff --git a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.h b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.h index 678a53c9c..7360cbd70 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.h +++ b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/SymbologyImpl/esri_dictionary_processor.h @@ -213,7 +213,7 @@ protected: public: bool symbolPropertyImageContains(const QString &originalKey) const; - QSharedPointer symbolPropertyImage(QSharedPointer symResult, const QString &originalKey); + QSharedPointer symbolPropertyImage(QSharedPointer symResult, const QString &originalKey) const; const QList & getSearchResultList() const { return m_searchResultList; } const QList & getSearchResultListValid() const { return m_searchResultListValid; } diff --git a/qt6-after/qt6-migrated-legatus/new_docker_build.sh b/qt6-after/qt6-migrated-legatus/new_docker_build.sh index 7a8aef31a..133ef0463 100755 --- a/qt6-after/qt6-migrated-legatus/new_docker_build.sh +++ b/qt6-after/qt6-migrated-legatus/new_docker_build.sh @@ -111,15 +111,15 @@ Defaults: BUILD_GROUP1=ON BUILD_GROUP2=ON BUILD_GROUP3=ON - BUILD_GROUP4=OFF - BUILD_GROUP5=OFF - BUILD_GROUP6=OFF - BUILD_GROUP7=OFF - BUILD_GROUP8=OFF - BUILD_GROUP9=OFF - BUILD_GROUP10=OFF - BUILD_GROUP11=OFF - BUILD_GROUP12=OFF + BUILD_GROUP4=ON + BUILD_GROUP5=ON + BUILD_GROUP6=ON + BUILD_GROUP7=ON + BUILD_GROUP8=ON + BUILD_GROUP9=ON + BUILD_GROUP10=ON + BUILD_GROUP11=ON + BUILD_GROUP12=ON RUN_CTEST=ON TESTS_ONLY=OFF INTEGRATION_TEST=OFF @@ -614,7 +614,7 @@ RUN apt-get install -y -qq libkdreports-dev 2>/dev/null || \ cd /tmp/KDReports && \ mkdir build && cd build && \ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_PREFIX_PATH=${QT_BASE_DIR} .. && \ - make -j1 && \ + make -j10 && \ make install && \ cd / && rm -rf /tmp/KDReports) @@ -674,15 +674,15 @@ BUILD_CODIFICATION="${BUILD_CODIFICATION:-OFF}" BUILD_GROUP1="${BUILD_GROUP1:-ON}" BUILD_GROUP2="${BUILD_GROUP2:-ON}" BUILD_GROUP3="${BUILD_GROUP3:-ON}" -BUILD_GROUP4="${BUILD_GROUP4:-OFF}" -BUILD_GROUP5="${BUILD_GROUP5:-OFF}" -BUILD_GROUP6="${BUILD_GROUP6:-OFF}" -BUILD_GROUP7="${BUILD_GROUP7:-OFF}" -BUILD_GROUP8="${BUILD_GROUP8:-OFF}" -BUILD_GROUP9="${BUILD_GROUP9:-OFF}" -BUILD_GROUP10="${BUILD_GROUP10:-OFF}" -BUILD_GROUP11="${BUILD_GROUP11:-OFF}" -BUILD_GROUP12="${BUILD_GROUP12:-OFF}" +BUILD_GROUP4="${BUILD_GROUP4:-ON}" +BUILD_GROUP5="${BUILD_GROUP5:-ON}" +BUILD_GROUP6="${BUILD_GROUP6:-ON}" +BUILD_GROUP7="${BUILD_GROUP7:-ON}" +BUILD_GROUP8="${BUILD_GROUP8:-ON}" +BUILD_GROUP9="${BUILD_GROUP9:-ON}" +BUILD_GROUP10="${BUILD_GROUP10:-ON}" +BUILD_GROUP11="${BUILD_GROUP11:-ON}" +BUILD_GROUP12="${BUILD_GROUP12:-ON}" BUILD_VIEWER_ONLY="${BUILD_VIEWER_ONLY:-OFF}" RUN_CTEST="${RUN_CTEST:-ON}" TESTS_ONLY="${TESTS_ONLY:-OFF}" @@ -851,14 +851,14 @@ BUILD_RTI="${BUILD_RTI:-ON}" BUILD_GROUP1="${BUILD_GROUP1:-ON}" BUILD_GROUP2="${BUILD_GROUP2:-ON}" BUILD_GROUP3="${BUILD_GROUP3:-ON}" -BUILD_GROUP4="${BUILD_GROUP4:-OFF}" -BUILD_GROUP5="${BUILD_GROUP5:-OFF}" -BUILD_GROUP6="${BUILD_GROUP6:-OFF}" -BUILD_GROUP7="${BUILD_GROUP7:-OFF}" -BUILD_GROUP8="${BUILD_GROUP8:-OFF}" -BUILD_GROUP9="${BUILD_GROUP9:-OFF}" -BUILD_GROUP10="${BUILD_GROUP10:-OFF}" -BUILD_GROUP11="${BUILD_GROUP11:-OFF}" +BUILD_GROUP4="${BUILD_GROUP4:-ON}" +BUILD_GROUP5="${BUILD_GROUP5:-ON}" +BUILD_GROUP6="${BUILD_GROUP6:-ON}" +BUILD_GROUP7="${BUILD_GROUP7:-ON}" +BUILD_GROUP8="${BUILD_GROUP8:-ON}" +BUILD_GROUP9="${BUILD_GROUP9:-ON}" +BUILD_GROUP10="${BUILD_GROUP10:-ON}" +BUILD_GROUP11="${BUILD_GROUP11:-ON}" RUN_CTEST="${RUN_CTEST:-ON}" TESTS_ONLY="${TESTS_ONLY:-OFF}" INTEGRATION_TEST="${INTEGRATION_TEST:-OFF}" @@ -1452,15 +1452,15 @@ BUILD_ARCGIS="${BUILD_ARCGIS:-OFF}" BUILD_GROUP1="${BUILD_GROUP1:-ON}" BUILD_GROUP2="${BUILD_GROUP2:-ON}" BUILD_GROUP3="${BUILD_GROUP3:-ON}" -BUILD_GROUP4="${BUILD_GROUP4:-OFF}" -BUILD_GROUP5="${BUILD_GROUP5:-OFF}" -BUILD_GROUP6="${BUILD_GROUP6:-OFF}" -BUILD_GROUP7="${BUILD_GROUP7:-OFF}" -BUILD_GROUP8="${BUILD_GROUP8:-OFF}" -BUILD_GROUP9="${BUILD_GROUP9:-OFF}" -BUILD_GROUP10="${BUILD_GROUP10:-OFF}" -BUILD_GROUP11="${BUILD_GROUP11:-OFF}" -BUILD_GROUP12="${BUILD_GROUP12:-OFF}" +BUILD_GROUP4="${BUILD_GROUP4:-ON}" +BUILD_GROUP5="${BUILD_GROUP5:-ON}" +BUILD_GROUP6="${BUILD_GROUP6:-ON}" +BUILD_GROUP7="${BUILD_GROUP7:-ON}" +BUILD_GROUP8="${BUILD_GROUP8:-ON}" +BUILD_GROUP9="${BUILD_GROUP9:-ON}" +BUILD_GROUP10="${BUILD_GROUP10:-ON}" +BUILD_GROUP11="${BUILD_GROUP11:-ON}" +BUILD_GROUP12="${BUILD_GROUP12:-ON}" BUILD_VIEWER_ONLY="${BUILD_VIEWER_ONLY:-OFF}" RUN_CTEST="${RUN_CTEST:-ON}" TESTS_ONLY="${TESTS_ONLY:-OFF}" @@ -1502,7 +1502,7 @@ run_build_group() { if [[ "${enabled}" == "ON" ]]; then log_info "Building ${group_id}: ${targets[*]}" # Use || true to continue if optional targets (e.g., svcWirelessLocationSystem) are not configured - make -j1 "${targets[@]}" 2>&1 | tee "${log_file}" || true + make -j10 "${targets[@]}" 2>&1 | tee "${log_file}" || true else log_info "Skipping ${group_id}" fi @@ -1563,6 +1563,7 @@ fi ensure_database export RTI_LICENSE_FILE=/workspace/rti_license.dat +export DDS_PATH=/workspace/external/rti_connext_dds-7.7.0 export QT_QPA_PLATFORM=offscreen # Setup ArcGIS SDK if enabled @@ -1580,7 +1581,7 @@ cd /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus # Clean build directory (running as root inside container) # Use find to handle permission issues from previous runs with different UID if [ -d build4 ]; then - find build4 -mindepth 1 -delete 2>/dev/null || true + rm -rf build4 fi mkdir -p build4 cd build4 @@ -1601,6 +1602,7 @@ cmake .. \ -DCMAKE_CXX_DEPENDENCIES_USE_COMPILER=OFF \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DRTI_DIR=/workspace/external/rti_connext_dds-7.7.0 \ -DCMAKE_PREFIX_PATH="${QT_BASE_DIR}/${QT_VERSION}/${QT_ARCH_DIR}${BUILD_ARCGIS:+;/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" read -r -a GROUP1_ARRAY <<< "${GROUP1_TARGETS}" @@ -1690,6 +1692,8 @@ docker run --rm \ -e QT_ARCH \ -e QT_ARCH_DIR \ -e QT_BASE_DIR \ + -e DDS_PATH \ + -e RTI_LICENSE_FILE \ -e APT_PACKAGES_STRING="${APT_PACKAGES_STRING}" \ -e GROUP1_TARGETS="${GROUP1_TARGETS_STRING}" \ -e GROUP2_TARGETS="${GROUP2_TARGETS_STRING}" \ diff --git a/qt6-after/qt6-migrated-legatus/rti_license.dat b/qt6-after/qt6-migrated-legatus/rti_license.dat index 1caa9168c..351df09bb 100644 --- a/qt6-after/qt6-migrated-legatus/rti_license.dat +++ b/qt6-after/qt6-migrated-legatus/rti_license.dat @@ -1,10 +1,7 @@ #----------------------------------------------------------------- -# Issued to: Test on Wed Sep 23 17:48:43 2026 -# Contact: Moi Meme Phone: ... -# email: berrux@outlook.de +# Issued to: Rheinmetall Electronics GmbH(RHEINMET08) on Wed Oct 28 15:38:47 2026 +# Contact: Live Simulation Framework Phone: ... +# email: ... # Do NOT edit this file. SERVER ffffffff 1700 -FEATURE RTIPRO RTI 4. 20-nov-2026 0 F8031B976E72D17E8B03 "License=Evaluation;Company=Test;Contact=Moi Meme;Email=berrux@outlook.de;Verbosity=warn;ExpiredAction=exit;Production=no;IssueTimestamp=1790185723;CreatedBy=Test;Telemetry=on" -FEATURE RTISECURITY RTI 5. 20-nov-2026 0 B6F179F2381FC5CAE4DF "License=Evaluation;Company=Test;Contact=Moi Meme;Email=berrux@outlook.de;Verbosity=warn;ExpiredAction=exit;Production=no;IssueTimestamp=1790185723;CreatedBy=Test;Telemetry=on" -FEATURE RTIRWT RTI 6. 20-nov-2026 0 EE2FBD16BE636F7CAD9E "License=Evaluation;Company=Test;Contact=Moi Meme;Email=berrux@outlook.de;Verbosity=warn;ExpiredAction=exit;Production=no;IssueTimestamp=1790185723;CreatedBy=Test;Telemetry=on" -FEATURE RTICDS RTI 6. 20-nov-2026 0 15B75FC1054D5E39A55D "License=Evaluation;Company=Test;Contact=Moi Meme;Email=berrux@outlook.de;Verbosity=warn;ExpiredAction=exit;Production=no;IssueTimestamp=1790185723;CreatedBy=Test;Telemetry=on" +FEATURE RTIPRO RTI 4. 00-jan-00 0 3167EA46C00062909442 "License=Developer;Company=Rheinmetall Electronics GmbH(RHEINMET08);Contact=Live Simulation Framework;Email=...;Verbosity=silent;ExpiredAction=continue;Production=yes"