fix(migrate): use per-module build dir to avoid permission conflicts with existing /repo/build
This commit is contained in:
1 parent
699d745a6a
commit
f6089bcdca
1 file changed
+10
-6
@@ -29,17 +29,21 @@ MODULE_ABS="/repo/$(realpath --relative-to="$REPO_DIR" "$MODULE_PATH")"
|
||||
# The container will configure just the requested module in a clean build directory.
|
||||
|
||||
# Try using app/run_docker.sh; if it fails, fall back to direct docker run using the built image.
|
||||
# Use a dedicated build dir per-module to avoid permission issues on /repo/build created by earlier runs.
|
||||
SANITIZED_MODULE_NAME=$(echo "${MODULE_PATH}" | sed -e 's#/##_g' -e 's/[^A-Za-z0-9_.-]/_/g')
|
||||
BUILD_DIR="/repo/build_migrate_${SANITIZED_MODULE_NAME}"
|
||||
|
||||
if ./app/run_docker.sh "$REPO_DIR" -- 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 && rm -rf /repo/build && mkdir -p /repo/build && cd /repo/build && \
|
||||
cmake -S /repo -B /repo/build -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && \
|
||||
cmake --build /repo/build -- -j${JOBS} && ctest --test-dir /repo/build --output-on-failure"; then
|
||||
echo "Migration run for module ${MODULE_PATH} finished via run_docker.sh. Check ./build for logs and artifacts."
|
||||
"set -euo pipefail && export LD_LIBRARY_PATH=/opt/Qt/6.8.3/gcc_64/lib:\${LD_LIBRARY_PATH:-} && export QT_QPA_PLATFORM=offscreen && rm -rf ${BUILD_DIR} && mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} && \
|
||||
cmake -S /repo -B ${BUILD_DIR} -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && \
|
||||
cmake --build ${BUILD_DIR} -- -j${JOBS} && ctest --test-dir ${BUILD_DIR} --output-on-failure"; then
|
||||
echo "Migration run for module ${MODULE_PATH} finished via run_docker.sh. Check ${BUILD_DIR} for logs and artifacts."
|
||||
else
|
||||
echo "run_docker.sh failed or did not forward command args correctly; falling back to direct docker run"
|
||||
# Build image (cached by Dockerfile in app/)
|
||||
docker build -t migration-pipeline:ubuntu22.04 ./app >/dev/null || true
|
||||
docker run --rm --user "$(id -u):$(id -g)" -v "$REPO_DIR":/repo -w /repo -e CMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -e Qt6_ROOT=/opt/Qt/6.8.3/gcc_64 -e QT_QPA_PLATFORM=offscreen migration-pipeline:ubuntu22.04 bash -lc "set -euo pipefail && export LD_LIBRARY_PATH=/opt/Qt/6.8.3/gcc_64/lib:\${LD_LIBRARY_PATH:-} && rm -rf /repo/build && mkdir -p /repo/build && cd /repo/build && cmake -S /repo -B /repo/build -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && cmake --build /repo/build -- -j${JOBS} && ctest --test-dir /repo/build --output-on-failure"
|
||||
echo "Migration run for module ${MODULE_PATH} finished via direct docker run. Check ./build for logs and artifacts."
|
||||
docker run --rm --user "$(id -u):$(id -g)" -v "$REPO_DIR":/repo -w /repo -e CMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -e Qt6_ROOT=/opt/Qt/6.8.3/gcc_64 -e QT_QPA_PLATFORM=offscreen migration-pipeline:ubuntu22.04 bash -lc "set -euo pipefail && export LD_LIBRARY_PATH=/opt/Qt/6.8.3/gcc_64/lib:\${LD_LIBRARY_PATH:-} && rm -rf ${BUILD_DIR} && mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} && cmake -S /repo -B ${BUILD_DIR} -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && cmake --build ${BUILD_DIR} -- -j${JOBS} && ctest --test-dir ${BUILD_DIR} --output-on-failure"
|
||||
echo "Migration run for module ${MODULE_PATH} finished via direct docker run. Check ${BUILD_DIR} for logs and artifacts."
|
||||
fi
|
||||
|
||||
echo "Migration run for module ${MODULE_PATH} finished. Check ./build for logs and artifacts."
|
||||
Reference in new issue
Block a user