36 lines
1.1 KiB
Bash
Executable File
36 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Start the XBPS caching proxy in the background.
|
|
# Idempotent: does nothing if already running.
|
|
set -Eeuo pipefail
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
CACHE_DIR="${XBPS_CACHE_DIR:-$PROJECT_DIR/cache/xbps-pkgs}"
|
|
PORT="${XBPS_PROXY_PORT:-3142}"
|
|
PIDFILE="${XBPS_PROXY_PIDFILE:-$PROJECT_DIR/out/xbps-proxy.pid}"
|
|
LOGFILE="${XBPS_PROXY_LOG:-$PROJECT_DIR/out/xbps-proxy.log}"
|
|
|
|
mkdir -p "$(dirname "$PIDFILE")" "$CACHE_DIR"
|
|
|
|
# Already running?
|
|
if [[ -f "$PIDFILE" ]] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
|
|
echo ">>> XBPS proxy already running (pid $(cat "$PIDFILE"), port $PORT)"
|
|
exit 0
|
|
fi
|
|
|
|
XBPS_CACHE_DIR="$CACHE_DIR" \
|
|
XBPS_PROXY_PORT="$PORT" \
|
|
python3 "$PROJECT_DIR/tools/xbps-proxy.py" > "$LOGFILE" 2>&1 &
|
|
echo $! > "$PIDFILE"
|
|
|
|
# Wait for the socket to open (up to 5 s).
|
|
for i in $(seq 1 20); do
|
|
if curl -sf --max-time 1 "http://127.0.0.1:$PORT/" >/dev/null 2>&1; then
|
|
break
|
|
fi
|
|
sleep 0.25
|
|
done
|
|
|
|
echo ">>> XBPS proxy started (pid $(cat "$PIDFILE"), port $PORT)"
|
|
echo " cache : $CACHE_DIR"
|
|
echo " log : $LOGFILE"
|