Commit 4e5b5fce authored by jan.koester's avatar jan.koester
Browse files

test

parent b180f3d1
Loading
Loading
Loading
Loading
+8 −80
Original line number Diff line number Diff line
@@ -73,10 +73,10 @@ while [[ $# -gt 0 ]]; do
        -h|--help)
            echo "Usage: $0 [--clean] [--arch amd64] [PHASE...]"
            echo ""
            echo "Phases: chroot, toolchain, libraries, blogi, editor, all (default)"
            echo "Phases: chroot, toolchain, libraries, blogi, all (default)"
            exit 0
            ;;
        chroot|toolchain|libraries|blogi|editor|all)
        chroot|toolchain|libraries|blogi|all)
            PHASES+=("$1"); shift ;;
        *) echo "Unknown option: $1"; exit 1 ;;
    esac
@@ -87,17 +87,11 @@ if [[ ${#PHASES[@]} -eq 0 ]]; then
    PHASES=("all")
fi

# Only require root for non-editor phases
if [[ $EUID -ne 0 ]]; then
    # Allow editor-only without root
    for phase in "${PHASES[@]}"; do
        if [[ "$phase" != "editor" ]]; then
    echo "This script must be run as root (for nspawn)."
    echo "Usage: sudo $0 [--clean] [PHASE...]"
    exit 1
fi
    done
fi

# ─────────────────────────────────────────────────────────────
# Phase 1: Create minimal Debian chroot
@@ -474,35 +468,23 @@ build_libraries() {
}

# ─────────────────────────────────────────────────────────────
# Phase 4: Build blogi and create .deb
# Phase 4: Build blogi .deb packages (dpkg-buildpackage handles cmake)
# ─────────────────────────────────────────────────────────────
build_blogi() {
    echo "==> Building blogi package..."
    echo "==> Building blogi packages..."

    # Bind-mount the source tree read-only
    systemd-nspawn -D "$CHROOT_DIR" \
        --bind-ro="$PROJECT_DIR:$BUILD_DIR/blogi-src" \
        --pipe -- bash -c "
        set -e
        TOOLCHAIN=/usr/local/musl/share/musl-llvm-toolchain.cmake

        # Copy source (we don't modify the bind mount)
        rm -rf $BUILD_DIR/blogi
        cp -a $BUILD_DIR/blogi-src $BUILD_DIR/blogi
        cd $BUILD_DIR/blogi

        # Build
        mkdir -p build && cd build
        cmake .. -G Ninja \
            -DCMAKE_TOOLCHAIN_FILE=\$TOOLCHAIN \
            -DCMAKE_INSTALL_PREFIX=/usr \
            -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \
            -DCMAKE_BUILD_TYPE=Release \
            -DBUILD_EDITOR=OFF
        ninja

        # Package via dpkg-buildpackage
        cd $BUILD_DIR/blogi
        # Package via dpkg-buildpackage (handles cmake configure+build+install)
        dpkg-buildpackage -us -uc -d -b --build-profiles=nspawn

        # Collect .deb files
@@ -536,69 +518,15 @@ run_phase() {
        toolchain) setup_toolchain ;;
        libraries) build_libraries ;;
        blogi)     build_blogi ;;
        editor)    build_editor ;;
        all)
            setup_chroot
            setup_toolchain
            build_libraries
            build_blogi
            build_editor
            ;;
    esac
}

# ─────────────────────────────────────────────────────────────
# Phase 5: Build blogi-editor normally (system toolchain, dpkg-buildpackage)
# ─────────────────────────────────────────────────────────────
build_editor() {
    echo "==> Building blogi-editor package (nspawn + musl)..."

    # Bind-mount the source tree read-only
    systemd-nspawn -D "$CHROOT_DIR" \
        --bind-ro="$PROJECT_DIR:$BUILD_DIR/blogi-src" \
        --pipe -- bash -c "
        set -e
        TOOLCHAIN=/usr/local/musl/share/musl-llvm-toolchain.cmake

        # Copy source (we don't modify the bind mount)
        rm -rf $BUILD_DIR/blogi
        cp -a $BUILD_DIR/blogi-src $BUILD_DIR/blogi
        cd $BUILD_DIR/blogi

        # Build
        mkdir -p build && cd build
        cmake .. -G Ninja \
            -DCMAKE_TOOLCHAIN_FILE=\$TOOLCHAIN \
            -DCMAKE_INSTALL_PREFIX=/usr \
            -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \
            -DCMAKE_BUILD_TYPE=Release \
            -DBUILD_EDITOR=ON
        ninja

        # Package via dpkg-buildpackage
        cd $BUILD_DIR/blogi
        dpkg-buildpackage -us -uc -d -b --build-profiles=nspawn,editor

        # Collect .deb files
        mkdir -p $BUILD_DIR/output
        mv ../*.deb $BUILD_DIR/output/ 2>/dev/null || true
        mv ../*.changes $BUILD_DIR/output/ 2>/dev/null || true
        mv ../*.buildinfo $BUILD_DIR/output/ 2>/dev/null || true

        echo '==> Editor package build complete'
        ls -la $BUILD_DIR/output/
    "

    # Copy output to host
    mkdir -p "$OUTPUT_DIR"
    cp "$CHROOT_DIR/$BUILD_DIR/output/"*editor*.deb "$OUTPUT_DIR/" 2>/dev/null || true
    cp "$CHROOT_DIR/$BUILD_DIR/output/"*editor*.changes "$OUTPUT_DIR/" 2>/dev/null || true
    cp "$CHROOT_DIR/$BUILD_DIR/output/"*editor*.buildinfo "$OUTPUT_DIR/" 2>/dev/null || true

    echo "==> blogi-editor packages available in: $OUTPUT_DIR"
    ls -la "$OUTPUT_DIR"/blogi-editor* 2>/dev/null || true
}

echo "╔══════════════════════════════════════════════════════════╗"
echo "║  blogi nspawn build — musl + LLVM libc++ + compiler-rt  ║"
echo "╚══════════════════════════════════════════════════════════╝"