#!/bin/bash # # Build script for Lightning Monitor Venus OS package # # Usage: # ./build-package.sh # ./build-package.sh --version 1.0.0 # # Installation on Venus OS: # scp dbus-lightning-*.tar.gz root@:/data/ # ssh root@ # cd /data && tar -xzf dbus-lightning-*.tar.gz # bash /data/dbus-lightning/install.sh # set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" VERSION="1.0.0" OUTPUT_DIR="$SCRIPT_DIR" PACKAGE_NAME="dbus-lightning" while [[ $# -gt 0 ]]; do case $1 in --version|-v) VERSION="$2" shift 2 ;; --output|-o) OUTPUT_DIR="$2" shift 2 ;; --help|-h) echo "Usage: $0 [OPTIONS]" echo "" echo "Options:" echo " -v, --version VERSION Set package version (default: 1.0.0)" echo " -o, --output PATH Output directory (default: script directory)" echo " -h, --help Show this help message" exit 0 ;; *) echo "Unknown option: $1" exit 1 ;; esac done BUILD_DATE=$(date -u +"%Y-%m-%d %H:%M:%S UTC") BUILD_TIMESTAMP=$(date +%Y%m%d%H%M%S) BUILD_DIR=$(mktemp -d) PACKAGE_DIR="$BUILD_DIR/$PACKAGE_NAME" echo "==================================================" echo "Building $PACKAGE_NAME package" echo "==================================================" echo "Version: $VERSION" echo "Build date: $BUILD_DATE" echo "Source: $SCRIPT_DIR" echo "Output: $OUTPUT_DIR" echo "" echo "1. Creating package structure..." mkdir -p "$PACKAGE_DIR" mkdir -p "$PACKAGE_DIR/service/log" [ "$(uname)" = "Darwin" ] && export COPYFILE_DISABLE=1 echo "2. Copying application files..." cp "$SCRIPT_DIR/lightning.py" "$PACKAGE_DIR/" cp "$SCRIPT_DIR/config.py" "$PACKAGE_DIR/" cp "$SCRIPT_DIR/blitzortung_client.py" "$PACKAGE_DIR/" cp "$SCRIPT_DIR/strike_buffer.py" "$PACKAGE_DIR/" cp "$SCRIPT_DIR/analysis_engine.py" "$PACKAGE_DIR/" if [ -f "$SCRIPT_DIR/../lib/signal_reader.py" ]; then cp "$SCRIPT_DIR/../lib/signal_reader.py" "$PACKAGE_DIR/" echo " Bundled shared library: signal_reader.py" fi echo "3. Copying service files..." cp "$SCRIPT_DIR/service/run" "$PACKAGE_DIR/service/" cp "$SCRIPT_DIR/service/log/run" "$PACKAGE_DIR/service/log/" echo "4. Copying installation scripts..." cp "$SCRIPT_DIR/install.sh" "$PACKAGE_DIR/" cp "$SCRIPT_DIR/uninstall.sh" "$PACKAGE_DIR/" echo "5. Setting permissions..." chmod +x "$PACKAGE_DIR/lightning.py" chmod +x "$PACKAGE_DIR/install.sh" chmod +x "$PACKAGE_DIR/uninstall.sh" chmod +x "$PACKAGE_DIR/service/run" chmod +x "$PACKAGE_DIR/service/log/run" mkdir -p "$OUTPUT_DIR" TARBALL_NAME="$PACKAGE_NAME-$VERSION.tar.gz" OUTPUT_DIR_ABS="$(cd "$OUTPUT_DIR" && pwd)" TARBALL_PATH="$OUTPUT_DIR_ABS/$TARBALL_NAME" echo "6. Creating package archive..." cd "$BUILD_DIR" if [ "$(uname)" = "Darwin" ]; then if command -v xattr >/dev/null 2>&1; then xattr -cr "$PACKAGE_NAME" fi fi tar --format=ustar -czf "$TARBALL_PATH" "$PACKAGE_NAME" if command -v sha256sum >/dev/null 2>&1; then CHECKSUM=$(sha256sum "$TARBALL_PATH" | cut -d' ' -f1) else CHECKSUM=$(shasum -a 256 "$TARBALL_PATH" | cut -d' ' -f1) fi echo "$CHECKSUM $TARBALL_NAME" > "$OUTPUT_DIR_ABS/$TARBALL_NAME.sha256" echo "7. Cleaning up..." rm -rf "$BUILD_DIR" FILE_SIZE=$(du -h "$TARBALL_PATH" | cut -f1) echo "" echo "==================================================" echo "Build complete!" echo "==================================================" echo "" echo "Package: $TARBALL_PATH" echo "Size: $FILE_SIZE" echo "SHA256: $CHECKSUM" echo "" echo "Installation on Venus OS:" echo " scp $TARBALL_PATH root@:/data/" echo " ssh root@" echo " cd /data" echo " tar -xzf $TARBALL_NAME" echo " bash /data/$PACKAGE_NAME/install.sh" echo ""