From 6fbaa9572578a5b84b53263e32e7c20ea92c6440 Mon Sep 17 00:00:00 2001 From: Jan De Landtsheer Date: Sun, 31 Aug 2025 12:58:30 +0200 Subject: [PATCH] refactor: Container-only builds for consistency - Remove --no-container option (never build on real host) - Simplify build.sh to always use containers - Fix Dockerfile user permissions - Update help text and argument parsing - Pass arguments correctly to container builds --- Dockerfile | 11 +++++------ scripts/build.sh | 47 ++++++++++++++++++++--------------------------- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/Dockerfile b/Dockerfile index 67ccc9b..c41dcb0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,12 +27,12 @@ RUN apk add --no-cache \ # Install musl-dev for Rust musl targeting (Alpine handles this differently than rustup) RUN apk add --no-cache musl-dev -# Create non-root user for builds -RUN adduser -D -s /bin/bash builder && \ - chown -R builder:builder /home/builder +# Create non-root user for builds matching host user +RUN adduser -D -s /bin/bash builder -# Set working directory +# Set working directory with proper permissions WORKDIR /workspace +RUN chown builder:builder /workspace # Set environment variables for musl static linking with Alpine's Rust ENV RUSTFLAGS="-C target-feature=+crt-static -C linker=musl-gcc" @@ -40,7 +40,6 @@ ENV CC="musl-gcc" ENV TARGET_CC="musl-gcc" ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER="musl-gcc" -# Default to builder user -USER builder +# Don't switch to builder user yet - let the runtime handle it CMD ["/bin/bash"] \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index 341efd7..d686a53 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -52,8 +52,6 @@ Zero OS Alpine Initramfs Builder Usage: $0 [OPTIONS] Options: - --container Force container build - --no-container Force native build --clean Clean build (remove all artifacts first) --skip-tests Skip boot tests --keep-artifacts Keep build artifacts after completion @@ -78,14 +76,6 @@ EOF function parse_arguments() { while [[ $# -gt 0 ]]; do case $1 in - --container) - USE_CONTAINER="true" - shift - ;; - --no-container) - USE_CONTAINER="false" - shift - ;; --clean) CLEAN_BUILD="true" shift @@ -286,26 +276,29 @@ function main() { # Setup environment setup_build_environment - # Determine build method - if [[ "$USE_CONTAINER" == "auto" ]]; then - if in_container; then - log_info "Already in container, using native build" - main_build_process - elif command_exists "podman" || command_exists "docker"; then - log_info "Container runtime available, using container build" - docker_detect_runtime - docker_build_container - docker_run_build "./scripts/build.sh --no-container" - else - log_info "No container runtime, using native build" - main_build_process - fi - elif [[ "$USE_CONTAINER" == "true" ]]; then + # Always use container builds for consistency + if in_container; then + log_info "Already in container, proceeding with build" + main_build_process + elif command_exists "podman" || command_exists "docker"; then + log_info "Starting container build" docker_detect_runtime docker_build_container - docker_run_build "./scripts/build.sh --no-container" + + # Pass through relevant arguments to container + local container_args="" + if [[ "$SKIP_TESTS" == "true" ]]; then + container_args="$container_args --skip-tests" + fi + if [[ "$KEEP_ARTIFACTS" == "true" ]]; then + container_args="$container_args --keep-artifacts" + fi + + docker_run_build "./scripts/build.sh${container_args}" else - main_build_process + log_error "Container runtime required (podman or docker)" + log_error "Install with: apt-get install podman" + return 1 fi # Cleanup if requested