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
|
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:
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user