Files
qt6-migration-pipeline/final-migration/run_final_migration.sh
T
torstenandCopilot d6500157f1 Fix RTI detection: only call FIND_PACKAGE if manual config failed
- Wrap FIND_PACKAGE(RTI) in IF(NOT TARGET RTI::nddsc) condition
- Prevents placeholder targets from overwriting manually configured RTI:: targets
- Manual configuration creates RTI:: targets when BUILD_RTI=ON and RTI found
- FIND_PACKAGE only called as fallback when manual config doesn't create targets

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M1CT3XSQXCX9RQR6WM9DG3GH
2026-08-31 23:03:01 +02:00

52 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Run final clean configure / build / test in Docker using app/run_docker.sh
# Usage: ./final-migration/run_final_migration.sh [--jobs N]
# Requires the Docker image from ./app/run_docker.sh to be available (run ./app/run_docker.sh --build once if needed).
# Note: Source directory is qt-migration-legatus/qt6-after/qt6-migrated-legatus/ (submodule)
JOBS=5
while [[ $# -gt 0 ]]; do
case "$1" in
--jobs) JOBS="$2"; shift 2;;
-j*) JOBS="${1#-j}"; shift;;
*) echo "Unknown arg: $1"; exit 1;;
esac
done
# Submodule path containing the migrated Qt6 code
SUBMODULE_PATH="qt-migration-legatus/qt6-after/qt6-migrated-legatus"
# Run inside Docker: perform clean build directory, configure with Qt6, build and run ctest
# Note: Pass HOST path (pwd) which gets mounted to /repo in container
HOST_REPO_PATH="$(cd "$(dirname "$0")/.." && pwd)"
./app/run_docker.sh "$HOST_REPO_PATH" -- bash -lc \
"set -euo pipefail && \
export LD_LIBRARY_PATH=/opt/Qt/6.8.3/gcc_64/lib:\${LD_LIBRARY_PATH:-} && \
export QT_QPA_PLATFORM=offscreen && \
export RTI_LICENSE_FILE=/repo/rti_license.dat && \
export DDS_PATH=/repo/external/rti_connext_dds-7.7.0 && \
export CMAKE_CXX_STANDARD=17 && \
unset MIGRATE_MODULE && \
(rm -rf /repo/build || sudo rm -rf /repo/build) && \
mkdir -p /repo/build/bin && \
if [ -f /repo/build_rti_off/bin/ngl_codegen ]; then \
cp /repo/build_rti_off/bin/ngl_codegen /repo/build/bin/ngl_codegen && \
echo 'Copied pre-built ngl_codegen to build/bin'; \
else \
echo 'Warning: Pre-built ngl_codegen not found, build may fail if codegen is needed'; \
fi && \
cmake -S /repo/${SUBMODULE_PATH} -B /repo/build -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DBUILD_WS=ON -DBUILD_TESTING=ON -DBUILD_RTI=ON && \
if [ -f /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS/Core/core_json.cpp ]; then \
echo 'Patching core_json.cpp for Qt6/C++17 compatibility...' && \
/repo/patch_core_json.sh; \
fi && \
if [ -f /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS/Core/core_dtc.h ]; then \
echo 'Patching core_dtc.h for DTC type aliases...' && \
/repo/patch_core_dtc_h.sh; \
fi && \
cmake --build /repo/build -- -j${JOBS} && \
ctest --test-dir /repo/build --output-on-failure"
echo "Final migration build + tests complete. See ./build for artifacts and test logs in ./build/Testing/Temporary."