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>
This commit is contained in:
1 file changed
+669
+669
@@ -0,0 +1,669 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Build helper for qt-migrated-legatus inside Docker - RELEASE 2 VERSION
|
||||
#
|
||||
# Release 2 Scope:
|
||||
# - AP3: Shared libraries (LtsUtils, Widgets, Session, Krypto, PluginManager)
|
||||
# - AP4: DDS middleware (Core, DDSConnector, Routing, QosProfile, RTI layer)
|
||||
# - AP9: Tools and translations (DdsView, LogViewer, SqlBrowser, generators, lupdate)
|
||||
#
|
||||
# This script is derived from new_docker_build.sh but focused on Release 2 targets only.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: ./new_docker_build_release2.sh [options]
|
||||
|
||||
Build groups (Release 2 scope):
|
||||
--group1 / --no-group1 Enable/disable DDS core libraries build (AP4)
|
||||
--group3 / --no-group3 Enable/disable Lts services build (AP3)
|
||||
--group5 / --no-group5 Enable/disable Lts/Viewer module targets and tests (AP9)
|
||||
--group6 / --no-group6 Enable/disable LTS Tools - generators and lupdate (AP9)
|
||||
|
||||
Test execution:
|
||||
--no-ctest Skip ctest execution
|
||||
--tests-only Run only ctest, skip all make build groups
|
||||
|
||||
Prebuilt Docker image usage:
|
||||
--use-prebuilt-image Use a Docker image with dependencies already installed
|
||||
--no-prebuilt-image Use base image and run apt-get install inside the container
|
||||
--docker-image IMAGE Docker image name to use/build/delete
|
||||
--cmake_build_flags FLAGS Extra CMake flags passed to the in-container configure
|
||||
(space-separated -D flags)
|
||||
|
||||
Docker mount configuration:
|
||||
--docker-mount-root PATH Container-side mount root path (default: /repo)
|
||||
Changes where host directories are mounted in container
|
||||
|
||||
Environment variable overrides:
|
||||
BUILD_GROUP1=ON|OFF DDS core libraries (AP4)
|
||||
BUILD_GROUP3=ON|OFF Lts services (AP3)
|
||||
BUILD_GROUP5=ON|OFF Viewer module (AP9)
|
||||
BUILD_GROUP6=ON|OFF Tools/generators (AP9)
|
||||
RUN_CTEST=ON|OFF
|
||||
TESTS_ONLY=ON|OFF
|
||||
USE_PREBUILT_IMAGE=ON|OFF
|
||||
|
||||
Examples:
|
||||
./new_docker_build_release2.sh --group1 --group3 --group5 --group6
|
||||
BUILD_GROUP1=ON BUILD_GROUP3=ON ./new_docker_build_release2.sh
|
||||
./new_docker_build_release2.sh --use-prebuilt-image --no-ctest
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
log_info() {
|
||||
echo "[INFO] $*"
|
||||
}
|
||||
|
||||
die() {
|
||||
echo "[ERROR] $*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Default values
|
||||
BUILD_GROUP1="${BUILD_GROUP1:-ON}" # AP4: DDS
|
||||
BUILD_GROUP3="${BUILD_GROUP3:-ON}" # AP3: Lts services
|
||||
BUILD_GROUP5="${BUILD_GROUP5:-ON}" # AP9: Viewer
|
||||
BUILD_GROUP6="${BUILD_GROUP6:-ON}" # AP9: Tools/generators
|
||||
RUN_CTEST="${RUN_CTEST:-ON}"
|
||||
TESTS_ONLY="${TESTS_ONLY:-OFF}"
|
||||
USE_PREBUILT_IMAGE="${USE_PREBUILT_IMAGE:-OFF}"
|
||||
DOCKER_IMAGE="${DOCKER_IMAGE:-qt6-migrated-legatus-release2}"
|
||||
CMAKE_BUILD_FLAGS="${CMAKE_BUILD_FLAGS:-}"
|
||||
DOCKER_MOUNT_ROOT="${DOCKER_MOUNT_ROOT:-/repo}"
|
||||
export DOCKER_MOUNT_ROOT
|
||||
|
||||
# Parse arguments
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--group1)
|
||||
BUILD_GROUP1="ON"
|
||||
shift
|
||||
;;
|
||||
--no-group1)
|
||||
BUILD_GROUP1="OFF"
|
||||
shift
|
||||
;;
|
||||
--group3)
|
||||
BUILD_GROUP3="ON"
|
||||
shift
|
||||
;;
|
||||
--no-group3)
|
||||
BUILD_GROUP3="OFF"
|
||||
shift
|
||||
;;
|
||||
--group5)
|
||||
BUILD_GROUP5="ON"
|
||||
shift
|
||||
;;
|
||||
--no-group5)
|
||||
BUILD_GROUP5="OFF"
|
||||
shift
|
||||
;;
|
||||
--group6)
|
||||
BUILD_GROUP6="ON"
|
||||
shift
|
||||
;;
|
||||
--no-group6)
|
||||
BUILD_GROUP6="OFF"
|
||||
shift
|
||||
;;
|
||||
--no-ctest)
|
||||
RUN_CTEST="OFF"
|
||||
shift
|
||||
;;
|
||||
--tests-only)
|
||||
TESTS_ONLY="ON"
|
||||
shift
|
||||
;;
|
||||
--use-prebuilt-image)
|
||||
USE_PREBUILT_IMAGE="ON"
|
||||
shift
|
||||
;;
|
||||
--no-prebuilt-image)
|
||||
USE_PREBUILT_IMAGE="OFF"
|
||||
shift
|
||||
;;
|
||||
--docker-image)
|
||||
DOCKER_IMAGE="$2"
|
||||
shift 2
|
||||
;;
|
||||
--cmake_build_flags)
|
||||
CMAKE_BUILD_FLAGS="$2"
|
||||
shift 2
|
||||
;;
|
||||
--docker-mount-root)
|
||||
DOCKER_MOUNT_ROOT="$2"
|
||||
shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
die "Unknown option: $1"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
require_command() {
|
||||
if ! command -v "$1" &> /dev/null; then
|
||||
die "Required command not found: $1"
|
||||
fi
|
||||
}
|
||||
|
||||
require_command docker
|
||||
|
||||
# Validate environment
|
||||
if [[ ! -f ".envrc" ]]; then
|
||||
die ".envrc not found in current directory. Please create .envrc with required environment variables (e.g., MIGRATE_PIPELINE_ROOT)"
|
||||
fi
|
||||
|
||||
set -a
|
||||
# shellcheck disable=SC1091
|
||||
source ".envrc"
|
||||
set +a
|
||||
|
||||
if [[ -z "${MIGRATE_PIPELINE_ROOT:-}" ]]; then
|
||||
die "MIGRATE_PIPELINE_ROOT is not set in .envrc"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${MIGRATE_PIPELINE_ROOT}" ]]; then
|
||||
die "MIGRATE_PIPELINE_ROOT directory does not exist: ${MIGRATE_PIPELINE_ROOT}"
|
||||
fi
|
||||
|
||||
# Validate rti_license.dat exists (required for DDS builds)
|
||||
if [[ "${BUILD_GROUP1}" == "ON" ]] && [[ ! -f "${MIGRATE_PIPELINE_ROOT}/rti_license.dat" ]]; then
|
||||
die "rti_license.dat not found in MIGRATE_PIPELINE_ROOT. Required for DDS builds."
|
||||
fi
|
||||
|
||||
log_info "=== Release 2 Build Configuration ==="
|
||||
log_info "BUILD_GROUP1 (DDS/AP4): ${BUILD_GROUP1}"
|
||||
log_info "BUILD_GROUP3 (Lts/AP3): ${BUILD_GROUP3}"
|
||||
log_info "BUILD_GROUP5 (Viewer/AP9): ${BUILD_GROUP5}"
|
||||
log_info "BUILD_GROUP6 (Tools/AP9): ${BUILD_GROUP6}"
|
||||
log_info "RUN_CTEST: ${RUN_CTEST}"
|
||||
log_info "TESTS_ONLY: ${TESTS_ONLY}"
|
||||
log_info "USE_PREBUILT_IMAGE: ${USE_PREBUILT_IMAGE}"
|
||||
log_info "DOCKER_IMAGE: ${DOCKER_IMAGE}"
|
||||
log_info "DOCKER_MOUNT_ROOT: ${DOCKER_MOUNT_ROOT}"
|
||||
log_info "CMAKE_BUILD_FLAGS: ${CMAKE_BUILD_FLAGS:-none}"
|
||||
log_info "======================================"
|
||||
|
||||
# Define Release 2 targets for each group
|
||||
# AP4: DDS middleware
|
||||
GROUP1_TARGETS=(
|
||||
ddscore
|
||||
svcCoreClient
|
||||
ddsftccore
|
||||
ddsfts
|
||||
ddsgen
|
||||
ddsQoS
|
||||
ddsconnector
|
||||
)
|
||||
|
||||
# AP3: LtsUtils, Widgets, Session, Krypto, PluginManager
|
||||
# These are the core Lts service libraries from GROUP3
|
||||
GROUP3_TARGETS=(
|
||||
NGLLogger
|
||||
nglapplication
|
||||
nglcompression
|
||||
nglcoreapplication
|
||||
ngldb
|
||||
nglguiapplication
|
||||
nglsettings
|
||||
nglsingleapplication
|
||||
nglsinglecoreapplication
|
||||
ngltools
|
||||
ngltranslator
|
||||
nglwidgets
|
||||
qtsingleapplication
|
||||
qtsinglecoreapplication
|
||||
wms_json_ds
|
||||
tcpserver
|
||||
svcPdmCommon
|
||||
svcPdmClient
|
||||
svcPdmServer
|
||||
svcProjectDataManagement
|
||||
pdmTests
|
||||
svcAesClient
|
||||
svcAesCommon
|
||||
svcAesServer
|
||||
svcAlmClient
|
||||
svcAlmCommon
|
||||
svcAlmServer
|
||||
svcAreaEffectSimulation
|
||||
svcAsmClient
|
||||
svcAsmCommon
|
||||
svcAsmServer
|
||||
svcAssetManagement
|
||||
svcAudioVideoManagement
|
||||
svcAvmClient
|
||||
svcAvmCommon
|
||||
svcAvmServer
|
||||
svcBldClient
|
||||
svcBldCommon
|
||||
svcCentralEffectSimulation
|
||||
svcCesClient
|
||||
svcCesCommon
|
||||
svcCesDDSCommon
|
||||
svcCesGeoPairingImpl
|
||||
svcCesServer
|
||||
svcCodClient
|
||||
svcCodCommon
|
||||
svcCodServer
|
||||
svcEemClient
|
||||
svcEemCommon
|
||||
svcEemServer
|
||||
svcEffectShowClient
|
||||
svcEscClient
|
||||
svcEscCommon
|
||||
svcEscServer
|
||||
svcEsmClient
|
||||
svcEsmCommon
|
||||
svcEsmServer
|
||||
svcEvlClient
|
||||
svcEvlCommon
|
||||
svcEvlServer
|
||||
svcExerciseEventManagement
|
||||
svcExmClient
|
||||
svcExmCommon
|
||||
svcExmServer
|
||||
svcFileManagement
|
||||
svcFilterManagement
|
||||
svcFlmClient
|
||||
svcFlmCommon
|
||||
svcFlmServer
|
||||
svcFltClient
|
||||
svcFltCommon
|
||||
svcFltServer
|
||||
svcGimClient
|
||||
svcGimCommon
|
||||
svcGimServer
|
||||
svcGmpServer
|
||||
svcGuezIedManagement
|
||||
svcIsmClient
|
||||
svcIsmCommon
|
||||
svcIsmServer
|
||||
svcMapDummy
|
||||
svcMdmClient
|
||||
svcMdmCommon
|
||||
svcMdmServer
|
||||
svcMessaging
|
||||
svcMeteoDataManagement
|
||||
svcMrkClient
|
||||
svcMrkCommon
|
||||
svcMrkServer
|
||||
svcMsgClient
|
||||
svcMsgCommon
|
||||
svcMsgServer
|
||||
svcNomClient
|
||||
svcNomCommon
|
||||
svcNomServer
|
||||
svcNotificationManagement
|
||||
svcNmeClient
|
||||
svcNmeCommon
|
||||
svcNmeServer
|
||||
svcNmeaManagement
|
||||
svcObdClient
|
||||
svcObdCommon
|
||||
svcObdServer
|
||||
svcOcBaseDownload
|
||||
svcOcSituationClient
|
||||
svcOcSituationServer
|
||||
svcOperatorManagement
|
||||
svcOpmClient
|
||||
svcOpmCommon
|
||||
svcOpmServer
|
||||
svcOreDummy
|
||||
svcOscClient
|
||||
svcOscCommon
|
||||
svcOscServer
|
||||
svcOssClient
|
||||
svcOssCommon
|
||||
svcOssServer
|
||||
svcPedDummy
|
||||
svcPpmClient
|
||||
svcPpmCommon
|
||||
svcPpmServer
|
||||
svcPreClient
|
||||
svcPreCommon
|
||||
svcPreServer
|
||||
svcPwsCommon
|
||||
svcRecCommon
|
||||
svcRecordingManagement
|
||||
svcRepClient
|
||||
svcRepCommon
|
||||
svcRepCommonExecutable
|
||||
svcRepServer
|
||||
svcReportAnalyzer
|
||||
svcReportGenerator
|
||||
svcScmClient
|
||||
svcScmCommon
|
||||
svcScmServer
|
||||
svcScrDummy
|
||||
svcServiceManagement
|
||||
svcSituationReplay
|
||||
svcSmoDummy
|
||||
svcSomClient
|
||||
svcSomCommon
|
||||
svcSomServer
|
||||
svcSoundManagement
|
||||
svcSrmCommon
|
||||
svcSrpClient
|
||||
svcSrpCommon
|
||||
svcSrpServer
|
||||
svcTgtClient
|
||||
svcTgtCommon
|
||||
svcTgtServer
|
||||
svcVideoOverlayManagement
|
||||
svcWarehouseGuez
|
||||
svcWhgClient
|
||||
svcWhgCommon
|
||||
svcWhgServer
|
||||
asmTests
|
||||
avmFtTests
|
||||
avmTests
|
||||
avmVcaTests
|
||||
cesTests
|
||||
eemTests
|
||||
evlTests
|
||||
exmDtUnitTest
|
||||
exmTests
|
||||
flmTests
|
||||
gmpTests
|
||||
ismTests
|
||||
mrkTests
|
||||
mvsTests
|
||||
nomTests
|
||||
opmTests
|
||||
ppmTests
|
||||
preTests
|
||||
repTests
|
||||
scmDtUnitTest
|
||||
srpFtTests
|
||||
tgtTests
|
||||
whgTests
|
||||
)
|
||||
|
||||
# AP9: Viewer module (DdsView, LogViewer, SqlBrowser)
|
||||
GROUP5_TARGETS=(
|
||||
ddsView
|
||||
logViewer
|
||||
sqlBrowser
|
||||
)
|
||||
|
||||
# AP9: Tools and generators (DaoGenerator, lupdate toolchain)
|
||||
GROUP6_TARGETS=(
|
||||
DaoGenerator
|
||||
lupdate
|
||||
)
|
||||
|
||||
# Build prebuilt image if requested
|
||||
if [[ "${USE_PREBUILT_IMAGE}" == "ON" ]]; then
|
||||
if ! docker image inspect "${DOCKER_IMAGE}" &> /dev/null; then
|
||||
log_info "Prebuilt image ${DOCKER_IMAGE} not found. Building it now..."
|
||||
|
||||
# Create temporary directory for Dockerfile
|
||||
tmp_dir="$(mktemp -d)"
|
||||
trap 'rm -rf "${tmp_dir}"' EXIT
|
||||
|
||||
cat > "${tmp_dir}/Dockerfile" <<'DOCKERFILE'
|
||||
FROM ubuntu:26.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update -qq && \
|
||||
apt-get install -y -qq \
|
||||
build-essential \
|
||||
cmake \
|
||||
ninja-build \
|
||||
git \
|
||||
python3-pip \
|
||||
libboost-dev \
|
||||
libkf6texttemplate-dev \
|
||||
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 \
|
||||
libgtest-dev \
|
||||
libgmock-dev \
|
||||
libpq-dev \
|
||||
postgresql-server-dev-all \
|
||||
libvlc-dev \
|
||||
vlc-plugin-base \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
libxerces-c-dev \
|
||||
&& \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install Qt6 packages via aqtinstall
|
||||
RUN pip3 install --break-system-packages --quiet aqtinstall && \
|
||||
aqt install-qt linux desktop 6.10.2 linux_gcc_64 \
|
||||
-m qtmultimedia qtserialport qtimageformats qtwebsockets qtwebengine \
|
||||
qtpdf qtwebview qt5compat qtwebchannel qtpositioning qtlocation qtsensors \
|
||||
--outputdir /opt/Qt && \
|
||||
rm -rf /root/.cache/Aqt
|
||||
|
||||
# Install KDReports from source
|
||||
RUN git clone --depth 1 https://github.com/KDAB/KDReports.git /tmp/KDReports && \
|
||||
cd /tmp/KDReports && \
|
||||
mkdir build && cd build && \
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_PREFIX_PATH=/opt/Qt .. && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd / && rm -rf /tmp/KDReports
|
||||
|
||||
# Create symlink for KDReports headers
|
||||
RUN ln -sfn KDReports-qt6 /usr/local/include/KDReports
|
||||
|
||||
CMD ["/bin/bash"]
|
||||
DOCKERFILE
|
||||
|
||||
docker build -t "${DOCKER_IMAGE}" "${tmp_dir}"
|
||||
log_info "Prebuilt image created: ${DOCKER_IMAGE}"
|
||||
else
|
||||
log_info "Prebuilt image already exists: ${DOCKER_IMAGE}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Prepare Docker run command
|
||||
DOCKER_RUN_ARGS=(
|
||||
--rm
|
||||
-e MIGRATE_PIPELINE_ROOT
|
||||
-e DOCKER_MOUNT_ROOT="${DOCKER_MOUNT_ROOT}"
|
||||
-e BUILD_GROUP1="${BUILD_GROUP1}"
|
||||
-e BUILD_GROUP3="${BUILD_GROUP3}"
|
||||
-e BUILD_GROUP5="${BUILD_GROUP5}"
|
||||
-e BUILD_GROUP6="${BUILD_GROUP6}"
|
||||
-e RUN_CTEST="${RUN_CTEST}"
|
||||
-e TESTS_ONLY="${TESTS_ONLY}"
|
||||
-v "${MIGRATE_PIPELINE_ROOT}:${DOCKER_MOUNT_ROOT}"
|
||||
-w "${DOCKER_MOUNT_ROOT}/qt-migration-legatus/qt6-after/qt6-migrated-legatus"
|
||||
)
|
||||
|
||||
if [[ "${USE_PREBUILT_IMAGE}" == "ON" ]]; then
|
||||
DOCKER_RUN_ARGS+=("${DOCKER_IMAGE}")
|
||||
else
|
||||
DOCKER_RUN_ARGS+=("ubuntu:26.04")
|
||||
fi
|
||||
|
||||
# When not using prebuilt image, we need to install dependencies first
|
||||
if [[ "${USE_PREBUILT_IMAGE}" == "OFF" ]]; then
|
||||
# Prepend dependency installation to the build command
|
||||
INSTALL_DEPS='
|
||||
set -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update -qq && \
|
||||
apt-get install -y -qq \
|
||||
build-essential \
|
||||
cmake \
|
||||
ninja-build \
|
||||
git \
|
||||
python3-pip \
|
||||
libboost-dev \
|
||||
libkf6texttemplate-dev \
|
||||
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 \
|
||||
libgtest-dev \
|
||||
libgmock-dev \
|
||||
libpq-dev \
|
||||
postgresql-server-dev-all \
|
||||
libvlc-dev \
|
||||
vlc-plugin-base \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
libxerces-c-dev \
|
||||
&& \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install Qt6 packages via aqtinstall
|
||||
pip3 install --break-system-packages --quiet aqtinstall && \
|
||||
aqt install-qt linux desktop 6.10.2 linux_gcc_64 \
|
||||
-m qtmultimedia qtserialport qtimageformats qtwebsockets qtwebengine \
|
||||
qtpdf qtwebview qt5compat qtwebchannel qtpositioning qtlocation qtsensors \
|
||||
--outputdir /opt/Qt && \
|
||||
rm -rf /root/.cache/Aqt
|
||||
|
||||
# Install KDReports from source
|
||||
git clone --depth 1 https://github.com/KDAB/KDReports.git /tmp/KDReports && \
|
||||
cd /tmp/KDReports && \
|
||||
mkdir build && cd build && \
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_PREFIX_PATH=/opt/Qt .. && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd / && rm -rf /tmp/KDReports
|
||||
|
||||
# Create symlink for KDReports headers
|
||||
ln -sfn KDReports-qt6 /usr/local/include/KDReports
|
||||
|
||||
export PATH="/opt/Qt/6.10.2/gcc_64/bin:$PATH"
|
||||
export CMAKE_PREFIX_PATH="/opt/Qt/6.10.2/gcc_64"
|
||||
|
||||
log_info() {
|
||||
echo "[INFO] $*"
|
||||
}
|
||||
|
||||
die() {
|
||||
echo "[ERROR] $*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
log_info "Dependencies installed successfully"
|
||||
|
||||
# Return to project directory
|
||||
cd "${DOCKER_MOUNT_ROOT}/qt-migration-legatus/qt6-after/qt6-migrated-legatus"
|
||||
'
|
||||
else
|
||||
INSTALL_DEPS=''
|
||||
fi
|
||||
|
||||
# Build command
|
||||
DOCKER_RUN_ARGS+=(
|
||||
/bin/bash
|
||||
-c
|
||||
'
|
||||
set -e
|
||||
|
||||
log_info() {
|
||||
echo "[INFO] $*"
|
||||
}
|
||||
|
||||
die() {
|
||||
echo "[ERROR] $*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
'"${INSTALL_DEPS}"'
|
||||
|
||||
# Configure CMake
|
||||
log_info "Configuring CMake..."
|
||||
# Use unique build directory to avoid Docker mount caching issues
|
||||
BUILD_DIR="build4_$(date +%Y%m%d_%H%M%S)_$$"
|
||||
log_info "Using build directory: ${BUILD_DIR}"
|
||||
rm -rf "${BUILD_DIR}"
|
||||
mkdir -p "${BUILD_DIR}"
|
||||
cmake -B "${BUILD_DIR}" \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_PREFIX_PATH="/opt/Qt/6.10.2/gcc_64" \
|
||||
-DCMAKE_CXX_FLAGS="-DRTI_LINUX -DRTI_UNIX" \
|
||||
-DCMAKE_C_FLAGS="-DRTI_LINUX -DRTI_UNIX" \
|
||||
-DBUILD_RTI=ON \
|
||||
-DBUILD_GROUP1="${BUILD_GROUP1}" \
|
||||
-DBUILD_GROUP3="${BUILD_GROUP3}" \
|
||||
-DBUILD_GROUP5="${BUILD_GROUP5}" \
|
||||
-DBUILD_GROUP6="${BUILD_GROUP6}" \
|
||||
'"${CMAKE_BUILD_FLAGS}"' \
|
||||
.
|
||||
|
||||
# Build targets
|
||||
log_info "Building Release 2 targets..."
|
||||
|
||||
GROUP1_TARGETS=(ddscore svcCoreClient ddsftccore ddsfts ddsgen ddsQoS ddsconnector)
|
||||
GROUP3_TARGETS=(NGLLogger nglapplication nglcompression nglcoreapplication ngldb nglguiapplication nglsettings nglsingleapplication nglsinglecoreapplication ngltools ngltranslator nglwidgets qtsingleapplication qtsinglecoreapplication wms_json_ds tcpserver svcPdmCommon svcPdmClient svcPdmServer svcProjectDataManagement pdmTests svcAesClient svcAesCommon svcAesServer svcAlmClient svcAlmCommon svcAlmServer svcAreaEffectSimulation svcAsmClient svcAsmCommon svcAsmServer svcAssetManagement svcAudioVideoManagement svcAvmClient svcAvmCommon svcAvmServer svcBldClient svcBldCommon svcCentralEffectSimulation svcCesClient svcCesCommon svcCesDDSCommon svcCesGeoPairingImpl svcCesServer svcCodClient svcCodCommon svcCodServer svcEemClient svcEemCommon svcEemServer svcEffectShowClient svcEscClient svcEscCommon svcEscServer svcEsmClient svcEsmCommon svcEsmServer svcEvlClient svcEvlCommon svcEvlServer svcExerciseEventManagement svcExmClient svcExmCommon svcExmServer svcFileManagement svcFilterManagement svcFlmClient svcFlmCommon svcFlmServer svcFltClient svcFltCommon svcFltServer svcGimClient svcGimCommon svcGimServer svcGmpServer svcGuezIedManagement svcIsmClient svcIsmCommon svcIsmServer svcMapDummy svcMdmClient svcMdmCommon svcMdmServer svcMessaging svcMeteoDataManagement svcMrkClient svcMrkCommon svcMrkServer svcMsgClient svcMsgCommon svcMsgServer svcNomClient svcNomCommon svcNomServer svcNotificationManagement svcNmeClient svcNmeCommon svcNmeServer svcNmeaManagement svcObdClient svcObdCommon svcObdServer svcOcBaseDownload svcOcSituationClient svcOcSituationServer svcOperatorManagement svcOpmClient svcOpmCommon svcOpmServer svcOreDummy svcOscClient svcOscCommon svcOscServer svcOssClient svcOssCommon svcOssServer svcPedDummy svcPpmClient svcPpmCommon svcPpmServer svcPreClient svcPreCommon svcPreServer svcPwsCommon svcRecCommon svcRecordingManagement svcRepClient svcRepCommon svcRepCommonExecutable svcRepServer svcReportAnalyzer svcReportGenerator svcScmClient svcScmCommon svcScmServer svcScrDummy svcServiceManagement svcSituationReplay svcSmoDummy svcSomClient svcSomCommon svcSomServer svcSoundManagement svcSrmCommon svcSrpClient svcSrpCommon svcSrpServer svcTgtClient svcTgtCommon svcTgtServer svcVideoOverlayManagement svcWarehouseGuez svcWhgClient svcWhgCommon svcWhgServer asmTests avmFtTests avmTests avmVcaTests cesTests eemTests evlTests exmDtUnitTest exmTests flmTests gmpTests ismTests mrkTests mvsTests nomTests opmTests ppmTests preTests repTests scmDtUnitTest srpFtTests tgtTests whgTests)
|
||||
GROUP5_TARGETS=(ddsView logViewer sqlBrowser)
|
||||
GROUP6_TARGETS=(DaoGenerator lupdate)
|
||||
|
||||
build_group() {
|
||||
local group_name="$1"
|
||||
local build_flag="$2"
|
||||
shift 2
|
||||
local targets=("$@")
|
||||
|
||||
if [[ "${build_flag}" != "ON" ]]; then
|
||||
log_info "Skipping ${group_name} (disabled)"
|
||||
return
|
||||
fi
|
||||
|
||||
log_info "Building ${group_name}..."
|
||||
for target in "${targets[@]}"; do
|
||||
log_info " Building: ${target}"
|
||||
cmake --build "${BUILD_DIR}" --target "${target}" -j$(nproc) || die "Failed to build ${target}"
|
||||
done
|
||||
}
|
||||
|
||||
build_group "GROUP1 (DDS/AP4)" "${BUILD_GROUP1}" "${GROUP1_TARGETS[@]}"
|
||||
build_group "GROUP3 (Lts/AP3)" "${BUILD_GROUP3}" "${GROUP3_TARGETS[@]}"
|
||||
build_group "GROUP5 (Viewer/AP9)" "${BUILD_GROUP5}" "${GROUP5_TARGETS[@]}"
|
||||
build_group "GROUP6 (Tools/AP9)" "${BUILD_GROUP6}" "${GROUP6_TARGETS[@]}"
|
||||
|
||||
# Run tests if enabled
|
||||
if [[ "${RUN_CTEST}" == "ON" ]] && [[ "${TESTS_ONLY}" != "ON" ]]; then
|
||||
log_info "Running ctest..."
|
||||
cd "${BUILD_DIR}"
|
||||
ctest --output-on-failure -j$(nproc) || log_info "Some tests failed (continuing)"
|
||||
cd ..
|
||||
fi
|
||||
|
||||
log_info "Release 2 build completed successfully!"
|
||||
'
|
||||
)
|
||||
|
||||
log_info "Starting Docker container..."
|
||||
docker run "${DOCKER_RUN_ARGS[@]}"
|
||||
|
||||
log_info "Build script completed."
|
||||
Reference in new issue
Block a user