#!/usr/bin/env bash # T035 Option 3: Build all PlasmaCloud service binaries # Each service is in its own workspace with its own Cargo.toml set -euo pipefail BASE_DIR="/home/centra/cloud" echo "=== T035 S2: Building all PlasmaCloud service binaries ===" echo "Building in release mode for integration testing..." echo "" # Service definitions: directory and package name declare -A SERVICES=( ["chainfire"]="chainfire-server" ["flaredb"]="flaredb-server" ["iam"]="iam-server" ["plasmavmc"]="plasmavmc-server" ["novanet"]="novanet-server" ["flashdns"]="flashdns-server" ["fiberlb"]="fiberlb-server" ["lightningstor"]="lightningstor-server" ["k8shost"]="k8shost-server" ["metricstor"]="metricstor-server" ) # Build each service in its workspace BUILT=0 FAILED=0 for dir in "${!SERVICES[@]}"; do pkg="${SERVICES[$dir]}" echo "Building $pkg in $dir workspace..." if cd "$BASE_DIR/$dir" && nix develop "$BASE_DIR" -c cargo build --release -p "$pkg" 2>&1 | grep -E "(Compiling|Finished|error:)" | tail -5; then echo "✓ $pkg: BUILD SUCCESS" ((BUILT++)) else echo "✗ $pkg: BUILD FAILED" ((FAILED++)) fi echo "" done echo "" echo "=== Build Summary ===" echo "Checking for built binaries in target/release/..." # Verify binaries exist for dir in "${!SERVICES[@]}"; do pkg="${SERVICES[$dir]}" # Binary name is typically the package name with -server removed or kept binary_name1="${pkg%-server}" binary_name2="$pkg" if [ -f "$BASE_DIR/$dir/target/release/$binary_name1" ]; then echo "✓ $pkg: $BASE_DIR/$dir/target/release/$binary_name1" elif [ -f "$BASE_DIR/$dir/target/release/$binary_name2" ]; then echo "✓ $pkg: $BASE_DIR/$dir/target/release/$binary_name2" else echo "✗ $pkg: BINARY NOT FOUND" fi done echo "" echo "Total: $BUILT built, $FAILED failed out of ${#SERVICES[@]}" exit $FAILED