You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
256 lines
8.6 KiB
256 lines
8.6 KiB
# ORLY Nostr Relay Build System |
|
.PHONY: all orly orly-db orly-acl orly-launcher proto clean test deploy web install help |
|
.PHONY: orly-db-badger orly-db-neo4j orly-acl-follows orly-acl-managed orly-acl-curation |
|
.PHONY: all-split arm64-split install-split |
|
.PHONY: orly-sync-negentropy all-sync arm64-sync |
|
.PHONY: quick-deploy quick-deploy-restart deploy-both deploy-both-restart deploy-new list-releases rollback |
|
|
|
# Build flags |
|
CGO_ENABLED ?= 0 |
|
GOOS ?= $(shell go env GOOS) |
|
GOARCH ?= $(shell go env GOARCH) |
|
BUILD_FLAGS = CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) |
|
|
|
# Binaries |
|
BIN_DIR = . |
|
ORLY = $(BIN_DIR)/orly |
|
ORLY_LAUNCHER = $(BIN_DIR)/orly-launcher |
|
|
|
# Legacy monolithic binaries (for backwards compatibility) |
|
ORLY_DB = $(BIN_DIR)/orly-db |
|
ORLY_ACL = $(BIN_DIR)/orly-acl |
|
|
|
# Split database backends |
|
ORLY_DB_BADGER = $(BIN_DIR)/orly-db-badger |
|
ORLY_DB_NEO4J = $(BIN_DIR)/orly-db-neo4j |
|
|
|
# Split ACL modes |
|
ORLY_ACL_FOLLOWS = $(BIN_DIR)/orly-acl-follows |
|
ORLY_ACL_MANAGED = $(BIN_DIR)/orly-acl-managed |
|
ORLY_ACL_CURATION = $(BIN_DIR)/orly-acl-curation |
|
|
|
# === Default Targets (Legacy) === |
|
|
|
# Default target: build everything (legacy monolithic) |
|
all: orly orly-db orly-launcher |
|
@echo "All binaries built successfully" |
|
|
|
# Build everything including ACL (when proto exists) |
|
all-acl: proto orly orly-db orly-acl orly-launcher |
|
@echo "All binaries (including ACL) built successfully" |
|
|
|
# === Split Binaries (New) === |
|
|
|
# Build split mode: orly + orly-db-badger + orly-acl-follows + launcher |
|
all-split: proto orly orly-db-badger orly-acl-follows orly-launcher |
|
@echo "Split mode binaries built successfully" |
|
|
|
# Build all split binaries (all backends and all ACL modes) |
|
all-backends: proto orly orly-db-badger orly-db-neo4j orly-acl-follows orly-acl-managed orly-acl-curation orly-launcher |
|
@echo "All backend and ACL mode binaries built successfully" |
|
|
|
# Main relay binary |
|
orly: |
|
$(BUILD_FLAGS) go build -o $(ORLY) . |
|
|
|
# === Database Backends === |
|
|
|
# Legacy monolithic database server |
|
orly-db: |
|
$(BUILD_FLAGS) go build -o $(ORLY_DB) ./cmd/orly-db |
|
|
|
# Badger database server |
|
orly-db-badger: |
|
$(BUILD_FLAGS) go build -o $(ORLY_DB_BADGER) ./cmd/orly-db-badger |
|
|
|
# Neo4j database server |
|
orly-db-neo4j: |
|
$(BUILD_FLAGS) go build -o $(ORLY_DB_NEO4J) ./cmd/orly-db-neo4j |
|
|
|
# === ACL Modes === |
|
|
|
# Legacy monolithic ACL server (requires proto generation first) |
|
orly-acl: |
|
$(BUILD_FLAGS) go build -o $(ORLY_ACL) ./cmd/orly-acl |
|
|
|
# Follows ACL server (whitelist based on admin follows) |
|
orly-acl-follows: |
|
$(BUILD_FLAGS) go build -o $(ORLY_ACL_FOLLOWS) ./cmd/orly-acl-follows |
|
|
|
# Managed ACL server (NIP-86 fine-grained control) |
|
orly-acl-managed: |
|
$(BUILD_FLAGS) go build -o $(ORLY_ACL_MANAGED) ./cmd/orly-acl-managed |
|
|
|
# Curation ACL server (rate-limited trust tiers) |
|
orly-acl-curation: |
|
$(BUILD_FLAGS) go build -o $(ORLY_ACL_CURATION) ./cmd/orly-acl-curation |
|
|
|
# Process supervisor/launcher |
|
orly-launcher: |
|
$(BUILD_FLAGS) go build -o $(ORLY_LAUNCHER) ./cmd/orly-launcher |
|
|
|
# Generate protobuf code |
|
proto: |
|
cd proto && buf generate |
|
|
|
# === Cross-Compile for ARM64 === |
|
|
|
# Build for ARM64 (relay.orly.dev deployment) - legacy |
|
arm64: |
|
$(MAKE) GOOS=linux GOARCH=arm64 all |
|
|
|
# Build everything for ARM64 including ACL - legacy |
|
arm64-acl: |
|
$(MAKE) GOOS=linux GOARCH=arm64 all-acl |
|
|
|
# Build split mode for ARM64 (recommended for relay.orly.dev) |
|
arm64-split: |
|
$(MAKE) GOOS=linux GOARCH=arm64 all-split |
|
|
|
# Build all backends for ARM64 |
|
arm64-backends: |
|
$(MAKE) GOOS=linux GOARCH=arm64 all-backends |
|
|
|
# === Other Targets === |
|
|
|
# Build web UI and embed |
|
web: |
|
./scripts/update-embedded-web.sh |
|
|
|
# Clean build artifacts |
|
clean: |
|
rm -f $(ORLY) $(ORLY_DB) $(ORLY_ACL) $(ORLY_LAUNCHER) |
|
rm -f $(ORLY_DB_BADGER) $(ORLY_DB_NEO4J) |
|
rm -f $(ORLY_ACL_FOLLOWS) $(ORLY_ACL_MANAGED) $(ORLY_ACL_CURATION) |
|
rm -f $(ORLY_SYNC_NEGENTROPY) |
|
rm -f orly-db-arm64 orly-acl-arm64 orly-launcher-arm64 next.orly.dev |
|
rm -rf build-arm64 |
|
|
|
# Run tests |
|
test: |
|
./scripts/test.sh |
|
|
|
# Deploy to relay.orly.dev (builds on remote) - legacy |
|
deploy: |
|
ssh relay.orly.dev 'cd ~/src/next.orly.dev && git pull origin main && make all && sudo /usr/sbin/setcap cap_net_bind_service=+ep ~/.local/bin/next.orly.dev && sudo systemctl restart orly' |
|
|
|
# Deploy with ACL server - legacy |
|
deploy-acl: |
|
ssh relay.orly.dev 'cd ~/src/next.orly.dev && git pull origin main && make all-acl && sudo /usr/sbin/setcap cap_net_bind_service=+ep ~/.local/bin/next.orly.dev && sudo systemctl restart orly' |
|
|
|
# Deploy split mode (recommended) |
|
deploy-split: |
|
ssh relay.orly.dev 'cd ~/src/next.orly.dev && git pull origin main && make all-split && sudo /usr/sbin/setcap cap_net_bind_service=+ep ~/.local/bin/next.orly.dev && sudo systemctl restart orly' |
|
|
|
# Install all binaries locally - legacy |
|
install: all |
|
mkdir -p ~/.local/bin |
|
cp $(ORLY) $(ORLY_DB) $(ORLY_LAUNCHER) ~/.local/bin/ |
|
|
|
# Install including ACL - legacy |
|
install-acl: all-acl |
|
mkdir -p ~/.local/bin |
|
cp $(ORLY) $(ORLY_DB) $(ORLY_ACL) $(ORLY_LAUNCHER) ~/.local/bin/ |
|
|
|
# Install split mode binaries |
|
install-split: all-split |
|
mkdir -p ~/.local/bin |
|
cp $(ORLY) $(ORLY_DB_BADGER) $(ORLY_ACL_FOLLOWS) $(ORLY_LAUNCHER) ~/.local/bin/ |
|
|
|
# Install all backends and modes |
|
install-backends: all-backends |
|
mkdir -p ~/.local/bin |
|
cp $(ORLY) $(ORLY_DB_BADGER) $(ORLY_DB_NEO4J) $(ORLY_ACL_FOLLOWS) $(ORLY_ACL_MANAGED) $(ORLY_ACL_CURATION) $(ORLY_LAUNCHER) ~/.local/bin/ |
|
|
|
# === Symlink-Based Deployment === |
|
|
|
# Sync binaries |
|
ORLY_SYNC_NEGENTROPY = $(BIN_DIR)/orly-sync-negentropy |
|
|
|
orly-sync-negentropy: |
|
$(BUILD_FLAGS) go build -o $(ORLY_SYNC_NEGENTROPY) ./cmd/orly-sync-negentropy |
|
|
|
# Build all sync services |
|
all-sync: proto orly orly-db orly-acl orly-launcher orly-sync-negentropy |
|
@echo "All sync service binaries built successfully" |
|
|
|
# ARM64 for sync services |
|
arm64-sync: |
|
$(MAKE) GOOS=linux GOARCH=arm64 all-sync |
|
|
|
# Quick deploy: build ARM64 and deploy to relay.orly.dev |
|
quick-deploy: |
|
./scripts/build-and-deploy.sh relay.orly.dev |
|
|
|
# Quick deploy with restart |
|
quick-deploy-restart: |
|
./scripts/build-and-deploy.sh relay.orly.dev --restart |
|
|
|
# Deploy to both relays |
|
deploy-both: |
|
./scripts/build-and-deploy.sh both |
|
|
|
# Deploy to both relays with restart |
|
deploy-both-restart: |
|
./scripts/build-and-deploy.sh both --restart |
|
|
|
# Deploy to new.orly.dev only |
|
deploy-new: |
|
./scripts/build-and-deploy.sh new.orly.dev |
|
|
|
# List available releases on relay |
|
list-releases: |
|
./scripts/deploy-orly.sh --host relay.orly.dev --list |
|
|
|
# Rollback to previous release |
|
rollback: |
|
./scripts/deploy-orly.sh --host relay.orly.dev --rollback --restart |
|
|
|
# Help |
|
help: |
|
@echo "ORLY Build Targets:" |
|
@echo "" |
|
@echo " Split Mode (Recommended):" |
|
@echo " all-split - Build orly + orly-db-badger + orly-acl-follows + launcher" |
|
@echo " all-backends - Build all database backends and ACL modes" |
|
@echo " arm64-split - Cross-compile split mode for ARM64" |
|
@echo " deploy-split - Deploy split mode to relay.orly.dev" |
|
@echo " install-split - Install split mode to ~/.local/bin/" |
|
@echo "" |
|
@echo " Database Backends:" |
|
@echo " orly-db-badger - Build Badger database server" |
|
@echo " orly-db-neo4j - Build Neo4j database server" |
|
@echo "" |
|
@echo " ACL Modes:" |
|
@echo " orly-acl-follows - Build Follows ACL server (whitelist)" |
|
@echo " orly-acl-managed - Build Managed ACL server (NIP-86)" |
|
@echo " orly-acl-curation - Build Curation ACL server (rate limits)" |
|
@echo "" |
|
@echo " Legacy (Monolithic):" |
|
@echo " all - Build orly + orly-db + launcher" |
|
@echo " all-acl - Build all including orly-acl" |
|
@echo " orly-db - Build monolithic database server" |
|
@echo " orly-acl - Build monolithic ACL server" |
|
@echo "" |
|
@echo " Core:" |
|
@echo " orly - Build main relay binary" |
|
@echo " orly-launcher - Build process supervisor" |
|
@echo " proto - Generate protobuf code" |
|
@echo " web - Rebuild embedded web UI" |
|
@echo " test - Run test suite" |
|
@echo " clean - Remove build artifacts" |
|
@echo " help - Show this help" |
|
@echo "" |
|
@echo " Sync Services:" |
|
@echo " orly-sync-negentropy - Build NIP-77 negentropy sync server" |
|
@echo " all-sync - Build all including sync services" |
|
@echo " arm64-sync - Cross-compile sync services for ARM64" |
|
@echo "" |
|
@echo " Quick Deployment (symlink-based):" |
|
@echo " quick-deploy - Build ARM64 and deploy to relay.orly.dev" |
|
@echo " quick-deploy-restart - Build, deploy, and restart service" |
|
@echo " deploy-both - Deploy to both relay.orly.dev and new.orly.dev" |
|
@echo " deploy-both-restart - Deploy and restart both relays" |
|
@echo " deploy-new - Deploy to new.orly.dev only" |
|
@echo " list-releases - List available releases on relay" |
|
@echo " rollback - Rollback to previous release"
|
|
|