diff --git a/app/Dockerfile b/app/Dockerfile index ee60c9fe7..1761e1283 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -88,6 +88,16 @@ RUN set -eux; \ # geographiclib already installed via apt; RTI (Proprietary) cannot be installed automatically echo "Note: RTI Connext (RTI) is proprietary and must be installed manually into /opt/RTI if required." +# Add RPM/rpmbuild tools so make_rpm.py can run inside the image when requested +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends rpm rpm-build rpmdevtools || true; \ + rm -rf /var/lib/apt/lists/* + +# Copy helper scripts (do not execute heavy source builds here) +COPY prepare_rpm.sh install_arcgis.sh build_geographiclib.sh install_rti.sh /app/ +RUN chmod +x /app/*.sh || true + COPY . /app CMD ["python3.11", "run_migration.py", "--help"] diff --git a/app/run_docker.sh b/app/run_docker.sh index 29521bca7..b16798442 100755 --- a/app/run_docker.sh +++ b/app/run_docker.sh @@ -12,6 +12,11 @@ QT_ROOT_DEFAULT="${QT_ROOT_DEFAULT:-/opt/Qt/6.8.3/gcc_64}" GIT_REPO_DIR="" WORKDIR_IN_CONTAINER="" RUN_QT_SMOKE_TEST=0 +RUN_RPM=0 +PROJECT_RPM="" +OS_VERSION_RPM="ubuntu24" +LTS_VERSION_RPM="1.2.0" +GUEZ_MODE_RPM="ON" QT_ROOT_OVERRIDE="" DOCKER_ARGS=() CMD_ARGS=() @@ -55,6 +60,26 @@ while [[ $# -gt 0 ]]; do QT_ROOT_OVERRIDE="$2" shift 2 ;; + --run-rpm) + RUN_RPM=1 + shift + ;; + --rpm-project) + PROJECT_RPM="$2" + shift 2 + ;; + --rpm-os) + OS_VERSION_RPM="$2" + shift 2 + ;; + --rpm-lts) + LTS_VERSION_RPM="$2" + shift 2 + ;; + --rpm-guez) + GUEZ_MODE_RPM="$2" + shift 2 + ;; -h|--help) usage exit 0 @@ -169,7 +194,14 @@ EOF ) fi -if [[ ${#CMD_ARGS[@]} -eq 0 ]]; then +if [[ ${RUN_RPM} -eq 1 ]]; then + # Run rpm prepare script inside container + if [[ -n "$PROJECT_RPM" ]]; then + CMD_ARGS=(bash -lc "/app/prepare_rpm.sh '$PROJECT_RPM' '$OS_VERSION_RPM' '$LTS_VERSION_RPM' '$GUEZ_MODE_RPM'") + else + CMD_ARGS=(bash -lc "/app/prepare_rpm.sh") + fi +elif [[ ${#CMD_ARGS[@]} -eq 0 ]]; then CMD_ARGS=(bash) fi @@ -194,6 +226,8 @@ docker run --rm $DOCKER_TTY_FLAG \ -e QT_ROOT="$QT_ROOT_OVERRIDE" \ -e Qt6_ROOT="$QT_ROOT_OVERRIDE" \ -e CMAKE_PREFIX_PATH="$QT_ROOT_OVERRIDE" \ + -e PROJECT_BASE_DIR="${PROJECT_BASE_DIR:-./}" \ + -e PROJECT_BASE_DIR="${PROJECT_BASE_DIR:-./}" \ "$IMAGE_NAME" \ bash -s -- "${CMD_ARGS[@]}" <<'DOCKER_SCRIPT' set -euo pipefail