- Document --package-output-dir "${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/"
(Jenkins convention) in the usage examples
- The in-container copy step now copies to the real mount point
/workspace/packages-out instead of ${PACKAGE_OUTPUT_DIR}, which is a host
path that does not exist inside the container (the copy was a silent
no-op; packages reached the host directly via make_rpm's
--output_dir /workspace/rpms/... on the workspace mount)
- Skip the copy when the host output directory is the same directory as
make_rpm's output dir (stat device:inode guard) - which is exactly the
case for the Jenkins-style path above, where make_rpm already writes the
packages in place
Resolution order (highest precedence first):
1. exported MIGRATE_PIPELINE_ROOT (e.g. from a Jenkinsfile)
2. MIGRATE_PIPELINE_ROOT set by .envrc in this directory
3. derived from the script location (three levels up)
The script always lives at <root>/qt-migration-legatus/qt6-after/
qt6-migrated-legatus, so the pipeline root is three levels up. This
makes the script work in a fresh Jenkins checkout with no environment
setup at all, and .envrc is no longer required.
- LogViewModels: replace deprecated invalidateFilter() with
begin/endFilterChange() (11 sites)
- LogViewTelegramEdit: move m_logger to match member declaration order
(-Wreorder) and consume QFile::open results
- PrtCnvBroadcastMgr: move m_logger to match member declaration order
(-Wreorder)
- PrtCnvCentralThread: add remaining AreaEffectSimulationType values to
the silent-ignore switch group (-Wswitch)
- PrtCnvMain: consume freopen results in daemonize (-Wunused-result)
The container script now runs the packaging flow itself instead of
calling the outer-repo jenkins_builder_ubuntu26.sh:
- Stage the workspace to deb_stage (same tar/excludes as the verified
jenkins flow; the workspace itself is never deleted)
- Run the in-tree rpmbuild/make_rpm_ubuntu26.py from the staged source
tree with the same cmake flags and arguments as before
- Copy the produced DEBs to the package output mount
- A packaging failure now fails the build instead of being logged and
swallowed
- Drop the now-unneeded MIGRATE_PIPELINE_ROOT/WORKSPACE/PROJECT_BASE_DIR
container env plumbing
The branch is now fully self-contained: new_docker_build.sh + Dockerfile
+ rpmbuild/. The build-pipeline DEB additionally ships
rpmbuild/make_rpm_ubuntu26.py (the staging list already named it).
Verified: zero-warning build, 5 DEBs with identical contents.
Keep make_rpm_ubuntu26.py (byte-identical to the validated working tree,
including the package-content validator fixes). It is self-contained
(standard library only, no helpers.py import) and its staging artifacts
land in the workspace root, so nothing else from the outer rpmbuild/
directory is needed:
- helpers.py: zero references from the Ubuntu 26 script (belongs to the
other platform variants)
- make_rpm.py / make_rpm7.py / make_rpm15.1.py / make_rpm15.2.py:
other platform packaging (base, RHEL7, CentOS 15.x)
- make_rpmModule.py / make_rpmModule7.py: module packaging
- make_rpmSVOnly.py: SV-only packaging
- make_rpm_extfw.py: external framework packaging
- make_tag.py: release tagging tool
- make_license_rpm.sh + ctc_TDS_license.spec.in + ctc_WMS_license.spec.in:
CTC license RPM flow
- .git (submodule pointer) and .gitignore (no artifacts are created in
this directory)
- new_docker_build.sh (665 -> 528 lines): drop the OFF-fixed build
variables and their redundant cmake flags (BUILD_RTI/GRANTLEE/
VIEWER_ONLY/CODIFICATION default OFF, BUILD_ALL/SV/WS/AAR default ON -
all matching this branch's configuration); the container cmake now
passes only the flags that override CMake defaults (-DBUILD_ARCGIS=OFF,
-DRELEASE_BUILD=ON, -DBUILD_TESTING=ON).
- Drop the non-prebuilt base-image path (in-container apt-get install +
aqtinstall fallback, --use-prebuilt-image/--no-prebuilt-image) and
--cmake_build_flags: the branch only ever builds inside the prebuilt
image.
- Drop ensure_database(): the PostgreSQL server only served the DB tools
(Lts/Tools), which are not built in this branch; the build links
against the header-only dev packages baked into the image.
- Drop libvlc-dev/vlc-plugin-base from the image packages: VLC existed
only for thp_viewer (Lts/Application, out of scope).
- --build-prebuilt-image now builds the image from ./Dockerfile and
exits, matching the documented two-step flow.
- Dockerfile: the prebuilt build image recipe (Ubuntu 26.04 + apt deps +
aqtinstall Qt6 + KDReports), parameterized via ARG APT_PACKAGES /
QT_VERSION / QT_ARCH / QT_BASE_DIR.
- new_docker_build.sh: build_prebuilt_image() now runs
docker build -f Dockerfile with the package list and Qt settings passed
as build args, using an empty build context (the Dockerfile has no
COPY/ADD).
- Delete all test_*.cpp, *.cmake helpers, MockCoordTrans.h and the gtest/strix
tooling from tests/: the only target (migration_tests) was guarded by
NOT RELEASE_BUILD, so nothing in tests/ compiles in this branch's
release build.
- Replace tests/CMakeLists.txt with a configure-only placeholder so the
unconditional ADD_SUBDIRECTORY(tests) from the root CMakeLists stays
resolvable without emitting the 'No migration test sources found'
warning or triggering the GTest FetchContent fallback.
- Scope new_docker_build.sh (1672 -> 694 lines) to this branch: keep the
prebuilt-image build/use/delete flow, .envrc/MIGRATE_PIPELINE_ROOT and
rti_license validation, the release-scope in-container cmake/make/ctest
and the Jenkins builder package production. Remove the GROUP1-11
target lists and options, viewer-only, grantlee/arcgis/codification
toggles, tests-only, integration-test and verify-rpm machinery.
- Guard the Lts/Viewer include paths with if(EXISTS): the module is
outside the release scope, and the unguarded include_directories
emitted -Wmissing-include-dirs for every translation unit
- nglpdfpage: initialize m_rotation before m_scaleFactor to match the
member declaration order (-Wreorder)
The compiled tabPluginTetraJson plugin includes
TrainingAreaBase/recv_from_tab.h and TrainingAreaBase/send_to_tab.h
for shared data structures; they are listed in SRCS_exe but are not
exe-exclusive. Restored from the base commit.
Lts/Common: drop the 17 submodules excluded from the RELEASE_BUILD
branch of Lts/Common/CMakeLists.txt (CodeGen, LtsAppManager, LtsBotan,
LtsCoordinate, LtsElevation, LtsLogin, LtsMultiMonitor,
LtsPluginManager, LtsPrinting, LtsProjectionWorkstation,
LtsScriptTimeline, LtsSession, LtsTimeline, LtsTimelineClassic,
LtsVirtualKeyboard, LtsWidgets, TopicEditorBase). Only the 13
subdirectories actually built remain.
TrainingAreaBase: drop sources of targets excluded by
IF(NOT RELEASE_BUILD) / IF(BUILD_RTI) (svcTabClient, svcTabServer,
svcTrainingAreaBase exe, RecordReplayPlugin customization) and the 7
plugin directories not added in the release path (AdlerJson,
ApacheHlaJson, DebugJsonDir, HlaJson, Nmea, UAS, WlsTetra). Only
tabTelegrams, svcTabCommon and the TetraJson plugin are compiled.
Cross-checked: no kept compiled source includes headers from the
removed modules (GuiPluginInterface - the only LtsWidgets consumer -
is itself NOT RELEASE_BUILD-guarded).
NGL_ADD_SUBDIR_GUARDED gates on MIGRATE_MODULE, not directory
existence: with MIGRATE_MODULE empty (the release build path) the
unconditional add_subdirectory(translations) fails when the directory
is missing. It is a configure requirement like tests/ and doxygen/
(no .qm output reaches the DEB packages).
- include/ArcGIS (984 MB): ArcGIS modules are force-excluded in
RELEASE_BUILD (BUILD_ARCGIS=OFF) and no in-scope code includes its
headers
- translations/: no .qm files reach any DEB; CMake add is guarded
- external/ (ArcGIS symlink): FindArcGIS only runs when BUILD_ARCGIS=ON
- rti_license.dat: license is supplied via RTI_LICENSE_FILE=
/workspace/rti_license.dat mounted from the pipeline root
- repo-root infra (.github, ci, docs, scripts, .entire, Jenkinsfile,
README, .envrc-example, .clang-format, empty .gitmodules): not
consumed by the DEB build
Kept: cmake/, include/ (non-ArcGIS), doxygen/ (unguarded doxygen
targets in root CMakeLists), tests/ (unconditional ADD_SUBDIRECTORY),
lts-cc.conf (CONFIGURE_FILE), CTestCustom.ctest, new_docker_build.sh,
.gitignore files, qt6-after/external mount symlink.
The RELEASE_BUILD include path (root CMakeLists.txt) points to
Lts/Services/ProjectDataManagement/stubs, which TrainingAreaBase's
tab_plugin_interface.h needs (ProjectDataManagement/pdm.hpp). Only the
stub headers are restored - the full PDM module stays out of scope.
- 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>