Commit Graph
358 Commits
Author SHA1 Message Date
berrux-devandClaude Code 097e5b488d Merge story/create-release-two-delivery-25_11_2026 into story/release-2-cleanup
Import the full AP3/AP4/AP9 Qt6 modules (create-two's 16,890-file
qt6-after tree: LtsSession, LtsWidgets, LtsCoordinate, LtsMultiMonitor,
PluginInterfaces, Lts/DDS, DdsView, LogViewer, SqlBrowser, ngl_codegen,
Krypto, etc.) into the Release 2 branch.

Kept from release-2-cleanup:
- new_docker_build_release2.sh (aqtinstall 'cleanup' build driver)
- Release 2 infra (jenkins-ci-rme/, rpmbuild/, Dockerfile, README.md,
  .clang-format, TetraIF/unit-test/)
- the pruned repo root

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-13 13:00:27 +01:00
torstenandCopilot e97806442f Update README for Release 2 delivery
- 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>
2026-11-13 10:45:33 +00:00
torstenandCopilot 37dffeab46 Remove Qt6 apt packages - use aqt install-qt only
Removed 13 Qt6 packages from apt installation:
- 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

Qt installation now uses ONLY aqt install-qt (lines 424-428)
System dependencies remain: build-essential, cmake, ninja-build, git, python3-pip, boost, kf6texttemplate, gtest/gmock, postgresql, vlc, ssl, xml, xerces

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-13 10:13:14 +00:00
torstenandCopilot e563800a85 Fix: Remove Qt packages from apt, use only aqtinstall for Qt dependencies
- Removed 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 from apt-get install
- Qt 6.10.2 now installed exclusively via aqtinstall
- Matches reference script approach from story/release-validation-scope
- Reduces package conflicts and ensures consistent Qt version

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-13 09:52:02 +00:00
torstenandCopilot c12dff4062 Remove svc* services and dead code from Release 2 build script
- 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>
2026-11-13 08:46:45 +00:00
torsten 6275f4384e Fix DEB packaging paths: use DOCKER_MOUNT_ROOT instead of hardcoded /workspace
- 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.
2026-11-13 00:23:25 +00:00
torsten 9fa2a4b014 Fix quote escaping in log_error printf for Docker inline script
- 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
2026-11-13 00:04:04 +00:00
torsten cf84f5149c Add log_error() to Docker inline script for DEB packaging
- 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
2026-11-13 00:00:48 +00:00
torstenandCopilot b79074fa08 Add missing log_error function for DEB packaging
- 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>
2026-11-12 23:41:23 +00:00
torsten edea4343f4 Fix DEB packaging OS_VERSION extraction syntax
- Use eval with grep instead of awk to avoid quote escaping issues
- Extract VERSION_ID from /etc/os-release safely
2026-11-12 23:28:46 +00:00
torstenandCopilot decb12181d Add DEB packaging execution block for Release 2a
- Added complete DEB packaging logic from reference script
- Uses make_rpm_ubuntu26_release2.py with Release 2a filter
- Stages workspace, runs package build, copies .deb files to packages-out
- Triggered by --run-jenkins-builder flag

Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com>
2026-11-12 23:21:33 +00:00
torstenandCopilot d7928c3c8f Add LtsMultiMonitor and PluginInterfaces to Release 2a scope
- 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>
2026-11-12 18:22:06 +00:00
torsten e12cc944b6 Add LtsSession to Release 2a build (required by LtsWidgets) 2026-11-12 18:07:16 +00:00
torsten e3415abe46 Add LtsSession to GROUP3_TARGETS (required by LtsWidgets) 2026-11-12 17:55:07 +00:00
torstenandCopilot ad5de5c761 Remove test executables from Release 2a scope
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>
2026-11-12 17:12:24 +00:00
torstenandCopilot 795e0d71e2 Remove LtsElevation from Release 2a scope
- 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>
2026-11-12 16:50:14 +00:00
torstenandCopilot 4c447e7182 Task 3: Adapt script to conform to Release 1 options
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>
2026-11-12 16:15:04 +00:00
torstenandCopilot 9d40705229 Task 1: Remove all svc* services from GROUP3 for Release 2a
- Removed 37 svc* service targets from GROUP3_TARGETS
- Release 2a now contains only shared libraries (23 targets):
  * NGL* libraries (12 targets)
  * QtSingleApplication libraries (2 targets)
  * Lts* core libraries (3 targets: LtsCoordinate, LtsCoordTrans, LtsElevation)
  * Support libraries (wms_json_ds, tcpserver)
  * Test libraries (pdmTests, eemTests, flmTests, srpFtTests)
