Compare commits

..
Author SHA1 Message Date
torstenandCopilot 2f00e35a45 filter: Apply Release 2 scope - 52 targets for GROUP3
Remove 126 excluded modules from GROUP3_TARGETS:
- AlarmManagement, AssetManagement, AudioVideoManagement
- CentralEffectSimulation (including svcAreaEffectSimulation)
- CodificationManagement, EffectShowManagement, Evaluations
- ExerciseEventManagement, FileManagement, FilterManagement
- GuezIedManagement, InfrastructureManagement, MarkerManagement
- Messaging, MeteoDataManagement, NotificationManagement
- NmeaManagement, OcBaseDownload, OcSituationClient/Server
- OnlineReports, OperatorManagement, PlanEditor
- PresentationManagement, ProjectionWorkstation
- RecordingManagement, ReportManagement, RoutingServiceNG
- ServiceManagement, ScreenRecording, ServiceMonitor
- SituationMap, SituationReplayManagement, SoundManagement
- TargetManagement, VideoOverlayManagement, WarehouseGuez

Kept 52 Release 2 targets:
- Core libs: NGL*, ngl*, qtsingle*, wms_json_ds, tcpserver
- Lts libs: LtsCoordinate, LtsCoordTrans, LtsElevation
- AP3 services: Pdm, Aes, Bld, Eem, Esc, Esm, Flm, Gmp, Obd, Osc, Oss
- AP9 tools: MapDummy, PedDummy, SituationReplay, Srp
- Tests: pdmTests, eemTests, flmTests, srpFtTests

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-11 23:10:02 +00:00
torsten 28a1819330 Remove svcAreaEffectSimulation from Release 2 (depends on excluded CentralEffectSimulation) 2026-11-11 22:46:34 +00:00
torstenandCopilot 1ca9f74c6f Add LtsElevation to GROUP3_TARGETS for Trajectory dependency
- 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>
2026-11-11 22:18:04 +00:00
torstenandCopilot c397aa12f5 Filter GROUP3_TARGETS to Release 2 scope (65 targets)
Remove 113 excluded modules from Release 2 scope:
- AlarmManagement (svcAlm*)
- AssetManagement (svcAsm*)
- AudioVideoManagement (svcAvm*)
- CentralEffectSimulation (svcCes*)
- CodificationManagement (svcCod*)
- EffectShowManagement (svcEffectShow*)
- Evaluations (svcEvl*, evlTests)
- ExerciseEventManagement (svcEem* -> keep only svcEem*, remove svcExerciseEventManagement)
- FileManagement (svcFileManagement)
- FilterManagement (svcFlt*)
- GuezIedManagement (svcGim*)
- InfrastructureManagement (svcIsm*)
- MarkerManagement (svcMrk*)
- Messaging (svcMessaging)
- MeteoDataManagement (svcMdm*)
- NotificationManagement (svcNom*, svcNotificationManagement)
- NmeaManagement (svcNme*)
- OcBaseDownload (svcOcBaseDownload)
- OcSituationClient/Server (svcOcSituation*)
- OnlineReports (svcOreDummy)
- OperatorManagement (svcOpm*)
- PlanEditor (svcPedDummy)
- PresentationManagement (svcPre*)
- ProjectionWorkstation (svcPwsCommon)
- RecordingManagement (svcRecCommon, svcRecordingManagement)
- ReportManagement (svcRep*, svcReportAnalyzer, svcReportGenerator)
- RoutingServiceNG (svcSrmCommon)
- ServiceManagement (svcScm*, svcServiceManagement)
- SituationMap (svcSituationMap*)
- SituationReplayManagement (svcSrp* -> keep, remove management)
- SoundManagement (svcSom*)
- TargetManagement (svcTgt*)
- VideoOverlayManagement (svcVideoOverlayManagement)
- WarehouseGuez (svcWhg*)

Keep only essential Release 2 targets for AP3 scope.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-11 22:13:24 +00:00
torsten 3d91d27c49 Fix svcAesCommon: make situationMapElevationMap and Trajectory conditional
- Use TARGET_EXISTS generator expressions for external dependencies
- Allows building without Viewer/SituationMap module in Release 2
- Maintains compatibility when those modules are available
2026-11-11 21:37:09 +00:00
torstenandCopilot 59d1ef5b61 Include LtsCoordinate for Release 2 build
Required dependency for svcAesClient/svcAesCommon
Part of AP3 shared libraries scope

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-11 21:19:08 +00:00
torstenandCopilot 635f063824 Add LtsCoordinate and LtsCoordTrans to GROUP3_TARGETS
- 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>
2026-11-11 21:09:09 +00:00
torstenandCopilot 360e981042 Fix Release 2 build script: correct variable passing and Docker exports
- Fixed CMake -DBUILD_GROUP* flags: removed extra quotes causing string literals
- Fixed build_group function calls: removed extra quotes around variables
- Added missing Docker environment variable exports for BUILD_GROUP1/3/5/6
- These fixes ensure Release 2 scope (AP3, AP4, AP9) builds correctly

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-11 16:31:01 +00:00
torsten 92f1f29893 Adds tmp deb folder 2026-11-11 09:46:31 +00:00
torsten 0459d64ef8 Provides release 2 first iteration 2026-11-11 09:45:04 +00:00
10 changed files with 695 additions and 278 deletions

No files matched your search

