diff --git a/.github/workflows/test-chroot.yml b/.github/workflows/test-chroot.yml index 2f5457f52..b3ea6e4d9 100644 --- a/.github/workflows/test-chroot.yml +++ b/.github/workflows/test-chroot.yml @@ -157,6 +157,8 @@ jobs: - name: Setup Rust uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable - name: Setup Java uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v4 @@ -186,6 +188,12 @@ jobs: echo "Captured CARGO_HOME: ${CARGO_HOME}" fi + # Rust: RUSTUP_HOME is needed so rustc can find the toolchain + if [ -n "$RUSTUP_HOME" ]; then + echo "RUSTUP_HOME=${RUSTUP_HOME}" >> $GITHUB_ENV + echo "Captured RUSTUP_HOME: ${RUSTUP_HOME}" + fi + # Java: JAVA_HOME is needed so entrypoint can add $JAVA_HOME/bin to PATH # The setup-java action sets JAVA_HOME but sudo may not preserve it if [ -n "$JAVA_HOME" ]; then @@ -210,11 +218,14 @@ jobs: echo "GOROOT: $GOROOT" echo "Ruby: $(ruby --version)" echo "Gem: $(gem --version)" + echo "Bundler: $(bundle --version 2>&1 || echo 'Not installed')" echo "Rust: $(rustc --version)" echo "Cargo: $(cargo --version)" echo "CARGO_HOME: $CARGO_HOME" + echo "RUSTUP_HOME: $RUSTUP_HOME" echo "Java: $(java --version 2>&1 | head -1)" echo "JAVA_HOME: $JAVA_HOME" + echo "Maven: $(mvn --version 2>&1 | head -1 || echo 'Not installed')" echo "dotnet: $(dotnet --version 2>&1)" echo "DOTNET_ROOT: $DOTNET_ROOT" diff --git a/containers/agent/entrypoint.sh b/containers/agent/entrypoint.sh index f2f741d07..eced7d04e 100644 --- a/containers/agent/entrypoint.sh +++ b/containers/agent/entrypoint.sh @@ -292,6 +292,11 @@ AWFEOF echo "[entrypoint] Adding CARGO_HOME/bin to PATH: ${AWF_CARGO_HOME}/bin" echo "export PATH=\"${AWF_CARGO_HOME}/bin:\$PATH\"" >> "/host${SCRIPT_FILE}" echo "export CARGO_HOME=\"${AWF_CARGO_HOME}\"" >> "/host${SCRIPT_FILE}" + # Also set RUSTUP_HOME if provided (needed for rustc to find toolchain) + if [ -n "${AWF_RUSTUP_HOME}" ]; then + echo "[entrypoint] Setting RUSTUP_HOME: ${AWF_RUSTUP_HOME}" + echo "export RUSTUP_HOME=\"${AWF_RUSTUP_HOME}\"" >> "/host${SCRIPT_FILE}" + fi else # Fallback: detect Cargo from default location if CARGO_HOME not provided # This ensures Rust binaries work even when CARGO_HOME env var is not set diff --git a/src/docker-manager.ts b/src/docker-manager.ts index bdd047177..e32023a92 100644 --- a/src/docker-manager.ts +++ b/src/docker-manager.ts @@ -358,6 +358,10 @@ export function generateDockerCompose( if (process.env.CARGO_HOME) { environment.AWF_CARGO_HOME = process.env.CARGO_HOME; } + // Rust: Pass RUSTUP_HOME so rustc/cargo can find the toolchain + if (process.env.RUSTUP_HOME) { + environment.AWF_RUSTUP_HOME = process.env.RUSTUP_HOME; + } // Java: Pass JAVA_HOME so entrypoint can add $JAVA_HOME/bin to PATH and set JAVA_HOME if (process.env.JAVA_HOME) { environment.AWF_JAVA_HOME = process.env.JAVA_HOME;