@@ -332,26 +332,38 @@ runs:
332332 BUILDCONFIG="$KERNEL_PATH/common/build.config.gki"
333333 CONSTANTSCONFIG="$KERNEL_PATH/common/build.config.constants"
334334 CLANG_VERSION=""
335- if grep -q '^CONFIG_CLANG_VERSION=' "$DEFCONFIG"; then
336- CLANG_VERSION=$(grep '^CONFIG_CLANG_VERSION=' "$DEFCONFIG" | head -n1 | cut -d'=' -f2 | tr -d '"')
337- elif grep -q '^CLANG_VERSION=' "$BUILDCONFIG"; then
338- CLANG_VERSION=$(grep '^CLANG_VERSION=' "$BUILDCONFIG" | head -n1 | cut -d'=' -f2)
339- elif grep -q '^CLANG_VERSION=' "$CONSTANTSCONFIG"; then
340- CLANG_VERSION=$(grep '^CLANG_VERSION=' "$CONSTANTSCONFIG" | head -n1 | cut -d'=' -f2)
335+ CLANG_BIN_PATH=""
336+ if grep -q '^CONFIG_CLANG_VERSION=' "$DEFCONFIG" 2>/dev/null; then
337+ CLANG_VERSION=$(grep '^CONFIG_CLANG_VERSION=' "$DEFCONFIG" 2>/dev/null | head -n1 | cut -d'=' -f2 | tr -d '"' | xargs)
338+ elif grep -q '^CLANG_VERSION=' "$BUILDCONFIG" 2>/dev/null; then
339+ CLANG_VERSION=$(grep '^CLANG_VERSION=' "$BUILDCONFIG" 2>/dev/null | head -n1 | cut -d'=' -f2 | xargs)
340+ elif grep -q '^CLANG_VERSION=' "$CONSTANTSCONFIG" 2>/dev/null; then
341+ CLANG_VERSION=$(grep '^CLANG_VERSION=' "$CONSTANTSCONFIG" 2>/dev/null | head -n1 | cut -d'=' -f2 | xargs)
341342 CLANG_VERSION="clang-$CLANG_VERSION"
342343 else
343344 echo "No clang version found in config, will auto-detect in prebuilts."
344345 fi
345346 if [ -z "$CLANG_VERSION" ]; then
346347 if [ -d "$KERNEL_PATH/prebuilts/clang/host/linux-x86" ]; then
347- CLANG_VERSION=$(ls -d "$KERNEL_PATH"/prebuilts/clang/host/linux-x86/*/ | head -n 1 | xargs basename)
348+ CLANG_VERSION=$(ls -d "$KERNEL_PATH"/prebuilts/clang/host/linux-x86/clang-r*/ | tail -n 1 | xargs basename)
349+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts/clang/host/linux-x86/$CLANG_VERSION/bin"
350+ elif [ -d "$KERNEL_PATH/prebuilts-master/clang/host/linux-x86" ]; then
351+ CLANG_VERSION=$(ls -d "$KERNEL_PATH"/prebuilts-master/clang/host/linux-x86/clang-r*/ | tail -n 1 | xargs basename)
352+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts-master/clang/host/linux-x86/$CLANG_VERSION/bin"
348353 else
349354 CLANG_VERSION="clang"
355+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts/clang/host/linux-x86/$CLANG_VERSION/bin" # dummy
356+ fi
357+ else
358+ if [ -d "$KERNEL_PATH/prebuilts/clang/host/linux-x86" ]; then
359+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts/clang/host/linux-x86/$CLANG_VERSION/bin"
360+ else
361+ CLANG_BIN_PATH="$KERNEL_PATH/prebuilts-master/clang/host/linux-x86/$CLANG_VERSION/bin"
350362 fi
351363 fi
352364 echo "Detected CLANG_VERSION: $CLANG_VERSION"
353365 echo "CLANG_VERSION=$CLANG_VERSION" >> $GITHUB_ENV
354- echo "CLANG_BIN_PATH=$KERNEL_PATH/prebuilts/clang/host/linux-x86/$CLANG_VERSION/bin " >> $GITHUB_ENV
366+ echo "CLANG_BIN_PATH=$CLANG_BIN_PATH " >> $GITHUB_ENV
355367
356368 - name : Build Kernel
357369 shell : bash
@@ -405,6 +417,7 @@ runs:
405417 make -j$(nproc --all) O=out $MAKE_ARGS || exit 1
406418
407419 - name : Create Kernel ZIP
420+ id : create_zip
408421 shell : bash
409422 run : |
410423 CONFIG_DIR="$GITHUB_WORKSPACE/${{ env.CONFIG }}"
@@ -421,8 +434,65 @@ runs:
421434 echo "Creating zip file $ZIP_NAME in $ARTIFACTS_DIR..."
422435 zip -r "$ARTIFACTS_DIR/$ZIP_NAME" ./*
423436
437+ - name : Save Build Metadata
438+ shell : bash
439+ if : success() && steps.create_zip.conclusion == 'success'
440+ id : save_metadata
441+ run : |
442+ CONFIG_DIR="$GITHUB_WORKSPACE/${{ env.CONFIG }}"
443+ ARTIFACTS_DIR="$CONFIG_DIR/artifacts"
444+ cd "$ARTIFACTS_DIR"
445+ if [ -z "$(ls *.zip 2>/dev/null)" ]; then
446+ echo "No kernel zip found! Artifact upload might be fake."
447+ exit 1
448+ fi
449+
450+ cd "$CONFIG_DIR/kernel_platform/common"
451+ CONFIG_FILES=("build.config.common" "build.config.constants")
452+ BRANCH_LINE=""
453+
454+ for file in "${CONFIG_FILES[@]}"; do
455+ if [ -f "$file" ]; then
456+ line=$(grep '^[[:space:]]*BRANCH=' "$file" | head -n1 || true)
457+ if [ -n "$line" ]; then
458+ BRANCH_LINE="$line"
459+ echo "Found BRANCH in: $file"
460+ break # Found it — exit loop
461+ else
462+ echo "File exists but no BRANCH= found: $file"
463+ fi
464+ else
465+ echo "File not found: $file"
466+ fi
467+ done
468+
469+ if [ -z "$BRANCH_LINE" ]; then
470+ echo "Error: No BRANCH= found in any of: ${CONFIG_FILES[*]}"
471+ exit 1
472+ fi
473+
474+ BRANCH_VALUE="${BRANCH_LINE#*=}"
475+ ANDROID_VERSION="${BRANCH_VALUE%-*}"
476+
477+ if [ -z "$ANDROID_VERSION" ]; then
478+ echo "Error: Could not extract 'androidXX' from BRANCH='$BRANCH_VALUE'"
479+ exit 1
480+ fi
481+
482+ # Extract values using grep and awk
483+ VERSION=$(grep '^VERSION *=' Makefile | awk '{print $3}')
484+ PATCHLEVEL=$(grep '^PATCHLEVEL *=' Makefile | awk '{print $3}')
485+ SUBLEVEL=$(grep '^SUBLEVEL *=' Makefile | awk '{print $3}')
486+ FULL_VERSION="$VERSION.$PATCHLEVEL.$SUBLEVEL"
487+
488+ echo "Kernel Version: $ANDROID_VERSION-$FULL_VERSION"
489+
490+ cd "$ARTIFACTS_DIR"
491+ echo "$ANDROID_VERSION-$FULL_VERSION" > ${{ inputs.model }}.txt
492+
424493 - name : Upload Artifacts
425494 uses : actions/upload-artifact@v4
426495 with :
427496 name : kernel-${{ env.CONFIG }}
428- path : ${{ env.CONFIG }}/artifacts/*.zip
497+ path : |
498+ ${{ env.CONFIG }}/artifacts/*
0 commit comments