diff --git a/build.sh b/build.sh index f54e6e0..1b1ba4d 100755 --- a/build.sh +++ b/build.sh @@ -114,17 +114,29 @@ cd "$(dirname "$0")/build" if [ "$CLEAN_BUILD" = true ]; then print_info "Cleaning build artifacts and cache..." - # Remove output artifacts - rm -rf ../output/* + # Remove output artifacts (use sudo if needed for root-owned files) + if ! rm -rf ../output/* 2>/dev/null; then + print_info " Some files owned by root, using container to clean..." + export UID=$(id -u) + export GID=$(id -g) + docker compose run --rm builder sh -c "rm -rf /build/output/*" || { + print_warning "Failed to clean output directory, trying with sudo" + sudo rm -rf ../output/* + } + fi print_info " Removed output artifacts" # Remove cache directories - rm -rf ../cache/* + rm -rf ../cache/* 2>/dev/null || { + print_info " Using sudo to remove cache directories..." + sudo rm -rf ../cache/* + } print_info " Removed cache directories" # Remove Docker volumes print_info " Removing Docker cache volumes..." docker volume rm alpine-initramfs_github-cache alpine-initramfs_kernel-cache 2>/dev/null || true + docker volume rm build_build-cache build_source-cache build_kernel-cache build_target-cache 2>/dev/null || true print_info " Docker cache volumes removed" print_success "Clean completed successfully" @@ -138,6 +150,8 @@ mkdir -p ../output ../cache/github ../cache/packages export BUILDMODE export MINIMAL_MODE export TARGETARCH="${TARGETARCH:-amd64}" +export UID=$(id -u) +export GID=$(id -g) if [ "$DEV_MODE" = true ]; then print_info "Starting development container..." diff --git a/build/docker-compose.yml b/build/docker-compose.yml index 8b2dbaa..25a48da 100644 --- a/build/docker-compose.yml +++ b/build/docker-compose.yml @@ -12,6 +12,7 @@ services: image: zero-os-alpine-builder:cached-${BUILDMODE:-debug} container_name: zero-os-alpine-builder-cached privileged: true + user: "${UID:-1000}:${GID:-1000}" volumes: # Mount source configs and scripts (read-only for cache efficiency) - ../configs:/build/configs:ro @@ -45,6 +46,7 @@ services: image: zero-os-alpine-builder:legacy container_name: zero-os-alpine-builder-legacy privileged: true + user: "${UID:-1000}:${GID:-1000}" volumes: - ../configs:/build/configs:ro - ../scripts:/build/scripts:ro