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'.
This commit is contained in:
berrux-dev committed 2026-10-14 20:40:05 +02:00
1 parent a17b431669
commit 676ae05335
1 file changed
+26 -21
+26 -21
View File
@@ -1,30 +1,31 @@
# qt6-migrated-legatus — compile and run (step by step) # qt6-migrated-legatus — build and run, step by step
Build guide for the Qt6-migrated legatus tree on the release Build guide for the Qt6-migrated legatus tree on the release
**validation-scope** branch. Everything runs inside a prebuilt Docker **validation-scope** branch. Everything runs inside a prebuilt Docker
image; the host only needs Docker. image; the host only needs Docker.
## Scope and layout ## Scope
The release scope built by `new_docker_build.sh` is: What `new_docker_build.sh` builds and packages:
| Area | Contents | | Area | Contents |
|---|---| |---|---|
| `TetraIF/` | `CoPrtCnv`, `LogView`, `PrtCnv` (+ `unit-test/` — see below) | | `TetraIF/` | `CoPrtCnv`, `LogView`, `PrtCnv` (+ `unit-test/` — see Step 3) |
| `Z/src/` | NGL application/core library stack (NGLLogger, nglcoreapplication, …) | | `Z/src/` | NGL application/core library stack (NGLLogger, nglcoreapplication, …) |
| `Lts/Common/` | LTS common libraries (LtsCoordTrans, LtsLicence, …) | | `Lts/Common/` | LTS common libraries (LtsCoordTrans, LtsLicence, LtsUtils, …) |
| `Lts/Proxies/TrainingAreaBase` | built as a dependency of TetraIF | | `Lts/Proxies/TrainingAreaBase` | `tabTelegrams` library, built as a TetraIF dependency |
Useful entries at the tree root: Entries at the tree root:
- `new_docker_build.sh` — the build driver (image build, compile, ctest, DEB packaging) - `new_docker_build.sh` — build driver (image build, compile, ctest, DEB packaging)
- `Dockerfile` — recipe of the prebuilt build image (Ubuntu 26.04 + Qt 6.10.2 + deps) - `Dockerfile` — recipe of the prebuilt build image (Ubuntu 26.04 + Qt 6.10.2 + deps)
- `rpmbuild/make_rpm_ubuntu26.py` — in-tree DEB package producer (self-contained) - `rpmbuild/make_rpm_ubuntu26.py` — in-tree DEB package producer (self-contained)
- `jenkins-ci-rme/` — in-tree copy of the Jenkins CI flow (see its own `README.md`) - `jenkins-ci-rme/` — in-tree copy of the Jenkins CI flow (see its own `README.md`)
- `build4/` — build tree, created by the driver (git-ignored scratch area) - `build4/` — build tree, created by the driver (git-ignored scratch area)
Toolchain inside the image: **Ubuntu 26.04, GCC 15.2.0, Qt 6.10.2** Toolchain inside the image: **Ubuntu 26.04, GCC 15.2.0, Qt 6.10.2**
(`/opt/Qt/6.10.2/gcc_64`), C++17, Release build. (`/opt/Qt/6.10.2/gcc_64`), C++17, Release build. No license file is
required.
## Prerequisites ## Prerequisites
@@ -35,14 +36,12 @@ Toolchain inside the image: **Ubuntu 26.04, GCC 15.2.0, Qt 6.10.2**
`new_docker_build.sh` invokes Docker, so running the driver as-is `new_docker_build.sh` invokes Docker, so running the driver as-is
satisfies this. satisfies this.
No license file is required: the RTI Connext DDS modules (the only The driver resolves the pipeline root from its own location (override
consumers of an RTI license) are not part of the release scope and are with the exported `MIGRATE_PIPELINE_ROOT` or the `.envrc` in this
never compiled on this branch. directory).
`new_docker_build.sh` resolves the pipeline root from its own location
(override with the exported `MIGRATE_PIPELINE_ROOT` or the `.envrc` in
this directory).
All commands below are run **from this directory** (`qt6-migrated-legatus/`). All commands below are run **from this directory**
(`qt6-migrated-legatus/`).
## Step 1 — Build the prebuilt Docker image (once) ## Step 1 — Build the prebuilt Docker image (once)
@@ -70,7 +69,7 @@ To remove it later:
What the driver does inside the container: What the driver does inside the container:
1. `rm -rf build4 && mkdir build4 && cd build4` (fresh build tree) 1. `rm -rf build4 && mkdir build4 && cd build4` (fresh build tree)
2. Configure with CMake — the mandatory flags: 2. Configure with CMake:
```bash ```bash
cmake .. \ cmake .. \
@@ -84,7 +83,7 @@ What the driver does inside the container:
(`RELEASE_BUILD=ON` selects the release scope; everything else is at (`RELEASE_BUILD=ON` selects the release scope; everything else is at
its CMake default.) its CMake default.)
3. `make -j8` the release-scope targets (TetraIF modules, Z stack, 3. `make -j8` the release-scope targets (TetraIF modules, Z stack,
Lts/Common libs, all test executables — the list is Lts/Common libraries, all test executables — the list is
`RELEASE_BUILD_TARGETS` in `new_docker_build.sh`). `RELEASE_BUILD_TARGETS` in `new_docker_build.sh`).
4. Run **ctest** (see Step 3). 4. Run **ctest** (see Step 3).
@@ -96,7 +95,13 @@ Output to inspect after the run:
- `build4/lib/` — shared libraries - `build4/lib/` — shared libraries
To rebuild incrementally without a fresh tree, run `make` directly in an To rebuild incrementally without a fresh tree, run `make` directly in an
interactive container (Step 4). interactive container against the existing `build4/`:
```bash
docker run --rm -it -v /path/to/pipeline-root:/workspace legatus-qt6:1.0 \
bash -c 'cd /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus/build4 \
&& make -j8'
```
## Step 3 — Run the tests ## Step 3 — Run the tests
@@ -145,7 +150,7 @@ ctest --output-on-failure'
Each QtTest binary accepts a single slot name to run just one test, Each QtTest binary accepts a single slot name to run just one test,
e.g. `./bin/coprtcnv_unit_test radioTelegramFragmentationRoundtrip`. e.g. `./bin/coprtcnv_unit_test radioTelegramFragmentationRoundtrip`.
### 3.4 TetraIF unit tests (this tree, `TetraIF/unit-test/`) ### 3.4 TetraIF unit tests (`TetraIF/unit-test/`)
| Test | Module covered | Note | | Test | Module covered | Note |
|---|---|---| |---|---|---|
@@ -182,7 +187,7 @@ DEBs in `${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/`:
| `qt6-release-sources_*` | release-scope sources | | `qt6-release-sources_*` | release-scope sources |
| `qt6-release-ctest-runtime_*` | test executables under `/usr/lib/ctest/` (incl. the TetraIF unit tests) | | `qt6-release-ctest-runtime_*` | test executables under `/usr/lib/ctest/` (incl. the TetraIF unit tests) |
| `qt6-release-ctest-sources_*` | test sources (files with "test" in the name under the release dirs, incl. `TetraIF/unit-test/*.cpp`) | | `qt6-release-ctest-sources_*` | test sources (files with "test" in the name under the release dirs, incl. `TetraIF/unit-test/*.cpp`) |
| `qt6-release-build-pipeline_*` | the in-tree pipeline files (`new_docker_build.sh`, `Dockerfile`, `rpmbuild/`, `jenkins-ci-rme/`) under `/usr/src/pipeline/` | | `qt6-release-build-pipeline_*` | the in-tree pipeline files (`new_docker_build.sh`, `Dockerfile`, `CMakeLists.txt`, `rpmbuild/`, `jenkins-ci-rme/`) under `/usr/src/pipeline/` |
Verify a package: Verify a package: