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:
1 parent
a17b431669
commit
676ae05335
1 file changed
+26
-21
@@ -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
|
||||
**validation-scope** branch. Everything runs inside a prebuilt 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 |
|
||||
|---|---|
|
||||
| `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, …) |
|
||||
| `Lts/Common/` | LTS common libraries (LtsCoordTrans, LtsLicence, …) |
|
||||
| `Lts/Proxies/TrainingAreaBase` | built as a dependency of TetraIF |
|
||||
| `Lts/Common/` | LTS common libraries (LtsCoordTrans, LtsLicence, LtsUtils, …) |
|
||||
| `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)
|
||||
- `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`)
|
||||
- `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**
|
||||
(`/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
|
||||
|
||||
@@ -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
|
||||
satisfies this.
|
||||
|
||||
No license file is required: the RTI Connext DDS modules (the only
|
||||
consumers of an RTI license) are not part of the release scope and are
|
||||
never compiled on this branch.
|
||||
`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).
|
||||
The driver 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)
|
||||
|
||||
@@ -70,7 +69,7 @@ To remove it later:
|
||||
What the driver does inside the container:
|
||||
|
||||
1. `rm -rf build4 && mkdir build4 && cd build4` (fresh build tree)
|
||||
2. Configure with CMake — the mandatory flags:
|
||||
2. Configure with CMake:
|
||||
|
||||
```bash
|
||||
cmake .. \
|
||||
@@ -84,7 +83,7 @@ What the driver does inside the container:
|
||||
(`RELEASE_BUILD=ON` selects the release scope; everything else is at
|
||||
its CMake default.)
|
||||
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`).
|
||||
4. Run **ctest** (see Step 3).
|
||||
|
||||
@@ -96,7 +95,13 @@ Output to inspect after the run:
|
||||
- `build4/lib/` — shared libraries
|
||||
|
||||
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
|
||||
|
||||
@@ -145,7 +150,7 @@ ctest --output-on-failure'
|
||||
Each QtTest binary accepts a single slot name to run just one test,
|
||||
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 |
|
||||
|---|---|---|
|
||||
@@ -182,7 +187,7 @@ DEBs in `${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/`:
|
||||
| `qt6-release-sources_*` | release-scope sources |
|
||||
| `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-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:
|
||||
|
||||
|
||||
Reference in new issue
Block a user