Fix KDReports detection and add codification support for viewer-only builds
- Update FindKDReports.cmake to always use CONFIG mode first with explicit search paths - Add --codification/--no-codification CLI options to new_docker_build.sh - Add BUILD_CODIFICATION to cmake invocation and Docker environment variables - Fix BUILD_GROUP5=ON when BUILD_VIEWER_ONLY is enabled - Exclude LtsFileDialog from viewer-only builds (depends on Group 4 services) - Fix KDReports git clone to use default branch (removed non-existent branch) - Add KDReports symlink creation to Dockerfile for include path compatibility Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
1 parent
fd3e5e8380
commit
b6a97c39e5
2 files changed
+109
-58
No files matched your search
@@ -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)
|
||||
|
||||
@@ -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 \
|
||||
|
||||
Reference in new issue
Block a user