- svc* services moved to Release 2b

Co-authored-by: Copilot <223558219+Copilot@users.noreply.github.com>
2026-11-12 15:50:44 +00:00
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
torstenandCopilot 09c244ff18 refactor: clean up verbose migration comments
Remove redundant Qt6 migration comments that restate obvious API changes:
- QtConcurrent::run parameter order explanations (preserved where lambda wrapping needed)
- QStringRef/QStringView API changes (shortened to essential info)
- QComboBox::activated signal signature change
- QMap::unite() removal semantics
- QAction include path change
- QMouseEvent/QWheelEvent position() API
- QList/QVector equivalence in Qt6
- QFuture continuation API
- Code generation comments

Preserved comments explaining non-obvious Qt6 behavior or necessary
API migration details.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-04 12:05:23 +00:00
torstenandCopilot 850d10d8de Qt6 migration verification: RTI 7.7 Pro integration and path fixes
Major changes:
- Merged branches: feature/arcgis300-symbology-migration, feature/lts-viewer-validation-testing-phase, bugfix/fix-warning-issue
- Integrated RTI 7.7 Pro commercial library with proper CMake configuration
- Fixed all hardcoded /workspace paths to use /repo (Docker mount point)
- Added DOCKER_MOUNT_ROOT parameter to new_docker_build.sh for configurable mount points
- Fixed RPATH configuration for proper runtime library loading

Technical fixes:
- cmake/FindRTI.cmake: Set CMP0111 policy unconditionally, fixed IMPORTED_LOCATION property setting outside target creation block, added debug logging
- CMakeLists.txt: Added CMP0111 before find_package(RTI), updated path detection for /repo, configured RPATH
- Lts/DDS/CMakeLists.txt: Reordered DdsUnitTests before DdsUnitTestsPlaceholder to fix test executable naming
- ArcGIS symbology: Removed deprecated m_sssResult and m_esriSwatchTaskUuid members (ArcGIS 300 API changes)

Build verification:
- 10 CPU build: 100% success (error fixing phase)
- 1 CPU build: 100% success (final validation)
- CTest: 675 tests run, 97% pass rate (654/675 passed)
- RTI DDS integration test: PASSED

Known issues:
- 21 tests failed (mostly 'Not Run' for missing smoke test executables)
- Timeout issues in bld_bsm_test and taboc_serialtest (connection refused errors)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-04 09:04:01 +00:00
berrux-dev d130c55be5 Fix Qt6 resource compilation so LogView icons are embedded at runtime
- QT5_ADD_RESOURCES was a no-op stub under Qt6, silently dropping .qrc
  files: LogView's :/image/* icons were never compiled into the binary.
  Map the stub onto qt6_add_resources() (outfiles-variable form, which
  appends the generated qrc_*.cpp to the source list). LogView is the
  only caller of the stub.
