mid coding commit
This commit is contained in:
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
# Create Alpine APK package for Archipelago backend
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
BUILD_DIR="$SCRIPT_DIR/../build"
|
||||
APK_DIR="$SCRIPT_DIR/../apks"
|
||||
ARCHIPELAGO_VERSION="${ARCHIPELAGO_VERSION:-0.1.0}"
|
||||
|
||||
echo "📦 Creating Archipelago backend APK..."
|
||||
echo ""
|
||||
|
||||
# Create APK directory
|
||||
mkdir -p "$APK_DIR"
|
||||
|
||||
# Create temporary APK build directory
|
||||
APK_BUILD_DIR=$(mktemp -d)
|
||||
trap "rm -rf $APK_BUILD_DIR" EXIT
|
||||
|
||||
cd "$APK_BUILD_DIR"
|
||||
|
||||
# APK package structure
|
||||
mkdir -p usr/bin
|
||||
mkdir -p usr/lib/systemd/system
|
||||
mkdir -p etc/archipelago
|
||||
mkdir -p etc/init.d
|
||||
|
||||
# Copy binary
|
||||
if [ -f "$BUILD_DIR/backend/archipelago" ]; then
|
||||
cp "$BUILD_DIR/backend/archipelago" usr/bin/archipelago
|
||||
chmod +x usr/bin/archipelago
|
||||
else
|
||||
echo "❌ Backend binary not found. Run build-backend.sh first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create systemd service file
|
||||
cat > usr/lib/systemd/system/archipelago.service <<'EOF'
|
||||
[Unit]
|
||||
Description=Archipelago Bitcoin Node OS Backend
|
||||
After=network.target podman.service
|
||||
Wants=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=archipelago
|
||||
Group=archipelago
|
||||
WorkingDirectory=/var/lib/archipelago
|
||||
ExecStart=/usr/bin/archipelago
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
# Security
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/var/lib/archipelago /tmp
|
||||
|
||||
# Environment
|
||||
Environment="RUST_LOG=info"
|
||||
Environment="ARCHIPELAGO_DATA_DIR=/var/lib/archipelago"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# Create init.d script (for openrc)
|
||||
cat > etc/init.d/archipelago <<'EOF'
|
||||
#!/sbin/openrc-run
|
||||
# Archipelago Bitcoin Node OS Backend
|
||||
|
||||
name="Archipelago"
|
||||
command="/usr/bin/archipelago"
|
||||
command_user="archipelago:archipelago"
|
||||
command_background=true
|
||||
pidfile="/var/run/archipelago.pid"
|
||||
start_stop_daemon_args="--make-pidfile"
|
||||
|
||||
depend() {
|
||||
need net
|
||||
use podman
|
||||
}
|
||||
EOF
|
||||
chmod +x etc/init.d/archipelago
|
||||
|
||||
# Create default config
|
||||
mkdir -p etc/archipelago
|
||||
cat > etc/archipelago/config.toml <<EOF
|
||||
data_dir = "/var/lib/archipelago"
|
||||
bind_host = "0.0.0.0"
|
||||
bind_port = 5959
|
||||
log_level = "info"
|
||||
dev_mode = false
|
||||
container_runtime = "podman"
|
||||
port_offset = 0
|
||||
bitcoin_simulation = "none"
|
||||
EOF
|
||||
|
||||
# Calculate package size
|
||||
PKG_SIZE=$(du -sb "$APK_BUILD_DIR" | cut -f1)
|
||||
|
||||
# Create .PKGINFO (Alpine package format)
|
||||
cat > "$APK_BUILD_DIR/.PKGINFO" <<EOF
|
||||
pkgname = archipelago-backend
|
||||
pkgver = ${ARCHIPELAGO_VERSION}-r0
|
||||
pkgdesc = Archipelago Bitcoin Node OS Backend
|
||||
url = https://github.com/archipelago/archipelago
|
||||
arch = x86_64
|
||||
license = MIT
|
||||
size = ${PKG_SIZE}
|
||||
origin = archipelago
|
||||
EOF
|
||||
|
||||
# Create .SIGN.RSA (placeholder - would need signing key for production)
|
||||
touch "$APK_BUILD_DIR/.SIGN.RSA"
|
||||
|
||||
# Create tarball (Alpine APK format)
|
||||
cd "$APK_BUILD_DIR"
|
||||
tar -czf "$APK_DIR/archipelago-backend-${ARCHIPELAGO_VERSION}-r0.apk" \
|
||||
.PKGINFO .SIGN.RSA usr etc 2>/dev/null || {
|
||||
# Fallback: create without signing
|
||||
tar -czf "$APK_DIR/archipelago-backend-${ARCHIPELAGO_VERSION}-r0.apk" \
|
||||
.PKGINFO usr etc
|
||||
}
|
||||
|
||||
echo "✅ APK created: $APK_DIR/archipelago-backend-${ARCHIPELAGO_VERSION}-r0.apk"
|
||||
ls -lh "$APK_DIR/archipelago-backend-${ARCHIPELAGO_VERSION}-r0.apk"
|
||||
Reference in New Issue
Block a user