| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/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
|