- nglwidgets' Qt6 branch only processed rme_light_style.qrc;
  nglresources.qrc (which provides :icons/16x16/* toolbar/window icons)
  was left as a raw file in the source list and never compiled
  (CMAKE_AUTORCC is off). Process both qrcs.
- LogView never loads libnglwidgets.so at runtime (--as-needed drops it:
  the code uses no nglwidgets symbols), so its :icons/16x16 resources
  were never registered for the app. Embed the 20 icons LogView actually
  uses directly into LogViewResources.qrc with explicit aliases (rcc
  rejects XML comments in .qrc and, without an alias, registers the full
  relative path as the resource name).
2026-11-03 13:31:02 +01:00
torsten 4806883cf3 Adds commercial RTI 6.6 Pro library 2026-11-02 17:43:52 +00:00
torsten 8ebcac4253 Adds commercial RTI 6.6 Pro library 2026-11-02 17:21:06 +00:00
torsten 6d96d72592 Fixes typo date 2026-10-31 11:01:41 +00:00
torsten edcd9bc325 Changes arcgis files to symlink 2026-10-31 10:12:40 +00:00
torstenandCopilot 3f6910619d Update Qt6 migration verification report with post-merge results
- Document merge of feature/lift-lts-viewer-module-upto-qt6 branch
- Record 129 merge conflicts resolved using 'ours' strategy
- Update test results: 96% pass rate (654/681 tests)
- Note 27 pre-existing test failures (no regression)
- Add merge verification summary section

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-31 05:41:39 +00:00
torsten 3930a2fbff Merge feature/lift-lts-viewer-module-upto-qt6 into feature/regression-arcgis300-symbology-migration
- Integrated LTS viewer module with Qt6 migration
- Resolved all merge conflicts by keeping current branch versions
- Preserved existing Qt6 migration fixes
2026-10-29 17:31:05 +00:00
torsten bec2a14ce2 Completes first migration quality accessment 2026-10-23 08:35:45 +00:00
torstenandCopilot fbf5f7e64d Add Qt6 migration verification report (100% test pass rate)
- Documents successful Qt5-to-Qt6 migration verification
- Records 610/610 tests passing (100% pass rate)
- Details all code changes and build script fixes
- Notes QT_QPA_PLATFORM=offscreen requirement for headless testing
- Includes Qt6 API migration patterns reference
- Provides recommendations for CI/CD and future development

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-23 07:28:08 +00:00
torsten 068316af63 Adds first regression and Qt6-migration-quality accessing results 2026-10-22 08:17:55 +00:00
torsten c39dbec31f Uses from now on release with debug symbols builds (custome requirement) 2026-10-21 17:09:28 +00:00
berrux-dev 598fc2560e Complete Qt6 migration: full clean build green across groups G1-G12 incl. runtime plugin set
new_docker_build.sh gains Group 12 (212 GUI/Data plugins); fixes LtsUtilsGuiDds visibility (LTO-stripped exports), LtsProjectionWorkstation unity name shadow, 6 unity-off dirs (dup file-scope statics, ddsftc INTERFACE sources) and reconfigures BUILD_FILTERMANAGEMENT/BUILD_PLUGINS_SERVICEMONITOR=ON
2026-10-20 09:36:57 +02:00
torstenandCopilot 724104b6a7 Fix GraphicalObjectsTest polygon closure assertion
- 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>
2026-10-20 03:50:41 +02:00
torstenandCopilot de6c7a6038 Qt6 Migration: Complete SituationMap module migration with comprehensive tests
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>
2026-10-20 02:49:34 +02:00
torsten c5a38227bf Adds comments on arcgis code porting 2026-10-19 10:28:12 +02:00
berrux-dev 0e2100f383 reset Jenkins file 2026-10-15 20:43:46 +02:00
berrux-dev 26f702b7a4 reset jenkins file 2026-10-15 20:40:29 +02:00
berrux-dev 37bd700564 Fixed make error 2026-10-15 12:21:52 +02:00
berrux-dev 684e05109d Add lcov code coverage to the release pipeline and Jenkins
- new_docker_build.sh: new --run-coverage mode (mutually exclusive with
  --run-jenkins-builder). Instruments the release-scope build with
  -O0 -g --coverage -fPIC -DNDEBUG (RELEASE flag override keeps -DNDEBUG
  and -fPIC so behavior and PIC match the green baseline), runs ctest,
  then collects the lcov report: capture --external -> extract on the
  four release dirs -> remove test sources -> summary -> genhtml, all
  with --ignore-errors mismatch,inconsistent,unused (GCC 15 + lcov 2.4).
  Report lands in --coverage-output-dir (default ./coverage-out):
  html/index.html, coverage.info, coverage_summary.txt.
- Dockerfile image gains lcov via APT_PACKAGES (genhtml ships in the
  same package).
- Jenkinsfile: RunCoverage parameter (default on) + per-OS Coverage
  stage running the driver on the agent and archiving
  coverage/<project>/<os>/**.
- release-16-10-2026.sh: same coverage step, gated by DRYRUN_COVERAGE
  (default ON, mirrors the Jenkins default).
- README: Step 6 (code coverage) and options/env reference entries.
- .gitignore: coverage-out/
2026-10-15 09:00:33 +02:00
berrux-dev 676ae05335 Rewrite the build README without excluded-module sections
Scope is now described only as what the release build contains
(TetraIF, Z/src, Lts/Common, TrainingAreaBase). All steps (image,
compile, tests, DEB packaging, Jenkins) kept and refreshed; the
license note is reduced to 'no license file is required'.
2026-10-14 20:40:05 +02:00