- Update scope section with Release 2 target breakdown (38 targets)
- Update DEB package names from qt6-release-* to guez-*
- Update test suite expectations (13 tests including TetraIF)
- Update build instructions with guez-release2:2.0 Docker image
- Update Steps 4-6 for Release 2 DEB packaging and CI/CD
- Update options reference table with version 2.0
- Add troubleshooting note for Qt modules and build script
Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com>
- Removed duplicate GROUP1_TARGETS definition (lines 306-316)
- Removed duplicate GROUP3_TARGETS definition with 100+ svc* services (lines 318-499)
- Set BUILD_GROUP1 default to OFF (not in Release 2 scope)
- Removed svcCoreClient from GROUP1_TARGETS
- Script reduced from 851 to 669 lines
- Only in-scope targets remain: 24 in GROUP3, 6 in GROUP1, 3 in GROUP5, 1 in GROUP6
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace all /workspace references with ${DOCKER_MOUNT_ROOT} in DEB packaging block
- Add WORKSPACE_DIR variable pointing to qt-migration-legatus subdirectory
- Use WORKSPACE_DIR as tar extraction source to correctly stage workspace files
- Fix output directory paths for RPM and packages-out locations
This fixes the staging error where tar couldn't find /workspace inside the container.
- Changed single quotes to double quotes in printf statement
- Prevents bash syntax error when inline script is passed to docker run -c
- Fixes DEB packaging stage execution failure
- Fix 'log_error: command not found' in DEB packaging stage
- Docker run uses inline bash script with separate function definitions
- Added log_error() after log_info() in Docker inline script (line 712)
- Function executes inside container context where DEB packaging runs
- log_error() function was used in DEB packaging block but not defined
- Added function definition after log_info() at script top
- Fixes 'log_error: command not found' error in DEB packaging stage
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Enable LtsMultiMonitor and PluginInterfaces in Lts/Common/CMakeLists.txt
- Add LtsMultiMonitor, DataPluginInterface, GuiPluginInterface to GROUP3_TARGETS
- Required by LtsSession which is used by LtsWidgets
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Removed pdmTests, eemTests, flmTests, srpFtTests from GROUP3_TARGETS
as they are test executables, not library targets.
Release 2a now contains only 18 library targets:
- 14 NGL/Qt single application libraries
- 2 wms_json_ds, tcpserver
- 2 LtsCoordinate, LtsCoordTrans
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Exclude LtsElevation library (depends on AssetManagement, needed only for Release 2b services)
- Update GROUP3_TARGETS to remove LtsElevation
- Comment out LtsElevation subdirectory in CMakeLists.txt
Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com>
Add Jenkins builder and coverage options:
- --run-jenkins-builder: Enable DEB package production mode
- --package-output-dir: Output directory for .deb packages
- --lts-version: LTS version for package metadata
- --project: Project name (guez)
- --build-number: Build number for package versioning
- --build-tag: Build tag/identifier
- --run-coverage: Enable lcov code coverage
- --coverage-output-dir: Output directory for coverage reports
Add MIGRATE_PIPELINE_ROOT handling with precedence:
1. Exported variable (Jenkinsfile)
2. .envrc file
3. Script location default
Add validation for mutually exclusive options:
- --run-jenkins-builder and --run-coverage cannot be used together
Export all new variables for Docker container and pass to CMake.
Co-authored-by: Copilot <223556619+Copilot@users.noreply.github.com>
- LtsElevation required by Trajectory generator used in svcAesCommon
- Part of core libraries needed for AreaEffectSimulation
- Fixes build error: missing ltselevation_export.h
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Use TARGET_EXISTS generator expressions for external dependencies
- Allows building without Viewer/SituationMap module in Release 2
- Maintains compatibility when those modules are available
- Required by svcAesClient/svcAesCommon for coordinate transformation
- Fixes missing include directories for coordinate transformation library
- Both libraries are core dependencies for AreaEffectSimulation services
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- QPolygonF::isClosed() requires first and last points to be identical
- Added closing point to boundary polygon in test
- Test now correctly validates Qt6 polygon behavior
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Migration Summary:
- Migrated 7 subdirectories: GraphicalObjects, Rubberbands, MathUtils, MapImpl,
SymbologyImpl, Viewshed3D, and Common
- Applied Qt6 API changes: QTouchEvent, Qt::MiddleButton, QFuture continuations
- Updated ArcGIS SDK v300: include paths, identifyGraphicsOverlaysAsync()
- Fixed QList/QVector unification issues in MathUtils
- Replaced QSharedPointer::use_count() with isNull()/data() comparisons
Test Coverage:
- Created 6 new test files following check_pr_policies.py naming conventions
- test_graphical_objects.cpp, test_rubberbands.cpp, test_mathutils.cpp
- test_mapimpl.cpp, test_symbologyimpl.cpp, test_viewshed3d.cpp
- All tests integrated into CMake and CTest
- 42 SituationMap tests passing (695 total tests)
Build Validation:
- Docker build successful with Qt 6.10.2 via aqtinstall
- Fixed LtsDataView dependency order in CMakeLists.txt
- Fixed test paths to use absolute TESTS_DIR
- Removed duplicate main() functions from test files
Documentation:
- Created MIGRATION_STATUS.md with detailed migration status
- Created TEST_REPORT.md with comprehensive test coverage summary
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add (void) cast to QtConcurrent::run calls in base_symbol_model.cpp
- Suppresses Qt6 nodiscard warnings for unused QFuture return values
- Applies to 3 locations where QFuture is used for async callback pattern
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Changed QList<Field>() to {} for Field type compatibility
- Updated signal connection from jobStatusChanged to statusChanged
- Changed addFeature() to addFeatureAsync() with QFutureWatcher pattern
- Removed ACRGIS_VERSION guards (Qt6/SDK v300 only)
- Added QFutureWatcher<void> m_addFeatureWatcher member to header
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace invalidateFilter() with beginFilterChange()/endFilterChange() in lts_column_filter_proxy_model.cpp (3 calls)
- Replace QCheckBox::stateChanged with checkStateChanged in lts_dialog.cpp
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Changed QPointer<MapGraphicsView> to raw pointer MapGraphicsView*
- QPointer in Qt6 requires complete type at point of use, forward declaration insufficient
- MapGraphicsView.h requires GRAPHICSVIEW_SUPPORTED macro which is now defined
- Added GRAPHICSVIEW_SUPPORTED definition guard in overview_map_handler_impl.h
- Updated widget() method to return raw pointer instead of QPointer::data()
- Updated createBasicOverviewMap() to use direct new instead of QPointer constructor
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
MapGraphicsView.h requires GRAPHICSVIEW_SUPPORTED macro to be defined.
Added TARGET_COMPILE_DEFINITIONS to situationMap CMakeLists.txt.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- MapGraphicsView.h requires GRAPHICSVIEW_SUPPORTED macro to be defined
- Macro is normally defined in ArcGISQt_global.h based on Q_OS_LINUX
- Explicitly define GRAPHICSVIEW_SUPPORTED in ArcGIS::ArcGIS target
- Fixes QPointer<MapGraphicsView> incomplete type error in Qt6 builds
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added #include <Multipart.h> to resolve ImmutablePart and ImmutablePartCollection incomplete type errors
- Required for Qt6/ArcGIS SDK v300 compatibility
- LogViewTelegramDialog.hpp: Fixed default parameter to use N_LogView::getLogger()
- LogViewTelegram.cpp: Added logger.h include, fixed both constructor initializations
- getLogger() is defined in N_LogView namespace, not NGL namespace
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add m_logger member variable to LogViewTelegramEdit.hpp
- Initialize m_logger in LogViewTelegramEdit constructor
- Replace Qt::SystemLocaleLongDate with Qt::TextDate for Qt6 compatibility
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- LogViewField.hpp: Changed Logger& to NGL::INGLLogger& for m_logger member
- LogViewInjectionThread.hpp: Changed Logger& to NGL::INGLLogger& for m_logger member
- Both headers already include logger.h which defines LOGGER_T as NGL::INGLLogger&
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Migrated QStringRef to QStringView in LogViewTetraTelegramsParser
- Updated tokenize() function signature and implementation
- Updated bracketCount() helper function
- Updated validStructTokens() function
- Updated parseStruct(), parseEnum(), parseConstraint() functions
- Migrated QStringRef to QStringView in LogViewGui.cpp
- Updated splitRef() to splitView() calls
- Updated QVector<QStringRef> to QVector<QStringView>
- Migrated QStringRef to QStringView in LogViewXdrParser.cpp
- Updated midRef() to mid() calls
- Updated leftRef() to left() calls
- Updated Qt6 include paths: QAbstractTableModel and QModelIndex moved to QtCore
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- LtsTimeline depends on LtsWidgets library which has DDS dependencies
- LtsTimeline is not required for TetraIF/Z release scope modules
- Wrap LtsTimeline in release scope exclusion
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- TrainingAreaBase's tab_plugin_interface.h includes <ProjectDataManagement/pdm.hpp>
- For release builds (RELEASE_BUILD=ON), add stubs directory to include path
- Stub headers provide type definitions without DDS dependencies
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- AdlerJson depends on svcPdmClient (ProjectDataManagement) which is not in release scope
- Wrap ADD_SUBDIRECTORY(AdlerJson) in IF(NOT RELEASE_BUILD) conditional
- Prevents build failure from missing pdm_enums.hpp header
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- svcTabServer library is DDS-dependent and should be excluded in release builds
- Missing ENDIF() caused CMake configuration error at line 177
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- LtsUtilsGui/ConnectDialog links against LtsWidgets which is not in release scope
- Wrap LtsUtilsGui subdirectory in IF(NOT RELEASE_BUILD) conditional
- Only LtsUtilsCore and LtsUtilsSettings are included in release builds
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ngl_codegen is a code generation tool only needed during development
- Not required for release scope builds (TetraIF, Z, Lts/Common subset)
- Fixes persistent 'No rule to make target ngl_codegen' error
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Wrap include_directories for Services, DDS, Plugins, and Proxies/GuezNasat
in IF(NOT RELEASE_BUILD) block to prevent CMake errors when these
directories don't exist in release scope builds
- Keep include paths for release-scope modules (Lts/Common, LtsUtils,
LtsUtilsCore, LtsUtilsSettings, NGLLogger, Viewer/SituationMap) outside
the conditional so they're always available
- This prevents CMake from trying to add non-existent directories when
building with RELEASE_BUILD=ON
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Line 1327 had RELEASE_BUILD="${RELEASE_BUILD:-OFF}" which overwrote
the correct default at line 745 (RELEASE_BUILD="${RELEASE_BUILD:-ON}")
- This caused release scope builds to incorrectly build all modules
instead of just TetraIF, Z, and Lts/Common
- Removed the duplicate assignment to preserve the ON default
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Main CMakeLists.txt line 783 includes MacroCodeGenIdl.cmake unconditionally
- This causes ngl_codegen target reference even when CodeGen module is excluded
- Wrap INCLUDE(MacroCodeGenIdl) in IF(NOT RELEASE_BUILD) to skip for release builds
- Prevents 'make: *** No rule to make target ngl_codegen' error in release scope builds
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added RELEASE_BUILD check to imported ngl_codegen target creation
- Prevents make errors when CodeGen is excluded from release builds
- Release scope modules don't use CODEGEN macros, so target is not needed
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- CodeGen module is excluded from release scope (S set)
- Release scope modules (TetraIF, Z, Lts/Common subset) do not use CODEGEN macros
- Wrapping include and macro call in RELEASE_BUILD conditional prevents ngl_codegen target reference
- Resolves: make: *** No rule to make target 'ngl_codegen'. Stop.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Wrap TopicReplayInterface and RecordReplayPlugin in BUILD_RTI conditional
- These modules require RTI DDS which is not in release scope
- Fixes missing topiceditorbase_export.h error during release builds
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- LtsUtilsGuiDds requires DDS headers not available in release scope
- Only needed by LtsMultiMonitor which is outside release scope
- Wrap ADD_SUBDIRECTORY in RELEASE_BUILD check
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Changed include_directories from ${CMAKE_SOURCE_DIR}/Lts to ${CMAKE_SOURCE_DIR}
- This allows #include <Lts/Common/ProjectConfig/project_defines.h> to resolve correctly
- Required for LtsSession and other modules using ProjectConfig headers
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add /usr/share/cmake/geographiclib to CMAKE_MODULE_PATH
- This allows CMake to find FindGeographicLib.cmake from system package
- Required for DEB build in Docker container
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add LINK_DIRECTORIES() to properly link GeographicLib
- Apply to library, tools, and test targets
- Fixes undefined reference errors during DEB package build
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- TARGET_LINK_DIRECTORIES is not a standard CMake command
- Rely on full path for linking
- Applied to LtsCoordTrans library, tools, and test executable
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Changed from NGL_TARGET_LINK_LIBRARIES to TARGET_LINK_LIBRARIES for GeographicLib
- Added TARGET_LINK_DIRECTORIES to ensure linker finds the library
- Applied to LtsCoordTrans library, tools, and test executable
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Required for DEB package generation in release pipeline
- debuild command was not found in previous run
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Set MIGRATE_PIPELINE_ROOT=/workspace in container script heredoc
- Host path /home/torsten/sandbox/qt6-migration-pipeline maps to /workspace in container
- Fixes jenkins_builder_ubuntu26.sh not found error
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add RUN_JENKINS_BUILDER and packaging variables to container script defaults
- Prevents unbound variable errors when running Jenkins builder inside container
- Includes all GROUP*_TARGETS variables for build group execution
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>