#!/bin/bash # Build smartbotic-database package set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(dirname "$SCRIPT_DIR")" # Read version from VERSION file VERSION=$(cat "$ROOT_DIR/VERSION" | tr -d '[:space:]') PLATFORM="debian13" # Parse arguments REBUILD_BASE=false CLEAR_CACHE=false NO_CACHE=false BUILD_VERSION="" while [[ $# -gt 0 ]]; do case $1 in --rebuild-base) REBUILD_BASE=true shift ;; --clear-cache) CLEAR_CACHE=true shift ;; --no-cache) NO_CACHE=true shift ;; *) BUILD_VERSION="$1" shift ;; esac done # Use provided version or default from VERSION file VERSION="${BUILD_VERSION:-$VERSION}" echo "Building smartbotic-database version $VERSION" # Create dist directory mkdir -p "$SCRIPT_DIR/dist" # Build using Docker if Dockerfile exists if [ -f "$SCRIPT_DIR/Dockerfile.build" ]; then DOCKER_BUILD_ARGS="" if [ "$NO_CACHE" = true ]; then DOCKER_BUILD_ARGS="--no-cache" fi docker buildx build \ $DOCKER_BUILD_ARGS \ -f "$SCRIPT_DIR/Dockerfile.build" \ --build-arg BUILD_VERSION="$VERSION" \ --build-arg BUILD_GIT_COMMIT="$(git -C "$ROOT_DIR" rev-parse HEAD 2>/dev/null || echo 'unknown')" \ --build-arg BUILD_GIT_BRANCH="$(git -C "$ROOT_DIR" rev-parse --abbrev-ref HEAD 2>/dev/null || echo 'unknown')" \ --target packages \ --output "type=local,dest=$SCRIPT_DIR/dist/" \ "$ROOT_DIR" else # Fall back to local build echo "No Dockerfile.build found, building locally..." BUILD_DIR="$ROOT_DIR/build" PACKAGE_DIR="$SCRIPT_DIR/dist/smartbotic-database-$VERSION-$PLATFORM" # Configure and build cmake -B "$BUILD_DIR" -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DSMARTBOTIC_DB_BUILD_SERVICE=ON \ -DSMARTBOTIC_DB_BUILD_CLIENT=ON \ "$ROOT_DIR" ninja -C "$BUILD_DIR" # Create package structure rm -rf "$PACKAGE_DIR" mkdir -p "$PACKAGE_DIR/bin" mkdir -p "$PACKAGE_DIR/etc/systemd/system" # Copy binary cp "$BUILD_DIR/service/smartbotic-database" "$PACKAGE_DIR/bin/" # Copy config cp "$ROOT_DIR/service/config/database.json.example" "$PACKAGE_DIR/etc/smartbotic-database.json" # Copy systemd unit if [ -f "$SCRIPT_DIR/systemd/smartbotic-database.service" ]; then cp "$SCRIPT_DIR/systemd/smartbotic-database.service" "$PACKAGE_DIR/etc/systemd/system/" fi # Create VERSION file echo "$VERSION" > "$PACKAGE_DIR/VERSION" # Create tarball cd "$SCRIPT_DIR/dist" tar -czf "smartbotic-database-$VERSION-$PLATFORM.tar.gz" "smartbotic-database-$VERSION-$PLATFORM" rm -rf "smartbotic-database-$VERSION-$PLATFORM" echo "Package created: $SCRIPT_DIR/dist/smartbotic-database-$VERSION-$PLATFORM.tar.gz" fi