Skip to content

Commit 5c8c099

Browse files
leogdionclaude
andcommitted
feat: search for LLVM tools in Android SDK artifactbundle
The Android SDK may include llvm-profdata and llvm-cov that match the LLVM version used to generate profraw files. This change searches the Android artifactbundle for these tools before falling back to the host Swift installation. This should resolve the LLVM v9/v10 version mismatch error: "raw profile version mismatch: Profile uses version = 9; expected version = 10" Search paths in order of preference: 1. Android SDK: swift-android/bin, usr/bin, toolset/bin, ../bin 2. Host Swift: ${SWIFT_INSTALLATION}/bin (fallback) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
1 parent 2407c2e commit 5c8c099

File tree

1 file changed

+29
-5
lines changed

1 file changed

+29
-5
lines changed

.github/actions/swift-android-action/action.yml

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -605,10 +605,34 @@ runs:
605605
echo " # Find the test binary" >> ${SCRIPT_FILE}
606606
echo " TEST_BINARY=\$(find \${SWIFT_SDK_TARGET}/debug -name '*.xctest' | head -n 1)" >> ${SCRIPT_FILE}
607607
echo " if [ -n \"\$TEST_BINARY\" ]; then" >> ${SCRIPT_FILE}
608-
echo " # Step 1: Merge profraw -> profdata (required even for single file)" >> ${SCRIPT_FILE}
609-
echo " SWIFT_PROFDATA=\"\${SWIFT_INSTALLATION}/bin/llvm-profdata\"" >> ${SCRIPT_FILE}
610-
echo " SWIFT_LLVM_COV=\"\${SWIFT_INSTALLATION}/bin/llvm-cov\"" >> ${SCRIPT_FILE}
611-
echo " if [ -f \"\$SWIFT_PROFDATA\" ] && [ -f \"\$SWIFT_LLVM_COV\" ]; then" >> ${SCRIPT_FILE}
608+
echo " # Step 1: Find LLVM tools - prefer Android SDK tools to match profraw version" >> ${SCRIPT_FILE}
609+
echo " SWIFT_PROFDATA=\"\"" >> ${SCRIPT_FILE}
610+
echo " SWIFT_LLVM_COV=\"\"" >> ${SCRIPT_FILE}
611+
echo " " >> ${SCRIPT_FILE}
612+
echo " # Search Android SDK artifactbundle for matching LLVM tools" >> ${SCRIPT_FILE}
613+
echo " if [ -n \"\${SWIFT_ARTIFACTBUNDLE_SDK_ROOT_PATH}\" ]; then" >> ${SCRIPT_FILE}
614+
echo " ANDROID_SDK_BASE=\$(dirname \"\${SWIFT_ARTIFACTBUNDLE_SDK_ROOT_PATH}\")" >> ${SCRIPT_FILE}
615+
echo " for search_path in \"\${ANDROID_SDK_BASE}/bin\" \"\${ANDROID_SDK_BASE}/usr/bin\" \"\${ANDROID_SDK_BASE}/toolset/bin\" \"\${ANDROID_SDK_BASE}/../bin\"; do" >> ${SCRIPT_FILE}
616+
echo " if [ -f \"\${search_path}/llvm-profdata\" ] && [ -f \"\${search_path}/llvm-cov\" ]; then" >> ${SCRIPT_FILE}
617+
echo " SWIFT_PROFDATA=\"\${search_path}/llvm-profdata\"" >> ${SCRIPT_FILE}
618+
echo " SWIFT_LLVM_COV=\"\${search_path}/llvm-cov\"" >> ${SCRIPT_FILE}
619+
echo " echo \"Found Android SDK LLVM tools in \${search_path}\"" >> ${SCRIPT_FILE}
620+
echo " break" >> ${SCRIPT_FILE}
621+
echo " fi" >> ${SCRIPT_FILE}
622+
echo " done" >> ${SCRIPT_FILE}
623+
echo " fi" >> ${SCRIPT_FILE}
624+
echo " " >> ${SCRIPT_FILE}
625+
echo " # Fall back to host Swift installation if not found in Android SDK" >> ${SCRIPT_FILE}
626+
echo " if [ -z \"\$SWIFT_PROFDATA\" ]; then" >> ${SCRIPT_FILE}
627+
echo " if [ -f \"\${SWIFT_INSTALLATION}/bin/llvm-profdata\" ] && [ -f \"\${SWIFT_INSTALLATION}/bin/llvm-cov\" ]; then" >> ${SCRIPT_FILE}
628+
echo " SWIFT_PROFDATA=\"\${SWIFT_INSTALLATION}/bin/llvm-profdata\"" >> ${SCRIPT_FILE}
629+
echo " SWIFT_LLVM_COV=\"\${SWIFT_INSTALLATION}/bin/llvm-cov\"" >> ${SCRIPT_FILE}
630+
echo " echo \"Using host Swift LLVM tools from \${SWIFT_INSTALLATION}/bin\"" >> ${SCRIPT_FILE}
631+
echo " fi" >> ${SCRIPT_FILE}
632+
echo " fi" >> ${SCRIPT_FILE}
633+
echo " " >> ${SCRIPT_FILE}
634+
echo " # Step 2: Process coverage if tools were found" >> ${SCRIPT_FILE}
635+
echo " if [ -n \"\$SWIFT_PROFDATA\" ] && [ -n \"\$SWIFT_LLVM_COV\" ]; then" >> ${SCRIPT_FILE}
612636
echo " echo \"Step 1: Merging profraw to profdata...\"" >> ${SCRIPT_FILE}
613637
echo " \"\$SWIFT_PROFDATA\" merge -sparse '${COVERAGE_DIR}/default.profraw' -o '${COVERAGE_DIR}/default.profdata' && {" >> ${SCRIPT_FILE}
614638
echo " echo \"Step 2: Exporting profdata to LCOV...\"" >> ${SCRIPT_FILE}
@@ -617,7 +641,7 @@ runs:
617641
echo " } || echo \"Warning: llvm-cov export failed\"" >> ${SCRIPT_FILE}
618642
echo " } || echo \"Warning: llvm-profdata merge failed\"" >> ${SCRIPT_FILE}
619643
echo " else" >> ${SCRIPT_FILE}
620-
echo " echo \"Warning: Swift LLVM tools not found\"" >> ${SCRIPT_FILE}
644+
echo " echo \"Warning: Swift LLVM tools not found in Android SDK or host installation\"" >> ${SCRIPT_FILE}
621645
echo " fi" >> ${SCRIPT_FILE}
622646
echo " else" >> ${SCRIPT_FILE}
623647
echo " echo \"Warning: Test binary not found\"" >> ${SCRIPT_FILE}

0 commit comments

Comments
 (0)