Copilot commented on code in PR #12853:
URL: https://github.com/apache/gluten/pull/12853#discussion_r3837997596


##########
.devcontainer/post-create.sh:
##########
@@ -26,13 +26,65 @@
 set -uo pipefail
 
 NUM_THREADS_MARKER='# >>> gluten dev container num_threads >>>'
+STATIC_ARM_MARKER='# >>> gluten static dev container arm64 >>>'
+DEV_CONTAINER_VARIANT=${GLUTEN_DEV_CONTAINER_VARIANT:-velox-dynamic}
 
-warn() { echo "WARNING: $*" >&2; }
+WARNINGS=()
+warn() {
+    echo "WARNING: $*" >&2
+    WARNINGS+=("$*")
+}
 
 echo "Preparing the Gluten dev container..."
 
-# Spark 4.0/4.1 and the UDF tests need JDK 17, which this JDK 8 image lacks.
-# Both JDKs can coexist: JAVA_HOME still points at JDK 8 for the default build.
+# The container runs as root while the bind-mounted workspace retains the host
+# user's ownership. Register only this repository so Git accepts that mismatch.
+WORKSPACE_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)
+if ! git config --global --get-all safe.directory 2>/dev/null |
+    grep -Fqx "$WORKSPACE_DIR"; then
+    git config --global --add safe.directory "$WORKSPACE_DIR" ||
+        warn "could not mark $WORKSPACE_DIR as a safe Git directory."
+fi
+
+# /workspaces persists across "Reopen in Container"/"Rebuild Container" and
+# across switching between the velox-dynamic and velox-static configs, but
+# ep/build-velox/build/velox_ep/_build and cpp/build bake in the vcpkg
+# toolchain choice (or its absence) at first CMake configure and CMake never
+# re-evaluates it. Reusing a build tree from the other variant does not error
+# clearly -- it silently resolves dependencies like zlib/zstd from the wrong
+# place and fails much later, e.g. "could not find SnappyConfig.cmake", deep
+# into a build that can take hours. Catch the mismatch up front instead.
+check_stale_build_tree() {
+    local cache="$1"
+    [ -f "$cache" ] || return 0
+    local has_toolchain=false
+    grep -q '^CMAKE_TOOLCHAIN_FILE:' "$cache" 2>/dev/null && has_toolchain=true
+
+    if [ "$DEV_CONTAINER_VARIANT" = "velox-static" ] && [ "$has_toolchain" = 
false ]; then
+        warn "$cache was configured without the vcpkg toolchain (looks like it 
came from the velox-dynamic container, or a build before --enable_vcpkg=ON). 
Remove stale build trees before building here: rm -rf 
ep/build-velox/build/velox_ep/_build cpp/build"
+    elif [ "$DEV_CONTAINER_VARIANT" = "velox-dynamic" ] && [ "$has_toolchain" 
= true ]; then
+        warn "$cache was configured with the vcpkg toolchain (looks like it 
came from the velox-static container). Remove stale build trees before building 
here: rm -rf ep/build-velox/build/velox_ep/_build cpp/build"

Review Comment:
   This warning text implies the build tree necessarily came from the 
velox-static container, but it can also be created in the dynamic container by 
running a build with `--enable_vcpkg=ON`. Mentioning that case should reduce 
confusion when users intentionally enable vcpkg outside the static config.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to