diff --git a/qt6-after/qt6-migrated-legatus/cmake/FindKDReports.cmake b/qt6-after/qt6-migrated-legatus/cmake/FindKDReports.cmake index 27677e9e9..d03eb3467 100755 --- a/qt6-after/qt6-migrated-legatus/cmake/FindKDReports.cmake +++ b/qt6-after/qt6-migrated-legatus/cmake/FindKDReports.cmake @@ -8,41 +8,40 @@ if(NOT Qt6_FOUND) endif() set(_qt_prefix "Qt6") -# If KDReports already provided via variables, use them -IF(KDREPORTS_INCLUDE_DIR AND KDREPORTS_KDREPORTS_INCLUDE_DIR AND KDREPORTS_LIBRARY) - SET(KDREPORTS_FOUND TRUE) - SET(KDReports_FOUND TRUE) -ELSE() - # Prefer KDReports-qt6 package config if installed under standard prefixes - if(EXISTS "${CMAKE_PREFIX_PATH}/lib64/cmake/KDReports-qt6" OR EXISTS "/usr/local/lib64/cmake/KDReports-qt6" OR EXISTS "${CMAKE_PREFIX_PATH}/lib/cmake/KDReports-qt6" OR EXISTS "/usr/local/lib/cmake/KDReports-qt6") - message(STATUS "Found KDReports-qt6 package config") - set(KDREPORTS_FOUND TRUE) - set(KDReports_FOUND TRUE) - # Best-effort defaults; specific projects will use the imported target below - set(KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6") - set(KDREPORTS_KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6") - # Check lib64 first, then lib - if(EXISTS "/usr/local/lib64/libkdreports-qt6.so") - set(KDREPORTS_LIBRARY "/usr/local/lib64/libkdreports-qt6.so") - else() - set(KDREPORTS_LIBRARY "/usr/local/lib/libkdreports-qt6.so") - endif() +# Prefer KDReports-qt6 package config if installed under standard prefixes +# Search in common installation locations for KDReports cmake config +list(APPEND CMAKE_PREFIX_PATH /usr/local /usr) +find_package(KDReports-qt6 CONFIG QUIET PATHS /usr/local/lib/cmake/KDReports-qt6 /usr/local/lib64/cmake/KDReports-qt6 /usr/lib/cmake/KDReports-qt6 /usr/lib64/cmake/KDReports-qt6) +if(KDReports-qt6_FOUND OR KDReports-qt6_CONFIG) + message(STATUS "Found KDReports-qt6 package config") + set(KDREPORTS_FOUND TRUE) + set(KDReports_FOUND TRUE) + # KDReports-qt6 config provides KDReports::KDReports imported target + # Set variables for compatibility with code that uses them + set(KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6") + set(KDREPORTS_KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6") + # Check lib64 first, then lib + if(EXISTS "/usr/local/lib64/libkdreports-qt6.so") + set(KDREPORTS_LIBRARY "/usr/local/lib64/libkdreports-qt6.so") else() - FIND_PATH(KDREPORTS_INCLUDE_DIR KDReports/KDReports.h) - FIND_PATH(KDREPORTS_KDREPORTS_INCLUDE_DIR KDReports.h PATH_SUFFIXES KDReports) - FIND_LIBRARY(KDREPORTS_LIBRARY NAMES kdreports kdreport kdreports-qt6) - - INCLUDE(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(KDReports DEFAULT_MSG - KDREPORTS_LIBRARY - KDREPORTS_INCLUDE_DIR - KDREPORTS_KDREPORTS_INCLUDE_DIR - ) - - MARK_AS_ADVANCED(KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) - MARK_AS_ADVANCED(KDREPORTS_KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) + set(KDREPORTS_LIBRARY "/usr/local/lib/libkdreports-qt6.so") endif() -ENDIF() +else() + # Search both /usr and /usr/local for apt-installed or manually built KDReports + FIND_PATH(KDREPORTS_INCLUDE_DIR KDReports/KDReports.h PATHS /usr/include /usr/local/include) + FIND_PATH(KDREPORTS_KDREPORTS_INCLUDE_DIR KDReports.h PATH_SUFFIXES KDReports PATHS /usr/include /usr/local/include) + FIND_LIBRARY(KDREPORTS_LIBRARY NAMES kdreports kdreport kdreports-qt6 PATHS /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64) + + INCLUDE(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(KDReports DEFAULT_MSG + KDREPORTS_LIBRARY + KDREPORTS_INCLUDE_DIR + KDREPORTS_KDREPORTS_INCLUDE_DIR + ) + + MARK_AS_ADVANCED(KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) + MARK_AS_ADVANCED(KDREPORTS_KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) +endif() IF(NOT TARGET KDReports::KDReports) ADD_LIBRARY(KDReports::KDReports UNKNOWN IMPORTED) diff --git a/qt6-after/qt6-migrated-legatus/new_docker_build.sh b/qt6-after/qt6-migrated-legatus/new_docker_build.sh index 65c31684e..9e09c54c6 100755 --- a/qt6-after/qt6-migrated-legatus/new_docker_build.sh +++ b/qt6-after/qt6-migrated-legatus/new_docker_build.sh @@ -33,6 +33,9 @@ BUILD_GRANTLEE: BUILD_ARCGIS: --arcgis / --no-arcgis Enable/disable BUILD_ARCGIS (default: OFF) +BUILD_CODIFICATION: + --codification / --no-codification Enable/disable BUILD_CODIFICATION (default: OFF, requires KDReports) + Build groups: --group1 / --no-group1 Enable/disable DDS core libraries build --group2 / --no-group2 Enable/disable migration_tests build @@ -61,6 +64,7 @@ Environment variable overrides: BUILD_RTI=ON|OFF BUILD_GRANTLEE=ON|OFF BUILD_ARCGIS=ON|OFF + BUILD_CODIFICATION=ON|OFF BUILD_GROUP1=ON|OFF BUILD_GROUP2=ON|OFF BUILD_GROUP3=ON|OFF @@ -84,6 +88,7 @@ Defaults: BUILD_RTI=ON BUILD_GRANTLEE=ON BUILD_ARCGIS=OFF + BUILD_CODIFICATION=OFF BUILD_GROUP1=ON BUILD_GROUP2=ON BUILD_GROUP3=ON @@ -362,6 +367,17 @@ RUN pip3 install --break-system-packages --quiet aqtinstall && \ --outputdir ${QT_BASE_DIR} && \ rm -rf /root/.cache/Aqt +# Install KDReports from source (apt package not available in Ubuntu 22.04/26.04) +# Try apt install first (will fail), then build from KDAB GitHub mirror +RUN apt-get install -y -qq libkdreports-dev 2>/dev/null || \ + (git clone --depth 1 https://github.com/KDAB/KDReports.git /tmp/KDReports && \ + cd /tmp/KDReports && \ + mkdir build && cd build && \ + cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_PREFIX_PATH=${QT_BASE_DIR} .. && \ + make -j$(nproc) && \ + make install && \ + cd / && rm -rf /tmp/KDReports) + CMD ["/bin/bash"] EOF @@ -406,6 +422,7 @@ BUILD_ALL="${BUILD_ALL:-ON}" BUILD_RTI="${BUILD_RTI:-ON}" BUILD_GRANTLEE="${BUILD_GRANTLEE:-ON}" BUILD_ARCGIS="${BUILD_ARCGIS:-OFF}" +BUILD_CODIFICATION="${BUILD_CODIFICATION:-OFF}" BUILD_GROUP1="${BUILD_GROUP1:-ON}" BUILD_GROUP2="${BUILD_GROUP2:-ON}" BUILD_GROUP3="${BUILD_GROUP3:-ON}" @@ -418,11 +435,6 @@ INTEGRATION_TEST="${INTEGRATION_TEST:-OFF}" USE_PREBUILT_IMAGE="${USE_PREBUILT_IMAGE:-OFF}" BUILD_PREBUILT_IMAGE="${BUILD_PREBUILT_IMAGE:-OFF}" DELETE_PREBUILT_IMAGE="${DELETE_PREBUILT_IMAGE:-OFF}" -if [[ "${USE_PREBUILT_IMAGE}" == "ON" ]]; then - DOCKER_IMAGE="${DOCKER_IMAGE:-qt-migration-builder:latest}" -else - DOCKER_IMAGE="${DOCKER_IMAGE:-ubuntu:26.04}" -fi export QT_VERSION="${QT_VERSION:-6.10.2}" export QT_ARCH="${QT_ARCH:-linux_gcc_64}" # aqtinstall uses 'linux_gcc_64' but creates directory 'gcc_64' @@ -487,6 +499,12 @@ while [[ $# -gt 0 ]]; do --no-arcgis) BUILD_ARCGIS=OFF ;; + --codification) + BUILD_CODIFICATION=ON + ;; + --no-codification) + BUILD_CODIFICATION=OFF + ;; --no-ctest) RUN_CTEST=OFF ;; @@ -541,6 +559,7 @@ BUILD_ALL="$(normalize_on_off "$BUILD_ALL" "BUILD_ALL")" BUILD_RTI="$(normalize_on_off "$BUILD_RTI" "BUILD_RTI")" BUILD_GRANTLEE="$(normalize_on_off "$BUILD_GRANTLEE" "BUILD_GRANTLEE")" BUILD_ARCGIS="$(normalize_on_off "$BUILD_ARCGIS" "BUILD_ARCGIS")" +BUILD_CODIFICATION="$(normalize_on_off "$BUILD_CODIFICATION" "BUILD_CODIFICATION")" BUILD_GROUP1="$(normalize_on_off "$BUILD_GROUP1" "BUILD_GROUP1")" BUILD_GROUP2="$(normalize_on_off "$BUILD_GROUP2" "BUILD_GROUP2")" BUILD_GROUP3="$(normalize_on_off "$BUILD_GROUP3" "BUILD_GROUP3")" @@ -554,29 +573,60 @@ USE_PREBUILT_IMAGE="$(normalize_on_off "$USE_PREBUILT_IMAGE" "USE_PREBUILT_IMAGE BUILD_PREBUILT_IMAGE="$(normalize_on_off "$BUILD_PREBUILT_IMAGE" "BUILD_PREBUILT_IMAGE")" DELETE_PREBUILT_IMAGE="$(normalize_on_off "$DELETE_PREBUILT_IMAGE" "DELETE_PREBUILT_IMAGE")" +# Set DOCKER_IMAGE default after argument parsing +if [[ "${USE_PREBUILT_IMAGE}" == "ON" ]]; then + DOCKER_IMAGE="${DOCKER_IMAGE:-legatus-qt6-prebuilt:latest}" +else + DOCKER_IMAGE="${DOCKER_IMAGE:-ubuntu:26.04}" +fi + # Export variables for Docker container -export BUILD_ALL BUILD_RTI BUILD_GRANTLEE BUILD_ARCGIS BUILD_GROUP1 BUILD_GROUP2 BUILD_GROUP3 BUILD_GROUP4 BUILD_GROUP5 BUILD_VIEWER_ONLY RUN_CTEST TESTS_ONLY INTEGRATION_TEST USE_PREBUILT_IMAGE BUILD_PREBUILT_IMAGE DELETE_PREBUILT_IMAGE DOCKER_IMAGE +export BUILD_ALL BUILD_RTI BUILD_GRANTLEE BUILD_ARCGIS BUILD_CODIFICATION BUILD_GROUP1 BUILD_GROUP2 BUILD_GROUP3 BUILD_GROUP4 BUILD_GROUP5 BUILD_VIEWER_ONLY RUN_CTEST TESTS_ONLY INTEGRATION_TEST USE_PREBUILT_IMAGE BUILD_PREBUILT_IMAGE DELETE_PREBUILT_IMAGE DOCKER_IMAGE # Group 5: Viewer module targets (conditional on BUILD_ARCGIS) +# Note: LtsFileDialog excluded from viewer-only builds due to Group 4 dependencies (svcExmCommon, svcOpmCommon, svcFlmCommon) if [[ "${BUILD_ARCGIS}" == "ON" ]]; then - GROUP5_TARGETS=( - # Viewer module with ArcGIS - situationMapCommon - advancedSymbology - advancedSymbologyXML - LtsDataView - LtsFileDialog - LtsReportDisplay - ) + if [[ "${BUILD_VIEWER_ONLY}" == "ON" ]]; then + # Viewer-only build: exclude LtsFileDialog (requires Group 4 services) + GROUP5_TARGETS=( + # Viewer module with ArcGIS (viewer-only subset) + situationMapCommon + advancedSymbology + advancedSymbologyXML + LtsDataView + LtsReportDisplay + ) + else + GROUP5_TARGETS=( + # Viewer module with ArcGIS (full build) + situationMapCommon + advancedSymbology + advancedSymbologyXML + LtsDataView + LtsFileDialog + LtsReportDisplay + ) + fi else - GROUP5_TARGETS=( - # Viewer module without ArcGIS (advancedSymbology requires ArcGIS) - situationMapCommon - advancedSymbologyXML - LtsDataView - LtsFileDialog - LtsReportDisplay - ) + if [[ "${BUILD_VIEWER_ONLY}" == "ON" ]]; then + # Viewer-only build: exclude LtsFileDialog (requires Group 4 services) + GROUP5_TARGETS=( + # Viewer module without ArcGIS (viewer-only subset, advancedSymbology requires ArcGIS) + situationMapCommon + advancedSymbologyXML + LtsDataView + LtsReportDisplay + ) + else + GROUP5_TARGETS=( + # Viewer module without ArcGIS (full build) + situationMapCommon + advancedSymbologyXML + LtsDataView + LtsFileDialog + LtsReportDisplay + ) + fi fi require_non_empty "${DOCKER_IMAGE}" "DOCKER_IMAGE" @@ -743,9 +793,10 @@ cmake .. \ -DBUILD_RTI="${BUILD_RTI}" \ -DBUILD_GRANTLEE="${BUILD_GRANTLEE}" \ -DBUILD_ARCGIS="${BUILD_ARCGIS}" \ + -DBUILD_CODIFICATION="${BUILD_CODIFICATION}" \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_BUILD_TYPE=Release \ - -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}" + -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}" read -r -a GROUP2_ARRAY <<< "${GROUP2_TARGETS}" @@ -760,9 +811,9 @@ if [[ "${TESTS_ONLY}" != "ON" ]]; then BUILD_GROUP2=OFF BUILD_GROUP3=OFF BUILD_GROUP4=OFF + BUILD_GROUP5=ON fi run_build_group "Group 1" "${BUILD_GROUP1}" "group1_build.log" "${GROUP1_ARRAY[@]}" - run_build_group "Group 4 (DDS Tests)" "${BUILD_GROUP4}" "group4_build.log" "${GROUP4_ARRAY[@]}" run_build_group "Group 2" "${BUILD_GROUP2}" "group2_build.log" "${GROUP2_ARRAY[@]}" run_build_group "Group 3" "${BUILD_GROUP3}" "group3_build.log" "${GROUP3_ARRAY[@]}" run_build_group "Group 4" "${BUILD_GROUP4}" "group4_build.log" "${GROUP4_ARRAY[@]}" @@ -793,6 +844,7 @@ docker run --rm \ -e BUILD_RTI \ -e BUILD_GRANTLEE \ -e BUILD_ARCGIS \ + -e BUILD_CODIFICATION \ -e BUILD_GROUP1 \ -e BUILD_GROUP2 \ -e BUILD_GROUP3 \