@@ -14,3 +14,4 @@ build/
build2/
.envrc
build4
deb_build_tmp
@@ -16,7 +16,9 @@ else()
endif()
# Add only existing subdirectories to allow partial checkouts / incremental migration
set(LTS_SUBDIRS Tools Application DDS Common Services Proxies Plugins Viewer Projects)
# Release 2 scope: Tools, DDS, Common, Services (minimal), Proxies (TrainingAreaBase only), Plugins (Styles only for LtsWidgets dependency)
# Excluded: Application, Viewer, Projects, most Plugins (not in Release 2)
set(LTS_SUBDIRS Tools DDS Common Services Proxies Plugins)
foreach(dir IN LISTS LTS_SUBDIRS)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${dir}")
# Use guarded add so top-level MIGRATE_MODULE can restrict which Lts subdirs are included
@@ -4,30 +4,22 @@
# $Author$
#
# Release 2 Common modules (S set: 16 modules)
ADD_SUBDIRECTORY(CodeGen)
ADD_SUBDIRECTORY(httq)
ADD_SUBDIRECTORY(LtsAppDescriptor)
ADD_SUBDIRECTORY(LtsAppManager)
ADD_SUBDIRECTORY(LtsCommandLineParser)
ADD_SUBDIRECTORY(LtsCoordinate)
ADD_SUBDIRECTORY(LtsCoordTrans)
ADD_SUBDIRECTORY(LtsCoordinate)
ADD_SUBDIRECTORY(LtsElevation)
ADD_SUBDIRECTORY(LtsLicence)
ADD_SUBDIRECTORY(LtsLogin)
ADD_SUBDIRECTORY(LtsMultiMonitor)
ADD_SUBDIRECTORY(LtsNotification)
ADD_SUBDIRECTORY(LtsPluginManager)
ADD_SUBDIRECTORY(LtsPrinting)
ADD_SUBDIRECTORY(LtsProjectionWorkstation)
ADD_SUBDIRECTORY(LtsRestClient)
ADD_SUBDIRECTORY(LtsScriptTimeline)
ADD_SUBDIRECTORY(LtsSerialPortQuerry)
ADD_SUBDIRECTORY(LtsSession)
ADD_SUBDIRECTORY(LtsTimeline)
ADD_SUBDIRECTORY(LtsUtils)
ADD_SUBDIRECTORY(LtsVirtualKeyboard)
ADD_SUBDIRECTORY(LtsWebSocket)
ADD_SUBDIRECTORY(LtsWidgets)
ADD_SUBDIRECTORY(PluginInterfaces)
ADD_SUBDIRECTORY(ProjectConfig)
ADD_SUBDIRECTORY(TopicEditorBase)
# Excluded from Release 2: LtsAppManager, LtsCoordinate, LtsLogin, LtsMultiMonitor, LtsPrinting, LtsProjectionWorkstation, LtsScriptTimeline, LtsTimeline, LtsVirtualKeyboard, PluginInterfaces
@@ -23,85 +23,6 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../include/LtsSession/)
# Add TopicEditorBase stub headers
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../include/TopicEditorBase/)
ADD_SUBDIRECTORY(AdvancedSymbology)
ADD_SUBDIRECTORY(AppStarter)
ADD_SUBDIRECTORY(AreaEffectSimulation)
ADD_SUBDIRECTORY(AssetManagement)
ADD_SUBDIRECTORY(AudioVideoManagement) # uses old ifc !
ADD_SUBDIRECTORY(Battery)
ADD_SUBDIRECTORY(Buildings)
ADD_SUBDIRECTORY(BuildingViewer) # uses ZW connections (uses sql, ace, ..)
ADD_SUBDIRECTORY(CentralEffectSimulation)
IF(BUILD_CODIFICATION)
ADD_SUBDIRECTORY(CodificationManagement)
ADD_SUBDIRECTORY(CodificationManagement/Test)
ENDIF()
ADD_SUBDIRECTORY(CollateralDamageSimulation)
ADD_SUBDIRECTORY(EffectManagement)
ADD_SUBDIRECTORY(EffectShowClient)
ADD_SUBDIRECTORY(EffectShowManagement)
ADD_SUBDIRECTORY(Evaluations)
IF(BUILD_RTI)
ADD_SUBDIRECTORY(ExerciseManagement)
ENDIF()
ADD_SUBDIRECTORY(FileManagement)
IF(BUILD_FILTERMANAGEMENT)
ADD_SUBDIRECTORY(FilterManagement)
ENDIF()
ADD_SUBDIRECTORY(FreeSpace)
ADD_SUBDIRECTORY(GuezIedManagement)
IF(BUILD_RTI)
ADD_SUBDIRECTORY(GuezNasat)
ENDIF()
ADD_SUBDIRECTORY(InfrastructureManagement) # ResMgt uses nglwidgets => NGLTreeModel
ADD_SUBDIRECTORY(MarkerManagement)
ADD_SUBDIRECTORY(Messaging)
ADD_SUBDIRECTORY(MeteoDataManagement)
ADD_SUBDIRECTORY(NmeaManagement)
ADD_SUBDIRECTORY(NotificationManagement)
ADD_SUBDIRECTORY(OcBaseDownload)
ADD_SUBDIRECTORY(OcSituationClient)
ADD_SUBDIRECTORY(OnlineReports)
ADD_SUBDIRECTORY(OperatorManagement)
IF(BUILD_RTI)
ADD_SUBDIRECTORY(ParticipantManagement) # includes ParticipantOrgChart (conditionally built)
ENDIF()
# PlanEditor requires WebEngine + ArcGIS - skip for Qt6 migration baseline
IF(BUILD_PLUGINS_PLANEDITOR)
ADD_SUBDIRECTORY(PlanEditor)
ENDIF()
ADD_SUBDIRECTORY(PlanOverlays)
IF(BUILD_RTI)
ADD_SUBDIRECTORY(PresentationManagement)
ENDIF()
ADD_SUBDIRECTORY(ProjectDataManagement)
ADD_SUBDIRECTORY(ProjectionWorkstation)
ADD_SUBDIRECTORY(ReportManagement)
ADD_SUBDIRECTORY(SAAs)
ADD_SUBDIRECTORY(ScreenRecording)
ADD_SUBDIRECTORY(ServiceManagement)
# ServiceMonitor requires WebEngine - skip for Qt6 migration baseline
IF(BUILD_PLUGINS_SERVICEMONITOR)
ADD_SUBDIRECTORY(ServiceMonitor)
ENDIF()
ADD_SUBDIRECTORY(SituationMapPlugin)
ADD_SUBDIRECTORY(SituationReplay)
ADD_SUBDIRECTORY(SituationReplayManagement)
# Release 2: Only Styles plugin needed for LtsWidgets dependency (TabBarTabStyle)
ADD_SUBDIRECTORY(Styles)
ADD_SUBDIRECTORY(TargetManagement)
ADD_SUBDIRECTORY(Timeline)
ADD_SUBDIRECTORY(TrainingAreaBase)
ADD_SUBDIRECTORY(TakeHomePackageManager)
ADD_SUBDIRECTORY(TrainingAreaBaseOC)
ADD_SUBDIRECTORY(AlarmManagement)
ADD_SUBDIRECTORY(DeveloperTools)
ADD_SUBDIRECTORY(ComponentMonitor)
#ADD_SUBDIRECTORY(ObserverController)
ADD_SUBDIRECTORY(VirtualKeyboard)
IF(GUEZ_MODE)
ADD_SUBDIRECTORY(WarehouseManagement)
ENDIF()
# OnlineHelp requires WebEngine - skip for Qt6 migration baseline
IF(BUILD_PLUGINS_ONLINEHELP)
ADD_SUBDIRECTORY(OnlineHelp)
ENDIF()
# Excluded from Release 2: All other plugins (AdvancedSymbology, AppStarter, AreaEffectSimulation, etc.)
@@ -4,30 +4,7 @@
# $Author:
#
OPTION(BUILD_SVC_HLA "Build service HighLevelArchitecture (default: OFF)" OFF)
OPTION(BUILD_WLS "Build service WirelessLocationSystem (default: OFF)" OFF)
IF(BUILD_RTI)
ADD_SUBDIRECTORY(Buildings)
ADD_SUBDIRECTORY(WarehouseManagement)
ENDIF()
# TrainingAreaBase is a core dependency - always include it when Proxies is included
# Release 2 Proxies modules (S set: TrainingAreaBase only)
# TrainingAreaBase is a core dependency from first-release scope - always include it
ADD_SUBDIRECTORY(TrainingAreaBase) # sql
IF(BUILD_RTI)
ADD_SUBDIRECTORY(TrainingAreaBaseOC)
ENDIF()
ADD_SUBDIRECTORY(CombatNetRadio)
ADD_SUBDIRECTORY(DifferentialGPS)
IF(BUILD_RTI)
ADD_SUBDIRECTORY(GuezNasat) # rpcgen
ENDIF()
IF(BUILD_RTI)
ADD_SUBDIRECTORY(ComponentMonitor)
ENDIF()
IF (BUILD_WLS)
ADD_SUBDIRECTORY(WirelessLocationSystem)
ENDIF()
# Excluded from Release 2: Buildings, WarehouseManagement, TrainingAreaBaseOC, CombatNetRadio, DifferentialGPS, GuezNasat, ComponentMonitor, WirelessLocationSystem
@@ -118,8 +118,8 @@ if(QT6_GUI_AVAILABLE)
NGLLogger
nglsettings
ngltools
situationMapElevationMap
Trajectory
$<IF:$<TARGET_EXISTS:situationMapElevationMap>,situationMapElevationMap,>
$<IF:$<TARGET_EXISTS:Trajectory>,Trajectory,>
ngldb
)
endif()
@@ -4,53 +4,10 @@
# $Author:
#
# InfrastructureManagement muss zuerst gebaut werden (svcIsmCommon wird von anderen Services benötigt)
ADD_SUBDIRECTORY(InfrastructureManagement)
ADD_SUBDIRECTORY(AlarmManagement)
ADD_SUBDIRECTORY(AreaEffectSimulation)
ADD_SUBDIRECTORY(AudioVideoManagement)
ADD_SUBDIRECTORY(AssetManagement)
ADD_SUBDIRECTORY(CentralEffectSimulation)
ADD_SUBDIRECTORY(CodificationManagement)
ADD_SUBDIRECTORY(EffectShowManagement)
ADD_SUBDIRECTORY(EffectShowClient)
ADD_SUBDIRECTORY(Evaluations)
# Release 2 Services modules (S set: 3 directories, 6 service modules)
# Required by AP9 generator tools and TrainingAreaBase
ADD_SUBDIRECTORY(ExerciseManagement)
ADD_SUBDIRECTORY(ExerciseEventManagement)
ADD_SUBDIRECTORY(FileManagement)
ADD_SUBDIRECTORY(FilterManagement)
ADD_SUBDIRECTORY(GuezIedManagement)
ADD_SUBDIRECTORY(GuezMinelayerProcessing)
ADD_SUBDIRECTORY(MarkerManagement)
ADD_SUBDIRECTORY(Messaging)
ADD_SUBDIRECTORY(MeteoDataManagement)
ADD_SUBDIRECTORY(NotificationManagement)
ADD_SUBDIRECTORY(NmeaManagement)
ADD_SUBDIRECTORY(OcBaseDownload)
ADD_SUBDIRECTORY(OcSituationClient)
ADD_SUBDIRECTORY(OcSituationServer)
ADD_SUBDIRECTORY(OnlineReports)
ADD_SUBDIRECTORY(OperatorManagement)
ADD_SUBDIRECTORY(ParticipantManagement)
ADD_SUBDIRECTORY(PlanEditor)
ADD_SUBDIRECTORY(PresentationManagement)
ADD_SUBDIRECTORY(ProjectDataManagement)
ADD_SUBDIRECTORY(ProjectionWorkstation)
ADD_SUBDIRECTORY(RecordingManagement)
ADD_SUBDIRECTORY(ReportManagement)
ADD_SUBDIRECTORY(RoutingServiceNG)
ADD_SUBDIRECTORY(ServiceManagement)
ADD_SUBDIRECTORY(ScreenRecording)
ADD_SUBDIRECTORY(ServiceMonitor)
ADD_SUBDIRECTORY(SituationMap)
ADD_SUBDIRECTORY(SituationReplayManagement)
ADD_SUBDIRECTORY(SituationReplay)
ADD_SUBDIRECTORY(SoundManagement)
ADD_SUBDIRECTORY(TargetManagement)
IF (NOT BUILD_RPM)
ADD_SUBDIRECTORY(VideoOverlayManagement)
ENDIF()
IF(GUEZ_MODE)
ADD_SUBDIRECTORY(WarehouseGuez)
ENDIF()
# Excluded from Release 2: InfrastructureManagement, AlarmManagement, AreaEffectSimulation, AudioVideoManagement, AssetManagement, CentralEffectSimulation, CodificationManagement, EffectShowManagement, EffectShowClient, Evaluations, ExerciseEventManagement, FileManagement, FilterManagement, GuezIedManagement, GuezMinelayerProcessing, MarkerManagement, Messaging, MeteoDataManagement, NotificationManagement, NmeaManagement, OcBaseDownload, OcSituationClient, OcSituationServer, OnlineReports, OperatorManagement, PlanEditor, PresentationManagement, ProjectionWorkstation, RecordingManagement, ReportManagement, RoutingServiceNG, ServiceManagement, ScreenRecording, ServiceMonitor, SituationMap, SituationReplayManagement, SituationReplay, SoundManagement, TargetManagement, VideoOverlayManagement, WarehouseGuez
NGL_INSTALL(AAR SV FILES "alias" DESTINATION "." RENAME ".alias")
@@ -4,65 +4,13 @@
# $Author$
#
ADD_SUBDIRECTORY(Adler)
ADD_SUBDIRECTORY(AsmWorkstationCertifier)
ADD_SUBDIRECTORY(CnrProxyTester)
ADD_SUBDIRECTORY(ConfigX)
# Release 2 Tools modules (S set: 7 tools + TopicDiscover)
# AP9 scope: DdsView, LogViewer, SqlBrowser, 3 generators, lupdate
ADD_SUBDIRECTORY(DataSampleGenerator)
ADD_SUBDIRECTORY(DataSampleReceiver)
ADD_SUBDIRECTORY(DBAdministration)
ADD_SUBDIRECTORY(DBOperatorSettingsRemover)
ADD_SUBDIRECTORY(DdsView)
ADD_SUBDIRECTORY(DotMatrixDisplay)
ADD_SUBDIRECTORY(EEMFakeServer)
ADD_SUBDIRECTORY(LicenceEditor)
ADD_SUBDIRECTORY(LocalDomainFinder)
#ADD_SUBDIRECTORY(LoginTest)
ADD_SUBDIRECTORY(LogViewer)
ADD_SUBDIRECTORY(ParticipantDataGenerator)
ADD_SUBDIRECTORY(ProjectSettingsEditor)
ADD_SUBDIRECTORY(QLedLine)
ADD_SUBDIRECTORY(QLedMatrix)
ADD_SUBDIRECTORY(RestClientUi)
ADD_SUBDIRECTORY(ScreenIdShow)
ADD_SUBDIRECTORY(SerialToTcpConverter)
ADD_SUBDIRECTORY(Splash)
ADD_SUBDIRECTORY(SqlBrowser)
ADD_SUBDIRECTORY(DateTimeSyncer)
ADD_SUBDIRECTORY(Times)
ADD_SUBDIRECTORY(TopicDiscover)
ADD_SUBDIRECTORY(VapixConfig)
ADD_SUBDIRECTORY(Automount)
ADD_SUBDIRECTORY(EgcuSimulator)
ADD_SUBDIRECTORY(TextEditorTest)
#ADD_SUBDIRECTORY(Examples/Plugins)
ADD_SUBDIRECTORY(Examples/TestGuiElement)
#ADD_SUBDIRECTORY(VideoImport)
ADD_SUBDIRECTORY(VulnerabilityStateGenerator)
IF (BUILD_WLS)
ADD_SUBDIRECTORY(WlsRandomPositions)
ENDIF()
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
ADD_SUBDIRECTORY(InfrastructureManagement)
ADD_SUBDIRECTORY(WirelessLocationTools)
ENDIF()
IF (BUILD_TOOLSSV)
ADD_SUBDIRECTORY(DBUpdate)
ENDIF()
SET(SCRIPTS
startDDSSpy
check_start_services
)
NGL_INSTALL(AAR SV PROGRAMS ${SCRIPTS} DESTINATION bin)
SET(SCRIPTS_2
remove_old_coredumps
)
NGL_INSTALL(AAR SV WS PROGRAMS ${SCRIPTS_2} DESTINATION bin)
NGL_INSTALL(AAR WS DIRECTORY "THP2" DESTINATION "share/Lts/")
NGL_INSTALL(AAR WS DIRECTORY "THP-overview" DESTINATION "share/Lts/")
# Excluded from Release 2: Adler, AsmWorkstationCertifier, CnrProxyTester, ConfigX, DataSampleReceiver, DBAdministration, DBOperatorSettingsRemover, DotMatrixDisplay, EEMFakeServer, LicenceEditor, LocalDomainFinder, LoginTest, ProjectSettingsEditor, QLedLine, QLedMatrix, RestClientUi, ScreenIdShow, SerialToTcpConverter, Splash, DateTimeSyncer, Times, VapixConfig, Automount, EgcuSimulator, TextEditorTest, Examples/Plugins, Examples/TestGuiElement, VideoImport, InfrastructureManagement, WirelessLocationTools, DBUpdate, WlsRandomPositions
@@ -1029,66 +1029,17 @@ if [[ "${BUILD_CODIFICATION}" == "ON" ]]; then
GROUP5_TARGETS+=("LtsReportDisplay")
fi
# Group 6: LTS Tools (Qt6 migration targets)
# These tools require RTI DDS for DataSampleGenerator, DataSampleReceiver, and DdsView
# Group 6: LTS Tools (Qt6 migration targets) - Release 2 AP9 scope only
# These tools require RTI DDS for DataSampleGenerator and DdsView
GROUP6_TARGETS=(
dbAdministration
SettingsRemover
dbUpdate
# AP9 tools for Release 2
tDataSampleGenerator
tDataSampleReceiver
DateTimeSyncer
ddsview
# ddsview runtime topic-type plugins (39 *TopicTypePlugin.so). Not CMake link deps of
# ddsview (loaded at runtime via LtsPluginLoader), so `make ddsview` alone skips them and
# ddsview shows empty Data/Function topic lists. Built here alongside ddsview.
aesTopicTypePlugin
almTopicTypePlugin
asmTopicTypePlugin
avmTopicTypePlugin
bldTopicTypePlugin
cesTopicTypePlugin
cmoTopicTypePlugin
codTopicTypePlugin
coreTopicTypePlugin
eemTopicTypePlugin
escTopicTypePlugin
esmTopicTypePlugin
evlTopicTypePlugin
exmTopicTypePlugin
flmTopicTypePlugin
fltTopicTypePlugin
gimTopicTypePlugin
gnaTopicTypePlugin
ismTopicTypePlugin
mdmTopicTypePlugin
mrkTopicTypePlugin
msgTopicTypePlugin
nmeTopicTypePlugin
nomTopicTypePlugin
obdTopicTypePlugin
opmTopicTypePlugin
oscTopicTypePlugin
ossTopicTypePlugin
pdmTopicTypePlugin
ppmTopicTypePlugin
preTopicTypePlugin
repTopicTypePlugin
scmTopicTypePlugin
somTopicTypePlugin
srpTopicTypePlugin
tabTopicTypePlugin
tabocTopicTypePlugin
tgtTopicTypePlugin
whgTopicTypePlugin
displayPanelSimulator
LicenceEditor
localDomainFinder
LogView
LogViewer
CoPrtCnv
PrtCnvLib
PrtCnv
ParticipantDataGenerator
sqlbrowser
topicdiscover
VulnerabilityStateGenerator
)
# Group 7: LTS Tools A,B,C,E,I directories (Qt6 migration targets)
+668
View File
@@ -0,0 +1,668 @@
#!/usr/bin/env bash
set -euo pipefail
# -----------------------------------------------------------------------------
# Build helper for qt-migrated-legatus inside Docker - RELEASE 2 VERSION
#
# Release 2 Scope:
# - AP3: Shared libraries (LtsUtils, Widgets, Session, Krypto, PluginManager)
# - AP4: DDS middleware (Core, DDSConnector, Routing, QosProfile, RTI layer)
# - AP9: Tools and translations (DdsView, LogViewer, SqlBrowser, generators, lupdate)
#
# This script is derived from new_docker_build.sh but focused on Release 2 targets only.
# -----------------------------------------------------------------------------
usage() {
cat <<'EOF'
Usage: ./new_docker_build_release2.sh [options]
Build groups (Release 2 scope):
--group1 / --no-group1 Enable/disable DDS core libraries build (AP4)
--group3 / --no-group3 Enable/disable Lts services build (AP3)
--group5 / --no-group5 Enable/disable Lts/Viewer module targets and tests (AP9)
--group6 / --no-group6 Enable/disable LTS Tools - generators and lupdate (AP9)
Test execution:
--no-ctest Skip ctest execution
--tests-only Run only ctest, skip all make build groups
Prebuilt Docker image usage:
--use-prebuilt-image Use a Docker image with dependencies already installed
--no-prebuilt-image Use base image and run apt-get install inside the container
--docker-image IMAGE Docker image name to use/build/delete
--cmake_build_flags FLAGS Extra CMake flags passed to the in-container configure
(space-separated -D flags)
Docker mount configuration:
--docker-mount-root PATH Container-side mount root path (default: /repo)
Changes where host directories are mounted in container
Environment variable overrides:
BUILD_GROUP1=ON|OFF DDS core libraries (AP4)
BUILD_GROUP3=ON|OFF Lts services (AP3)
BUILD_GROUP5=ON|OFF Viewer module (AP9)
BUILD_GROUP6=ON|OFF Tools/generators (AP9)
RUN_CTEST=ON|OFF
TESTS_ONLY=ON|OFF
USE_PREBUILT_IMAGE=ON|OFF
Examples:
./new_docker_build_release2.sh --group1 --group3 --group5 --group6
BUILD_GROUP1=ON BUILD_GROUP3=ON ./new_docker_build_release2.sh
./new_docker_build_release2.sh --use-prebuilt-image --no-ctest
EOF
exit 1
}
log_info() {
echo "[INFO] $*"
}
die() {
echo "[ERROR] $*" >&2
exit 1
}
# Default values
BUILD_GROUP1="${BUILD_GROUP1:-ON}" # AP4: DDS
BUILD_GROUP3="${BUILD_GROUP3:-ON}" # AP3: Lts services
BUILD_GROUP5="${BUILD_GROUP5:-ON}" # AP9: Viewer
BUILD_GROUP6="${BUILD_GROUP6:-ON}" # AP9: Tools/generators
RUN_CTEST="${RUN_CTEST:-ON}"
TESTS_ONLY="${TESTS_ONLY:-OFF}"
USE_PREBUILT_IMAGE="${USE_PREBUILT_IMAGE:-OFF}"
DOCKER_IMAGE="${DOCKER_IMAGE:-qt6-migrated-legatus-release2}"
CMAKE_BUILD_FLAGS="${CMAKE_BUILD_FLAGS:-}"
DOCKER_MOUNT_ROOT="${DOCKER_MOUNT_ROOT:-/repo}"
export DOCKER_MOUNT_ROOT
# Parse arguments
while [[ $# -gt 0 ]]; do
case "$1" in
--group1)
BUILD_GROUP1="ON"
shift
;;
--no-group1)
BUILD_GROUP1="OFF"
shift
;;
--group3)
BUILD_GROUP3="ON"
shift
;;
--no-group3)
BUILD_GROUP3="OFF"
shift
;;
--group5)
BUILD_GROUP5="ON"
shift
;;
--no-group5)
BUILD_GROUP5="OFF"
shift
;;
--group6)
BUILD_GROUP6="ON"
shift
;;
--no-group6)
BUILD_GROUP6="OFF"
shift
;;
--no-ctest)
RUN_CTEST="OFF"
shift
;;
--tests-only)
TESTS_ONLY="ON"
shift
;;
--use-prebuilt-image)
USE_PREBUILT_IMAGE="ON"
shift
;;
--no-prebuilt-image)
USE_PREBUILT_IMAGE="OFF"
shift
;;
--docker-image)
DOCKER_IMAGE="$2"
shift 2
;;
--cmake_build_flags)
CMAKE_BUILD_FLAGS="$2"
shift 2
;;
--docker-mount-root)
DOCKER_MOUNT_ROOT="$2"
shift 2
;;
-h|--help)
usage
;;
*)
die "Unknown option: $1"
;;
esac
done
require_command() {
if ! command -v "$1" &> /dev/null; then
die "Required command not found: $1"
fi
}
require_command docker
# Validate environment
if [[ ! -f ".envrc" ]]; then
die ".envrc not found in current directory. Please create .envrc with required environment variables (e.g., MIGRATE_PIPELINE_ROOT)"
fi
set -a
# shellcheck disable=SC1091
source ".envrc"
set +a
if [[ -z "${MIGRATE_PIPELINE_ROOT:-}" ]]; then
die "MIGRATE_PIPELINE_ROOT is not set in .envrc"
fi
if [[ ! -d "${MIGRATE_PIPELINE_ROOT}" ]]; then
die "MIGRATE_PIPELINE_ROOT directory does not exist: ${MIGRATE_PIPELINE_ROOT}"
fi
# Validate rti_license.dat exists (required for DDS builds)
if [[ "${BUILD_GROUP1}" == "ON" ]] && [[ ! -f "${MIGRATE_PIPELINE_ROOT}/rti_license.dat" ]]; then
die "rti_license.dat not found in MIGRATE_PIPELINE_ROOT. Required for DDS builds."
fi
log_info "=== Release 2 Build Configuration ==="
log_info "BUILD_GROUP1 (DDS/AP4): ${BUILD_GROUP1}"
log_info "BUILD_GROUP3 (Lts/AP3): ${BUILD_GROUP3}"
log_info "BUILD_GROUP5 (Viewer/AP9): ${BUILD_GROUP5}"
log_info "BUILD_GROUP6 (Tools/AP9): ${BUILD_GROUP6}"
log_info "RUN_CTEST: ${RUN_CTEST}"
log_info "TESTS_ONLY: ${TESTS_ONLY}"
log_info "USE_PREBUILT_IMAGE: ${USE_PREBUILT_IMAGE}"
log_info "DOCKER_IMAGE: ${DOCKER_IMAGE}"
log_info "DOCKER_MOUNT_ROOT: ${DOCKER_MOUNT_ROOT}"
log_info "CMAKE_BUILD_FLAGS: ${CMAKE_BUILD_FLAGS:-none}"
log_info "======================================"
# Define Release 2 targets for each group
# AP4: DDS middleware
GROUP1_TARGETS=(
ddscore
svcCoreClient
ddsftccore
ddsfts
ddsgen
ddsQoS
ddsconnector
)
# AP3: LtsUtils, Widgets, Session, Krypto, PluginManager
# These are the core Lts service libraries from GROUP3
GROUP3_TARGETS=(
NGLLogger
nglapplication
nglcompression
nglcoreapplication
ngldb
nglguiapplication
nglsettings
nglsingleapplication
nglsinglecoreapplication
ngltools
ngltranslator
nglwidgets
qtsingleapplication
qtsinglecoreapplication
wms_json_ds
tcpserver
# Core libraries required by services
LtsCoordinate
LtsCoordTrans
svcPdmCommon
svcPdmClient
svcPdmServer
svcProjectDataManagement
pdmTests
svcAesClient
svcAesCommon
svcAesServer
svcAsmClient
svcAsmCommon
svcAsmServer
svcAssetManagement
svcAudioVideoManagement
svcAvmClient
svcAvmCommon
svcAvmServer
svcBldClient
svcBldCommon
svcCentralEffectSimulation
svcCesClient
svcCesCommon
svcCesDDSCommon
svcCesGeoPairingImpl
svcCesServer
svcCodClient
svcCodCommon
svcCodServer
svcEemClient
svcEemCommon
svcEemServer
svcEffectShowClient
svcEscClient
svcEscCommon
svcEscServer
svcEsmClient
svcEsmCommon
svcEsmServer
svcEvlClient
svcEvlCommon
svcEvlServer
svcExerciseEventManagement
svcExmClient
svcExmCommon
svcExmServer
svcFileManagement
svcFilterManagement
svcFlmClient
svcFlmCommon
svcFlmServer
svcFltClient
svcFltCommon
svcFltServer
svcGimClient
svcGimCommon
svcGimServer
svcGmpServer
svcGuezIedManagement
svcIsmClient
svcIsmCommon
svcIsmServer
svcMapDummy
svcMdmClient
svcMdmCommon
svcMdmServer
svcMessaging
svcMeteoDataManagement
svcMrkClient
svcMrkCommon
svcMrkServer
svcMsgClient
svcMsgCommon
svcMsgServer
svcNomClient
svcNomCommon
svcNomServer
svcNotificationManagement
svcNmeClient
svcNmeCommon
svcNmeServer
svcNmeaManagement
svcObdClient
svcObdCommon
svcObdServer
svcOcBaseDownload
svcOcSituationClient
svcOcSituationServer
svcOperatorManagement
svcOpmClient
svcOpmCommon
svcOpmServer
svcOreDummy
svcOscClient
svcOscCommon
svcOscServer
svcOssClient
svcOssCommon
svcOssServer
svcPedDummy
svcPpmClient
svcPpmCommon
svcPpmServer
svcPreClient
svcPreCommon
svcPreServer
svcPwsCommon
svcRecCommon
svcRecordingManagement
svcRepClient
svcRepCommon
svcRepCommonExecutable
svcRepServer
svcReportAnalyzer
svcReportGenerator
svcScmClient
svcScmCommon
svcScmServer
svcScrDummy
svcServiceManagement
svcSituationReplay
svcSmoDummy
svcSomClient
svcSomCommon
svcSomServer
svcSoundManagement
svcSrmCommon
svcSrpClient
svcSrpCommon
svcSrpServer
svcTgtClient
svcTgtCommon
svcTgtServer
svcVideoOverlayManagement
svcWarehouseGuez
svcWhgClient
svcWhgCommon
svcWhgServer
asmTests
avmFtTests
avmTests
avmVcaTests
cesTests
eemTests
evlTests
exmDtUnitTest
exmTests
flmTests
gmpTests
ismTests
mrkTests
mvsTests
nomTests
opmTests
ppmTests
preTests
repTests
scmDtUnitTest
srpFtTests
tgtTests
whgTests
)
# AP9: Viewer module (DdsView, LogViewer, SqlBrowser)
GROUP5_TARGETS=(
ddsView
logViewer
sqlBrowser
)
# AP9: Tools and generators (DaoGenerator, lupdate toolchain)
GROUP6_TARGETS=(
DaoGenerator
lupdate
)
# Build prebuilt image if requested
if [[ "${USE_PREBUILT_IMAGE}" == "ON" ]]; then
if ! docker image inspect "${DOCKER_IMAGE}" &> /dev/null; then
log_info "Prebuilt image ${DOCKER_IMAGE} not found. Building it now..."
# Create temporary directory for Dockerfile
tmp_dir="$(mktemp -d)"
trap 'rm -rf "${tmp_dir}"' EXIT
cat > "${tmp_dir}/Dockerfile" <<'DOCKERFILE'
FROM ubuntu:26.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq && \
apt-get install -y -qq \
build-essential \
cmake \
ninja-build \
git \
python3-pip \
libboost-dev \
libkf6texttemplate-dev \
libqt6core6 \
libqt6gui6 \
libqt6widgets6 \
libqt6sql6 \
libqt6sql6-psql \
libqt6test6 \
qt6-base-dev \
qt6-l10n-tools \
qt6-serialport-dev \
qt6-svg-dev \
qt6-tools-dev-tools \
qt6-tools-dev \
qt6-websockets-dev \
libgtest-dev \
libgmock-dev \
libpq-dev \
postgresql-server-dev-all \
libvlc-dev \
vlc-plugin-base \
libssl-dev \
libxml2-dev \
libxerces-c-dev \
&& \
rm -rf /var/lib/apt/lists/*
# Install Qt6 packages via aqtinstall
RUN pip3 install --break-system-packages --quiet aqtinstall && \
aqt install-qt linux desktop 6.10.2 linux_gcc_64 \
-m qtmultimedia qtserialport qtimageformats qtwebsockets qtwebengine \
qtpdf qtwebview qt5compat qtwebchannel qtpositioning qtlocation qtsensors \
--outputdir /opt/Qt && \
rm -rf /root/.cache/Aqt
# Install KDReports from source
RUN 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=/opt/Qt .. && \
make -j$(nproc) && \
make install && \
cd / && rm -rf /tmp/KDReports
# Create symlink for KDReports headers
RUN ln -sfn KDReports-qt6 /usr/local/include/KDReports
CMD ["/bin/bash"]
DOCKERFILE
docker build -t "${DOCKER_IMAGE}" "${tmp_dir}"
log_info "Prebuilt image created: ${DOCKER_IMAGE}"
else
log_info "Prebuilt image already exists: ${DOCKER_IMAGE}"
fi
fi
# Prepare Docker run command
DOCKER_RUN_ARGS=(
--rm
-e MIGRATE_PIPELINE_ROOT
-e DOCKER_MOUNT_ROOT="${DOCKER_MOUNT_ROOT}"
-e BUILD_GROUP1="${BUILD_GROUP1}"
-e BUILD_GROUP3="${BUILD_GROUP3}"
-e BUILD_GROUP5="${BUILD_GROUP5}"
-e BUILD_GROUP6="${BUILD_GROUP6}"
-e RUN_CTEST="${RUN_CTEST}"
-e TESTS_ONLY="${TESTS_ONLY}"
-v "${MIGRATE_PIPELINE_ROOT}:${DOCKER_MOUNT_ROOT}"
-w "${DOCKER_MOUNT_ROOT}/qt-migration-legatus/qt6-after/qt6-migrated-legatus"
)
if [[ "${USE_PREBUILT_IMAGE}" == "ON" ]]; then
DOCKER_RUN_ARGS+=("${DOCKER_IMAGE}")
else
DOCKER_RUN_ARGS+=("ubuntu:26.04")
fi
# When not using prebuilt image, we need to install dependencies first
if [[ "${USE_PREBUILT_IMAGE}" == "OFF" ]]; then
# Prepend dependency installation to the build command
INSTALL_DEPS='
set -e
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq && \
apt-get install -y -qq \
build-essential \
cmake \
ninja-build \
git \
python3-pip \
libboost-dev \
libkf6texttemplate-dev \
libqt6core6 \
libqt6gui6 \
libqt6widgets6 \
libqt6sql6 \
libqt6sql6-psql \
libqt6test6 \
qt6-base-dev \
qt6-l10n-tools \
qt6-serialport-dev \
qt6-svg-dev \
qt6-tools-dev-tools \
qt6-tools-dev \
qt6-websockets-dev \
libgtest-dev \
libgmock-dev \
libpq-dev \
postgresql-server-dev-all \
libvlc-dev \
vlc-plugin-base \
libssl-dev \
libxml2-dev \
libxerces-c-dev \
&& \
rm -rf /var/lib/apt/lists/*
# Install Qt6 packages via aqtinstall
pip3 install --break-system-packages --quiet aqtinstall && \
aqt install-qt linux desktop 6.10.2 linux_gcc_64 \
-m qtmultimedia qtserialport qtimageformats qtwebsockets qtwebengine \
qtpdf qtwebview qt5compat qtwebchannel qtpositioning qtlocation qtsensors \
--outputdir /opt/Qt && \
rm -rf /root/.cache/Aqt
# Install KDReports from source
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=/opt/Qt .. && \
make -j$(nproc) && \
make install && \
cd / && rm -rf /tmp/KDReports
# Create symlink for KDReports headers
ln -sfn KDReports-qt6 /usr/local/include/KDReports
export PATH="/opt/Qt/6.10.2/gcc_64/bin:$PATH"
export CMAKE_PREFIX_PATH="/opt/Qt/6.10.2/gcc_64"
log_info() {
echo "[INFO] $*"
}
die() {
echo "[ERROR] $*" >&2
exit 1
}
log_info "Dependencies installed successfully"
# Return to project directory
cd "${DOCKER_MOUNT_ROOT}/qt-migration-legatus/qt6-after/qt6-migrated-legatus"
'
else
INSTALL_DEPS=''
fi
# Build command
DOCKER_RUN_ARGS+=(
/bin/bash
-c
'
set -e
log_info() {
echo "[INFO] $*"
}
die() {
echo "[ERROR] $*" >&2
exit 1
}
'"${INSTALL_DEPS}"'
# Configure CMake
log_info "Configuring CMake..."
# Use unique build directory to avoid Docker mount caching issues
BUILD_DIR="build4_$(date +%Y%m%d_%H%M%S)_$$"
log_info "Using build directory: ${BUILD_DIR}"
rm -rf "${BUILD_DIR}"
mkdir -p "${BUILD_DIR}"
cmake -B "${BUILD_DIR}" \
-G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_PREFIX_PATH="/opt/Qt/6.10.2/gcc_64" \
-DCMAKE_CXX_FLAGS="-DRTI_LINUX -DRTI_UNIX" \
-DCMAKE_C_FLAGS="-DRTI_LINUX -DRTI_UNIX" \
-DBUILD_RTI=ON \
-DBUILD_GROUP1="${BUILD_GROUP1}" \
-DBUILD_GROUP3="${BUILD_GROUP3}" \
-DBUILD_GROUP5="${BUILD_GROUP5}" \
-DBUILD_GROUP6="${BUILD_GROUP6}" \
'"${CMAKE_BUILD_FLAGS}"' \
.
# Build targets
log_info "Building Release 2 targets..."
GROUP1_TARGETS=(ddscore svcCoreClient ddsftccore ddsfts ddsgen ddsQoS ddsconnector)
GROUP3_TARGETS=(NGLLogger nglapplication nglcompression nglcoreapplication ngldb nglguiapplication nglsettings nglsingleapplication nglsinglecoreapplication ngltools ngltranslator nglwidgets qtsingleapplication qtsinglecoreapplication wms_json_ds tcpserver LtsCoordinate LtsCoordTrans LtsElevation svcPdmCommon svcPdmClient svcPdmServer svcProjectDataManagement pdmTests svcAesClient svcAesCommon svcAesServer svcBldClient svcBldCommon svcEemClient svcEemCommon svcEemServer svcEscClient svcEscCommon svcEscServer svcEsmClient svcEsmCommon svcEsmServer svcFlmClient svcFlmCommon svcFlmServer svcGmpServer svcMapDummy svcObdClient svcObdCommon svcObdServer svcOscClient svcOscCommon svcOscServer svcOssClient svcOssCommon svcOssServer svcPedDummy svcSituationReplay svcSrpClient svcSrpCommon svcSrpServer eemTests flmTests srpFtTests)
GROUP5_TARGETS=(ddsView logViewer sqlBrowser)
GROUP6_TARGETS=(DaoGenerator lupdate)
build_group() {
local group_name="$1"
local build_flag="$2"
shift 2
local targets=("$@")
if [[ "${build_flag}" != "ON" ]]; then
log_info "Skipping ${group_name} (disabled)"
return
fi
log_info "Building ${group_name}..."
for target in "${targets[@]}"; do
log_info " Building: ${target}"
cmake --build "${BUILD_DIR}" --target "${target}" -j$(nproc) || die "Failed to build ${target}"
done
}
build_group "GROUP1 (DDS/AP4)" "${BUILD_GROUP1}" "${GROUP1_TARGETS[@]}"
build_group "GROUP3 (Lts/AP3)" "${BUILD_GROUP3}" "${GROUP3_TARGETS[@]}"
build_group "GROUP5 (Viewer/AP9)" "${BUILD_GROUP5}" "${GROUP5_TARGETS[@]}"
build_group "GROUP6 (Tools/AP9)" "${BUILD_GROUP6}" "${GROUP6_TARGETS[@]}"
# Run tests if enabled
if [[ "${RUN_CTEST}" == "ON" ]] && [[ "${TESTS_ONLY}" != "ON" ]]; then
log_info "Running ctest..."
cd "${BUILD_DIR}"
ctest --output-on-failure -j$(nproc) || log_info "Some tests failed (continuing)"
cd ..
fi
log_info "Release 2 build completed successfully!"
'
)
log_info "Starting Docker container..."
docker run "${DOCKER_RUN_ARGS[@]}"
log_info "Build script completed."