From e7b8f8ed1f89b84cd868774581f7f923d180cfa8 Mon Sep 17 00:00:00 2001 From: Android ROM Builder Date: Mon, 30 Jun 2025 02:15:00 +0200 Subject: [PATCH] Fix: Source sync workspace handling and device tree parsing - Added workspace directory creation if missing in source sync step - Added repo initialization check and fallback initialization - Fixed device manufacturer parsing for garnet (xiaomi) in all trees - Corrected device/kernel/vendor tree path generation - Made source sync more robust against missing workspace from previous steps --- .buildkite/pipeline.yml | 67 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 884179a..e6614df 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -486,8 +486,27 @@ steps: echo "🔄 Enterprise Android source synchronization..." + # Ensure workspace directory exists (create if missing) + if [ ! -d android-workspace ]; then + echo "âš ī¸ Android workspace not found, creating it..." + mkdir -p android-workspace + echo "â„šī¸ Note: This suggests the repository initialization step may not have completed" + fi + cd android-workspace + # Check if repo is initialized, initialize if needed + if [ ! -d .repo ]; then + echo "âš ī¸ Repository not initialized, initializing now..." + if ! repo init -u "$$MANIFEST_URL" -b "$$MANIFEST_BRANCH" --depth=1; then + echo "❌ Failed to initialize repository" + exit 1 + fi + echo "✅ Repository initialized" + else + echo "✅ Repository already initialized" + fi + # Initialize sync monitoring START_TIME=$$(date +%s) SYNC_LOG="../logs/sync-$$(date +%Y%m%d-%H%M%S).log" @@ -611,10 +630,24 @@ steps: if [ -n "$$DEVICE_TREE_URL" ]; then echo "📱 Cloning device tree from: $$DEVICE_TREE_URL" - DEVICE_PATH="device/$$(echo "$$TARGET_DEVICE" | cut -d'_' -f2 | cut -d'-' -f1)" - DEVICE_MANUFACTURER="$$(echo "$$DEVICE_PATH" | cut -d'/' -f2)" + # Extract device name from TARGET_DEVICE (lineage_garnet-userdebug -> garnet) DEVICE_NAME="$$(echo "$$TARGET_DEVICE" | cut -d'_' -f2 | cut -d'-' -f1)" + # Determine manufacturer based on device name + case "$$DEVICE_NAME" in + garnet) + DEVICE_MANUFACTURER="xiaomi" + ;; + *) + # Try to extract from device tree URL as fallback + DEVICE_MANUFACTURER="$$(echo "$$DEVICE_TREE_URL" | sed -n 's/.*android_device_\([^_]*\)_.*/\1/p')" + if [ -z "$$DEVICE_MANUFACTURER" ]; then + DEVICE_MANUFACTURER="unknown" + fi + ;; + esac + + echo "📱 Device: $$DEVICE_MANUFACTURER/$$DEVICE_NAME" mkdir -p "device/$$DEVICE_MANUFACTURER" if ! git clone "$$DEVICE_TREE_URL" -b "$$DEVICE_TREE_BRANCH" "device/$$DEVICE_MANUFACTURER/$$DEVICE_NAME" 2>&1 | tee -a "$$SYNC_LOG"; then echo "âš ī¸ Warning: Failed to clone device tree, continuing without it" @@ -625,10 +658,21 @@ steps: if [ -n "$$KERNEL_SOURCE_URL" ]; then echo "🔧 Cloning kernel source from: $$KERNEL_SOURCE_URL" - KERNEL_PATH="kernel/$$(echo "$$TARGET_DEVICE" | cut -d'_' -f2 | cut -d'-' -f1)" - KERNEL_MANUFACTURER="$$(echo "$$KERNEL_PATH" | cut -d'/' -f2)" + # Use same manufacturer as device KERNEL_NAME="$$(echo "$$TARGET_DEVICE" | cut -d'_' -f2 | cut -d'-' -f1)" + case "$$KERNEL_NAME" in + garnet) + KERNEL_MANUFACTURER="xiaomi" + ;; + *) + KERNEL_MANUFACTURER="$$(echo "$$KERNEL_SOURCE_URL" | sed -n 's/.*android_kernel_\([^_]*\)_.*/\1/p')" + if [ -z "$$KERNEL_MANUFACTURER" ]; then + KERNEL_MANUFACTURER="unknown" + fi + ;; + esac + echo "🔧 Kernel: $$KERNEL_MANUFACTURER/$$KERNEL_NAME" mkdir -p "kernel/$$KERNEL_MANUFACTURER" if ! git clone "$$KERNEL_SOURCE_URL" -b "$$KERNEL_SOURCE_BRANCH" "kernel/$$KERNEL_MANUFACTURER/$$KERNEL_NAME" 2>&1 | tee -a "$$SYNC_LOG"; then echo "âš ī¸ Warning: Failed to clone kernel source, continuing without it" @@ -639,10 +683,21 @@ steps: if [ -n "$$VENDOR_TREE_URL" ]; then echo "đŸĸ Cloning vendor blobs from: $$VENDOR_TREE_URL" - VENDOR_PATH="vendor/$$(echo "$$TARGET_DEVICE" | cut -d'_' -f2 | cut -d'-' -f1)" - VENDOR_MANUFACTURER="$$(echo "$$VENDOR_PATH" | cut -d'/' -f2)" + # Use same manufacturer as device VENDOR_NAME="$$(echo "$$TARGET_DEVICE" | cut -d'_' -f2 | cut -d'-' -f1)" + case "$$VENDOR_NAME" in + garnet) + VENDOR_MANUFACTURER="xiaomi" + ;; + *) + VENDOR_MANUFACTURER="$$(echo "$$VENDOR_TREE_URL" | sed -n 's/.*vendor_\([^_]*\)_.*/\1/p')" + if [ -z "$$VENDOR_MANUFACTURER" ]; then + VENDOR_MANUFACTURER="unknown" + fi + ;; + esac + echo "đŸĸ Vendor: $$VENDOR_MANUFACTURER/$$VENDOR_NAME" mkdir -p "vendor/$$VENDOR_MANUFACTURER" if ! git clone "$$VENDOR_TREE_URL" -b "$$VENDOR_TREE_BRANCH" "vendor/$$VENDOR_MANUFACTURER/$$VENDOR_NAME" 2>&1 | tee -a "$$SYNC_LOG"; then echo "âš ī¸ Warning: Failed to clone vendor tree, continuing without it"